[epiphany/mcatanzaro/pdfjs-2.11.338: 6/6] Update to PDF.js 2.11.338




commit 84f1563f0f801aa145ba6f852baf82d96aed80c6
Author: Michael Catanzaro <mcatanzaro redhat com>
Date:   Sun Oct 3 12:46:16 2021 -0500

    Update to PDF.js 2.11.338
    
    Part-of: <https://gitlab.gnome.org/GNOME/epiphany/-/merge_requests/1017>

 third-party/pdfjs/build/pdf.js                     |  5276 +-
 third-party/pdfjs/build/pdf.sandbox.js             |     8 +-
 third-party/pdfjs/build/pdf.worker.js              | 48842 ++++++++++---------
 third-party/pdfjs/epiphany-pdfjs-changes.patch     |   175 +-
 third-party/pdfjs/web/debugger.js                  |    11 +-
 third-party/pdfjs/web/locale/ach/viewer.properties |     8 -
 third-party/pdfjs/web/locale/af/viewer.properties  |     8 -
 third-party/pdfjs/web/locale/an/viewer.properties  |    11 -
 third-party/pdfjs/web/locale/ar/viewer.properties  |    11 -
 third-party/pdfjs/web/locale/ast/viewer.properties |     6 -
 third-party/pdfjs/web/locale/az/viewer.properties  |    11 -
 third-party/pdfjs/web/locale/be/viewer.properties  |    11 -
 third-party/pdfjs/web/locale/bg/viewer.properties  |     8 -
 third-party/pdfjs/web/locale/bn/viewer.properties  |    11 -
 third-party/pdfjs/web/locale/bo/viewer.properties  |     8 -
 third-party/pdfjs/web/locale/br/viewer.properties  |    11 -
 third-party/pdfjs/web/locale/brx/viewer.properties |     7 -
 third-party/pdfjs/web/locale/bs/viewer.properties  |     8 -
 third-party/pdfjs/web/locale/ca/viewer.properties  |    11 -
 third-party/pdfjs/web/locale/cak/viewer.properties |    11 -
 third-party/pdfjs/web/locale/ckb/viewer.properties |    10 -
 third-party/pdfjs/web/locale/cs/viewer.properties  |    11 -
 third-party/pdfjs/web/locale/cy/viewer.properties  |    11 -
 third-party/pdfjs/web/locale/da/viewer.properties  |    11 -
 third-party/pdfjs/web/locale/de/viewer.properties  |    11 -
 third-party/pdfjs/web/locale/dsb/viewer.properties |    11 -
 third-party/pdfjs/web/locale/el/viewer.properties  |    41 +-
 .../pdfjs/web/locale/en-CA/viewer.properties       |    11 -
 .../pdfjs/web/locale/en-GB/viewer.properties       |    11 -
 third-party/pdfjs/web/locale/eo/viewer.properties  |    11 -
 .../pdfjs/web/locale/es-AR/viewer.properties       |    11 -
 .../pdfjs/web/locale/es-CL/viewer.properties       |    11 -
 .../pdfjs/web/locale/es-ES/viewer.properties       |    11 -
 .../pdfjs/web/locale/es-MX/viewer.properties       |    11 -
 third-party/pdfjs/web/locale/et/viewer.properties  |     8 -
 third-party/pdfjs/web/locale/eu/viewer.properties  |    11 -
 third-party/pdfjs/web/locale/fa/viewer.properties  |     8 -
 third-party/pdfjs/web/locale/ff/viewer.properties  |     8 -
 third-party/pdfjs/web/locale/fi/viewer.properties  |    11 -
 third-party/pdfjs/web/locale/fr/viewer.properties  |    11 -
 .../pdfjs/web/locale/fy-NL/viewer.properties       |    11 -
 .../pdfjs/web/locale/ga-IE/viewer.properties       |     8 -
 third-party/pdfjs/web/locale/gd/viewer.properties  |    13 +-
 third-party/pdfjs/web/locale/gl/viewer.properties  |    11 -
 third-party/pdfjs/web/locale/gn/viewer.properties  |    11 -
 .../pdfjs/web/locale/gu-IN/viewer.properties       |     8 -
 third-party/pdfjs/web/locale/he/viewer.properties  |    11 -
 .../pdfjs/web/locale/hi-IN/viewer.properties       |    11 -
 third-party/pdfjs/web/locale/hr/viewer.properties  |    11 -
 third-party/pdfjs/web/locale/hsb/viewer.properties |    11 -
 third-party/pdfjs/web/locale/hu/viewer.properties  |    11 -
 .../pdfjs/web/locale/hy-AM/viewer.properties       |    11 -
 third-party/pdfjs/web/locale/hye/viewer.properties |    11 -
 third-party/pdfjs/web/locale/ia/viewer.properties  |    11 -
 third-party/pdfjs/web/locale/id/viewer.properties  |    11 -
 third-party/pdfjs/web/locale/is/viewer.properties  |     8 -
 third-party/pdfjs/web/locale/it/viewer.properties  |     9 -
 third-party/pdfjs/web/locale/ja/viewer.properties  |     3 -
 third-party/pdfjs/web/locale/ka/viewer.properties  |    11 -
 third-party/pdfjs/web/locale/kab/viewer.properties |    11 -
 third-party/pdfjs/web/locale/kk/viewer.properties  |    11 -
 third-party/pdfjs/web/locale/km/viewer.properties  |     8 -
 third-party/pdfjs/web/locale/kn/viewer.properties  |     7 -
 third-party/pdfjs/web/locale/ko/viewer.properties  |    13 +-
 third-party/pdfjs/web/locale/lij/viewer.properties |     8 -
 third-party/pdfjs/web/locale/lo/viewer.properties  |     8 -
 third-party/pdfjs/web/locale/lt/viewer.properties  |    11 -
 third-party/pdfjs/web/locale/ltg/viewer.properties |     8 -
 third-party/pdfjs/web/locale/lv/viewer.properties  |     8 -
 third-party/pdfjs/web/locale/mk/viewer.properties  |     7 -
 third-party/pdfjs/web/locale/mr/viewer.properties  |     8 -
 third-party/pdfjs/web/locale/ms/viewer.properties  |     8 -
 third-party/pdfjs/web/locale/my/viewer.properties  |     8 -
 .../pdfjs/web/locale/nb-NO/viewer.properties       |    11 -
 .../pdfjs/web/locale/ne-NP/viewer.properties       |     8 -
 third-party/pdfjs/web/locale/nl/viewer.properties  |    11 -
 .../pdfjs/web/locale/nn-NO/viewer.properties       |    11 -
 third-party/pdfjs/web/locale/oc/viewer.properties  |    11 -
 .../pdfjs/web/locale/pa-IN/viewer.properties       |    11 -
 third-party/pdfjs/web/locale/pl/viewer.properties  |    11 -
 .../pdfjs/web/locale/pt-BR/viewer.properties       |    11 -
 .../pdfjs/web/locale/pt-PT/viewer.properties       |    11 -
 third-party/pdfjs/web/locale/rm/viewer.properties  |    11 -
 third-party/pdfjs/web/locale/ro/viewer.properties  |    13 +-
 third-party/pdfjs/web/locale/ru/viewer.properties  |    11 -
 third-party/pdfjs/web/locale/sco/viewer.properties |    11 -
 third-party/pdfjs/web/locale/si/viewer.properties  |     7 -
 third-party/pdfjs/web/locale/sk/viewer.properties  |    11 -
 third-party/pdfjs/web/locale/sl/viewer.properties  |    11 -
 third-party/pdfjs/web/locale/son/viewer.properties |     8 -
 third-party/pdfjs/web/locale/sq/viewer.properties  |    11 -
 third-party/pdfjs/web/locale/sr/viewer.properties  |    11 -
 .../pdfjs/web/locale/sv-SE/viewer.properties       |    11 -
 third-party/pdfjs/web/locale/szl/viewer.properties |    11 -
 third-party/pdfjs/web/locale/ta/viewer.properties  |     8 -
 third-party/pdfjs/web/locale/te/viewer.properties  |    10 -
 third-party/pdfjs/web/locale/th/viewer.properties  |    11 -
 third-party/pdfjs/web/locale/tl/viewer.properties  |    11 -
 third-party/pdfjs/web/locale/tr/viewer.properties  |    11 -
 third-party/pdfjs/web/locale/trs/viewer.properties |     7 -
 third-party/pdfjs/web/locale/uk/viewer.properties  |    11 -
 third-party/pdfjs/web/locale/ur/viewer.properties  |    10 -
 third-party/pdfjs/web/locale/uz/viewer.properties  |     7 -
 third-party/pdfjs/web/locale/vi/viewer.properties  |    11 -
 third-party/pdfjs/web/locale/wo/viewer.properties  |     3 -
 third-party/pdfjs/web/locale/xh/viewer.properties  |     8 -
 .../pdfjs/web/locale/zh-CN/viewer.properties       |    11 -
 .../pdfjs/web/locale/zh-TW/viewer.properties       |    11 -
 third-party/pdfjs/web/viewer.css                   |   143 +-
 third-party/pdfjs/web/viewer.js                    |  1349 +-
 110 files changed, 28845 insertions(+), 28009 deletions(-)
---
diff --git a/third-party/pdfjs/build/pdf.js b/third-party/pdfjs/build/pdf.js
index fde8904fc..cdf8a707f 100644
--- a/third-party/pdfjs/build/pdf.js
+++ b/third-party/pdfjs/build/pdf.js
@@ -51,15 +51,24 @@ exports.isDataScheme = isDataScheme;
 exports.isPdfFile = isPdfFile;
 exports.isValidFetchUrl = isValidFetchUrl;
 exports.loadScript = loadScript;
-exports.StatTimer = exports.RenderingCancelledException = exports.PDFDateString = exports.PageViewport = 
exports.LinkTarget = exports.DOMSVGFactory = exports.DOMStandardFontDataFactory = 
exports.DOMCMapReaderFactory = exports.DOMCanvasFactory = exports.DEFAULT_LINK_REL = void 0;
+exports.StatTimer = exports.RenderingCancelledException = exports.PixelsPerInch = exports.PDFDateString = 
exports.PageViewport = exports.LinkTarget = exports.DOMSVGFactory = exports.DOMStandardFontDataFactory = 
exports.DOMCMapReaderFactory = exports.DOMCanvasFactory = void 0;
 
 var _util = __w_pdfjs_require__(2);
 
 var _base_factory = __w_pdfjs_require__(5);
 
 const DEFAULT_LINK_REL = "noopener noreferrer nofollow";
-exports.DEFAULT_LINK_REL = DEFAULT_LINK_REL;
 const SVG_NS = "http://www.w3.org/2000/svg";;
+const PixelsPerInch = {
+  CSS: 96.0,
+  PDF: 72.0,
+
+  get PDF_TO_CSS_UNITS() {
+    return (0, _util.shadow)(this, "PDF_TO_CSS_UNITS", this.CSS / this.PDF);
+  }
+
+};
+exports.PixelsPerInch = PixelsPerInch;
 
 class DOMCanvasFactory extends _base_factory.BaseCanvasFactory {
   constructor({
@@ -279,7 +288,7 @@ exports.PageViewport = PageViewport;
 
 class RenderingCancelledException extends _util.BaseException {
   constructor(msg, type) {
-    super(msg);
+    super(msg, "RenderingCancelledException");
     this.type = type;
   }
 
@@ -585,7 +594,7 @@ exports.stringToUTF8String = stringToUTF8String;
 exports.unreachable = unreachable;
 exports.utf8StringToString = utf8StringToString;
 exports.warn = warn;
-exports.VerbosityLevel = exports.Util = exports.UNSUPPORTED_FEATURES = exports.UnknownErrorException = 
exports.UnexpectedResponseException = exports.TextRenderingMode = exports.StreamType = 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.AnnotationMarkedState = exports.AnnotationFlag = exports.AnnotationFieldFlag = 
exports.AnnotationBorderStyleType = exports.AnnotationActionEventType = exports.AbortException = void 0;
+exports.VerbosityLevel = exports.Util = exports.UNSUPPORTED_FEATURES = exports.UnknownErrorException = 
exports.UnexpectedResponseException = 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.AbortExce
 ption = void 0;
 
 __w_pdfjs_require__(3);
 
@@ -593,6 +602,23 @@ const IDENTITY_MATRIX = [1, 0, 0, 1, 0, 0];
 exports.IDENTITY_MATRIX = IDENTITY_MATRIX;
 const FONT_IDENTITY_MATRIX = [0.001, 0, 0, 0.001, 0, 0];
 exports.FONT_IDENTITY_MATRIX = FONT_IDENTITY_MATRIX;
+const RenderingIntentFlag = {
+  ANY: 0x01,
+  DISPLAY: 0x02,
+  PRINT: 0x04,
+  ANNOTATIONS_FORMS: 0x10,
+  ANNOTATIONS_STORAGE: 0x20,
+  ANNOTATIONS_DISABLE: 0x40,
+  OPLIST: 0x100
+};
+exports.RenderingIntentFlag = RenderingIntentFlag;
+const AnnotationMode = {
+  DISABLE: 0,
+  ENABLE: 1,
+  ENABLE_FORMS: 2,
+  ENABLE_STORAGE: 3
+};
+exports.AnnotationMode = AnnotationMode;
 const PermissionFlag = {
   PRINT: 0x04,
   MODIFY_CONTENTS: 0x08,
@@ -903,7 +929,8 @@ const UNSUPPORTED_FEATURES = {
   errorFontLoadNative: "errorFontLoadNative",
   errorFontBuildPath: "errorFontBuildPath",
   errorFontGetPath: "errorFontGetPath",
-  errorMarkedContent: "errorMarkedContent"
+  errorMarkedContent: "errorMarkedContent",
+  errorContentSubStream: "errorContentSubStream"
 };
 exports.UNSUPPORTED_FEATURES = UNSUPPORTED_FEATURES;
 const PasswordResponses = {
@@ -980,12 +1007,28 @@ function _isValidProtocol(url) {
   }
 }
 
-function createValidAbsoluteUrl(url, baseUrl) {
+function createValidAbsoluteUrl(url, baseUrl = null, options = null) {
   if (!url) {
     return null;
   }
 
   try {
+    if (options && typeof url === "string") {
+      if (options.addDefaultProtocol && url.startsWith("www.")) {
+        const dots = url.match(/\./g);
+
+        if (dots && dots.length >= 2) {
+          url = `http://${url}`;
+        }
+      }
+
+      if (options.tryConvertEncoding) {
+        try {
+          url = stringToUTF8String(url);
+        } catch (ex) {}
+      }
+    }
+
     const absoluteUrl = baseUrl ? new URL(url, baseUrl) : new URL(url);
 
     if (_isValidProtocol(absoluteUrl)) {
@@ -1007,13 +1050,13 @@ function shadow(obj, prop, value) {
 }
 
 const BaseException = function BaseExceptionClosure() {
-  function BaseException(message) {
+  function BaseException(message, name) {
     if (this.constructor === BaseException) {
       unreachable("Cannot initialize BaseException.");
     }
 
     this.message = message;
-    this.name = this.constructor.name;
+    this.name = name;
   }
 
   BaseException.prototype = new Error();
@@ -1025,7 +1068,7 @@ exports.BaseException = BaseException;
 
 class PasswordException extends BaseException {
   constructor(msg, code) {
-    super(msg);
+    super(msg, "PasswordException");
     this.code = code;
   }
 
@@ -1035,7 +1078,7 @@ exports.PasswordException = PasswordException;
 
 class UnknownErrorException extends BaseException {
   constructor(msg, details) {
-    super(msg);
+    super(msg, "UnknownErrorException");
     this.details = details;
   }
 
@@ -1043,17 +1086,27 @@ class UnknownErrorException extends BaseException {
 
 exports.UnknownErrorException = UnknownErrorException;
 
-class InvalidPDFException extends BaseException {}
+class InvalidPDFException extends BaseException {
+  constructor(msg) {
+    super(msg, "InvalidPDFException");
+  }
+
+}
 
 exports.InvalidPDFException = InvalidPDFException;
 
-class MissingPDFException extends BaseException {}
+class MissingPDFException extends BaseException {
+  constructor(msg) {
+    super(msg, "MissingPDFException");
+  }
+
+}
 
 exports.MissingPDFException = MissingPDFException;
 
 class UnexpectedResponseException extends BaseException {
   constructor(msg, status) {
-    super(msg);
+    super(msg, "UnexpectedResponseException");
     this.status = status;
   }
 
@@ -1061,11 +1114,21 @@ class UnexpectedResponseException extends BaseException {
 
 exports.UnexpectedResponseException = UnexpectedResponseException;
 
-class FormatError extends BaseException {}
+class FormatError extends BaseException {
+  constructor(msg) {
+    super(msg, "FormatError");
+  }
+
+}
 
 exports.FormatError = FormatError;
 
-class AbortException extends BaseException {}
+class AbortException extends BaseException {
+  constructor(msg) {
+    super(msg, "AbortException");
+  }
+
+}
 
 exports.AbortException = AbortException;
 const NullCharactersRegExp = /\x00/g;
@@ -1658,7 +1721,7 @@ Object.defineProperty(exports, "__esModule", ({
 }));
 exports.getDocument = getDocument;
 exports.setPDFNetworkStreamFactory = setPDFNetworkStreamFactory;
-exports.version = exports.PDFWorker = exports.PDFPageProxy = exports.PDFDocumentProxy = 
exports.PDFDataRangeTransport = exports.LoopbackPort = exports.DefaultStandardFontDataFactory = 
exports.DefaultCMapReaderFactory = exports.DefaultCanvasFactory = exports.build = void 0;
+exports.version = exports.RenderTask = exports.PDFWorker = exports.PDFPageProxy = exports.PDFDocumentProxy = 
exports.PDFDocumentLoadingTask = exports.PDFDataRangeTransport = exports.LoopbackPort = 
exports.DefaultStandardFontDataFactory = exports.DefaultCMapReaderFactory = exports.DefaultCanvasFactory = 
exports.build = void 0;
 
 var _util = __w_pdfjs_require__(2);
 
@@ -1684,6 +1747,8 @@ var _optional_content_config = __w_pdfjs_require__(15);
 
 var _transport_stream = __w_pdfjs_require__(16);
 
+var _xfa_text = __w_pdfjs_require__(17);
+
 const DEFAULT_RANGE_CHUNK_SIZE = 65536;
 const RENDERING_CANCELLED_TIMEOUT = 100;
 const DefaultCanvasFactory = _is_node.isNodeJS ? _node_utils.NodeCanvasFactory : 
_display_utils.DOMCanvasFactory;
@@ -1886,9 +1951,9 @@ function getDocument(src) {
   return task;
 }
 
-function _fetchDocument(worker, source, pdfDataRangeTransport, docId) {
+async function _fetchDocument(worker, source, pdfDataRangeTransport, docId) {
   if (worker.destroyed) {
-    return Promise.reject(new Error("Worker was destroyed"));
+    throw new Error("Worker was destroyed");
   }
 
   if (pdfDataRangeTransport) {
@@ -1898,9 +1963,9 @@ function _fetchDocument(worker, source, pdfDataRangeTransport, docId) {
     source.contentDispositionFilename = pdfDataRangeTransport.contentDispositionFilename;
   }
 
-  return worker.messageHandler.sendWithPromise("GetDocRequest", {
+  const workerId = await worker.messageHandler.sendWithPromise("GetDocRequest", {
     docId,
-    apiVersion: '2.10.377',
+    apiVersion: '2.11.338',
     source: {
       data: source.data,
       url: source.url,
@@ -1920,52 +1985,52 @@ function _fetchDocument(worker, source, pdfDataRangeTransport, docId) {
     useSystemFonts: source.useSystemFonts,
     cMapUrl: source.useWorkerFetch ? source.cMapUrl : null,
     standardFontDataUrl: source.useWorkerFetch ? source.standardFontDataUrl : null
-  }).then(function (workerId) {
-    if (worker.destroyed) {
-      throw new Error("Worker was destroyed");
-    }
-
-    return workerId;
   });
+
+  if (worker.destroyed) {
+    throw new Error("Worker was destroyed");
+  }
+
+  return workerId;
 }
 
-const PDFDocumentLoadingTask = function PDFDocumentLoadingTaskClosure() {
-  let nextDocumentId = 0;
+class PDFDocumentLoadingTask {
+  static get idCounters() {
+    return (0, _util.shadow)(this, "idCounters", {
+      doc: 0
+    });
+  }
 
-  class PDFDocumentLoadingTask {
-    constructor() {
-      this._capability = (0, _util.createPromiseCapability)();
-      this._transport = null;
-      this._worker = null;
-      this.docId = "d" + nextDocumentId++;
-      this.destroyed = false;
-      this.onPassword = null;
-      this.onProgress = null;
-      this.onUnsupportedFeature = null;
-    }
+  constructor() {
+    this._capability = (0, _util.createPromiseCapability)();
+    this._transport = null;
+    this._worker = null;
+    this.docId = `d${PDFDocumentLoadingTask.idCounters.doc++}`;
+    this.destroyed = false;
+    this.onPassword = null;
+    this.onProgress = null;
+    this.onUnsupportedFeature = null;
+  }
 
-    get promise() {
-      return this._capability.promise;
-    }
+  get promise() {
+    return this._capability.promise;
+  }
 
-    destroy() {
-      this.destroyed = true;
-      const transportDestroyed = !this._transport ? Promise.resolve() : this._transport.destroy();
-      return transportDestroyed.then(() => {
-        this._transport = null;
+  async destroy() {
+    this.destroyed = true;
+    await this._transport?.destroy();
+    this._transport = null;
 
-        if (this._worker) {
-          this._worker.destroy();
+    if (this._worker) {
+      this._worker.destroy();
 
-          this._worker = null;
-        }
-      });
+      this._worker = null;
     }
-
   }
 
-  return PDFDocumentLoadingTask;
-}();
+}
+
+exports.PDFDocumentLoadingTask = PDFDocumentLoadingTask;
 
 class PDFDataRangeTransport {
   constructor(length, initialData, progressiveDone = false, contentDispositionFilename = null) {
@@ -2206,6 +2271,7 @@ class PDFPageProxy {
     this.cleanupAfterRender = false;
     this.pendingCleanup = false;
     this._intentStates = new Map();
+    this._annotationPromises = new Map();
     this.destroyed = false;
   }
 
@@ -2247,20 +2313,49 @@ class PDFPageProxy {
   }
 
   getAnnotations({
-    intent = null
+    intent = "display"
   } = {}) {
-    const renderingIntent = intent === "display" || intent === "print" ? intent : null;
+    const intentArgs = this._transport.getRenderingIntent(intent);
+
+    let promise = this._annotationPromises.get(intentArgs.cacheKey);
+
+    if (!promise) {
+      promise = this._transport.getAnnotations(this._pageIndex, intentArgs.renderingIntent);
+
+      this._annotationPromises.set(intentArgs.cacheKey, promise);
+
+      promise = promise.then(annotations => {
+        for (const annotation of annotations) {
+          if (annotation.titleObj !== undefined) {
+            Object.defineProperty(annotation, "title", {
+              get() {
+                (0, _display_utils.deprecated)("`title`-property on annotation, please use `titleObj` 
instead.");
+                return annotation.titleObj.str;
+              }
+
+            });
+          }
+
+          if (annotation.contentsObj !== undefined) {
+            Object.defineProperty(annotation, "contents", {
+              get() {
+                (0, _display_utils.deprecated)("`contents`-property on annotation, please use `contentsObj` 
instead.");
+                return annotation.contentsObj.str;
+              }
+
+            });
+          }
+        }
 
-    if (!this._annotationsPromise || this._annotationsIntent !== renderingIntent) {
-      this._annotationsPromise = this._transport.getAnnotations(this._pageIndex, renderingIntent);
-      this._annotationsIntent = renderingIntent;
+        return annotations;
+      });
     }
 
-    return this._annotationsPromise;
+    return promise;
   }
 
   getJSActions() {
-    return this._jsActionsPromise || (this._jsActionsPromise = 
this._transport.getPageJSActions(this._pageIndex));
+    return this._jsActionsPromise ||= this._transport.getPageJSActions(this._pageIndex);
   }
 
   async getXfa() {
@@ -2271,33 +2366,47 @@ class PDFPageProxy {
     canvasContext,
     viewport,
     intent = "display",
-    renderInteractiveForms = false,
+    annotationMode = _util.AnnotationMode.ENABLE,
     transform = null,
     imageLayer = null,
     canvasFactory = null,
     background = null,
-    includeAnnotationStorage = false,
     optionalContentConfigPromise = null
   }) {
-    var _intentState;
+    if (arguments[0]?.renderInteractiveForms !== undefined) {
+      (0, _display_utils.deprecated)("render no longer accepts the `renderInteractiveForms`-option, " + 
"please use the `annotationMode`-option instead.");
+
+      if (arguments[0].renderInteractiveForms === true && annotationMode === _util.AnnotationMode.ENABLE) {
+        annotationMode = _util.AnnotationMode.ENABLE_FORMS;
+      }
+    }
+
+    if (arguments[0]?.includeAnnotationStorage !== undefined) {
+      (0, _display_utils.deprecated)("render no longer accepts the `includeAnnotationStorage`-option, " + 
"please use the `annotationMode`-option instead.");
+
+      if (arguments[0].includeAnnotationStorage === true && annotationMode === _util.AnnotationMode.ENABLE) {
+        annotationMode = _util.AnnotationMode.ENABLE_STORAGE;
+      }
+    }
 
     if (this._stats) {
       this._stats.time("Overall");
     }
 
-    const renderingIntent = intent === "print" ? "print" : "display";
+    const intentArgs = this._transport.getRenderingIntent(intent, annotationMode);
+
     this.pendingCleanup = false;
 
     if (!optionalContentConfigPromise) {
       optionalContentConfigPromise = this._transport.getOptionalContentConfig();
     }
 
-    let intentState = this._intentStates.get(renderingIntent);
+    let intentState = this._intentStates.get(intentArgs.cacheKey);
 
     if (!intentState) {
       intentState = Object.create(null);
 
-      this._intentStates.set(renderingIntent, intentState);
+      this._intentStates.set(intentArgs.cacheKey, intentState);
     }
 
     if (intentState.streamReaderCancelTimeout) {
@@ -2308,7 +2417,7 @@ class PDFPageProxy {
     const canvasFactoryInstance = canvasFactory || new DefaultCanvasFactory({
       ownerDocument: this._ownerDocument
     });
-    const annotationStorage = includeAnnotationStorage ? this._transport.annotationStorage.serializable : 
null;
+    const intentPrint = !!(intentArgs.renderingIntent & _util.RenderingIntentFlag.PRINT);
 
     if (!intentState.displayReadyCapability) {
       intentState.displayReadyCapability = (0, _util.createPromiseCapability)();
@@ -2322,18 +2431,13 @@ class PDFPageProxy {
         this._stats.time("Page Request");
       }
 
-      this._pumpOperatorList({
-        pageIndex: this._pageIndex,
-        intent: renderingIntent,
-        renderInteractiveForms: renderInteractiveForms === true,
-        annotationStorage
-      });
+      this._pumpOperatorList(intentArgs);
     }
 
     const complete = error => {
       intentState.renderTasks.delete(internalRenderTask);
 
-      if (this.cleanupAfterRender || renderingIntent === "print") {
+      if (this.cleanupAfterRender || intentPrint) {
         this.pendingCleanup = true;
       }
 
@@ -2344,7 +2448,7 @@ class PDFPageProxy {
 
         this._abortOperatorList({
           intentState,
-          reason: error
+          reason: error instanceof Error ? error : new Error(error)
         });
       } else {
         internalRenderTask.capability.resolve();
@@ -2371,10 +2475,10 @@ class PDFPageProxy {
       operatorList: intentState.operatorList,
       pageIndex: this._pageIndex,
       canvasFactory: canvasFactoryInstance,
-      useRequestAnimationFrame: renderingIntent !== "print",
+      useRequestAnimationFrame: !intentPrint,
       pdfBug: this._pdfBug
     });
-    ((_intentState = intentState).renderTasks || (_intentState.renderTasks = new 
Set())).add(internalRenderTask);
+    (intentState.renderTasks ||= new Set()).add(internalRenderTask);
     const renderTask = internalRenderTask.task;
     Promise.all([intentState.displayReadyCapability.promise, 
optionalContentConfigPromise]).then(([transparency, optionalContentConfig]) => {
       if (this.pendingCleanup) {
@@ -2396,7 +2500,8 @@ class PDFPageProxy {
   }
 
   getOperatorList({
-    intent = "display"
+    intent = "display",
+    annotationMode = _util.AnnotationMode.ENABLE
   } = {}) {
     function operatorListChanged() {
       if (intentState.operatorList.lastChunk) {
@@ -2405,25 +2510,23 @@ class PDFPageProxy {
       }
     }
 
-    const renderingIntent = `oplist-${intent === "print" ? "print" : "display"}`;
+    const intentArgs = this._transport.getRenderingIntent(intent, annotationMode, true);
 
-    let intentState = this._intentStates.get(renderingIntent);
+    let intentState = this._intentStates.get(intentArgs.cacheKey);
 
     if (!intentState) {
       intentState = Object.create(null);
 
-      this._intentStates.set(renderingIntent, intentState);
+      this._intentStates.set(intentArgs.cacheKey, intentState);
     }
 
     let opListTask;
 
     if (!intentState.opListReadCapability) {
-      var _intentState2;
-
       opListTask = Object.create(null);
       opListTask.operatorListChanged = operatorListChanged;
       intentState.opListReadCapability = (0, _util.createPromiseCapability)();
-      ((_intentState2 = intentState).renderTasks || (_intentState2.renderTasks = new Set())).add(opListTask);
+      (intentState.renderTasks ||= new Set()).add(opListTask);
       intentState.operatorList = {
         fnArray: [],
         argsArray: [],
@@ -2434,10 +2537,7 @@ class PDFPageProxy {
         this._stats.time("Page Request");
       }
 
-      this._pumpOperatorList({
-        pageIndex: this._pageIndex,
-        intent: renderingIntent
-      });
+      this._pumpOperatorList(intentArgs);
     }
 
     return intentState.opListReadCapability.promise;
@@ -2465,6 +2565,12 @@ class PDFPageProxy {
   }
 
   getTextContent(params = {}) {
+    if (this._transport._htmlForXfa) {
+      return this.getXfa().then(xfa => {
+        return _xfa_text.XfaText.textContent(xfa);
+      });
+    }
+
     const readableStream = this.streamTextContent(params);
     return new Promise(function (resolve, reject) {
       function pump() {
@@ -2493,7 +2599,7 @@ class PDFPageProxy {
   }
 
   getStructTree() {
-    return this._structTreePromise || (this._structTreePromise = 
this._transport.getStructTree(this._pageIndex));
+    return this._structTreePromise ||= this._transport.getStructTree(this._pageIndex);
   }
 
   _destroy() {
@@ -2501,14 +2607,14 @@ class PDFPageProxy {
     this._transport.pageCache[this._pageIndex] = null;
     const waitOn = [];
 
-    for (const [intent, intentState] of this._intentStates) {
+    for (const intentState of this._intentStates.values()) {
       this._abortOperatorList({
         intentState,
         reason: new Error("Page was destroyed."),
         force: true
       });
 
-      if (intent.startsWith("oplist-")) {
+      if (intentState.opListReadCapability) {
         continue;
       }
 
@@ -2519,7 +2625,9 @@ class PDFPageProxy {
     }
 
     this.objs.clear();
-    this._annotationsPromise = null;
+
+    this._annotationPromises.clear();
+
     this._jsActionsPromise = null;
     this._structTreePromise = null;
     this.pendingCleanup = false;
@@ -2548,7 +2656,9 @@ class PDFPageProxy {
     this._intentStates.clear();
 
     this.objs.clear();
-    this._annotationsPromise = null;
+
+    this._annotationPromises.clear();
+
     this._jsActionsPromise = null;
     this._structTreePromise = null;
 
@@ -2560,8 +2670,8 @@ class PDFPageProxy {
     return true;
   }
 
-  _startRenderPage(transparency, intent) {
-    const intentState = this._intentStates.get(intent);
+  _startRenderPage(transparency, cacheKey) {
+    const intentState = this._intentStates.get(cacheKey);
 
     if (!intentState) {
       return;
@@ -2593,14 +2703,20 @@ class PDFPageProxy {
     }
   }
 
-  _pumpOperatorList(args) {
-    (0, _util.assert)(args.intent, 'PDFPageProxy._pumpOperatorList: Expected "intent" argument.');
-
-    const readableStream = this._transport.messageHandler.sendWithStream("GetOperatorList", args);
+  _pumpOperatorList({
+    renderingIntent,
+    cacheKey
+  }) {
+    const readableStream = this._transport.messageHandler.sendWithStream("GetOperatorList", {
+      pageIndex: this._pageIndex,
+      intent: renderingIntent,
+      cacheKey,
+      annotationStorage: renderingIntent & _util.RenderingIntentFlag.ANNOTATIONS_STORAGE ? 
this._transport.annotationStorage.serializable : null
+    });
 
     const reader = readableStream.getReader();
 
-    const intentState = this._intentStates.get(args.intent);
+    const intentState = this._intentStates.get(cacheKey);
 
     intentState.streamReader = reader;
 
@@ -2656,8 +2772,6 @@ class PDFPageProxy {
     reason,
     force = false
   }) {
-    (0, _util.assert)(reason instanceof Error || typeof reason === "object" && reason !== null, 
'PDFPageProxy._abortOperatorList: Expected "reason" argument.');
-
     if (!intentState.streamReader) {
       return;
     }
@@ -2681,16 +2795,16 @@ class PDFPageProxy {
       }
     }
 
-    intentState.streamReader.cancel(new _util.AbortException(reason?.message));
+    intentState.streamReader.cancel(new _util.AbortException(reason.message)).catch(() => {});
     intentState.streamReader = null;
 
     if (this._transport.destroyed) {
       return;
     }
 
-    for (const [intent, curIntentState] of this._intentStates) {
+    for (const [curCacheKey, curIntentState] of this._intentStates) {
       if (curIntentState === intentState) {
-        this._intentStates.delete(intent);
+        this._intentStates.delete(curCacheKey);
 
         break;
       }
@@ -2816,305 +2930,299 @@ class LoopbackPort {
 }
 
 exports.LoopbackPort = LoopbackPort;
-
-const PDFWorker = function PDFWorkerClosure() {
-  const pdfWorkerPorts = new WeakMap();
-  let isWorkerDisabled = false;
-  let fallbackWorkerSrc;
-  let nextFakeWorkerId = 0;
-  let fakeWorkerCapability;
-
+const PDFWorkerUtil = {
+  isWorkerDisabled: false,
+  fallbackWorkerSrc: null,
+  fakeWorkerId: 0
+};
+{
   if (_is_node.isNodeJS && typeof require === "function") {
-    isWorkerDisabled = true;
-    fallbackWorkerSrc = "./pdf.worker.js";
-  } else if (typeof document === "object" && "currentScript" in document) {
-    const pdfjsFilePath = document.currentScript?.src;
+    PDFWorkerUtil.isWorkerDisabled = true;
+    PDFWorkerUtil.fallbackWorkerSrc = "./pdf.worker.js";
+  } else if (typeof document === "object") {
+    const pdfjsFilePath = document?.currentScript?.src;
 
     if (pdfjsFilePath) {
-      fallbackWorkerSrc = pdfjsFilePath.replace(/(\.(?:min\.)?js)(\?.*)?$/i, ".worker$1$2");
+      PDFWorkerUtil.fallbackWorkerSrc = pdfjsFilePath.replace(/(\.(?:min\.)?js)(\?.*)?$/i, ".worker$1$2");
     }
   }
 
-  function getWorkerSrc() {
-    if (_worker_options.GlobalWorkerOptions.workerSrc) {
-      return _worker_options.GlobalWorkerOptions.workerSrc;
-    }
+  PDFWorkerUtil.createCDNWrapper = function (url) {
+    const wrapper = `importScripts("${url}");`;
+    return URL.createObjectURL(new Blob([wrapper]));
+  };
+}
 
-    if (typeof fallbackWorkerSrc !== "undefined") {
-      if (!_is_node.isNodeJS) {
-        (0, _display_utils.deprecated)('No "GlobalWorkerOptions.workerSrc" specified.');
-      }
+class PDFWorker {
+  static get _workerPorts() {
+    return (0, _util.shadow)(this, "_workerPorts", new WeakMap());
+  }
 
-      return fallbackWorkerSrc;
+  constructor({
+    name = null,
+    port = null,
+    verbosity = (0, _util.getVerbosityLevel)()
+  } = {}) {
+    if (port && PDFWorker._workerPorts.has(port)) {
+      throw new Error("Cannot use more than one PDFWorker per port.");
     }
 
-    throw new Error('No "GlobalWorkerOptions.workerSrc" specified.');
-  }
-
-  function getMainThreadWorkerMessageHandler() {
-    let mainWorkerMessageHandler;
+    this.name = name;
+    this.destroyed = false;
+    this.postMessageTransfers = true;
+    this.verbosity = verbosity;
+    this._readyCapability = (0, _util.createPromiseCapability)();
+    this._port = null;
+    this._webWorker = null;
+    this._messageHandler = null;
 
-    try {
-      mainWorkerMessageHandler = globalThis.pdfjsWorker?.WorkerMessageHandler;
-    } catch (ex) {}
+    if (port) {
+      PDFWorker._workerPorts.set(port, this);
 
-    return mainWorkerMessageHandler || null;
-  }
+      this._initializeFromPort(port);
 
-  function setupFakeWorkerGlobal() {
-    if (fakeWorkerCapability) {
-      return fakeWorkerCapability.promise;
+      return;
     }
 
-    fakeWorkerCapability = (0, _util.createPromiseCapability)();
-
-    const loader = async function () {
-      const mainWorkerMessageHandler = getMainThreadWorkerMessageHandler();
-
-      if (mainWorkerMessageHandler) {
-        return mainWorkerMessageHandler;
-      }
-
-      if (_is_node.isNodeJS && typeof require === "function") {
-        const worker = eval("require")(getWorkerSrc());
-        return worker.WorkerMessageHandler;
-      }
+    this._initialize();
+  }
 
-      await (0, _display_utils.loadScript)(getWorkerSrc());
-      return window.pdfjsWorker.WorkerMessageHandler;
-    };
+  get promise() {
+    return this._readyCapability.promise;
+  }
 
-    loader().then(fakeWorkerCapability.resolve, fakeWorkerCapability.reject);
-    return fakeWorkerCapability.promise;
+  get port() {
+    return this._port;
   }
 
-  function createCDNWrapper(url) {
-    const wrapper = "importScripts('" + url + "');";
-    return URL.createObjectURL(new Blob([wrapper]));
+  get messageHandler() {
+    return this._messageHandler;
   }
 
-  class PDFWorker {
-    constructor({
-      name = null,
-      port = null,
-      verbosity = (0, _util.getVerbosityLevel)()
-    } = {}) {
-      if (port && pdfWorkerPorts.has(port)) {
-        throw new Error("Cannot use more than one PDFWorker per port");
-      }
+  _initializeFromPort(port) {
+    this._port = port;
+    this._messageHandler = new _message_handler.MessageHandler("main", "worker", port);
 
-      this.name = name;
-      this.destroyed = false;
-      this.postMessageTransfers = true;
-      this.verbosity = verbosity;
-      this._readyCapability = (0, _util.createPromiseCapability)();
-      this._port = null;
-      this._webWorker = null;
-      this._messageHandler = null;
+    this._messageHandler.on("ready", function () {});
 
-      if (port) {
-        pdfWorkerPorts.set(port, this);
+    this._readyCapability.resolve();
+  }
 
-        this._initializeFromPort(port);
+  _initialize() {
+    if (typeof Worker !== "undefined" && !PDFWorkerUtil.isWorkerDisabled && 
!PDFWorker._mainThreadWorkerMessageHandler) {
+      let workerSrc = PDFWorker.workerSrc;
 
-        return;
-      }
+      try {
+        if (!(0, _util.isSameOrigin)(window.location.href, workerSrc)) {
+          workerSrc = PDFWorkerUtil.createCDNWrapper(new URL(workerSrc, window.location).href);
+        }
 
-      this._initialize();
-    }
+        const worker = new Worker(workerSrc);
+        const messageHandler = new _message_handler.MessageHandler("main", "worker", worker);
 
-    get promise() {
-      return this._readyCapability.promise;
-    }
+        const terminateEarly = () => {
+          worker.removeEventListener("error", onWorkerError);
+          messageHandler.destroy();
+          worker.terminate();
 
-    get port() {
-      return this._port;
-    }
+          if (this.destroyed) {
+            this._readyCapability.reject(new Error("Worker was destroyed"));
+          } else {
+            this._setupFakeWorker();
+          }
+        };
 
-    get messageHandler() {
-      return this._messageHandler;
-    }
+        const onWorkerError = () => {
+          if (!this._webWorker) {
+            terminateEarly();
+          }
+        };
 
-    _initializeFromPort(port) {
-      this._port = port;
-      this._messageHandler = new _message_handler.MessageHandler("main", "worker", port);
+        worker.addEventListener("error", onWorkerError);
+        messageHandler.on("test", data => {
+          worker.removeEventListener("error", onWorkerError);
 
-      this._messageHandler.on("ready", function () {});
+          if (this.destroyed) {
+            terminateEarly();
+            return;
+          }
 
-      this._readyCapability.resolve();
-    }
+          if (data) {
+            this._messageHandler = messageHandler;
+            this._port = worker;
+            this._webWorker = worker;
 
-    _initialize() {
-      if (typeof Worker !== "undefined" && !isWorkerDisabled && !getMainThreadWorkerMessageHandler()) {
-        let workerSrc = getWorkerSrc();
+            if (!data.supportTransfers) {
+              this.postMessageTransfers = false;
+            }
 
-        try {
-          if (!(0, _util.isSameOrigin)(window.location.href, workerSrc)) {
-            workerSrc = createCDNWrapper(new URL(workerSrc, window.location).href);
-          }
+            this._readyCapability.resolve();
 
-          const worker = new Worker(workerSrc);
-          const messageHandler = new _message_handler.MessageHandler("main", "worker", worker);
+            messageHandler.send("configure", {
+              verbosity: this.verbosity
+            });
+          } else {
+            this._setupFakeWorker();
 
-          const terminateEarly = () => {
-            worker.removeEventListener("error", onWorkerError);
             messageHandler.destroy();
             worker.terminate();
+          }
+        });
+        messageHandler.on("ready", data => {
+          worker.removeEventListener("error", onWorkerError);
 
-            if (this.destroyed) {
-              this._readyCapability.reject(new Error("Worker was destroyed"));
-            } else {
-              this._setupFakeWorker();
-            }
-          };
+          if (this.destroyed) {
+            terminateEarly();
+            return;
+          }
 
-          const onWorkerError = () => {
-            if (!this._webWorker) {
-              terminateEarly();
-            }
-          };
+          try {
+            sendTest();
+          } catch (e) {
+            this._setupFakeWorker();
+          }
+        });
 
-          worker.addEventListener("error", onWorkerError);
-          messageHandler.on("test", data => {
-            worker.removeEventListener("error", onWorkerError);
+        const sendTest = () => {
+          const testObj = new Uint8Array([this.postMessageTransfers ? 255 : 0]);
 
-            if (this.destroyed) {
-              terminateEarly();
-              return;
-            }
+          try {
+            messageHandler.send("test", testObj, [testObj.buffer]);
+          } catch (ex) {
+            (0, _util.warn)("Cannot use postMessage transfers.");
+            testObj[0] = 0;
+            messageHandler.send("test", testObj);
+          }
+        };
 
-            if (data) {
-              this._messageHandler = messageHandler;
-              this._port = worker;
-              this._webWorker = worker;
+        sendTest();
+        return;
+      } catch (e) {
+        (0, _util.info)("The worker has been disabled.");
+      }
+    }
 
-              if (!data.supportTransfers) {
-                this.postMessageTransfers = false;
-              }
+    this._setupFakeWorker();
+  }
 
-              this._readyCapability.resolve();
+  _setupFakeWorker() {
+    if (!PDFWorkerUtil.isWorkerDisabled) {
+      (0, _util.warn)("Setting up fake worker.");
+      PDFWorkerUtil.isWorkerDisabled = true;
+    }
 
-              messageHandler.send("configure", {
-                verbosity: this.verbosity
-              });
-            } else {
-              this._setupFakeWorker();
+    PDFWorker._setupFakeWorkerGlobal.then(WorkerMessageHandler => {
+      if (this.destroyed) {
+        this._readyCapability.reject(new Error("Worker was destroyed"));
 
-              messageHandler.destroy();
-              worker.terminate();
-            }
-          });
-          messageHandler.on("ready", data => {
-            worker.removeEventListener("error", onWorkerError);
+        return;
+      }
 
-            if (this.destroyed) {
-              terminateEarly();
-              return;
-            }
+      const port = new LoopbackPort();
+      this._port = port;
+      const id = `fake${PDFWorkerUtil.fakeWorkerId++}`;
+      const workerHandler = new _message_handler.MessageHandler(id + "_worker", id, port);
+      WorkerMessageHandler.setup(workerHandler, port);
+      const messageHandler = new _message_handler.MessageHandler(id, id + "_worker", port);
+      this._messageHandler = messageHandler;
 
-            try {
-              sendTest();
-            } catch (e) {
-              this._setupFakeWorker();
-            }
-          });
+      this._readyCapability.resolve();
 
-          const sendTest = () => {
-            const testObj = new Uint8Array([this.postMessageTransfers ? 255 : 0]);
+      messageHandler.send("configure", {
+        verbosity: this.verbosity
+      });
+    }).catch(reason => {
+      this._readyCapability.reject(new Error(`Setting up fake worker failed: "${reason.message}".`));
+    });
+  }
 
-            try {
-              messageHandler.send("test", testObj, [testObj.buffer]);
-            } catch (ex) {
-              (0, _util.warn)("Cannot use postMessage transfers.");
-              testObj[0] = 0;
-              messageHandler.send("test", testObj);
-            }
-          };
+  destroy() {
+    this.destroyed = true;
 
-          sendTest();
-          return;
-        } catch (e) {
-          (0, _util.info)("The worker has been disabled.");
-        }
-      }
+    if (this._webWorker) {
+      this._webWorker.terminate();
 
-      this._setupFakeWorker();
+      this._webWorker = null;
     }
 
-    _setupFakeWorker() {
-      if (!isWorkerDisabled) {
-        (0, _util.warn)("Setting up fake worker.");
-        isWorkerDisabled = true;
-      }
+    PDFWorker._workerPorts.delete(this._port);
 
-      setupFakeWorkerGlobal().then(WorkerMessageHandler => {
-        if (this.destroyed) {
-          this._readyCapability.reject(new Error("Worker was destroyed"));
+    this._port = null;
 
-          return;
-        }
+    if (this._messageHandler) {
+      this._messageHandler.destroy();
 
-        const port = new LoopbackPort();
-        this._port = port;
-        const id = "fake" + nextFakeWorkerId++;
-        const workerHandler = new _message_handler.MessageHandler(id + "_worker", id, port);
-        WorkerMessageHandler.setup(workerHandler, port);
-        const messageHandler = new _message_handler.MessageHandler(id, id + "_worker", port);
-        this._messageHandler = messageHandler;
+      this._messageHandler = null;
+    }
+  }
 
-        this._readyCapability.resolve();
+  static fromPort(params) {
+    if (!params?.port) {
+      throw new Error("PDFWorker.fromPort - invalid method signature.");
+    }
 
-        messageHandler.send("configure", {
-          verbosity: this.verbosity
-        });
-      }).catch(reason => {
-        this._readyCapability.reject(new Error(`Setting up fake worker failed: "${reason.message}".`));
-      });
+    if (this._workerPorts.has(params.port)) {
+      return this._workerPorts.get(params.port);
     }
 
-    destroy() {
-      this.destroyed = true;
+    return new PDFWorker(params);
+  }
 
-      if (this._webWorker) {
-        this._webWorker.terminate();
+  static get workerSrc() {
+    if (_worker_options.GlobalWorkerOptions.workerSrc) {
+      return _worker_options.GlobalWorkerOptions.workerSrc;
+    }
 
-        this._webWorker = null;
+    if (PDFWorkerUtil.fallbackWorkerSrc !== null) {
+      if (!_is_node.isNodeJS) {
+        (0, _display_utils.deprecated)('No "GlobalWorkerOptions.workerSrc" specified.');
       }
 
-      pdfWorkerPorts.delete(this._port);
-      this._port = null;
+      return PDFWorkerUtil.fallbackWorkerSrc;
+    }
 
-      if (this._messageHandler) {
-        this._messageHandler.destroy();
+    throw new Error('No "GlobalWorkerOptions.workerSrc" specified.');
+  }
 
-        this._messageHandler = null;
-      }
+  static get _mainThreadWorkerMessageHandler() {
+    try {
+      return globalThis.pdfjsWorker?.WorkerMessageHandler || null;
+    } catch (ex) {
+      return null;
     }
+  }
 
-    static fromPort(params) {
-      if (!params || !params.port) {
-        throw new Error("PDFWorker.fromPort - invalid method signature.");
-      }
+  static get _setupFakeWorkerGlobal() {
+    const loader = async () => {
+      const mainWorkerMessageHandler = this._mainThreadWorkerMessageHandler;
 
-      if (pdfWorkerPorts.has(params.port)) {
-        return pdfWorkerPorts.get(params.port);
+      if (mainWorkerMessageHandler) {
+        return mainWorkerMessageHandler;
       }
 
-      return new PDFWorker(params);
-    }
+      if (_is_node.isNodeJS && typeof require === "function") {
+        const worker = eval("require")(this.workerSrc);
+        return worker.WorkerMessageHandler;
+      }
 
-    static getWorkerSrc() {
-      return getWorkerSrc();
-    }
+      await (0, _display_utils.loadScript)(this.workerSrc);
+      return window.pdfjsWorker.WorkerMessageHandler;
+    };
 
+    return (0, _util.shadow)(this, "_setupFakeWorkerGlobal", loader());
   }
 
-  return PDFWorker;
-}();
+}
 
 exports.PDFWorker = PDFWorker;
-
-class WorkerTransport {
+{
+  PDFWorker.getWorkerSrc = function () {
+    (0, _display_utils.deprecated)("`PDFWorker.getWorkerSrc()`, please use `PDFWorker.workerSrc` instead.");
+    return this.workerSrc;
+  };
+}
+
+class WorkerTransport {
   constructor(messageHandler, loadingTask, networkStream, params) {
     this.messageHandler = messageHandler;
     this.loadingTask = loadingTask;
@@ -3153,6 +3261,57 @@ class WorkerTransport {
     return (0, _util.shadow)(this, "annotationStorage", new _annotation_storage.AnnotationStorage());
   }
 
+  getRenderingIntent(intent, annotationMode = _util.AnnotationMode.ENABLE, isOpList = false) {
+    let renderingIntent = _util.RenderingIntentFlag.DISPLAY;
+    let lastModified = "";
+
+    switch (intent) {
+      case "any":
+        renderingIntent = _util.RenderingIntentFlag.ANY;
+        break;
+
+      case "display":
+        break;
+
+      case "print":
+        renderingIntent = _util.RenderingIntentFlag.PRINT;
+        break;
+
+      default:
+        (0, _util.warn)(`getRenderingIntent - invalid intent: ${intent}`);
+    }
+
+    switch (annotationMode) {
+      case _util.AnnotationMode.DISABLE:
+        renderingIntent += _util.RenderingIntentFlag.ANNOTATIONS_DISABLE;
+        break;
+
+      case _util.AnnotationMode.ENABLE:
+        break;
+
+      case _util.AnnotationMode.ENABLE_FORMS:
+        renderingIntent += _util.RenderingIntentFlag.ANNOTATIONS_FORMS;
+        break;
+
+      case _util.AnnotationMode.ENABLE_STORAGE:
+        renderingIntent += _util.RenderingIntentFlag.ANNOTATIONS_STORAGE;
+        lastModified = this.annotationStorage.lastModified;
+        break;
+
+      default:
+        (0, _util.warn)(`getRenderingIntent - invalid annotationMode: ${annotationMode}`);
+    }
+
+    if (isOpList) {
+      renderingIntent += _util.RenderingIntentFlag.OPLIST;
+    }
+
+    return {
+      renderingIntent,
+      cacheKey: `${renderingIntent}_${lastModified}`
+    };
+  }
+
   destroy() {
     if (this.destroyCapability) {
       return this.destroyCapability.promise;
@@ -3185,6 +3344,7 @@ class WorkerTransport {
     Promise.all(waitOn).then(() => {
       this.commonObjs.clear();
       this.fontLoader.clear();
+      this._getFieldObjectsPromise = null;
       this._hasJSActionsPromise = null;
 
       if (this._networkStream) {
@@ -3343,11 +3503,9 @@ class WorkerTransport {
         case "UnknownErrorException":
           reason = new _util.UnknownErrorException(ex.message, ex.details);
           break;
-      }
 
-      if (!(reason instanceof Error)) {
-        const msg = "DocException - expected a valid Error.";
-        (0, _util.warn)(msg);
+        default:
+          (0, _util.unreachable)("DocException - expected a valid Error.");
       }
 
       loadingTask._capability.reject(reason);
@@ -3390,7 +3548,7 @@ class WorkerTransport {
 
       const page = this.pageCache[data.pageIndex];
 
-      page._startRenderPage(data.transparency, data.intent);
+      page._startRenderPage(data.transparency, data.cacheKey);
     });
     messageHandler.on("commonobj", data => {
       if (this.destroyed) {
@@ -3569,8 +3727,6 @@ class WorkerTransport {
   getPageIndex(ref) {
     return this.messageHandler.sendWithPromise("GetPageIndex", {
       ref
-    }).catch(function (reason) {
-      return Promise.reject(new Error(reason));
     });
   }
 
@@ -3593,11 +3749,11 @@ class WorkerTransport {
   }
 
   getFieldObjects() {
-    return this.messageHandler.sendWithPromise("GetFieldObjects", null);
+    return this._getFieldObjectsPromise ||= this.messageHandler.sendWithPromise("GetFieldObjects", null);
   }
 
   hasJSActions() {
-    return this._hasJSActionsPromise || (this._hasJSActionsPromise = 
this.messageHandler.sendWithPromise("HasJSActions", null));
+    return this._hasJSActionsPromise ||= this.messageHandler.sendWithPromise("HasJSActions", null);
   }
 
   getCalculationOrderIds() {
@@ -3722,13 +3878,15 @@ class WorkerTransport {
       this.fontLoader.clear();
     }
 
+    this._getFieldObjectsPromise = null;
     this._hasJSActionsPromise = null;
   }
 
   get loadingParams() {
     const params = this._params;
     return (0, _util.shadow)(this, "loadingParams", {
-      disableAutoFetch: params.disableAutoFetch
+      disableAutoFetch: params.disableAutoFetch,
+      enableXfa: params.enableXfa
     });
   }
 
@@ -3802,181 +3960,181 @@ class RenderTask {
 
 }
 
-const InternalRenderTask = function InternalRenderTaskClosure() {
-  const canvasInRendering = new WeakSet();
-
-  class InternalRenderTask {
-    constructor({
-      callback,
-      params,
-      objs,
-      commonObjs,
-      operatorList,
-      pageIndex,
-      canvasFactory,
-      useRequestAnimationFrame = false,
-      pdfBug = false
-    }) {
-      this.callback = callback;
-      this.params = params;
-      this.objs = objs;
-      this.commonObjs = commonObjs;
-      this.operatorListIdx = null;
-      this.operatorList = operatorList;
-      this._pageIndex = pageIndex;
-      this.canvasFactory = canvasFactory;
-      this._pdfBug = pdfBug;
-      this.running = false;
-      this.graphicsReadyCallback = null;
-      this.graphicsReady = false;
-      this._useRequestAnimationFrame = useRequestAnimationFrame === true && typeof window !== "undefined";
-      this.cancelled = false;
-      this.capability = (0, _util.createPromiseCapability)();
-      this.task = new RenderTask(this);
-      this._cancelBound = this.cancel.bind(this);
-      this._continueBound = this._continue.bind(this);
-      this._scheduleNextBound = this._scheduleNext.bind(this);
-      this._nextBound = this._next.bind(this);
-      this._canvas = params.canvasContext.canvas;
-    }
-
-    get completed() {
-      return this.capability.promise.catch(function () {});
-    }
-
-    initializeGraphics({
-      transparency = false,
-      optionalContentConfig
-    }) {
-      if (this.cancelled) {
-        return;
-      }
+exports.RenderTask = RenderTask;
 
-      if (this._canvas) {
-        if (canvasInRendering.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.");
-        }
+class InternalRenderTask {
+  static get canvasInUse() {
+    return (0, _util.shadow)(this, "canvasInUse", new WeakSet());
+  }
 
-        canvasInRendering.add(this._canvas);
-      }
+  constructor({
+    callback,
+    params,
+    objs,
+    commonObjs,
+    operatorList,
+    pageIndex,
+    canvasFactory,
+    useRequestAnimationFrame = false,
+    pdfBug = false
+  }) {
+    this.callback = callback;
+    this.params = params;
+    this.objs = objs;
+    this.commonObjs = commonObjs;
+    this.operatorListIdx = null;
+    this.operatorList = operatorList;
+    this._pageIndex = pageIndex;
+    this.canvasFactory = canvasFactory;
+    this._pdfBug = pdfBug;
+    this.running = false;
+    this.graphicsReadyCallback = null;
+    this.graphicsReady = false;
+    this._useRequestAnimationFrame = useRequestAnimationFrame === true && typeof window !== "undefined";
+    this.cancelled = false;
+    this.capability = (0, _util.createPromiseCapability)();
+    this.task = new RenderTask(this);
+    this._cancelBound = this.cancel.bind(this);
+    this._continueBound = this._continue.bind(this);
+    this._scheduleNextBound = this._scheduleNext.bind(this);
+    this._nextBound = this._next.bind(this);
+    this._canvas = params.canvasContext.canvas;
+  }
+
+  get completed() {
+    return this.capability.promise.catch(function () {});
+  }
+
+  initializeGraphics({
+    transparency = false,
+    optionalContentConfig
+  }) {
+    if (this.cancelled) {
+      return;
+    }
 
-      if (this._pdfBug && globalThis.StepperManager?.enabled) {
-        this.stepper = globalThis.StepperManager.create(this._pageIndex);
-        this.stepper.init(this.operatorList);
-        this.stepper.nextBreakPoint = this.stepper.getNextBreakPoint();
+    if (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.");
       }
 
-      const {
-        canvasContext,
-        viewport,
-        transform,
-        imageLayer,
-        background
-      } = this.params;
-      this.gfx = new _canvas.CanvasGraphics(canvasContext, this.commonObjs, this.objs, this.canvasFactory, 
imageLayer, optionalContentConfig);
-      this.gfx.beginDrawing({
-        transform,
-        viewport,
-        transparency,
-        background
-      });
-      this.operatorListIdx = 0;
-      this.graphicsReady = true;
+      InternalRenderTask.canvasInUse.add(this._canvas);
+    }
 
-      if (this.graphicsReadyCallback) {
-        this.graphicsReadyCallback();
-      }
+    if (this._pdfBug && globalThis.StepperManager?.enabled) {
+      this.stepper = globalThis.StepperManager.create(this._pageIndex);
+      this.stepper.init(this.operatorList);
+      this.stepper.nextBreakPoint = this.stepper.getNextBreakPoint();
     }
 
-    cancel(error = null) {
-      this.running = false;
-      this.cancelled = true;
+    const {
+      canvasContext,
+      viewport,
+      transform,
+      imageLayer,
+      background
+    } = this.params;
+    this.gfx = new _canvas.CanvasGraphics(canvasContext, this.commonObjs, this.objs, this.canvasFactory, 
imageLayer, optionalContentConfig);
+    this.gfx.beginDrawing({
+      transform,
+      viewport,
+      transparency,
+      background
+    });
+    this.operatorListIdx = 0;
+    this.graphicsReady = true;
 
-      if (this.gfx) {
-        this.gfx.endDrawing();
-      }
+    if (this.graphicsReadyCallback) {
+      this.graphicsReadyCallback();
+    }
+  }
 
-      if (this._canvas) {
-        canvasInRendering.delete(this._canvas);
-      }
+  cancel(error = null) {
+    this.running = false;
+    this.cancelled = true;
 
-      this.callback(error || new _display_utils.RenderingCancelledException(`Rendering cancelled, page 
${this._pageIndex + 1}`, "canvas"));
+    if (this.gfx) {
+      this.gfx.endDrawing();
     }
 
-    operatorListChanged() {
-      if (!this.graphicsReady) {
-        if (!this.graphicsReadyCallback) {
-          this.graphicsReadyCallback = this._continueBound;
-        }
+    if (this._canvas) {
+      InternalRenderTask.canvasInUse.delete(this._canvas);
+    }
 
-        return;
-      }
+    this.callback(error || new _display_utils.RenderingCancelledException(`Rendering cancelled, page 
${this._pageIndex + 1}`, "canvas"));
+  }
 
-      if (this.stepper) {
-        this.stepper.updateOperatorList(this.operatorList);
+  operatorListChanged() {
+    if (!this.graphicsReady) {
+      if (!this.graphicsReadyCallback) {
+        this.graphicsReadyCallback = this._continueBound;
       }
 
-      if (this.running) {
-        return;
-      }
+      return;
+    }
+
+    if (this.stepper) {
+      this.stepper.updateOperatorList(this.operatorList);
+    }
 
-      this._continue();
+    if (this.running) {
+      return;
     }
 
-    _continue() {
-      this.running = true;
+    this._continue();
+  }
 
-      if (this.cancelled) {
-        return;
-      }
+  _continue() {
+    this.running = true;
 
-      if (this.task.onContinue) {
-        this.task.onContinue(this._scheduleNextBound);
-      } else {
-        this._scheduleNext();
-      }
+    if (this.cancelled) {
+      return;
     }
 
-    _scheduleNext() {
-      if (this._useRequestAnimationFrame) {
-        window.requestAnimationFrame(() => {
-          this._nextBound().catch(this._cancelBound);
-        });
-      } else {
-        Promise.resolve().then(this._nextBound).catch(this._cancelBound);
-      }
+    if (this.task.onContinue) {
+      this.task.onContinue(this._scheduleNextBound);
+    } else {
+      this._scheduleNext();
     }
+  }
 
-    async _next() {
-      if (this.cancelled) {
-        return;
-      }
+  _scheduleNext() {
+    if (this._useRequestAnimationFrame) {
+      window.requestAnimationFrame(() => {
+        this._nextBound().catch(this._cancelBound);
+      });
+    } else {
+      Promise.resolve().then(this._nextBound).catch(this._cancelBound);
+    }
+  }
 
-      this.operatorListIdx = this.gfx.executeOperatorList(this.operatorList, this.operatorListIdx, 
this._continueBound, this.stepper);
+  async _next() {
+    if (this.cancelled) {
+      return;
+    }
 
-      if (this.operatorListIdx === this.operatorList.argsArray.length) {
-        this.running = false;
+    this.operatorListIdx = this.gfx.executeOperatorList(this.operatorList, this.operatorListIdx, 
this._continueBound, this.stepper);
 
-        if (this.operatorList.lastChunk) {
-          this.gfx.endDrawing();
+    if (this.operatorListIdx === this.operatorList.argsArray.length) {
+      this.running = false;
 
-          if (this._canvas) {
-            canvasInRendering.delete(this._canvas);
-          }
+      if (this.operatorList.lastChunk) {
+        this.gfx.endDrawing();
 
-          this.callback();
+        if (this._canvas) {
+          InternalRenderTask.canvasInUse.delete(this._canvas);
         }
+
+        this.callback();
       }
     }
-
   }
 
-  return InternalRenderTask;
-}();
+}
 
-const version = '2.10.377';
+const version = '2.11.338';
 exports.version = version;
-const build = '156762c48';
+const build = 'dedff3c98';
 exports.build = build;
 
 /***/ }),
@@ -4490,15 +4648,20 @@ var _util = __w_pdfjs_require__(2);
 class AnnotationStorage {
   constructor() {
     this._storage = new Map();
+    this._timeStamp = Date.now();
     this._modified = false;
     this.onSetModified = null;
     this.onResetModified = null;
   }
 
   getValue(key, defaultValue) {
-    const obj = this._storage.get(key);
+    const value = this._storage.get(key);
 
-    return obj !== undefined ? obj : defaultValue;
+    if (value === undefined) {
+      return defaultValue;
+    }
+
+    return Object.assign(defaultValue, value);
   }
 
   setValue(key, value) {
@@ -4514,12 +4677,14 @@ class AnnotationStorage {
         }
       }
     } else {
-      this._storage.set(key, value);
-
       modified = true;
+
+      this._storage.set(key, value);
     }
 
     if (modified) {
+      this._timeStamp = Date.now();
+
       this._setModified();
     }
   }
@@ -4556,6 +4721,10 @@ class AnnotationStorage {
     return this._storage.size > 0 ? this._storage : null;
   }
 
+  get lastModified() {
+    return this._timeStamp.toString();
+  }
+
 }
 
 exports.AnnotationStorage = AnnotationStorage;
@@ -4575,9 +4744,14 @@ var _util = __w_pdfjs_require__(2);
 
 var _pattern_helper = __w_pdfjs_require__(11);
 
+var _display_utils = __w_pdfjs_require__(1);
+
 const MIN_FONT_SIZE = 16;
 const MAX_FONT_SIZE = 100;
 const MAX_GROUP_SIZE = 4096;
+const MAX_CACHED_CANVAS_PATTERNS = 2;
+const EXECUTION_TIME = 15;
+const EXECUTION_STEPS = 10;
 const COMPILE_TYPE3_GLYPHS = true;
 const MAX_SIZE_TO_COMPILE = 1000;
 const FULL_CHUNK_HEIGHT = 16;
@@ -4729,6 +4903,46 @@ class CachedCanvases {
 
 }
 
+class LRUCache {
+  constructor(maxSize = 0) {
+    this._cache = new Map();
+    this._maxSize = maxSize;
+  }
+
+  has(key) {
+    return this._cache.has(key);
+  }
+
+  get(key) {
+    if (this._cache.has(key)) {
+      const value = this._cache.get(key);
+
+      this._cache.delete(key);
+
+      this._cache.set(key, value);
+    }
+
+    return this._cache.get(key);
+  }
+
+  set(key, value) {
+    if (this._maxSize <= 0) {
+      return;
+    }
+
+    if (this._cache.size + 1 > this._maxSize) {
+      this._cache.delete(this._cache.keys().next().value);
+    }
+
+    this._cache.set(key, value);
+  }
+
+  clear() {
+    this._cache.clear();
+  }
+
+}
+
 function compileType3Glyph(imgData) {
   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]);
@@ -4942,1993 +5156,2010 @@ class CanvasExtraState {
 
 }
 
-const CanvasGraphics = function CanvasGraphicsClosure() {
-  const EXECUTION_TIME = 15;
-  const EXECUTION_STEPS = 10;
+function putBinaryImageData(ctx, imgData, transferMaps = null) {
+  if (typeof ImageData !== "undefined" && imgData instanceof ImageData) {
+    ctx.putImageData(imgData, 0, 0);
+    return;
+  }
 
-  function putBinaryImageData(ctx, imgData, transferMaps = null) {
-    if (typeof ImageData !== "undefined" && imgData instanceof ImageData) {
-      ctx.putImageData(imgData, 0, 0);
-      return;
+  const height = imgData.height,
+        width = imgData.width;
+  const partialChunkHeight = height % FULL_CHUNK_HEIGHT;
+  const fullChunks = (height - partialChunkHeight) / FULL_CHUNK_HEIGHT;
+  const totalChunks = partialChunkHeight === 0 ? fullChunks : fullChunks + 1;
+  const chunkImgData = ctx.createImageData(width, FULL_CHUNK_HEIGHT);
+  let srcPos = 0,
+      destPos;
+  const src = imgData.data;
+  const dest = chunkImgData.data;
+  let i, j, thisChunkHeight, elemsInThisChunk;
+  let transferMapRed, transferMapGreen, transferMapBlue, transferMapGray;
+
+  if (transferMaps) {
+    switch (transferMaps.length) {
+      case 1:
+        transferMapRed = transferMaps[0];
+        transferMapGreen = transferMaps[0];
+        transferMapBlue = transferMaps[0];
+        transferMapGray = transferMaps[0];
+        break;
+
+      case 4:
+        transferMapRed = transferMaps[0];
+        transferMapGreen = transferMaps[1];
+        transferMapBlue = transferMaps[2];
+        transferMapGray = transferMaps[3];
+        break;
     }
+  }
 
-    const height = imgData.height,
-          width = imgData.width;
-    const partialChunkHeight = height % FULL_CHUNK_HEIGHT;
-    const fullChunks = (height - partialChunkHeight) / FULL_CHUNK_HEIGHT;
-    const totalChunks = partialChunkHeight === 0 ? fullChunks : fullChunks + 1;
-    const chunkImgData = ctx.createImageData(width, FULL_CHUNK_HEIGHT);
-    let srcPos = 0,
-        destPos;
-    const src = imgData.data;
-    const dest = chunkImgData.data;
-    let i, j, thisChunkHeight, elemsInThisChunk;
-    let transferMapRed, transferMapGreen, transferMapBlue, transferMapGray;
-
-    if (transferMaps) {
-      switch (transferMaps.length) {
-        case 1:
-          transferMapRed = transferMaps[0];
-          transferMapGreen = transferMaps[0];
-          transferMapBlue = transferMaps[0];
-          transferMapGray = transferMaps[0];
-          break;
+  if (imgData.kind === _util.ImageKind.GRAYSCALE_1BPP) {
+    const srcLength = src.byteLength;
+    const dest32 = new Uint32Array(dest.buffer, 0, dest.byteLength >> 2);
+    const dest32DataLength = dest32.length;
+    const fullSrcDiff = width + 7 >> 3;
+    let white = 0xffffffff;
+    let black = _util.IsLittleEndianCached.value ? 0xff000000 : 0x000000ff;
 
-        case 4:
-          transferMapRed = transferMaps[0];
-          transferMapGreen = transferMaps[1];
-          transferMapBlue = transferMaps[2];
-          transferMapGray = transferMaps[3];
-          break;
+    if (transferMapGray) {
+      if (transferMapGray[0] === 0xff && transferMapGray[0xff] === 0) {
+        [white, black] = [black, white];
       }
     }
 
-    if (imgData.kind === _util.ImageKind.GRAYSCALE_1BPP) {
-      const srcLength = src.byteLength;
-      const dest32 = new Uint32Array(dest.buffer, 0, dest.byteLength >> 2);
-      const dest32DataLength = dest32.length;
-      const fullSrcDiff = width + 7 >> 3;
-      let white = 0xffffffff;
-      let black = _util.IsLittleEndianCached.value ? 0xff000000 : 0x000000ff;
-
-      if (transferMapGray) {
-        if (transferMapGray[0] === 0xff && transferMapGray[0xff] === 0) {
-          [white, black] = [black, white];
-        }
-      }
+    for (i = 0; i < totalChunks; i++) {
+      thisChunkHeight = i < fullChunks ? FULL_CHUNK_HEIGHT : partialChunkHeight;
+      destPos = 0;
 
-      for (i = 0; i < totalChunks; i++) {
-        thisChunkHeight = i < fullChunks ? FULL_CHUNK_HEIGHT : partialChunkHeight;
-        destPos = 0;
+      for (j = 0; j < thisChunkHeight; j++) {
+        const srcDiff = srcLength - srcPos;
+        let k = 0;
+        const kEnd = srcDiff > fullSrcDiff ? width : srcDiff * 8 - 7;
+        const kEndUnrolled = kEnd & ~7;
+        let mask = 0;
+        let srcByte = 0;
 
-        for (j = 0; j < thisChunkHeight; j++) {
-          const srcDiff = srcLength - srcPos;
-          let k = 0;
-          const kEnd = srcDiff > fullSrcDiff ? width : srcDiff * 8 - 7;
-          const kEndUnrolled = kEnd & ~7;
-          let mask = 0;
-          let srcByte = 0;
+        for (; k < kEndUnrolled; k += 8) {
+          srcByte = src[srcPos++];
+          dest32[destPos++] = srcByte & 128 ? white : black;
+          dest32[destPos++] = srcByte & 64 ? white : black;
+          dest32[destPos++] = srcByte & 32 ? white : black;
+          dest32[destPos++] = srcByte & 16 ? white : black;
+          dest32[destPos++] = srcByte & 8 ? white : black;
+          dest32[destPos++] = srcByte & 4 ? white : black;
+          dest32[destPos++] = srcByte & 2 ? white : black;
+          dest32[destPos++] = srcByte & 1 ? white : black;
+        }
 
-          for (; k < kEndUnrolled; k += 8) {
+        for (; k < kEnd; k++) {
+          if (mask === 0) {
             srcByte = src[srcPos++];
-            dest32[destPos++] = srcByte & 128 ? white : black;
-            dest32[destPos++] = srcByte & 64 ? white : black;
-            dest32[destPos++] = srcByte & 32 ? white : black;
-            dest32[destPos++] = srcByte & 16 ? white : black;
-            dest32[destPos++] = srcByte & 8 ? white : black;
-            dest32[destPos++] = srcByte & 4 ? white : black;
-            dest32[destPos++] = srcByte & 2 ? white : black;
-            dest32[destPos++] = srcByte & 1 ? white : black;
-          }
-
-          for (; k < kEnd; k++) {
-            if (mask === 0) {
-              srcByte = src[srcPos++];
-              mask = 128;
-            }
-
-            dest32[destPos++] = srcByte & mask ? white : black;
-            mask >>= 1;
+            mask = 128;
           }
-        }
 
-        while (destPos < dest32DataLength) {
-          dest32[destPos++] = 0;
+          dest32[destPos++] = srcByte & mask ? white : black;
+          mask >>= 1;
         }
-
-        ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);
       }
-    } else if (imgData.kind === _util.ImageKind.RGBA_32BPP) {
-      const hasTransferMaps = !!(transferMapRed || transferMapGreen || transferMapBlue);
-      j = 0;
-      elemsInThisChunk = width * FULL_CHUNK_HEIGHT * 4;
 
-      for (i = 0; i < fullChunks; i++) {
-        dest.set(src.subarray(srcPos, srcPos + elemsInThisChunk));
-        srcPos += elemsInThisChunk;
+      while (destPos < dest32DataLength) {
+        dest32[destPos++] = 0;
+      }
 
-        if (hasTransferMaps) {
-          for (let k = 0; k < elemsInThisChunk; k += 4) {
-            if (transferMapRed) {
-              dest[k + 0] = transferMapRed[dest[k + 0]];
-            }
+      ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);
+    }
+  } else if (imgData.kind === _util.ImageKind.RGBA_32BPP) {
+    const hasTransferMaps = !!(transferMapRed || transferMapGreen || transferMapBlue);
+    j = 0;
+    elemsInThisChunk = width * FULL_CHUNK_HEIGHT * 4;
 
-            if (transferMapGreen) {
-              dest[k + 1] = transferMapGreen[dest[k + 1]];
-            }
+    for (i = 0; i < fullChunks; i++) {
+      dest.set(src.subarray(srcPos, srcPos + elemsInThisChunk));
+      srcPos += elemsInThisChunk;
 
-            if (transferMapBlue) {
-              dest[k + 2] = transferMapBlue[dest[k + 2]];
-            }
+      if (hasTransferMaps) {
+        for (let k = 0; k < elemsInThisChunk; k += 4) {
+          if (transferMapRed) {
+            dest[k + 0] = transferMapRed[dest[k + 0]];
           }
-        }
-
-        ctx.putImageData(chunkImgData, 0, j);
-        j += FULL_CHUNK_HEIGHT;
-      }
-
-      if (i < totalChunks) {
-        elemsInThisChunk = width * partialChunkHeight * 4;
-        dest.set(src.subarray(srcPos, srcPos + elemsInThisChunk));
 
-        if (hasTransferMaps) {
-          for (let k = 0; k < elemsInThisChunk; k += 4) {
-            if (transferMapRed) {
-              dest[k + 0] = transferMapRed[dest[k + 0]];
-            }
-
-            if (transferMapGreen) {
-              dest[k + 1] = transferMapGreen[dest[k + 1]];
-            }
+          if (transferMapGreen) {
+            dest[k + 1] = transferMapGreen[dest[k + 1]];
+          }
 
-            if (transferMapBlue) {
-              dest[k + 2] = transferMapBlue[dest[k + 2]];
-            }
+          if (transferMapBlue) {
+            dest[k + 2] = transferMapBlue[dest[k + 2]];
           }
         }
-
-        ctx.putImageData(chunkImgData, 0, j);
       }
-    } else if (imgData.kind === _util.ImageKind.RGB_24BPP) {
-      const hasTransferMaps = !!(transferMapRed || transferMapGreen || transferMapBlue);
-      thisChunkHeight = FULL_CHUNK_HEIGHT;
-      elemsInThisChunk = width * thisChunkHeight;
-
-      for (i = 0; i < totalChunks; i++) {
-        if (i >= fullChunks) {
-          thisChunkHeight = partialChunkHeight;
-          elemsInThisChunk = width * thisChunkHeight;
-        }
 
-        destPos = 0;
+      ctx.putImageData(chunkImgData, 0, j);
+      j += FULL_CHUNK_HEIGHT;
+    }
 
-        for (j = elemsInThisChunk; j--;) {
-          dest[destPos++] = src[srcPos++];
-          dest[destPos++] = src[srcPos++];
-          dest[destPos++] = src[srcPos++];
-          dest[destPos++] = 255;
-        }
+    if (i < totalChunks) {
+      elemsInThisChunk = width * partialChunkHeight * 4;
+      dest.set(src.subarray(srcPos, srcPos + elemsInThisChunk));
 
-        if (hasTransferMaps) {
-          for (let k = 0; k < destPos; k += 4) {
-            if (transferMapRed) {
-              dest[k + 0] = transferMapRed[dest[k + 0]];
-            }
+      if (hasTransferMaps) {
+        for (let k = 0; k < elemsInThisChunk; k += 4) {
+          if (transferMapRed) {
+            dest[k + 0] = transferMapRed[dest[k + 0]];
+          }
 
-            if (transferMapGreen) {
-              dest[k + 1] = transferMapGreen[dest[k + 1]];
-            }
+          if (transferMapGreen) {
+            dest[k + 1] = transferMapGreen[dest[k + 1]];
+          }
 
-            if (transferMapBlue) {
-              dest[k + 2] = transferMapBlue[dest[k + 2]];
-            }
+          if (transferMapBlue) {
+            dest[k + 2] = transferMapBlue[dest[k + 2]];
           }
         }
-
-        ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);
       }
-    } else {
-      throw new Error(`bad image kind: ${imgData.kind}`);
+
+      ctx.putImageData(chunkImgData, 0, j);
     }
-  }
+  } else if (imgData.kind === _util.ImageKind.RGB_24BPP) {
+    const hasTransferMaps = !!(transferMapRed || transferMapGreen || transferMapBlue);
+    thisChunkHeight = FULL_CHUNK_HEIGHT;
+    elemsInThisChunk = width * thisChunkHeight;
+
+    for (i = 0; i < totalChunks; i++) {
+      if (i >= fullChunks) {
+        thisChunkHeight = partialChunkHeight;
+        elemsInThisChunk = width * thisChunkHeight;
+      }
 
-  function putBinaryImageMask(ctx, imgData) {
-    const height = imgData.height,
-          width = imgData.width;
-    const partialChunkHeight = height % FULL_CHUNK_HEIGHT;
-    const fullChunks = (height - partialChunkHeight) / FULL_CHUNK_HEIGHT;
-    const totalChunks = partialChunkHeight === 0 ? fullChunks : fullChunks + 1;
-    const chunkImgData = ctx.createImageData(width, FULL_CHUNK_HEIGHT);
-    let srcPos = 0;
-    const src = imgData.data;
-    const dest = chunkImgData.data;
+      destPos = 0;
 
-    for (let i = 0; i < totalChunks; i++) {
-      const thisChunkHeight = i < fullChunks ? FULL_CHUNK_HEIGHT : partialChunkHeight;
-      let destPos = 3;
+      for (j = elemsInThisChunk; j--;) {
+        dest[destPos++] = src[srcPos++];
+        dest[destPos++] = src[srcPos++];
+        dest[destPos++] = src[srcPos++];
+        dest[destPos++] = 255;
+      }
 
-      for (let j = 0; j < thisChunkHeight; j++) {
-        let elem,
-            mask = 0;
+      if (hasTransferMaps) {
+        for (let k = 0; k < destPos; k += 4) {
+          if (transferMapRed) {
+            dest[k + 0] = transferMapRed[dest[k + 0]];
+          }
 
-        for (let k = 0; k < width; k++) {
-          if (!mask) {
-            elem = src[srcPos++];
-            mask = 128;
+          if (transferMapGreen) {
+            dest[k + 1] = transferMapGreen[dest[k + 1]];
           }
 
-          dest[destPos] = elem & mask ? 0 : 255;
-          destPos += 4;
-          mask >>= 1;
+          if (transferMapBlue) {
+            dest[k + 2] = transferMapBlue[dest[k + 2]];
+          }
         }
       }
 
       ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);
     }
+  } else {
+    throw new Error(`bad image kind: ${imgData.kind}`);
   }
+}
 
-  function copyCtxState(sourceCtx, destCtx) {
-    const properties = ["strokeStyle", "fillStyle", "fillRule", "globalAlpha", "lineWidth", "lineCap", 
"lineJoin", "miterLimit", "globalCompositeOperation", "font"];
+function putBinaryImageMask(ctx, imgData) {
+  const height = imgData.height,
+        width = imgData.width;
+  const partialChunkHeight = height % FULL_CHUNK_HEIGHT;
+  const fullChunks = (height - partialChunkHeight) / FULL_CHUNK_HEIGHT;
+  const totalChunks = partialChunkHeight === 0 ? fullChunks : fullChunks + 1;
+  const chunkImgData = ctx.createImageData(width, FULL_CHUNK_HEIGHT);
+  let srcPos = 0;
+  const src = imgData.data;
+  const dest = chunkImgData.data;
 
-    for (let i = 0, ii = properties.length; i < ii; i++) {
-      const property = properties[i];
+  for (let i = 0; i < totalChunks; i++) {
+    const thisChunkHeight = i < fullChunks ? FULL_CHUNK_HEIGHT : partialChunkHeight;
+    let destPos = 3;
 
-      if (sourceCtx[property] !== undefined) {
-        destCtx[property] = sourceCtx[property];
+    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;
       }
     }
 
-    if (sourceCtx.setLineDash !== undefined) {
-      destCtx.setLineDash(sourceCtx.getLineDash());
-      destCtx.lineDashOffset = sourceCtx.lineDashOffset;
-    }
+    ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);
   }
+}
 
-  function resetCtxToDefault(ctx) {
-    ctx.strokeStyle = "#000000";
-    ctx.fillStyle = "#000000";
-    ctx.fillRule = "nonzero";
-    ctx.globalAlpha = 1;
-    ctx.lineWidth = 1;
-    ctx.lineCap = "butt";
-    ctx.lineJoin = "miter";
-    ctx.miterLimit = 10;
-    ctx.globalCompositeOperation = "source-over";
-    ctx.font = "10px sans-serif";
+function copyCtxState(sourceCtx, destCtx) {
+  const properties = ["strokeStyle", "fillStyle", "fillRule", "globalAlpha", "lineWidth", "lineCap", 
"lineJoin", "miterLimit", "globalCompositeOperation", "font"];
 
-    if (ctx.setLineDash !== undefined) {
-      ctx.setLineDash([]);
-      ctx.lineDashOffset = 0;
+  for (let i = 0, ii = properties.length; i < ii; i++) {
+    const property = properties[i];
+
+    if (sourceCtx[property] !== undefined) {
+      destCtx[property] = sourceCtx[property];
     }
   }
 
-  function composeSMaskBackdrop(bytes, r0, g0, b0) {
-    const length = bytes.length;
+  if (sourceCtx.setLineDash !== undefined) {
+    destCtx.setLineDash(sourceCtx.getLineDash());
+    destCtx.lineDashOffset = sourceCtx.lineDashOffset;
+  }
+}
 
-    for (let i = 3; i < length; i += 4) {
-      const alpha = bytes[i];
+function resetCtxToDefault(ctx) {
+  ctx.strokeStyle = "#000000";
+  ctx.fillStyle = "#000000";
+  ctx.fillRule = "nonzero";
+  ctx.globalAlpha = 1;
+  ctx.lineWidth = 1;
+  ctx.lineCap = "butt";
+  ctx.lineJoin = "miter";
+  ctx.miterLimit = 10;
+  ctx.globalCompositeOperation = "source-over";
+  ctx.font = "10px sans-serif";
 
-      if (alpha === 0) {
-        bytes[i - 3] = r0;
-        bytes[i - 2] = g0;
-        bytes[i - 1] = b0;
-      } else if (alpha < 255) {
-        const alpha_ = 255 - alpha;
-        bytes[i - 3] = bytes[i - 3] * alpha + r0 * alpha_ >> 8;
-        bytes[i - 2] = bytes[i - 2] * alpha + g0 * alpha_ >> 8;
-        bytes[i - 1] = bytes[i - 1] * alpha + b0 * alpha_ >> 8;
-      }
-    }
+  if (ctx.setLineDash !== undefined) {
+    ctx.setLineDash([]);
+    ctx.lineDashOffset = 0;
   }
+}
 
-  function composeSMaskAlpha(maskData, layerData, transferMap) {
-    const length = maskData.length;
-    const scale = 1 / 255;
+function composeSMaskBackdrop(bytes, r0, g0, b0) {
+  const length = bytes.length;
+
+  for (let i = 3; i < length; i += 4) {
+    const alpha = bytes[i];
 
-    for (let i = 3; i < length; i += 4) {
-      const alpha = transferMap ? transferMap[maskData[i]] : maskData[i];
-      layerData[i] = layerData[i] * alpha * scale | 0;
+    if (alpha === 0) {
+      bytes[i - 3] = r0;
+      bytes[i - 2] = g0;
+      bytes[i - 1] = b0;
+    } else if (alpha < 255) {
+      const alpha_ = 255 - alpha;
+      bytes[i - 3] = bytes[i - 3] * alpha + r0 * alpha_ >> 8;
+      bytes[i - 2] = bytes[i - 2] * alpha + g0 * alpha_ >> 8;
+      bytes[i - 1] = bytes[i - 1] * alpha + b0 * alpha_ >> 8;
     }
   }
+}
 
-  function composeSMaskLuminosity(maskData, layerData, transferMap) {
-    const length = maskData.length;
+function composeSMaskAlpha(maskData, layerData, transferMap) {
+  const length = maskData.length;
+  const scale = 1 / 255;
 
-    for (let i = 3; i < length; i += 4) {
-      const y = maskData[i - 3] * 77 + maskData[i - 2] * 152 + maskData[i - 1] * 28;
-      layerData[i] = transferMap ? layerData[i] * transferMap[y >> 8] >> 8 : layerData[i] * y >> 16;
-    }
+  for (let i = 3; i < length; i += 4) {
+    const alpha = transferMap ? transferMap[maskData[i]] : maskData[i];
+    layerData[i] = layerData[i] * alpha * scale | 0;
   }
+}
 
-  function genericComposeSMask(maskCtx, layerCtx, width, height, subtype, backdrop, transferMap) {
-    const hasBackdrop = !!backdrop;
-    const r0 = hasBackdrop ? backdrop[0] : 0;
-    const g0 = hasBackdrop ? backdrop[1] : 0;
-    const b0 = hasBackdrop ? backdrop[2] : 0;
-    let composeFn;
+function composeSMaskLuminosity(maskData, layerData, transferMap) {
+  const length = maskData.length;
 
-    if (subtype === "Luminosity") {
-      composeFn = composeSMaskLuminosity;
-    } else {
-      composeFn = composeSMaskAlpha;
-    }
+  for (let i = 3; i < length; i += 4) {
+    const y = maskData[i - 3] * 77 + maskData[i - 2] * 152 + maskData[i - 1] * 28;
+    layerData[i] = transferMap ? layerData[i] * transferMap[y >> 8] >> 8 : layerData[i] * y >> 16;
+  }
+}
 
-    const PIXELS_TO_PROCESS = 1048576;
-    const chunkSize = Math.min(height, Math.ceil(PIXELS_TO_PROCESS / width));
+function genericComposeSMask(maskCtx, layerCtx, width, height, subtype, backdrop, transferMap) {
+  const hasBackdrop = !!backdrop;
+  const r0 = hasBackdrop ? backdrop[0] : 0;
+  const g0 = hasBackdrop ? backdrop[1] : 0;
+  const b0 = hasBackdrop ? backdrop[2] : 0;
+  let composeFn;
 
-    for (let row = 0; row < height; row += chunkSize) {
-      const chunkHeight = Math.min(chunkSize, height - row);
-      const maskData = maskCtx.getImageData(0, row, width, chunkHeight);
-      const layerData = layerCtx.getImageData(0, row, width, chunkHeight);
+  if (subtype === "Luminosity") {
+    composeFn = composeSMaskLuminosity;
+  } else {
+    composeFn = composeSMaskAlpha;
+  }
 
-      if (hasBackdrop) {
-        composeSMaskBackdrop(maskData.data, r0, g0, b0);
-      }
+  const PIXELS_TO_PROCESS = 1048576;
+  const chunkSize = Math.min(height, Math.ceil(PIXELS_TO_PROCESS / width));
 
-      composeFn(maskData.data, layerData.data, transferMap);
-      maskCtx.putImageData(layerData, 0, row);
+  for (let row = 0; row < height; row += chunkSize) {
+    const chunkHeight = Math.min(chunkSize, height - row);
+    const maskData = maskCtx.getImageData(0, row, width, chunkHeight);
+    const layerData = layerCtx.getImageData(0, row, width, chunkHeight);
+
+    if (hasBackdrop) {
+      composeSMaskBackdrop(maskData.data, r0, g0, b0);
     }
-  }
 
-  function composeSMask(ctx, smask, layerCtx) {
-    const mask = smask.canvas;
-    const maskCtx = smask.context;
-    ctx.setTransform(smask.scaleX, 0, 0, smask.scaleY, smask.offsetX, smask.offsetY);
-    genericComposeSMask(maskCtx, layerCtx, mask.width, mask.height, smask.subtype, smask.backdrop, 
smask.transferMap);
-    ctx.drawImage(mask, 0, 0);
+    composeFn(maskData.data, layerData.data, transferMap);
+    maskCtx.putImageData(layerData, 0, row);
   }
+}
 
-  const LINE_CAP_STYLES = ["butt", "round", "square"];
-  const LINE_JOIN_STYLES = ["miter", "round", "bevel"];
-  const NORMAL_CLIP = {};
-  const EO_CLIP = {};
-
-  class CanvasGraphics {
-    constructor(canvasCtx, commonObjs, objs, canvasFactory, imageLayer, optionalContentConfig) {
-      this.ctx = canvasCtx;
-      this.current = new CanvasExtraState();
-      this.stateStack = [];
-      this.pendingClip = null;
-      this.pendingEOFill = false;
-      this.res = null;
-      this.xobjs = null;
-      this.commonObjs = commonObjs;
-      this.objs = objs;
-      this.canvasFactory = canvasFactory;
-      this.imageLayer = imageLayer;
-      this.groupStack = [];
-      this.processingType3 = null;
-      this.baseTransform = null;
-      this.baseTransformStack = [];
-      this.groupLevel = 0;
-      this.smaskStack = [];
-      this.smaskCounter = 0;
-      this.tempSMask = null;
-      this.contentVisible = true;
-      this.markedContentStack = [];
-      this.optionalContentConfig = optionalContentConfig;
-      this.cachedCanvases = new CachedCanvases(this.canvasFactory);
-      this.cachedPatterns = new Map();
-
-      if (canvasCtx) {
-        addContextCurrentTransform(canvasCtx);
-      }
-
-      this._cachedGetSinglePixelWidth = null;
-    }
+function composeSMask(ctx, smask, layerCtx) {
+  const mask = smask.canvas;
+  const maskCtx = smask.context;
+  ctx.setTransform(smask.scaleX, 0, 0, smask.scaleY, smask.offsetX, smask.offsetY);
+  genericComposeSMask(maskCtx, layerCtx, mask.width, mask.height, smask.subtype, smask.backdrop, 
smask.transferMap);
+  ctx.drawImage(mask, 0, 0);
+}
 
-    beginDrawing({
-      transform,
-      viewport,
-      transparency = false,
-      background = null
-    }) {
-      const width = this.ctx.canvas.width;
-      const height = this.ctx.canvas.height;
-      this.ctx.save();
-      this.ctx.fillStyle = background || "rgb(255, 255, 255)";
-      this.ctx.fillRect(0, 0, width, height);
-      this.ctx.restore();
+function getImageSmoothingEnabled(transform, interpolate) {
+  const scale = _util.Util.singularValueDecompose2dScale(transform);
 
-      if (transparency) {
-        const transparentCanvas = this.cachedCanvases.getCanvas("transparent", width, height, true);
-        this.compositeCtx = this.ctx;
-        this.transparentCanvas = transparentCanvas.canvas;
-        this.ctx = transparentCanvas.context;
-        this.ctx.save();
-        this.ctx.transform.apply(this.ctx, this.compositeCtx.mozCurrentTransform);
-      }
+  scale[0] = Math.fround(scale[0]);
+  scale[1] = Math.fround(scale[1]);
+  const actualScale = Math.fround((globalThis.devicePixelRatio || 1) * 
_display_utils.PixelsPerInch.PDF_TO_CSS_UNITS);
 
-      this.ctx.save();
-      resetCtxToDefault(this.ctx);
+  if (interpolate !== undefined) {
+    return interpolate;
+  } else if (scale[0] <= actualScale || scale[1] <= actualScale) {
+    return true;
+  }
 
-      if (transform) {
-        this.ctx.transform.apply(this.ctx, transform);
-      }
+  return false;
+}
 
-      this.ctx.transform.apply(this.ctx, viewport.transform);
-      this.baseTransform = this.ctx.mozCurrentTransform.slice();
-      this._combinedScaleFactor = Math.hypot(this.baseTransform[0], this.baseTransform[2]);
+const LINE_CAP_STYLES = ["butt", "round", "square"];
+const LINE_JOIN_STYLES = ["miter", "round", "bevel"];
+const NORMAL_CLIP = {};
+const EO_CLIP = {};
 
-      if (this.imageLayer) {
-        this.imageLayer.beginLayout();
-      }
+class CanvasGraphics {
+  constructor(canvasCtx, commonObjs, objs, canvasFactory, imageLayer, optionalContentConfig) {
+    this.ctx = canvasCtx;
+    this.current = new CanvasExtraState();
+    this.stateStack = [];
+    this.pendingClip = null;
+    this.pendingEOFill = false;
+    this.res = null;
+    this.xobjs = null;
+    this.commonObjs = commonObjs;
+    this.objs = objs;
+    this.canvasFactory = canvasFactory;
+    this.imageLayer = imageLayer;
+    this.groupStack = [];
+    this.processingType3 = null;
+    this.baseTransform = null;
+    this.baseTransformStack = [];
+    this.groupLevel = 0;
+    this.smaskStack = [];
+    this.smaskCounter = 0;
+    this.tempSMask = null;
+    this.contentVisible = true;
+    this.markedContentStack = [];
+    this.optionalContentConfig = optionalContentConfig;
+    this.cachedCanvases = new CachedCanvases(this.canvasFactory);
+    this.cachedCanvasPatterns = new LRUCache(MAX_CACHED_CANVAS_PATTERNS);
+    this.cachedPatterns = new Map();
+
+    if (canvasCtx) {
+      addContextCurrentTransform(canvasCtx);
+    }
+
+    this._cachedGetSinglePixelWidth = null;
+  }
+
+  beginDrawing({
+    transform,
+    viewport,
+    transparency = false,
+    background = null
+  }) {
+    const width = this.ctx.canvas.width;
+    const height = this.ctx.canvas.height;
+    this.ctx.save();
+    this.ctx.fillStyle = background || "rgb(255, 255, 255)";
+    this.ctx.fillRect(0, 0, width, height);
+    this.ctx.restore();
+
+    if (transparency) {
+      const transparentCanvas = this.cachedCanvases.getCanvas("transparent", width, height, true);
+      this.compositeCtx = this.ctx;
+      this.transparentCanvas = transparentCanvas.canvas;
+      this.ctx = transparentCanvas.context;
+      this.ctx.save();
+      this.ctx.transform.apply(this.ctx, this.compositeCtx.mozCurrentTransform);
     }
 
-    executeOperatorList(operatorList, executionStartIdx, continueCallback, stepper) {
-      const argsArray = operatorList.argsArray;
-      const fnArray = operatorList.fnArray;
-      let i = executionStartIdx || 0;
-      const argsArrayLen = argsArray.length;
+    this.ctx.save();
+    resetCtxToDefault(this.ctx);
 
-      if (argsArrayLen === i) {
-        return i;
-      }
+    if (transform) {
+      this.ctx.transform.apply(this.ctx, transform);
+    }
 
-      const chunkOperations = argsArrayLen - i > EXECUTION_STEPS && typeof continueCallback === "function";
-      const endTime = chunkOperations ? Date.now() + EXECUTION_TIME : 0;
-      let steps = 0;
-      const commonObjs = this.commonObjs;
-      const objs = this.objs;
-      let fnId;
+    this.ctx.transform.apply(this.ctx, viewport.transform);
+    this.baseTransform = this.ctx.mozCurrentTransform.slice();
+    this._combinedScaleFactor = Math.hypot(this.baseTransform[0], this.baseTransform[2]);
 
-      while (true) {
-        if (stepper !== undefined && i === stepper.nextBreakPoint) {
-          stepper.breakIt(i, continueCallback);
-          return i;
-        }
+    if (this.imageLayer) {
+      this.imageLayer.beginLayout();
+    }
+  }
 
-        fnId = fnArray[i];
+  executeOperatorList(operatorList, executionStartIdx, continueCallback, stepper) {
+    const argsArray = operatorList.argsArray;
+    const fnArray = operatorList.fnArray;
+    let i = executionStartIdx || 0;
+    const argsArrayLen = argsArray.length;
 
-        if (fnId !== _util.OPS.dependency) {
-          this[fnId].apply(this, argsArray[i]);
-        } else {
-          for (const depObjId of argsArray[i]) {
-            const objsPool = depObjId.startsWith("g_") ? commonObjs : objs;
+    if (argsArrayLen === i) {
+      return i;
+    }
 
-            if (!objsPool.has(depObjId)) {
-              objsPool.get(depObjId, continueCallback);
-              return i;
-            }
-          }
-        }
+    const chunkOperations = argsArrayLen - i > EXECUTION_STEPS && typeof continueCallback === "function";
+    const endTime = chunkOperations ? Date.now() + EXECUTION_TIME : 0;
+    let steps = 0;
+    const commonObjs = this.commonObjs;
+    const objs = this.objs;
+    let fnId;
+
+    while (true) {
+      if (stepper !== undefined && i === stepper.nextBreakPoint) {
+        stepper.breakIt(i, continueCallback);
+        return i;
+      }
 
-        i++;
+      fnId = fnArray[i];
 
-        if (i === argsArrayLen) {
-          return i;
-        }
+      if (fnId !== _util.OPS.dependency) {
+        this[fnId].apply(this, argsArray[i]);
+      } else {
+        for (const depObjId of argsArray[i]) {
+          const objsPool = depObjId.startsWith("g_") ? commonObjs : objs;
 
-        if (chunkOperations && ++steps > EXECUTION_STEPS) {
-          if (Date.now() > endTime) {
-            continueCallback();
+          if (!objsPool.has(depObjId)) {
+            objsPool.get(depObjId, continueCallback);
             return i;
           }
-
-          steps = 0;
         }
       }
-    }
 
-    endDrawing() {
-      while (this.stateStack.length || this.current.activeSMask !== null) {
-        this.restore();
+      i++;
+
+      if (i === argsArrayLen) {
+        return i;
       }
 
-      this.ctx.restore();
+      if (chunkOperations && ++steps > EXECUTION_STEPS) {
+        if (Date.now() > endTime) {
+          continueCallback();
+          return i;
+        }
 
-      if (this.transparentCanvas) {
-        this.ctx = this.compositeCtx;
-        this.ctx.save();
-        this.ctx.setTransform(1, 0, 0, 1, 0, 0);
-        this.ctx.drawImage(this.transparentCanvas, 0, 0);
-        this.ctx.restore();
-        this.transparentCanvas = null;
+        steps = 0;
       }
+    }
+  }
 
-      this.cachedCanvases.clear();
-      this.cachedPatterns.clear();
+  endDrawing() {
+    while (this.stateStack.length || this.current.activeSMask !== null) {
+      this.restore();
+    }
 
-      if (this.imageLayer) {
-        this.imageLayer.endLayout();
-      }
+    this.ctx.restore();
+
+    if (this.transparentCanvas) {
+      this.ctx = this.compositeCtx;
+      this.ctx.save();
+      this.ctx.setTransform(1, 0, 0, 1, 0, 0);
+      this.ctx.drawImage(this.transparentCanvas, 0, 0);
+      this.ctx.restore();
+      this.transparentCanvas = null;
     }
 
-    _scaleImage(img, inverseTransform) {
-      const width = img.width;
-      const height = img.height;
-      let widthScale = Math.max(Math.hypot(inverseTransform[0], inverseTransform[1]), 1);
-      let heightScale = Math.max(Math.hypot(inverseTransform[2], inverseTransform[3]), 1);
-      let paintWidth = width,
-          paintHeight = height;
-      let tmpCanvasId = "prescale1";
-      let tmpCanvas, tmpCtx;
+    this.cachedCanvases.clear();
+    this.cachedCanvasPatterns.clear();
+    this.cachedPatterns.clear();
 
-      while (widthScale > 2 && paintWidth > 1 || heightScale > 2 && paintHeight > 1) {
-        let newWidth = paintWidth,
-            newHeight = paintHeight;
+    if (this.imageLayer) {
+      this.imageLayer.endLayout();
+    }
+  }
 
-        if (widthScale > 2 && paintWidth > 1) {
-          newWidth = Math.ceil(paintWidth / 2);
-          widthScale /= paintWidth / newWidth;
-        }
+  _scaleImage(img, inverseTransform) {
+    const width = img.width;
+    const height = img.height;
+    let widthScale = Math.max(Math.hypot(inverseTransform[0], inverseTransform[1]), 1);
+    let heightScale = Math.max(Math.hypot(inverseTransform[2], inverseTransform[3]), 1);
+    let paintWidth = width,
+        paintHeight = height;
+    let tmpCanvasId = "prescale1";
+    let tmpCanvas, tmpCtx;
 
-        if (heightScale > 2 && paintHeight > 1) {
-          newHeight = Math.ceil(paintHeight / 2);
-          heightScale /= paintHeight / newHeight;
-        }
+    while (widthScale > 2 && paintWidth > 1 || heightScale > 2 && paintHeight > 1) {
+      let newWidth = paintWidth,
+          newHeight = paintHeight;
 
-        tmpCanvas = this.cachedCanvases.getCanvas(tmpCanvasId, newWidth, newHeight);
-        tmpCtx = tmpCanvas.context;
-        tmpCtx.clearRect(0, 0, newWidth, newHeight);
-        tmpCtx.drawImage(img, 0, 0, paintWidth, paintHeight, 0, 0, newWidth, newHeight);
-        img = tmpCanvas.canvas;
-        paintWidth = newWidth;
-        paintHeight = newHeight;
-        tmpCanvasId = tmpCanvasId === "prescale1" ? "prescale2" : "prescale1";
+      if (widthScale > 2 && paintWidth > 1) {
+        newWidth = Math.ceil(paintWidth / 2);
+        widthScale /= paintWidth / newWidth;
       }
 
-      return {
-        img,
-        paintWidth,
-        paintHeight
-      };
+      if (heightScale > 2 && paintHeight > 1) {
+        newHeight = Math.ceil(paintHeight / 2);
+        heightScale /= paintHeight / newHeight;
+      }
+
+      tmpCanvas = this.cachedCanvases.getCanvas(tmpCanvasId, newWidth, newHeight);
+      tmpCtx = tmpCanvas.context;
+      tmpCtx.clearRect(0, 0, newWidth, newHeight);
+      tmpCtx.drawImage(img, 0, 0, paintWidth, paintHeight, 0, 0, newWidth, newHeight);
+      img = tmpCanvas.canvas;
+      paintWidth = newWidth;
+      paintHeight = newHeight;
+      tmpCanvasId = tmpCanvasId === "prescale1" ? "prescale2" : "prescale1";
     }
 
-    _createMaskCanvas(img) {
-      const ctx = this.ctx;
-      const width = img.width,
-            height = img.height;
-      const fillColor = this.current.fillColor;
-      const isPatternFill = this.current.patternFill;
-      const maskCanvas = this.cachedCanvases.getCanvas("maskCanvas", width, height);
-      const maskCtx = maskCanvas.context;
-      putBinaryImageMask(maskCtx, img);
-      const objToCanvas = ctx.mozCurrentTransform;
+    return {
+      img,
+      paintWidth,
+      paintHeight
+    };
+  }
 
-      let maskToCanvas = _util.Util.transform(objToCanvas, [1 / width, 0, 0, -1 / height, 0, 0]);
+  _createMaskCanvas(img) {
+    const ctx = this.ctx;
+    const width = img.width,
+          height = img.height;
+    const fillColor = this.current.fillColor;
+    const isPatternFill = this.current.patternFill;
+    const maskCanvas = this.cachedCanvases.getCanvas("maskCanvas", width, height);
+    const maskCtx = maskCanvas.context;
+    putBinaryImageMask(maskCtx, img);
+    const objToCanvas = ctx.mozCurrentTransform;
 
-      maskToCanvas = _util.Util.transform(maskToCanvas, [1, 0, 0, 1, 0, -height]);
+    let maskToCanvas = _util.Util.transform(objToCanvas, [1 / width, 0, 0, -1 / height, 0, 0]);
 
-      const cord1 = _util.Util.applyTransform([0, 0], maskToCanvas);
+    maskToCanvas = _util.Util.transform(maskToCanvas, [1, 0, 0, 1, 0, -height]);
 
-      const cord2 = _util.Util.applyTransform([width, height], maskToCanvas);
+    const cord1 = _util.Util.applyTransform([0, 0], maskToCanvas);
 
-      const rect = _util.Util.normalizeRect([cord1[0], cord1[1], cord2[0], cord2[1]]);
+    const cord2 = _util.Util.applyTransform([width, height], maskToCanvas);
 
-      const drawnWidth = Math.ceil(rect[2] - rect[0]);
-      const drawnHeight = Math.ceil(rect[3] - rect[1]);
-      const fillCanvas = this.cachedCanvases.getCanvas("fillCanvas", drawnWidth, drawnHeight, true);
-      const fillCtx = fillCanvas.context;
-      const offsetX = Math.min(cord1[0], cord2[0]);
-      const offsetY = Math.min(cord1[1], cord2[1]);
-      fillCtx.translate(-offsetX, -offsetY);
-      fillCtx.transform.apply(fillCtx, maskToCanvas);
+    const rect = _util.Util.normalizeRect([cord1[0], cord1[1], cord2[0], cord2[1]]);
 
-      const scaled = this._scaleImage(maskCanvas.canvas, fillCtx.mozCurrentTransformInverse);
+    const drawnWidth = Math.ceil(rect[2] - rect[0]);
+    const drawnHeight = Math.ceil(rect[3] - rect[1]);
+    const fillCanvas = this.cachedCanvases.getCanvas("fillCanvas", drawnWidth, drawnHeight, true);
+    const fillCtx = fillCanvas.context;
+    const offsetX = Math.min(cord1[0], cord2[0]);
+    const offsetY = Math.min(cord1[1], cord2[1]);
+    fillCtx.translate(-offsetX, -offsetY);
+    fillCtx.transform.apply(fillCtx, maskToCanvas);
 
-      fillCtx.drawImage(scaled.img, 0, 0, scaled.img.width, scaled.img.height, 0, 0, width, height);
-      fillCtx.globalCompositeOperation = "source-in";
+    const scaled = this._scaleImage(maskCanvas.canvas, fillCtx.mozCurrentTransformInverse);
 
-      const inverse = _util.Util.transform(fillCtx.mozCurrentTransformInverse, [1, 0, 0, 1, -offsetX, 
-offsetY]);
+    fillCtx.imageSmoothingEnabled = getImageSmoothingEnabled(fillCtx.mozCurrentTransform, img.interpolate);
+    fillCtx.drawImage(scaled.img, 0, 0, scaled.img.width, scaled.img.height, 0, 0, width, height);
+    fillCtx.globalCompositeOperation = "source-in";
 
-      fillCtx.fillStyle = isPatternFill ? fillColor.getPattern(ctx, this, inverse, false) : fillColor;
-      fillCtx.fillRect(0, 0, width, height);
-      return {
-        canvas: fillCanvas.canvas,
-        offsetX: Math.round(offsetX),
-        offsetY: Math.round(offsetY)
-      };
-    }
+    const inverse = _util.Util.transform(fillCtx.mozCurrentTransformInverse, [1, 0, 0, 1, -offsetX, 
-offsetY]);
 
-    setLineWidth(width) {
-      this.current.lineWidth = width;
-      this.ctx.lineWidth = width;
-    }
+    fillCtx.fillStyle = isPatternFill ? fillColor.getPattern(ctx, this, inverse, false) : fillColor;
+    fillCtx.fillRect(0, 0, width, height);
+    return {
+      canvas: fillCanvas.canvas,
+      offsetX: Math.round(offsetX),
+      offsetY: Math.round(offsetY)
+    };
+  }
 
-    setLineCap(style) {
-      this.ctx.lineCap = LINE_CAP_STYLES[style];
-    }
+  setLineWidth(width) {
+    this.current.lineWidth = width;
+    this.ctx.lineWidth = width;
+  }
 
-    setLineJoin(style) {
-      this.ctx.lineJoin = LINE_JOIN_STYLES[style];
-    }
+  setLineCap(style) {
+    this.ctx.lineCap = LINE_CAP_STYLES[style];
+  }
 
-    setMiterLimit(limit) {
-      this.ctx.miterLimit = limit;
-    }
+  setLineJoin(style) {
+    this.ctx.lineJoin = LINE_JOIN_STYLES[style];
+  }
 
-    setDash(dashArray, dashPhase) {
-      const ctx = this.ctx;
+  setMiterLimit(limit) {
+    this.ctx.miterLimit = limit;
+  }
 
-      if (ctx.setLineDash !== undefined) {
-        ctx.setLineDash(dashArray);
-        ctx.lineDashOffset = dashPhase;
-      }
+  setDash(dashArray, dashPhase) {
+    const ctx = this.ctx;
+
+    if (ctx.setLineDash !== undefined) {
+      ctx.setLineDash(dashArray);
+      ctx.lineDashOffset = dashPhase;
     }
+  }
 
-    setRenderingIntent(intent) {}
+  setRenderingIntent(intent) {}
 
-    setFlatness(flatness) {}
+  setFlatness(flatness) {}
 
-    setGState(states) {
-      for (let i = 0, ii = states.length; i < ii; i++) {
-        const state = states[i];
-        const key = state[0];
-        const value = state[1];
+  setGState(states) {
+    for (let i = 0, ii = states.length; i < ii; i++) {
+      const state = states[i];
+      const key = state[0];
+      const value = state[1];
 
-        switch (key) {
-          case "LW":
-            this.setLineWidth(value);
-            break;
+      switch (key) {
+        case "LW":
+          this.setLineWidth(value);
+          break;
 
-          case "LC":
-            this.setLineCap(value);
-            break;
+        case "LC":
+          this.setLineCap(value);
+          break;
 
-          case "LJ":
-            this.setLineJoin(value);
-            break;
+        case "LJ":
+          this.setLineJoin(value);
+          break;
 
-          case "ML":
-            this.setMiterLimit(value);
-            break;
+        case "ML":
+          this.setMiterLimit(value);
+          break;
 
-          case "D":
-            this.setDash(value[0], value[1]);
-            break;
+        case "D":
+          this.setDash(value[0], value[1]);
+          break;
 
-          case "RI":
-            this.setRenderingIntent(value);
-            break;
+        case "RI":
+          this.setRenderingIntent(value);
+          break;
 
-          case "FL":
-            this.setFlatness(value);
-            break;
+        case "FL":
+          this.setFlatness(value);
+          break;
 
-          case "Font":
-            this.setFont(value[0], value[1]);
-            break;
+        case "Font":
+          this.setFont(value[0], value[1]);
+          break;
 
-          case "CA":
-            this.current.strokeAlpha = state[1];
-            break;
+        case "CA":
+          this.current.strokeAlpha = state[1];
+          break;
 
-          case "ca":
-            this.current.fillAlpha = state[1];
-            this.ctx.globalAlpha = state[1];
-            break;
+        case "ca":
+          this.current.fillAlpha = state[1];
+          this.ctx.globalAlpha = state[1];
+          break;
 
-          case "BM":
-            this.ctx.globalCompositeOperation = value;
-            break;
+        case "BM":
+          this.ctx.globalCompositeOperation = value;
+          break;
 
-          case "SMask":
-            if (this.current.activeSMask) {
-              if (this.stateStack.length > 0 && this.stateStack[this.stateStack.length - 1].activeSMask === 
this.current.activeSMask) {
-                this.suspendSMaskGroup();
-              } else {
-                this.endSMaskGroup();
-              }
+        case "SMask":
+          if (this.current.activeSMask) {
+            if (this.stateStack.length > 0 && this.stateStack[this.stateStack.length - 1].activeSMask === 
this.current.activeSMask) {
+              this.suspendSMaskGroup();
+            } else {
+              this.endSMaskGroup();
             }
+          }
 
-            this.current.activeSMask = value ? this.tempSMask : null;
+          this.current.activeSMask = value ? this.tempSMask : null;
 
-            if (this.current.activeSMask) {
-              this.beginSMaskGroup();
-            }
+          if (this.current.activeSMask) {
+            this.beginSMaskGroup();
+          }
 
-            this.tempSMask = null;
-            break;
+          this.tempSMask = null;
+          break;
 
-          case "TR":
-            this.current.transferMaps = value;
-        }
+        case "TR":
+          this.current.transferMaps = value;
       }
     }
+  }
 
-    beginSMaskGroup() {
-      const activeSMask = this.current.activeSMask;
-      const drawnWidth = activeSMask.canvas.width;
-      const drawnHeight = activeSMask.canvas.height;
-      const cacheId = "smaskGroupAt" + this.groupLevel;
-      const scratchCanvas = this.cachedCanvases.getCanvas(cacheId, drawnWidth, drawnHeight, true);
-      const currentCtx = this.ctx;
-      const currentTransform = currentCtx.mozCurrentTransform;
-      this.ctx.save();
-      const groupCtx = scratchCanvas.context;
-      groupCtx.scale(1 / activeSMask.scaleX, 1 / activeSMask.scaleY);
-      groupCtx.translate(-activeSMask.offsetX, -activeSMask.offsetY);
-      groupCtx.transform.apply(groupCtx, currentTransform);
-      activeSMask.startTransformInverse = groupCtx.mozCurrentTransformInverse;
-      copyCtxState(currentCtx, groupCtx);
-      this.ctx = groupCtx;
-      this.setGState([["BM", "source-over"], ["ca", 1], ["CA", 1]]);
-      this.groupStack.push(currentCtx);
-      this.groupLevel++;
-    }
-
-    suspendSMaskGroup() {
-      const groupCtx = this.ctx;
-      this.groupLevel--;
-      this.ctx = this.groupStack.pop();
-      composeSMask(this.ctx, this.current.activeSMask, groupCtx);
-      this.ctx.restore();
-      this.ctx.save();
-      copyCtxState(groupCtx, this.ctx);
-      this.current.resumeSMaskCtx = groupCtx;
+  beginSMaskGroup() {
+    const activeSMask = this.current.activeSMask;
+    const drawnWidth = activeSMask.canvas.width;
+    const drawnHeight = activeSMask.canvas.height;
+    const cacheId = "smaskGroupAt" + this.groupLevel;
+    const scratchCanvas = this.cachedCanvases.getCanvas(cacheId, drawnWidth, drawnHeight, true);
+    const currentCtx = this.ctx;
+    const currentTransform = currentCtx.mozCurrentTransform;
+    this.ctx.save();
+    const groupCtx = scratchCanvas.context;
+    groupCtx.scale(1 / activeSMask.scaleX, 1 / activeSMask.scaleY);
+    groupCtx.translate(-activeSMask.offsetX, -activeSMask.offsetY);
+    groupCtx.transform.apply(groupCtx, currentTransform);
+    activeSMask.startTransformInverse = groupCtx.mozCurrentTransformInverse;
+    copyCtxState(currentCtx, groupCtx);
+    this.ctx = groupCtx;
+    this.setGState([["BM", "source-over"], ["ca", 1], ["CA", 1]]);
+    this.groupStack.push(currentCtx);
+    this.groupLevel++;
+  }
 
-      const deltaTransform = _util.Util.transform(this.current.activeSMask.startTransformInverse, 
groupCtx.mozCurrentTransform);
+  suspendSMaskGroup() {
+    const groupCtx = this.ctx;
+    this.groupLevel--;
+    this.ctx = this.groupStack.pop();
+    composeSMask(this.ctx, this.current.activeSMask, groupCtx);
+    this.ctx.restore();
+    this.ctx.save();
+    copyCtxState(groupCtx, this.ctx);
+    this.current.resumeSMaskCtx = groupCtx;
 
-      this.ctx.transform.apply(this.ctx, deltaTransform);
-      groupCtx.save();
-      groupCtx.setTransform(1, 0, 0, 1, 0, 0);
-      groupCtx.clearRect(0, 0, groupCtx.canvas.width, groupCtx.canvas.height);
-      groupCtx.restore();
-    }
+    const deltaTransform = _util.Util.transform(this.current.activeSMask.startTransformInverse, 
groupCtx.mozCurrentTransform);
 
-    resumeSMaskGroup() {
-      const groupCtx = this.current.resumeSMaskCtx;
-      const currentCtx = this.ctx;
-      this.ctx = groupCtx;
-      this.groupStack.push(currentCtx);
-      this.groupLevel++;
-    }
+    this.ctx.transform.apply(this.ctx, deltaTransform);
+    groupCtx.save();
+    groupCtx.setTransform(1, 0, 0, 1, 0, 0);
+    groupCtx.clearRect(0, 0, groupCtx.canvas.width, groupCtx.canvas.height);
+    groupCtx.restore();
+  }
 
-    endSMaskGroup() {
-      const groupCtx = this.ctx;
-      this.groupLevel--;
-      this.ctx = this.groupStack.pop();
-      composeSMask(this.ctx, this.current.activeSMask, groupCtx);
-      this.ctx.restore();
-      copyCtxState(groupCtx, this.ctx);
+  resumeSMaskGroup() {
+    const groupCtx = this.current.resumeSMaskCtx;
+    const currentCtx = this.ctx;
+    this.ctx = groupCtx;
+    this.groupStack.push(currentCtx);
+    this.groupLevel++;
+  }
 
-      const deltaTransform = _util.Util.transform(this.current.activeSMask.startTransformInverse, 
groupCtx.mozCurrentTransform);
+  endSMaskGroup() {
+    const groupCtx = this.ctx;
+    this.groupLevel--;
+    this.ctx = this.groupStack.pop();
+    composeSMask(this.ctx, this.current.activeSMask, groupCtx);
+    this.ctx.restore();
+    copyCtxState(groupCtx, this.ctx);
 
-      this.ctx.transform.apply(this.ctx, deltaTransform);
-    }
+    const deltaTransform = _util.Util.transform(this.current.activeSMask.startTransformInverse, 
groupCtx.mozCurrentTransform);
 
-    save() {
-      this.ctx.save();
-      const old = this.current;
-      this.stateStack.push(old);
-      this.current = old.clone();
-      this.current.resumeSMaskCtx = null;
-    }
+    this.ctx.transform.apply(this.ctx, deltaTransform);
+  }
 
-    restore() {
-      if (this.current.resumeSMaskCtx) {
-        this.resumeSMaskGroup();
-      }
+  save() {
+    this.ctx.save();
+    const old = this.current;
+    this.stateStack.push(old);
+    this.current = old.clone();
+    this.current.resumeSMaskCtx = null;
+  }
 
-      if (this.current.activeSMask !== null && (this.stateStack.length === 0 || 
this.stateStack[this.stateStack.length - 1].activeSMask !== this.current.activeSMask)) {
-        this.endSMaskGroup();
-      }
+  restore() {
+    if (this.current.resumeSMaskCtx) {
+      this.resumeSMaskGroup();
+    }
 
-      if (this.stateStack.length !== 0) {
-        this.current = this.stateStack.pop();
-        this.ctx.restore();
-        this.pendingClip = null;
-        this._cachedGetSinglePixelWidth = null;
-      } else {
-        this.current.activeSMask = null;
-      }
+    if (this.current.activeSMask !== null && (this.stateStack.length === 0 || 
this.stateStack[this.stateStack.length - 1].activeSMask !== this.current.activeSMask)) {
+      this.endSMaskGroup();
     }
 
-    transform(a, b, c, d, e, f) {
-      this.ctx.transform(a, b, c, d, e, f);
+    if (this.stateStack.length !== 0) {
+      this.current = this.stateStack.pop();
+      this.ctx.restore();
+      this.pendingClip = null;
       this._cachedGetSinglePixelWidth = null;
+    } else {
+      this.current.activeSMask = null;
     }
+  }
 
-    constructPath(ops, args) {
-      const ctx = this.ctx;
-      const current = this.current;
-      let x = current.x,
-          y = current.y;
+  transform(a, b, c, d, e, f) {
+    this.ctx.transform(a, b, c, d, e, f);
+    this._cachedGetSinglePixelWidth = null;
+  }
 
-      for (let i = 0, j = 0, ii = ops.length; i < ii; i++) {
-        switch (ops[i] | 0) {
-          case _util.OPS.rectangle:
-            x = args[j++];
-            y = args[j++];
-            const width = args[j++];
-            const height = args[j++];
-            const xw = x + width;
-            const yh = y + height;
-            ctx.moveTo(x, y);
+  constructPath(ops, args) {
+    const ctx = this.ctx;
+    const current = this.current;
+    let x = current.x,
+        y = current.y;
 
-            if (width === 0 || height === 0) {
-              ctx.lineTo(xw, yh);
-            } else {
-              ctx.lineTo(xw, y);
-              ctx.lineTo(xw, yh);
-              ctx.lineTo(x, yh);
-            }
+    for (let i = 0, j = 0, ii = ops.length; i < ii; i++) {
+      switch (ops[i] | 0) {
+        case _util.OPS.rectangle:
+          x = args[j++];
+          y = args[j++];
+          const width = args[j++];
+          const height = args[j++];
+          const xw = x + width;
+          const yh = y + height;
+          ctx.moveTo(x, y);
 
-            ctx.closePath();
-            break;
+          if (width === 0 || height === 0) {
+            ctx.lineTo(xw, yh);
+          } else {
+            ctx.lineTo(xw, y);
+            ctx.lineTo(xw, yh);
+            ctx.lineTo(x, yh);
+          }
 
-          case _util.OPS.moveTo:
-            x = args[j++];
-            y = args[j++];
-            ctx.moveTo(x, y);
-            break;
+          ctx.closePath();
+          break;
 
-          case _util.OPS.lineTo:
-            x = args[j++];
-            y = args[j++];
-            ctx.lineTo(x, y);
-            break;
+        case _util.OPS.moveTo:
+          x = args[j++];
+          y = args[j++];
+          ctx.moveTo(x, y);
+          break;
 
-          case _util.OPS.curveTo:
-            x = args[j + 4];
-            y = args[j + 5];
-            ctx.bezierCurveTo(args[j], args[j + 1], args[j + 2], args[j + 3], x, y);
-            j += 6;
-            break;
+        case _util.OPS.lineTo:
+          x = args[j++];
+          y = args[j++];
+          ctx.lineTo(x, y);
+          break;
 
-          case _util.OPS.curveTo2:
-            ctx.bezierCurveTo(x, y, args[j], args[j + 1], args[j + 2], args[j + 3]);
-            x = args[j + 2];
-            y = args[j + 3];
-            j += 4;
-            break;
+        case _util.OPS.curveTo:
+          x = args[j + 4];
+          y = args[j + 5];
+          ctx.bezierCurveTo(args[j], args[j + 1], args[j + 2], args[j + 3], x, y);
+          j += 6;
+          break;
 
-          case _util.OPS.curveTo3:
-            x = args[j + 2];
-            y = args[j + 3];
-            ctx.bezierCurveTo(args[j], args[j + 1], x, y, x, y);
-            j += 4;
-            break;
+        case _util.OPS.curveTo2:
+          ctx.bezierCurveTo(x, y, args[j], args[j + 1], args[j + 2], args[j + 3]);
+          x = args[j + 2];
+          y = args[j + 3];
+          j += 4;
+          break;
 
-          case _util.OPS.closePath:
-            ctx.closePath();
-            break;
-        }
-      }
+        case _util.OPS.curveTo3:
+          x = args[j + 2];
+          y = args[j + 3];
+          ctx.bezierCurveTo(args[j], args[j + 1], x, y, x, y);
+          j += 4;
+          break;
 
-      current.setCurrentPoint(x, y);
+        case _util.OPS.closePath:
+          ctx.closePath();
+          break;
+      }
     }
 
-    closePath() {
-      this.ctx.closePath();
-    }
+    current.setCurrentPoint(x, y);
+  }
 
-    stroke(consumePath) {
-      consumePath = typeof consumePath !== "undefined" ? consumePath : true;
-      const ctx = this.ctx;
-      const strokeColor = this.current.strokeColor;
-      ctx.globalAlpha = this.current.strokeAlpha;
+  closePath() {
+    this.ctx.closePath();
+  }
 
-      if (this.contentVisible) {
-        if (typeof strokeColor === "object" && strokeColor?.getPattern) {
-          const lineWidth = this.getSinglePixelWidth();
+  stroke(consumePath) {
+    consumePath = typeof consumePath !== "undefined" ? consumePath : true;
+    const ctx = this.ctx;
+    const strokeColor = this.current.strokeColor;
+    ctx.globalAlpha = this.current.strokeAlpha;
+
+    if (this.contentVisible) {
+      if (typeof strokeColor === "object" && strokeColor?.getPattern) {
+        const lineWidth = this.getSinglePixelWidth();
+        ctx.save();
+        ctx.strokeStyle = strokeColor.getPattern(ctx, this, ctx.mozCurrentTransformInverse);
+        ctx.lineWidth = Math.max(lineWidth, this.current.lineWidth);
+        ctx.stroke();
+        ctx.restore();
+      } else {
+        const lineWidth = this.getSinglePixelWidth();
+
+        if (lineWidth < 0 && -lineWidth >= this.current.lineWidth) {
           ctx.save();
-          ctx.strokeStyle = strokeColor.getPattern(ctx, this, ctx.mozCurrentTransformInverse);
-          ctx.lineWidth = Math.max(lineWidth, this.current.lineWidth);
+          ctx.resetTransform();
+          ctx.lineWidth = Math.round(this._combinedScaleFactor);
           ctx.stroke();
           ctx.restore();
         } else {
-          const lineWidth = this.getSinglePixelWidth();
-
-          if (lineWidth < 0 && -lineWidth >= this.current.lineWidth) {
-            ctx.save();
-            ctx.resetTransform();
-            ctx.lineWidth = Math.round(this._combinedScaleFactor);
-            ctx.stroke();
-            ctx.restore();
-          } else {
-            ctx.lineWidth = Math.max(lineWidth, this.current.lineWidth);
-            ctx.stroke();
-          }
+          ctx.lineWidth = Math.max(lineWidth, this.current.lineWidth);
+          ctx.stroke();
         }
       }
-
-      if (consumePath) {
-        this.consumePath();
-      }
-
-      ctx.globalAlpha = this.current.fillAlpha;
     }
 
-    closeStroke() {
-      this.closePath();
-      this.stroke();
+    if (consumePath) {
+      this.consumePath();
     }
 
-    fill(consumePath) {
-      consumePath = typeof consumePath !== "undefined" ? consumePath : true;
-      const ctx = this.ctx;
-      const fillColor = this.current.fillColor;
-      const isPatternFill = this.current.patternFill;
-      let needRestore = false;
+    ctx.globalAlpha = this.current.fillAlpha;
+  }
 
-      if (isPatternFill) {
-        ctx.save();
-        ctx.fillStyle = fillColor.getPattern(ctx, this, ctx.mozCurrentTransformInverse);
-        needRestore = true;
-      }
+  closeStroke() {
+    this.closePath();
+    this.stroke();
+  }
 
-      if (this.contentVisible) {
-        if (this.pendingEOFill) {
-          ctx.fill("evenodd");
-          this.pendingEOFill = false;
-        } else {
-          ctx.fill();
-        }
-      }
+  fill(consumePath) {
+    consumePath = typeof consumePath !== "undefined" ? consumePath : true;
+    const ctx = this.ctx;
+    const fillColor = this.current.fillColor;
+    const isPatternFill = this.current.patternFill;
+    let needRestore = false;
 
-      if (needRestore) {
-        ctx.restore();
-      }
+    if (isPatternFill) {
+      ctx.save();
+      ctx.fillStyle = fillColor.getPattern(ctx, this, ctx.mozCurrentTransformInverse);
+      needRestore = true;
+    }
 
-      if (consumePath) {
-        this.consumePath();
+    if (this.contentVisible) {
+      if (this.pendingEOFill) {
+        ctx.fill("evenodd");
+        this.pendingEOFill = false;
+      } else {
+        ctx.fill();
       }
     }
 
-    eoFill() {
-      this.pendingEOFill = true;
-      this.fill();
+    if (needRestore) {
+      ctx.restore();
     }
 
-    fillStroke() {
-      this.fill(false);
-      this.stroke(false);
+    if (consumePath) {
       this.consumePath();
     }
+  }
 
-    eoFillStroke() {
-      this.pendingEOFill = true;
-      this.fillStroke();
-    }
-
-    closeFillStroke() {
-      this.closePath();
-      this.fillStroke();
-    }
+  eoFill() {
+    this.pendingEOFill = true;
+    this.fill();
+  }
 
-    closeEOFillStroke() {
-      this.pendingEOFill = true;
-      this.closePath();
-      this.fillStroke();
-    }
+  fillStroke() {
+    this.fill(false);
+    this.stroke(false);
+    this.consumePath();
+  }
 
-    endPath() {
-      this.consumePath();
-    }
+  eoFillStroke() {
+    this.pendingEOFill = true;
+    this.fillStroke();
+  }
 
-    clip() {
-      this.pendingClip = NORMAL_CLIP;
-    }
+  closeFillStroke() {
+    this.closePath();
+    this.fillStroke();
+  }
 
-    eoClip() {
-      this.pendingClip = EO_CLIP;
-    }
+  closeEOFillStroke() {
+    this.pendingEOFill = true;
+    this.closePath();
+    this.fillStroke();
+  }
 
-    beginText() {
-      this.current.textMatrix = _util.IDENTITY_MATRIX;
-      this.current.textMatrixScale = 1;
-      this.current.x = this.current.lineX = 0;
-      this.current.y = this.current.lineY = 0;
-    }
+  endPath() {
+    this.consumePath();
+  }
 
-    endText() {
-      const paths = this.pendingTextPaths;
-      const ctx = this.ctx;
+  clip() {
+    this.pendingClip = NORMAL_CLIP;
+  }
 
-      if (paths === undefined) {
-        ctx.beginPath();
-        return;
-      }
+  eoClip() {
+    this.pendingClip = EO_CLIP;
+  }
 
-      ctx.save();
-      ctx.beginPath();
+  beginText() {
+    this.current.textMatrix = _util.IDENTITY_MATRIX;
+    this.current.textMatrixScale = 1;
+    this.current.x = this.current.lineX = 0;
+    this.current.y = this.current.lineY = 0;
+  }
 
-      for (let i = 0; i < paths.length; i++) {
-        const path = paths[i];
-        ctx.setTransform.apply(ctx, path.transform);
-        ctx.translate(path.x, path.y);
-        path.addToPath(ctx, path.fontSize);
-      }
+  endText() {
+    const paths = this.pendingTextPaths;
+    const ctx = this.ctx;
 
-      ctx.restore();
-      ctx.clip();
+    if (paths === undefined) {
       ctx.beginPath();
-      delete this.pendingTextPaths;
+      return;
     }
 
-    setCharSpacing(spacing) {
-      this.current.charSpacing = spacing;
-    }
+    ctx.save();
+    ctx.beginPath();
 
-    setWordSpacing(spacing) {
-      this.current.wordSpacing = spacing;
+    for (let i = 0; i < paths.length; i++) {
+      const path = paths[i];
+      ctx.setTransform.apply(ctx, path.transform);
+      ctx.translate(path.x, path.y);
+      path.addToPath(ctx, path.fontSize);
     }
 
-    setHScale(scale) {
-      this.current.textHScale = scale / 100;
-    }
+    ctx.restore();
+    ctx.clip();
+    ctx.beginPath();
+    delete this.pendingTextPaths;
+  }
 
-    setLeading(leading) {
-      this.current.leading = -leading;
-    }
+  setCharSpacing(spacing) {
+    this.current.charSpacing = spacing;
+  }
 
-    setFont(fontRefName, size) {
-      const fontObj = this.commonObjs.get(fontRefName);
-      const current = this.current;
+  setWordSpacing(spacing) {
+    this.current.wordSpacing = spacing;
+  }
 
-      if (!fontObj) {
-        throw new Error(`Can't find font for ${fontRefName}`);
-      }
+  setHScale(scale) {
+    this.current.textHScale = scale / 100;
+  }
 
-      current.fontMatrix = fontObj.fontMatrix || _util.FONT_IDENTITY_MATRIX;
+  setLeading(leading) {
+    this.current.leading = -leading;
+  }
 
-      if (current.fontMatrix[0] === 0 || current.fontMatrix[3] === 0) {
-        (0, _util.warn)("Invalid font matrix for font " + fontRefName);
-      }
+  setFont(fontRefName, size) {
+    const fontObj = this.commonObjs.get(fontRefName);
+    const current = this.current;
 
-      if (size < 0) {
-        size = -size;
-        current.fontDirection = -1;
-      } else {
-        current.fontDirection = 1;
-      }
+    if (!fontObj) {
+      throw new Error(`Can't find font for ${fontRefName}`);
+    }
 
-      this.current.font = fontObj;
-      this.current.fontSize = size;
+    current.fontMatrix = fontObj.fontMatrix || _util.FONT_IDENTITY_MATRIX;
 
-      if (fontObj.isType3Font) {
-        return;
-      }
+    if (current.fontMatrix[0] === 0 || current.fontMatrix[3] === 0) {
+      (0, _util.warn)("Invalid font matrix for font " + fontRefName);
+    }
 
-      const name = fontObj.loadedName || "sans-serif";
-      let bold = "normal";
+    if (size < 0) {
+      size = -size;
+      current.fontDirection = -1;
+    } else {
+      current.fontDirection = 1;
+    }
 
-      if (fontObj.black) {
-        bold = "900";
-      } else if (fontObj.bold) {
-        bold = "bold";
-      }
+    this.current.font = fontObj;
+    this.current.fontSize = size;
 
-      const italic = fontObj.italic ? "italic" : "normal";
-      const typeface = `"${name}", ${fontObj.fallbackName}`;
-      let browserFontSize = size;
+    if (fontObj.isType3Font) {
+      return;
+    }
 
-      if (size < MIN_FONT_SIZE) {
-        browserFontSize = MIN_FONT_SIZE;
-      } else if (size > MAX_FONT_SIZE) {
-        browserFontSize = MAX_FONT_SIZE;
-      }
+    const name = fontObj.loadedName || "sans-serif";
+    let bold = "normal";
 
-      this.current.fontSizeScale = size / browserFontSize;
-      this.ctx.font = `${italic} ${bold} ${browserFontSize}px ${typeface}`;
+    if (fontObj.black) {
+      bold = "900";
+    } else if (fontObj.bold) {
+      bold = "bold";
     }
 
-    setTextRenderingMode(mode) {
-      this.current.textRenderingMode = mode;
-    }
+    const italic = fontObj.italic ? "italic" : "normal";
+    const typeface = `"${name}", ${fontObj.fallbackName}`;
+    let browserFontSize = size;
 
-    setTextRise(rise) {
-      this.current.textRise = rise;
+    if (size < MIN_FONT_SIZE) {
+      browserFontSize = MIN_FONT_SIZE;
+    } else if (size > MAX_FONT_SIZE) {
+      browserFontSize = MAX_FONT_SIZE;
     }
 
-    moveText(x, y) {
-      this.current.x = this.current.lineX += x;
-      this.current.y = this.current.lineY += y;
-    }
+    this.current.fontSizeScale = size / browserFontSize;
+    this.ctx.font = `${italic} ${bold} ${browserFontSize}px ${typeface}`;
+  }
 
-    setLeadingMoveText(x, y) {
-      this.setLeading(-y);
-      this.moveText(x, y);
-    }
+  setTextRenderingMode(mode) {
+    this.current.textRenderingMode = mode;
+  }
 
-    setTextMatrix(a, b, c, d, e, f) {
-      this.current.textMatrix = [a, b, c, d, e, f];
-      this.current.textMatrixScale = Math.hypot(a, b);
-      this.current.x = this.current.lineX = 0;
-      this.current.y = this.current.lineY = 0;
-    }
+  setTextRise(rise) {
+    this.current.textRise = rise;
+  }
 
-    nextLine() {
-      this.moveText(0, this.current.leading);
-    }
+  moveText(x, y) {
+    this.current.x = this.current.lineX += x;
+    this.current.y = this.current.lineY += y;
+  }
 
-    paintChar(character, x, y, patternTransform, resetLineWidthToOne) {
-      const ctx = this.ctx;
-      const current = this.current;
-      const font = current.font;
-      const textRenderingMode = current.textRenderingMode;
-      const fontSize = current.fontSize / current.fontSizeScale;
-      const fillStrokeMode = textRenderingMode & _util.TextRenderingMode.FILL_STROKE_MASK;
-      const isAddToPathSet = !!(textRenderingMode & _util.TextRenderingMode.ADD_TO_PATH_FLAG);
-      const patternFill = current.patternFill && !font.missingFile;
-      let addToPath;
+  setLeadingMoveText(x, y) {
+    this.setLeading(-y);
+    this.moveText(x, y);
+  }
 
-      if (font.disableFontFace || isAddToPathSet || patternFill) {
-        addToPath = font.getPathGenerator(this.commonObjs, character);
-      }
+  setTextMatrix(a, b, c, d, e, f) {
+    this.current.textMatrix = [a, b, c, d, e, f];
+    this.current.textMatrixScale = Math.hypot(a, b);
+    this.current.x = this.current.lineX = 0;
+    this.current.y = this.current.lineY = 0;
+  }
 
-      if (font.disableFontFace || patternFill) {
-        ctx.save();
-        ctx.translate(x, y);
-        ctx.beginPath();
-        addToPath(ctx, fontSize);
+  nextLine() {
+    this.moveText(0, this.current.leading);
+  }
 
-        if (patternTransform) {
-          ctx.setTransform.apply(ctx, patternTransform);
-        }
+  paintChar(character, x, y, patternTransform, resetLineWidthToOne) {
+    const ctx = this.ctx;
+    const current = this.current;
+    const font = current.font;
+    const textRenderingMode = current.textRenderingMode;
+    const fontSize = current.fontSize / current.fontSizeScale;
+    const fillStrokeMode = textRenderingMode & _util.TextRenderingMode.FILL_STROKE_MASK;
+    const isAddToPathSet = !!(textRenderingMode & _util.TextRenderingMode.ADD_TO_PATH_FLAG);
+    const patternFill = current.patternFill && !font.missingFile;
+    let addToPath;
 
-        if (fillStrokeMode === _util.TextRenderingMode.FILL || fillStrokeMode === 
_util.TextRenderingMode.FILL_STROKE) {
-          ctx.fill();
-        }
+    if (font.disableFontFace || isAddToPathSet || patternFill) {
+      addToPath = font.getPathGenerator(this.commonObjs, character);
+    }
 
-        if (fillStrokeMode === _util.TextRenderingMode.STROKE || fillStrokeMode === 
_util.TextRenderingMode.FILL_STROKE) {
-          if (resetLineWidthToOne) {
-            ctx.resetTransform();
-            ctx.lineWidth = Math.round(this._combinedScaleFactor);
-          }
+    if (font.disableFontFace || patternFill) {
+      ctx.save();
+      ctx.translate(x, y);
+      ctx.beginPath();
+      addToPath(ctx, fontSize);
 
-          ctx.stroke();
-        }
+      if (patternTransform) {
+        ctx.setTransform.apply(ctx, patternTransform);
+      }
 
-        ctx.restore();
-      } else {
-        if (fillStrokeMode === _util.TextRenderingMode.FILL || fillStrokeMode === 
_util.TextRenderingMode.FILL_STROKE) {
-          ctx.fillText(character, x, y);
-        }
+      if (fillStrokeMode === _util.TextRenderingMode.FILL || fillStrokeMode === 
_util.TextRenderingMode.FILL_STROKE) {
+        ctx.fill();
+      }
 
-        if (fillStrokeMode === _util.TextRenderingMode.STROKE || fillStrokeMode === 
_util.TextRenderingMode.FILL_STROKE) {
-          if (resetLineWidthToOne) {
-            ctx.save();
-            ctx.moveTo(x, y);
-            ctx.resetTransform();
-            ctx.lineWidth = Math.round(this._combinedScaleFactor);
-            ctx.strokeText(character, 0, 0);
-            ctx.restore();
-          } else {
-            ctx.strokeText(character, x, y);
-          }
+      if (fillStrokeMode === _util.TextRenderingMode.STROKE || fillStrokeMode === 
_util.TextRenderingMode.FILL_STROKE) {
+        if (resetLineWidthToOne) {
+          ctx.resetTransform();
+          ctx.lineWidth = Math.round(this._combinedScaleFactor);
         }
+
+        ctx.stroke();
       }
 
-      if (isAddToPathSet) {
-        const paths = this.pendingTextPaths || (this.pendingTextPaths = []);
-        paths.push({
-          transform: ctx.mozCurrentTransform,
-          x,
-          y,
-          fontSize,
-          addToPath
-        });
+      ctx.restore();
+    } else {
+      if (fillStrokeMode === _util.TextRenderingMode.FILL || fillStrokeMode === 
_util.TextRenderingMode.FILL_STROKE) {
+        ctx.fillText(character, x, y);
       }
-    }
 
-    get isFontSubpixelAAEnabled() {
-      const {
-        context: ctx
-      } = this.cachedCanvases.getCanvas("isFontSubpixelAAEnabled", 10, 10);
-      ctx.scale(1.5, 1);
-      ctx.fillText("I", 0, 10);
-      const data = ctx.getImageData(0, 0, 10, 10).data;
-      let enabled = false;
-
-      for (let i = 3; i < data.length; i += 4) {
-        if (data[i] > 0 && data[i] < 255) {
-          enabled = true;
-          break;
+      if (fillStrokeMode === _util.TextRenderingMode.STROKE || fillStrokeMode === 
_util.TextRenderingMode.FILL_STROKE) {
+        if (resetLineWidthToOne) {
+          ctx.save();
+          ctx.moveTo(x, y);
+          ctx.resetTransform();
+          ctx.lineWidth = Math.round(this._combinedScaleFactor);
+          ctx.strokeText(character, 0, 0);
+          ctx.restore();
+        } else {
+          ctx.strokeText(character, x, y);
         }
       }
-
-      return (0, _util.shadow)(this, "isFontSubpixelAAEnabled", enabled);
     }
 
-    showText(glyphs) {
-      const current = this.current;
-      const font = current.font;
+    if (isAddToPathSet) {
+      const paths = this.pendingTextPaths || (this.pendingTextPaths = []);
+      paths.push({
+        transform: ctx.mozCurrentTransform,
+        x,
+        y,
+        fontSize,
+        addToPath
+      });
+    }
+  }
 
-      if (font.isType3Font) {
-        return this.showType3Text(glyphs);
+  get isFontSubpixelAAEnabled() {
+    const {
+      context: ctx
+    } = this.cachedCanvases.getCanvas("isFontSubpixelAAEnabled", 10, 10);
+    ctx.scale(1.5, 1);
+    ctx.fillText("I", 0, 10);
+    const data = ctx.getImageData(0, 0, 10, 10).data;
+    let enabled = false;
+
+    for (let i = 3; i < data.length; i += 4) {
+      if (data[i] > 0 && data[i] < 255) {
+        enabled = true;
+        break;
       }
+    }
 
-      const fontSize = current.fontSize;
-
-      if (fontSize === 0) {
-        return undefined;
-      }
+    return (0, _util.shadow)(this, "isFontSubpixelAAEnabled", enabled);
+  }
 
-      const ctx = this.ctx;
-      const fontSizeScale = current.fontSizeScale;
-      const charSpacing = current.charSpacing;
-      const wordSpacing = current.wordSpacing;
-      const fontDirection = current.fontDirection;
-      const textHScale = current.textHScale * fontDirection;
-      const glyphsLength = glyphs.length;
-      const vertical = font.vertical;
-      const spacingDir = vertical ? 1 : -1;
-      const defaultVMetrics = font.defaultVMetrics;
-      const widthAdvanceScale = fontSize * current.fontMatrix[0];
-      const simpleFillText = current.textRenderingMode === _util.TextRenderingMode.FILL && 
!font.disableFontFace && !current.patternFill;
-      ctx.save();
-      let patternTransform;
+  showText(glyphs) {
+    const current = this.current;
+    const font = current.font;
 
-      if (current.patternFill) {
-        ctx.save();
-        const pattern = current.fillColor.getPattern(ctx, this, ctx.mozCurrentTransformInverse);
-        patternTransform = ctx.mozCurrentTransform;
-        ctx.restore();
-        ctx.fillStyle = pattern;
-      }
+    if (font.isType3Font) {
+      return this.showType3Text(glyphs);
+    }
 
-      ctx.transform.apply(ctx, current.textMatrix);
-      ctx.translate(current.x, current.y + current.textRise);
+    const fontSize = current.fontSize;
 
-      if (fontDirection > 0) {
-        ctx.scale(textHScale, -1);
-      } else {
-        ctx.scale(textHScale, 1);
-      }
+    if (fontSize === 0) {
+      return undefined;
+    }
 
-      let lineWidth = current.lineWidth;
-      let resetLineWidthToOne = false;
-      const scale = current.textMatrixScale;
+    const ctx = this.ctx;
+    const fontSizeScale = current.fontSizeScale;
+    const charSpacing = current.charSpacing;
+    const wordSpacing = current.wordSpacing;
+    const fontDirection = current.fontDirection;
+    const textHScale = current.textHScale * fontDirection;
+    const glyphsLength = glyphs.length;
+    const vertical = font.vertical;
+    const spacingDir = vertical ? 1 : -1;
+    const defaultVMetrics = font.defaultVMetrics;
+    const widthAdvanceScale = fontSize * current.fontMatrix[0];
+    const simpleFillText = current.textRenderingMode === _util.TextRenderingMode.FILL && 
!font.disableFontFace && !current.patternFill;
+    ctx.save();
+    let patternTransform;
+
+    if (current.patternFill) {
+      ctx.save();
+      const pattern = current.fillColor.getPattern(ctx, this, ctx.mozCurrentTransformInverse);
+      patternTransform = ctx.mozCurrentTransform;
+      ctx.restore();
+      ctx.fillStyle = pattern;
+    }
 
-      if (scale === 0 || lineWidth === 0) {
-        const fillStrokeMode = current.textRenderingMode & _util.TextRenderingMode.FILL_STROKE_MASK;
+    ctx.transform.apply(ctx, current.textMatrix);
+    ctx.translate(current.x, current.y + current.textRise);
 
-        if (fillStrokeMode === _util.TextRenderingMode.STROKE || fillStrokeMode === 
_util.TextRenderingMode.FILL_STROKE) {
-          this._cachedGetSinglePixelWidth = null;
-          lineWidth = this.getSinglePixelWidth();
-          resetLineWidthToOne = lineWidth < 0;
-        }
-      } else {
-        lineWidth /= scale;
-      }
+    if (fontDirection > 0) {
+      ctx.scale(textHScale, -1);
+    } else {
+      ctx.scale(textHScale, 1);
+    }
 
-      if (fontSizeScale !== 1.0) {
-        ctx.scale(fontSizeScale, fontSizeScale);
-        lineWidth /= fontSizeScale;
-      }
+    let lineWidth = current.lineWidth;
+    let resetLineWidthToOne = false;
+    const scale = current.textMatrixScale;
 
-      ctx.lineWidth = lineWidth;
-      let x = 0,
-          i;
+    if (scale === 0 || lineWidth === 0) {
+      const fillStrokeMode = current.textRenderingMode & _util.TextRenderingMode.FILL_STROKE_MASK;
 
-      for (i = 0; i < glyphsLength; ++i) {
-        const glyph = glyphs[i];
+      if (fillStrokeMode === _util.TextRenderingMode.STROKE || fillStrokeMode === 
_util.TextRenderingMode.FILL_STROKE) {
+        this._cachedGetSinglePixelWidth = null;
+        lineWidth = this.getSinglePixelWidth();
+        resetLineWidthToOne = lineWidth < 0;
+      }
+    } else {
+      lineWidth /= scale;
+    }
 
-        if ((0, _util.isNum)(glyph)) {
-          x += spacingDir * glyph * fontSize / 1000;
-          continue;
-        }
+    if (fontSizeScale !== 1.0) {
+      ctx.scale(fontSizeScale, fontSizeScale);
+      lineWidth /= fontSizeScale;
+    }
 
-        let restoreNeeded = false;
-        const spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing;
-        const character = glyph.fontChar;
-        const accent = glyph.accent;
-        let scaledX, scaledY;
-        let width = glyph.width;
+    ctx.lineWidth = lineWidth;
+    let x = 0,
+        i;
 
-        if (vertical) {
-          const vmetric = glyph.vmetric || defaultVMetrics;
-          const vx = -(glyph.vmetric ? vmetric[1] : width * 0.5) * widthAdvanceScale;
-          const vy = vmetric[2] * widthAdvanceScale;
-          width = vmetric ? -vmetric[0] : width;
-          scaledX = vx / fontSizeScale;
-          scaledY = (x + vy) / fontSizeScale;
-        } else {
-          scaledX = x / fontSizeScale;
-          scaledY = 0;
-        }
+    for (i = 0; i < glyphsLength; ++i) {
+      const glyph = glyphs[i];
 
-        if (font.remeasure && width > 0) {
-          const measuredWidth = ctx.measureText(character).width * 1000 / fontSize * fontSizeScale;
-
-          if (width < measuredWidth && this.isFontSubpixelAAEnabled) {
-            const characterScaleX = width / measuredWidth;
-            restoreNeeded = true;
-            ctx.save();
-            ctx.scale(characterScaleX, 1);
-            scaledX /= characterScaleX;
-          } else if (width !== measuredWidth) {
-            scaledX += (width - measuredWidth) / 2000 * fontSize / fontSizeScale;
-          }
-        }
+      if ((0, _util.isNum)(glyph)) {
+        x += spacingDir * glyph * fontSize / 1000;
+        continue;
+      }
 
-        if (this.contentVisible && (glyph.isInFont || font.missingFile)) {
-          if (simpleFillText && !accent) {
-            ctx.fillText(character, scaledX, scaledY);
-          } else {
-            this.paintChar(character, scaledX, scaledY, patternTransform, resetLineWidthToOne);
+      let restoreNeeded = false;
+      const spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing;
+      const character = glyph.fontChar;
+      const accent = glyph.accent;
+      let scaledX, scaledY;
+      let width = glyph.width;
 
-            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);
-            }
-          }
-        }
+      if (vertical) {
+        const vmetric = glyph.vmetric || defaultVMetrics;
+        const vx = -(glyph.vmetric ? vmetric[1] : width * 0.5) * widthAdvanceScale;
+        const vy = vmetric[2] * widthAdvanceScale;
+        width = vmetric ? -vmetric[0] : width;
+        scaledX = vx / fontSizeScale;
+        scaledY = (x + vy) / fontSizeScale;
+      } else {
+        scaledX = x / fontSizeScale;
+        scaledY = 0;
+      }
 
-        let charWidth;
+      if (font.remeasure && width > 0) {
+        const measuredWidth = ctx.measureText(character).width * 1000 / fontSize * fontSizeScale;
 
-        if (vertical) {
-          charWidth = width * widthAdvanceScale - spacing * fontDirection;
-        } else {
-          charWidth = width * widthAdvanceScale + spacing * fontDirection;
+        if (width < measuredWidth && this.isFontSubpixelAAEnabled) {
+          const characterScaleX = width / measuredWidth;
+          restoreNeeded = true;
+          ctx.save();
+          ctx.scale(characterScaleX, 1);
+          scaledX /= characterScaleX;
+        } else if (width !== measuredWidth) {
+          scaledX += (width - measuredWidth) / 2000 * fontSize / fontSizeScale;
         }
+      }
 
-        x += charWidth;
+      if (this.contentVisible && (glyph.isInFont || font.missingFile)) {
+        if (simpleFillText && !accent) {
+          ctx.fillText(character, scaledX, scaledY);
+        } else {
+          this.paintChar(character, scaledX, scaledY, patternTransform, resetLineWidthToOne);
 
-        if (restoreNeeded) {
-          ctx.restore();
+          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);
+          }
         }
       }
 
+      let charWidth;
+
       if (vertical) {
-        current.y -= x;
+        charWidth = width * widthAdvanceScale - spacing * fontDirection;
       } else {
-        current.x += x * textHScale;
+        charWidth = width * widthAdvanceScale + spacing * fontDirection;
       }
 
-      ctx.restore();
-      return undefined;
-    }
-
-    showType3Text(glyphs) {
-      const ctx = this.ctx;
-      const current = this.current;
-      const font = current.font;
-      const fontSize = current.fontSize;
-      const fontDirection = current.fontDirection;
-      const spacingDir = font.vertical ? 1 : -1;
-      const charSpacing = current.charSpacing;
-      const wordSpacing = current.wordSpacing;
-      const textHScale = current.textHScale * fontDirection;
-      const fontMatrix = current.fontMatrix || _util.FONT_IDENTITY_MATRIX;
-      const glyphsLength = glyphs.length;
-      const isTextInvisible = current.textRenderingMode === _util.TextRenderingMode.INVISIBLE;
-      let i, glyph, width, spacingLength;
+      x += charWidth;
 
-      if (isTextInvisible || fontSize === 0) {
-        return;
+      if (restoreNeeded) {
+        ctx.restore();
       }
+    }
 
-      this._cachedGetSinglePixelWidth = null;
-      ctx.save();
-      ctx.transform.apply(ctx, current.textMatrix);
-      ctx.translate(current.x, current.y);
-      ctx.scale(textHScale, fontDirection);
+    if (vertical) {
+      current.y -= x;
+    } else {
+      current.x += x * textHScale;
+    }
 
-      for (i = 0; i < glyphsLength; ++i) {
-        glyph = glyphs[i];
+    ctx.restore();
+    return undefined;
+  }
+
+  showType3Text(glyphs) {
+    const ctx = this.ctx;
+    const current = this.current;
+    const font = current.font;
+    const fontSize = current.fontSize;
+    const fontDirection = current.fontDirection;
+    const spacingDir = font.vertical ? 1 : -1;
+    const charSpacing = current.charSpacing;
+    const wordSpacing = current.wordSpacing;
+    const textHScale = current.textHScale * fontDirection;
+    const fontMatrix = current.fontMatrix || _util.FONT_IDENTITY_MATRIX;
+    const glyphsLength = glyphs.length;
+    const isTextInvisible = current.textRenderingMode === _util.TextRenderingMode.INVISIBLE;
+    let i, glyph, width, spacingLength;
+
+    if (isTextInvisible || fontSize === 0) {
+      return;
+    }
 
-        if ((0, _util.isNum)(glyph)) {
-          spacingLength = spacingDir * glyph * fontSize / 1000;
-          this.ctx.translate(spacingLength, 0);
-          current.x += spacingLength * textHScale;
-          continue;
-        }
+    this._cachedGetSinglePixelWidth = null;
+    ctx.save();
+    ctx.transform.apply(ctx, current.textMatrix);
+    ctx.translate(current.x, current.y);
+    ctx.scale(textHScale, fontDirection);
 
-        const spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing;
-        const operatorList = font.charProcOperatorList[glyph.operatorListId];
+    for (i = 0; i < glyphsLength; ++i) {
+      glyph = glyphs[i];
 
-        if (!operatorList) {
-          (0, _util.warn)(`Type3 character "${glyph.operatorListId}" is not available.`);
-          continue;
-        }
+      if ((0, _util.isNum)(glyph)) {
+        spacingLength = spacingDir * glyph * fontSize / 1000;
+        this.ctx.translate(spacingLength, 0);
+        current.x += spacingLength * textHScale;
+        continue;
+      }
 
-        if (this.contentVisible) {
-          this.processingType3 = glyph;
-          this.save();
-          ctx.scale(fontSize, fontSize);
-          ctx.transform.apply(ctx, fontMatrix);
-          this.executeOperatorList(operatorList);
-          this.restore();
-        }
+      const spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing;
+      const operatorList = font.charProcOperatorList[glyph.operatorListId];
 
-        const transformed = _util.Util.applyTransform([glyph.width, 0], fontMatrix);
+      if (!operatorList) {
+        (0, _util.warn)(`Type3 character "${glyph.operatorListId}" is not available.`);
+        continue;
+      }
 
-        width = transformed[0] * fontSize + spacing;
-        ctx.translate(width, 0);
-        current.x += width * textHScale;
+      if (this.contentVisible) {
+        this.processingType3 = glyph;
+        this.save();
+        ctx.scale(fontSize, fontSize);
+        ctx.transform.apply(ctx, fontMatrix);
+        this.executeOperatorList(operatorList);
+        this.restore();
       }
 
-      ctx.restore();
-      this.processingType3 = null;
+      const transformed = _util.Util.applyTransform([glyph.width, 0], fontMatrix);
+
+      width = transformed[0] * fontSize + spacing;
+      ctx.translate(width, 0);
+      current.x += width * textHScale;
     }
 
-    setCharWidth(xWidth, yWidth) {}
+    ctx.restore();
+    this.processingType3 = null;
+  }
 
-    setCharWidthAndBounds(xWidth, yWidth, llx, lly, urx, ury) {
-      this.ctx.rect(llx, lly, urx - llx, ury - lly);
-      this.clip();
-      this.endPath();
-    }
+  setCharWidth(xWidth, yWidth) {}
 
-    getColorN_Pattern(IR) {
-      let pattern;
+  setCharWidthAndBounds(xWidth, yWidth, llx, lly, urx, ury) {
+    this.ctx.rect(llx, lly, urx - llx, ury - lly);
+    this.clip();
+    this.endPath();
+  }
 
-      if (IR[0] === "TilingPattern") {
-        const color = IR[1];
-        const baseTransform = this.baseTransform || this.ctx.mozCurrentTransform.slice();
-        const canvasGraphicsFactory = {
-          createCanvasGraphics: ctx => {
-            return new CanvasGraphics(ctx, this.commonObjs, this.objs, this.canvasFactory);
-          }
-        };
-        pattern = new _pattern_helper.TilingPattern(IR, color, this.ctx, canvasGraphicsFactory, 
baseTransform);
-      } else {
-        pattern = this._getPattern(IR[1]);
-      }
+  getColorN_Pattern(IR) {
+    let pattern;
 
-      return pattern;
+    if (IR[0] === "TilingPattern") {
+      const color = IR[1];
+      const baseTransform = this.baseTransform || this.ctx.mozCurrentTransform.slice();
+      const canvasGraphicsFactory = {
+        createCanvasGraphics: ctx => {
+          return new CanvasGraphics(ctx, this.commonObjs, this.objs, this.canvasFactory);
+        }
+      };
+      pattern = new _pattern_helper.TilingPattern(IR, color, this.ctx, canvasGraphicsFactory, baseTransform);
+    } else {
+      pattern = this._getPattern(IR[1], IR[2]);
     }
 
-    setStrokeColorN() {
-      this.current.strokeColor = this.getColorN_Pattern(arguments);
+    return pattern;
+  }
+
+  setStrokeColorN() {
+    this.current.strokeColor = this.getColorN_Pattern(arguments);
+  }
+
+  setFillColorN() {
+    this.current.fillColor = this.getColorN_Pattern(arguments);
+    this.current.patternFill = true;
+  }
+
+  setStrokeRGBColor(r, g, b) {
+    const color = _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);
+
+    this.ctx.fillStyle = color;
+    this.current.fillColor = color;
+    this.current.patternFill = false;
+  }
+
+  _getPattern(objId, matrix = null) {
+    let pattern;
+
+    if (this.cachedPatterns.has(objId)) {
+      pattern = this.cachedPatterns.get(objId);
+    } else {
+      pattern = (0, _pattern_helper.getShadingPattern)(this.objs.get(objId), this.cachedCanvasPatterns);
+      this.cachedPatterns.set(objId, pattern);
     }
 
-    setFillColorN() {
-      this.current.fillColor = this.getColorN_Pattern(arguments);
-      this.current.patternFill = true;
+    if (matrix) {
+      pattern.matrix = matrix;
     }
 
-    setStrokeRGBColor(r, g, b) {
-      const color = _util.Util.makeHexColor(r, g, b);
+    return pattern;
+  }
 
-      this.ctx.strokeStyle = color;
-      this.current.strokeColor = color;
+  shadingFill(objId) {
+    if (!this.contentVisible) {
+      return;
     }
 
-    setFillRGBColor(r, g, b) {
-      const color = _util.Util.makeHexColor(r, g, b);
+    const ctx = this.ctx;
+    this.save();
 
-      this.ctx.fillStyle = color;
-      this.current.fillColor = color;
-      this.current.patternFill = false;
-    }
+    const pattern = this._getPattern(objId);
 
-    _getPattern(objId) {
-      if (this.cachedPatterns.has(objId)) {
-        return this.cachedPatterns.get(objId);
-      }
+    ctx.fillStyle = pattern.getPattern(ctx, this, ctx.mozCurrentTransformInverse, true);
+    const inv = ctx.mozCurrentTransformInverse;
 
-      const pattern = (0, _pattern_helper.getShadingPattern)(this.objs.get(objId));
-      this.cachedPatterns.set(objId, pattern);
-      return pattern;
-    }
+    if (inv) {
+      const canvas = ctx.canvas;
+      const width = canvas.width;
+      const height = canvas.height;
 
-    shadingFill(objId) {
-      if (!this.contentVisible) {
-        return;
-      }
+      const bl = _util.Util.applyTransform([0, 0], inv);
 
-      const ctx = this.ctx;
-      this.save();
+      const br = _util.Util.applyTransform([0, height], inv);
 
-      const pattern = this._getPattern(objId);
+      const ul = _util.Util.applyTransform([width, 0], inv);
 
-      ctx.fillStyle = pattern.getPattern(ctx, this, ctx.mozCurrentTransformInverse, true);
-      const inv = ctx.mozCurrentTransformInverse;
+      const ur = _util.Util.applyTransform([width, height], inv);
 
-      if (inv) {
-        const canvas = ctx.canvas;
-        const width = canvas.width;
-        const height = canvas.height;
+      const x0 = Math.min(bl[0], br[0], ul[0], ur[0]);
+      const y0 = Math.min(bl[1], br[1], ul[1], ur[1]);
+      const x1 = Math.max(bl[0], br[0], ul[0], ur[0]);
+      const y1 = Math.max(bl[1], br[1], ul[1], ur[1]);
+      this.ctx.fillRect(x0, y0, x1 - x0, y1 - y0);
+    } else {
+      this.ctx.fillRect(-1e10, -1e10, 2e10, 2e10);
+    }
 
-        const bl = _util.Util.applyTransform([0, 0], inv);
+    this.restore();
+  }
 
-        const br = _util.Util.applyTransform([0, height], inv);
+  beginInlineImage() {
+    (0, _util.unreachable)("Should not call beginInlineImage");
+  }
 
-        const ul = _util.Util.applyTransform([width, 0], inv);
+  beginImageData() {
+    (0, _util.unreachable)("Should not call beginImageData");
+  }
 
-        const ur = _util.Util.applyTransform([width, height], inv);
+  paintFormXObjectBegin(matrix, bbox) {
+    if (!this.contentVisible) {
+      return;
+    }
 
-        const x0 = Math.min(bl[0], br[0], ul[0], ur[0]);
-        const y0 = Math.min(bl[1], br[1], ul[1], ur[1]);
-        const x1 = Math.max(bl[0], br[0], ul[0], ur[0]);
-        const y1 = Math.max(bl[1], br[1], ul[1], ur[1]);
-        this.ctx.fillRect(x0, y0, x1 - x0, y1 - y0);
-      } else {
-        this.ctx.fillRect(-1e10, -1e10, 2e10, 2e10);
-      }
+    this.save();
+    this.baseTransformStack.push(this.baseTransform);
 
-      this.restore();
+    if (Array.isArray(matrix) && matrix.length === 6) {
+      this.transform.apply(this, matrix);
     }
 
-    beginInlineImage() {
-      (0, _util.unreachable)("Should not call beginInlineImage");
+    this.baseTransform = this.ctx.mozCurrentTransform;
+
+    if (bbox) {
+      const width = bbox[2] - bbox[0];
+      const height = bbox[3] - bbox[1];
+      this.ctx.rect(bbox[0], bbox[1], width, height);
+      this.clip();
+      this.endPath();
     }
+  }
 
-    beginImageData() {
-      (0, _util.unreachable)("Should not call beginImageData");
+  paintFormXObjectEnd() {
+    if (!this.contentVisible) {
+      return;
     }
 
-    paintFormXObjectBegin(matrix, bbox) {
-      if (!this.contentVisible) {
-        return;
-      }
+    this.restore();
+    this.baseTransform = this.baseTransformStack.pop();
+  }
 
-      this.save();
-      this.baseTransformStack.push(this.baseTransform);
+  beginGroup(group) {
+    if (!this.contentVisible) {
+      return;
+    }
 
-      if (Array.isArray(matrix) && matrix.length === 6) {
-        this.transform.apply(this, matrix);
-      }
+    this.save();
+    const currentCtx = this.ctx;
 
-      this.baseTransform = this.ctx.mozCurrentTransform;
+    if (!group.isolated) {
+      (0, _util.info)("TODO: Support non-isolated groups.");
+    }
 
-      if (bbox) {
-        const width = bbox[2] - bbox[0];
-        const height = bbox[3] - bbox[1];
-        this.ctx.rect(bbox[0], bbox[1], width, height);
-        this.clip();
-        this.endPath();
-      }
+    if (group.knockout) {
+      (0, _util.warn)("Knockout groups not supported.");
     }
 
-    paintFormXObjectEnd() {
-      if (!this.contentVisible) {
-        return;
-      }
+    const currentTransform = currentCtx.mozCurrentTransform;
 
-      this.restore();
-      this.baseTransform = this.baseTransformStack.pop();
+    if (group.matrix) {
+      currentCtx.transform.apply(currentCtx, group.matrix);
     }
 
-    beginGroup(group) {
-      if (!this.contentVisible) {
-        return;
-      }
+    if (!group.bbox) {
+      throw new Error("Bounding box is required.");
+    }
 
-      this.save();
-      const currentCtx = this.ctx;
+    let bounds = _util.Util.getAxialAlignedBoundingBox(group.bbox, currentCtx.mozCurrentTransform);
 
-      if (!group.isolated) {
-        (0, _util.info)("TODO: Support non-isolated groups.");
-      }
+    const canvasBounds = [0, 0, currentCtx.canvas.width, currentCtx.canvas.height];
+    bounds = _util.Util.intersect(bounds, canvasBounds) || [0, 0, 0, 0];
+    const offsetX = Math.floor(bounds[0]);
+    const offsetY = Math.floor(bounds[1]);
+    let drawnWidth = Math.max(Math.ceil(bounds[2]) - offsetX, 1);
+    let drawnHeight = Math.max(Math.ceil(bounds[3]) - offsetY, 1);
+    let scaleX = 1,
+        scaleY = 1;
 
-      if (group.knockout) {
-        (0, _util.warn)("Knockout groups not supported.");
-      }
+    if (drawnWidth > MAX_GROUP_SIZE) {
+      scaleX = drawnWidth / MAX_GROUP_SIZE;
+      drawnWidth = MAX_GROUP_SIZE;
+    }
 
-      const currentTransform = currentCtx.mozCurrentTransform;
+    if (drawnHeight > MAX_GROUP_SIZE) {
+      scaleY = drawnHeight / MAX_GROUP_SIZE;
+      drawnHeight = MAX_GROUP_SIZE;
+    }
 
-      if (group.matrix) {
-        currentCtx.transform.apply(currentCtx, group.matrix);
-      }
+    let cacheId = "groupAt" + this.groupLevel;
 
-      if (!group.bbox) {
-        throw new Error("Bounding box is required.");
-      }
+    if (group.smask) {
+      cacheId += "_smask_" + this.smaskCounter++ % 2;
+    }
 
-      let bounds = _util.Util.getAxialAlignedBoundingBox(group.bbox, currentCtx.mozCurrentTransform);
+    const scratchCanvas = this.cachedCanvases.getCanvas(cacheId, drawnWidth, drawnHeight, true);
+    const groupCtx = scratchCanvas.context;
+    groupCtx.scale(1 / scaleX, 1 / scaleY);
+    groupCtx.translate(-offsetX, -offsetY);
+    groupCtx.transform.apply(groupCtx, currentTransform);
 
-      const canvasBounds = [0, 0, currentCtx.canvas.width, currentCtx.canvas.height];
-      bounds = _util.Util.intersect(bounds, canvasBounds) || [0, 0, 0, 0];
-      const offsetX = Math.floor(bounds[0]);
-      const offsetY = Math.floor(bounds[1]);
-      let drawnWidth = Math.max(Math.ceil(bounds[2]) - offsetX, 1);
-      let drawnHeight = Math.max(Math.ceil(bounds[3]) - offsetY, 1);
-      let scaleX = 1,
-          scaleY = 1;
+    if (group.smask) {
+      this.smaskStack.push({
+        canvas: scratchCanvas.canvas,
+        context: groupCtx,
+        offsetX,
+        offsetY,
+        scaleX,
+        scaleY,
+        subtype: group.smask.subtype,
+        backdrop: group.smask.backdrop,
+        transferMap: group.smask.transferMap || null,
+        startTransformInverse: null
+      });
+    } else {
+      currentCtx.setTransform(1, 0, 0, 1, 0, 0);
+      currentCtx.translate(offsetX, offsetY);
+      currentCtx.scale(scaleX, scaleY);
+    }
 
-      if (drawnWidth > MAX_GROUP_SIZE) {
-        scaleX = drawnWidth / MAX_GROUP_SIZE;
-        drawnWidth = MAX_GROUP_SIZE;
-      }
+    copyCtxState(currentCtx, groupCtx);
+    this.ctx = groupCtx;
+    this.setGState([["BM", "source-over"], ["ca", 1], ["CA", 1]]);
+    this.groupStack.push(currentCtx);
+    this.groupLevel++;
+    this.current.activeSMask = null;
+  }
 
-      if (drawnHeight > MAX_GROUP_SIZE) {
-        scaleY = drawnHeight / MAX_GROUP_SIZE;
-        drawnHeight = MAX_GROUP_SIZE;
-      }
+  endGroup(group) {
+    if (!this.contentVisible) {
+      return;
+    }
 
-      let cacheId = "groupAt" + this.groupLevel;
+    this.groupLevel--;
+    const groupCtx = this.ctx;
+    this.ctx = this.groupStack.pop();
+    this.ctx.imageSmoothingEnabled = false;
 
-      if (group.smask) {
-        cacheId += "_smask_" + this.smaskCounter++ % 2;
-      }
+    if (group.smask) {
+      this.tempSMask = this.smaskStack.pop();
+    } else {
+      this.ctx.drawImage(groupCtx.canvas, 0, 0);
+    }
 
-      const scratchCanvas = this.cachedCanvases.getCanvas(cacheId, drawnWidth, drawnHeight, true);
-      const groupCtx = scratchCanvas.context;
-      groupCtx.scale(1 / scaleX, 1 / scaleY);
-      groupCtx.translate(-offsetX, -offsetY);
-      groupCtx.transform.apply(groupCtx, currentTransform);
+    this.restore();
+  }
 
-      if (group.smask) {
-        this.smaskStack.push({
-          canvas: scratchCanvas.canvas,
-          context: groupCtx,
-          offsetX,
-          offsetY,
-          scaleX,
-          scaleY,
-          subtype: group.smask.subtype,
-          backdrop: group.smask.backdrop,
-          transferMap: group.smask.transferMap || null,
-          startTransformInverse: null
-        });
-      } else {
-        currentCtx.setTransform(1, 0, 0, 1, 0, 0);
-        currentCtx.translate(offsetX, offsetY);
-        currentCtx.scale(scaleX, scaleY);
-      }
+  beginAnnotations() {
+    this.save();
 
-      copyCtxState(currentCtx, groupCtx);
-      this.ctx = groupCtx;
-      this.setGState([["BM", "source-over"], ["ca", 1], ["CA", 1]]);
-      this.groupStack.push(currentCtx);
-      this.groupLevel++;
-      this.current.activeSMask = null;
+    if (this.baseTransform) {
+      this.ctx.setTransform.apply(this.ctx, this.baseTransform);
     }
+  }
 
-    endGroup(group) {
-      if (!this.contentVisible) {
-        return;
-      }
+  endAnnotations() {
+    this.restore();
+  }
 
-      this.groupLevel--;
-      const groupCtx = this.ctx;
-      this.ctx = this.groupStack.pop();
+  beginAnnotation(id, rect, transform, matrix) {
+    this.save();
+    resetCtxToDefault(this.ctx);
+    this.current = new CanvasExtraState();
 
-      if (this.ctx.imageSmoothingEnabled !== undefined) {
-        this.ctx.imageSmoothingEnabled = false;
-      } else {
-        this.ctx.mozImageSmoothingEnabled = false;
-      }
+    if (Array.isArray(rect) && rect.length === 4) {
+      const width = rect[2] - rect[0];
+      const height = rect[3] - rect[1];
+      this.ctx.rect(rect[0], rect[1], width, height);
+      this.clip();
+      this.endPath();
+    }
 
-      if (group.smask) {
-        this.tempSMask = this.smaskStack.pop();
-      } else {
-        this.ctx.drawImage(groupCtx.canvas, 0, 0);
-      }
+    this.transform.apply(this, transform);
+    this.transform.apply(this, matrix);
+  }
 
-      this.restore();
+  endAnnotation() {
+    this.restore();
+  }
+
+  paintImageMaskXObject(img) {
+    if (!this.contentVisible) {
+      return;
     }
 
-    beginAnnotations() {
-      this.save();
+    const ctx = this.ctx;
+    const width = img.width,
+          height = img.height;
+    const glyph = this.processingType3;
 
-      if (this.baseTransform) {
-        this.ctx.setTransform.apply(this.ctx, this.baseTransform);
+    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;
       }
     }
 
-    endAnnotations() {
-      this.restore();
+    if (glyph?.compiled) {
+      glyph.compiled(ctx);
+      return;
     }
 
-    beginAnnotation(id, rect, transform, matrix) {
-      this.save();
-      resetCtxToDefault(this.ctx);
-      this.current = new CanvasExtraState();
-
-      if (Array.isArray(rect) && rect.length === 4) {
-        const width = rect[2] - rect[0];
-        const height = rect[3] - rect[1];
-        this.ctx.rect(rect[0], rect[1], width, height);
-        this.clip();
-        this.endPath();
-      }
+    const mask = this._createMaskCanvas(img);
 
-      this.transform.apply(this, transform);
-      this.transform.apply(this, matrix);
-    }
+    const maskCanvas = mask.canvas;
+    ctx.save();
+    ctx.setTransform(1, 0, 0, 1, 0, 0);
+    ctx.drawImage(maskCanvas, mask.offsetX, mask.offsetY);
+    ctx.restore();
+  }
 
-    endAnnotation() {
-      this.restore();
+  paintImageMaskXObjectRepeat(imgData, scaleX, skewX = 0, skewY = 0, scaleY, positions) {
+    if (!this.contentVisible) {
+      return;
     }
 
-    paintImageMaskXObject(img) {
-      if (!this.contentVisible) {
-        return;
-      }
+    const ctx = this.ctx;
+    ctx.save();
+    const currentTransform = ctx.mozCurrentTransform;
+    ctx.transform(scaleX, skewX, skewY, scaleY, 0, 0);
 
-      const ctx = this.ctx;
-      const width = img.width,
-            height = img.height;
-      const glyph = this.processingType3;
+    const mask = this._createMaskCanvas(imgData);
 
-      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;
-        }
-      }
+    ctx.setTransform(1, 0, 0, 1, 0, 0);
 
-      if (glyph?.compiled) {
-        glyph.compiled(ctx);
-        return;
-      }
+    for (let i = 0, ii = positions.length; i < ii; i += 2) {
+      const trans = _util.Util.transform(currentTransform, [scaleX, skewX, skewY, scaleY, positions[i], 
positions[i + 1]]);
 
-      const mask = this._createMaskCanvas(img);
+      const [x, y] = _util.Util.applyTransform([0, 0], trans);
 
-      const maskCanvas = mask.canvas;
-      ctx.save();
-      ctx.setTransform(1, 0, 0, 1, 0, 0);
-      ctx.drawImage(maskCanvas, mask.offsetX, mask.offsetY);
-      ctx.restore();
+      ctx.drawImage(mask.canvas, x, y);
     }
 
-    paintImageMaskXObjectRepeat(imgData, scaleX, skewX = 0, skewY = 0, scaleY, positions) {
-      if (!this.contentVisible) {
-        return;
-      }
+    ctx.restore();
+  }
 
-      const ctx = this.ctx;
-      ctx.save();
-      const currentTransform = ctx.mozCurrentTransform;
-      ctx.transform(scaleX, skewX, skewY, scaleY, 0, 0);
+  paintImageMaskXObjectGroup(images) {
+    if (!this.contentVisible) {
+      return;
+    }
 
-      const mask = this._createMaskCanvas(imgData);
+    const ctx = this.ctx;
+    const fillColor = this.current.fillColor;
+    const isPatternFill = this.current.patternFill;
 
-      ctx.setTransform(1, 0, 0, 1, 0, 0);
+    for (let i = 0, ii = images.length; i < ii; i++) {
+      const image = images[i];
+      const width = image.width,
+            height = image.height;
+      const maskCanvas = this.cachedCanvases.getCanvas("maskCanvas", width, height);
+      const maskCtx = maskCanvas.context;
+      maskCtx.save();
+      putBinaryImageMask(maskCtx, image);
+      maskCtx.globalCompositeOperation = "source-in";
+      maskCtx.fillStyle = isPatternFill ? fillColor.getPattern(maskCtx, this, 
ctx.mozCurrentTransformInverse, false) : fillColor;
+      maskCtx.fillRect(0, 0, width, height);
+      maskCtx.restore();
+      ctx.save();
+      ctx.transform.apply(ctx, image.transform);
+      ctx.scale(1, -1);
+      ctx.drawImage(maskCanvas.canvas, 0, 0, width, height, 0, -1, 1, 1);
+      ctx.restore();
+    }
+  }
 
-      for (let i = 0, ii = positions.length; i < ii; i += 2) {
-        const trans = _util.Util.transform(currentTransform, [scaleX, skewX, skewY, scaleY, positions[i], 
positions[i + 1]]);
+  paintImageXObject(objId) {
+    if (!this.contentVisible) {
+      return;
+    }
 
-        const [x, y] = _util.Util.applyTransform([0, 0], trans);
+    const imgData = objId.startsWith("g_") ? this.commonObjs.get(objId) : this.objs.get(objId);
 
-        ctx.drawImage(mask.canvas, x, y);
-      }
+    if (!imgData) {
+      (0, _util.warn)("Dependent image isn't ready yet");
+      return;
+    }
 
-      ctx.restore();
+    this.paintInlineImageXObject(imgData);
+  }
+
+  paintImageXObjectRepeat(objId, scaleX, scaleY, positions) {
+    if (!this.contentVisible) {
+      return;
     }
 
-    paintImageMaskXObjectGroup(images) {
-      if (!this.contentVisible) {
-        return;
-      }
+    const imgData = objId.startsWith("g_") ? this.commonObjs.get(objId) : this.objs.get(objId);
 
-      const ctx = this.ctx;
-      const fillColor = this.current.fillColor;
-      const isPatternFill = this.current.patternFill;
-
-      for (let i = 0, ii = images.length; i < ii; i++) {
-        const image = images[i];
-        const width = image.width,
-              height = image.height;
-        const maskCanvas = this.cachedCanvases.getCanvas("maskCanvas", width, height);
-        const maskCtx = maskCanvas.context;
-        maskCtx.save();
-        putBinaryImageMask(maskCtx, image);
-        maskCtx.globalCompositeOperation = "source-in";
-        maskCtx.fillStyle = isPatternFill ? fillColor.getPattern(maskCtx, this, 
ctx.mozCurrentTransformInverse, false) : fillColor;
-        maskCtx.fillRect(0, 0, width, height);
-        maskCtx.restore();
-        ctx.save();
-        ctx.transform.apply(ctx, image.transform);
-        ctx.scale(1, -1);
-        ctx.drawImage(maskCanvas.canvas, 0, 0, width, height, 0, -1, 1, 1);
-        ctx.restore();
-      }
+    if (!imgData) {
+      (0, _util.warn)("Dependent image isn't ready yet");
+      return;
     }
 
-    paintImageXObject(objId) {
-      if (!this.contentVisible) {
-        return;
-      }
+    const width = imgData.width;
+    const height = imgData.height;
+    const map = [];
 
-      const imgData = objId.startsWith("g_") ? this.commonObjs.get(objId) : this.objs.get(objId);
+    for (let i = 0, ii = positions.length; i < ii; i += 2) {
+      map.push({
+        transform: [scaleX, 0, 0, scaleY, positions[i], positions[i + 1]],
+        x: 0,
+        y: 0,
+        w: width,
+        h: height
+      });
+    }
 
-      if (!imgData) {
-        (0, _util.warn)("Dependent image isn't ready yet");
-        return;
-      }
+    this.paintInlineImageXObjectGroup(imgData, map);
+  }
 
-      this.paintInlineImageXObject(imgData);
+  paintInlineImageXObject(imgData) {
+    if (!this.contentVisible) {
+      return;
     }
 
-    paintImageXObjectRepeat(objId, scaleX, scaleY, positions) {
-      if (!this.contentVisible) {
-        return;
-      }
+    const width = imgData.width;
+    const height = imgData.height;
+    const ctx = this.ctx;
+    this.save();
+    ctx.scale(1 / width, -1 / height);
+    let imgToPaint;
 
-      const imgData = objId.startsWith("g_") ? this.commonObjs.get(objId) : this.objs.get(objId);
+    if (typeof HTMLElement === "function" && imgData instanceof HTMLElement || !imgData.data) {
+      imgToPaint = imgData;
+    } else {
+      const tmpCanvas = this.cachedCanvases.getCanvas("inlineImage", width, height);
+      const tmpCtx = tmpCanvas.context;
+      putBinaryImageData(tmpCtx, imgData, this.current.transferMaps);
+      imgToPaint = tmpCanvas.canvas;
+    }
 
-      if (!imgData) {
-        (0, _util.warn)("Dependent image isn't ready yet");
-        return;
-      }
+    const scaled = this._scaleImage(imgToPaint, ctx.mozCurrentTransformInverse);
 
-      const width = imgData.width;
-      const height = imgData.height;
-      const map = [];
-
-      for (let i = 0, ii = positions.length; i < ii; i += 2) {
-        map.push({
-          transform: [scaleX, 0, 0, scaleY, positions[i], positions[i + 1]],
-          x: 0,
-          y: 0,
-          w: width,
-          h: height
-        });
-      }
+    ctx.imageSmoothingEnabled = getImageSmoothingEnabled(ctx.mozCurrentTransform, imgData.interpolate);
+    ctx.drawImage(scaled.img, 0, 0, scaled.paintWidth, scaled.paintHeight, 0, -height, width, height);
 
-      this.paintInlineImageXObjectGroup(imgData, map);
+    if (this.imageLayer) {
+      const position = this.getCanvasPosition(0, -height);
+      this.imageLayer.appendImage({
+        imgData,
+        left: position[0],
+        top: position[1],
+        width: width / ctx.mozCurrentTransformInverse[0],
+        height: height / ctx.mozCurrentTransformInverse[3]
+      });
     }
 
-    paintInlineImageXObject(imgData) {
-      if (!this.contentVisible) {
-        return;
-      }
-
-      const width = imgData.width;
-      const height = imgData.height;
-      const ctx = this.ctx;
-      this.save();
-      ctx.scale(1 / width, -1 / height);
-      let imgToPaint;
+    this.restore();
+  }
 
-      if (typeof HTMLElement === "function" && imgData instanceof HTMLElement || !imgData.data) {
-        imgToPaint = imgData;
-      } else {
-        const tmpCanvas = this.cachedCanvases.getCanvas("inlineImage", width, height);
-        const tmpCtx = tmpCanvas.context;
-        putBinaryImageData(tmpCtx, imgData, this.current.transferMaps);
-        imgToPaint = tmpCanvas.canvas;
-      }
+  paintInlineImageXObjectGroup(imgData, map) {
+    if (!this.contentVisible) {
+      return;
+    }
 
-      const scaled = this._scaleImage(imgToPaint, ctx.mozCurrentTransformInverse);
+    const ctx = this.ctx;
+    const w = imgData.width;
+    const h = imgData.height;
+    const tmpCanvas = this.cachedCanvases.getCanvas("inlineImage", w, h);
+    const tmpCtx = tmpCanvas.context;
+    putBinaryImageData(tmpCtx, imgData, this.current.transferMaps);
 
-      ctx.drawImage(scaled.img, 0, 0, scaled.paintWidth, scaled.paintHeight, 0, -height, width, height);
+    for (let i = 0, ii = map.length; i < ii; i++) {
+      const entry = map[i];
+      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);
 
       if (this.imageLayer) {
-        const position = this.getCanvasPosition(0, -height);
+        const position = this.getCanvasPosition(entry.x, entry.y);
         this.imageLayer.appendImage({
           imgData,
           left: position[0],
           top: position[1],
-          width: width / ctx.mozCurrentTransformInverse[0],
-          height: height / ctx.mozCurrentTransformInverse[3]
+          width: w,
+          height: h
         });
       }
 
-      this.restore();
+      ctx.restore();
     }
+  }
 
-    paintInlineImageXObjectGroup(imgData, map) {
-      if (!this.contentVisible) {
-        return;
-      }
-
-      const ctx = this.ctx;
-      const w = imgData.width;
-      const h = imgData.height;
-      const tmpCanvas = this.cachedCanvases.getCanvas("inlineImage", w, h);
-      const tmpCtx = tmpCanvas.context;
-      putBinaryImageData(tmpCtx, imgData, this.current.transferMaps);
-
-      for (let i = 0, ii = map.length; i < ii; i++) {
-        const entry = map[i];
-        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);
-
-        if (this.imageLayer) {
-          const position = this.getCanvasPosition(entry.x, entry.y);
-          this.imageLayer.appendImage({
-            imgData,
-            left: position[0],
-            top: position[1],
-            width: w,
-            height: h
-          });
-        }
-
-        ctx.restore();
-      }
+  paintSolidColorImageMask() {
+    if (!this.contentVisible) {
+      return;
     }
 
-    paintSolidColorImageMask() {
-      if (!this.contentVisible) {
-        return;
-      }
+    this.ctx.fillRect(0, 0, 1, 1);
+  }
 
-      this.ctx.fillRect(0, 0, 1, 1);
-    }
+  markPoint(tag) {}
 
-    markPoint(tag) {}
+  markPointProps(tag, properties) {}
 
-    markPointProps(tag, properties) {}
+  beginMarkedContent(tag) {
+    this.markedContentStack.push({
+      visible: true
+    });
+  }
 
-    beginMarkedContent(tag) {
+  beginMarkedContentProps(tag, properties) {
+    if (tag === "OC") {
+      this.markedContentStack.push({
+        visible: this.optionalContentConfig.isVisible(properties)
+      });
+    } else {
       this.markedContentStack.push({
         visible: true
       });
     }
 
-    beginMarkedContentProps(tag, properties) {
-      if (tag === "OC") {
-        this.markedContentStack.push({
-          visible: this.optionalContentConfig.isVisible(properties)
-        });
-      } else {
-        this.markedContentStack.push({
-          visible: true
-        });
-      }
-
-      this.contentVisible = this.isContentVisible();
-    }
-
-    endMarkedContent() {
-      this.markedContentStack.pop();
-      this.contentVisible = this.isContentVisible();
-    }
+    this.contentVisible = this.isContentVisible();
+  }
 
-    beginCompat() {}
+  endMarkedContent() {
+    this.markedContentStack.pop();
+    this.contentVisible = this.isContentVisible();
+  }
 
-    endCompat() {}
+  beginCompat() {}
 
-    consumePath() {
-      const ctx = this.ctx;
+  endCompat() {}
 
-      if (this.pendingClip) {
-        if (this.pendingClip === EO_CLIP) {
-          ctx.clip("evenodd");
-        } else {
-          ctx.clip();
-        }
+  consumePath() {
+    const ctx = this.ctx;
 
-        this.pendingClip = null;
+    if (this.pendingClip) {
+      if (this.pendingClip === EO_CLIP) {
+        ctx.clip("evenodd");
+      } else {
+        ctx.clip();
       }
 
-      ctx.beginPath();
+      this.pendingClip = null;
     }
 
-    getSinglePixelWidth() {
-      if (this._cachedGetSinglePixelWidth === null) {
-        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;
+    ctx.beginPath();
+  }
 
-        if (sqNorm1 !== sqNorm2 && this._combinedScaleFactor * pixelHeight > 1) {
-          this._cachedGetSinglePixelWidth = -(this._combinedScaleFactor * pixelHeight);
-        } else if (absDet > Number.EPSILON) {
-          this._cachedGetSinglePixelWidth = pixelHeight;
-        } else {
-          this._cachedGetSinglePixelWidth = 1;
-        }
-      }
+  getSinglePixelWidth() {
+    if (this._cachedGetSinglePixelWidth === null) {
+      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;
 
-      return this._cachedGetSinglePixelWidth;
+      if (sqNorm1 !== sqNorm2 && this._combinedScaleFactor * pixelHeight > 1) {
+        this._cachedGetSinglePixelWidth = -(this._combinedScaleFactor * pixelHeight);
+      } else if (absDet > Number.EPSILON) {
+        this._cachedGetSinglePixelWidth = pixelHeight;
+      } else {
+        this._cachedGetSinglePixelWidth = 1;
+      }
     }
 
-    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]];
-    }
+    return this._cachedGetSinglePixelWidth;
+  }
 
-    isContentVisible() {
-      for (let i = this.markedContentStack.length - 1; i >= 0; i--) {
-        if (!this.markedContentStack[i].visible) {
-          return false;
-        }
-      }
+  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]];
+  }
 
-      return true;
+  isContentVisible() {
+    for (let i = this.markedContentStack.length - 1; i >= 0; i--) {
+      if (!this.markedContentStack[i].visible) {
+        return false;
+      }
     }
 
+    return true;
   }
 
-  for (const op in _util.OPS) {
-    CanvasGraphics.prototype[_util.OPS[op]] = CanvasGraphics.prototype[op];
-  }
-
-  return CanvasGraphics;
-}();
+}
 
 exports.CanvasGraphics = CanvasGraphics;
 
+for (const op in _util.OPS) {
+  if (CanvasGraphics.prototype[op] !== undefined) {
+    CanvasGraphics.prototype[_util.OPS[op]] = CanvasGraphics.prototype[op];
+  }
+}
+
 /***/ }),
 /* 11 */
 /***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
@@ -6969,7 +7200,7 @@ class BaseShadingPattern {
 }
 
 class RadialAxialShadingPattern extends BaseShadingPattern {
-  constructor(IR) {
+  constructor(IR, cachedCanvasPatterns) {
     super();
     this._type = IR[1];
     this._bbox = IR[2];
@@ -6978,8 +7209,8 @@ class RadialAxialShadingPattern extends BaseShadingPattern {
     this._p1 = IR[5];
     this._r0 = IR[6];
     this._r1 = IR[7];
-    this._matrix = IR[8];
-    this._patternCache = null;
+    this.matrix = null;
+    this.cachedCanvasPatterns = cachedCanvasPatterns;
   }
 
   _createGradient(ctx) {
@@ -7001,10 +7232,10 @@ class RadialAxialShadingPattern extends BaseShadingPattern {
   getPattern(ctx, owner, inverse, shadingFill = false) {
     let pattern;
 
-    if (this._patternCache) {
-      pattern = this._patternCache;
-    } else {
-      if (!shadingFill) {
+    if (!shadingFill) {
+      if (this.cachedCanvasPatterns.has(this)) {
+        pattern = this.cachedCanvasPatterns.get(this);
+      } else {
         const tmpCanvas = owner.cachedCanvases.getCanvas("pattern", owner.ctx.canvas.width, 
owner.ctx.canvas.height, true);
         const tmpCtx = tmpCanvas.context;
         tmpCtx.clearRect(0, 0, tmpCtx.canvas.width, tmpCtx.canvas.height);
@@ -7012,20 +7243,19 @@ class RadialAxialShadingPattern extends BaseShadingPattern {
         tmpCtx.rect(0, 0, tmpCtx.canvas.width, tmpCtx.canvas.height);
         tmpCtx.setTransform.apply(tmpCtx, owner.baseTransform);
 
-        if (this._matrix) {
-          tmpCtx.transform.apply(tmpCtx, this._matrix);
+        if (this.matrix) {
+          tmpCtx.transform.apply(tmpCtx, this.matrix);
         }
 
         applyBoundingBox(tmpCtx, this._bbox);
         tmpCtx.fillStyle = this._createGradient(tmpCtx);
         tmpCtx.fill();
         pattern = ctx.createPattern(tmpCanvas.canvas, "repeat");
-      } else {
-        applyBoundingBox(ctx, this._bbox);
-        pattern = this._createGradient(ctx);
+        this.cachedCanvasPatterns.set(this, pattern);
       }
-
-      this._patternCache = pattern;
+    } else {
+      applyBoundingBox(ctx, this._bbox);
+      pattern = this._createGradient(ctx);
     }
 
     if (!shadingFill) {
@@ -7209,9 +7439,9 @@ class MeshShadingPattern extends BaseShadingPattern {
     this._colors = IR[3];
     this._figures = IR[4];
     this._bounds = IR[5];
-    this._matrix = IR[6];
     this._bbox = IR[7];
     this._background = IR[8];
+    this.matrix = null;
   }
 
   _createMeshCanvas(combinedScale, backgroundColor, cachedCanvases) {
@@ -7275,8 +7505,8 @@ class MeshShadingPattern extends BaseShadingPattern {
     } else {
       scale = _util.Util.singularValueDecompose2dScale(owner.baseTransform);
 
-      if (this._matrix) {
-        const matrixScale = _util.Util.singularValueDecompose2dScale(this._matrix);
+      if (this.matrix) {
+        const matrixScale = _util.Util.singularValueDecompose2dScale(this.matrix);
 
         scale = [scale[0] * matrixScale[0], scale[1] * matrixScale[1]];
       }
@@ -7287,8 +7517,8 @@ class MeshShadingPattern extends BaseShadingPattern {
     if (!shadingFill) {
       ctx.setTransform.apply(ctx, owner.baseTransform);
 
-      if (this._matrix) {
-        ctx.transform.apply(ctx, this._matrix);
+      if (this.matrix) {
+        ctx.transform.apply(ctx, this.matrix);
       }
     }
 
@@ -7306,10 +7536,10 @@ class DummyShadingPattern extends BaseShadingPattern {
 
 }
 
-function getShadingPattern(IR) {
+function getShadingPattern(IR, cachedCanvasPatterns) {
   switch (IR[0]) {
     case "RadialAxial":
-      return new RadialAxialShadingPattern(IR);
+      return new RadialAxialShadingPattern(IR, cachedCanvasPatterns);
 
     case "Mesh":
       return new MeshShadingPattern(IR);
@@ -7530,7 +7760,8 @@ const StreamKind = {
 };
 
 function wrapReason(reason) {
-  if (typeof reason !== "object" || reason === null) {
+  if (!(reason instanceof Error || typeof reason === "object" && reason !== null)) {
+    (0, _util.warn)('wrapReason: Expected "reason" to be a (possibly cloned) Error.');
     return reason;
   }
 
@@ -7541,6 +7772,9 @@ function wrapReason(reason) {
     case "MissingPDFException":
       return new _util.MissingPDFException(reason.message);
 
+    case "PasswordException":
+      return new _util.PasswordException(reason.message, reason.code);
+
     case "UnexpectedResponseException":
       return new _util.UnexpectedResponseException(reason.message, reason.status);
 
@@ -7682,10 +7916,10 @@ class MessageHandler {
   }
 
   sendWithStream(actionName, data, queueingStrategy, transfers) {
-    const streamId = this.streamId++;
-    const sourceName = this.sourceName;
-    const targetName = this.targetName;
-    const comObj = this.comObj;
+    const streamId = this.streamId++,
+          sourceName = this.sourceName,
+          targetName = this.targetName,
+          comObj = this.comObj;
     return new ReadableStream({
       start: controller => {
         const startCapability = (0, _util.createPromiseCapability)();
@@ -7738,12 +7972,12 @@ class MessageHandler {
   }
 
   _createStreamSink(data) {
-    const self = this;
-    const action = this.actionHandler[data.action];
-    const streamId = data.streamId;
-    const sourceName = this.sourceName;
-    const targetName = data.sourceName;
-    const comObj = this.comObj;
+    const streamId = data.streamId,
+          sourceName = this.sourceName,
+          targetName = data.sourceName,
+          comObj = this.comObj;
+    const self = this,
+          action = this.actionHandler[data.action];
     const streamSink = {
       enqueue(chunk, size = 1, transfers) {
         if (this.isCancelled) {
@@ -7831,32 +8065,34 @@ class MessageHandler {
   }
 
   _processStreamMessage(data) {
-    const streamId = data.streamId;
-    const sourceName = this.sourceName;
-    const targetName = data.sourceName;
-    const comObj = this.comObj;
+    const streamId = data.streamId,
+          sourceName = this.sourceName,
+          targetName = data.sourceName,
+          comObj = this.comObj;
+    const streamController = this.streamControllers[streamId],
+          streamSink = this.streamSinks[streamId];
 
     switch (data.stream) {
       case StreamKind.START_COMPLETE:
         if (data.success) {
-          this.streamControllers[streamId].startCall.resolve();
+          streamController.startCall.resolve();
         } else {
-          this.streamControllers[streamId].startCall.reject(wrapReason(data.reason));
+          streamController.startCall.reject(wrapReason(data.reason));
         }
 
         break;
 
       case StreamKind.PULL_COMPLETE:
         if (data.success) {
-          this.streamControllers[streamId].pullCall.resolve();
+          streamController.pullCall.resolve();
         } else {
-          this.streamControllers[streamId].pullCall.reject(wrapReason(data.reason));
+          streamController.pullCall.reject(wrapReason(data.reason));
         }
 
         break;
 
       case StreamKind.PULL:
-        if (!this.streamSinks[streamId]) {
+        if (!streamSink) {
           comObj.postMessage({
             sourceName,
             targetName,
@@ -7867,16 +8103,13 @@ class MessageHandler {
           break;
         }
 
-        if (this.streamSinks[streamId].desiredSize <= 0 && data.desiredSize > 0) {
-          this.streamSinks[streamId].sinkCapability.resolve();
+        if (streamSink.desiredSize <= 0 && data.desiredSize > 0) {
+          streamSink.sinkCapability.resolve();
         }
 
-        this.streamSinks[streamId].desiredSize = data.desiredSize;
-        const {
-          onPull
-        } = this.streamSinks[data.streamId];
+        streamSink.desiredSize = data.desiredSize;
         new Promise(function (resolve) {
-          resolve(onPull && onPull());
+          resolve(streamSink.onPull && streamSink.onPull());
         }).then(function () {
           comObj.postMessage({
             sourceName,
@@ -7897,58 +8130,55 @@ class MessageHandler {
         break;
 
       case StreamKind.ENQUEUE:
-        (0, _util.assert)(this.streamControllers[streamId], "enqueue should have stream controller");
+        (0, _util.assert)(streamController, "enqueue should have stream controller");
 
-        if (this.streamControllers[streamId].isClosed) {
+        if (streamController.isClosed) {
           break;
         }
 
-        this.streamControllers[streamId].controller.enqueue(data.chunk);
+        streamController.controller.enqueue(data.chunk);
         break;
 
       case StreamKind.CLOSE:
-        (0, _util.assert)(this.streamControllers[streamId], "close should have stream controller");
+        (0, _util.assert)(streamController, "close should have stream controller");
 
-        if (this.streamControllers[streamId].isClosed) {
+        if (streamController.isClosed) {
           break;
         }
 
-        this.streamControllers[streamId].isClosed = true;
-        this.streamControllers[streamId].controller.close();
+        streamController.isClosed = true;
+        streamController.controller.close();
 
-        this._deleteStreamController(streamId);
+        this._deleteStreamController(streamController, streamId);
 
         break;
 
       case StreamKind.ERROR:
-        (0, _util.assert)(this.streamControllers[streamId], "error should have stream controller");
-        this.streamControllers[streamId].controller.error(wrapReason(data.reason));
+        (0, _util.assert)(streamController, "error should have stream controller");
+        streamController.controller.error(wrapReason(data.reason));
 
-        this._deleteStreamController(streamId);
+        this._deleteStreamController(streamController, streamId);
 
         break;
 
       case StreamKind.CANCEL_COMPLETE:
         if (data.success) {
-          this.streamControllers[streamId].cancelCall.resolve();
+          streamController.cancelCall.resolve();
         } else {
-          this.streamControllers[streamId].cancelCall.reject(wrapReason(data.reason));
+          streamController.cancelCall.reject(wrapReason(data.reason));
         }
 
-        this._deleteStreamController(streamId);
+        this._deleteStreamController(streamController, streamId);
 
         break;
 
       case StreamKind.CANCEL:
-        if (!this.streamSinks[streamId]) {
+        if (!streamSink) {
           break;
         }
 
-        const {
-          onCancel
-        } = this.streamSinks[data.streamId];
         new Promise(function (resolve) {
-          resolve(onCancel && onCancel(wrapReason(data.reason)));
+          resolve(streamSink.onCancel && streamSink.onCancel(wrapReason(data.reason)));
         }).then(function () {
           comObj.postMessage({
             sourceName,
@@ -7966,8 +8196,8 @@ class MessageHandler {
             reason: wrapReason(reason)
           });
         });
-        this.streamSinks[streamId].sinkCapability.reject(wrapReason(data.reason));
-        this.streamSinks[streamId].isCancelled = true;
+        streamSink.sinkCapability.reject(wrapReason(data.reason));
+        streamSink.isCancelled = true;
         delete this.streamSinks[streamId];
         break;
 
@@ -7976,10 +8206,8 @@ class MessageHandler {
     }
   }
 
-  async _deleteStreamController(streamId) {
-    await Promise.allSettled([this.streamControllers[streamId].startCall, 
this.streamControllers[streamId].pullCall, this.streamControllers[streamId].cancelCall].map(function 
(capability) {
-      return capability && capability.promise;
-    }));
+  async _deleteStreamController(streamController, streamId) {
+    await Promise.allSettled([streamController.startCall && streamController.startCall.promise, 
streamController.pullCall && streamController.pullCall.promise, streamController.cancelCall && 
streamController.cancelCall.promise]);
     delete this.streamControllers[streamId];
   }
 
@@ -8146,6 +8374,15 @@ class OptionalContentConfig {
   }
 
   isVisible(group) {
+    if (this._groups.size === 0) {
+      return true;
+    }
+
+    if (!group) {
+      (0, _util.warn)("Optional content group not defined.");
+      return true;
+    }
+
     if (group.type === "OCG") {
       if (!this._groups.has(group.id)) {
         (0, _util.warn)(`Optional content group not found: ${group.id}`);
@@ -8610,6 +8847,70 @@ class PDFDataTransportStreamRangeReader {
 
 /***/ }),
 /* 17 */
+/***/ ((__unused_webpack_module, exports) => {
+
+
+
+Object.defineProperty(exports, "__esModule", ({
+  value: true
+}));
+exports.XfaText = void 0;
+
+class XfaText {
+  static textContent(xfa) {
+    const items = [];
+    const output = {
+      items,
+      styles: Object.create(null)
+    };
+
+    function walk(node) {
+      if (!node) {
+        return;
+      }
+
+      let str = null;
+      const name = node.name;
+
+      if (name === "#text") {
+        str = node.value;
+      } else if (!XfaText.shouldBuildText(name)) {
+        return;
+      } else if (node?.attributes?.textContent) {
+        str = node.attributes.textContent;
+      } else if (node.value) {
+        str = node.value;
+      }
+
+      if (str !== null) {
+        items.push({
+          str
+        });
+      }
+
+      if (!node.children) {
+        return;
+      }
+
+      for (const child of node.children) {
+        walk(child);
+      }
+    }
+
+    walk(xfa);
+    return output;
+  }
+
+  static shouldBuildText(name) {
+    return !(name === "textarea" || name === "input" || name === "option" || name === "select");
+  }
+
+}
+
+exports.XfaText = XfaText;
+
+/***/ }),
+/* 18 */
 /***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
 
 
@@ -8619,13 +8920,16 @@ Object.defineProperty(exports, "__esModule", ({
 }));
 exports.AnnotationLayer = void 0;
 
-var _display_utils = __w_pdfjs_require__(1);
-
 var _util = __w_pdfjs_require__(2);
 
+var _display_utils = __w_pdfjs_require__(1);
+
 var _annotation_storage = __w_pdfjs_require__(9);
 
-var _scripting_utils = __w_pdfjs_require__(18);
+var _scripting_utils = __w_pdfjs_require__(19);
+
+const DEFAULT_TAB_INDEX = 1000;
+const GetElementsByNameSet = new WeakSet();
 
 class AnnotationElementFactory {
   static create(parameters) {
@@ -8726,11 +9030,12 @@ class AnnotationElement {
     this.linkService = parameters.linkService;
     this.downloadManager = parameters.downloadManager;
     this.imageResourcesPath = parameters.imageResourcesPath;
-    this.renderInteractiveForms = parameters.renderInteractiveForms;
+    this.renderForms = parameters.renderForms;
     this.svgFactory = parameters.svgFactory;
     this.annotationStorage = parameters.annotationStorage;
     this.enableScripting = parameters.enableScripting;
     this.hasJSActions = parameters.hasJSActions;
+    this._fieldObjects = parameters.fieldObjects;
     this._mouseState = parameters.mouseState;
 
     if (isRenderable) {
@@ -8797,7 +9102,9 @@ class AnnotationElement {
           break;
       }
 
-      if (data.color) {
+      const borderColor = data.borderColor || data.color || null;
+
+      if (borderColor) {
         container.style.borderColor = _util.Util.makeHexColor(data.color[0] | 0, data.color[1] | 0, 
data.color[2] | 0);
       } else {
         container.style.borderWidth = 0;
@@ -8847,9 +9154,9 @@ class AnnotationElement {
       container,
       trigger,
       color: data.color,
-      title: data.title,
+      titleObj: data.titleObj,
       modificationDate: data.modificationDate,
-      contents: data.contents,
+      contentsObj: data.contentsObj,
       hideWrapper: true
     });
     const popup = popupElement.render();
@@ -8869,11 +9176,82 @@ class AnnotationElement {
     (0, _util.unreachable)("Abstract method `AnnotationElement.render` called");
   }
 
+  _getElementsByName(name, skipId = null) {
+    const fields = [];
+
+    if (this._fieldObjects) {
+      const fieldObj = this._fieldObjects[name];
+
+      if (fieldObj) {
+        for (const {
+          page,
+          id,
+          exportValues
+        } of fieldObj) {
+          if (page === -1) {
+            continue;
+          }
+
+          if (id === skipId) {
+            continue;
+          }
+
+          const exportValue = typeof exportValues === "string" ? exportValues : null;
+          const domElement = document.getElementById(id);
+
+          if (domElement && !GetElementsByNameSet.has(domElement)) {
+            (0, _util.warn)(`_getElementsByName - element not allowed: ${id}`);
+            continue;
+          }
+
+          fields.push({
+            id,
+            exportValue,
+            domElement
+          });
+        }
+      }
+
+      return fields;
+    }
+
+    for (const domElement of document.getElementsByName(name)) {
+      const {
+        id,
+        exportValue
+      } = domElement;
+
+      if (id === skipId) {
+        continue;
+      }
+
+      if (!GetElementsByNameSet.has(domElement)) {
+        continue;
+      }
+
+      fields.push({
+        id,
+        exportValue,
+        domElement
+      });
+    }
+
+    return fields;
+  }
+
+  static get platform() {
+    const platform = typeof navigator !== "undefined" ? navigator.platform : "";
+    return (0, _util.shadow)(this, "platform", {
+      isWin: platform.includes("Win"),
+      isMac: platform.includes("Mac")
+    });
+  }
+
 }
 
 class LinkAnnotationElement extends AnnotationElement {
   constructor(parameters) {
-    const isRenderable = !!(parameters.data.url || parameters.data.dest || parameters.data.action || 
parameters.data.isTooltipOnly || parameters.data.actions && (parameters.data.actions.Action || 
parameters.data.actions["Mouse Up"] || parameters.data.actions["Mouse Down"]));
+    const isRenderable = !!(parameters.data.url || parameters.data.dest || parameters.data.action || 
parameters.data.isTooltipOnly || parameters.data.resetForm || parameters.data.actions && 
(parameters.data.actions.Action || parameters.data.actions["Mouse Up"] || parameters.data.actions["Mouse 
Down"]));
     super(parameters, {
       isRenderable,
       createQuadrilaterals: true
@@ -8888,20 +9266,29 @@ class LinkAnnotationElement extends AnnotationElement {
     const link = document.createElement("a");
 
     if (data.url) {
-      (0, _display_utils.addLinkAttributes)(link, {
-        url: data.url,
-        target: data.newWindow ? _display_utils.LinkTarget.BLANK : linkService.externalLinkTarget,
-        rel: linkService.externalLinkRel,
-        enabled: linkService.externalLinkEnabled
-      });
+      if (!linkService.addLinkAttributes) {
+        (0, _util.warn)("LinkAnnotationElement.render - missing `addLinkAttributes`-method on the 
`linkService`-instance.");
+      }
+
+      linkService.addLinkAttributes?.(link, data.url, data.newWindow);
     } else if (data.action) {
       this._bindNamedAction(link, data.action);
     } else if (data.dest) {
       this._bindLink(link, data.dest);
-    } else if (data.actions && (data.actions.Action || data.actions["Mouse Up"] || data.actions["Mouse 
Down"]) && this.enableScripting && this.hasJSActions) {
-      this._bindJSAction(link, data);
     } else {
-      this._bindLink(link, "");
+      let hasClickAction = false;
+
+      if (data.actions && (data.actions.Action || data.actions["Mouse Up"] || data.actions["Mouse Down"]) && 
this.enableScripting && this.hasJSActions) {
+        hasClickAction = true;
+
+        this._bindJSAction(link, data);
+      }
+
+      if (data.resetForm) {
+        this._bindResetFormAction(link, data.resetForm);
+      } else if (!hasClickAction) {
+        this._bindLink(link, "");
+      }
     }
 
     if (this.quadrilaterals) {
@@ -8933,48 +9320,177 @@ class LinkAnnotationElement extends AnnotationElement {
     }
   }
 
-  _bindNamedAction(link, action) {
-    link.href = this.linkService.getAnchorUrl("");
+  _bindNamedAction(link, action) {
+    link.href = this.linkService.getAnchorUrl("");
+
+    link.onclick = () => {
+      this.linkService.executeNamedAction(action);
+      return false;
+    };
+
+    link.className = "internalLink";
+  }
+
+  _bindJSAction(link, data) {
+    link.href = this.linkService.getAnchorUrl("");
+    const map = new Map([["Action", "onclick"], ["Mouse Up", "onmouseup"], ["Mouse Down", "onmousedown"]]);
+
+    for (const name of Object.keys(data.actions)) {
+      const jsName = map.get(name);
+
+      if (!jsName) {
+        continue;
+      }
+
+      link[jsName] = () => {
+        this.linkService.eventBus?.dispatch("dispatcheventinsandbox", {
+          source: this,
+          detail: {
+            id: data.id,
+            name
+          }
+        });
+        return false;
+      };
+    }
+
+    if (!link.onclick) {
+      link.onclick = () => false;
+    }
+
+    link.className = "internalLink";
+  }
+
+  _bindResetFormAction(link, resetForm) {
+    const otherClickAction = link.onclick;
+
+    if (!otherClickAction) {
+      link.href = this.linkService.getAnchorUrl("");
+    }
+
+    link.className = "internalLink";
+
+    if (!this._fieldObjects) {
+      (0, _util.warn)(`_bindResetFormAction - "resetForm" action not supported, ` + "ensure that the 
`fieldObjects` parameter is provided.");
+
+      if (!otherClickAction) {
+        link.onclick = () => false;
+      }
+
+      return;
+    }
+
+    link.onclick = () => {
+      if (otherClickAction) {
+        otherClickAction();
+      }
+
+      const {
+        fields: resetFormFields,
+        refs: resetFormRefs,
+        include
+      } = resetForm;
+      const allFields = [];
+
+      if (resetFormFields.length !== 0 || resetFormRefs.length !== 0) {
+        const fieldIds = new Set(resetFormRefs);
+
+        for (const fieldName of resetFormFields) {
+          const fields = this._fieldObjects[fieldName] || [];
+
+          for (const {
+            id
+          } of fields) {
+            fieldIds.add(id);
+          }
+        }
+
+        for (const fields of Object.values(this._fieldObjects)) {
+          for (const field of fields) {
+            if (fieldIds.has(field.id) === include) {
+              allFields.push(field);
+            }
+          }
+        }
+      } else {
+        for (const fields of Object.values(this._fieldObjects)) {
+          allFields.push(...fields);
+        }
+      }
+
+      const storage = this.annotationStorage;
+      const allIds = [];
 
-    link.onclick = () => {
-      this.linkService.executeNamedAction(action);
-      return false;
-    };
+      for (const field of allFields) {
+        const {
+          id
+        } = field;
+        allIds.push(id);
+
+        switch (field.type) {
+          case "text":
+            {
+              const value = field.defaultValue || "";
+              storage.setValue(id, {
+                value,
+                valueAsString: value
+              });
+              break;
+            }
 
-    link.className = "internalLink";
-  }
+          case "checkbox":
+          case "radiobutton":
+            {
+              const value = field.defaultValue === field.exportValues;
+              storage.setValue(id, {
+                value
+              });
+              break;
+            }
 
-  _bindJSAction(link, data) {
-    link.href = this.linkService.getAnchorUrl("");
-    const map = new Map([["Action", "onclick"], ["Mouse Up", "onmouseup"], ["Mouse Down", "onmousedown"]]);
+          case "combobox":
+          case "listbox":
+            {
+              const value = field.defaultValue || "";
+              storage.setValue(id, {
+                value
+              });
+              break;
+            }
 
-    for (const name of Object.keys(data.actions)) {
-      const jsName = map.get(name);
+          default:
+            continue;
+        }
 
-      if (!jsName) {
-        continue;
+        const domElement = document.getElementById(id);
+
+        if (!domElement || !GetElementsByNameSet.has(domElement)) {
+          continue;
+        }
+
+        domElement.dispatchEvent(new Event("resetform"));
       }
 
-      link[jsName] = () => {
+      if (this.enableScripting) {
         this.linkService.eventBus?.dispatch("dispatcheventinsandbox", {
           source: this,
           detail: {
-            id: data.id,
-            name
+            id: "app",
+            ids: allIds,
+            name: "ResetForm"
           }
         });
-        return false;
-      };
-    }
+      }
 
-    link.className = "internalLink";
+      return false;
+    };
   }
 
 }
 
 class TextAnnotationElement extends AnnotationElement {
   constructor(parameters) {
-    const isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);
+    const isRenderable = !!(parameters.data.hasPopup || parameters.data.titleObj?.str || 
parameters.data.contentsObj?.str);
     super(parameters, {
       isRenderable
     });
@@ -9012,7 +9528,11 @@ class WidgetAnnotationElement extends AnnotationElement {
   }
 
   _getKeyModifier(event) {
-    return navigator.platform.includes("Win") && event.ctrlKey || navigator.platform.includes("Mac") && 
event.metaKey;
+    const {
+      isWin,
+      isMac
+    } = AnnotationElement.platform;
+    return isWin && event.ctrlKey || isMac && event.metaKey;
   }
 
   _setEventListener(element, baseName, eventName, valueGetter) {
@@ -9051,6 +9571,11 @@ class WidgetAnnotationElement extends AnnotationElement {
     }
   }
 
+  _setBackgroundColor(element) {
+    const color = this.data.backgroundColor || null;
+    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];
@@ -9132,7 +9657,7 @@ class WidgetAnnotationElement extends AnnotationElement {
 
 class TextWidgetAnnotationElement extends WidgetAnnotationElement {
   constructor(parameters) {
-    const isRenderable = parameters.renderInteractiveForms || !parameters.data.hasAppearance && 
!!parameters.data.fieldValue;
+    const isRenderable = parameters.renderForms || !parameters.data.hasAppearance && 
!!parameters.data.fieldValue;
     super(parameters, {
       isRenderable
     });
@@ -9141,13 +9666,14 @@ class TextWidgetAnnotationElement extends WidgetAnnotationElement {
   setPropertyOnSiblings(base, key, value, keyInStorage) {
     const storage = this.annotationStorage;
 
-    for (const element of document.getElementsByName(base.name)) {
-      if (element !== base) {
-        element[key] = value;
-        const data = Object.create(null);
-        data[keyInStorage] = value;
-        storage.setValue(element.getAttribute("id"), data);
+    for (const element of this._getElementsByName(base.name, base.id)) {
+      if (element.domElement) {
+        element.domElement[key] = value;
       }
+
+      storage.setValue(element.id, {
+        [keyInStorage]: value
+      });
     }
   }
 
@@ -9157,7 +9683,7 @@ class TextWidgetAnnotationElement extends WidgetAnnotationElement {
     this.container.className = "textWidgetAnnotation";
     let element = null;
 
-    if (this.renderInteractiveForms) {
+    if (this.renderForms) {
       const storedData = storage.getValue(id, {
         value: this.data.fieldValue,
         valueAsString: this.data.fieldValue
@@ -9179,6 +9705,10 @@ class TextWidgetAnnotationElement extends WidgetAnnotationElement {
         element.setAttribute("value", textContent);
       }
 
+      GetElementsByNameSet.add(element);
+      element.disabled = this.data.readOnly;
+      element.name = this.data.fieldName;
+      element.tabIndex = DEFAULT_TAB_INDEX;
       elementData.userValue = textContent;
       element.setAttribute("id", id);
       element.addEventListener("input", event => {
@@ -9187,6 +9717,11 @@ class TextWidgetAnnotationElement extends WidgetAnnotationElement {
         });
         this.setPropertyOnSiblings(element, "value", event.target.value, "value");
       });
+      element.addEventListener("resetform", event => {
+        const defaultValue = this.data.defaultFieldValue || "";
+        element.value = elementData.userValue = defaultValue;
+        delete elementData.formattedValue;
+      });
 
       let blurListener = event => {
         if (elementData.formattedValue) {
@@ -9335,9 +9870,6 @@ class TextWidgetAnnotationElement extends WidgetAnnotationElement {
         element.addEventListener("blur", blurListener);
       }
 
-      element.disabled = this.data.readOnly;
-      element.name = this.data.fieldName;
-
       if (this.data.maxLen !== null) {
         element.maxLength = this.data.maxLen;
       }
@@ -9357,6 +9889,8 @@ class TextWidgetAnnotationElement extends WidgetAnnotationElement {
 
     this._setTextStyle(element);
 
+    this._setBackgroundColor(element);
+
     this.container.appendChild(element);
     return this.container;
   }
@@ -9385,7 +9919,7 @@ class TextWidgetAnnotationElement extends WidgetAnnotationElement {
 class CheckboxWidgetAnnotationElement extends WidgetAnnotationElement {
   constructor(parameters) {
     super(parameters, {
-      isRenderable: parameters.renderInteractiveForms
+      isRenderable: parameters.renderForms
     });
   }
 
@@ -9394,7 +9928,7 @@ class CheckboxWidgetAnnotationElement extends WidgetAnnotationElement {
     const data = this.data;
     const id = data.id;
     let value = storage.getValue(id, {
-      value: data.fieldValue && (data.exportValue && data.exportValue === data.fieldValue || 
!data.exportValue && data.fieldValue !== "Off")
+      value: data.exportValue === data.fieldValue
     }).value;
 
     if (typeof value === "string") {
@@ -9406,31 +9940,44 @@ class CheckboxWidgetAnnotationElement extends WidgetAnnotationElement {
 
     this.container.className = "buttonWidgetAnnotation checkBox";
     const element = document.createElement("input");
+    GetElementsByNameSet.add(element);
     element.disabled = data.readOnly;
     element.type = "checkbox";
-    element.name = this.data.fieldName;
+    element.name = data.fieldName;
 
     if (value) {
       element.setAttribute("checked", true);
     }
 
     element.setAttribute("id", id);
-    element.addEventListener("change", function (event) {
-      const name = event.target.name;
-
-      for (const checkbox of document.getElementsByName(name)) {
-        if (checkbox !== event.target) {
-          checkbox.checked = false;
-          storage.setValue(checkbox.parentNode.getAttribute("data-annotation-id"), {
-            value: false
-          });
+    element.setAttribute("exportValue", data.exportValue);
+    element.tabIndex = DEFAULT_TAB_INDEX;
+    element.addEventListener("change", event => {
+      const {
+        name,
+        checked
+      } = event.target;
+
+      for (const checkbox of this._getElementsByName(name, id)) {
+        const curChecked = checked && checkbox.exportValue === data.exportValue;
+
+        if (checkbox.domElement) {
+          checkbox.domElement.checked = curChecked;
         }
+
+        storage.setValue(checkbox.id, {
+          value: curChecked
+        });
       }
 
       storage.setValue(id, {
-        value: event.target.checked
+        value: checked
       });
     });
+    element.addEventListener("resetform", event => {
+      const defaultValue = data.defaultFieldValue || "Off";
+      event.target.checked = defaultValue === data.exportValue;
+    });
 
     if (this.enableScripting && this.hasJSActions) {
       element.addEventListener("updatefromsandbox", jsEvent => {
@@ -9450,6 +9997,8 @@ class CheckboxWidgetAnnotationElement extends WidgetAnnotationElement {
       this._setEventListeners(element, [["change", "Validate"], ["change", "Action"], ["focus", "Focus"], 
["blur", "Blur"], ["mousedown", "Mouse Down"], ["mouseenter", "Mouse Enter"], ["mouseleave", "Mouse Exit"], 
["mouseup", "Mouse Up"]], event => event.target.checked);
     }
 
+    this._setBackgroundColor(element);
+
     this.container.appendChild(element);
     return this.container;
   }
@@ -9459,7 +10008,7 @@ class CheckboxWidgetAnnotationElement extends WidgetAnnotationElement {
 class RadioButtonWidgetAnnotationElement extends WidgetAnnotationElement {
   constructor(parameters) {
     super(parameters, {
-      isRenderable: parameters.renderInteractiveForms
+      isRenderable: parameters.renderForms
     });
   }
 
@@ -9480,6 +10029,7 @@ class RadioButtonWidgetAnnotationElement extends WidgetAnnotationElement {
     }
 
     const element = document.createElement("input");
+    GetElementsByNameSet.add(element);
     element.disabled = data.readOnly;
     element.type = "radio";
     element.name = data.fieldName;
@@ -9489,40 +10039,47 @@ class RadioButtonWidgetAnnotationElement extends WidgetAnnotationElement {
     }
 
     element.setAttribute("id", id);
-    element.addEventListener("change", function (event) {
+    element.tabIndex = DEFAULT_TAB_INDEX;
+    element.addEventListener("change", event => {
       const {
-        target
-      } = event;
+        name,
+        checked
+      } = event.target;
 
-      for (const radio of document.getElementsByName(target.name)) {
-        if (radio !== target) {
-          storage.setValue(radio.getAttribute("id"), {
-            value: false
-          });
-        }
+      for (const radio of this._getElementsByName(name, id)) {
+        storage.setValue(radio.id, {
+          value: false
+        });
       }
 
       storage.setValue(id, {
-        value: target.checked
+        value: checked
       });
     });
+    element.addEventListener("resetform", event => {
+      const defaultValue = data.defaultFieldValue;
+      event.target.checked = defaultValue !== null && defaultValue !== undefined && defaultValue === 
data.buttonValue;
+    });
 
     if (this.enableScripting && this.hasJSActions) {
       const pdfButtonValue = data.buttonValue;
       element.addEventListener("updatefromsandbox", jsEvent => {
         const actions = {
-          value(event) {
+          value: event => {
             const checked = pdfButtonValue === event.detail.value;
 
-            for (const radio of document.getElementsByName(event.target.name)) {
-              const radioId = radio.getAttribute("id");
-              radio.checked = radioId === id && checked;
-              storage.setValue(radioId, {
-                value: radio.checked
+            for (const radio of this._getElementsByName(event.target.name)) {
+              const curChecked = checked && radio.id === id;
+
+              if (radio.domElement) {
+                radio.domElement.checked = curChecked;
+              }
+
+              storage.setValue(radio.id, {
+                value: curChecked
               });
             }
           }
-
         };
 
         this._dispatchEventFromSandbox(actions, jsEvent);
@@ -9531,6 +10088,8 @@ class RadioButtonWidgetAnnotationElement extends WidgetAnnotationElement {
       this._setEventListeners(element, [["change", "Validate"], ["change", "Action"], ["focus", "Focus"], 
["blur", "Blur"], ["mousedown", "Mouse Down"], ["mouseenter", "Mouse Enter"], ["mouseleave", "Mouse Exit"], 
["mouseup", "Mouse Up"]], event => event.target.checked);
     }
 
+    this._setBackgroundColor(element);
+
     this.container.appendChild(element);
     return this.container;
   }
@@ -9554,7 +10113,7 @@ class PushButtonWidgetAnnotationElement extends LinkAnnotationElement {
 class ChoiceWidgetAnnotationElement extends WidgetAnnotationElement {
   constructor(parameters) {
     super(parameters, {
-      isRenderable: parameters.renderInteractiveForms
+      isRenderable: parameters.renderForms
     });
   }
 
@@ -9565,10 +10124,22 @@ class ChoiceWidgetAnnotationElement extends WidgetAnnotationElement {
     storage.getValue(id, {
       value: this.data.fieldValue.length > 0 ? this.data.fieldValue[0] : undefined
     });
+    let {
+      fontSize
+    } = this.data.defaultAppearanceData;
+
+    if (!fontSize) {
+      fontSize = 9;
+    }
+
+    const fontSizeStyle = `calc(${fontSize}px * var(--zoom-factor))`;
     const selectElement = document.createElement("select");
+    GetElementsByNameSet.add(selectElement);
     selectElement.disabled = this.data.readOnly;
     selectElement.name = this.data.fieldName;
     selectElement.setAttribute("id", id);
+    selectElement.tabIndex = DEFAULT_TAB_INDEX;
+    selectElement.style.fontSize = `${fontSize}px`;
 
     if (!this.data.combo) {
       selectElement.size = this.data.options.length;
@@ -9578,11 +10149,23 @@ class ChoiceWidgetAnnotationElement extends WidgetAnnotationElement {
       }
     }
 
+    selectElement.addEventListener("resetform", event => {
+      const defaultValue = this.data.defaultFieldValue;
+
+      for (const option of selectElement.options) {
+        option.selected = option.value === defaultValue;
+      }
+    });
+
     for (const option of this.data.options) {
       const optionElement = document.createElement("option");
       optionElement.textContent = option.displayValue;
       optionElement.value = option.exportValue;
 
+      if (this.data.combo) {
+        optionElement.style.fontSize = fontSizeStyle;
+      }
+
       if (this.data.fieldValue.includes(option.exportValue)) {
         optionElement.setAttribute("selected", true);
       }
@@ -9615,12 +10198,13 @@ class ChoiceWidgetAnnotationElement extends WidgetAnnotationElement {
       selectElement.addEventListener("updatefromsandbox", jsEvent => {
         const actions = {
           value(event) {
-            const options = selectElement.options;
             const value = event.detail.value;
             const values = new Set(Array.isArray(value) ? value : [value]);
-            Array.prototype.forEach.call(options, option => {
+
+            for (const option of selectElement.options) {
               option.selected = values.has(option.value);
-            });
+            }
+
             storage.setValue(id, {
               value: getValue(event, true)
             });
@@ -9709,10 +10293,11 @@ class ChoiceWidgetAnnotationElement extends WidgetAnnotationElement {
 
           indices(event) {
             const indices = new Set(event.detail.indices);
-            const options = event.target.options;
-            Array.prototype.forEach.call(options, (option, i) => {
-              option.selected = indices.has(i);
-            });
+
+            for (const option of event.target.options) {
+              option.selected = indices.has(option.index);
+            }
+
             storage.setValue(id, {
               value: getValue(event, true)
             });
@@ -9755,6 +10340,8 @@ class ChoiceWidgetAnnotationElement extends WidgetAnnotationElement {
       });
     }
 
+    this._setBackgroundColor(selectElement);
+
     this.container.appendChild(selectElement);
     return this.container;
   }
@@ -9763,7 +10350,7 @@ class ChoiceWidgetAnnotationElement extends WidgetAnnotationElement {
 
 class PopupAnnotationElement extends AnnotationElement {
   constructor(parameters) {
-    const isRenderable = !!(parameters.data.title || parameters.data.contents);
+    const isRenderable = !!(parameters.data.titleObj?.str || parameters.data.contentsObj?.str);
     super(parameters, {
       isRenderable
     });
@@ -9788,9 +10375,9 @@ class PopupAnnotationElement extends AnnotationElement {
       container: this.container,
       trigger: Array.from(parentElements),
       color: this.data.color,
-      title: this.data.title,
+      titleObj: this.data.titleObj,
       modificationDate: this.data.modificationDate,
-      contents: this.data.contents
+      contentsObj: this.data.contentsObj
     });
     const page = this.page;
 
@@ -9812,9 +10399,9 @@ class PopupElement {
     this.container = parameters.container;
     this.trigger = parameters.trigger;
     this.color = parameters.color;
-    this.title = parameters.title;
+    this.titleObj = parameters.titleObj;
     this.modificationDate = parameters.modificationDate;
-    this.contents = parameters.contents;
+    this.contentsObj = parameters.contentsObj;
     this.hideWrapper = parameters.hideWrapper || false;
     this.pinned = false;
   }
@@ -9837,7 +10424,8 @@ class PopupElement {
     }
 
     const title = document.createElement("h1");
-    title.textContent = this.title;
+    title.dir = this.titleObj.dir;
+    title.textContent = this.titleObj.str;
     popup.appendChild(title);
 
     const dateObject = _display_utils.PDFDateString.toDateObject(this.modificationDate);
@@ -9853,7 +10441,7 @@ class PopupElement {
       popup.appendChild(modificationDate);
     }
 
-    const contents = this._formatContents(this.contents);
+    const contents = this._formatContents(this.contentsObj);
 
     popup.appendChild(contents);
 
@@ -9872,9 +10460,13 @@ class PopupElement {
     return wrapper;
   }
 
-  _formatContents(contents) {
+  _formatContents({
+    str,
+    dir
+  }) {
     const p = document.createElement("p");
-    const lines = contents.split(/(?:\r\n?|\n)/);
+    p.dir = dir;
+    const lines = str.split(/(?:\r\n?|\n)/);
 
     for (let i = 0, ii = lines.length; i < ii; ++i) {
       const line = lines[i];
@@ -9922,7 +10514,7 @@ class PopupElement {
 
 class FreeTextAnnotationElement extends AnnotationElement {
   constructor(parameters) {
-    const isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);
+    const isRenderable = !!(parameters.data.hasPopup || parameters.data.titleObj?.str || 
parameters.data.contentsObj?.str);
     super(parameters, {
       isRenderable,
       ignoreBorder: true
@@ -9943,7 +10535,7 @@ class FreeTextAnnotationElement extends AnnotationElement {
 
 class LineAnnotationElement extends AnnotationElement {
   constructor(parameters) {
-    const isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);
+    const isRenderable = !!(parameters.data.hasPopup || parameters.data.titleObj?.str || 
parameters.data.contentsObj?.str);
     super(parameters, {
       isRenderable,
       ignoreBorder: true
@@ -9975,7 +10567,7 @@ class LineAnnotationElement extends AnnotationElement {
 
 class SquareAnnotationElement extends AnnotationElement {
   constructor(parameters) {
-    const isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);
+    const isRenderable = !!(parameters.data.hasPopup || parameters.data.titleObj?.str || 
parameters.data.contentsObj?.str);
     super(parameters, {
       isRenderable,
       ignoreBorder: true
@@ -10009,7 +10601,7 @@ class SquareAnnotationElement extends AnnotationElement {
 
 class CircleAnnotationElement extends AnnotationElement {
   constructor(parameters) {
-    const isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);
+    const isRenderable = !!(parameters.data.hasPopup || parameters.data.titleObj?.str || 
parameters.data.contentsObj?.str);
     super(parameters, {
       isRenderable,
       ignoreBorder: true
@@ -10043,7 +10635,7 @@ class CircleAnnotationElement extends AnnotationElement {
 
 class PolylineAnnotationElement extends AnnotationElement {
   constructor(parameters) {
-    const isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);
+    const isRenderable = !!(parameters.data.hasPopup || parameters.data.titleObj?.str || 
parameters.data.contentsObj?.str);
     super(parameters, {
       isRenderable,
       ignoreBorder: true
@@ -10093,7 +10685,7 @@ class PolygonAnnotationElement extends PolylineAnnotationElement {
 
 class CaretAnnotationElement extends AnnotationElement {
   constructor(parameters) {
-    const isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);
+    const isRenderable = !!(parameters.data.hasPopup || parameters.data.titleObj?.str || 
parameters.data.contentsObj?.str);
     super(parameters, {
       isRenderable,
       ignoreBorder: true
@@ -10114,7 +10706,7 @@ class CaretAnnotationElement extends AnnotationElement {
 
 class InkAnnotationElement extends AnnotationElement {
   constructor(parameters) {
-    const isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);
+    const isRenderable = !!(parameters.data.hasPopup || parameters.data.titleObj?.str || 
parameters.data.contentsObj?.str);
     super(parameters, {
       isRenderable,
       ignoreBorder: true
@@ -10159,7 +10751,7 @@ class InkAnnotationElement extends AnnotationElement {
 
 class HighlightAnnotationElement extends AnnotationElement {
   constructor(parameters) {
-    const isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);
+    const isRenderable = !!(parameters.data.hasPopup || parameters.data.titleObj?.str || 
parameters.data.contentsObj?.str);
     super(parameters, {
       isRenderable,
       ignoreBorder: true,
@@ -10184,7 +10776,7 @@ class HighlightAnnotationElement extends AnnotationElement {
 
 class UnderlineAnnotationElement extends AnnotationElement {
   constructor(parameters) {
-    const isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);
+    const isRenderable = !!(parameters.data.hasPopup || parameters.data.titleObj?.str || 
parameters.data.contentsObj?.str);
     super(parameters, {
       isRenderable,
       ignoreBorder: true,
@@ -10209,7 +10801,7 @@ class UnderlineAnnotationElement extends AnnotationElement {
 
 class SquigglyAnnotationElement extends AnnotationElement {
   constructor(parameters) {
-    const isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);
+    const isRenderable = !!(parameters.data.hasPopup || parameters.data.titleObj?.str || 
parameters.data.contentsObj?.str);
     super(parameters, {
       isRenderable,
       ignoreBorder: true,
@@ -10234,7 +10826,7 @@ class SquigglyAnnotationElement extends AnnotationElement {
 
 class StrikeOutAnnotationElement extends AnnotationElement {
   constructor(parameters) {
-    const isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);
+    const isRenderable = !!(parameters.data.hasPopup || parameters.data.titleObj?.str || 
parameters.data.contentsObj?.str);
     super(parameters, {
       isRenderable,
       ignoreBorder: true,
@@ -10259,7 +10851,7 @@ class StrikeOutAnnotationElement extends AnnotationElement {
 
 class StampAnnotationElement extends AnnotationElement {
   constructor(parameters) {
-    const isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);
+    const isRenderable = !!(parameters.data.hasPopup || parameters.data.titleObj?.str || 
parameters.data.contentsObj?.str);
     super(parameters, {
       isRenderable,
       ignoreBorder: true
@@ -10304,7 +10896,7 @@ class FileAttachmentAnnotationElement extends AnnotationElement {
     trigger.style.width = this.container.style.width;
     trigger.addEventListener("dblclick", this._download.bind(this));
 
-    if (!this.data.hasPopup && (this.data.title || this.data.contents)) {
+    if (!this.data.hasPopup && (this.data.titleObj?.str || this.data.contentsObj?.str)) {
       this._createPopup(trigger, this.data);
     }
 
@@ -10349,11 +10941,12 @@ class AnnotationLayer {
         linkService: parameters.linkService,
         downloadManager: parameters.downloadManager,
         imageResourcesPath: parameters.imageResourcesPath || "",
-        renderInteractiveForms: parameters.renderInteractiveForms !== false,
+        renderForms: parameters.renderForms !== false,
         svgFactory: new _display_utils.DOMSVGFactory(),
         annotationStorage: parameters.annotationStorage || new _annotation_storage.AnnotationStorage(),
         enableScripting: parameters.enableScripting,
         hasJSActions: parameters.hasJSActions,
+        fieldObjects: parameters.fieldObjects,
         mouseState: parameters.mouseState || {
           isDown: false
         }
@@ -10402,7 +10995,7 @@ class AnnotationLayer {
 exports.AnnotationLayer = AnnotationLayer;
 
 /***/ }),
-/* 18 */
+/* 19 */
 /***/ ((__unused_webpack_module, exports) => {
 
 
@@ -10470,7 +11063,7 @@ class ColorConverters {
 exports.ColorConverters = ColorConverters;
 
 /***/ }),
-/* 19 */
+/* 20 */
 /***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
 
 
@@ -10547,7 +11140,7 @@ function getAscent(fontFamily, ctx) {
 
 function appendText(task, geom, styles, ctx) {
   const textDiv = document.createElement("span");
-  const textDivProperties = {
+  const textDivProperties = task._enhanceTextSelection ? {
     angle: 0,
     canvasWidth: 0,
     hasText: geom.str !== "",
@@ -10558,6 +11151,11 @@ function appendText(task, geom, styles, ctx) {
     paddingRight: 0,
     paddingTop: 0,
     scale: 1
+  } : {
+    angle: 0,
+    canvasWidth: 0,
+    hasText: geom.str !== "",
+    hasEOL: geom.hasEOL
   };
 
   task._textDivs.push(textDiv);
@@ -10986,6 +11584,10 @@ class TextLayerRenderTask {
     this._bounds = [];
 
     this._capability.promise.finally(() => {
+      if (!this._enhanceTextSelection) {
+        this._textDivProperties = null;
+      }
+
       if (this._layoutTextCtx) {
         this._layoutTextCtx.canvas.width = 0;
         this._layoutTextCtx.canvas.height = 0;
@@ -11002,7 +11604,7 @@ class TextLayerRenderTask {
     this._canceled = true;
 
     if (this._reader) {
-      this._reader.cancel(new _util.AbortException("TextLayer task cancelled."));
+      this._reader.cancel(new _util.AbortException("TextLayer task cancelled.")).catch(() => {});
 
       this._reader = null;
     }
@@ -11064,8 +11666,13 @@ class TextLayerRenderTask {
       } = this._layoutTextCtx.measureText(textDiv.textContent);
 
       if (width > 0) {
-        textDivProperties.scale = textDivProperties.canvasWidth / width;
-        transform = `scaleX(${textDivProperties.scale})`;
+        const scale = textDivProperties.canvasWidth / width;
+
+        if (this._enhanceTextSelection) {
+          textDivProperties.scale = scale;
+        }
+
+        transform = `scaleX(${scale})`;
       }
     }
 
@@ -11134,7 +11741,7 @@ class TextLayerRenderTask {
       this._reader = this._textContentStream.getReader();
       pump();
     } else {
-      throw new Error('Neither "textContent" nor "textContentStream"' + " parameters specified.");
+      throw new Error('Neither "textContent" nor "textContentStream" parameters specified.');
     }
 
     capability.promise.then(() => {
@@ -11238,7 +11845,7 @@ function renderTextLayer(renderParameters) {
 }
 
 /***/ }),
-/* 20 */
+/* 21 */
 /***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
 
 
@@ -12765,8 +13372,8 @@ exports.SVGGraphics = SVGGraphics;
 }
 
 /***/ }),
-/* 21 */
-/***/ ((__unused_webpack_module, exports) => {
+/* 22 */
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
 
 
 
@@ -12775,6 +13382,10 @@ Object.defineProperty(exports, "__esModule", ({
 }));
 exports.XfaLayer = void 0;
 
+var _util = __w_pdfjs_require__(2);
+
+var _xfa_text = __w_pdfjs_require__(17);
+
 class XfaLayer {
   static setupStorage(html, id, element, storage, intent) {
     const storedData = storage.getValue(id, {
@@ -12802,6 +13413,8 @@ class XfaLayer {
         if (element.attributes.type === "radio" || element.attributes.type === "checkbox") {
           if (storedData.value === element.attributes.xfaOn) {
             html.setAttribute("checked", true);
+          } else if (storedData.value === element.attributes.xfaOff) {
+            html.removeAttribute("checked");
           }
 
           if (intent === "print") {
@@ -12810,7 +13423,7 @@ class XfaLayer {
 
           html.addEventListener("change", event => {
             storage.setValue(id, {
-              value: event.target.getAttribute("xfaOn")
+              value: event.target.checked ? event.target.getAttribute("xfaOn") : 
event.target.getAttribute("xfaOff")
             });
           });
         } else {
@@ -12851,10 +13464,17 @@ class XfaLayer {
     }
   }
 
-  static setAttributes(html, element, storage, intent) {
+  static setAttributes({
+    html,
+    element,
+    storage = null,
+    intent,
+    linkService
+  }) {
     const {
       attributes
     } = element;
+    const isHTMLAnchorElement = html instanceof HTMLAnchorElement;
 
     if (attributes.type === "radio") {
       attributes.name = `${attributes.name}-${intent}`;
@@ -12871,6 +13491,10 @@ class XfaLayer {
         } else if (key === "class") {
           html.setAttribute(key, value.join(" "));
         } else {
+          if (isHTMLAnchorElement && (key === "href" || key === "newWindow")) {
+            continue;
+          }
+
           html.setAttribute(key, value);
         }
       } else {
@@ -12878,6 +13502,14 @@ 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);
+    }
+
     if (storage && attributes.dataId) {
       this.setupStorage(html, attributes.dataId, element, storage);
     }
@@ -12885,12 +13517,18 @@ class XfaLayer {
 
   static render(parameters) {
     const storage = parameters.annotationStorage;
+    const linkService = parameters.linkService;
     const root = parameters.xfa;
     const intent = parameters.intent || "display";
     const rootHtml = document.createElement(root.name);
 
     if (root.attributes) {
-      this.setAttributes(rootHtml, root);
+      this.setAttributes({
+        html: rootHtml,
+        element: root,
+        intent,
+        linkService
+      });
     }
 
     const stack = [[root, -1, rootHtml]];
@@ -12899,6 +13537,7 @@ class XfaLayer {
     const transform = `matrix(${parameters.viewport.transform.join(",")})`;
     rootDiv.style.transform = transform;
     rootDiv.setAttribute("class", "xfaLayer xfaFont");
+    const textDivs = [];
 
     while (stack.length > 0) {
       const [parent, i, html] = stack[stack.length - 1];
@@ -12919,7 +13558,9 @@ class XfaLayer {
       } = child;
 
       if (name === "#text") {
-        html.appendChild(document.createTextNode(child.value));
+        const node = document.createTextNode(child.value);
+        textDivs.push(node);
+        html.appendChild(node);
         continue;
       }
 
@@ -12934,19 +13575,35 @@ class XfaLayer {
       html.appendChild(childHtml);
 
       if (child.attributes) {
-        this.setAttributes(childHtml, child, storage, intent);
+        this.setAttributes({
+          html: childHtml,
+          element: child,
+          storage,
+          intent,
+          linkService
+        });
       }
 
       if (child.children && child.children.length > 0) {
         stack.push([child, -1, childHtml]);
       } else if (child.value) {
-        childHtml.appendChild(document.createTextNode(child.value));
+        const node = document.createTextNode(child.value);
+
+        if (_xfa_text.XfaText.shouldBuildText(name)) {
+          textDivs.push(node);
+        }
+
+        childHtml.appendChild(node);
       }
     }
 
     for (const el of rootDiv.querySelectorAll(".xfaNonInteractive input, .xfaNonInteractive textarea")) {
       el.setAttribute("readOnly", true);
     }
+
+    return {
+      textDivs
+    };
   }
 
   static update(parameters) {
@@ -12960,7 +13617,7 @@ class XfaLayer {
 exports.XfaLayer = XfaLayer;
 
 /***/ }),
-/* 22 */
+/* 23 */
 /***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
 
 
@@ -12972,7 +13629,7 @@ exports.PDFNodeStream = void 0;
 
 var _util = __w_pdfjs_require__(2);
 
-var _network_utils = __w_pdfjs_require__(23);
+var _network_utils = __w_pdfjs_require__(24);
 
 ;
 
@@ -13426,7 +14083,7 @@ class PDFNodeStreamFsRangeReader extends BaseRangeReader {
 }
 
 /***/ }),
-/* 23 */
+/* 24 */
 /***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
 
 
@@ -13441,7 +14098,7 @@ exports.validateResponseStatus = validateResponseStatus;
 
 var _util = __w_pdfjs_require__(2);
 
-var _content_disposition = __w_pdfjs_require__(24);
+var _content_disposition = __w_pdfjs_require__(25);
 
 var _display_utils = __w_pdfjs_require__(1);
 
@@ -13519,7 +14176,7 @@ function validateResponseStatus(status) {
 }
 
 /***/ }),
-/* 24 */
+/* 25 */
 /***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
 
 
@@ -13706,7 +14363,7 @@ function getFilenameFromContentDispositionHeader(contentDisposition) {
 }
 
 /***/ }),
-/* 25 */
+/* 26 */
 /***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
 
 
@@ -13718,7 +14375,7 @@ exports.PDFNetworkStream = void 0;
 
 var _util = __w_pdfjs_require__(2);
 
-var _network_utils = __w_pdfjs_require__(23);
+var _network_utils = __w_pdfjs_require__(24);
 
 ;
 const OK_RESPONSE = 200;
@@ -13736,11 +14393,10 @@ function getArrayBuffer(xhr) {
 }
 
 class NetworkManager {
-  constructor(url, args) {
+  constructor(url, args = {}) {
     this.url = url;
-    args = args || {};
     this.isHttp = /^https?:/i.test(url);
-    this.httpHeaders = this.isHttp && args.httpHeaders || {};
+    this.httpHeaders = this.isHttp && args.httpHeaders || Object.create(null);
     this.withCredentials = args.withCredentials || false;
 
     this.getXhr = args.getXhr || function NetworkManager_getXhr() {
@@ -13819,9 +14475,7 @@ class NetworkManager {
       return;
     }
 
-    if (pendingRequest.onProgress) {
-      pendingRequest.onProgress(evt);
-    }
+    pendingRequest.onProgress?.(evt);
   }
 
   onStateChange(xhrId, evt) {
@@ -13849,10 +14503,7 @@ class NetworkManager {
     delete this.pendingRequests[xhrId];
 
     if (xhr.status === 0 && this.isHttp) {
-      if (pendingRequest.onError) {
-        pendingRequest.onError(xhr.status);
-      }
-
+      pendingRequest.onError?.(xhr.status);
       return;
     }
 
@@ -13860,10 +14511,7 @@ class NetworkManager {
     const ok_response_on_range_request = xhrStatus === OK_RESPONSE && pendingRequest.expectedStatus === 
PARTIAL_CONTENT_RESPONSE;
 
     if (!ok_response_on_range_request && xhrStatus !== pendingRequest.expectedStatus) {
-      if (pendingRequest.onError) {
-        pendingRequest.onError(xhr.status);
-      }
-
+      pendingRequest.onError?.(xhr.status);
       return;
     }
 
@@ -13881,8 +14529,8 @@ class NetworkManager {
         begin: 0,
         chunk
       });
-    } else if (pendingRequest.onError) {
-      pendingRequest.onError(xhr.status);
+    } else {
+      pendingRequest.onError?.(xhr.status);
     }
   }
 
@@ -13938,9 +14586,7 @@ class PDFNetworkStream {
   }
 
   cancelAllRequests(reason) {
-    if (this._fullRequestReader) {
-      this._fullRequestReader.cancel(reason);
-    }
+    this._fullRequestReader?.cancel(reason);
 
     for (const reader of this._rangeRequestReaders.slice(0)) {
       reader.cancel(reason);
@@ -14014,17 +14660,17 @@ class PDFNetworkStreamFullRequestReader {
     this._headersReceivedCapability.resolve();
   }
 
-  _onDone(args) {
-    if (args) {
+  _onDone(data) {
+    if (data) {
       if (this._requests.length > 0) {
         const requestCapability = this._requests.shift();
 
         requestCapability.resolve({
-          value: args.chunk,
+          value: data.chunk,
           done: false
         });
       } else {
-        this._cachedChunks.push(args.chunk);
+        this._cachedChunks.push(data.chunk);
       }
     }
 
@@ -14045,27 +14691,23 @@ class PDFNetworkStreamFullRequestReader {
   }
 
   _onError(status) {
-    const url = this._url;
-    const exception = (0, _network_utils.createResponseStatusError)(status, url);
-    this._storedError = exception;
+    this._storedError = (0, _network_utils.createResponseStatusError)(status, this._url);
 
-    this._headersReceivedCapability.reject(exception);
+    this._headersReceivedCapability.reject(this._storedError);
 
     for (const requestCapability of this._requests) {
-      requestCapability.reject(exception);
+      requestCapability.reject(this._storedError);
     }
 
     this._requests.length = 0;
     this._cachedChunks.length = 0;
   }
 
-  _onProgress(data) {
-    if (this.onProgress) {
-      this.onProgress({
-        loaded: data.loaded,
-        total: data.lengthComputable ? data.total : this._contentLength
-      });
-    }
+  _onProgress(evt) {
+    this.onProgress?.({
+      loaded: evt.loaded,
+      total: evt.lengthComputable ? evt.total : this._contentLength
+    });
   }
 
   get filename() {
@@ -14144,20 +14786,21 @@ class PDFNetworkStreamRangeRequestReader {
     this._manager = manager;
     const args = {
       onDone: this._onDone.bind(this),
+      onError: this._onError.bind(this),
       onProgress: this._onProgress.bind(this)
     };
+    this._url = manager.url;
     this._requestId = manager.requestRange(begin, end, args);
     this._requests = [];
     this._queuedChunk = null;
     this._done = false;
+    this._storedError = undefined;
     this.onProgress = null;
     this.onClosed = null;
   }
 
   _close() {
-    if (this.onClosed) {
-      this.onClosed(this);
-    }
+    this.onClosed?.(this);
   }
 
   _onDone(data) {
@@ -14188,9 +14831,20 @@ class PDFNetworkStreamRangeRequestReader {
     this._close();
   }
 
+  _onError(status) {
+    this._storedError = (0, _network_utils.createResponseStatusError)(status, this._url);
+
+    for (const requestCapability of this._requests) {
+      requestCapability.reject(this._storedError);
+    }
+
+    this._requests.length = 0;
+    this._queuedChunk = null;
+  }
+
   _onProgress(evt) {
-    if (!this.isStreamingSupported && this.onProgress) {
-      this.onProgress({
+    if (!this.isStreamingSupported) {
+      this.onProgress?.({
         loaded: evt.loaded
       });
     }
@@ -14201,6 +14855,10 @@ class PDFNetworkStreamRangeRequestReader {
   }
 
   async read() {
+    if (this._storedError) {
+      throw this._storedError;
+    }
+
     if (this._queuedChunk !== null) {
       const chunk = this._queuedChunk;
       this._queuedChunk = null;
@@ -14246,7 +14904,7 @@ class PDFNetworkStreamRangeRequestReader {
 }
 
 /***/ }),
-/* 26 */
+/* 27 */
 /***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
 
 
@@ -14258,7 +14916,7 @@ exports.PDFFetchStream = void 0;
 
 var _util = __w_pdfjs_require__(2);
 
-var _network_utils = __w_pdfjs_require__(23);
+var _network_utils = __w_pdfjs_require__(24);
 
 ;
 
@@ -14481,13 +15139,7 @@ class PDFFetchStreamRangeReader {
       this._readCapability.resolve();
 
       this._reader = response.body.getReader();
-    }).catch(reason => {
-      if (reason?.name === "AbortError") {
-        return;
-      }
-
-      throw reason;
-    });
+    }).catch(this._readCapability.reject);
     this.onProgress = null;
   }
 
@@ -14621,46 +15273,22 @@ Object.defineProperty(exports, "PDFDateString", ({
     return _display_utils.PDFDateString;
   }
 }));
-Object.defineProperty(exports, "RenderingCancelledException", ({
-  enumerable: true,
-  get: function () {
-    return _display_utils.RenderingCancelledException;
-  }
-}));
-Object.defineProperty(exports, "build", ({
-  enumerable: true,
-  get: function () {
-    return _api.build;
-  }
-}));
-Object.defineProperty(exports, "getDocument", ({
-  enumerable: true,
-  get: function () {
-    return _api.getDocument;
-  }
-}));
-Object.defineProperty(exports, "LoopbackPort", ({
-  enumerable: true,
-  get: function () {
-    return _api.LoopbackPort;
-  }
-}));
-Object.defineProperty(exports, "PDFDataRangeTransport", ({
+Object.defineProperty(exports, "PixelsPerInch", ({
   enumerable: true,
   get: function () {
-    return _api.PDFDataRangeTransport;
+    return _display_utils.PixelsPerInch;
   }
 }));
-Object.defineProperty(exports, "PDFWorker", ({
+Object.defineProperty(exports, "RenderingCancelledException", ({
   enumerable: true,
   get: function () {
-    return _api.PDFWorker;
+    return _display_utils.RenderingCancelledException;
   }
 }));
-Object.defineProperty(exports, "version", ({
+Object.defineProperty(exports, "AnnotationMode", ({
   enumerable: true,
   get: function () {
-    return _api.version;
+    return _util.AnnotationMode;
   }
 }));
 Object.defineProperty(exports, "CMapCompressionType", ({
@@ -14753,6 +15381,42 @@ Object.defineProperty(exports, "VerbosityLevel", ({
     return _util.VerbosityLevel;
   }
 }));
+Object.defineProperty(exports, "build", ({
+  enumerable: true,
+  get: function () {
+    return _api.build;
+  }
+}));
+Object.defineProperty(exports, "getDocument", ({
+  enumerable: true,
+  get: function () {
+    return _api.getDocument;
+  }
+}));
+Object.defineProperty(exports, "LoopbackPort", ({
+  enumerable: true,
+  get: function () {
+    return _api.LoopbackPort;
+  }
+}));
+Object.defineProperty(exports, "PDFDataRangeTransport", ({
+  enumerable: true,
+  get: function () {
+    return _api.PDFDataRangeTransport;
+  }
+}));
+Object.defineProperty(exports, "PDFWorker", ({
+  enumerable: true,
+  get: function () {
+    return _api.PDFWorker;
+  }
+}));
+Object.defineProperty(exports, "version", ({
+  enumerable: true,
+  get: function () {
+    return _api.version;
+  }
+}));
 Object.defineProperty(exports, "AnnotationLayer", ({
   enumerable: true,
   get: function () {
@@ -14786,29 +15450,29 @@ Object.defineProperty(exports, "XfaLayer", ({
 
 var _display_utils = __w_pdfjs_require__(1);
 
-var _api = __w_pdfjs_require__(6);
-
 var _util = __w_pdfjs_require__(2);
 
-var _annotation_layer = __w_pdfjs_require__(17);
+var _api = __w_pdfjs_require__(6);
+
+var _annotation_layer = __w_pdfjs_require__(18);
 
 var _worker_options = __w_pdfjs_require__(12);
 
 var _is_node = __w_pdfjs_require__(4);
 
-var _text_layer = __w_pdfjs_require__(19);
+var _text_layer = __w_pdfjs_require__(20);
 
-var _svg = __w_pdfjs_require__(20);
+var _svg = __w_pdfjs_require__(21);
 
-var _xfa_layer = __w_pdfjs_require__(21);
+var _xfa_layer = __w_pdfjs_require__(22);
 
-const pdfjsVersion = '2.10.377';
-const pdfjsBuild = '156762c48';
+const pdfjsVersion = '2.11.338';
+const pdfjsBuild = 'dedff3c98';
 {
   if (_is_node.isNodeJS) {
     const {
       PDFNodeStream
-    } = __w_pdfjs_require__(22);
+    } = __w_pdfjs_require__(23);
 
     (0, _api.setPDFNetworkStreamFactory)(params => {
       return new PDFNodeStream(params);
@@ -14816,11 +15480,11 @@ const pdfjsBuild = '156762c48';
   } else {
     const {
       PDFNetworkStream
-    } = __w_pdfjs_require__(25);
+    } = __w_pdfjs_require__(26);
 
     const {
       PDFFetchStream
-    } = __w_pdfjs_require__(26);
+    } = __w_pdfjs_require__(27);
 
     (0, _api.setPDFNetworkStreamFactory)(params => {
       if ((0, _display_utils.isValidFetchUrl)(params.url)) {
diff --git a/third-party/pdfjs/build/pdf.sandbox.js b/third-party/pdfjs/build/pdf.sandbox.js
index 9f778c348..3583ce2a4 100644
--- a/third-party/pdfjs/build/pdf.sandbox.js
+++ b/third-party/pdfjs/build/pdf.sandbox.js
@@ -37,7 +37,7 @@ return /******/ (() => { // webpackBootstrap
 /* 1 */
 /***/ ((__unused_webpack_module, exports) => {
 
-Object.defineProperty(exports, "__esModule", ({value:true}));exports.default=void 0;var 
Module=function(){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,n;b.ready=new 
Promise(function(a,c){h=a;n=c;});var q={},r;for(r in b)b.hasOwnProperty(r)&&(q[r]=b[r]);var 
t="";"undefined"!==typeof 
document&&document.currentScript&&(t=document.currentScript.src);_scriptDir&&(t=_scriptDir);0!==t.indexOf("blob:")?t=t.substr(0,t.lastIndexOf("/")+1):t="";var
 aa=b.print||console.log.bind(console),u=b.printErr||console.warn.bind(console);for(r in 
q)q.hasOwnProperty(r)&&(b[r]=q[r]);q=null;var v;b.wasmBinary&&(v=b.wasmBinary);var 
noExitRuntime=b.noExitRuntime||!0;"object"!==typeof WebAssembly&&w("no native wasm support detected");var 
x,z=!1;function A(a){var c=b["_"+a];c||w("Assertion failed: Cannot call unknown function "+(a+", make sure it 
is expor
 ted"));return c;}function B(a,c,d,e){var f={string:function(l){var p=0;if(null!==l&&void 0!==l&&0!==l){var 
U=(l.length<<2)+1;p=C(U);D(l,E,p,U);}return p;},array:function(l){var p=C(l.length);F.set(l,p);return 
p;}},g=A(a),k=[];a=0;if(e)for(var m=0;m<e.length;m++){var 
y=f[d[m]];y?(0===a&&(a=G()),k[m]=y(e[m])):k[m]=e[m];}d=g.apply(null,k);d=function(l){return"string"===c?H(l):"boolean"===c?!!l:l;}(d);0!==a&&I(a);return
 d;}var J="undefined"!==typeof TextDecoder?new TextDecoder("utf8"):void 0;function K(a,c,d){var 
e=c+d;for(d=c;a[d]&&!(d>=e);)++d;if(16<d-c&&a.subarray&&J)return J.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?K(E,a,void 0):"";}function D(a,c,d,e){i
 f(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
 L(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 ba(a){var c=L(a)+1,d=M(c);d&&D(a,F,d,c);return d;}var ca,F,E,N;function da(){var 
a=x.buffer;ca=a;b.HEAP8=F=new Int8Array(a);b.HEAP16=new Int16Array(a);b.HEAP32=N=new 
Int32Array(a);b.HEAPU8=E=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,ea=[],fa=[],ha=[],ia=[];function ja(){var a=b.preRun.shift();ea.unshift(a);}var
  P=0,Q=null,R=null;b.preloadedImages={};b.preloadedAudios={};function 
w(a){if(b.onAbort)b.onAbort(a);u(a);z=!0;a=new WebAssembly.RuntimeError("abort("+a+"). Build with -s 
ASSERTIONS=1 for more info.");n(a);throw a;}function S(a){return 
String.prototype.startsWith?a.startsWith("data:application/octet-stream;base64,"):0===a.indexOf("data:application/octet-stream;base64,");}var
 
T="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/fwBgBn9/f39/fwF/YAR/f39/AX5gA39+fgF/YAF/AX5gBX9+fn5+AGABfgF+YAJ8fAF8YAABf2AFf35/fn8Bf2AHf35/fn5+fwF/YAV/fn5/fwF+YAAAYAV/f39/fwBgA39+fgBgBH9+fn8AYAd/f39/f39/AX9gBn9+f35+fwF/YAV/fn5+fwF/YAV/fn5/fwBgAn5/AGAJf39/f39/f39/AX9gBH9+f38Bf2AEf35+fwF/YAJ+fwF/YAZ/f39/f38BfmAHf35/f39/fwF+YAR/fn9+AX5gBH9+fn8BfmAHf39/f39/fwBgA39/fgBgBH9/fn8AYAR
 
/fn9/AGAIf39/f39/f38Bf2AEf39/fgF/YAR/fn9+AX9gBH9+fn4Bf2AGf3x/f39/AX9gA35/fwF/YAR/fn5+AX5gAn5+AX5gAnx/AXxgA3x8fwF8YAZ/f39/f38AYAN/f3wAYAV/fn9/fwBgBH9+f34AYAJ/fABgB3x/f39/f38AYAp/f39/f39/f39/AX9gB39/f35+fn8Bf2AFf39+f38Bf2AEf39+fgF/YAV/f35+fwF/YAZ/f35+f38Bf2AGf39+fn5+AX9gBX9+f39/AX9gBn9+f39/fwF/YAV/fn5+fgF/YAZ/fn5+fn8Bf2AEf3x/fwF/YAN+fn4Bf2AEfn5+fgF/YAJ8fwF/YAJ8fAF/YAABfmABfAF+YAV/f39/fwF+YAd/f39/f39+AX5gBX9/f39+AX5gBH9/f34BfmADf39+AX5gBH9/fn8BfmAFf39+fn4BfmAFf35/fn8BfmAHf35+fn9/fwF+YAh/fn5+fn9+fgF+YAN/fnwBfmAFf3x/f38BfmABfwF8YAF+AXxgAn9/AXxgAn5+AXwCPQoBYQFhABkBYQFiACUBYQFjAAIBYQFkAAsBYQFlAAQBYQFmAAMBYQFnAAEBYQFoAAIBYQFpAAgBYQFqABkD2AjWCAoQAx8DBBADYwYGWwMCAyIDAQMDNwMQESQBOQoQBAgJAQkNAgICAwweBgQkAx0DDQ0CBh0JMQ4GAQQIBAgOPGkCAQMDHQgPAgkLEAsBCxwOBAMEAwwBBAkWTAYGBg0TAwIDDz0IAQgMKCYBIwETDwQeAgEUUAQLAwQQFwYBAQIwLQINDRA9FB0KBAIIDQQEExsQIgkWDS0MBi4EAQhECwMrNQ4EABMCEAELJ0gGDQECOgQGYQINDw4ODg4GCAJCMgYCAidHXhQTNhoIBBQBFgIOEwQvMAErA2QBAjIBAgYIASI2AggIAgQWAwQPEAQNAwQJARkYBFcBLAIGA0oCBBQpXQUNPwMOAwEO
 
HAI8Ig0JATACAQMIBAQDMQcEBBoCCAYmCRYGFAEEAgYBBAMBDgUvA0kCAgQMYFwFRgEWGQhnKxcPAxQGBgIBAgEYKAsHIEMHAgILAQQCBAIGDQAyBBgbCwECCwYLAQQDBAEEAQIDAUE4Dh8AVA8ZBANVBAwIAxYDag0kDBgaD1IGBAEBBiQFDwMNAwsCAk4BAgIMMRA5CwMBCC0HBwIEBAIEAQEGCwQBBDoCBgMJFAEDAAIDAQsCLgEIAQICAhQNAQsCCwsCGR8QUTcDEwMQBAQTAgQWDggaGRQDAgYRA09TNRgQGgcJTWIAQBsCHR0NFgECDSonCw4VAA4/CwMEAgEESxcJDRAEGAkDBg8XAgIDAgMBHl8IBikUBAdYBwIlAgICGQQIBAsEAgECBAECKSkCAVkADw8BAQ0JBAEAAGUfCQUABSIcGgAaAQMEAy4UAQMCAgECCgEQAwIEAQIBCAIMFAQEBAEBH0EFZi84JQMJAwMKBgYBDjQJCwgMAAMfAQYVCRAcIAUMEAgDDwULGQECCBEMBQBaDgMDAygFBQUmAhszDAICJAIBBAICAwYBAggrHBMMF0ADDg4GCQsCAQ0OFyEMCBwcJgEQAwQYARgEAQICAgEDAAUEBggEJx4gAwJrHlZoHSgeBAEZBEICBEMgRQcAAwQaAgAzAAAGBgYGBgYGBgYGBQUAAAEMAAEMAQwBDAEMAQwBDAEMBQUBAAAAJQAABQAACQUAAA8JAAUPEgAACQAAAAAAAAAAAAAAAAcAAAcHBRIFBQAAAAUFBQAAAAAABQUFBQAAAAAAAAAAAAAAAAAABQAAAAAAAAAABQUFAAAAAAMABQAFAQAAAAAFAAAFAAUFAAkJAAAAAAUFFgkAAAAAAAAAAAUAAAAFBQAAAAUABQAAAgAAAAAAAAUAAAASBRIFAAASBRISEgAAABgRChEKCgoRChISBQUPBQUFBQUSACo0EyMTOxcRCgAAEgkAAAAAAAAAA
 
A8JCQAjExcTEhgjARsbGwEDEQoRCgoKEQoRCgoKEQoRChEKEQoKEQoRCgYYFRUVFQEDAwMVFRUVAAQIIQ8BBwcAACEhIQEPAAM+BQEHBwcHBwcHByAHBwcHBwcHBxUHAwQHAXAB9wL3AgUHAQGAAoCAAgYJAX8BQfCzxAILB08QAWsCAAFsALMEAW0A3wgBbgCCBQFvAL0HAXAAiwcBcQC2BgFyAKECAXMA6QEBdAEAAXUAxAgBdgDDCAF3AMIIAXgAuwgBeQC6CAF6ALkICfMFAQBBAQv2ApUErwiuCK0IrAizCLIIsQjAB9wErQeTB4UH6wbmAr8GtQbIBKEGkAaPBo4GjQbdCIgGygjHCMEIwAjsBbgItwi2CLUItAjrBYQEqwiwCIkImwWICOYB3wfWB6oIiwiRBekH0gfRB9AHzgfKB8gHkAeyBqkIqAinCKYIpQinBaQIowiiCKEIoAifCJ4InQicCJsImgiZCJgIlwiWCPEDlQjxA5QIkwiSCJEIigiGCIUIhAiHCKUFkAiPCPMH8gfxB/AH7wfuB+0H7AfrB94H3QfcB/ED2wenBdoH2QfYB9cHjgiNCIwIgwiCCIEIgAj/B/4H/Qf8B/sH+gf5B/gH9wf2B/UH9AfqB+gH5wfmB+UH5AfjB+IH4QfgB9UH1AfTB4wCzwfNB8wHywfJB8cHqQXGB8UHxAfDB/4EwgfBB78HqgW+B7wHuwe6B7kHuAe3B7YHtQeyBbQHswfYBLIHsQewB9YErweuB6wH1wSrB6oHqQeoB6cHpgelB6QHoweiB5oDoQegB58HngedB5wHmweaB5kHmAeXB5YH/QOVB5QHsQWzBZIHkQePB44HjQeMB4oHiQeIB4cH0gTRBIYHhAeDB4IHgQeAB/8G/gb9BvwG+wb6BvkG+Ab3BvYG9Qb0BvMG8gbxBvAG7wbuBu0G7AbqBukG6AbnBuYG5QbkBuMG4gbhBuAG3wbeBt0G3AbbBtoG2Q
 
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
 
IMIAMoAgQiA0F/RgRAIAAgBDYCFAwJCyADIARGDQgMCQsgBCAFai8AACEEIAggA0EIaiICNgIMIAMoAgQiA0F/RgRAIAAgBDYCFAwICyADIARGDQcMCAsgACAEIAVqKAAANgIYDAYLIAAgBCAFaiIDKAAANgIYIAAgAy8ABDYCHAwFCyAAIAQgBWooAAA2AiAMBAsgACAEIAVqIgMoAAA2AiAgACADLQAENgIcDAMLIAAgBCAFaiIDKAAANgIgIAAgAy8ABDYCHAwCCyAAIAQgBWoiAygAADYCICAAIAMoAAQ2AhggACADLQAINgIcDAELCyAAIAk2AgwgACABNgIIQQEhDQsgCEEQaiQAIA0LCwAgACABQQAQoAQLvwEDAn8BfgF8QX8hAgJAAkACQAJAAkACQCABQiCIpyIDQQdqDg4CBAQEBAQDAAEBAQQEBQQLIAGnQQBHDwsgAacPCyABpykCBCEEIAAgARAKIARC/////weDQgBSDwsgAactAAUhAiAAIAEQCiACQX9zQYABcUEHdg8LIANBC2pBEk8EQCABEEkiBb1C////////////AINCgYCAgICAgPj/AFQgBUQAAAAAAAAAAGJxDwsgACABEApBASECCyACCxkAIAAoAhAgARDnASIBRQRAIAAQxgELIAELPwEBfyMAQRBrIgIkAAJ/IAEgACgCEEcEQCACIAE2AgAgAEH91gAgAhATQX8MAQsgABAPCyEAIAJBEGokACAACyEAIAAoAgRBf0wEQCAAIAFBAXRqLwEQDwsgACABai0AEAsoAQF/IwBBEGsiAiQAIAIgATsBDiAAIAJBDmpBAhCHARogAkEQaiQACwsAIAAgAUEBEOMFC5oLAgV/D34jAEHgAGsiBSQAIAJCIIYgAUIgiIQhDyAEQi+GIANCEYiEIQwgBEL///////8/gyINQg+GIANCMYiEIRAgAiAEhUKAgICAgICAgIB/gyEKIAJC///////
 
/P4MiC0IgiCERIA1CEYghEiAEQjCIp0H//wFxIQcCQAJ/IAJCMIinQf//AXEiCUEBa0H9/wFNBEBBACAHQQFrQf7/AUkNARoLIAFQIAJC////////////AIMiDkKAgICAgIDA//8AVCAOQoCAgICAgMD//wBRG0UEQCACQoCAgICAgCCEIQoMAgsgA1AgBEL///////////8AgyICQoCAgICAgMD//wBUIAJCgICAgICAwP//AFEbRQRAIARCgICAgICAIIQhCiADIQEMAgsgASAOQoCAgICAgMD//wCFhFAEQCACIAOEUARAQoCAgICAgOD//wAhCkIAIQEMAwsgCkKAgICAgIDA//8AhCEKQgAhAQwCCyADIAJCgICAgICAwP//AIWEUARAIAEgDoQhAkIAIQEgAlAEQEKAgICAgIDg//8AIQoMAwsgCkKAgICAgIDA//8AhCEKDAILIAEgDoRQBEBCACEBDAILIAIgA4RQBEBCACEBDAILIA5C////////P1gEQCAFQdAAaiABIAsgASALIAtQIgYbeSAGQQZ0rXynIgZBD2sQciAFKQNYIgtCIIYgBSkDUCIBQiCIhCEPIAtCIIghEUEQIAZrIQYLIAYgAkL///////8/Vg0AGiAFQUBrIAMgDSADIA0gDVAiCBt5IAhBBnStfKciCEEPaxByIAUpA0giAkIPhiAFKQNAIgNCMYiEIRAgAkIvhiADQhGIhCEMIAJCEYghEiAGIAhrQRBqCyEGIAxC/////w+DIgIgAUL/////D4MiAX4iEyADQg+GQoCA/v8PgyIDIA9C/////w+DIg5+fCIEQiCGIg0gASADfnwiDCANVK0gAiAOfiIVIAMgC0L/////D4MiC358IhQgEEL/////D4MiDSABfnwiECAEIBNUrUIghiAEQiCIhHwiEyACIAt+IhYgAyARQoCABIQiD358IgMgDSAOfnwiESABIBJC/////weDQoCAgIAI
 
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
 
KAIMIQUgAUGAATYCCCABIAFBEGo2AgwgAUEQaiEGAn8DQCABKAIIQQZrIQgCQANAIAQgBmogAjoAACAEQQFqIQQgBSwAACICQQBIDQEgAkH/AXEiAkEDdkEccUHg3wFqKAIAIAJ2QQFxRQ0BIAVBAWohBSAEIAhJDQALQQAgACgCACABQQxqIAFBCGogAUEQahCOBQ0CGiABKAIMIQYMAQsLIAAoAgAgBiAEEKwDCyECIAEoAgwiBCABQRBqRwRAIAAoAgAgBBAYCyADIAU2AgwgAUGQAWokACACRQ0CIABBg382AhAgAEIANwIkIAAgAjYCIAsgACADKAIMNgI4QQAMAwsgAUECaiEBA0AgAyABNgIMA0ACQAJAIAEtAAAiAgRAIAJBCmsOBAYBAQYBCyABIAAoAjxPDQUMAQsgAkEYdEEYdUF/Sg0AIAFBBiADQQxqEF8iAkF+cUGowABGBEAgAygCDCEBDAULIAMoAgwhASACQX9HDQELCyABQQFqIQEMAAsACwsgB0GofzYCAEF/CyEAIANBEGokACAACxEAIAAgASABIAIgA0ECEIwEC6wBAgJ/An4CfyACRQRAQoCAgIAwIQZBAAwBCyAAKAIQIgMpA4ABIQYgA0KAgICAIDcDgAFBfwshA0F/IQQCQCAAIAFBBiABQQAQEiIFEAsNAAJAIAUQEA0AIAUQJg0AIAAgBSABQQBBABA1IQECfyADIAINABpBfyABEAsNABogAyABECANABogABAoQX8LIQQgACABEAoMAQsgAyEECyACBEAgACAGEJIBCyAECwwAIAAgASAAIAFIGwsdACAAQoCAgIBwWgR/IACnLQAFQQR2QQFxBUEACwuuAQEBfyMAQRBrIgMkAAJAAkAgAhBcBEAgASACEHk2AgBBASECDAELIAAoAhAiACgCLCACTQ0BAn8CQCAAKAI4IAJBAnRqKAIAIgApAgRCgICAgICAgIBAg0KAgICAgICAg
 
MAAUg0AIANBDGogABDoBUUNAEEBIAMoAgwiAEF/Rw0BGgtBACEAQQALIQIgASAANgIACyADQRBqJAAgAg8LQcovQaENQb8YQcI/EAAAC0UAIAAoAhAgASACEOYBIgEgAkVyRQRAIAAQxgEgAQ8LIAMEQCADQQAgACgCECABEKMEIgAgAmsiAiAAIAJJGzYCAAsgAQtpAQN+IAAgAkIgiCIDIAFCIIgiBH4gAkL/////D4MiAiABQv////8PgyIBfiIFQiCIIAIgBH58IgJCIIh8IAEgA34gAkL/////D4N8IgFCIIh8NwMIIAAgBUL/////D4MgAUIghoQ3AwAL+QECA34CfyMAQRBrIgUkAAJ+IAG9IgNC////////////AIMiAkKAgICAgICACH1C/////////+//AFgEQCACQjyGIQQgAkIEiEKAgICAgICAgDx8DAELIAJCgICAgICAgPj/AFoEQCADQjyGIQQgA0IEiEKAgICAgIDA//8AhAwBCyACUARAQgAMAQsgBSACQgAgA6dnQSBqIAJCIIinZyACQoCAgIAQVBsiBkExahByIAUpAwAhBCAFKQMIQoCAgICAgMAAhUGM+AAgBmutQjCGhAshAiAAIAQ3AwAgACACIANCgICAgICAgICAf4OENwMIIAVBEGokAAsqAQF/IwBBEGsiAyQAIAMgAjYCDCAAIAEgAkHuAkEAEK0EGiADQRBqJAALDQAgAEEAIAFBABChBAsbACAAIAFB/wFxEA4gACgCBCEBIAAgAhAcIAELlwwBB38jAEEgayICJAACQAJAAkACQAJAAn8gACgCECIDQYN/RwRAQQAgA0FXRw0BGiAAKAJAIgMtAGxBAXFFBEAgAEHjhgFBABATDAMLIAMoAmRFBEAgAEH+hgFBABATDAMLQX8hBSAAEA8NBQJ/AkACQAJAIAAoAhAiA0Epaw4EAgEBAgALIANB3QBGIANBOmtBAklyIANB/QBGcg
 
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
 
BqIAEQhgEFQcE8CzYCACAAQas8IAIQzwIgAkHQAGokAAvIogEDIH8FfgJ8IwBB4ABrIgchECAHJAAgACgCECEXQoCAgIDgACEoAkAgABB/DQACfwJ/AkACQAJAAkACQCABQv////9vWARAIAZBBHFFDQEgAaciCCIKKAI8IQcgCCgCGCIZKAIkIRMgGSgCICIRKAIwIQYgES8BKiEJIApBADYCPCAIIBcoAowBNgIQIAgoAiAhFSAIKAIwIQwgCCgCJCESIBcgCEEQaiIUNgKMASAVIRggDCEKIBIgCUEDdGoiGyAIKAIMRQ0GGgwECyABpyIZLwEGIghBDUYNAiAXKAJEIAhBGGxqKAIQIgcNAQsgAEGPxABBABAUDAYLIAAgASACIAQgBSAGIAcRFQAhKAwFCyAZKAIgIhEvAS4hDCARLwEqIRUgES8BKCEIIBAgES0AEDYCWCAQIAE3AzggECAENgJUIBBByABqEG4gGSgCJCETIAcgCEEAIAZBAXZBAXEgBCAISHIbIgYgDCAVampBA3RBD2pB8P//AXFrIhgkACAFIRUgBkUNASAEIBEvASgQsAEiB0EAIAdBAEobIQcDQCAHIBJGBEAgByARLwEoIgggByAISxshDANAIAcgDEcEQCAYIAdBA3RqQoCAgIAwNwMAIAdBAWohBwwBCwsgECAINgJUIBghFQwDBSAYIBJBA3QiCGogBSAIaikDABANNwMAIBJBAWohEgwBCwALAAtBAQwCCyAQIBU2AkAgECAYIAZBA3RqIhI2AkQgES8BKiEIQQAhBwNAIAcgCEcEQCASIAdBA3RqQoCAgIAwNwMAIAdBAWohBwwBCwsgESgCFCEMIBAgFygCjAE2AjAgFyAQQTBqNgKMASARKAIwIQYgEEEwaiEUIBIgCEEDdGoiBwshG0EACyEIA0ACQAJAAkACQCAIRQRAIBJBCGohHCASQRBqIR0gEkEYaiEeIBVBCGohHyAVQRB
 
qISAgFUEYaiEhIBtBGGohIyACQiCIpyIkQX5xISUgEEEwaiEmIBBBIGohIiAHIQgCQANAAkAgDEEBaiEKQgAhKEKAgICAMCEBAn8CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAwtAAAiDkEBaw7zAdQBACQIkQEJCgsMDQ4PEBESExQXFRYYGRobICEiIxwfHR4oJiYpKSor2AHjASwtLi/XATAxMjM0NTY3ODg5OTqeAaEBPDs9jgGPAZABkgGTAZQBnAGdAaABnwGiAZUBlgGXAZgBmQGjAaQBpQGaAZoBmwGbAT4/QEFCQ2tsbXFyc3Rub3B1fHt4f4ABgQHIAckBygHLAcsBywHLAcsBywF2dnZ3ggGEAYYBgwGFAYgBhwGJAYoBiwGMAdcB1QHWAdYB4gGuAa0BsAGvAbEBsQGzAbIBpwG0AY0B
 
xQHGAccBqQGqAasBpgGoAawBtQG3AbYBuwG8Ab0BvgHEAcMBvwHAAcEBwgG4AboBuQHRAdwBAQEBAQEBAQEBAgMEBQZERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXV5fYGFiY2RlZmdoaWoHfn16eSUlJSXMAc0BzgHPAdMBCyAHIBEoAjQgCigAAEEDdGopAwAQDTcDACAMQQVqIQogB0EIaiEIDNsBCyAHIA5BswFrrTcDACAHQQhqIQgM2gELIAcgCiwAAK03AwAgDEECaiEKIAdBCGohCAzZAQsgByAKLgAArTcDACAMQQNqIQogB0EIaiEIDNgBCyAHIBEoAjQgDC0AAUEDdGopAwAQDTcDACAHQQhqIQggDEECaiEKDNcBCyAHIAYgESgCNCAMLQABQQN0aikDABANIBMgFBCNBCIBNwMAIAdBCGohCCAMQQJqIQogARALRQ3WAQzYAQsgByAGQS8QMTcDACAHQQhqIQgM1QELIAYgB0EIayIIKQMAIgFBMCABQQAQEiIBEAsN2AEgBiAIKQMAEAogCCABNwMADNMBCyAHIAYgCigAABBeNwMAIAxBBWohCiAHQQhqIQgM0wELIAdCgICAgDA3AwAgB0EIaiEIDNIBCyAHQoCAgIAgNwMAIAdBCGohCAzRAQsCQAJAAn4gAiAkQX9GDQAaIAIgES0AEEEBcQ0AGiAlQQJHDQEgBikDwAELEA0hKAwBCyAGIAIQKSIoEAsN1QELIAcgKDcDACAHQQhqIQgM0AELIAdCgICAgBA3AwAgB0EIaiEIDM8BCyAHQoGAgIAQNwMAIAdBCGohCAzOAQsgByAGED0iATcDACAHQQhqIQggARALRQ3NAQzPAQsgDEECaiEKAkACQAJAAkACQAJAAkACQCAMLQABDgcAAQIDBAUGBwsgBwJ+QQAhCEEAIQkgBiAGKAIoKQMIQQgQUCIBEAtFBEAgBiABpyILQTBBAxCAASAErTcDA
 
AJAIARBAUgNACAGIARBA3QQLSIJBEADQCAEIAhGDQIgCSAIQQN0Ig1qIAUgDWopAwAQDTcDACAIQQFqIQgMAAsACyAGIAEQCkKAgICA4AAMAgsgCyAENgIoIAsgCTYCJCAGIAFBwwEgBikDqAEQDUEDEBkaIAYgAUHOAEKAgICAMCAGKQOwASInICdBgDAQdRoLIAELIgE3AwAgB0EIaiEIIAEQC0UN0wEM1QELIAcCfiAEIBEvASgQsAEhCEEAIQkCQCAGIAYoAigpAwhBCRBQIgEQCw0AIAYgAaciDUEwQQMQgAEgBK03AwAgCEEAIAhBAEobIQ4DQAJAAkACQCAJIA5GBEAgCCAEIAQgCEgbIQkDQCAIIAlGDQQgBiABIAggBSAIQQN0aikDABANQQcQnAEhCyAIQQFqIQggC0EATg0ACwwBCyAGIBQgCUEBEIoEIgtFDQAgBiANIAkQkwFBJxCAASIPDQEgBigCECALEPkBCyAGIAEQCkKAgICA4AAhAQwDCyAPIAs2AgAgCUEBaiEJDAELCyAGIAFBwwEgBikDqAEQDUEDEBkaIAYgAUHOACAGKAIQKAKMASkDCBANQQMQGRogAQwBCyABCyIBNwMAIAdBCGohCCABEAtFDdIBDNQBCyAHIBQpAwgQDTcDACAHQQhqIQgM0QELIAcgAxANNwMAIAdBCGohCAzQAQsgBwJ+QoCAgIAwIBkoAigiCEUNABogCK1CgICAgHCEEA0LNwMAIAdBCGohCAzPAQsgByAGQoCAgIAgEFIiATcDACAHQQhqIQggARALRQ3OAQzQAQsgBwJ+AkAgBhC+BSIJBEAgBiAJELwFIQggBiAJEBEgCA0BCyAGQZjHAEEAEBRCgICAgOAADAELAn4gCCkDaCIBEBAEQEKAgICA4AAgBkKAgICAIBBSIgEQCw0BGiAIIAE3A2gLIAEQDQsLIgE3AwAgB0EIaiEIIAEQC0UNzQEMzwELEAEACy
 
AKLwAAIQoCQCAGEE4iARALDQAgBCAKIAQgCkobIQkgCiEIA0AgCCAJRg0BIAggCmshCyAIQQN0IQ0gCEEBaiEIIAYgASALIAUgDWopAwAQDUEHEJwBQX9KDQALIAYgARAKQoCAgIDgACEBCyAHIAE3AwAgB0EIaiEIIAxBA2ohCiABEAtFDcsBDM0BCyAGIAdBCGsiCCkDABAKDMoBCyAGIAdBEGsiCCkDABAKIAggB0EIayIIKQMANwMADMkBCyAGIAdBGGsiCCkDABAKIAggB0EQayIIKQMANwMAIAggB0EIayIIKQMANwMADMgBCyAHIAdBCGspAwAQDTcDACAHQQhqIQgMxwELIAcgB0EQaykDABANNwMAIAcgB0EIaykDABANNwMIIAdBEGohCAzGAQsgByAHQRhrKQMAEA03AwAgByAHQRBrKQMAEA03AwggByAHQQhrKQMAEA03AxAgB0EYaiEIDMUBCyAHIAdBCGsiCCkDADcDACAIIAdBEGspAwAQDTcDACAHQQhqIQgMxAELIAcgB0EIayIIKQMAIgE3AwAgCCAHQRBrIggpAwA3AwAgCCABEA03AwAgB0EIaiEIDMMBCyAHIAdBCGsiCCkDACIBNwMAIAdBEGsiDCkDACEnIAwgB0EYayIMKQMANwMAIAggJzcDACAMIAEQDTcDACAHQQhqIQgMwgELIAcgB0EIayIIKQMAIgE3AwAgB0EQayIMKQMAIScgDCAHQRhrIgwpAwA3AwAgCCAnNwMAIAwgB0EgayIIKQMANwMAIAggARANNwMAIAdBCGohCAzBAQsgB0EQayIIKQMAIQEgCCAHQRhrIggpAwA3AwAgCCABNwMADL8BCyAHQRhrIggpAwAhASAIIAdBEGsiCCkDADcDACAHQQhrIgwpAwAhJyAMIAE3AwAgCCAnNwMADL4BCyAHQSBrIggpAwAhASAIIAdBGGsiCCkDADcDACAHQRBrIgwpAwAhJyA
 
MIAdBCGsiDCkDADcDACAIICc3AwAgDCABNwMADL0BCyAHQShrIggpAwAhASAIIAdBIGsiCCkDADcDACAHQRhrIgwpAwAhJyAMIAdBEGsiDCkDADcDACAIICc3AwAgDCAHQQhrIggpAwA3AwAgCCABNwMADLwBCyAHQQhrIggpAwAhASAIIAdBEGsiCCkDADcDACAHQRhrIgwpAwAhJyAMIAE3AwAgCCAnNwMADLsBCyAHQRBrIggpAwAhASAIIAdBGGsiCCkDADcDACAHQSBrIgwpAwAhJyAMIAE3AwAgCCAnNwMADLoBCyAHQRBrIggpAwAhASAIIAdBGGsiCCkDADcDACAHQSBrIgwpAwAhJyAMIAdBKGsiDCkDADcDACAIICc3AwAgDCABNwMADLkBCyAHQQhrIggpAwAhASAIIAdBEGsiCCkDADcDACAIIAE3AwAMuAELIAdBIGsiCCkDACEBIAggB0EQayIIKQMANwMAIAdBCGsiDCkDACEnIAwgB0EYayIMKQMANwMAIAggATcDACAMICc3AwAMtwELIAcgBiARKAI0IAooAABBA3RqKQMAEA0gEyAUEI0EIgE3AwAgB0EIaiEIIAxBBWohCiABEAtFDbcBDLkBCyAOQewBayELDAELIAovAAAhCyAMQQNqIQoLIBQgCjYCICAGIAcgC0EDdGsiCEEIaykDAEKAgICAMEKAgICAMCALIAhBABDiASIBEAsNuAEgDkEjRg27AUF/IQwgC0F/IAtBf0obIQkDQCAJIAxHBEAgBiAIIAxBA3RqKQMAEAogDEEBaiEMDAELCyAHIAtBf3NBA3RqIgcgATcDACAHQQhqIQgMtAELIAovAAAhCCAUIAxBA2oiCjYCICAGIAcgCEEDdGsiCUEQaykDACAJQQhrKQMAIAggCUEAEIwEIgEQCw23AUF+IQwgCEF+IAhBfkobIQsDQCALIAxHBEAgBiAJIAxBA3RqKQMAEAogDEEB
 
aiEMDAELCyAHQX4gCGtBA3RqIgcgATcDACAHQQhqIQgMswELIAovAAAhCCAUIAxBA2oiCjYCICAGIAcgCEEDdGsiCUEIaykDACAJQRBrKQMAQoCAgIAwIAggCUEAEOIBIgEQCw22ASAOQSVGDbkBQX4hDCAIQX4gCEF+ShshCwNAIAsgDEcEQCAGIAkgDEEDdGopAwAQCiAMQQFqIQwMAQsLIAdBfiAIa0EDdGoiByABNwMAIAdBCGohCAyyAQsgDEEDaiEJIAovAAAhCAJAIAYQTiIBEAtFBEBBACEKIAhBACAIGyELIAcgCEEDdGshCANAIAogC0YNAiAGIAEgChCTASAIIApBA3RqIg0pAwBBh4ABEBkhDiANQoCAgIAwNwMAIApBAWohCiAOQX9KDQALIAYgARAKCyAJIQoMtgELIAggATcDACAIQQhqIQggCSEKDLEBCyAMQQNqIQkgBiAHQRhrIgspAwBBAiAHQRBrIgggCi8AABCaAyIBEAsEQCAJIQoMtQELIAYgCykDABAKIAYgCCkDABAKIAYgB0EIaykDABAKIAsgATcDACAJIQoMsAELQoCAgIAQISgCQCAHQQhrKQMAIgEQIA0AQoGAgIAQISggARAQDQAgAEGexABBABAUDLQBCyAHICg3AwAgB0EIaiEIDK8BCyADEBBFDa0BIAZB28QAQQAQFAyyAQsgByEIIAdBEGspAwAhAQJ/AkACQCAHQQhrKQMAIidC/////29YDQAgJ6ciCS8BBhD3AUUNACAJKAIoIgtFDQAgCygCECINIA0oAhhBf3NBAnRB+HlyaigCACEJIA0QJyENAkADQCAJBEAgDSAJQQFrIglBA3RqIg4oAgRBwQFGDQIgDigCAEH///8fcSEJDAELCyAGQcLHAEEAEBQMAgsgAUKAgICAcFQNACALKAIUIAlBA3RqKQMAIidCgICAgHCDQoCAgICAf1INACAGICcQmAIhCyABpygCE
 
CINIAsgDSgCGHFBf3NBAnRqKAIAIQkgDRAnIQ0DQCAJBEBBACANIAlBAWtBA3RqIgkoAgQgC0YNBBogCSgCAEH///8fcSEJDAELCyAGQeLHAEEAEBQMAQsgBhAoC0F/C0EATg2tAQyxAQsCfyAHQRBrIggpAwAhAQJ/AkACQCAHQQhrIg4pAwAiJ0L/////b1gEQCAGECgMAQsgJ6ciCygCECINIA0oAhhBf3NBAnRB+HlyaigCACEJIA0QJyENAkACQANAIAkEQCANIAlBAWsiCUEDdGoiDygCBEHBAUYNAiAPKAIAQf///x9xIQkMAQsLQX8gBkH3ABDJBSInEAsNBBogBiALQcEBQQcQgAEiCUUEQCAGICcQCkF/DAYLIAkgJxANIic3AwAMAQsgCygCFCAJQQN0aikDABANIScLIAYgJxCYAiEJIAFC/////29YBEAgBhAoIAYgCRARDAELIAYgAacgCUEHEIABIQsgBiAJEBEgCw0BC0F/DAILIAtCgICAgDA3AwBBAAsLQQBIDbABIAYgCCkDABAKIAYgDikDABAKDKwBCyAGIAdBCGsiBykDABCSAQyvAQsgCigAACEIIAxBBmohCgJAAkACQAJAAkACQCAMLQAFIgkOBQABAgMEBQsgBkGAgAEgCBDfARoMswELIAYgCBDMBQyyAQsgBiAIEOEBDLEBCyAGQYnFAEEAEM8CDLABCyAGQarFAEEAEBQMrwELIBAgCTYCECAGQdDFACAQQRBqEEEMrgELIAovAAAhCCAMLwADIQsgFCAMQQVqIgo2AiACfiAGIAcgCEEDdGsiCUEIayINKQMAIAYpA7gBEFgEQCAGQoCAgIAwIAhBAU8EfiAJKQMABUKAgICAMAtBAiALQQFrEJkDDAELIAYgDSkDAEKAgICAMEKAgICAMCAIIAlBABDiAQsiARALDa0BQX8hDCAIQX8gCEF/ShshCwNAIAsgDEcEQCAGIAkgDEEDdG
 
opAwAQCiAMQQFqIQwMAQsLIAcgCEF/c0EDdGoiByABNwMAIAdBCGohCAypAQsgDEEDaiEJIAovAAAhDgJAIAYgEEEYaiAHQQhrIggpAwAQiwQiCgRAAn4gBiAHQRBrIgspAwAgBikDuAEQWARAIAZCgICAgDAgECgCGCINBH4gCikDAAVCgICAgDALQQIgDkEBaxCZAwwBCyAGIAspAwBCgICAgDAgECgCGCINIAoQIgshASAGIAogDRCYAyABEAtFDQELIAkhCgytAQsgBiALKQMAEAogBiAIKQMAEAogCyABNwMAIAkhCgyoAQsgB0EQayIIIAZCgICAgDAgCCkDACAHQQhrIggpAwAQywU3AwAMpwELIAYgB0EIayIIKQMAEPsBIgEQCw2qASAGIAgpAwAQCiAIIAE3AwAMpQELAn4gB0EIayIJKQMAISgjAEEwayIIJAACfkKAgICAICAGEL4FIgtFDQAaIAYgCxBeCyEBIAYgCxARAkAgARALBEAgASEnDAELAkAgBiAIQSBqEI8DIicQCwRAIAEhKAwBCyAIIAgpAyAiKTcDACAIICg3AxggCCABNwMQIAggCCkDKCIoNwMIIAZBKEEEIAgQggMgBiABEAogBiApEAoLIAYgKBAKCyAIQTBqJAAgJwsQCw2pASAGIAkpAwAQCiAJICc3AwAMpAELIAxBBWohCQJ/IAYoAsgBKAIQIgggCigAACINIAgoAhhxQX9zQQJ0aigCACEKIAgQJyEIAkADQCAKBEBBASELIAggCkEBa0EDdGoiCigCBCANRg0CIAooAgBB////H3EhCgwBCwsgBiAGKQPAASANEHciC0EATg0AQX8hCwsgC0EASAsEQCAJIQoMqQELIAcgC0EAR61CgICAgBCENwMAIAdBCGohCCAJIQoMpAELIAxBBWohCQJ+IA5BN2shDSAGKALIASIOKAIQIgsgCigAACIIIAsoAhhxQX9zQQJ0aigCACE
 
KIAsQJyELAkADQCAKRQ0BIAggCyAKQQFrIgpBA3RqIg8oAgRHBEAgDygCAEH///8fcSEKDAELCyAOKAIUIApBA3RqKQMAIgEQgwEEQCAGIAgQ4QFCgICAgOAADAILIAEQDQwBCyAGIAYpA8ABIgEgCCABIA0QEgsiARALBEAgCSEKDKgBCyAHIAE3AwAgB0EIaiEIIAkhCgyjAQsgCigAACEIIAxBBWohCiAGIAggB0EIayIIKQMAIA5BOWsQygVBf0oNogEMpAELIAxBBWohCSAKKAAAIQsgB0EQayIIKAIARQRAIAYgCxDNAiAJIQoMpgELIAkhCiAGIAsgB0EIaykDAEECEMoFQX9KDaEBIAghBwylAQsgCigAACELIAchCCAMQQZqIgkhCgJ/IAwtAAUhDiAGKALAASIWKAIQIg8gDygCGCALcUF/c0ECdGooAgAhDSAPECchDwJAAkACQAJAAkADQCANRQ0BIA1BA3QgD2oiGkEIayENIAsgGkEEaygCAEcEQCANKAIAQf///x9xIQ0MAQsLIA5BgAFxBEAgDS0AA0EEcQ0DDAQLIA5BwABxRQ0CIA0oAgAiDUGAgIAgcQ0CIA1BgICAgHxxQYCAgIAERg0BIA1BgICAwAFxQYCAgMABRg0CDAELIA5BgAFxDQEgFi0ABUEBcQ0BCyAGIAtB6sgAEMUBDAILIAYoAsgBKAIQIg4gDigCGCALcUF/c0ECdGooAgAhDSAOECchDgNAQQAgDUUNAxogDiANQQFrQQN0aiINKAIEIAtGDQEgDSgCAEH///8fcSENDAALAAsgBiALEMwFC0F/C0UNoAEgCSEKDKQBCyAKKAAAIQsgByEIIAxBBmoiCSEKAn8gDC0ABSINQQJxQQVyIA1BAXFBBnIgDUGAAXEiDhshGiAGQcgBQcABIA4baigCACIPKAIQIhYgFigCGCALcUF/c0ECdGooAgAhDUKAgICAwABCgICAgDAgDhsh
 
ASAWECchDgJAA0AgDQRAIA4gDUEBa0EDdGoiDSgCBCALRg0CIA0oAgBB////H3EhDQwBCwsgDy0ABUEBcUUNAEF/IAYgDyALIBoQgAEiC0UNARogCyABNwMAC0EAC0UNnwEgCSEKDKMBCyAMQQZqIQkCfyAHQQhrIggpAwAhASAMLQAFIQ4gBikDwAEiJ6coAhAiDSAKKAAAIgogDSgCGHFBf3NBAnRqKAIAIQsgDRAnIQ0gBiAnIAogAUKAgICAMEKAgICAMAJ/AkADQCALRQ0BIAtBA3QgDWpBCGsiDygCACELIAogDygCBEcEQCALQf///x9xIQsMAQsLQYDAASALQYCAgCBxRQ0BGgsgDkGGzgFyCxB1QR91CwRAIAkhCgyjAQsgBiAIKQMAEAogCSEKDJ4BCyAHIBIgCi8AAEEDdGopAwAQDTcDACAMQQNqIQogB0EIaiEIDJ0BCyAGIBIgCi8AAEEDdGogB0EIayIIKQMAEB4gDEEDaiEKDJwBCyAGIBIgCi8AAEEDdGogB0EIaykDABANEB4gDEEDaiEKDJoBCyAHIBUgCi8AAEEDdGopAwAQDTcDACAMQQNqIQogB0EIaiEIDJoBCyAGIBUgCi8AAEEDdGogB0EIayIIKQMAEB4gDEEDaiEKDJkBCyAGIBUgCi8AAEEDdGogB0EIaykDABANEB4gDEEDaiEKDJcBCyAHIBIgDC0AAUEDdGopAwAQDTcDACAMQQJqIQogB0EIaiEIDJcBCyAGIBIgDC0AAUEDdGogB0EIayIIKQMAEB4gDEECaiEKDJYBCyAGIBIgDC0AAUEDdGogB0EIaykDABANEB4gDEECaiEKDJQBCyAHIBIpAwAQDTcDACAHQQhqIQgMlAELIAcgHCkDABANNwMAIAdBCGohCAyTAQsgByAdKQMAEA03AwAgB0EIaiEIDJIBCyAHIB4pAwAQDTcDACAHQQhqIQgMkQELIAYgEiAHQQhrIggpA
 
wAQHgyQAQsgBiAcIAdBCGsiCCkDABAeDI8BCyAGIB0gB0EIayIIKQMAEB4MjgELIAYgHiAHQQhrIggpAwAQHgyNAQsgBiASIAdBCGspAwAQDRAeIAchCAyMAQsgBiAcIAdBCGspAwAQDRAeIAchCAyLAQsgBiAdIAdBCGspAwAQDRAeIAchCAyKAQsgBiAeIAdBCGspAwAQDRAeIAchCAyJAQsgByAVKQMAEA03AwAgB0EIaiEIDIgBCyAHIB8pAwAQDTcDACAHQQhqIQgMhwELIAcgICkDABANNwMAIAdBCGohCAyGAQsgByAhKQMAEA03AwAgB0EIaiEIDIUBCyAGIBUgB0EIayIIKQMAEB4MhAELIAYgHyAHQQhrIggpAwAQHgyDAQsgBiAgIAdBCGsiCCkDABAeDIIBCyAGICEgB0EIayIIKQMAEB4MgQELIAYgFSAHQQhrKQMAEA0QHiAHIQgMgAELIAYgHyAHQQhrKQMAEA0QHiAHIQgMfwsgBiAgIAdBCGspAwAQDRAeIAchCAx+CyAGICEgB0EIaykDABANEB4gByEIDH0LIAcgEygCACgCECkDABANNwMAIAdBCGohCAx8CyAHIBMoAgQoAhApAwAQDTcDACAHQQhqIQgMewsgByATKAIIKAIQKQMAEA03AwAgB0EIaiEIDHoLIAcgEygCDCgCECkDABANNwMAIAdBCGohCAx5CyAGIBMoAgAoAhAgB0EIayIIKQMAEB4MeAsgBiATKAIEKAIQIAdBCGsiCCkDABAeDHcLIAYgEygCCCgCECAHQQhrIggpAwAQHgx2CyAGIBMoAgwoAhAgB0EIayIIKQMAEB4MdQsgBiATKAIAKAIQIAdBCGspAwAQDRAeIAchCAx0CyAGIBMoAgQoAhAgB0EIaykDABANEB4gByEIDHMLIAYgEygCCCgCECAHQQhrKQMAEA0QHiAHIQgMcgsgBiATKAIMKAIQIAdBCGspAwAQDR
 
AeIAchCAxxCyAHIBMgCi8AAEECdGooAgAoAhApAwAQDTcDACAMQQNqIQogB0EIaiEIDHALIAYgEyAKLwAAQQJ0aigCACgCECAHQQhrIggpAwAQHiAMQQNqIQoMbwsgBiATIAovAABBAnRqKAIAKAIQIAdBCGspAwAQDRAeIAxBA2ohCiAHIQgMbgsgDEEDaiEJIBMgCi8AACIIQQJ0aigCACgCECkDACIBEIMBRQRAIAcgARANNwMAIAdBCGohCCAJIQoMbgsgBiARIAhBARDHAiAJIQoMcQsgDEEDaiEJIBMgCi8AACIIQQJ0aigCACgCECIKKQMAEIMBRQRAIAYgCiAHQQhrIggpAwAQHiAJIQoMbQsgBiARIAhBARDHAiAJIQoMcAsgDEEDaiEJIBMgCi8AACIIQQJ0aigCACgCECIKKQMAEIMBRQRAIAYgESAIQQEQxwIgCSEKDHALIAYgCiAHQQhrIggpAwAQHiAJIQoMawsgBiASIAovAABBA3RqQoCAgIDAABAeIAxBA2ohCiAHIQgMagsgDEEDaiEJIBIgCi8AACIIQQN0aikDACIBEIMBRQRAIAcgARANNwMAIAdBCGohCCAJIQoMagsgBiARIAhBABDHAiAJIQoMbQsgDEEDaiEJIBIgCi8AACIIQQN0aiIKKQMAEIMBRQRAIAYgCiAHQQhrIggpAwAQHiAJIQoMaQsgBiARIAhBABDHAiAJIQoMbAsgDEEDaiEJIBIgCi8AAEEDdGoiCCkDABCDAUUEQCAGQerFAEEAEM8CIAkhCgxsCyAGIAggB0EIayIIKQMAEB4gCSEKDGcLIAovAAAhCyAUQRhqIQ0gFCgCHCEKA0AgDSAKIghHBEAgCCgCBCEKIAhBAmsvAQAgC0cNASAIQQhrIgktAAVBAnENASAUKAIUIAtBA3RqKQMAEA0hASAIIAhBEGo2AgggCCABNwMQIAgQRiAJIAktAAVBAXI6AAUgBigCECA
 
JQQMQvAEMAQsLIAxBA2ohCiAHIQgMZgsgCigAACEJIAwvAAUhCyAHIAZCgICAgCAQUiIBNwMAIAdBCGohCCAMQQdqIQoCQAJAIAEQCw0AAkAgDkH6AEYEQCATIAtBAnRqKAIAIgsgCygCAEEBajYCAAwBCyAGIBQgCyAOQfkARhCKBCILRQ0BCyAGIAcoAgAgCUEiEIABIg0NASAXIAsQ+QELIAghBwxqCyANIAs2AgAgByAGIAkQXjcDCCAHQRBqIQgMZQsgDEEFaiEJAn8gBikDyAEiAaciDSgCECILIAooAAAiCCALKAIYcUF/c0ECdGooAgAhCiALECchCyAHAn4CQAJAAkACQANAIApFDQEgCCALIApBAWsiDkEDdGoiCigCBEcEQCAKKAIAQf///x9xIQoMAQsLIA0oAhQgDkEDdGopAwAQgwEEQCAGIAgQ4QEMAgsgCi0AA0EIcQ0DIAZBgIABIAgQ3wEMBQsgBiAGKQPAASAIEHciCkEATg0BC0F/DAMLQoCAgIAwIApFDQEaIAYpA8ABIQELIAEQDQs3AwAgByAGIAgQXjcDCEEACwRAIAkhCgxpCyAHQRBqIQggCSEKDGQLIAogCigAAGohCiAHIQggBhB/RQ1jDGcLIAogCi4AAGohCiAHIQggBhB/RQ1iDGYLIAogCiwAAGohCiAHIQggBhB/RQ1hDGULAn8gDEEFaiIJAn8gB0EIayIIKQMAIgFCIIinQQNNBEAgAacMAQsgBiABECwLRQ0AGiAJIAooAABqQQRrCyEKIAYQf0UNYAxiCwJ/IAxBBWoiCQJ/IAdBCGsiCCkDACIBQiCIp0EDTQRAIAGnDAELIAYgARAsCw0AGiAJIAooAABqQQRrCyEKIAYQf0UNXwxhCwJ/IAxBAmoiCQJ/IAdBCGsiCCkDACIBQiCIp0EDTQRAIAGnDAELIAYgARAsC0UNABogCiwAACAJakEBawshCiAGEH9FDV4MYAsC
 
fyAMQQJqIgkCfyAHQQhrIggpAwAiAUIgiKdBA00EQCABpwwBCyAGIAEQLAsNABogCiwAACAJakEBawshCiAGEH9FDV0MXwsgByAKIAooAABqIBEoAhRrrUKAgICA0ACENwMAIAxBBWohCiAHQQhqIQgMXAsgCigAACEIIAcgDCARKAIUa0EFaq03AwAgCCAKaiEKIAdBCGohCAxbCwJAIAdBCGsiCCkDACIBQv////8PVg0AIAGnIgkgESgCGE8NACARKAIUIAlqIQoMWwsgBkGOxgBBABBBDF4LIAchCCAHQQhrIgkCfiAJKQMAIQFBACENIwBBEGsiCSQAIAFCIIinIg5BAWoiC0EETUEAQQEgC3RBGXEbRQRAIAYgARCXBSEBCwJAAkACQCAGQRgQLSILRQ0AIAZCgICAgCBBERBQIicQCwRAIAYgCxAYDAELIAtBADYCECALIAE3AwAgC0EANgIIICenIAs2AiAgDkF+cUECRg0CIAEQDSIoIQECQANAAkACQCAGIAEQmQIiARAmRQRAIAEQCw0EIAYgCUEMaiAJQQhqIAGnQREQkAENAiAGIAkoAgwgCSgCCCIOEGQgDkUNASAGIAEQCiAoEA0hAQNAIAYgCUEMaiAJQQhqIAGnQSEQkAFFBEBBACELIAkoAgwhDSAJKAIIIQ4DQCALIA5HBEAgBiAnIA0gC0EDdGoiDygCBEKAgICAICAPKAIAQQBHQQJ0EBkaIAtBAWohCwwBCwsgBiANIA4QZCAGIAEQmQIiARAmDQkgARALDQYgBhB/RQ0BCwsgBiABEAoMBAsCQCAopyIOLQAFQQhxRQ0AIA4oAhAiFhAnIQ8gFigCICIWQQAgFkEAShshFgNAIA0gFkcEQCAPLQADQRBxDQIgD0EIaiEPIA1BAWohDQwBCwsgC0EBNgIIIAsgDigCKDYCDAwHCyAGIAlBDGogCUEIaiAOQREQkAENAyAJKAIMIQ0gCSgCCCEOQ
 
QAhCwNAIAsgDkcEQCAGICcgDSALQQN0aigCBEKAgICAIEEAEJcCGiALQQFqIQsMAQsLIAYgDSAOEGQMBgsgBhB/RQ0BCwsgBiABEAoLIAYgJxAKDAELIAYgARAKC0KAgICA4AAhJwsgCUEQaiQAICciAQs3AwBBf0EAIAEQCxtFDVkMXQtCgYCAgBAhAUKAgICAMCEnAkACQCAHQQhrKQMAIihCgICAgHBUDQAgKKciDS8BBkERRw0AIA0oAiAhCANAAkAgCCgCCARAIAgoAhAiCyAIKAIMTw0DIAsQkwEhCSAIIAtBAWo2AhAMAQsgCCgCECILIA0oAhAiCSgCIE8NAiAJECcgC0EDdGoiDigCBCEJIAggC0EBajYCECAJRQ0BIA4tAANBEHFFDQELIAYgCCkDACAJEHciC0EASA0CIAtFDQALQoCAgIAQIQEgBiAJEF4hJwsgByABNwMIIAcgJzcDAEEAIQsLIAsNXCAHQRBqIQgMWAsgBiAHQQAQlwMNWyAHQoCAgIDQADcDCCAHQRBqIQgMVwsgDEECaiEKQX0gDC0AAWshCyMAQRBrIgkkAEEBIQggCUEBNgIMAkACQCAHIAtBA3RqIgspAwAiARAQRQRAQX8hDUF/IQgCQCAGIAEgCykDCCAJQQxqEKsBIgEQCw0AIAkoAgwiCA0AQQAhCAwCCyAGIAspAwAQCiALQoCAgIAwNwMAIAhBAEgNAiAGIAEQCiAIQQBHIQgLQoCAgIAwIQELIAcgATcDACAHIAitQoCAgIAQhDcDCEEAIQ0LIAlBEGokACANDVogB0EQaiEIDFYLIAYgB0EBEJcDDVkgB0KAgICA0AA3AwggB0EQaiEIDFULIwBBEGsiCCQAAn8gB0EIayIJKQMAIgEQIEUEQCAGQaDGAEEAEBRBfwwBC0F/IAYgASAIQQxqEKAFIicQCw0AGiAGIAEQCiAJICc3AwAgByAIKAIMQQBHrUKAgICAEIQ3Aw
 
BBAAshCSAIQRBqJAAgCQ1YIAdBCGohCAxUCyAHQQhrKQMAECANUiAGQaDGAEEAEBQMVwsgBiAHQRBrIgkpAwAQCiAHQRhrIggpAwAiARAQDVIgBiABQQAQrwEEQCAJIQcMVwsgBiAIKQMAEAoMUgsgB0EIayIHKQMAIQEDQAJAIAcgG00NACAHQQhrIggpAwAiJ0KAgICAcINCgICAgNAAUQ0AIAYgJxAKIAghBwwBCwsgByAjSQRAIAZBv8YAQQAQQSAGIAEQCgxWCyAHIAdBCGsiCCkDADcDACAHQRBrIgwpAwAhJyAMIAdBGGsiDCkDADcDACAIICc3AwAgDCABNwMAIAdBCGohCAxRCyAGIAdBGGspAwAgB0EgaykDAEEBIAdBCGsiCBAiIgEQCw1UIAYgCCkDABAKIAggATcDACAHIQgMUAsgDEECaiEKIAYgB0EgayIIKQMAIgFBF0EGIAwtAAEiCUEBcRsgAUEAEBIiJxALDVNCgYCAgBAhAQJAICcQEA0AICcQJg0AIAgpAwAhAQJ+IAlBAnEEQCAGICcgAUEAQQAQNQwBCyAGICcgAUEBIAdBCGsQNQsiARALDVQgBiAHQQhrIggpAwAQCiAIIAE3AwBCgICAgBAhAQsgByABNwMAIAdBCGohCAxPCwJ/IAdBCGsiCCkDACIBQiCIp0EDTQRAIAGnQQBHDAELIAYgARAsCyEMIAggDEWtQoCAgIAQhDcDACAHIQgMTgsgDEEFaiEJIAYgB0EIayIIKQMAIgEgCigAACABQQAQEiIBEAsEQCAJIQoMUgsgBiAIKQMAEAogCCABNwMAIAchCCAJIQoMTQsgDEEFaiEJIAYgB0EIaykDACIBIAooAAAgAUEAEBIiARALBEAgCSEKDFELIAcgATcDACAHQQhqIQggCSEKDEwLIAYgB0EQayIIKQMAIAooAAAgB0EIaykDAEGAgAIQlwIhByAGIAgpAwAQCiAMQQVqIQo
 
gB0F/Sg1LDE0LIAxBBWohCSAGIAooAAAQyQUiARALBEAgCSEKDE8LIAcgATcDACAHQQhqIQggCSEKDEoLAn4gB0EIayIIKQMAIQEgB0EQayILKQMAIidC/////29YBEAgBhAoQoCAgIDgAAwBCyABQoCAgIBwg0KAgICAgH9SBEAgBhDqA0KAgICA4AAMAQsgBiABEJgCIQcgJ6ciDigCECINIAcgDSgCGHFBf3NBAnRqKAIAIQkgDRAnIQ0CQANAIAkEQCANIAlBAWsiCUEDdGoiDygCBCAHRg0CIA8oAgBB////H3EhCQwBCwsgBiAHEJ8FQoCAgIDgAAwBCyAOKAIUIAlBA3RqKQMAEA0LIQEgBiAIKQMAEAogBiALKQMAEAogCyABNwMAIAEQC0UNSQxLCwJ/IAdBCGsiDSkDACEBIAdBEGspAwAhJwJAAkAgB0EYayIIKQMAIihC/////29YBEAgBhAoDAELIAFCgICAgHCDQoCAgICAf1IEQCAGEOoDDAELIAYgARCYAiEHICinIg4oAhAiCyAHIAsoAhhxQX9zQQJ0aigCACEJIAsQJyELA0AgCQRAIAsgCUEBayIJQQN0aiIPKAIEIAdGDQMgDygCAEH///8fcSEJDAELCyAGIAcQnwULIAYgJxAKQX8MAQsgBiAOKAIUIAlBA3RqICcQHkEACyEHIAYgCCkDABAKIAYgDSkDABAKIAdBf0oNSAxKCwJ/IAdBEGsiCCkDACEBIAdBCGspAwAhJwJAAkAgB0EYaykDACIoQv////9vWARAIAYQKAwBCyABQoCAgIBwg0KAgICAgH9SBEAgBhDqAwwBCyAGIAEQmAIhByAopyINKAIQIgsgByALKAIYcUF/c0ECdGooAgAhCSALECchCwJAA0AgCUUNASAHIAsgCUEBa0EDdGoiCSgCBEcEQCAJKAIAQf///x9xIQkMAQsLIAYgB0GZygAQxQEMAQsgBiANIAdBBxCA
 
ASIHDQELIAYgJxAKQX8MAQsgByAnNwMAQQALIQcgBiAIKQMAEAogB0F/Sg1HDEkLIAooAAAhCCAMQQVqIQogBiAHQRBrKQMAIAggB0EIayIIKQMAQYeAARAZQX9KDUYMSAsgCigAACELIAchCCAMQQVqIgkhCiAGIAdBCGspAwAgCxDIBUF/Sg1FIAkhCgxJCyAHIQggBiAHQQhrKQMAIAdBEGspAwAQxwVBf0oNRAxICwJAIAdBCGsiCCkDACIBECBFBEAgARAmRQ0BCyAGIAdBEGspAwAgAUEBEJsCQQBIDUgLIAYgARAKDEMLIAYgB0EIaykDACAHQRBrKQMAEIkEIAchCAxCCwJ/IA5B1QBGBEAgBiAHQRBrKQMAEDkiCEUNRyAHQRhrDAELIAooAAAhCCAMQQVqIQogB0EQawshCyAKLQAAIg1BBHEhCSALKQMAIScCfgJ+AkACQAJAIA1BA3EOAgABAgsgCUGDzgFyIQsgB0EIaykDACIBISpCgICAgDAMAgsgCUGBmgFyIQtCgICAgDAhKkKAgICAMCEoIAdBCGspAwAiAQwCCyAJQYGqAXIhC0KAgICAMCEqIAdBCGspAwAiAQshKEKAgICAMAshKwJ/QcXKACENIAYgCBCcBSEpAkAgC0GAEHFFBEBBysoAIQ0gC0GAIHFFDQELIAYgDSApQb4VEL0BISkLQX8hDQJAICkQCw0AIAYgAUE2IClBARAZQQBIDQAgBiABICcQiQRBACENCyANQQBOCwRAIAYgJyAIICogKyAoIAsQdSENCyAGIAdBCGspAwAQCgJAIA5B1QBHBEAgB0EIayEIDAELIAYgCBARIAYgB0EQayIIKQMAEAoLIApBAWohCiANQX9KDUEMQwsgCigAACEPIAxBBmoiCSEKIA5B1wBGIQ4gByIIQQhrIhYpAwAhKiAHQRBrIQ0CfgJAAkAgDC0ABUEBcQRAIA0pAwAiJxAmBEBCgICAgCAhK
 
CAGKQMwEA0hJwwCCyAnELEBRQRAIAZBz8oAQQAQFEKAgICAMCEpQoCAgIAwISgMAwtCgICAgDAhKSAGICdBOyAnQQAQEiIoEAsNAiAoECYNASAoECANASAGQfDKAEEAEBQMAgsgBigCKCkDCBANISggBikDMBANIScLIAYgKBBSIikQCw0AICqnIgstABFBMHFFBEAgBiAnQQ0QUCIBEAsNAUKAgICAMCEqIAYgASALIBMgFBChBSIBEAsNASAGIAEgKRCJBCABQQEQrgMgBiABQTAgCzMBLEEBEBkaAkAgDgRAIAYgASAHQRhrKQMAEMcFQQBODQEMAwsgBiABIA8QyAVBAEgNAgtBACELIAYgKUE8IAEQDSIBQYOAARAZQQBIDQEgASAGIAFBOyApEA0iKUGAgAEQGUF/Sg0CGgwBC0GbywBBoQ1BqPwAQbrLABAAAAsgBiAnEAogBiAoEAogBiAqEApBfyELICkhKCABISdCgICAgDAhKUKAgICAMAshASAGICgQCiAGICcQCiANIAE3AwAgFiApNwMAIAtBAE4NQCAJIQoMRAsgBiAHQRBrIgkpAwAgB0EIayIIKQMAEJ4BIQEgBiAJKQMAEAogCSABNwMAIAEQC0UNPwxBCyAHQQhrIgggBiAHQRBrKQMAIAgpAwAQngEiATcDACAHIQggARALRQ0+DEILIAdBCGspAwAhASAHQRBrKQMAIicQEARAIAYgARA5IghFDUIgBiAIEM0CIAYgCBARDEILIAYgJyABEA0QngEiARALDUEgByABNwMAIAdBCGohCAw9CyAGIAdBCGsiDSkDABA5IglFDUAgBiAHQRBrIggpAwAgCSAHQRhrIgspAwBBABASIQEgBiAJEBEgARALDUAgBiANKQMAEAogBiAIKQMAEAogBiALKQMAEAogCyABNwMADDwLIAYgB0EYayIIKQMAIAdBEGspAwAgB0EIaykDAEGAgAIQ4AEhByAGIA
 
gpAwAQCiAHQX9KDTsMPQsgB0EYayIIKQMAIigQECELIAYQ+gEhCQJ/IAsEQCAJBEAgBiAHQRBrKQMAEDkiCEUNQSAGIAgQzQIgBiAIEBEMQQsgCCAGKQPAARANIig3AwBBgIACDAELQYCABkGAgAIgCRsLIQkgBiAoIAdBEGspAwAgB0EIaykDACAJEOABIQcgBiAIKQMAEAogB0F/Sg06DDwLIAdBGGsiCSkDAEL/////b1gEQCAGECgMPgsgBiAHQRBrIg0pAwAQOSILRQ09IAYgCSkDACALIAdBCGspAwAgB0EgayIIKQMAQYCAAhCIBCEHIAYgCxARIAYgCCkDABAKIAYgCSkDABAKIAYgDSkDABAKIAdBf0oNOSAHQR52QQJxRQw6CyAGIAdBGGspAwAgB0EQaykDABANIAdBCGsiCCkDAEGHgAEQygJBf0oNOAw6CyMAQRBrIggkAAJAIAdBEGsiDikDACIoQoCAgIAQWgRAIAZB+8sAQQAQQUF/IQ0MAQtBfyENIAYgB0EIayILKQMAIgFBwwEgAUEAEBIiARALDQAgAUEpQQEQjwQhDyAGIAEQCiAGIAspAwBBABD1ASIBEAsNACAGIAFB6gAgAUEAEBIiJxALBEAgBiABEAoMAQsgKKchCQJAAkACQCAPRQ0AICdBKkEAEI8ERQ0AIAspAwAgCEEMaiAIQQhqEI4CRQ0AIAYgCEEEaiALKQMAENoBDQIgCCgCBCIPIAgoAghHDQAgB0EYayEWIAgoAgwhGkEAIQsDQCALIA9GDQIgBiAWKQMAIAkgGiALQQN0aikDABANQQcQnAFBAEgNAyALQQFqIQsgCUEBaiEJDAALAAsgB0EYayELA0AgBiABICcgCEEEahCrASIoEAsNAiAIKAIEDQEgBiALKQMAIAkgKEEHEJwBQX9MDQIgCUEBaiEJDAALAAsgDiAJrTcDACAGIAEQCiAGICcQCkEAIQ0MAQsgBiABQQE
 
QrwEaIAYgARAKIAYgJxAKCyAIQRBqJAAgDQ07IAYgB0EIayIIKQMAEAoMNwsgDEECaiEKIAchCCAGIAcgDC0AASIJQX9zQQN0QWByaikDACAHIAlBAnZBf3NBA3RBQHJqKQMAIAcgCUEFdkF/c0EDdGopAwBBABDGBUUNNgw6CwJAIAdBCGsiCCkDACIBQiCIIiggB0EQayIJKQMAIidCIIgiKYRQBEAgAaciC0EASCALICenIg1qIgsgDUhzDQEgCSALrTcDAAw3CyApp0ELakESSSAop0ELakESSXINACAJICcQSSABEEmgEBU3AwAMNgsgBiAHEMQFRQ01DDkLIAxBAmohCgJAIBIgDC0AAUEDdGoiCCkDACIBQiCIIiggB0EIayIHKQMAIidCIIiEUARAICenIglBAEggCSABpyILaiIJIAtIcw0BIAggCa03AwAgByEIDDYLIChC+f///w9SDQAgBiAnQQIQwAEiARALDTkgBiAIKQMAEA0gARDGAiIBEAsNOSAGIAggARAeIAchCAw1CyAQIAEQDTcDICAQIAcpAwA3AyggBiAmEMQFDTggBiAIIBApAyAQHiAHIQgMNAsgB0EIayIIKQMAIgFCIIgiKCAHQRBrIgkpAwAiJ0IgiCIphFAEQCAnQiCGQiCHIAFCIIZCIId9IgFCgICAgAh8Qv////8PVg0EIAkgAUL/////D4M3AwAMNAsgKadBC2pBEkkgKKdBC2pBEklyDQMgCSAnEEkgARBJoRAVNwMADDMLAnwgB0EIayIIKQMAIgFCIIgiKCAHQRBrIgkpAwAiJ0IgiCIphFAEQCABQiCGQiCHICdCIIZCIId+IihCgICAgAh8QoCAgIAQWgRAICi5DAILRAAAAAAAAACAIChQRSABICeEp0F/SnJFDQEaIAkgKEL/////D4M3AwAMNAsgKadBC2pBEkkgKKdBC2pBEklyDQMgJxBJIAEQSaILISwgCSAsEBU3
 
AwAMMgsgB0EIayIIKQMAIgEgB0EQayIJKQMAIieEQv////8PVg0BIBQtAChBBHENASAJAn4gJ6e3IAGnt6MiLL0CfyAsmUQAAAAAAADgQWMEQCAsqgwBC0GAgICAeAsiB7e9UQRAIAetDAELICwQFQs3AwAMMQsgB0EIayIIKQMAIgEgB0EQayIJKQMAIieEQv////8PVg0AICenIgtBH3YgAaciDUEBSHINACAJIAsgDW+tNwMADDALIwBBEGsiCCQAIAdBCGsiCykDACEBAn8CQCAGIAhBCGogB0EQayIJKQMAEFkEQCAGIAEQCgwBCyAGIAggARBZDQAgCQJ+AnwCQAJAAkACQAJAAkAgDkGaAWsOBgABAgQFAwQLIAgrAwggCCsDAKIMBQsgCCsDCCAIKwMAowwECyAIKwMIIAgrAwAQ8wUMAwsgCCsDCCAIKwMAEJoFDAILEAEACyAIKwMIIAgrAwChCyIsvQJ/ICyZRAAAAAAAAOBBYwRAICyqDAELQYCAgIB4CyIJt71RBEAgCa0MAQsgLBAVCzcDAEEADAELIAlCgICAgDA3AwAgC0KAgICAMDcDAEF/CyEJIAhBEGokACAJDTMgB0EIayEIDC8LIAdBBGsoAgAiCEUgCEELakERS3INLSAHIQggBiAHQY0BEJICRQ0uDDILAkACfCAHQQhrIggpAwAiAUIgiKciCUUEQEQAAAAAAAAAgCABpyIMRQ0BGkQAAAAAAADgQSAMQYCAgIB4Rg0BGiAIQgAgAX1C/////w+DNwMAIAchCAwwCyAJQQtqQRJJDQEgARBJmgshLCAIICwQFTcDACAHIQgMLgsgByEIIAYgB0GMARCSAkUNLQwxCyAHQQhrIggpAwAiAUL/////D1YgAadB/////wdGckUEQCAIIAFCAXxC/////w+DNwMAIAchCAwtCyAHIQggBiAHQY8BEJICRQ0sDDALIAdBCGsiCCkDACIBQv////8PV
 
iABp0GAgICAeEZyRQRAIAggAUIBfUL/////D4M3AwAgByEIDCwLIAchCCAGIAdBjgEQkgJFDSsMLwsjAEEQayIIJAACf0F/IAYgCEEIaiAHQQhrIgkpAwAQWQ0AGiAHAn4gCCsDCCIsIA5BAXRBoAJruKBEAAAAAAAA8L+gIi29An8gLZlEAAAAAAAA4EFjBEAgLaoMAQtBgICAgHgLIgu3vVEEQCALrQwBCyAtEBULNwMAICy9An8gLJlEAAAAAAAA4EFjBEAgLKoMAQtBgICAgHgLIgu3vVEEQCALrSEBQQAMAQsgLBAVIQFBAAshCyAJIAE3AwAgCEEQaiQAIAsNLiAHQQhqIQgMKgsgDEECaiEKIBIgDC0AAUEDdGoiCCkDACIBQv////8PViABp0H/////B0ZyRQRAIAggAUIBfEL/////D4M3AwAMKQsgECABEA03AxggBiAiQY8BEJICDS0gBiAIIBApAxgQHgwoCyAMQQJqIQogEiAMLQABQQN0aiIIKQMAIgFC/////w9WIAGnQYCAgIB4RnJFBEAgCCABQgF9Qv////8PgzcDAAwoCyAQIAEQDTcDGCAGICJBjgEQkgINLCAGIAggECkDGBAeDCcLIAdBCGsiCCkDACIBQv////8PWARAIAggAUL/////D4U3AwAgByEIDCgLIAchCCMAQRBrIgkkACAGIAlBDGogB0EIayINKQMAEMMBIQsgDUKAgICAMCAJNQIMQv////8PhSALGzcDACAJQRBqJABBf0EAIAsbRQ0nDCsLIAdBCGsiCCkDACIBIAdBEGsiCSkDACInhEL/////D1gEQCAJICenIAGndK03AwAMJwsgBiAHQaABEMUCRQ0mDCoLIAdBCGsiCCkDACIBIAdBEGsiCSkDACInhEL/////D1gEQCAJAn4gJ6cgAad2IgdBAE4EQCAHrQwBCyAHuBAVCzcDAAwmCyMAQRBrIgkkACAHQQhrIg0pAw
 
AhAQJ/AkAgBiAJQQxqIAdBEGsiCykDABDpAwRAIAYgARAKDAELIAYgCUEIaiABEOkDDQAgCwJ+IAkoAgwgCSgCCHYiC0EATgRAIAutDAELIAu4EBULNwMAQQAMAQsgC0KAgICAMDcDACANQoCAgIAwNwMAQX8LIQsgCUEQaiQAIAtFDSUMKQsgB0EIayIIKQMAIgEgB0EQayIJKQMAIieEQv////8PWARAIAkgJ6cgAad1rTcDAAwlCyAGIAdBoQEQxQJFDSQMKAsgB0EIayIIKQMAIgEgB0EQayIJKQMAIieEQv////8PWARAIAkgASAngzcDAAwkCyAGIAdBrQEQxQJFDSMMJwsgB0EIayIIKQMAIAdBEGsiCSkDAIQiAUL/////D1gEQCAJIAE3AwAMIwsgBiAHQa8BEMUCRQ0iDCYLIAdBCGsiCCkDACIBIAdBEGsiCSkDACInhEL/////D1gEQCAJIAEgJ4VC/////w+DNwMADCILIAYgB0GuARDFAkUNIQwlCyAHQQhrIggpAwAiASAHQRBrIgkpAwAiJ4RC/////w9YBEAgCSAnpyABp0itQoCAgIAQhDcDAAwhCyAGIAdBowEQlgNFDSAMJAsgB0EIayIIKQMAIgEgB0EQayIJKQMAIieEQv////8PWARAIAkgJ6cgAadMrUKAgICAEIQ3AwAMIAsgBiAHQaQBEJYDRQ0fDCMLIAdBCGsiCCkDACIBIAdBEGsiCSkDACInhEL/////D1gEQCAJICenIAGnSq1CgICAgBCENwMADB8LIAYgB0GlARCWA0UNHgwiCyAHQQhrIggpAwAiASAHQRBrIgkpAwAiJ4RC/////w9YBEAgCSAnpyABp06tQoCAgIAQhDcDAAweCyAGIAdBpgEQlgNFDR0MIQsgB0EIayIIKQMAIgEgB0EQayIJKQMAIieEQv////8PWARAIAkgJ6cgAadGrUKAgICAEIQ3AwAMHQsgBiAHQQA
 
QwwVFDRwMIAsgB0EIayIIKQMAIgEgB0EQayIJKQMAIieEQv////8PWARAIAkgJ6cgAadHrUKAgICAEIQ3AwAMHAsgBiAHQQEQwwVFDRsMHwsgB0EIayIIKQMAIgEgB0EQayIMKQMAIieEQv////8PWARAIAwgJ6cgAadGrUKAgICAEIQ3AwAMGwsgBiAHQQAQwgUMGgsgB0EIayIIKQMAIgEgB0EQayIMKQMAIieEQv////8PWARAIAwgJ6cgAadHrUKAgICAEIQ3AwAMGgsgBiAHQQEQwgUMGQsCfyAHQQhrKQMAIgFC/////29YBEAgBkG0zABBABAUQX8MAQtBfyEIAkAgBiAHQRBrIg0pAwAiJxA5IglFDQAgBiABIAkQdyELIAYgCRARIAtBAEgNACAGICcQCiAGIAEQCiANIAtBAEetQoCAgIAQhDcDAEEAIQgLIAgLDRwgB0EIayEIDBgLAn8gBiAHQRBrIgkpAwAiASAHQQhrKQMAIicQ2wUiCEEASARAIAgMAQsgBiABEAogBiAnEAogCSAIQQBHrUKAgICAEIQ3AwBBAAsNGyAHQQhrIQgMFwsgBiAHQQhrIggpAwAiARCHBCEMIAYgARAKIAggBiAMEDE3AwAgByEIDBYLIAdBEGsiDSkDACEBQX8hCAJAIAYgB0EIaykDACInEDkiCUUNACAGIAEgCUGAgAIQ3QEhCyAGIAkQESALQQBIDQAgBiABEAogBiAnEAogDSALQQBHrUKAgICAEIQ3AwBBACEICyAIDRkgB0EIayEIDBULIAooAAAhCCAMQQVqIQogBiAGKQPAASAIQQAQ3QEiCEEASA0YIAcgCEEAR61CgICAgBCENwMAIAdBCGohCAwUCyAHQQhrIggpAwAiAUL/////b1YNEiAGIAEQKSIBEAsNFyAGIAgpAwAQCiAIIAE3AwAgByEIDBMLIAdBCGsiCCkDACIBQiCIp0EIaiIJQQhNQQBBASAJ
 
dEGDAnEbDREgBiABEJgEIgEQCw0WIAYgCCkDABAKIAggATcDACAHIQgMEgsCQCAHQRBrKQMAIgEQEEUEQCABECZFDQELIAZB1cYAQQAQFAwWCyAHQQhrIggpAwAiAUIgiKdBCGoiCUEITUEAQQEgCXRBgwJxGw0QIAYgARCYBCIBEAsNFSAGIAgpAwAQCiAIIAE3AwAgByEIDBELIAxBCmohCSAMKAAFIQsgDC0ACSENIAYgB0EIayIIKQMAIgEgCigAACIKEHciD0EASA0OAkAgD0UNACANBEBBACENIAYgAUHNASABQQAQEiInEAsEf0F/BSAnECAEQCAGIAYgJyAKICdBABASECwhDQsgBiAnEAogDQsiDUEASA0QIA0NAQsCQAJAAkACQAJAAkACQCAOQfIAaw4GAAECAwQFBgsgBiABIAogAUEAEBIiARALDRUgBiAIIAEQHgwFCyAGIAEgCiAHQRBrIgcpAwBBgIACEJcCIQogBiAIKQMAEAogCkF/TA0UDAQLIAYgASAKQQAQ3QEiCkEASA0TIAYgCCkDABAKIAggCkEAR61CgICAgBCENwMADAMLIAcgBiAKEF43AwAgB0EIaiEHDAILIAYgASAKIAFBABASIgEQCw0RIAcgATcDACAHQQhqIQcMAQsgBiABIAogAUEAEBIiARALDRAgBiAIKQMAEAogCEKAgICAMDcDACAHIAE3AwAgB0EIaiEHCyAJIAtqQQVrIQogByEIDBELIAYgCCkDABAKIAkhCgwQCyAHQQhrKQMAIihCgICAgHCDQoCAgIAwUQ0MDAULIAdBCGspAwAiKEKAgICAcINCgICAgCBRDQsMBAsgBiAHQQhrKQMAIigQhwRBxQBGDQEMAwsgBiAHQQhrKQMAIigQhwRBG0cNAgsgBiAoEAoMCAsgB0EIaykDACIoQoCAgIBgg0KAgICAIFENBwsgBiAoEAogB0EIa0KAgICAEDcDACAHIQgMC
 
QsgESgCFCEIIBAgDjYCBCAQIAhBf3MgCmo2AgAgBkHrxgAgEBBBDAwLIAcgCigAAK03AwAgDEEFaiEKIAdBCGohCAwHC0IBISgMDAtCAiEoDAsLQoCAgIAwISgMCgsgB0EIayIHKQMAIQEMCgsgB0EIa0KBgICAEDcDACAHIQgMAgsgCSEKDAULIAchCAtBAQshCSAIIQcgCiEMIAkNAQsLIAghBwtBASEIDAULAn8CQAJAIBcpA4ABIgEiJ0KAgICAcFQNACAnpyIILwEGQQNHDQAgCCgCECIMIAwoAhhBf3NBAnRBqH5yaigCACEIIAwQJyEMA0AgCEUEQEEAIQgMAwsgCEEDdCAMaiIJQQhrIQggCUEEaygCAEE1Rg0CIAgoAgBB////H3EhCAwACwALQQAMAQsgCEULBEAgFCAKNgIgIAYgAUEAQQBBABDEAiAXKQOAASEBC0EAIQgCQCABQoCAgIBwVA0AIAGnIgwvAQZBA0cNACAMLQAFQQV2QQFxIQgLAkAgCA0AIAchDANAIAwiByAbTQ0BIAYgB0EIayIMKQMAIgEQCiABQoCAgIBwg0KAgICA0ABSDQAgAaciCA0FIAYgB0EQayIMKQMAEAogBiAHQRhrKQMAQQEQrwEaDAALAAtCgICAgOAAIShCgICAgOAAIQEgES0AEUEwcUUNAQsgFCAHNgIsIBQgCjYCIAwBCyAUQRhqEOcDRQRAIBcgFBDBBQsDfiAHIBhNBH4gAQUgBiAYKQMAEAogGEEIaiEYDAELCyEoCyAXIBQoAgA2AowBDAILIAwgFykDgAE3AwAgF0KAgICAIDcDgAEgESgCFCAIaiEMQQAhCAwACwALIBBB4ABqJAAgKAuIAQECfyABKAIQIgMtABBFBEBBAA8LAkAgAygCAEEBRwRAIAIEfyACKAIAIAMQJ2tBA3UFQQALIQQgACADENIFIgNFBEBBfw8LIAAoAhAgASgCEBCeAiABIAM2Ah
 
AgAkUNASACIAMQJyAEQQN0ajYCAEEADwsgACgCECADEJEEIANBADoAEAtBAAsQACAAQQJ0IAFBA3RqQTBqC6wBAgJ/AX4gACAAKQMwQQ8QUCIIEAtFBEAgACAEQQN0QQhqEC0iBkUEQCAAIAgQCkKAgICA4AAPCyAGIAM7AQYgBiAEOgAFIAYgAjoABCAGIAE2AgBBACEBIARBACAEQQBKGyEDIAZBCGohBANAIAEgA0ZFBEAgBCABQQN0IgdqIAUgB2opAwAQDTcDACABQQFqIQEMAQsLIAggBhCKASAAIAhBLyACEKkDCyAICxMAIABBEGogASACIAAoAggRAQALEQAgAEEQaiABIAAoAgARAgALRwAgACABSQRAIAAgASACECMaDwsgAgRAIAAgAmohACABIAJqIQEDQCAAQQFrIgAgAUEBayIBLQAAOgAAIAJBAWsiAg0ACwsLzAwBB38CQCAARQ0AIABBCGsiAyAAQQRrKAIAIgFBeHEiAGohBQJAIAFBAXENACABQQNxRQ0BIAMgAygCACIBayIDQfSnBCgCAEkNASAAIAFqIQAgA0H4pwQoAgBHBEAgAUH/AU0EQCADKAIIIgIgAUEDdiIEQQN0QYyoBGpGGiACIAMoAgwiAUYEQEHkpwRB5KcEKAIAQX4gBHdxNgIADAMLIAIgATYCDCABIAI2AggMAgsgAygCGCEGAkAgAyADKAIMIgFHBEAgAygCCCICIAE2AgwgASACNgIIDAELAkAgA0EUaiICKAIAIgQNACADQRBqIgIoAgAiBA0AQQAhAQwBCwNAIAIhByAEIgFBFGoiAigCACIEDQAgAUEQaiECIAEoAhAiBA0ACyAHQQA2AgALIAZFDQECQCADIAMoAhwiAkECdEGUqgRqIgQoAgBGBEAgBCABNgIAIAENAUHopwRB6KcEKAIAQX4gAndxNgIADAMLIAZBEEEUIAYoAhAgA0YbaiABNgIAIAFFDQILIAE
 
gBjYCGCADKAIQIgIEQCABIAI2AhAgAiABNgIYCyADKAIUIgJFDQEgASACNgIUIAIgATYCGAwBCyAFKAIEIgFBA3FBA0cNAEHspwQgADYCACAFIAFBfnE2AgQgAyAAQQFyNgIEIAAgA2ogADYCAA8LIAMgBU8NACAFKAIEIgFBAXFFDQACQCABQQJxRQRAIAVB/KcEKAIARgRAQfynBCADNgIAQfCnBEHwpwQoAgAgAGoiADYCACADIABBAXI2AgQgA0H4pwQoAgBHDQNB7KcEQQA2AgBB+KcEQQA2AgAPCyAFQfinBCgCAEYEQEH4pwQgAzYCAEHspwRB7KcEKAIAIABqIgA2AgAgAyAAQQFyNgIEIAAgA2ogADYCAA8LIAFBeHEgAGohAAJAIAFB/wFNBEAgBSgCCCICIAFBA3YiBEEDdEGMqARqRhogAiAFKAIMIgFGBEBB5KcEQeSnBCgCAEF+IAR3cTYCAAwCCyACIAE2AgwgASACNgIIDAELIAUoAhghBgJAIAUgBSgCDCIBRwRAIAUoAggiAkH0pwQoAgBJGiACIAE2AgwgASACNgIIDAELAkAgBUEUaiICKAIAIgQNACAFQRBqIgIoAgAiBA0AQQAhAQwBCwNAIAIhByAEIgFBFGoiAigCACIEDQAgAUEQaiECIAEoAhAiBA0ACyAHQQA2AgALIAZFDQACQCAFIAUoAhwiAkECdEGUqgRqIgQoAgBGBEAgBCABNgIAIAENAUHopwRB6KcEKAIAQX4gAndxNgIADAILIAZBEEEUIAYoAhAgBUYbaiABNgIAIAFFDQELIAEgBjYCGCAFKAIQIgIEQCABIAI2AhAgAiABNgIYCyAFKAIUIgJFDQAgASACNgIUIAIgATYCGAsgAyAAQQFyNgIEIAAgA2ogADYCACADQfinBCgCAEcNAUHspwQgADYCAA8LIAUgAUF+cTYCBCADIABBAXI2AgQgACADaiAANgIACyAAQf8B
 
TQRAIABBA3YiAUEDdEGMqARqIQACf0HkpwQoAgAiAkEBIAF0IgFxRQRAQeSnBCABIAJyNgIAIAAMAQsgACgCCAshAiAAIAM2AgggAiADNgIMIAMgADYCDCADIAI2AggPC0EfIQIgA0IANwIQIABB////B00EQCAAQQh2IgEgAUGA/j9qQRB2QQhxIgF0IgIgAkGA4B9qQRB2QQRxIgJ0IgQgBEGAgA9qQRB2QQJxIgR0QQ92IAEgAnIgBHJrIgFBAXQgACABQRVqdkEBcXJBHGohAgsgAyACNgIcIAJBAnRBlKoEaiEBAkACQAJAQeinBCgCACIEQQEgAnQiB3FFBEBB6KcEIAQgB3I2AgAgASADNgIAIAMgATYCGAwBCyAAQQBBGSACQQF2ayACQR9GG3QhAiABKAIAIQEDQCABIgQoAgRBeHEgAEYNAiACQR12IQEgAkEBdCECIAQgAUEEcWoiB0EQaigCACIBDQALIAcgAzYCECADIAQ2AhgLIAMgAzYCDCADIAM2AggMAQsgBCgCCCIAIAM2AgwgBCADNgIIIANBADYCGCADIAQ2AgwgAyAANgIIC0GEqARBhKgEKAIAQQFrIgBBfyAAGzYCAAsLRAEBf0F/IQMgACAAKAIEIAJqEMwBBH9BfwUgACgCACABaiIDIAJqIAMgACgCBCABaxDoASAAIAAoAgQgAmo2AgRBAAsLHwAgACABIAAgAhDHASICIAMgBBAZIQQgACACEBEgBAtgACAEQfIAIANBxABrIANBtQFGG0H/AXEQDiAEIAAgAhAXEBwgBSABIAUoAgAQ0AMiADYCACAEIAAQHCAEIAZB/wFxEA4gASAFKAIAQQEQbxogASABKALQAkEBajYC0AIL9AcCBH8BfiMAQRBrIgMkAAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAAKAIQIgJBzQBqDgMEAQMACyACQewAakECSQ0BAkAgAkEraw4DA
 
QYBAAsgAkFYRg0EIAJB/gBGDQAgAkEhRw0FC0F/IQQgABAPDQwgAEEQEO0BDQxBjAEhBAJAAkAgAkEraw4DBwEJAAsgAkG0f0cEQCACQSFGDQggAkH+AEcNAUGVASEEDAkLIABBDhAMQQYhBAwICxABAAsgABAPDQggAEEAEO0BDQggACADQQxqIANBCGogAyADQQRqQQBBASACELoBDQggACACQQZrQf8BcRAMIAAgAygCDCADKAIIIAMoAgAgAygCBEECQQAQ0gEMBwtBfyEEIAAQDw0KIABBEBDtAQ0KQZcBIQQgACgCQCIBEKQBQbYBRw0FIAEoAoACIAEoApgCakG1AToAAAwFC0F/IQQCfyAAKAJAIQFBfyECAkAgABAPDQAgAEEQEO0BDQACQAJAAkACQAJAAkACQAJAIAEQpAEiAkHHAGsOBAEGBgUACyACQbwBRg0DIAJBtgFGDQIgAkHBAEcNBSABKAKYAiICIAEoAoACaigAASEFIAFBfzYCmAIgASACNgKEAiAAIAAoAgAgBRBeIgZBARDRASECIAAoAgAgBhAKIAAoAgAgBRARIAJFDQEMBwsgASgCmAIhAiABQX82ApgCIAEgAjYChAILIABBmAEQDAwECyABKAKAAiABKAKYAmoiAigAASIFQQhGIAVB8QBGcg0CIAEtAG5BAXEEQCAAQcWIAUEAEBNBfwwGCyACQbgBOgAADAMLIABB9YgBQQAQE0F/DAQLIABBMBAMIABBABAaIABBAxBrQQAMAwsgAEEOEAwgAEEKEAwLQQAhAgsgAgtFDQgMCQsgACgCQCIBLQBsQQJxRQRAIABBwocBQQAQEwwGCyABKAJkRQRAIABB3YcBQQAQEwwGC0F/IQQgABAPDQggAEEQEO0BDQhBiwEhBAwDC0F/IQQgACABQQRxQQJyEM8DDQcgACgCMA0DIAAoAhAiAkF+cUGUf0cNAyAAIANBDGogA0EIaiADIANBBG
 
pBAEEBIAIQugENByAAIAJBBGtB/wFxEAwgACADKAIMIAMoAgggAygCACADKAIEQQNBABDSASAAEA9FDQMMBwtBjQEhBAwBC0GWASEECyAAIAQQDAwDC0EAIQQgAUEYcUUNAyAAKAIQQaN/Rw0DIAFBEHFFDQEgACgCAEH5hwFBABDQAgtBfyEEDAILQX8hBCAAEA8NASAAQQgQ7QENASAAQZ8BEAwLQQAhBAsgA0EQaiQAIAQLfAECfyAAKAJAIgEEQCABKAK8ASECIABBswEQDCAAIAJB//8DcRAWIAEgASgCzAEgAkEDdGooAgAiADYCvAEDQAJAIABBAEgEQEF/IQAMAQsgASgCzAEgAEEDdGoiAigCBCIAQX9KDQAgAigCACEADAELCyABIAA2AsABCws3AQF/IwBB0ABrIgEkACABIAAoAgAgAUEQaiAAKAIgEIYBNgIAIABBs/wAIAEQEyABQdAAaiQAC7ImARR/IwBBMGsiCCQAIAAoAgAhDgJAAkACQAJAAkACfwJAIAAiAigCEEGDf0cNACACKAIoDQAgAkEAEIgBQTpGIQMLIANFCwRAIAIoAhAhAwwBCyAOIAIoAiAQFyELIAIoAkBBsAJqIQACQANAIAAoAgAiAEUNASAAKAIEIAtHDQALIAJBupABQQAQEwwCCyACEA8NASACQToQLg0BIAIoAhAiA0HHAGpBA0kNACACEDQhA0EAIQAgAigCQCAIQRBqIAsgA0F/QQAQpwEgAiABQR50QR91QQBBAyACKAJALQBuQQFxG3EQ8AENASACIAMQHSACKAJAEKYBDAMLAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIANB0gBqDiQDEQEdEREREREREQUEBgcHCBERAgkREQwQCw8cEhISERERERwACyADQYN/Rg0MIANBO0YNCSADQfsARw0QIAI
 
Q9AINHQweCyACKAJAKAIgBEAgAkHPkAFBABATDB0LIAIQDw0cQQAhACACAn9BACACKAIQIgFBO0YNABpBACABQf0ARg0AGkEAIAIoAjANABogAhCXAQ0dQQELEPMCIAIQuwENHAweCyACEA8NGyACKAIwBEAgAkHokAFBABATDBwLIAIQlwENGyACQS8QDCACELsBRQ0cDBsLIAIQDw0aIAIQggEaIAIQ1AEgAhCIAg0aIAJB6QBBfxAbIQAgAiACKAJALQBuQX9zQQFxIgEQ8AENGgJAIAIoAhBBr39HBEAgACEDDAELIAJB6wBBfxAbIQMgAhAPDRsgAiAAEB0gAiABEPABDRsLIAIgAxAdDBcLIAIQNCEAIAIQNCEBIAIoAkAgCEEQaiALIAEgAEEAEKcBIAIQDw0ZIAIQ1AEgAiAAEB0gAhCIAg0ZIAJB6QAgARAbGiACELUCDRkgAkHrACAAEBsaIAIgARAdIAIoAkAQpgEMGgsgAhA0IQAgAhA0IQEgAhA0IQMgAigCQCAIQRBqIAsgASAAQQAQpwEgAhAPDRggAiADEB0gAhDUASACELUCDRggAiAAEB0gAkG6fxAuDRggAhCIAg0YIAIoAhBBO0YEQCACEA8NGQsgAkHqACADEBsaIAIgARAdIAIoAkAQpgEMGQsgAhAPDRcgAhDUAUEAIQEgCEEANgIMAkAgAigCECIAQVhHBEAgAEEoRw0BIAIgCEEMakEAEKUBGgwBCyACKAJALQBsQQJxRQRAIAJBzpEBQQAQEwwZCyACEA8NGEEBIQELIAJBKBAuDRcgCC0ADEEBcUUEQCABIQQjAEFAaiIFJAAgAigCACEMIAIoAkAiDygCvAEhECACEDQhAyACEDQhESACEDQhEiACEDQhEyACEIIBGkEBIQkgAigCQCAFQRBqIAsgEiADQQEQpwEgBSAQNgIoIAJB6wBBfxAbIRUgAigCQCgChAIhDSACIBMQHSACKAIQ
 
IQBBUSEBQX8hBwJAAkACQAJAAkACQAJAAkACQCACQQQQ1gMOAgABCAsgAEFJRiEKIABBUUYhCSAAQbF/RiAAQVFGckVBACAAQUlHGw0BIAAhAQsgAhAPDQQCQCACKAIQIgBB+wBGIABB2wBGckUEQCAAQYN/RgRAIAIoAihFDQILIAJByY8BQQAQEwwGC0EBIQkgAiABQQBBAUF/QQAQ0wFBAEgNByAFQQA2AjwMAwsgBSAMIAIoAiAQFyIGNgI8IAIQDwRAIAIoAgAgBhARDAULIAIgBiABELQCRQ0BIAIoAgAgBhARDAQLAkACQCACKAIQQSByQfsARw0AIAIgBUEMakEAEKUBIgFBWUdBACABQbd/RxsNACACQQBBAEEBIAUoAgxBAnFBARDTAUEATg0BDAULIAIQsQINBCACIAVBOGogBUE0aiAFQTxqIAVBCGpBAEEAQbt/ELoBDQQgAiAFKAI4IAUoAjQgBSgCPCAFKAIIQQRBABDSAQsgBUEANgI8QQAhCQwCCyACQbsBQbsBQbcBIAkbIAobEAwgAiAGEBogAiAPLwG8ARAWQQAhCQsgASEACyACQesAIBEQGxogAigCQCgChAIhFCACIBUQHUEBIQcCQCACKAIQQT1HDQACQCACEA9FBEBBACEHIAJBABC5AUUNAQsgDCAGEBEMAgsgBkUNACACQbcBEAwgAiAGEBogAiAPLwG8ARAWCyAMIAYQEQJAAkACQCACQcMAEFEEQCAFQQE2AiwgBSAFKAIgQQJqNgIgQcaUASEKQQAhASAHRQ0BDAMLIAIoAhBBt39HDQEgBARAIAJB15MBQQAQEwwEC0EBIQEgBw0CQcmUASEKIABBsX9HDQAgDy0AbkEBcUUgCUF/c3ENAgsgBSAKNgIAIAJBgZQBIAUQEwwCCyACQcyUAUEAEBMMAQsgAhAPDQACQCABRQRAIAIQYEUNAQwCCyACEJcBDQELIAIgAigCQCgCvAEgE
 
BCzAiACQfwAQf4AQf0AIAQbIAEbEAwgAkHrACADEBsaIAJBKRAuRQ0BC0F/IQcMAQsgAigCQCIAQYACaiIHIAAoAoQCIgkgFCANayIGahDMARogByAAKAKAAiANaiAGEIcBGiAAKAKAAiANakGxASAGEEsaIAIoAkAiBiAAKAKEAkEFazYCmAIgAyAGKAKsAiIAIAAgA0gbIQogCSANayEJIAMhAANAIAAgCkcEQCAGKAKkAiAAQRRsaiIMKAIEIgcgDUggByAUTnJFBEAgDCAHIAlqNgIECyAAQQFqIQAMAQsLIAIgERAdQX8hByACELUCDQAgAiACKAJAKAK8ASAQELMCIAIgAxAdAn8gAUUEQCAEBEAgAkEUEAwgAkEOEAwgAkEkEAwgAkEAEBYgAkGLARAMIAJBggEQDEGDAQwCCyACQYABEAwgAkEAEGtBgwEMAQsgAkH/ABAMQQ4LIQAgAkHpACATEBsaIAJBDhAMIAIgEhAdIAIgABAMIAIoAkAQpgEgAhDuAUEAIQcLIAVBQGskACAHRQ0ZDBgLIAIoAkAoArwBIQYgAhCCARogAigCECIAQTtGDRNBUSEDAkAgAkEEENYDDgIAEhgLIABBsX9GIABBUUZyDRAgACIDQUlGDREgAkEAEPQEDRcgAkEOEAwMEgsgAhAPDRYgA0HEAGohAUEAIQACQCACKAIwDQAgAigCEEGDf0cNACACKAIoDQAgAigCICEACwJ/IAIoAkAiBEGwAmohAyAEKAK8ASEFAkADQCADKAIAIgMEQCACIAUgAygCGBCzAiADKAIYIQUCQCABBEAgAygCDCIEQX9GDQEgAARAIAMoAgQgAEcNAgsMBAsgAygCCCIEQX9GDQAgAARAIAMoAgQgAEcNAQsMAwsCf0EAIAMoAhxFDQAaIAJBgwEQDEEDCyEEA0AgAygCECAESgRAIAJBDhAMIARBAWohBAwBCwsgAygCFEF/Rg0BIAJBBhAMIA
 
JB7QAgAygCFBAbGiACQQ4QDAwBCwsCQCAARQRAIAEEQCACQfyUAUEAEBMMAgsgAkGZlQFBABATDAELIAJBvZUBQQAQEwtBfwwBCyACQesAIAQQGxpBAAsNFiAABEAgAhAPDRcLIAIQuwFFDRcMFgsgAhAPDRUgAhDUASACEIgCDRUgAhCCARogAhA0IQRBfyEBIAIoAkAgCEEQaiALIARBf0EBEKcBIAJB+wAQLg0VQX8hAwJAA0ACQAJAAkAgAigCECIAQcEAag4CAAECCyABQQBIBH9BfwUgAkHrAEF/EBsLIQAgAiABEB0DQCACEA8NGiACQREQDCACEJcBDRogAkE6EC4NGiACQasBEAwgAigCEEG/f0YEQCACQeoAIAAQGyEADAELCyACQekAQX8QGyEBIAIgABAdDAILIAIQDw0YIAJBOhAuDRggA0EATgRAIAJBgJIBQQAQEwwZCyABQX9MBEAgAkHrAEF/EBshAQsgAkG0ARAMIAJBABA4IAIoAkAoAoQCQQRrIQMMAQsCQAJAIABB/QBHBEAgAUF/Sg0BIAJBkpIBQQAQEwwaCyACQf0AEC4NGSADQQBIDQEgAigCQCgCgAIgA2ogARBbIAIoAkAoAqQCIAFBFGxqIANBBGo2AgQMAwsgAkEHEPABRQ0BDBgLCyACIAEQHQsgAiAEEB0gAkEOEAwgAigCQBCmAQwSCyACENQBIAIQDw0UIAIQNCEBIAIQNCEAIAIQNCEDIAIQNCEEIAJB7AAgARAbGiACKAJAIAhBEGpBAEF/QX9BARCnASAIIAM2AiQgAhD0Ag0UIAIoAkAQpgEgAhDyAgRAIAJBDhAMIAJBBhAMIAJB7QAgAxAbGiACQQ4QDCACQesAIAQQGxoLAkACQAJAIAIoAhBBPWoOAgAPAQsgAhAPDRYgAhCCARogAiABEB0gAigCEEH7AEYEQCACQQ4QDAwOCyACQSgQLg0WIAIoAhAiAUH7AEYgAUH
 
bAEZyDQECQCABQYN/RgRAIAIoAihFDQELIAJBu44BQQAQEwwXCyAOIAIoAiAQFyEBAkAgAhAPRQRAIAIgAUFDELQCQX9KDQELIA4gARARDBcLIAJBtwEQDCACIAEQOCACIAIoAkAvAbwBEBYMDAsgAkGrkgFBABATDBULIAJBUUEAQQFBf0EBENMBQQBODQoMFAsgAhAPRQ0UDBMLIAIoAkAtAG5BAXEEQCACQcaSAUEAEBMMEwsgAhAPDRIgAhCIAg0SIAIQggEaIAIgAigCQEHUAEEAEKgBIgBBAEgNEiACQe8AEAwgAkHZABAMIAIgAEH//wNxEBYgAhDUASACELUCDRIMDwsgAUEBcUUNASABQQRxDQYgAkEAEIgBQSpGDQEMBgsgAigCKARAIAIQ7wEMEQtBUSEDAkAgAiABENYDDgIADxELIAJBhQEQUUUNAyACQQEQiAFBRUcNAyABQQRxDQULIAJB3JIBQQAQEwwPCyABQQRxRQRAIAJBm5MBQQAQEwwPC0F/IQFBACEAIAJBAEEAEPcCRQ0QDBELIAIQDw0NIAIQuwFFDQ4MDQsgAhCXAQ0MAkAgAigCQCgCpAFBAE4EQCACQdkAEAwgAiACKAJALwGkARAWDAELIAJBDhAMCyACELsBRQ0NDAwLIAIoAiAhASMAQdAAayIAJAAgACACKAIAIABBEGogARCGATYCACACQdyVASAAEBMgAEHQAGokAAwLC0EAIQAgAkEBQQAgAigCGCACKAIUENYBDQoMDAsgAkEpEC4NCQsgAkHsACAAEBsaIAIQggEaIAIoAkAgCEEQakEAQX9Bf0EBEKcBIAggAzYCJCACEPQCDQggAigCQBCmASACEO4BIAIQ7gEgAhDyAgRAIAJBDhAMIAJBBhAMIAJB7QAgAxAbGiACQQ4QDCACQesAIAQQGxoLIAAhAQsgAiABEB0gAkHtACADEBsaIAJBLxAMIAIgAxAdIAIoAhBBREYE
 
QCACEA8NCEEAIQAgAigCQCAIQRBqQQBBf0F/QQIQpwEgAigCQCIBKAKkAUEATgRAIAIoAgAgAUHRABBWIgBBAEgNCSACQdgAEAwgAiACKAJALwGkARAWIAJB2QAQDCACIABB//8DcRAWIAIQ1AELIAIQ9AINCCACKAJAIgEoAqQBQQBOBH8gAkHYABAMIAIgAEH//wNxEBYgAkHZABAMIAIgAigCQC8BpAEQFiACKAJABSABCxCmAQsgAkHuABAMIAIgBBAdDAgLIAAhAwsgAhAPDQUgAkEAIANBABDYAw0FCyACIAIoAkAoArwBIAYQswILIAJBOxAuDQMgAhA0IQQgAhA0IQAgAhA0IQMgAhA0IQUgAigCQCAIQRBqIAsgBSAAQQAQpwEgAyEBIAIoAhBBO0cEQCACIAQQHSACEJcBDQQgAkHpACAFEBsaIAQhAQsgAkE7EC4NAwJAIAIoAhBBKUYEQCAIIAE2AhxBACEEIAEhAAwBCyACQesAIAMQGxogAigCQCgChAIhBCACIAAQHSACEJcBDQQgAkEOEAwgASADRg0AIAJB6wAgARAbGgsgAkEpEC4NAyACKAJAKAKEAiEHIAIgAxAdIAIQtQINAyACIAIoAkAoArwBIAYQswICQCABIANGIAAgAUZyRQRAIAIoAkAiAUGAAmoiBiABKAKEAiIJIAcgBGsiA2oQzAEaIAYgASgCgAIgBGogAxCHARogASgCgAIgBGpBsQEgAxBLGiACKAJAIgMgASgChAJBBWs2ApgCIAAgAygCrAIiASAAIAFKGyEGIAkgBGshCQNAIAAgBkYNAiADKAKkAiAAQRRsaiIKKAIEIgEgBEggASAHTnJFBEAgCiABIAlqNgIECyAAQQFqIQAMAAsACyACQesAIAAQGxoLIAIgBRAdIAIoAkAQpgELIAIQ7gEMAwsgAUEEcQ0AIAJBkJEBQQAQEwwBCyACEA8NAEEAIQAgAkEBIANBABDYA
 
w0AIAIQuwFFDQILQX8hAAwBC0EAIQALIA4gCxARIAAhAQsgCEEwaiQAIAELCAAgAEHPAUgLmQEBAX4CQAJAAkAgARAgRQ0AIAAgAUE8IAFBABASIgEQCw0CAkAgARAQDQAgARAgRQRAIAAgARAKDAILIAAgAUHMASABQQAQEiEDIAAgARAKAkAgAxALDQAgAxAQDQEgAxAmDQEgAxCxAQ0AIAAgAxAKIABBycwAQQAQFAwDCyADDwsgAhANDwsgABAoC0KAgICA4AAhAQsgAQsSACABEPEBRQRAIAAgARCFBQsLOgEBfwJAIABBMGsiAUEKTwR/IABBwQBrQRlLDQEgAEE3awUgAQsPCyAAQdcAa0EkIABB4QBrQRpJGwutAgEDfgJAAkAgAgRAIAAgAUHOASABQQAQEiIDEAsNAiADEBBFBEAgAxAmRQ0CCyAAIAFBwwEgAUEAEBIiAxALDQIgACABIAMQ6AMhASAAIAMQCiABEAsEQCABDwsCfkKAgICA4AAhAyAAIAFB6gAgAUEAEBIiBBALRQRAIABBMBChASIDEAsEQCAAIAQQCiADDAILIABBEBBqIgJFBEAgACADEAogACAEEApCgICAgOAADAILIAEQDSEFIAIgBDcDCCACIAU3AwAgAyACEIoBCyADCyEDIAAgARAKIAMPCyAAIAFBwwEgAUEAEBIiAxALDQELIAAgAxA6RQRAIAAgAxAKIABBhskAQQAQFEKAgICA4AAPCyAAIAEgAxDoAyEBIAAgAxAKIAEhAwsgAwspAQF/IABCgICAgHCDQoCAgICQf1EEfyAApygCBEH/////B3FFBUEACwstAQF/QQEhAQJAAkACQCAAQQ1rDgQCAQECAAsgAEEtRg0BCyAAQTFGIQELIAELCgAgACABEA0QLAtoAQF/AkACQCABRQ0AIAEoAgAiAkEATA0BIAEgAkEBayICNgIAIAINAAJAIAEtAAVBAXEEQCAAIAEpAx
 
gQJSABEJ8CDAELIAFBCGoQRgsgACABEB8LDwtBscEAQaENQfQoQc/BABAAAAscACAAKAIQKAKMASIARQRAQQAPCyAAKAIoQQFxC5oCAgN/An4gAUKAgICAcFoEQCABpyICLwEGQSlGBEAjAEEQayIDJABCgICAgOAAIQUCQCAAIANBCGogAUHfABCEASICRQ0AIAMpAwgiARAQBEAgACACKQMAEPsBIQUMAQsCQCAAIAEgAikDCEEBIAIQNSIBEAsNAAJAAkACQCABQiCIp0EBag4EAAEBAAELIAAgAikDABCfASIEQX9MDQEgBA0CIAAgAikDABD7ASIGEAsNASAAIAYQCiAGpyABp0YNAgsgACABEAogAEHFO0EAEBQMAgsgACABEAoMAQsgASEFCyADQRBqJAAgBQ8LIAIoAhAoAiwiAEUEQEKAgICAIA8LIACtQoCAgIBwhBANDwsgACABEJ0EEA0LGwAgACgCECABIAIQ4gUiAUUEQCAAEMYBCyABCzcAIAAgASACIAMCf0EAIAAoAhAiAC0AiAENABpBASAAKAKMASIARQ0AGiAAKQMIEKgDRQsQ3AULswMCBH8BfiMAQSBrIgQkACABIAEgAmoiBSABIAVLGyEDIAEhBgJ+AkADQAJAAkACfyAFIAZLBEAgBiwAAEEATg0CIAYhAwsgAyABayIGQYCAgIAETwsEQCAAQfQNQQAQQQwECyADIAVGBEAgACABIAIQ1QIMBQsgACAEIAIQQg0BIAQgASAGEJ0CGgNAAkACQCADIAVJBEAgAywAACIAQQBOBEAgBCAAQf8BcRA7GiADQQFqIQMMBAsgAyAFIANrIARBHGoQXyIBQf//A00EQCAEKAIcIQMMAwsgAUGAgMQASQ0BIAMgBSADIAVLGyEAA0BB/f8DIQEgAyAFTwRAIAAhAwwECyADLAAAIgJBf0ogAkH/AXFBvwFLckUEQCADQQFqIQMMAQsLA0AgA0EBaiI
 
DIAVPDQMgAywAACIAQX9KDQMgAEH/AXFBwAFJDQALDAILIAQQNwwHCyAEKAIcIQMgBCABQYCABGtBCnZBgLADahCUARogAUH/B3FBgLgDciEBCyAEIAEQlAEaDAALAAsgBkEBaiEGDAELCyAEEEQLQoCAgIDgAAshByAEQSBqJAAgBwtSAQJ/QdSlBCgCACIBIABBA2pBfHEiAmohAAJAIAJBACAAIAFNGw0AIAA/AEEQdEsEQCAAEARFDQELQdSlBCAANgIAIAEPC0GEpwRBMDYCAEF/C9sBAgF/An5BASEEAkAgAEIAUiABQv///////////wCDIgVCgICAgICAwP//AFYgBUKAgICAgIDA//8AURsNACACQgBSIANC////////////AIMiBkKAgICAgIDA//8AViAGQoCAgICAgMD//wBRGw0AIAAgAoQgBSAGhIRQBEBBAA8LIAEgA4NCAFkEQEF/IQQgACACVCABIANTIAEgA1EbDQEgACAChSABIAOFhEIAUg8LQX8hBCAAIAJWIAEgA1UgASADURsNACAAIAKFIAEgA4WEQgBSIQQLIAQL4wEBAn8gAkEARyEDAkACQAJAIAJFIABBA3FFcg0AIAFB/wFxIQQDQCAALQAAIARGDQIgAEEBaiEAIAJBAWsiAkEARyEDIAJFDQEgAEEDcQ0ACwsgA0UNAQsCQCAALQAAIAFB/wFxRiACQQRJcg0AIAFB/wFxQYGChAhsIQMDQCAAKAIAIANzIgRBf3MgBEGBgoQIa3FBgIGChHhxDQEgAEEEaiEAIAJBBGsiAkEDSw0ACwsgAkUNACABQf8BcSEBA0AgASAALQAARgRAIAAPCyAAQQFqIQAgAkEBayICDQALC0EACyIAIAAgAUE7IAIQDSICIAMQGRogACACQTwgARANIAQQGRoL3QQBBn8gACgCACIEQQFqIQJBCCEDAkACQAJAIAQtAAAiBkEwayIHQQhPBEBBfiEF
 
AkACQAJAAkACQAJAIAZB7gBrDgsBCQkJAgkDBQQJBQALAkAgBkHiAGsOBQgJCQkACQtBDCEDDAcLQQohAwwGC0ENIQMMBQtBCSEDDAQLQQshAwwDCwJAIAFFDQAgAi0AAEH7AEcNACAEQQJqIQIgBC0AAiEEQQAhAwNAIAIhAUF/IQUgBBDoAiICQQBIDQUgAiADQQR0ciIDQf//wwBLDQUgAUEBaiICLQAAIgRB/QBHDQALIAFBAmohAgwDCyAEQQJBBCAGQfgARhsiB0EBcmohBEEAIQNBACEFA0AgBSAHRwRAIAItAAAQ6AIiBkEASARAQX8PBSAFQQFqIQUgAkEBaiECIAYgA0EEdHIhAwwCCwALCyABQQJHIANBgHhxQYCwA0dyDQEgBC0AAEHcAEcNASAELQABQfUARw0BQQAhAkEAIQUDQAJAIAJBBEYNACACIARqLQACEOgCIgFBAEgNACACQQFqIQIgASAFQQR0ciEFDAELCyACQQRHIAVBgHhxQYC4A0dyDQEgA0EKdEGA+D9xIAVB/wdxckGAgARqIQMgBEEGaiECDAILIAFBAkYEQEF/IQUgBw0DIAItAAAQRQ0DQQAhAwwCCyACLQAAQTBrIgFBB0sEQCAHIQMMAgsgBEECaiECIAEgB0EDdHIiA0EfSw0BIAQtAAJBMGsiAUEHSw0BIARBA2ohAiABIANBA3RyIQMMAQsgBCECCyAAIAI2AgAgAyEFCyAFC4sBAQN/IwBBkAFrIgMkACADIAI2AowBAn8gA0GAASABIAIQ1wIiBEH/AE0EQCAAIAMgBBCHAQwBC0F/IAAgBCAAKAIEakEBahDMAQ0AGiADIAI2AowBIAAoAgQiBSAAKAIAaiAAKAIIIAVrIAEgAhDXAhogACAAKAIEIARqNgIEQQALGiADQZABaiQAC50BAQN/IwBBEGsiAiQAIAJBJToACkEBIQMgAUGAAk4EQCACQfUAOgALIAIgAUEId
 
kEPcUGisgFqLQAAOgANIAIgAUEMdkEPcUGisgFqLQAAOgAMQQQhAwsgAkEKaiADaiIEIAFBD3FBorIBai0AADoAASAEIAFBBHZBD3FBorIBai0AADoAACAAIAJBCmogA0ECchCdAhogAkEQaiQAC7YBAQJ/AkAgAiABKAIEIgpGBEAgAyELDAELIAAgCiACIAMgBCAFIAYgByAIIAkQhgIiBUEATg0AQX8PC0EAIQIgASgCwAIiA0EAIANBAEobIQMCQANAIAIgA0cEQAJAIAUgASgCyAIgAkEDdGoiCi8BAkcNACAKLQAAIgpBAXZBAXEgBEcNACALIApBAXFGDQMLIAJBAWohAgwBCwsgACABIAsgBCAFIAYgByAIIAkQywMhAgsgAgtHAQJ/IAAoAnwhAgJAA0AgAkEBTgRAIAAoAnQgAkEBayICQQR0aiIDKAIAIAFHDQEgAygCBA0BDAILCyAAIAEQ8QQhAgsgAgsiAAJAIABBKBAuDQAgABCXAQ0AQX9BACAAQSkQLhsPC0F/C9ABAQJ/IAAoAgAhBSMAQdAAayIGJAACQCABIAMQvwUEQAJAIAAEQCAGIAUgBkEQaiADEIYBNgIAIABBhM0AIAYQEwwBCyAFIANBhM0AEJQDC0EAIQAMAQtBACEAIAUgAUEcakEUIAFBJGogASgCIEEBahB9DQAgASABKAIgIgBBAWo2AiAgASgCHCAAQRRsaiIAQgA3AgAgAEEANgIQIABCADcCCCAAIAUgAhAXNgIMIAUgAxAXIQEgACAENgIIIAAgATYCEAsgBkHQAGokACAAC/kVAQp/IwBBEGsiDyQAIAAoAkAhByAAKAIAIQsCQAJAAkACQCABQQJNBEACQCACDQBBACECIABBhQEQUUUNACAAQQEQiAFBCkYNAEF/IQggABAPDQVBAiECC0F/IQggABAPDQQgACgCECIKQSpGBEAgABAPDQUgACgCECEKIAJBAXIhAgsCQA
 
JAAkACQCAKQSlqDgIBAgALIApBg39HDQQCQCAAKAIoDQAgAkEBcUUgAUECR3JFQQAgACgCICIKQS1GGw0AIAJBAnFFIAFBAkdyIApBLkdyDQMLIAAQ7wEMBwsgAUECRw0DIActAG5BAXFFDQEMAwsgAUECRw0CIAAoAkQNAgsgCyAAKAIgEBchCiAAEA9FDQIMAwsgAUEDRg0BIAtBABAXGgwBC0EAIQogAUECRiAFQQJGcg0AIABB7/oAQQAQEwwCCwJAAkACQCAHKAIgIghFIAFBAUtyDQAgBygCJEEBRw0AIAcgChCyAiIJRQ0AIAkoAgggBygCvAFHDQAgAEGG+wBBABATDAELQX8hEAJAIAFBAUcEQAwBCwJAIAINACAHLQBuQQFxDQAgByAKIAcoAsABQQAQ1QNBf0oNACAHIAoQhwJBgICAgHpxQYCAgIACRg0AIApBzQBGBEAgBygCSA0BC0EBIQ0LAkAgCEUNACAHKAIkQQFLDQAgBygCvAEiCCAHKALwAUcNACAHIAoQsgIiCUUNASAJKAIIIAhHDQEgAEG/+wBBABATDAILQX8hCCAAIAcgCkEEQQMgAhsQqAEiEEF/TA0DCyALIAdBACABQQFLIAAoAgwgBBD4AyIHDQELIAsgChARQX8hCAwCCyAGBEAgBiAHNgIACyAAIAc2AkAgByAKNgJwIAcgAUEIRiIENgJgIAcgAUEDRyIINgJMIAcgCDYCSCAHIAJFIAFBA0lxNgI0IAcgAUEEa0EFSSIJNgIwQQEhDEEBIQ4gCEUEQCAHKAIEIggoAlwhDiAIKAJYIQkgCCgCUCEMIAgoAlQhBAsgByAONgJcIAcgCTYCWCAHIAQ2AlQgByAMNgJQIAcgAkH/AXEgAUEIdHI7AWwgAUEHayIOQQFNBEAgAEErEAwLIAFBB0YEQCAAEPMECyAHQgE3AjgCQAJAAkACQCABQQNHIAAoAhAiBEGDf0dyRQRAIAAoAig
 
NAyALIAcgACgCIBDUA0EASA0EIAdBATYCjAEMAQsCQCAEQShGBEAgACAPQQxqQQAQpQEaIA8tAAxBBHEEQCAHQQE2AjwLIAAQD0UNAQwFCyAAQSgQLg0ECyAHKAI8BEBBfyEIIAdBfzYCvAEgABCCAUEASA0GC0EAIQkCQANAIAAoAhAiCEEpRg0BAkACQAJAAkACfyAIQaV/RyIMRQRAIAdBADYCOCAAEA8NCyAAKAIQIQgLIAhBg39HCwRAIAhB+wBHQQAgCEHbAEcbDQQgB0EANgI4AkAgDEUEQCAAQQ0QDCAHKAKIASEIDAELIAsgB0EAENQDIQggAEHbABAMCyAAIAhB//8DcRAWIABBUUGxfyAHKAI8G0EBQQFBf0EBENMBIgRBAEgNCiAEIAlyIQRBASEJIARFBEAgByAHKAKMAUEBajYCjAFBACEJCyAMRQ0BDAMLIAAoAigNCCAAKAIgIgRBLUYEQCAHLQBsQQFGDQkLIAcoAjwEQCAAIAcgBEEBEKgBQQBIDQoLIAsgByAEENQDIghBAEgNCSAAEA8NCSAMDQEgAEENEAwgACAIQf//A3EiCBAWIAcoAjwEQCAAQREQDCAAQbsBEAwgACAEEBogACAHLwG8ARAWCyAAQdwAEAwgACAIEBYgB0EANgI4CyAAKAIQQSlGDQQgAEEpEC4aDAgLIAAoAhBBPUYEQCAHQQA2AjggABAPDQggABA0IQkgAEHbABAMIAAgCEH//wNxIggQFiAAQREQDCAAQQYQDCAAQasBEAwgAEHpACAJEBsaIABBDhAMIAAQYA0IIAAgBBCpASAAQREQDCAAQdwAEAwgACAIEBYgACAJEB0gAEG7ARAMIAAgBBAaIAAgBy8BvAEQFkEBIQkMAQsgCUUEQCAHIAcoAowBQQFqNgKMAQsgBygCPEUNACAAQdsAEAwgACAIQf//A3EQFiAAQbsBEAwgACAEEBogACAHLwG8ARAWCyAAKAIQ
 
QSlGDQIgAEEsEC5FDQEMBgsLIABB6fsAQQAQEwwECwJAAkAgAUEEaw4CAQACCyAHKAKIAUEBRg0BDAILIAcoAogBDQELIAcoAjwEQCAHKALMASAHKAK8AUEDdGpBBGohCANAAkAgCCgCACIEQQBIDQAgBygCdCIIIARBBHQiBGoiCSgCBCAHKAK8AUcNACAHIAkoAgAiCRCHAkF/TARAIAsgByAJEFZBAEgNBiAHKAJ0IQggAEG2ARAMIAAgBCAIaiIJKAIAEBogACAHLwG8ARAWIABBtwEQDCAAIAkoAgAQGiAAQQAQFgsgBCAIakEIaiEIDAELCyAAQbMBEAwgACAHLwG8ARAWIAdBADYCvAEgByAHKALMASgCBDYCwAELIAAQDw0CIAJBfXFBAUYEQCAAQYcBEAwLIAdBATYCZCAAEIIBGiAHIAcoArwBNgLwAQJAAkAgACgCEEGkf0cNACAAEA8NBCAAKAIQQfsARg0AIAAgByAKEPIEDQQgABBgDQQgAEEuQSggAhsQDCAHLQBuQQJxDQEgByAAKAI0IANrIgI2ApADIAcgCyADIAIQowMiAjYCjAMgAg0BDAQLIABB+wAQLg0DIAAQ+AQNAyAAIAcgChDyBA0DA0AgACgCEEH9AEcEQCAAEPcERQ0BDAULCyAHLQBuQQJxRQRAIAcgACgCOCADayICNgKQAyAHIAsgAyACEKMDIgI2AowDIAJFDQQLIAAQDw0DIAAQ8gJFDQAgAEEAEPMCCyAAIAcoAgQ2AkAgBygCcCECIAcgAEKAgICAIBDTAyIDNgIIIAFBAk8EQEEAIQggDkECSQ0FIABBAxAMIAAgAxA4IAINBSAAQc0AEAwgAEEAEDgMBQsgAUEBRgRAIABBAxAMIAAgAxA4IA0EQAJAIAAoAkAiASgCKARAIAsgASACEPECIgFFDQYgAUEANgIIIAEgAS0ABEH+AXEgACgCQC0AbkEBcXI6AAQMAQsgASACE
 
IcCQX9KDQAgCyABIAIQVkEASA0FCyAAQREQDCAAQbcBEAwgACACEBogAEEAEBYLQQAhCCAQQQBOBEAgACgCQCgCdCAQQQR0aiIBIAEoAgxB/4CAgHhxIANBB3RBgP///wdxcjYCDCAAQQ4QDAwGCyAAQbsBEAwgACACEBogACAAKAJALwG8ARAWDAULAkACQCAAKAJAIgEoAihFBEAgACABIAJBBhCoASIBQQBIDQUgACgCQCEAIAFBgICAgAJxBEAgACgCgAEgAUEEdGoiACAAKAIMQf+AgIB4cSADQQd0QYD///8HcXI2AgwMAgsgACgCdCABQQR0aiIAIAAoAgxB/4CAgHhxIANBB3RBgP///wdxcjYCDAwBCyALIAEgAkH8ACACGyIBEPECIgJFDQQgAiADNgIAIAUNAQtBACEIDAULQQAhCCAAIAAoAkAoApQDIAEgAUEWIAVBAUYbQQAQiQINBAwCCyAAQYL8AEEAEBMMAQsgABDvAQsgACAHKAIENgJAIAsgBxCLA0F/IQggBkUNASAGQQA2AgAMAQsgCyAKEBELIA9BEGokACAIC3kBAX8gACAGQQwQUCIGEAtFBEAgBqciByAAEKACIgA2AiAgByAFOwEqIAcgBDoAKSAHIAM6ACggByABNgIkIAcgBy0ABUHvAXEgBEECa0EESUEEdHI6AAUgACAGIAAgAkG+FSACGxDHASIBIAMQqQMgACABEBELIAYL0AECAX4BfyMAQRBrIgIkAAJAIAEQIEUEQCAAEChCgICAgOAAIQUMAQsCQCAEDQAgAykDACIFQSoQP0UNACAAIAVBPCAFQQAQEiIFEAsNASAAIAUgARBYIQYgACAFEAogBkUNACADKQMAEA0hBQwBCyAAIAIgARDBAiIBEAtFBEAgACACIARBA3RqKQMAQoCAgIAwQQEgAxAiIQUgACACKQMAEAogACACKQMIEAogBRALBEAgACABEAoMAgsgACAFEA
 
oLIAEhBQsgAkEQaiQAIAULDAAgACABEAogARALC0QBAn8CQCAAQoCAgIBwVA0AIACnIgMvAQZBAkcNACADLQAFQQhxRQ0AIAIgAygCKDYCACABIAMoAiQ2AgBBASEECyAEC3gBAX8CQAJAAkACQAJAIAEoAgAiAkH/AGoOBAAAAwECCyAAKAIAIAEpAxAQCg8LIAAoAgAgASkDEBAKIAAoAgAgASkDGBAKDwsgAkGpf0cNAQsgACgCACABKAIQEBEPCyACQdUAakEtTQRAIAAoAgAgASgCEBARCwsNACAAIAEgAkEAEKEECw4AIAEgACgCEEErEOQCC9MBAwF/AX4BfCMAQRBrIgMkAAJ/IAAgA0EIaiABQQhrIgEpAwAQWQRAQoCAgIAwIQRBfwwBCwJ8AkACQAJAAkACQCACQYwBaw4EAgQBAAMLIAMrAwhEAAAAAAAA8D+gDAQLIAMrAwhEAAAAAAAA8L+gDAMLIAMrAwiaDAILEAEACyADKwMICyIFvQJ/IAWZRAAAAAAAAOBBYwRAIAWqDAELQYCAgIB4CyIAt71RBEAgAK0hBEEADAELIAUQFSEEQQALIQAgASAENwMAIANBEGokACAACw0AIAAgASACEA0QwwELSQECfyACQv////8HWARAIAAgASACpxCTAUGAgAEQ3QEPCyAAIAIQnQMiA0UEQEF/DwsgACABIANBgIABEN0BIQQgACADEBEgBAtDAQF/IAAgASAAKAIEQf////8HcSIAIAEoAgRB/////wdxIgEQsAEQ5QUiAiAAIAFGckUEQEF/QQEgACABSRsPCyACCyAAIAAgASACQQBOBH4gAq0FIAK4EBULIANBgIABEOABC8IKAgd/AX4jAEEgayIJJAACQAJAAkACQAJAAkACfwJAAkACQAJAAkAgAUIgiKdBAWoOBQMCAgABAgsgACADEAogACACQeYVEMUBQX8hBQwKCyAAIAMQCiAAIAJBhxYQxQF
 
BfyEFDAkLIAAgARCdBKchBgwBCyABpyEGAkADQCAGKAIQIgcgBygCGCACcUF/c0ECdGooAgAhBSAHECchBwNAIAVFBEAgBiEHQQAMBQsgAiAHIAVBAWtBA3QiCGoiBSgCBEcEQCAFKAIAQf///x9xIQUMAQsLIAYoAhQgCGohByAFKAIAIghBgICAwH5xQYCAgMAARgRAIAAgByADEB4MBQsCQCAIQYCAgIACcQRAIAYvAQZBAkcNASACQTBHDQMgACAGIAMgBBDWBSEFDAsLIAhBGnZBMHEiCEEwRwRAIAhBIEcEQCAIQRBHDQggACAHKAIEIAEgAyAEEKIDIQUMDAsgBi8BBkELRg0HIAAgBygCACgCECADEB4MBgsgACAGIAIgByAFEM4CRQ0BDAkLC0GtFkGhDUGPwgBByxYQAAALQeIWQaENQZDCAEHLFhAAAAtBAQshBQNAAkACQCAFRQRAAkAgBi0ABSIFQQRxRQ0AAkAgBUEIcQRAIAIQXARAIAIQeSIFIAYoAihPDQIgBiAHRw0FIAAgASAFrSADIAQQ4AEhBQwNCyAGLwEGQRVrQf//A3FBCEsNAiAAIAIQpQMiCEUNAkF/IQUgCEF/Sg0JDAoLIAAoAhAoAkQgBi8BBkEYbGooAhQiBUUNASAFKAIYBEAgACAGrUKAgICAcIQQDSIMIAIgAyABIAQgBSgCGBEqACEFIAAgDBAKDAoLIAUoAgBFDQEgACAJIAatQoCAgIBwhBANIgwgAiAFKAIAERcAIQUgACAMEAogBUF/TA0JIAVFDQEgCS0AAEEQcQRAIABBACAJKQMYIgynIAwQEBsgASADIAQQogMhBSAAIAkpAxAQCiAAIAkpAxgQCgwMCyAAIAkpAwgQCiAJLQAAQQJxRQ0HIAYgB0cNAyAAIAEgAiADQoCAgIAwQoCAgIAwQYDAABB1IQUMCQsgBi8BBkEVa0H//wNxQQlJDQcLIAYoAhAoAiwhBkEB
 
IQUMAwsgBkUNAANAIAYoAhAiCCAIKAIYIAJxQX9zQQJ0aigCACEFIAgQJyEKA0AgBUUNAyACIAogBUEBa0EDdCIFaiIIKAIERwRAIAgoAgBB////H3EhBQwBCwsgBigCFCAFaiEKAkAgCCgCACIFQRp2QTBxIgtBMEcEQCALQRBHDQEgACAKKAIEIAEgAyAEEKIDIQUMCwtBfyEFIAAgBiACIAogCBDOAkUNAQwKCwsgBUGAgIDAAHENAQwECyAEQYCABHEEQCAAIAMQCiAAIAIQzQJBfyEFDAgLIAdFBEAgACADEAogACAEQZQXEHYhBQwICyAHLQAFIgZBAXFFBEAgACADEAogACAEQaIXEHYhBQwICyAGQQRxBEACQCAGQQhxRQ0AIAcvAQZBAkcNACACEFxFDQAgAhB5IAcoAihHDQAgACAHIAMgBBCXBCEFDAkLIAAgByACIANCgICAgDBCgICAgDAgBEGHzgByEJYEIQUMBgsgACAHIAJBBxCAASICRQ0GIAIgAzcDAAwCC0EAIQUMAAsAC0EBIQUMBAsgACADEAogACAEIAIQ3wEhBQwDCyAAIAAgAxCdASIBEApBfyEFIAEQCw0CIAAgBEH5FhB2IQUMAgsgACADEAoMAQsgACADEApBfyEFCyAJQSBqJAAgBQsNACAAKAIQIAGnENMCCxUBAX4gACABEPsBIQIgACABEAogAgsfACAAKAIQIAEgAhDmASIBIAJFckUEQCAAEMYBCyABC+4DAgN/AX4CQAJAIAMEQCABQoCAgIBgg0KAgICAIFINAQwCCyABQoCAgIBwVA0BC0EBIQQCQAJAIAJCIIinQQFqDgQAAgIBAgsgAqchBQsCQAJAIAFC/////29YQQAgAxsNACABpyIGLwEGQSlGBEAjAEEgayIEJAACQAJAIAAgBEEYaiABQeAAEIQBIgVFDQAgBSkDACEBIAQpAxgiBxAQBEAgACABIAIgAxCbAiEDD
 
AILIAQgAjcDCCAEIAE3AwAgACAHIAUpAwhBAiAEEDUiARALDQAgACABECxFBEAgA0UEQEEAIQMMAwsgAEGwO0EAEBQMAQsgACAFKQMAEJ8BIgZBAEgNAEEBIQMgBg0BIAAgBSkDABD7ASIBEAsNACAAIAEQCiACpyABp0YNASAAQcU7QQAQFAtBfyEDCyAEQSBqJAAgAw8LIAYoAhAoAiwgBUYNACAGLQAFQQFxRQRAIANFDQIgAEGiF0EAEBRBfw8LIAUEQCAFIQQDQCAEIAZGBEAgA0UNBCAAQZc7QQAQFEF/DwsgBCgCECgCLCIEDQALIAIQDRoLQX8hBCAAIAZBABDjAQ0AIAYoAhAiAygCLCIEBEAgACAErUKAgICAcIQQCgsgAyAFNgIsQQEhBAsgBA8LQQAPCyAAEChBfwsZACAAIAEQ5wEiAARAIABBACABEEsaCyAAC5MBAQJ/An8gACgCCCACaiIEIAAoAgxKBEBBfyAAIARBABDSAg0BGgsCQCAAKAIQBEAgAkEAIAJBAEobIQQDQCADIARGDQIgACgCBCAAKAIIIANqQQF0aiABIANqLQAAOwEQIANBAWohAwwACwALIAAoAgQgACgCCGpBEGogASACECMaCyAAIAAoAgggAmo2AghBAAsLnwEBAn8gASABKAIAIgJBAWs2AgAgAkEBTARAAkAgASgCAEUEQCABLQAQBEAgACABEJEECyABKAIsIgIEQCAAIAKtQoCAgIBwhBAlC0EAIQIgARAnIQMDQCABKAIgIAJLBEAgACADKAIEEPMBIAJBAWohAiADQQhqIQMMAQsLIAEQnwIgACABEL8CEB8MAQtB8C9BoQ1BwyJBijAQAAALCwsJACAAQQhqEEYLEQAgACAAKAIAQQFqNgIAIAALli4BDH8jAEEQayIMJAACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAEH0AU0EQEHkpwQoAgAiBUEQIABBC2pBeH
 
EgAEELSRsiCEEDdiICdiIBQQNxBEAgAUF/c0EBcSACaiIDQQN0IgFBlKgEaigCACIEQQhqIQACQCAEKAIIIgIgAUGMqARqIgFGBEBB5KcEIAVBfiADd3E2AgAMAQsgAiABNgIMIAEgAjYCCAsgBCADQQN0IgFBA3I2AgQgASAEaiIBIAEoAgRBAXI2AgQMDQsgCEHspwQoAgAiCk0NASABBEACQEECIAJ0IgBBACAAa3IgASACdHEiAEEAIABrcUEBayIAIABBDHZBEHEiAnYiAUEFdkEIcSIAIAJyIAEgAHYiAUECdkEEcSIAciABIAB2IgFBAXZBAnEiAHIgASAAdiIBQQF2QQFxIgByIAEgAHZqIgNBA3QiAEGUqARqKAIAIgQoAggiASAAQYyoBGoiAEYEQEHkpwQgBUF+IAN3cSIFNgIADAELIAEgADYCDCAAIAE2AggLIARBCGohACAEIAhBA3I2AgQgBCAIaiICIANBA3QiASAIayIDQQFyNgIEIAEgBGogAzYCACAKBEAgCkEDdiIBQQN0QYyoBGohB0H4pwQoAgAhBAJ/IAVBASABdCIBcUUEQEHkpwQgASAFcjYCACAHDAELIAcoAggLIQEgByAENgIIIAEgBDYCDCAEIAc2AgwgBCABNgIIC0H4pwQgAjYCAEHspwQgAzYCAAwNC0HopwQoAgAiBkUNASAGQQAgBmtxQQFrIgAgAEEMdkEQcSICdiIBQQV2QQhxIgAgAnIgASAAdiIBQQJ2QQRxIgByIAEgAHYiAUEBdkECcSIAciABIAB2IgFBAXZBAXEiAHIgASAAdmpBAnRBlKoEaigCACIBKAIEQXhxIAhrIQMgASECA0ACQCACKAIQIgBFBEAgAigCFCIARQ0BCyAAKAIEQXhxIAhrIgIgAyACIANJIgIbIQMgACABIAIbIQEgACECDAELCyABIAhqIgkgAU0NAiABKAIYIQsgASABKAIMIgRHBEAgASg
 
CCCIAQfSnBCgCAEkaIAAgBDYCDCAEIAA2AggMDAsgAUEUaiICKAIAIgBFBEAgASgCECIARQ0EIAFBEGohAgsDQCACIQcgACIEQRRqIgIoAgAiAA0AIARBEGohAiAEKAIQIgANAAsgB0EANgIADAsLQX8hCCAAQb9/Sw0AIABBC2oiAEF4cSEIQeinBCgCACIJRQ0AQR8hBUEAIAhrIQMCQAJAAkACfyAIQf///wdNBEAgAEEIdiIAIABBgP4/akEQdkEIcSICdCIAIABBgOAfakEQdkEEcSIBdCIAIABBgIAPakEQdkECcSIAdEEPdiABIAJyIAByayIAQQF0IAggAEEVanZBAXFyQRxqIQULIAVBAnRBlKoEaigCACICRQsEQEEAIQAMAQtBACEAIAhBAEEZIAVBAXZrIAVBH0YbdCEBA0ACQCACKAIEQXhxIAhrIgcgA08NACACIQQgByIDDQBBACEDIAIhAAwDCyAAIAIoAhQiByAHIAIgAUEddkEEcWooAhAiAkYbIAAgBxshACABQQF0IQEgAg0ACwsgACAEckUEQEECIAV0IgBBACAAa3IgCXEiAEUNAyAAQQAgAGtxQQFrIgAgAEEMdkEQcSICdiIBQQV2QQhxIgAgAnIgASAAdiIBQQJ2QQRxIgByIAEgAHYiAUEBdkECcSIAciABIAB2IgFBAXZBAXEiAHIgASAAdmpBAnRBlKoEaigCACEACyAARQ0BCwNAIAAoAgRBeHEgCGsiASADSSECIAEgAyACGyEDIAAgBCACGyEEIAAoAhAiAQR/IAEFIAAoAhQLIgANAAsLIARFDQAgA0HspwQoAgAgCGtPDQAgBCAIaiIGIARNDQEgBCgCGCEFIAQgBCgCDCIBRwRAIAQoAggiAEH0pwQoAgBJGiAAIAE2AgwgASAANgIIDAoLIARBFGoiAigCACIARQRAIAQoAhAiAEUNBCAEQRBqIQILA0AgAiEHIAAiAUEUaiIC
 
KAIAIgANACABQRBqIQIgASgCECIADQALIAdBADYCAAwJCyAIQeynBCgCACICTQRAQfinBCgCACEDAkAgAiAIayIBQRBPBEBB7KcEIAE2AgBB+KcEIAMgCGoiADYCACAAIAFBAXI2AgQgAiADaiABNgIAIAMgCEEDcjYCBAwBC0H4pwRBADYCAEHspwRBADYCACADIAJBA3I2AgQgAiADaiIAIAAoAgRBAXI2AgQLIANBCGohAAwLCyAIQfCnBCgCACIGSQRAQfCnBCAGIAhrIgE2AgBB/KcEQfynBCgCACICIAhqIgA2AgAgACABQQFyNgIEIAIgCEEDcjYCBCACQQhqIQAMCwtBACEAIAhBL2oiCQJ/QbyrBCgCAARAQcSrBCgCAAwBC0HIqwRCfzcCAEHAqwRCgKCAgICABDcCAEG8qwQgDEEMakFwcUHYqtWqBXM2AgBB0KsEQQA2AgBBoKsEQQA2AgBBgCALIgFqIgVBACABayIHcSICIAhNDQpBnKsEKAIAIgQEQEGUqwQoAgAiAyACaiIBIANNIAEgBEtyDQsLQaCrBC0AAEEEcQ0FAkACQEH8pwQoAgAiAwRAQaSrBCEAA0AgAyAAKAIAIgFPBEAgASAAKAIEaiADSw0DCyAAKAIIIgANAAsLQQAQ/wEiAUF/Rg0GIAIhBUHAqwQoAgAiA0EBayIAIAFxBEAgAiABayAAIAFqQQAgA2txaiEFCyAFIAhNIAVB/v///wdLcg0GQZyrBCgCACIEBEBBlKsEKAIAIgMgBWoiACADTSAAIARLcg0HCyAFEP8BIgAgAUcNAQwICyAFIAZrIAdxIgVB/v///wdLDQUgBRD/ASIBIAAoAgAgACgCBGpGDQQgASEACyAAQX9GIAhBMGogBU1yRQRAQcSrBCgCACIBIAkgBWtqQQAgAWtxIgFB/v///wdLBEAgACEBDAgLIAEQ/wFBf0cEQCABIAVqIQUgACEBDAgLQQAgBWsQ/
 
wEaDAULIAAiAUF/Rw0GDAQLAAtBACEEDAcLQQAhAQwFCyABQX9HDQILQaCrBEGgqwQoAgBBBHI2AgALIAJB/v///wdLDQEgAhD/ASIBQX9GQQAQ/wEiAEF/RnIgACABTXINASAAIAFrIgUgCEEoak0NAQtBlKsEQZSrBCgCACAFaiIANgIAQZirBCgCACAASQRAQZirBCAANgIACwJAAkACQEH8pwQoAgAiBwRAQaSrBCEAA0AgASAAKAIAIgMgACgCBCICakYNAiAAKAIIIgANAAsMAgtB9KcEKAIAIgBBACAAIAFNG0UEQEH0pwQgATYCAAtBACEAQairBCAFNgIAQaSrBCABNgIAQYSoBEF/NgIAQYioBEG8qwQoAgA2AgBBsKsEQQA2AgADQCAAQQN0IgNBlKgEaiADQYyoBGoiAjYCACADQZioBGogAjYCACAAQQFqIgBBIEcNAAtB8KcEIAVBKGsiA0F4IAFrQQdxQQAgAUEIakEHcRsiAGsiAjYCAEH8pwQgACABaiIANgIAIAAgAkEBcjYCBCABIANqQSg2AgRBgKgEQcyrBCgCADYCAAwCCyABIAdNDQAgACgCDEEIcSADIAdLcg0AIAAgAiAFajYCBEH8pwQgB0F4IAdrQQdxQQAgB0EIakEHcRsiAGoiAjYCAEHwpwRB8KcEKAIAIAVqIgEgAGsiADYCACACIABBAXI2AgQgASAHakEoNgIEQYCoBEHMqwQoAgA2AgAMAQtB9KcEKAIAIAFLBEBB9KcEIAE2AgALIAEgBWohAkGkqwQhAAJAAkACQAJAAkACQANAIAIgACgCAEcEQCAAKAIIIgANAQwCCwsgAC0ADEEIcUUNAQtBpKsEIQADQCAHIAAoAgAiAk8EQCACIAAoAgRqIgQgB0sNAwsgACgCCCEADAALAAsgACABNgIAIAAgACgCBCAFajYCBCABQXggAWtBB3FBACABQQhqQQdxG2oiCSAIQQNyNg
 
IEIAJBeCACa0EHcUEAIAJBCGpBB3EbaiIFIAggCWoiBmshAiAFIAdGBEBB/KcEIAY2AgBB8KcEQfCnBCgCACACaiIANgIAIAYgAEEBcjYCBAwDCyAFQfinBCgCAEYEQEH4pwQgBjYCAEHspwRB7KcEKAIAIAJqIgA2AgAgBiAAQQFyNgIEIAAgBmogADYCAAwDCyAFKAIEIgBBA3FBAUYEQCAAQXhxIQcCQCAAQf8BTQRAIAUoAggiAyAAQQN2IgBBA3RBjKgEakYaIAMgBSgCDCIBRgRAQeSnBEHkpwQoAgBBfiAAd3E2AgAMAgsgAyABNgIMIAEgAzYCCAwBCyAFKAIYIQgCQCAFIAUoAgwiAUcEQCAFKAIIIgAgATYCDCABIAA2AggMAQsCQCAFQRRqIgAoAgAiAw0AIAVBEGoiACgCACIDDQBBACEBDAELA0AgACEEIAMiAUEUaiIAKAIAIgMNACABQRBqIQAgASgCECIDDQALIARBADYCAAsgCEUNAAJAIAUgBSgCHCIDQQJ0QZSqBGoiACgCAEYEQCAAIAE2AgAgAQ0BQeinBEHopwQoAgBBfiADd3E2AgAMAgsgCEEQQRQgCCgCECAFRhtqIAE2AgAgAUUNAQsgASAINgIYIAUoAhAiAARAIAEgADYCECAAIAE2AhgLIAUoAhQiAEUNACABIAA2AhQgACABNgIYCyAFIAdqIQUgAiAHaiECCyAFIAUoAgRBfnE2AgQgBiACQQFyNgIEIAIgBmogAjYCACACQf8BTQRAIAJBA3YiAEEDdEGMqARqIQICf0HkpwQoAgAiAUEBIAB0IgBxRQRAQeSnBCAAIAFyNgIAIAIMAQsgAigCCAshACACIAY2AgggACAGNgIMIAYgAjYCDCAGIAA2AggMAwtBHyEAIAJB////B00EQCACQQh2IgAgAEGA/j9qQRB2QQhxIgN0IgAgAEGA4B9qQRB2QQRxIgF0IgAgAEGAgA9qQRB
 
2QQJxIgB0QQ92IAEgA3IgAHJrIgBBAXQgAiAAQRVqdkEBcXJBHGohAAsgBiAANgIcIAZCADcCECAAQQJ0QZSqBGohBAJAQeinBCgCACIDQQEgAHQiAXFFBEBB6KcEIAEgA3I2AgAgBCAGNgIAIAYgBDYCGAwBCyACQQBBGSAAQQF2ayAAQR9GG3QhACAEKAIAIQEDQCABIgMoAgRBeHEgAkYNAyAAQR12IQEgAEEBdCEAIAMgAUEEcWoiBCgCECIBDQALIAQgBjYCECAGIAM2AhgLIAYgBjYCDCAGIAY2AggMAgtB8KcEIAVBKGsiA0F4IAFrQQdxQQAgAUEIakEHcRsiAGsiAjYCAEH8pwQgACABaiIANgIAIAAgAkEBcjYCBCABIANqQSg2AgRBgKgEQcyrBCgCADYCACAHIARBJyAEa0EHcUEAIARBJ2tBB3EbakEvayIAIAAgB0EQakkbIgJBGzYCBCACQayrBCkCADcCECACQaSrBCkCADcCCEGsqwQgAkEIajYCAEGoqwQgBTYCAEGkqwQgATYCAEGwqwRBADYCACACQRhqIQADQCAAQQc2AgQgAEEIaiEBIABBBGohACABIARJDQALIAIgB0YNAyACIAIoAgRBfnE2AgQgByACIAdrIgRBAXI2AgQgAiAENgIAIARB/wFNBEAgBEEDdiIAQQN0QYyoBGohAgJ/QeSnBCgCACIBQQEgAHQiAHFFBEBB5KcEIAAgAXI2AgAgAgwBCyACKAIICyEAIAIgBzYCCCAAIAc2AgwgByACNgIMIAcgADYCCAwEC0EfIQAgB0IANwIQIARB////B00EQCAEQQh2IgAgAEGA/j9qQRB2QQhxIgJ0IgAgAEGA4B9qQRB2QQRxIgF0IgAgAEGAgA9qQRB2QQJxIgB0QQ92IAEgAnIgAHJrIgBBAXQgBCAAQRVqdkEBcXJBHGohAAsgByAANgIcIABBAnRBlKoEaiEDAkBB6KcEKAIA
 
IgJBASAAdCIBcUUEQEHopwQgASACcjYCACADIAc2AgAgByADNgIYDAELIARBAEEZIABBAXZrIABBH0YbdCEAIAMoAgAhAQNAIAEiAigCBEF4cSAERg0EIABBHXYhASAAQQF0IQAgAiABQQRxaiIDKAIQIgENAAsgAyAHNgIQIAcgAjYCGAsgByAHNgIMIAcgBzYCCAwDCyADKAIIIgAgBjYCDCADIAY2AgggBkEANgIYIAYgAzYCDCAGIAA2AggLIAlBCGohAAwFCyACKAIIIgAgBzYCDCACIAc2AgggB0EANgIYIAcgAjYCDCAHIAA2AggLQfCnBCgCACIAIAhNDQBB8KcEIAAgCGsiATYCAEH8pwRB/KcEKAIAIgIgCGoiADYCACAAIAFBAXI2AgQgAiAIQQNyNgIEIAJBCGohAAwDC0GEpwRBMDYCAEEAIQAMAgsCQCAFRQ0AAkAgBCgCHCICQQJ0QZSqBGoiACgCACAERgRAIAAgATYCACABDQFB6KcEIAlBfiACd3EiCTYCAAwCCyAFQRBBFCAFKAIQIARGG2ogATYCACABRQ0BCyABIAU2AhggBCgCECIABEAgASAANgIQIAAgATYCGAsgBCgCFCIARQ0AIAEgADYCFCAAIAE2AhgLAkAgA0EPTQRAIAQgAyAIaiIAQQNyNgIEIAAgBGoiACAAKAIEQQFyNgIEDAELIAQgCEEDcjYCBCAGIANBAXI2AgQgAyAGaiADNgIAIANB/wFNBEAgA0EDdiIAQQN0QYyoBGohAgJ/QeSnBCgCACIBQQEgAHQiAHFFBEBB5KcEIAAgAXI2AgAgAgwBCyACKAIICyEAIAIgBjYCCCAAIAY2AgwgBiACNgIMIAYgADYCCAwBC0EfIQAgA0H///8HTQRAIANBCHYiACAAQYD+P2pBEHZBCHEiAnQiACAAQYDgH2pBEHZBBHEiAXQiACAAQYCAD2pBEHZBAnEiAHRBD3YgASACciAAc
 
msiAEEBdCADIABBFWp2QQFxckEcaiEACyAGIAA2AhwgBkIANwIQIABBAnRBlKoEaiECAkACQCAJQQEgAHQiAXFFBEBB6KcEIAEgCXI2AgAgAiAGNgIAIAYgAjYCGAwBCyADQQBBGSAAQQF2ayAAQR9GG3QhACACKAIAIQgDQCAIIgEoAgRBeHEgA0YNAiAAQR12IQIgAEEBdCEAIAEgAkEEcWoiAigCECIIDQALIAIgBjYCECAGIAE2AhgLIAYgBjYCDCAGIAY2AggMAQsgASgCCCIAIAY2AgwgASAGNgIIIAZBADYCGCAGIAE2AgwgBiAANgIICyAEQQhqIQAMAQsCQCALRQ0AAkAgASgCHCICQQJ0QZSqBGoiACgCACABRgRAIAAgBDYCACAEDQFB6KcEIAZBfiACd3E2AgAMAgsgC0EQQRQgCygCECABRhtqIAQ2AgAgBEUNAQsgBCALNgIYIAEoAhAiAARAIAQgADYCECAAIAQ2AhgLIAEoAhQiAEUNACAEIAA2AhQgACAENgIYCwJAIANBD00EQCABIAMgCGoiAEEDcjYCBCAAIAFqIgAgACgCBEEBcjYCBAwBCyABIAhBA3I2AgQgCSADQQFyNgIEIAMgCWogAzYCACAKBEAgCkEDdiIAQQN0QYyoBGohBEH4pwQoAgAhAgJ/QQEgAHQiACAFcUUEQEHkpwQgACAFcjYCACAEDAELIAQoAggLIQAgBCACNgIIIAAgAjYCDCACIAQ2AgwgAiAANgIIC0H4pwQgCTYCAEHspwQgAzYCAAsgAUEIaiEACyAMQRBqJAAgAAtjAgF/AX4jAEEQayICJAAgAAJ+IAFFBEBCAAwBCyACIAGtQgAgAWciAUHRAGoQciACKQMIQoCAgICAgMAAhUGegAEgAWutQjCGfCEDIAIpAwALNwMAIAAgAzcDCCACQRBqJAALgwECA38BfgJAIABCgICAgBBUBEAgACEFDAELA0AgAUEBay
 
IBIAAgAEIKgCIFQgp+fadBMHI6AAAgAEL/////nwFWIQIgBSEAIAINAAsLIAWnIgIEQANAIAFBAWsiASACIAJBCm4iA0EKbGtBMHI6AAAgAkEJSyEEIAMhAiAEDQALCyABC+kFAwF/BHwBfgJAAkACQAJ8AkAgAL0iBkIgiKdB/////wdxIgFB+tCNggRPBEAgAL1C////////////AINCgICAgICAgPj/AFYNBSAGQgBTBEBEAAAAAAAA8L8PCyAARO85+v5CLoZAZEUNASAARAAAAAAAAOB/og8LIAFBw9zY/gNJDQIgAUGxxcL/A0sNACAGQgBZBEBBASEBRHY8eTXvOeo9IQIgAEQAAOD+Qi7mv6AMAgtBfyEBRHY8eTXvOeq9IQIgAEQAAOD+Qi7mP6AMAQsCfyAARP6CK2VHFfc/okQAAAAAAADgPyAApqAiAplEAAAAAAAA4EFjBEAgAqoMAQtBgICAgHgLIgG3IgNEdjx5Ne856j2iIQIgACADRAAA4P5CLua/oqALIgAgACACoSIAoSACoSECDAELIAFBgIDA5ANJDQFBACEBCyAAIABEAAAAAAAA4D+iIgSiIgMgAyADIAMgAyADRC3DCW63/Yq+okQ5UuaGys/QPqCiRLfbqp4ZzhS/oKJEhVX+GaABWj+gokT0EBERERGhv6CiRAAAAAAAAPA/oCIFRAAAAAAAAAhAIAQgBaKhIgShRAAAAAAAABhAIAAgBKKho6IhBCABRQRAIAAgACAEoiADoaEPCyAAIAQgAqGiIAKhIAOhIQICQAJAAkAgAUEBag4DAAIBAgsgACACoUQAAAAAAADgP6JEAAAAAAAA4L+gDwsgAEQAAAAAAADQv2MEQCACIABEAAAAAAAA4D+goUQAAAAAAAAAwKIPCyAAIAKhIgAgAKBEAAAAAAAA8D+gDwsgAUH/B2qtQjSGvyEDIAFBOU8EQCAAIAKhRAAAAAAAAPA/oCIAIACgRAA
 
AAAAAAOB/oiAAIAOiIAFBgAhGG0QAAAAAAADwv6APC0QAAAAAAADwP0H/ByABa61CNIa/IgShIAAgAiAEoKEgAUEUSCIBGyAAIAKhRAAAAAAAAPA/IAEboCADoiEACyAAC44CAQZ/IwBBEGsiBCQAAkAgBEEMaiAAQeCvA0EbELsEIgFBAEgNACABQcCwA2ohAQNAIAEtAAAiAkEYdEEYdSEGAn8gAUEBaiACQT9xIgJBMEkNABogAkEIdCEDIAJBN00EQCADIAEtAAFqQdDfAGshAiABQQJqDAELIAEtAAIgA0GA8ABrIAEtAAFBCHRyakGwEGohAiABQQNqCyIDQQFqIAMgBkF/ShshAQJAIAAgAiAEKAIMIgNqQQFqIgJJBEACQAJAIAZBwAFxQQZ2DgMDAAUBCyABQQFrLQAAIAAgA2tqIQUMBAtB5gEhBQwDCyAEIAI2AgwMAQsLIAFBAWstAAAhBQsgBEEQaiQAIAULWQEDf0F/IQEgACAAKAIAIgJBAmoiAxDdAgR/QX8FIAAoAggiAUEEaiABIAJBAnQiAhDoASAAKAIIIgFBADYCACABIAJqQX82AgQgACADNgIAIAAQuQRBAAsL8gEBBH8CQANAAkACQAJAAn8gAiAHTCIIIAQgBkxyRQRAIAEgB0ECdGooAgAiCSADIAZBAnRqKAIAIghJBEAgCQwCCyAIIAlHDQMgBkEBaiEGIAdBAWohByAJIQgMBAsgCA0BIAEgB0ECdGooAgALIQggB0EBaiEHDAILIAQgBkwNAyADIAZBAnRqKAIAIQgLIAZBAWohBgsCfwJAAkACQAJAIAUOAwMAAQILIAYgB3FBAXEMAwsgBiAHc0EBcQwCCxABAAsgBiAHckEBcQshCSAJIAAoAgBBAXFGDQAgACAIEL0ERQ0AC0F/DwsgABC5BEEAC2oCAX4CfyAAKAIAIQMDQCADLQAAIgRBMGtB/wFxQQlNBEAgAkIKfiAErUL/
 
AYN8QjB9IgJC/////wdUIgQgAXIEQCACQv////8HIAQbIQIgA0EBaiEDDAIFQX8PCwALCyAAIAM2AgAgAqcLDAAgAEH95QFBABA8CxYAIAAgAUH/AXEQDiAAIAJB/wFxEA4LmQgBD38jAEHgBGsiDCQAIAAgAhC+AyENIAAgAkGAAXIQvgMhEgJAIAJFIAFBAklyDQAgDCABNgIEIAwgADYCACAMQQA2AghBACACayEQIAxBDHIhCwNAIAsgDE0NASALQQxrIgsoAggiDkEyIA5BMkobIRMgCygCBCEIIAsoAgAhBQNAAkAgCEEGTQRAIAIgCGwhAAwBCyAOIBNGBEAgAiAIbCIHIAJrIQYgCEEBdiACbCEKIAUgAhC+AyEIA0ACQCAKRQRAA0AgByACayIHRQ0CIAUgBSAHaiACIAgRBgAgByACayEGQQAhAANAIABBAXQgAmoiASAHTw0BIAAgBWoiCQJ/IAEgBkkEQCABQQAgAiABIAVqIgAgACACaiAEIAMRAQBBAEobaiEBCyABIAVqIgALIAQgAxEBAEEASg0BIAkgACACIAgRBgAgASEADAALAAsACyAKIAJrIgohAANAIABBAXQgAmoiASAHTw0CIAAgBWoiCQJ/IAEgBkkEQCABQQAgAiABIAVqIgAgACACaiAEIAMRAQBBAEobaiEBCyABIAVqIgALIAQgAxEBAEEASg0CIAkgACACIAgRBgAgASEADAALAAsLQQAhAAwBCyAOQQFqIQ5BASEJIAUCfyAFIAhBAnYgAmwiAWoiByAFIAFBAXRqIgYgBCADEQEAIQAgBiAFIAFBA2xqIgogBCADEQEAIQECQCAAQX9MBEAgAUEASA0BIAogByAHIAogBCADEQEAQQBIGwwCCyABQQBKDQAgByAKIAcgCiAEIAMRAQBBAEgbIQYLIAYLIAIgDREGACAFIAIgCGxqIgohASAKIQYgAiAFaiIPIQBBASERA0ACQAJAI
 
AAgAU8NACAFIAAgBCADEQEAIgdBf0wNACAHDQEgDyAAIAIgDREGACACIA9qIQ8gEUEBaiERDAELAkADQCAAIAEgEGoiAU8NASAFIAEgBCADEQEAIgdBAEwEQCAHDQEgBiAQaiIGIAEgAiANEQYAIAhBAWshCAwBCwsgACABIAIgDREGAAwBCyAFIAAgACAPayIHIA8gBWsiASABIAdLGyIBayABIBIRBgAgACAKIAYgAGsiASAKIAZrIgAgACABSxsiAGsgACASEQYAIAggCWshBiAKIAFrIQECQCAGIAkgEWsiCEkEQCAFIQkgCCEAIAEhBSAGIQgMAQsgASEJIAYhAAsgCyAONgIIIAsgADYCBCALIAk2AgAgC0EMaiELDAMLIAAgAmohACAJQQFqIQkMAAsACwsgACAFaiEGIAUhCQNAIAIgCWoiCSEAIAYgCU0NAQNAIAAgBU0NASAAIBBqIgEgACAEIAMRAQBBAUgNASAAIAEgAiANEQYAIAEhAAwACwALAAsACyAMQeAEaiQAC08BAX8gARCOAQRAIAEQDQ8LAkAgAUKAgICAcFQNACABpyICLwEGQQRHDQAgAikDICIBEI4BRQ0AIAEQDQ8LIABB2bQBQQAQFEKAgICA4AALkAIBAn8jAEEQayIDJAAgAyACNwMIQoCAgIDgACECAkAgACABEL8BIgRBAEgNACAERQRAIABCgICAgDBBASADQQhqEOYCIQIMAQsgACABQTwgAUEAEBIiARALBEAgASECDAELAkACQCABELEBRQ0AIAAgARCNAyIERQ0BIAAgBEYNACAAIAEgBCkDQBBYRQ0AIAAgARAKQoCAgIAwIQELAn4gARAgBEAgACABQcwBIAFBABASIQIgACABEAogAhALDQNCgICAgDAgAiACECYbIQELIAELEBAEQCAAQoCAgIAwQQEgA0EIahDmAiECDAILIAAgAUEBIANBCGoQrgEhAgsgACABEAoLIA
 
NBEGokACACCxoAIABB3gBB2AAgARsQDiAAIAJB//8DcRAwC+0BAQN/A0ACQCACIANMDQAgASADaiIFLQAAIgZBAnQhBwJAAkAgBkG0AUcEQCAGQcABRw0BIAQgBSgAATYCAAwCCyAAIAUoAAEiBUEAEG9BAEoNAiAAKAKkAiAFQRRsaigCEEUNAUHwmAFBoQ1BiPABQZqZARAAAAsgB0GTMWotAAAiBkEcSw0AQQEgBnQiBkGAgIAccUUEQCAGQYCAgOAAcUUEQCAGQYCAgIIBcUUNAiAAIAUoAAFBfxBvGgwCCyAAIAUoAAVBfxBvGgsgACgCACAFKAABEBELIAMgB0GQMWotAABqIQMMAQsLIAMLuQMBBX8gAUUEQCAAIAJBBHFBCHIQ7QEPC0F/IQMCQAJAAkAgACABQQFrIgQgAhCwAg0AIARBB0sNASACQXtxIQUgAkEBcSEGIAFBAWshBwNAIAAoAhAhAQJAAkACQAJAAkACQAJAAkACQAJAIAcOBwABAgMEBQYHCyABQSVHBEBBmgEhAiABQSpGDQkgAUEvRw0NQZsBIQIMCQtBnAEhAgwIC0GdASECQQAhAwJAIAFBK2sOAwgKAAoLQZ4BIQIMBwsgAUHqAGoiAUEDTw0KIAFB4ABrIQIMBgtBACEDAkACQAJAAkAgAUHmAGoOAwELAgALAkAgAUHJAGoOAggDAAtBowEhAgJAIAFBPGsOAwkLAAsLQaUBIQIMCAtBpAEhAgwHC0GmASECDAYLQacBIQIMBQsgAUHjAGoiAUEETw0IQanXquV6IAFBA3R2IQIMBAtBrQEhAiABQSZHDQcMAwtBrgEhAiABQd4ARw0GDAILQa8BIQIgAUH8AEcNBQwBC0GoASECIAZFDQILQX8hAyAAEA8NASAAIAQgBRCwAg0BIAAgAkH/AXEQDAwACwALIAMPCxABAAtBAAsJACAAQQIQzwMLUwEEfyAAKAL0ASICQQAgAkEAShs
 
hBEEAIQICQANAIAIgBEYNASABIAAoAvwBIgUgAkEEdGooAgxHBEAgAkEBaiECDAELCyAFIAJBBHRqIQMLIAMLNgADQCABIAJMRQRAIABBswEQDCAAIAFB//8DcRAWIAAoAkAoAswBIAFBA3RqKAIAIQEMAQsLC9UBAQJ/IAAgACgCQCIEIAECfwJAAkACQAJAAkACQCABQSdGDQAgAUHNAEYgAUE6RnJFBEAgAUHFAEYNASABQS1HDQNBr4sBIQMgBC0AbEEBRg0CDAMLQc6LASEDIAQtAG5BAXENASABQcUARw0CCyACQbF/Rg0DIAJBQ0YNBEHziwEhAyACQUlGDQAgAkFRRw0CCyAAIANBABATQX8PCyACQbF/Rg0BIAJBQ0YNAkEBIAJBUUYNAxogAkFJRw0AQQIMAwsQAQALQQYMAQtBBQsQqAFBH3ULCQAgAEEAEPABCzsBAX8gASgCACECA0ACQCACIAAoAgRB/////wdxTg0AIAAgAhAvQSBHDQAgASACQQFqIgI2AgAMAQsLC4UBAgV/AX5BfyEEAkAgASgCACIFIAAoAgRB/////wdxIgZODQAgBSEDA0ACQAJAIAMgBkYEQCAGIQMMAQsgACADEC8iB0Ewa0EKSQ0BIAMgBUYNAwsgAiAINwMAIAEgAzYCAEEAIQQMAgsgA0EBaiEDIAetIAhCCn58QjB9IQgMAAsACyAEC0EBAX8CQCACQoCAgIBwVA0AIAKnIgMvAQZBCkcNACADKQMgIgIQjgFFDQAgACABIAIQRw8LIABBoPUAQQAQFEF/CxsBAX4gACABIAIgAyAEEMMCIQUgACABEAogBQvlAwIHfwF+IwBBMGsiBSQAIAFBKhA/IQYgBUIANwIoAkADQCAHQQJHBEACQCAAQSAQaiIIBEAgCEEIaiEJQQAhBANAIARBAkYNAiAJIARBA3QiCmogAyAKaikDABANNwMAIARBAWohBAwACwALQX8hBCAH
 
QQFHDQMgACgCECAFKAIoELsCDAMLIAggAiAHQQN0aikDACILQoCAgIAwIAAgCxA6GxANNwMYIAVBKGogB0ECdGogCDYCACAHQQFqIQcMAQsLAkAgBigCACIERQRAIAZBBGohAEEAIQQDQCAEQQJGDQIgBUEoaiAEQQJ0aigCACAAIARBA3RqEEwgBEEBaiEEDAALAAsCQCAEQQJHDQBBAiEEIAYoAhQNACAAKAIQIgIoApgBIgNFDQAgACABIAYpAxhBASACKAKcASADESwAIAYoAgAhBAsgBSAFQShqIARBAWsiA0ECdGooAgAiAikDCDcDACAFIAIpAxA3AwggBSACKQMYNwMQQQAhBCAFIANBAEetQoCAgIAQhDcDGCAFIAYpAxg3AyAgAEEtQQUgBRCCAwNAIARBAkYNASAAKAIQIAVBKGogBEECdGooAgAQuwIgBEEBaiEEDAALAAsgBkEBNgIUQQAhBAsgBUEwaiQAIAQLIwAgACABKQMIECUgACABKQMQECUgACABKQMYECUgACABEB8LmQIBAX8jAEEQayIHJAAgByAAOQMIIAcgAUEBayIFNgIAIAZBgAFB8cMAIAcQVRogAyAGLQAAQS1GNgIAIAQgBi0AAToAACABQQJOBEAgBEEBaiAGQQNqIAUQIxoLIAEgBGpBADoAACACAn8gASAGaiABQQFKakECaiEBQQAhBUEAIQNBACEEA0AgASICQQFqIQEgAiwAABD9BQ0ACwJAAkACQCACLAAAIgZBK2sOAwECAAILQQEhAwsgASwAACEGIAEhAiADIQQLAkAgBhBFRQ0AQQAhAQNAIAEgAiwAAGtBMGohBSACLAABEEVFDQEgAkEBaiECIAVBCmwhAQwACwALIAVBACAFayAEG0EBags2AgAgB0EQaiQACwoAIAAgAUECdGoLDgAgACABakGBgNzxeWwLEAAgACgCGEF/c0ECdCAAagshACAAIAGtIAEpAwBCg
 
ICAgDAgASgCCCABKAIgQQQQ4gELmQICBX8BfiMAQRBrIgQkACMAQRBrIgMkACADQoCAgIAwNwMIIANCgICAgDA3AwAgAEEsQQJBAEECIAMQ5QEhCCADQRBqJAAgBCAINwMIIAgQC0UEQAJ+An4gAhAQBEAgACACQQEgBEEIahDrBQwBCyAAIAJBASAEQQhqEK4BCyIIEAtFBEAgBCkDCEEPED9BCGohBwNAIAVBAkYEQANAIAZBAkcEQCABIAZBA3QiA2ogAyAHaikDABANNwMAIAZBAWohBgwBCwsgBCkDCCECIAgMAwsgBUEDdCEDIAVBAWohBSAAIAMgB2opAwAQZ0UNAAsLIAAgBCkDCBAKIAghAkKAgICA4AALIQggACACEAoLIARBEGokACAIC70MAwl/A34BfCMAQdAAayIIJAAgCCABNgJMQd8AQYACIARBIHEbIQkCQAJAAkACQAJ/AkACQAJAAkACQCABLQAAIgdBK2sOAwECAAILQQEhDAsgCCABQQFqIgE2AkwgBEGACHFFDQEgAS0AACEHCyAHQTBHDQACQAJAAkAgAS0AASIHQfgARwRAIAdB7wBGDQIgB0HYAEcNAQsgA0FvcUUEQCAIIAFBAmoiBTYCTEEQDAYLIAdB7wBGDQEgA0UhBgwECyADRSEGIAMgB0HPAEdyDQMMAQsgAw0GCyAEQQRxRQ0EIAggAUECaiIFNgJMQQgMAgsgBEGBAXENAgJ/IAhBzABqIQdBtMMAIQUDQCAFLQAAIgYEQCAGIAEtAABHBEBBAAwDBSAFQQFqIQUgAUEBaiEBDAILAAsLIAcEQCAHIAE2AgALQQELRQ0CRAAAAAAAAPD/RAAAAAAAAPB/IAwbIhG9An8gEZlEAAAAAAAA4EFjBEAgEaoMAQtBgICAgHgLIgC3vVEEQCAArSEODAYLIBEQFSEODAULAkACQCAHQeIARwRAIAdBwgBGIAZxDQEgBkEBcyAHQTBrQf
 
8BcUEJS3INBCAEQRBxRQ0FIAFBAWohBUECIQYDQCAHQfgBcUEwRw0DIAEgBmotAAAhByAGQQFqIQYMAAsACyAGRQ0FCyAEQQRxRQ0DIAggAUECaiIFNgJMQQIMAQtBgAIhCSAHQf4BcUE4Rg0CIAggBTYCTEEICyEDQoCAgIDAfiEOIAUtAAAQ9AEgA0gNAgwDCyADDQELQQohAwsgCCgCTCIKQQFqIQdBACEBIANBCkchCwJAA0ACQCABIApqIgUtAAAiBkEYdEEYdSENIAYQ9AEgA04EQCAJIA1HDQEgCyABQQFHckUEQCAKLQAAQTBGDQQLIAUtAAEQ9AEgA04NAQsgCCAKIAFBAWoiAWo2AkwMAQsLIAUhBwtBACELAkAgBEEBcQ0AAkAgBkEuRw0AIAcgCk0EQCAHLQABEPQBIANODQILIAggB0EBaiIFNgJMQoCAgIDAfiEOIAkgBywAASIGRg0CA0AgBkH/AXEQ9AEgA04EQEEBIQsgCSAGQRh0QRh1Rw0CIAUtAAEQ9AEgA04NAgsgCCAFQQFqIgE2AkwgBS0AASEGIAEhBQwACwALIAUgCk0NAAJAIAZB/wFxQeUARwRAIANBCkZBACAGQf8BcUHFAEYbDQEgBkEgckH/AXFB8ABHIANBEEtyDQJBASADdEGEggRxDQEMAgsgA0EKRw0BC0EBIQsgBUEBaiEBAkACQAJAIAUtAAFBK2sOAwACAQILIAVBAmohAQwBCyAFQQJqIQELIAEtAAAQRUUNACABIQUDQCAIIAUiAUEBaiIFNgJMIAEtAAEiBEEYdEEYdSEHIAQQRQ0AIAcgCUcNASABLQACEEUNAAsLIAUgCkYEQEKAgICAwH4hDgwBCyAIIQkCQCAFIAprIgRBAmoiB0HBAE8EQCAAKAIQIAcQ5wEiCUUNAQtBACEBQQAhBiAMBEAgCUEtOgAAQQEhBgsgBEEAIARBAEobIQQDQCABIARHBEAgASAKai0
 
AACIFQd8ARwRAIAYgCWogBToAACAGQQFqIQYLIAFBAWohAQwBCwsgBiAJakEAOgAAAn4gA0EKRwRAQoCAgIDAfiALDQEaCwJ8QgAhDiADQQpGQQAgCxtFBEAgCUEBaiAJIAktAAAiBkEtRhshAQNAIAEiBEEBaiEBIAQtAAAiBUEwRg0ACwJ+IANBCkYEQEIKIQ9CmLPmzJmz5swZDAELQQAgA2usIAOsIg+ACyEQQQAhAQNAAkAgBUUNACAFEPQBIgUgA04NACAOIAWsIA4gD358IA4gEFYiBRshDiABIAVqIQEgBC0AASEFIARBAWohBAwBCwsgDrohEQJ8IAEEQCADtyABtxCFBiARoiERCyARmgsgESAGQS1GGwwBCyAJEPkFCyIRvQJ/IBGZRAAAAAAAAOBBYwRAIBGqDAELQYCAgIB4CyIBt71RBEAgAa0MAQsgERAVCyEOIAdBwQBJDQEgACgCECAJEB8MAQsgABDGAUKAgICA4AAhDgsgAgRAIAIgCCgCTDYCAAsgCEHQAGokACAOCyYBAX4gACABIAIgAUEAEBIiBRALBH4gBQUgACAFIAEgAyAEEDULC7sHAg1/AX4jAEHgAGsiBSQAIAAgBUHIAGoQkQICQCACBEAgBSACNgJAIAVByABqQdvMACAFQUBrEIQCIANBf0cEQCAFIAM2AjAgBUHIAGpB5cwAIAVBMGoQhAILIAVByABqQQoQDiAAIAFBMSAAIAIQcUEDEBkaIAAgAUEyIAOtQQMQGRogBEECcQ0BCyAAKAIQQYwBaiECA0AgAigCACICRQ0BQQAhAyAEQQFxRQRAIAUCf0EAIQYCQCACKQMIIhJCgICAgHBUDQAgEqciDCgCECIHIAcoAhhBf3NBAnRBpH5yaigCACEDIAcQJyEIA0AgA0UNASAIIANBAWsiB0EDdGoiAygCACEKIAMoAgRBNkcEQCAKQf///x9xIQMMAQsLIApB/////wNLDQAg
 
DCgCFCAHQQN0aikDACISQoCAgIBwg0KAgICAkH9SDQAgACASELcBIQYLQenMACAGRQ0AGiAGQenMACAGLQAAGws2AiAgBUHIAGpB28wAIAVBIGoQhAIgACAGEDYCQCACKAIIIgMvAQYQ9wEEQCADKAIgIgkvABEiA0ELdkEBcSEPIANBgAhxRQ0BIAIoAiAgCSgCFEF/c2ohDEEAIRAjAEEQayILJABBfyEDAkAgCS0AEkEEcUUNACAJKAJQIghFDQAgCCAJKAJMaiENIAkoAkQhBgNAIAYhAyAIIA1PDQEgCEEBaiEHAn8gCC0AACIGRQRAAkAgC0EIaiAHIA0QlAUiBkEASA0AIAsoAgghEUEAIQojAEEQayIOJAACQCAOQQxqIAYgB2oiCCANEJQFIgdBAEgEQEF/IQcMAQsgDigCDCIGQQF2QQAgBkEBcWtzIQoLIAsgCjYCDCAOQRBqJAAgB0EASA0AIAsoAgwgA2ohBiAHIAhqDAILIAkoAkQhAwwDCyADIAZBAWsiBiAGQf8BcUEFbiIRQQVsa0H/AXFqQQFrIQYgBwshCCAQIBFqIhAgDE0NAAsLIAtBEGokACAFIAAgCSgCQBCiBCIGQf86IAYbNgIQIAVByABqQfXMACAFQRBqEIQCIAAgBhA2IANBf0cEQCAFIAM2AgAgBUHIAGpB5cwAIAUQhAILIAVByABqQSkQDgwBC0EAIQ8gBUHIAGpB+swAQQAQhAILIAVByABqQQoQDiAEIQMgDw0CCyADIQQMAAsACyAFQcgAakEAEA5CgICAgCAhEiAFKAJURQRAIAAgBSgCSBBxIRILIAVByABqEJUBIAAgAUE1IBJBAxAZGiAFQeAAaiQAC+wBAgJ/AX4jAEEQayIDJAAgAUEIayIEKQMAIQUCfwJAIAAgA0EMaiABQRBrIgEpAwAQwwEEQCAAIAUQCgwBCyAAIANBCGogBRDDAQ0AIAECfwJAAkACQAJAAkACQ
 
CACQa0Baw4DAQMCAAsCQCACQaABaw4CBQAECyADKAIMIAMoAgh1DAULIAMoAgggAygCDHEMBAsgAygCCCADKAIMcgwDCyADKAIIIAMoAgxzDAILEAEACyADKAIMIAMoAgh0C603AwBBAAwBCyABQoCAgIAwNwMAIARCgICAgDA3AwBBfwshACADQRBqJAAgAAvcBAIGfwJ+AkAgAUKAgICAcINCgICAgJB/UgRAQoCAgIDgACEJIAAgARA+IgEQCw0BCwJAIAJCgICAgHCDQoCAgICQf1ENAEKAgICA4AAhCSAAIAIQPiICEAtFDQAgASECDAELAkAgAqciBCkCBCIJQv////8Hg1ANAAJAIAGnIgMoAgBBAUcNACADKQIEIAmFp0EASA0AIAAoAhAgAxCjBCAEKAIEIgVB/////wdxIgcgAykCBCIJpyIIQf////8HcSIGaiAFQR92dCAIQR92IghrQRFqSQ0AIAgEQCADIAZBAXRqQRBqIARBEGogBUEBdBAjGiADIAQpAgQgCXxC/////weDIAlCgICAgHiDhDcCBAwCCyADQRBqIgUgBmogBEEQaiAHECMaIAMgBCkCBCAJfEL/////B4MiCiAJQoCAgIB4g4Q3AgQgBSAKp2pBADoAAAwBCwJ+AkACQCAEKQIEIgmnQf////8HcSADKQIEIgqnQf////8HcWoiBkGAgICABE8EQCAAQfQNQQAQQQwBCyAAIAYgCSAKhKdBH3YiBxD8ASIFDQELQoCAgIDgAAwBCwJAIAdFBEAgBUEQaiADQRBqIAMoAgRB/////wdxECMiByADKAIEQf////8HcWogBEEQaiAEKAIEQf////8HcRAjGiAGIAdqQQA6AAAMAQsgBUEQaiIGIAMgAygCBEH/////B3EQlQUgBiADKAIEQQF0aiAEIAQoAgRB/////wdxEJUFCyAFrUKAgICAkH+ECyEJIAAgARAKDAELIAEhCQsgACACEA
 
ogCQtAACAAAn8CfyADBEAgASgCJCACQQN0akEEagwBC0EAIAEoAiAiA0UNARogAyABLwEoIAJqQQR0agsoAgALEOEBCwsAIABB4ztBABAUC50MAgx/BH4jAEGAAWsiCiQAIAohBSMAQeABayIIJAACQCABvSIRQoCAgICAgID4/wCDQoCAgICAgID4/wBRBEAgEUL///////////8Ag0KBgICAgICA+P8AWgRAIAVBzsK5AjYAAAwCCyABRAAAAAAAAAAAYwRAIAVBLToAACAFQQFqIQULIAVBvMMALQAAOgAIIAVBtMMAKQAANwAADAELAkAgBEUEQAJ+IAGZRAAAAAAAAOBDYwRAIAGwDAELQoCAgICAgICAgH8LIhJC/////////w98Qv7///////8fViASuSABYnINASAFAn8gCEHVAWoiA0EAOgAAIBIgEkI/hyIRfCARhSERIAKtIRMDQCADIgJBAWsiA0EwQdcAIBEgESATgCIUIBN+faciBEEKSBsgBGo6AAAgESATWiEEIBQhESAEDQALIBJCf1cEQCACQQJrIgNBLToAAAsgAwsQiQYMAgtEAAAAAAAAAAAgASABRAAAAAAAAAAAYRshASAEQQJHDQAjAEGAAmsiAiQAAkAgAkGAAWogASADQQFqIgRBABCFAyACai0Af0E1Rw0AIAJBgAFqIAEgBEGACBCFAyIGIAIgASAEQYAQEIUDRw0AIAJBgAFqIAIgBhB0DQBBgAhBgBAgAi0AgAFBLUYbIQcLIAUgASADIAcQhQMaIAJBgAJqJAAMAQsgAyECIAhBCGohDSAIQQxqIQ4gCEEQaiELIwBBkANrIgckAAJAIARBA3FBAUYiD0UEQEERIQJBASEMA0AgAiAMTQRAQQAhCQwDCyABIAIgDGpBAXYiCSANIA4gC0EAIAdBkAJqELwCIAdBkAJqEPkFIAFhBEAgCUEBIAlBAUgbIQYDQCAJQQJIBEAgBiECDAM
 
LIAkiAkEBayIQIQkgCyAQai0AAEEwRg0ACwUgCUEBaiEMCwwACwALIAEgAkEBaiIGIAdBDGogB0EIaiAHQZABakEAIAdBkAJqELwCIAdBkAFqIAJqLQAAQTVHDQAgASAGIAdBDGogB0EIaiAHQZABakGACCAHQZACahC8AiABIAYgB0EEaiAHIAdBEGpBgBAgB0GQAmoQvAIgB0GQAWogB0EQaiAGEHQNACAHKAIMIAcoAgRHDQBBgAhBgBAgBygCCBshCQsgASACIA0gDiALIAkgB0GQAmoQvAIgB0GQA2okACAIKAIMBEAgBUEtOgAAIAVBAWohBQsgCCgCCCEGAkAgBEEEcQ0AIAZBAUggBiADQRUgDxtKckUEQCACIAZMBEBBACEEIAYgAmsiA0EAIANBAEobIQMgBSAIQRBqIAIQIyACaiEFA0AgAyAERwRAIAVBMDoAACAEQQFqIQQgBUEBaiEFDAELCyAFQQA6AAAMAwsgBSAIQRBqIAYQIyAGaiIEQS46AABBACEFIAIgBmsiAkEAIAJBAEobIQIDQCAEQQFqIQQgAiAFRwRAIAQgCEEQaiAFIAZqai0AADoAACAFQQFqIQUMAQsLIARBADoAAAwCCyAGQQVqQQVLDQAgBUGw3AA7AABBACEEQQAgBmsiA0EAIANBAEobIQMgBUECaiEFA0AgAyAERwRAIAVBMDoAACAEQQFqIQQgBUEBaiEFDAELCyAFIAhBEGogAhAjIAJqQQA6AAAMAQsgBSAILQAQOgAAAkAgAkECSARAIAVBAWohBAwBCyAFQS46AAEgBUECaiEEQQEhBQNAIAIgBUYNASAEIAhBEGogBWotAAA6AAAgBUEBaiEFIARBAWohBAwACwALIARB5QA6AAAgBkEBayEDIAZBAUgEfyAEQQFqBSAEQSs6AAEgBEECagshAiAIIAM2AgAjAEEQayIEJAAgBCAINgIMIwBBoAFrIgMkACADQQhqQdCd
 
BEGQARAjGiADIAI2AjQgAyACNgIcIANBfiACayIGQf////8HIAZB/////wdJGyIGNgI4IAMgAiAGaiICNgIkIAMgAjYCGCADQQhqQZ4ZIAgQqwQgBgRAIAMoAhwiAiACIAMoAhhGa0EAOgAACyADQaABaiQAIARBEGokAAsgCEHgAWokACAAIAoQcSERIApBgAFqJAAgEQs3AQF/IAAgAhA5IQUgACACEAogBUUEQCAAIAMQCkF/DwsgACABIAUgAyAEEBkhBCAAIAUQESAEC4wCAgJ/AXwjAEEQayIEJAACQAJAAkACQCACQiCIpyIFQQJNBEAgAqciA0EATg0DDAELIAVBC2pBEk8EQAJ/IAIQSSIGRAAAAAAAAPBBYyAGRAAAAAAAAAAAZnEEQCAGqwwBC0EACyIDuCAGYQ0DDAELIAMEQEF/IQMgACACEJ0BIgIQCw0EIAAgBEEMaiACQQEQywINBCAEKAIMIQMMAwsgACAEQQxqIAIQxAEEQCAAIAIQCgwCC0F/IQMgACACEJ0BIgIQCw0DIAAgBEEIaiACQQAQywINAyAEKAIIIgMgBCgCDEYNAgsgAEG9wwAQaQtBfyEDDAELIAEgAzYCAEEAIQMLIARBEGokACADCx8AIAAgASAAIAIQxwEiAiABQQAQEiEBIAAgAhARIAELMQEBfyMAQdAAayICJAAgAiAAIAJBEGogARCGATYCACAAQa4+IAIQzwIgAkHQAGokAAuSAQIBfwF+IwBBEGsiBSQAIAUgBDYCDCAAIAEgBUEMahDjAUUEQCADEJsEIAEgAiADKAIEIAMoAgBBA3FBAnRB1DxqKAIAERsAIQYgAxDZBSAFKAIMIgAgACgCAEH/////A3E2AgAgA0KAgICAMCAGIAYQCyIAGzcDACAFQRBqJABBf0EAIAAbDwsgBUEQaiQAQX8LJgEBfyMAQRBrIgMkACADIAI2AgwgAEECIAEgAhD9ASADQRBqJAALJ
 
gEBfyMAQRBrIgMkACADIAI2AgwgAEEDIAEgAhD9ASADQRBqJAALCgAgAEEgIAFrdgvSAQEDfyMAQRBrIgUkAEF/IQMCQCAAKAIUDQACQAJAIAFBgICAgAROBEAgACgCAEH0DUEAEEEMAQsgASAAKAIMQQNsQQJtEEpB/////wMQsAEhASAAKAIQIgQgAkGAAkhyRQRAIAAgARDvAyEDDAMLIAAoAgAgACgCBCABIAR0IARrQRFqIAVBDGoQswEiAg0BCyAAEIgDDAELIAAoAhAhAyAFKAIMIQQgACACNgIEIAAgBCADdiABakH/////AxCwATYCDEEAIQMLIAVBEGokACADC4ABAgJ/AX4CQCABKQIEIgRC//////////+/f1YEQCABKAIMIQAMAQsgACgCNCAEQiCIpyAAKAIkQQFrcUECdGohAiAAKAI4IQMDQCADIAIoAgAiAEECdGooAgAiAiABRg0BIAJBDGohAiAADQALQZkwQaENQfgUQYjAABAAAAsgAAvvBgIGfwF+AkACQAJAAn8gAkECTARAIAIgASkCBCIJQj6Ip0YEQCAAIAEQ0wIiAxDxAUUNBSABIAEoAgBBAWs2AgAgAw8LIAAoAjQgACgCJEEBayABIAIQ5gVB/////wNxIgdxIghBAnRqIQMgCadB/////wdxIQUDQCACIAMoAgAiA0UNAhoCQCAAKAI4IANBAnRqKAIAIgQpAgQiCUIgiKdB/////wNxIAdHIAlCPoinIAJHciAJp0H/////B3EgBUdyDQAgBCABIAUQ5QUNACADEPEBDQQgBCAEKAIAQQFqNgIADAQLIARBDGohAwwACwALIAJBA0chB0EDCyEFAkAgACgCPA0AQQAhA0HTASAAKAIsQQNsQQJtEEoiBEH/////A0sNASAAIAAoAjggBEECdBDmASIGRQ0BIAAoAiwiAkUEQCAAQRAQnAIiAkUEQCAAIAYQHwwDCyACQQE2AgAgAi
 
ACKQIEQoCAgICAgICAQIQ3AgQgBiACNgIAIAAgACgCKEEBajYCKEEBIQILIAAgAjYCPCAAIAY2AjggACAENgIsIARBAWshBgNAIAIgBE8NASAAKAI4IAJBAnRqQQAgAkEBaiIDIAIgBkYbEOQFNgIAIAMhAgwACwALAkAgAQRAIAEpAgQiCUL//////////z9YBEAgASAJIAWtQj6GhDcCBAwCCyAAIAmnIgJB/////wdxIAJBH3YiAnQgAmtBEWoQ5wEiAkUEQEEAIQMMBAsgAkEBNgIAIAIgAikCBEL/////d4MgASkCBEKAgICACIOEIgk3AgQgAiAJQoCAgIB4gyABKQIEQv////8Hg4Q3AgQgAkEQaiABQRBqIAEoAgQiA0EfdiIERSADQf////8HcSAEdGoQIxogACABEKQEIAIhAQwBCyAAQRAQ5wEiAUUEQEEADwsgAUKBgICAgICAgIB/NwIACyAAIAAoAjggACgCPCIDQQJ0aiICKAIAQQF2NgI8IAIgATYCACABIAM2AgwgASABNQIEIAetQiCGhCAFrUI+hoQ3AgQgACAAKAIoQQFqNgIoIAVBA0YNAiABIAAoAjQgCEECdGoiASgCADYCDCABIAM2AgAgACgCKCAAKAIwSA0CIAAgACgCJEEBdBDABRoMAgsgAUUNAQsgACABEKQEIAMPCyADC0YAIAJBAEwEQCAAQS8QMQ8LIAAgAkEAEPwBIgBFBEBCgICAgOAADwsgAEEQaiABIAIQIyACakEAOgAAIACtQoCAgICQf4QLUAEBfgJAIANBwABxBEAgAiADQUBqrYghAUIAIQIMAQsgA0UNACACQcAAIANrrYYgASADrSIEiIQhASACIASIIQILIAAgATcDACAAIAI3AwgLwAEBAn8jAEGgAWsiBCQAIARBCGpB0J0EQZABECMaAkACQCABQQFrQf////8HTwRAIAENAUEBIQEgBEGfAWohAAsgBCAANgI
 
0IAQgADYCHCAEQX4gAGsiBSABIAEgBUsbIgE2AjggBCAAIAFqIgA2AiQgBCAANgIYIARBCGogAiADQe4CQe8CEK0EIQAgAUUNASAEKAIcIgEgASAEKAIYRmtBADoAAAwBC0GEpwRBPTYCAEF/IQALIARBoAFqJAAgAAudAwMCfAF+A38CQAJAAkACQCAAvSIDQgBZBEAgA0IgiKciBEH//z9LDQELIANC////////////AINQBEBEAAAAAAAA8L8gACAAoqMPCyADQn9VDQEgACAAoUQAAAAAAAAAAKMPCyAEQf//v/8HSw0CQYCAwP8DIQVBgXghBiAEQYCAwP8DRwRAIAQhBQwCCyADpw0BRAAAAAAAAAAADwsgAEQAAAAAAABQQ6K9IgNCIIinIQVBy3chBgsgBiAFQeK+JWoiBEEUdmq3IgFEAADg/kIu5j+iIANC/////w+DIARB//8/cUGewZr/A2qtQiCGhL9EAAAAAAAA8L+gIgAgAUR2PHk17znqPaIgACAARAAAAAAAAABAoKMiASAAIABEAAAAAAAA4D+ioiICIAEgAaIiASABoiIAIAAgAESfxnjQCZrDP6JEr3iOHcVxzD+gokQE+peZmZnZP6CiIAEgACAAIABERFI+3xLxwj+iRN4Dy5ZkRsc/oKJEWZMilCRJ0j+gokSTVVVVVVXlP6CioKCioCACoaCgIQALIAALkgEBA3xEAAAAAAAA8D8gACAAoiICRAAAAAAAAOA/oiIDoSIERAAAAAAAAPA/IAShIAOhIAIgAiACIAJEkBXLGaAB+j6iRHdRwRZswVa/oKJETFVVVVVVpT+goiACIAKiIgMgA6IgAiACRNQ4iL7p+qi9okTEsbS9nu4hPqCiRK1SnIBPfpK+oKKgoiAAIAGioaCgC5kBAQN8IAAgAKIiAyADIAOioiADRHzVz1o62eU9okTrnCuK5uVavqCiIAMgA0R9/rFX4x3HPqJE1WHBGaAB
 
Kr+gokSm+BARERGBP6CgIQUgAyAAoiEEIAJFBEAgBCADIAWiRElVVVVVVcW/oKIgAKAPCyAAIAMgAUQAAAAAAADgP6IgBCAFoqGiIAGhIARESVVVVVVVxT+ioKELjQEAIABECff9DeE9Aj+iRIiyAXXg70k/oCAAokQ7j2i1KIKkv6AgAKJEVUSIDlXByT+gIACiRH1v6wMS1tS/oCAAokRVVVVVVVXFP6AgAKIgAESCki6xxbizP6JEWQGNG2wG5r+gIACiRMiKWZzlKgBAoCAAokRLLYocJzoDwKAgAKJEAAAAAAAA8D+gowu9AgEHfwJAIAFFDQADQCACQQNGBEAgAUEBcSIFRSABQQZxRXIhBwNAIARB6QJGDQMCQAJAIAMgBEECdEHA5wFqKAIAIgJBBHZBD3EiBnZBAXFFDQAgAkEPdiEBIAJBCHZB/wBxIQgCQAJAAkAgBkEEaw4CAAECCyAHRQ0BIAEgBWohBkEAIQIDQCACIAhPDQMgAiAGaiEBIAJBAmohAiAAIAEgAUEBahB8RQ0ACwwDCyAHRQ0AIAFBAWohAiAFRQRAIAAgASACEHwNAwsgACACIAFBAmoiAhB8RQRAIAVFDQIgACACIAFBA2oQfEUNAgtBfw8LIAAgASABIAhqEHwNAQsgBEEBaiEEDAELC0F/DwUgASACdkEBcQRAIAJBAnRB1OQDaigCACADciEDCyACQQFqIQIMAQsACwALQQALTQEBfyABIAAoAgQiAkoEQCAAKAIMIAAoAgggASACQQNsQQJtEEoiAUECdCAAKAIQEQEAIgJFBEBBfw8LIAAgATYCBCAAIAI2AggLQQALlAIBAn8jAEEQayIEJAACQCAEQQxqIAAgAiADELsEIgJBAEgNACABIAJqIQIDQCACQQFqIQECQCACLQAAIgNBP00EQCAEKAIMIANBA3ZqQQFqIgIgAEsNAyAEIANBB3EgAmpBAWoiAzYCDCAFQQFzIQUMA
 
QsgA0EYdEEYdUF/TARAIAQgAyAEKAIMakH/AGsiAzYCDAwBCyADQd8ATQRAIAQgBCgCDCACLQABIANBCHRyakH//wBrIgM2AgwgAkECaiEBDAELIAQgBCgCDCACLQACIANBEHQgAi0AAUEIdHJyakH///8CayIDNgIMIAJBA2ohAQsgACADSQ0BIAVBAXMhBSABIQIMAAsACyAEQRBqJAAgBQtMAQJ/IwBBEGsiAyQAAn8gAiABKAIAIgQtAABHBEAgAyACNgIAIABBy+IBIAMQPEF/DAELIAEgBEEBajYCAEEACyECIANBEGokACACCx4AIABBMGtBCkkgAEFfcUHBAGtBGklyIABB3wBGcgvBAQEDfwJAAn8gACgCQBpBAAsEQCAAQbHgAUEAEDwMAQsgACgCBCEDIAAgARDFBA0AQQUgA2shBANAIAAoAhgiAi0AAEH8AEcEQEEADwsgACACQQFqNgIYIAAoAgQhAiAAIANBBRDqAQRAIAAQqQJBfw8LIAAoAgAgA2pBCToAACAAKAIAIANqQQFqIAIgBGoQWyAAQQdBABC4ASECIAAgARDFBA0BIAAoAgAgAmogACgCBCACa0EEaxBbDAALAAtBfwtLAQJ/AkADQCABQQpGDQEgAUECdEECckGg3wFqLwEAIABKDQEgAUEBdCECIAFBAWohASACQQF0QaTfAWovAQAgAEwNAAtBAQ8LQQALtgIBA38CfwJ/IAFB/wBNBEAgACABOgAAIABBAWoMAQsCfyABQf8PTQRAIAAhAiABQQZ2QUByDAELAn8gAUH//wNNBEAgAEEBaiECIAAhBCABQQx2QWByDAELAn8gAUH///8ATQRAIAAhAyABQRJ2QXByDAELAn8gAUH///8fTQRAIABBAWohAyABQRh2QXhyIQIgAAwBC0EAIAFBAEgNBRogACABQR52QfwBcjoAACAAQQJqIQMgAUEYdkE/cUGAf3IhAiAAQQFqCyACOg
 
AAIAFBEnZBP3FBgH9yCyECIAMgAjoAACADQQJqIQIgA0EBaiEEIAFBDHZBP3FBgH9yCyEDIAQgAzoAACABQQZ2QT9xQYB/cgshAyACIAM6AAAgAiABQT9xQYABcjoAASACQQJqCyAAawsLJAAgAEIANwIAIAAgATYCFCAAQgA3AgggACACQeACIAIbNgIQCycBAn8CQCAAIAFBABCZASIDBEAgAxCYAUUNASAAEHALQX8hAgsgAgvJAQIDfwF+IwBBEGsiBSQAAkAgACABQQIQbCIBEAsNAAJAAkAgAkEBRw0AIAMpAwAiBxCOAUUNACAAIAVBDGogBxANQQEQywINASAAIAFBMAJ+IAUoAgwiAkEATgRAIAKtDAELIAK4EBULEEhBf0wNAQwCCyACQQAgAkEAShshAgNAIAIgBEYNAiAAIAEgBCADIARBA3RqKQMAEA0QlgIhBiAEQQFqIQQgBkF/Sg0ACwsgACABEApCgICAgOAAIQELIAVBEGokACABCxEAIAAgASACIAMgBCAFEMkBCzoBAX8CQCAAQTBrIgFBCk8EfyAAQcEAa0EFSw0BIABBN2sFIAELDwsgAEHXAGtBfyAAQeEAa0EGSRsLfAICfgF/IAAgAikDACIDQQAQmQEiBUUEQEKAgICA4AAPCyAAIANCgICAgDAQ8gEiAxALBEAgAw8LIAJBCGohAiABQQFrQQAQSiEBIAMQEARAIABCgICAgDAgASACIAUvAQYQ7AUPCyAAIAMgASACEMUDIQQgACADEAogBAsRACAAIAEgAiADQQBBABDJAQsyACAAQQwQLSIARQRAQQAPCyAAIAM2AgggACACNgIEIAAgASgCEDYCACABIAA2AhAgAAtrAQF/AkAgASgCoAEiA0F/Sg0AIAAgASACEFYiA0EASA0AIAEgAzYCoAEgA0EEdCIAIAEoAnRqIgIgAigCDEGHf3FBIHI2AgwgAS0AbkEBcUUNACABKAJ0IAB
 
qIgAgACgCDEEBcjYCDAsgAwsuAQF/AkAgASgCmAEiAkF/Sg0AIAAgAUHNABBWIgJBAEgNACABIAI2ApgBCyACCzIAIAAoAgAgASACIAMQ8AIiAEEATgRAIAEoAnQgAEEEdGoiASABKAIMQQNyNgIMCyAAC3ABAn8gASgCAEF/TARAIAEgABA0NgIACyAAQREQDCAAQbABEAwgAkEAIAJBAEobIQIgAEHpAEF/EBshBANAIAIgA0ZFBEAgAEEOEAwgA0EBaiEDDAELCyAAQQYQDCAAQesAIAEoAgAQGxogACAEEB0LaAAgACABIAIQViIAQQBOBEAgASgCdCAAQQR0aiICIAIoAgxBh39xIANBA3RB+ABxcjYCDCACIAEoArwBIgM2AgQgAiABKALAATYCCCABKALMASADQQN0aiAANgIEIAEgADYCwAELIAALbQEBfyAAIAFB/AFqQRAgAUH4AWogASgC9AFBAWoQfUUEQCABIAEoAvQBIgNBAWo2AvQBIAEoAvwBIANBBHRqIgNBfzYCACADIAMtAARB+AFxOgAEIAMgASgCvAE2AgggAyAAIAIQFzYCDAsgAwtMAQJ/AkAgACgCQBCkASIAQSNrIgJBDU1BAEEBIAJ0QeXwAHEbDQACQAJAIABB6wBrDgQCAQECAAsgAEHqAWtBAkkNAQtBASEBCyABC7EDAQN/IAAoAkBBsAJqIQMDQEEAIQICQANAIAMoAgAiA0UNASADKAIcBEAgAUUEQCAAQQYQDAsgAEGEARAMQYMBIQIgACAAKAJALQBsQQNGBH8gAEEOEAwgAEEOEAwgAEHCABAMIABBBhAaIABBERAMIABBsAEQDCAAQeoAQX8QGyEBIABBJBAMIABBABAWIABBgQEQDCAAQYsBEAwgAEHrAEF/EBshBCAAIAEQHSAAQQ4QDCAAIAQQHUEOBUGDAQsQDEF9IQJBASEBCyADKAIQIAJqIQIgAygCFEF/Rg0AC0EP
 
QQ4gARshBANAIAIEQCAAIAQQDCACQQFrIQIMAQsLIAFFBEAgAEEGEAwLIABB7QAgAygCFBAbGkEBIQEMAQsLIAACfyAAKAJAIgIoAmAEQAJAIAFFBEBBfyECDAELIABBKhAMIABB6QBBfxAbIQIgAEEOEAwLIABBtgEQDCAAQQgQGiAAQQAQFiAAIAIQHUEoDAELIAItAGwiBARAAkAgAUUEQEEGIQMMAQtBiwEhA0EuIARBA0cNAhoLIAAgAxAMQS4MAQtBKEEpIAEbCxAMC0gAAkAgAEH7ABAuDQAgACgCEEH9AEcEQCAAEIIBGgNAIABBBxDwAQ0CIAAoAhBB/QBHDQALIAAQ7gELQX9BACAAEA8bDwtBfwuYAQEEfyABKAIUIgVBACAFQQBKGyEGIAFBEGohBAJAA0AgAyAGRwRAIAQoAgAgA0EDdGooAgAgAkYNAiADQQFqIQMMAQsLQX8hAyAAIARBCCABQRhqIAVBAWoQfQ0AIAEgASgCFCIEQQFqNgIUIAEoAhAhAyAAIAIQFyEBIAMgBEEDdGoiAEEANgIEIAAgATYCACAGIQMLIAMLZQEBfyAAQfoAEFFFBEAgAEHljgFBABATQQAPCwJAIAAQDw0AIAAoAhBBgX9HBEAgAEG4yABBABATQQAPCyAAKAIAIAApAyAQOSIBRQ0AIAAQD0UEQCABDwsgACgCACABEBELQQALhRMBFX8jAEFAaiIDJAAgACgCACEGIAAoAkAhBCADQQA2AjwgACgCGCEQIAQgBC0AbiITQQFyOgBuAn8CQCAAEA8NAAJAAkAgACgCEEGDf0YEQCAAKAIoRQ0BIAAQ7wEMAwsgASACQQJGcg0BIABBs4QBQQAQEwwCCyAGIAAoAiAQFyEJIAAQDw0BCyABRQRAIAYgCUH8ACAJGxAXIQoLIAAQggEaAn8gACgCECIFQUxGBEAgABAPDQIgABCxAg0CQQEMAQsgAEEGEAxBAAshDCAJB
 
EAgACAEIAlBAhCoAUEASA0BCyAAQfsAEC4NACAAEIIBGiAAQQIQDCAEKAKEAiEUIABBABA4IABB1gAQDCAAIAlBFkEvIAobIAkbEBogACAMEGsgBCgCmAIhFUEAIQEDQCABQQJHBEAgA0EQaiABQQR0aiIHQQA2AgggB0IANwMAIAFBAWohAQwBCwsgA0EANgI0IAVBTEYhFgNAAkBBAAJ/An8CQAJAIAAoAhAiBUE7RwRAIAVB/QBGDQVBACAFQVZHDQMaIAAQDw0HIAAoAhBBO2sOAwECAQILIAAQD0UNBQwGCyAGQSwQFxogA0EsNgI8IAAoAhghD0EAIQtBACENQQAhAUEsDAILIABBGxAMQQELIQ0gACgCGCEPIAAgA0E8akEBQQBBARDSAyIBQQBIDQMgBUFWRiELIAMoAjwLIgVB+ABGQQAgAUFvcSIIIAsgBUE8R3IiFxtyRSALIAVBO0ZxG0UEQCAAQdOEAUEAEBMMAwsgAUEQcSEHAkACQAJAAkAgAUFucUECRgRAIAcEQAJAIAQgBSAEKAK8ARDOAyIBQQBOBEAgBCgCdCABQQR0aiIFKAIMIg5BA3ZBD3EiAUEJTUEAQQEgAXRB4ARxGyABIAhBBWpGcg0EIAUgDkGHf3FByAByNgIMDAELIAAgBCAFIAhBBWoQ7gJBf0wNCQsgACADQRBqIA1BBHRqEOkEQQBIDQgLIAAgCEECakEAIA8gACgCFEEAIANBDGoQigINByAHBEAgAygCDEEBNgK4ASAAQdAAEAwgAEG7ARAMIAMoAjwhAQJAIAhBAkcEQCAGIAEQ5wQiAUUNCiAAIAEQGiAAIAQgAUEIEO4CIQUgBiABEBEgBUEATg0BDAoLIAAgARAaCyAAIAAoAkAvAbwBEBYMBQsCQCADKAI8RQRAIABB1QAQDAwBCyAAQdQAEAwgACADKAI8EBoLIAAgCEEBa0H/AXEQawwEC0EGIQ5BASEBQQAhEUEAIR
 
ICQAJAAkACQAJAIAgOBwADAwMEAQIDCyAAKAIQQShGDQIgBUE7a0EBTQRAIABB54QBQQAQEwwLCyAHBEAgBCAFIAQoArwBEM4DQX9KDQUgACAEIAVBBRDuAkEASA0LIABBBRAMIAAgAygCPBAaIABBuwEQDCAAIAMoAjwQGiAAIAAoAkAvAbwBEBYLIANBEGogDUEEdGoiBSgCAEUEQCAAIAUQ5gQNCwtBACEBIAMoAjxFBEAgBSgCBCEIIwBBIGsiASQAIAEgCDYCACABQRBqQRBB8Q0gARBVGiAGQfUAQfQAIAsbIAFBEGoQ5AQhCCABQSBqJAAgCCIBRQ0LIAAgBCABQQIQqAFBf0wEQCAGIAEQEQwMCyAAQfAAEAwgAEG7ARAMIAAgARAaIAAgACgCQC8BvAEQFgsgACAFKAIANgJAIABBtgEQDCAAQQgQGiAAQQAQFgJAIAMoAjxFBEAgAEG2ARAMIAAgARAaIAAgACgCQC8BvAEQFiAFIAUoAgRBAWo2AgQgBiABEBEMAQsgB0UNACAAQbYBEAwgACADKAI8EBogACAAKAJALwG8ARAWCwJAIAAoAhBBPUYEQCAAEA8NDCAAEGBFDQEMDAsgAEEGEAwLAkAgBwRAIAAQzQMgAEHGABAMDAELIAMoAjwiAUUEQCAAEM0DIABB0QAQDCAAQQ4QDAwBCyAAIAEQqQEgAEHMABAMIAAgAygCPBAaCyAAIAAoAkAoAgQ2AkAgABC7AUUNBwwKC0ECIQEMAgtBAyEBDAELQQAhASAXDQAgAygCNARAIABB+oQBQQAQEwwICwJ/IBYEQEEIIQ5BASERQQAMAQtBByEOQQELIRILIAcEQCAAIANBEGogDUEEdGoQ6QRBAEgNBwsgACAOIAEgDyAAKAIUQQAgA0E4ahCKAg0GIBEgEnIEQCADIAMoAjg2AjQMBAsgB0UNAiADKAI4QQE2ArgBIAQgAygCPCIBIAQoArwBEM4DQQB
 
IDQELIABBpoUBQQAQEwwFCyAAIAQgAUEGEO4CQQBIDQQgAEHQABAMIABBzQAQDCAAIAMoAjwQGiAAQbsBEAwgACADKAI8EBogACAAKAJALwG8ARAWDAELAkAgAygCPEUEQCAAQdUAEAwMAQsgAEHUABAMIAAgAygCPBAaCyAAQQAQawsgCwRAIABBGxAMCyAGIAMoAjwQESADQQA2AjwMAQsLIAMoAjQiAUUEQCADQTRqIQgjAEEQayIBJAAgACABEPkCIABBo4YBQbyGASAMGyIFNgI4IAAoAjwhCyAAIAVBGEEEIAwbajYCPCAAKAIUIQ1BfyEHIAAQD0UEQCAAQQhBByAMG0EAIAUgDUEAIAgQigIhBwsgACALNgI8IAAgARD4AiEMIAFBEGokACAHIAxyDQEgAygCNCEBCyAEKAKAAiAUaiABKAIIEFsgBC0AbkECcUUEQCAGIAMoAjQoAowDEBggAygCNCAAKAI4IBBrIgE2ApADIAYgECABEKMDIQEgAygCNCABNgKMAyABRQ0BCyAAEA8NACAAIARB9gBBAhCoAUEASA0AAkAgAygCEARAIAAgA0EQahDlBAwBCyAAQQYQDAsgAEG7ARAMIABB9gAQGiAAIAAoAkAvAbwBEBYgAEEOEAwgAygCIARAIABBERAMIAAgA0EgahDlBCAAQSQQDCAAQQAQFiAAQQ4QDAsgCQRAIABBERAMIABBuwEQDCAAIAkQGiAAIAQvAbwBEBYLIAAQ7gEgABDuAQJAIAoEQCAAIAQgCkEBEKgBQQBIDQIgAEG7ARAMIAAgChAaIAAgBC8BvAEQFgwBCyAJDQAgAEG/ARAMIAAgBCgCmAIgFWtBAWoQOAtBACACRQ0BGkEAIAAgBCgClAMgCiAKQRYgAkEBRhtBABCJAg0BGgsgBiADKAI8EBFBfwshACAGIAkQESAGIAoQESAEIBM6AG4gA0FAayQAIAALLgAgACABKAIANgIUIAAg
 
ASgCBDYCCCAAIAEoAgw2AjggACABKAIINgIwIAAQDwsqACABIAAoAgQ2AgAgASAAKAIUNgIEIAEgACgCGDYCDCABIAAoAjA2AggLjAECBn8BfiABKAIAIgMgACgCBEH/////B3EiBCADIARKGyADayEGIANBAmohB0EAIQQCQANAIARBAkcEQEF/IQUgBCAGRg0CIAAgAxAvIghBMGtBCUsNAiAEQQFqIQQgA0EBaiEDIAitIAlCCn58QjB9IQkMAQsLIAIgCTcDACABIAc2AgBBACEFCyAFCxgAIAAgACABgSIAIABCP4cgAYN8fSABfwseACAAIAEgACACEA0gAxCSAyICQQAQgQUgACACEAoLZQEDfyABKAIQIgQgASgCFEEBayACEOIDcUEDdCIFakEEaiEDA38gAygCACIDIAQgBWpGBEBBAA8LIAAgAykDCBANIAIQDUECEN4BBH8gA0EYawUgA0EEaiEDIAEoAhAhBAwBCwsLKQACQCAAQiCIp0ELakESSQ0AIAAQSUQAAAAAAAAAAGINAEIAIQALIAAL0wMCCH8DfiMAQTBrIgQkAEKAgICA4AAhDAJAIAAgARApIgEQCw0AQoCAgIAwIQwCQAJAIAAgBEEsaiAEQShqIAGnIgkgAkFvcRCQAQ0AIAAQTiIMEAsNACACQRBxIQogBCgCLCEGIAQoAighByADQQFrIQtBACECA0AgAiAHRg0CIAYgAkEDdGooAgQhAwJAAkAgCgRAIAAgBEEIaiAJIAMQUyIFQQBIBEBBAiEFDAILIAVFBEBBBSEFDAILIAAgBEEIahBNQQUhBSAEKAIIQQRxRQ0BCwJAAkACQAJAAkAgCw4CAQIACyAAIAMQXiINEAtFDQIMBwsgACABIAMgAUEAEBIiDRALRQ0BDAYLIAAQTiINEAsNBSAAIAMQXiIOEAsNASAAIA1CACAOQYCAARCqAUEASA0BIAAgASADIAFBABASIg4QCw0BI
 
AAgDUIBIA5BgIABEKoBQQBIDQELIAAgDCAIrSANQQAQqgFBAEgNBCAIQQFqIQgMAgsgACANEAoMAwsgBUECaw4EAgQEAAQLIAJBAWohAgwACwALIAAgDBAKQoCAgIDgACEMIAQoAighByAEKAIsIQYLIAAgBiAHEGQgACABEAoLIARBMGokACAMC6MBAgN+A38jAEEQayIJJAAgBEIAIARCAFUbIQggBUEASCEKA0ACQCAGIAhRBEBBACEFDAELQX8hBSAAIAEgBkJ/hSAEfCAGIAobIgcgA3wgCUEIahCJASILQQBIDQAgAiAHfCEHAkAgCwRAIAAgASAHIAkpAwgQjwFBAE4NAQwCCyAAIAEgBxCUAkEASA0BCyAGQgF8IQYMAQsLIAlBEGokACAFC2ECAX8BfiMAQRBrIgMkAAJ+AkACQCACRQ0AIAApAgQiBEL/////B4MgAVcNACAEp0EASA0BCyABQgF8DAELIAMgAT4CDCAAIANBDGoQ2QEaIAM0AgwLIQEgA0EQaiQAIAELfwEDfyAAKAIQIQUgACACQQN0QRhqEC0iBEUEQA8LIAQgAjYCECAEIAE2AgwgBCAANgIIQQAhACACQQAgAkEAShshASAEQRhqIQIDQCAAIAFHBEAgAiAAQQN0IgZqIAMgBmopAwAQDTcDACAAQQFqIQAMAQsLIAQgBUGgAWoQTAskACAAQQh0QYCA/AdxIABBGHRyIABBCHZBgP4DcSAAQRh2cnILCQAgACABOwAAC0oAIwBBEGsiAyQAIAMgATkDCCADIAI2AgAgAEGAAUHWwwAgAxBVIgBBgAFOBEBB28MAQaENQYPZAEHowwAQAAALIANBEGokACAAC3ABA38jAEEQayICJAAgACEBA0ACQCABLAAAIgNBAE4EQCADQf8BcUEJayIDQRdLQQEgA3RBn4CABHFFcg0BIAFBAWohAQwCCyABQQYgAkEMahBfEOICRQ0AIAIoAgwhAQ
 
wBCwsgAkEQaiQAIAEgAGsL2AQCCX8BfgJ+IAEpA0AiCxAQBEBCgICAgOAAAn4jAEEgayICJAACQCAAQQsQoQEiCxALDQAgAkIANwMYIAJCADcDECACQgA3AwggACACQQhqIAFBABCiBSEEIAAgAigCCBAYAkAgBARAIAIoAhQhBgwBCyALpyEHIAIoAhwiCEEAIAhBAEobIQkgAigCFCEGQQAhBAJAA0AgBCAJRwRAAkACQCAGIARBDGxqIgMoAggiBQRAIAIgATYCAAwBCwJAAkAgACACIAJBBGogASADKAIAEO0DIgUOBAEGBgAGCyADQQA2AgQMAgsgAigCBCEFCyAFKAIMQf0ARgRAIANBAjYCBCADIAIoAgAoAhAgBSgCAEEDdGooAgQ2AggMAQsgA0EBNgIEIAUoAgQiCgRAIAMgCjYCCAwBCyADIAIoAgAoAkgoAiQgBSgCAEECdGooAgA2AggLIARBAWohBAwBCwsgBiAIQQxBLyAAEKsCQQAhBANAIAQgCUcEQAJAAkACQCAGIARBDGxqIgMoAgRBAWsOAgABAgsgAygCCCEFIAAgByADKAIAQSYQgAEiA0UNBSAFIAUoAgBBAWo2AgAgAyAFNgIADAELIAAgCyADKAIAQQEgAygCCEEGEJMDQQBIDQQLIARBAWohBAwBCwsgACAGEBggACALQckBIABB/gAQMUEAEBkaIAcgBy0ABUH+AXE6AAUMAgsgACAFIAEgAygCABDsAwsgACAGEBggACALEApCgICAgOAAIQsLIAJBIGokACALCxALDQEaIAEgCzcDQAsgCxANCwsjACAAKAIAIAAoAgQQGCAAQQA2AgwgAEIANwIEIABBfzYCFAt2AQJ/IAAgAUEQahDBBQJAIAEoAiAiAgRAIAEoAjwiA0UNAQNAIAIgA09FBEAgACACKQMAECUgAkEIaiECIAEoAjwhAwwBCwsgACABKAIgEB8LIAAgASkDGBAlIAA
 
gASkDABAlDwtBsx9BoQ1BiZQBQcYfEAAACw0AIAAgASACQRMQ9QML6AMBA38gAUEQaiEDIAEoAhQhAgNAIAIgA0ZFBEAgAkEYayEEIAIoAgQhAiAAIAQQiwMMAQsLIAAoAhAgASgCgAIgASgChAIgASgCoAIQowUgAUGAAmoQlQEgACABKALMAhAYIAAgASgCpAIQGCAAIAEoAtgCEBhBACECA0AgAiABKAK4Ak5FBEAgACABKAK0AiACQQN0aikDABAKIAJBAWohAgwBCwsgACABKAK0AhAYIAAgASgCcBARQQAhAgNAIAIgASgCfE5FBEAgACABKAJ0IAJBBHRqKAIAEBEgAkEBaiECDAELCyAAIAEoAnQQGEEAIQIDQCACIAEoAogBTkUEQCAAIAEoAoABIAJBBHRqKAIAEBEgAkEBaiECDAELCyAAIAEoAoABEBhBACECA0AgAiABKAL0AU5FBEAgACABKAL8ASACQQR0aigCDBARIAJBAWohAgwBCwsgACABKAL8ARAYQQAhAgNAIAIgASgCwAJORQRAIAAgASgCyAIgAkEDdGooAgQQESACQQFqIQIMAQsLIAAgASgCyAIQGCABKALMASICIAFB0AFqRwRAIAAgAhAYCyAAIAEoAuwCEBEgAUH0AmoQlQEgACABKAKMAxAYIAEoAgQEQCABQRhqEEYLIAAgARAYC+UCAwJ8A38BfgJ/IAArAwgiAkQAAAAAAAAoQBDzBSIDmUQAAAAAAADgQWMEQCADqgwBC0GAgICAeAsiBEEMaiAEIARBAEgbIgRBAEohBiAEQQAgBhshBgJ+IAArAwAgAkQAAAAAAAAoQKOcoCICmUQAAAAAAADgQ2MEQCACsAwBC0KAgICAgICAgIB/CyIHEPwEuSECA0AgBSAGRkUEQCAFQQJ0QcD3AGooAgAhBCAFQQFGBEAgBCAHENsDp2pB7QJrIQQLIAVBAWohBSACIAS3oCECDAELCyAC
 
IAArAxBEAAAAAAAA8L+goEQAAAAAcJmUQaIgACsDMCAAKwMYRAAAAABAd0tBoiAAKwMgRAAAAAAATO1AoqAgACsDKEQAAAAAAECPQKKgoKAhAiABBHwgAgJ+IAKZRAAAAAAAAOBDYwRAIAKwDAELQoCAgICAgICAgH8LENwDQeDUA2y3oAUgAgsQ+QMLjAEBAn8CQANAIAFCgICAgHBUDQECQAJAAkACQAJAAkAgAaciAi8BBiIDQQxrDgUFAQMHAQALIANBKUYNASADQS1rDgUABgYGAAYLIAIoAiAoAjAPCyACKAIgIgJFDQQgAi0AEUUNASAAEMgCQQAPCyACKAIgIQILIAIpAwAhAQwBCwsgAigCICEACyAACxEAIAAgASACIAMgBEECEIwECw8AIAAgAUKAgICAMBDBAgttAgN+AX8gABBOIgQQC0UEQCABQQAgAUEAShutIQVBACEBA0AgAyAFUQRAIAQPCyAAIAQgAyACIAFBA3RqKQMAEA1BABCqASEGIANCAXwhAyABQQFqIQEgBkF/Sg0ACyAAIAQQCgtCgICAgOAAC6IGAQZ/IwBBMGsiBiQAIAYgAzYCLAJ/AkAgACgCACAGQRBqQSAQQg0AIAFB4ABHIQoCQANAIAMgACgCPCILTw0BAkAgAy0AACIHQR9LDQAgACgCQEUEQCACRQ0EIABB/9QAQQAQEwwECyAKRQRAIAdBDUcNAUEKIQcgA0EBaiADIAMtAAFBCkYbIQMMAQsgB0EKaw4EAgAAAgALIAYgA0EBaiIJNgIsAkACQAJAAkAgASAHRwRAIAdB3ABGDQEgB0EkRw0CQSQhByAKDQMgCS0AAEH7AEcNAyAGIANBAmo2AixBJCEBCyAEQYF/NgIAIAQgATYCGCAEIAZBEGoQNzcDECAFIAYoAiw2AgBBAAwHCwJAIAYCfwJAAkACQAJAIAktAAAiCEEKaw4EAQUFAwALIAhFDQEgCEEiRiAIQSdGc
 
kVBACAIQdwARxsNBCAGIANBAmo2AiwgCCEHDAYLIANBAmoMAgsgCSALTw0HIAYgA0ECajYCLEEAIQcMBAsgA0ECQQEgAy0AAkEKRhtqQQFqCyIDNgIsIAFB4ABGDQQgACAAKAIIQQFqNgIIDAQLAkACQAJAIAhBMGtB/wFxQQlNBEAgACgCQCIHRQ0CIAFB4ABHBEAgBy0AbkEBcUUNAgsCQCAIQTBHDQAgAy0AAkEwa0H/AXFBCkkNACAGIANBAmo2AixBACEHDAYLIAFB4ABGIAhBN0tyDQIgAkUNCSAAQaLVAEEAEBMMCQsgCEEYdEEYdUF/Sg0AIAlBBiAGQQxqEF8iB0GAgMQATw0FIAYgBigCDCIDNgIsIAdBfnFBqMAARg0GDAQLIAZBLGpBARCDAiIHQX9HDQELIAJFDQYgAEHY1QBBABATDAYLIAdBf0oNASAGIAYoAixBAWo2AiwgCCEHDAELIAdBGHRBGHVBf0oNACADQQYgBkEMahBfIgdB///DAEsNASAGIAYoAgw2AiwLIAZBEGogBxC+AQ0DIAYoAiwhAwwBCwsgAkUNASAAQYTWAEEAEBMMAQsgAkUNACAAQZvWAEEAEBMLIAZBEGoQREF/CyEDIAZBMGokACADC2oBAn4CQAJAIAAQPSIDEAsEQCADIQQMAQtCgICAgOAAIQQgACADQcAAIAFBBxAZQQBIBEAgAyEBDAELIAMhASAAIANB6QAgAkEAR61CgICAgBCEQQcQGUF/Sg0BCyAAIAEQCiAEIQMLIAMLvgEBA38CQCABQoCAgIBwWgR/IAGnIggoAhAiByAHKAIYIAJxQX9zQQJ0aigCACEGIAcQJyEHAkADQCAGRQ0BIAIgByAGQQFrQQN0aiIGKAIERwRAIAYoAgBB////H3EhBgwBCwsQAQALIAAgCCACIAVBB3FBMHIQgAEiAkUEQEF/DwsgAiAAEKACIgA2AgAgAEEDcQ0BIAIgBDYCBC
 
ACIAAgA3I2AgBBAQVBAAsPC0HxPUGhDUHeyABBlD4QAAALMAEBfyMAQdAAayIDJAAgAyAAIANBEGogARCGATYCACAAIAIgAxDQAiADQdAAaiQACysAIABB/wBNBEAgAEEDdkH8////AXFB0N8BaigCACAAdkEBcQ8LIAAQtQMLjwMCA38CfiMAQRBrIgMkACABQQhrIgUpAwAhBgJ/AkACQCAAIAAgAUEQayIEKQMAQQEQwAEiBxALBH4gBgUgACAGQQEQwAEiBhALRQ0BIAcLEAoMAQsCQCAHQoCAgIBwg0KAgICAkH9SIAZCgICAgHCDQoCAgICQf1JyRQRAIAenIAanEJUCIQEgACAHEAogACAGEAoCQAJAAkACQCACQaMBaw4DAAECAwsgAUEfdiECDAQLIAFBAUghAgwDCyABQQBKIQIMAgsgAUF/SiECDAELAn8CQAJAIAAgA0EIaiAHEFkEQCAAIAYQCgwBCyAAIAMgBhBZRQ0BC0EADAELAn8CQAJAAkACQCACQaMBaw4DAAECAwsgAysDCCADKwMAYwwDCyADKwMIIAMrAwBlDAILIAMrAwggAysDAGQMAQsgAysDCCADKwMAZgshAkEBC0UNAQsgBCACQQBHrUKAgICAEIQ3AwBBAAwBCyAEQoCAgIAwNwMAIAVCgICAgDA3AwBBfwshACADQRBqJAAgAAtTAgJ+An9BfyEFAkAgACABQQhrIgYpAwAiBCACEPUBIgMQCw0AIAAgBBAKIAYgAzcDACAAIANB6gAgA0EAEBIiAxALDQAgASADNwMAQQAhBQsgBQsuAQF/A0AgAiADRkUEQCAAIAEgA0EDdGopAwAQCiADQQFqIQMMAQsLIAAgARAYC2UBAn8jAEEQayIFJAACQCACEJsBRQRAIAIQDSECDAELIAAgBUEMaiACEJACIgZFBEBCgICAgOAAIQIMAQsgACABIAYgBSgCDEGQyAAgAyAEELcFIQIgACA
 
GEDYLIAVBEGokACACC7wBAgN+AX8jAEEQayICJABCgICAgOAAIQUCQCAAIAEQZw0AIAMpAwAhBgJAAkAgAykDCCIHQiCIpyIDQQNHBEAgBEECRg0CIANBAkYNAQwCCyAEQQJGDQELIAAgASAGQQBBABAiIQUMAQsgACACQQxqIAcQiwQiA0UNACACKAIMIQgCfiAEQQFxBEAgACABIAYgCCADEI4DDAELIAAgASAGIAggAxAiCyEFIAAgAyAIEJgDCyACQRBqJAAgBQsNACAAIAEQDSACEMABCxwAIAAgACgCECgCRCABQRhsaigCBEH1wgAQxQELZQEBfyMAQTBrIgIkAAJ/IAFC/////wdYBEAgAacQkwEMAQsgAiABNwMAIAJBEGpBGEGBwQAgAhBVGkEAIAAgAkEQahBxIgEQCw0AGiAAKAIQIAGnQQEQ1AILIQAgAkEwaiQAIAALPAEBfyABIAAoAtQBIAEoAhQgACgCyAEQ0QJBAnRqIgIoAgA2AiggAiABNgIAIAAgACgC0AFBAWo2AtABC0MAAn9BACACKAIAKAIAQRp2IANGDQAaQX8gACABIAIQ4wENABogAigCACIAIAAoAgBB////H3EgA0EadHI2AgBBAAsLqwEBBH9BfyECAkAgACABQQAQ4wENACABKAIoIgQgASgCECIDKAIgaiIFIAMoAhxLBEAgACABQRBqIAEgBRDRBQ0BCyABKAIkIQNBACECA0AgAiAERkUEQCAAIAEgAhCTAUEHEIABIAMpAwA3AwAgAkEBaiECIANBCGohAwwBCwsgACABKAIkEBhBACECIAFBADYCKCABQgA3AyAgASABLQAFQfcBcToABQsgAgt5AQN/AkACQCAAQQFxIgINACABQYECcUGBAkYgAUGACHFBACAAIAFzQQRxG3INASACIAFBgPQAcUVyDQAgAEEwcSICQRBGIAFBgDBxIgRBAEdzDQEgAEECcSABQYIEcUGC
 
BEdyIAJBEEZyDQAgBEUNAQtBASEDCyADC5QBAQF/IwBBEGsiBSQAIAUgAzcDCAJAIAEEQCAAIAGtQoCAgIBwhBANIAJBASAFQQhqEDUhAiAAIAUpAwgQCkF/IQEgAhALDQEgACACEApBASEBDAELIAAgAxAKIARBgIABcUUEQEEAIQEgBEGAgAJxRQ0BIAAQ+gFFDQELIABBq8AAQQAQFEF/IQELIAVBEGokACABCyIAIAAgAkEBahAtIgAEQCAAIAEgAhAjIAJqQQA6AAALIAALYAIBfwF+AkAgARBcDQACQAJAAkAgACgCECgCOCABQQJ0aigCACkCBCIDQj6Ip0EBaw4DAwIAAQtBASECAkAgA0IgiKdB/////wNxDgIDAAELQQIPCxABAAtBASECCyACCygBAX4Cf0EAIAAgARDYBSICEBANABpBfyACEAsNABogACACEApBAQsLTgIBfwF+IwBBEGsiAiQAAn4gAUH/AU0EQCACIAE6AA8gACACQQ9qQQEQ1QIMAQsgAiABOwEMIAAgAkEMakEBEJwECyEDIAJBEGokACADC98BAQR/IAAQCwR/QfSmBCgCABCRASEAQfSmBCgCACAAQaYIEOUDIQJB9KYEKAIAIQMCQCACRQRAIAMgABAKDAELIAMgAEGrCBDlAyEDQfSmBCgCACEEIANFBEAgBCACEDZB9KYEKAIAIAAQCgwBCyAEIABBsQgQ5QMhBEH0pgQoAgAhBSAERQRAIAUgAhA2QfSmBCgCACADEDZB9KYEKAIAIAAQCgwBCyAFIAAQCiACIAQgAyABEAlB9KYEKAIAIAIQNkH0pgQoAgAgAxA2QfSmBCgCACAEEDYLQQEFQQALCykBAn8CQCAAQoCAgIBwVA0AIACnIgIvAQYQ9wFFDQAgAigCICEBCyABCyEAIAAgAUEwIAOtQQEQGRogACABQTYgACACEDFBARAZGgtPAQF/IAEgAjYCDCABIAA2AgAgA
 
UEANgIUIAEgAzYCECABQQA2AgggASAAIAIgAxD8ASIANgIEIAAEf0EABSABQX82AhQgAUEANgIMQX8LC/gBAgV/AX4gASgCDCECAkACQAJAIAEpAgQiB0KAgICAgICAgEBaBEAgACgCOCEEDAELAkAgASAAKAI4IgQgACgCNCAHQiCIpyAAKAIkQQFrcUECdGoiAygCACIFQQJ0aigCACIGRgRAIAMgAjYCAAwBCwNAIAYhAyAFRQ0DIAQgAygCDCIFQQJ0aigCACIGIAFHDQALIAMgAjYCDAsgBSECCyAEIAJBAnRqIAAoAjwQ5AU2AgAgACACNgI8IAAgARAfIAAgACgCKCIAQQFrNgIoIABBAEwNAQ8LQZkwQaENQdgWQaAwEAAAC0GyMEGhDUHsFkGgMBAAAAuJAgIFfwF+AkACQCACBEAgASwAABBFDQELAn8gACgCECEEIAEgAkEBEOkFIgNB/////wNxIQYgBCgCNCAEKAIkQQFrIANxQQJ0aiEDA0ACQAJAIAMoAgAiBUUNACAEKAI4IAVBAnRqKAIAIgMpAgQiCEKAgICAgICAgECDQoCAgICAgICAwABSIAhCIIinQf////8DcSAGR3INASAIpyIHQQBIIAdB/////wdxIAJHcg0BIANBEGogASACEHQNASAFEPEBDQAgAyADKAIAQQFqNgIACyAFDAILIANBDGohAwwACwALIgMNAQtBACEDIAAgASACEP4BIggQCw0AIAAgCKcQpQQhAwsgAwvEAgECfyAAIAAoAgAiAUEBayICNgIAAkAgAUEBSg0AIAJFBEAgACgCECECQQAhASAAQQAQpgQgACAAKQPAARAKIAAgACkDyAEQCiAAIAApA7ABEAogACAAKQO4ARAKIAAgACkDqAEQCgNAIAFBCEYEQEEAIQEDQCACKAJAIAFKBEAgACAAKAIoIAFBA3RqKQMAEAogAUEBaiEBDAELCyACIAAoAigQHyAAIA
 
ApA5gBEAogACAAKQOgARAKIAAgACkDUBAKIAAgACkDQBAKIAAgACkDSBAKIAAgACkDOBAKIAAgACkDMBAKIAAoAhAhASAAKAIkIgIEQCABIAIQngILIABBFGoQRiAAEJ8CIAAoAhAgABAfDAMFIAAgACABQQN0aikDWBAKIAFBAWohAQwBCwALAAtBxw1BoQ1B6BFB4g0QAAALCyoBAX8gAEKAgICAcFoEQCAApyICIAItAAVB7wFxIAFBBHRBEHFyOgAFCwusAQMBfAF+AX8gAL0iAkI0iKdB/w9xIgNBsghNBHwgA0H9B00EQCAARAAAAAAAAAAAog8LAnwgACAAmiACQn9VGyIARAAAAAAAADBDoEQAAAAAAAAww6AgAKEiAUQAAAAAAADgP2QEQCAAIAGgRAAAAAAAAPC/oAwBCyAAIAGgIgAgAUQAAAAAAADgv2VFDQAaIABEAAAAAAAA8D+gCyIAIACaIAJCf1UbBSAACwvWAwMCfAJ/AX4gAL0iBUIgiKchAwJAAnwCfAJAIAVCAFlBACADQfmE6v4DSxtFBEAgA0GAgMD/e08EQEQAAAAAAADw/yAARAAAAAAAAPC/YQ0EGiAAIAChRAAAAAAAAAAAow8LIANBAXRBgICAygdJDQQgA0HF/cr+e08NAUQAAAAAAAAAAAwCCyADQf//v/8HSw0DCyAARAAAAAAAAPA/oCIBvSIFQiCIp0HiviVqIgNBFHZB/wdrIQQgACABoUQAAAAAAADwP6AgACABRAAAAAAAAPC/oKEgA0H//7+ABEsbIAGjRAAAAAAAAAAAIANB//+/mgRNGyECIAVC/////w+DIANB//8/cUGewZr/A2qtQiCGhL9EAAAAAAAA8L+gIQAgBLcLIgFEAADg/kIu5j+iIAAgAiABRHY8eTXvOeo9oqAgACAARAAAAAAAAABAoKMiASAAIABEAAAAAAAA4D+ioiICIAEgAaIiASABoiIAIAAgAES
 
fxnjQCZrDP6JEr3iOHcVxzD+gokQE+peZmZnZP6CiIAEgACAAIABERFI+3xLxwj+iRN4Dy5ZkRsc/oKJEWZMilCRJ0j+gokSTVVVVVVXlP6CioKCioCACoaCgCw8LIAAL7wEBAn8CfwJAIAFB/wFxIgMEQCAAQQNxBEADQCAALQAAIgJFIAIgAUH/AXFGcg0DIABBAWoiAEEDcQ0ACwsCQCAAKAIAIgJBf3MgAkGBgoQIa3FBgIGChHhxDQAgA0GBgoQIbCEDA0AgAiADcyICQX9zIAJBgYKECGtxQYCBgoR4cQ0BIAAoAgQhAiAAQQRqIQAgAkGBgoQIayACQX9zcUGAgYKEeHFFDQALCwNAIAAiAi0AACIDBEAgAkEBaiEAIAMgAUH/AXFHDQELCyACDAILIAAQQyAAagwBCyAACyIAQQAgAC0AACABQf8BcUYbCysAIABBgAFPBH8gAEHPAU0EQCAAQYAFag8LIABBAXRBrqwDai8BAAUgAAsLEAAgAC8AACAALQACQRB0cgtpAQR/IAEQQyEDA0ACQCAALQAARQRAQX8hAgwBCwNAAn8gAEEsELEDIgRFBEAgABBDDAELIAQgAGsLIgUgA0YEQCAAIAEgAxB0RQ0CCyAAIAVqQQFqIQAgBA0ACyACQQFqIQIMAQsLIAILEQAgAEHA/gFB4IYCQSEQ3gILYAEBfyMAQSBrIgMkACADIAAoAhA2AhggAyAAKQIINwMQIAMgACkCADcDCCAAQQA2AgggAEIANwIAIAAgAygCECADKAIIIAEgAkEAEKcCIQAgA0EIahBPIANBIGokACAAC5IFAQd/AkACQCABQf8ATQRAIAJFDQEgAUEgaiABIAFBwQBrQRpJGyEBDAILIAJBAEchCEHoAiEFA0AgAyAFSg0CIAEgAyAFakEBdiIGQQJ0QcDnAWooAgAiB0EPdiIESQRAIAZBAWshBQwBCyABIAdBCHZB/wBxIARqTwRAIAZB
 
AWohAwwBCwsgB0EIdEGAHnEiCSAGQfDyAWotAAAiBXIhAwJAAkACQAJAAkACQAJAAkACQCAHQQR2IgdBD3EiBg4NAAAAAAECAwQFBgYHBwgLIAIgB0EBcUdBACACQQJHIAZBAklyGw0JIAEgBGsgA0ECdEHA5wFqKAIAQQ92aiEBDAkLIAEgBGsiA0EBcSACQQBHRg0IIANBAXMgBGohAQwICyABIARrIgRBAUYEQEEBQX8gAhsgAWohAQwICyAEIAJFQQF0Rw0HQQJBfiACGyABaiEBDAcLIAEgBGshASACRQRAIABBmQc2AgQgACABIANBBXZB/gBxQeD1AWovAQBqNgIAQQIPCyABIAVBP3FBAXRB4PUBai8BAGohAQwGCyACQQFGDQUgAyACQQJGQQV0aiEBDAULIAJBAUYNBCADQQF0QeD1AWovAQAgAkECRmohAQwECyAGQQlrIAhHDQMgA0EBdEHg9QFqLwEAIQEMAwsgBkELayACRw0CIAAgBUE/cUEBdEHg9QFqLwEANgIEIAAgA0EFdkH+AHFB4PUBai8BACABIARrajYCAEECDwsgAg0BIAAgCUEHdkHg9QFqLwEANgIAIAAgBUEPcUEBdEHg9QFqLwEANgIIIAAgBUEDdkEecUHg9QFqLwEANgIEQQMPCyABQSBrIAEgAUHhAGtBGkkbIQELIAAgATYCAEEBCxcAIAAgAUH/AXEQDiAAIAJB//8DcRAwC7MYARN/IwBBEGsiCCQAIAggAigCACIENgIMAkACQAJAAkACQAJAAkACQAJAIAQtAAAiBwRAIAdB3ABHDQUgBEEBaiIFIAAoAhxPDQEgCCAEQQJqNgIMAkACQAJAAkACQAJAAkACQAJAAkAgBC0AASIHQdMAaw4FBAEBAQYACwJAIAdB4wBrDgIIBwALAkAgB0HzAGsOBQMBAQEFAAsgB0HEAEYNASAHQdAARiAHQfAARnINCAsgACgCKEEBdCEED
 
AsLQQEhBgwEC0ECIQYMAwtBAyEGDAILQQQhBgwBC0EFIQYLQX8hByAGQQF0QXxxQdTjAWooAgAiAy8BACEEIAEgACgCQEHrAhCFASAGQQFxIQAgA0ECaiEDIARBAXQhBkEAIQQCQAJAA0AgBCAGRwRAIARBAXQhBSAEQQFqIQQgASADIAVqLwEAEL0ERQ0BDAILC0EAIQQgAEUNASABEKYCRQ0BCyABEE9BfyEECyAEDQsMBAsCQCAELQACIgFB3wFxQcEAa0H/AXFBGk8EQCAAKAIoIQcgA0UgAUHfAEYgAUEwa0H/AXFBCklyRXINASAHDQcLIAggBEEDajYCDCABQR9xIQcMCgsgBw0FIAggBTYCDEHcACEHDAkLIAAoAihFBEBBACEEDAQLIAdB0ABGIRNBfyEHIAAhCiABIQMjAEGAAWsiBiQAAn8CQAJAIAgoAgwiAC0AAEH7AEYEQCAGQUBrIQQCQAJAA0ACQCAAQQFqIQEgAC0AASIFEOACRQ0AIAQgBkFAa2tBPksNAiAEIAU6AAAgBEEBaiEEIAEhAAwBCwsgBEEAOgAAIAYhBAJAIAEtAAAiBUE9Rw0AIABBAmohAQNAIAEtAAAiBRDgAkUNASAEIAZrQT9PBEAgCkGZ5AFBABA8DAcFIAQgBToAACAEQQFqIQQgAUEBaiEBDAELAAsACyAEQQA6AAAgBUH9AEcEQCAKQbjkAUEAEDwMBQtBACEEAkACQCAGQUBrQcbkAUEHEHRFDQAgBkFAa0HN5AFBAxB0RQ0AQQEhBCAGQUBrQdDkAUESEHRFDQAgBigCQEHzxuEDRw0BCyADIAooAkBB6wIQhQECfyADIQ0gBCEQQQAhBSMAQTBrIgkkAAJAAkBBkI0CIAYQtAMiDkEASARAQX4hEQwBCyADIQwgEARAIAlBGGogDSgCDCANKAIQEIUBIAkgDSgCDCANKAIQEIUBIAlBGGohDAsgDkEBaiESQYCfAiEAA0
 
AgAEGxswJJBEAgBSELAn8gAEEBaiAALQAAIg9B/wBxIgVB4ABJDQAaIAVB7wBNBEAgAC0AASAFQQh0ckGgvwFrIQUgAEECagwBCyAALQACIAVBEHRyIAAtAAFBCHRyQaDfvwNrIQUgAEEDagshBCAPQYABcUUEQCAFIAtqQQFqIQUgBCEADAILIARBAWohACAFIAtqQQFqIQUgEiAELQAARw0BIAwgCyAFEHxFDQEMAwsLIBBFDQBBwLMCIQAgDkE2RiEUIA5BGEchFUEAIQQDQCAAQd+5AkkEQCAEIQUgACwAACILQf8BcSEEAn8gAEEBaiALQX9KDQAaIAtB/wFxQb8BTQRAIAAtAAEgBEEIdHJBgP8BayEEIABBAmoMAQsgAC0AAiAEQRB0ciAALQABQQh0ckGA//4FayEEIABBA2oLIgBBAWohDyAEIAVqQQFqIQQgAC0AACELAkACQCAURQRAQQAhACAVDQELIAtFDQEgCSAFIAQQfEUNAQwFCwNAIAAgC0YNASAAIA9qIRYgAEEBaiEAIBIgFi0AAEcNAAsgCSAFIAQQfA0ECyALIA9qIQAMAQsLAkAgDkE2R0EAIA5BGEcbRQRAIAkQpgINAyANIAwoAgggDCgCACAJKAIIIAkoAgBBARCnAkUNAQwDCyANIAwoAgggDCgCACAJKAIIIAkoAgBBABCnAg0CCyAMEE8gCRBPCyAJQTBqJAAgEQwBCwNAIBBFDQAgDBBPIAkQTwwACwALIgBFDQIgAxBPIABBfkcNBCAKQeLkAUEAEDwMBQsCQCAGQUBrQfnkAUEREHQEQCAGQUBrQYrlAUEDEHQNAQsgAyAKKAJAQesCEIUBIAMgBhC2BCIARQ0CIAMQTyAAQX5HDQQgCkGN5QFBABA8DAULIAYtAAANACADIAooAkBB6wIQhQEgAyAGQUBrELYEIgBBf0YEQCADEE8MBAsgAEF/Sg0BIwBBoARrIgAkAEF+IQQCQEG
 
gvwIgBkFAaxC0AyIFQQBIDQACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgBUEiaw4TAAcBAgYQDg0RDwwICRIEAwULChMLQX8hBEEAIANBAEGAARB8RQ0TGgwUC0F/IQRBACADQQBBgIDEABB8RQ0SGgwTCyAAQoaAgIDwADcDCCAAQoCAgIAQNwMAIAMgABB7DBELIABCg4CAgPAANwMgIABCgYCAgBA3AxggAEKAgICAgIAENwMQIAMgAEEQahB7DBALIABBQGtCg4CAgPAANwMAIABCgYCAgDA3AzggAEKAgICAwAA3AzAgAyAAQTBqEHsMDwsgAEKDgICA8AA3A2AgAEKBgICAwAA3A1ggAEKAgICAIDcDUCADIABB0ABqEHsMDgsgAEEHNgKQASAAQoOAgIAwNwOIASAAQoOAgIAQNwOAASAAQoGAgIDAADcDeCAAQoCAgIDgATcDcCADIABB8ABqEHsMDQsgAEKDgICA8AA3A8gBIABCgYCAgCA3A8ABIABCg4CAgDA3A7gBIABCg4CAgBA3A7ABIABCgYCAgMAANwOoASAAQoCAgIDghwE3A6ABIAMgAEGgAWoQewwMCyAAQQc2AugBIABCg4CAgOAANwPgASAAQoGAgIDQADcD2AEgAEKAgICAkKiAgD83A9ABIAMgAEHQAWoQewwLCyAAQoOAgIDwADcDgAIgAEKBgICA0AA3A/gBIABCgICAgIAoNwPwASADIABB8AFqEHsMCgsgAEKEgICA8AA3A8gCIABCg4CAgOAANwPAAiAAQoGAgICwATcDuAIgAEKegICAMDcDsAIgAEKdgICAEDcDqAIgAEKDgICAEDcDoAIgAEKBgICA8AA3A5gCIABCgICAgOCHATcDkAIgAyAAQZACahB7DAkLIABBBzYCmAMgAEKGgICAwAA3A5ADIABCjICAgDA3A4gDIABCg4CAgBA3A4ADIABC
 
gYCAgOADNwP4AiAAQoGAgIDQAzcD8AIgAEKIgICAMDcD6AIgAEKDgICAEDcD4AIgAEKBgICA8AA3A9gCIABCgICAgODfwQA3A9ACIAMgAEHQAmoQewwICyADQQEQ3AIMBwsgA0ECENwCDAYLIANBBxDcAgwFCyAAQoWAgIDwADcDsAMgAEKBgICA0AE3A6gDIABCgoCAgBA3A6ADIAMgAEGgA2oQewwECyAAQoWAgIDwADcD0AMgAEKBgICA4AE3A8gDIABCgoCAgMAANwPAAyADIABBwANqEHsMAwsgAEKFgICA8AA3A/ADIABCgYCAgPABNwPoAyAAQoKAgIDAADcD4AMgAyAAQeADahB7DAILIABChYCAgPAANwOQBCAAQoGAgICgATcDiAQgAEKBgICAgAY3A4AEIAMgAEGABGoQewwBCyAFQSFLDQEgAyAFQRBqELQECyEECyAAQaAEaiQAIAQiAEUNASADEE8gAEF+Rw0DCyAKQa7lAUEAEDwMAwsCQCATRQ0AIAMQpgJFDQAgAxBPDAMLIAggAUEBajYCDEEADAMLIApBguQBQQAQPAwBCyAKEKkCC0F/CyEAIAZBgAFqJAAgAEUNAgwJCyAEIAAoAhxPDQBBACEHDAYLIABBrOMBQQAQPAwEC0GAgICABCEHDAULIAggBTYCDCAIQQxqIAQQgwIiAUF/SgRAIAEhBwwFCwJAIAFBfkcNACAIKAIMLQAAIgFFDQBB7uIBIAFBEBCBAg0CCyAAKAIoRQ0BCyAAQf7iAUEAEDwMAQsgCCgCDCEEIAdBGHRBGHVBAE4NASAEQQYgCEEMahBfIgdBgIAESQ0CIAAoAigNAiAAQbvjAUEAEDwLQX8hBwwCCyAIIARBAWo2AgwLIAIgCCgCDDYCAAsgCEEQaiQAIAcLHwEBfyAAKAI8IgFBf0wEfyAAEMAEGiAAKAI8BSABCwuDAwEEfyMAQRBrIgQkACAEIAEoAgAiBTYCD
 
CACQQF0IQYgACEDAn8DQAJAAkACQAJ/AkACQCAFLQAAIgJB3ABHBEAgAkE+Rw0BIAAgA0YNBiADQQA6AAAgASAEKAIMQQFqNgIAQQAMCAsgBCAFQQFqNgIMIAUtAAFB9QBGDQEMBQsgAkEYdEEYdUF/Sg0CIAVBBiAEQQxqEF8MAQsgBEEMaiAGEIMCCyICQf//wwBLDQIMAQsgBCAFQQFqNgIMCwJAIAAgA0YEQAJ/IAJB/wBNBEAgAkEDdkH8////AXFB0N8BaigCACACdkEBcQwBCyACELUDC0UNAgwBCwJ/IAJB/wBNBEAgAkEDdkH8////AXFB4N8BaigCACACdkEBcQwBCyACQX5xQYzAAEYgAhC4BEEAR3ILRQ0BCyADIABrQfkASg0AAn8gAkH/AE0EQCADIAI6AAAgA0EBagwBCyADIAIQ4wIgA2oLIQMgBCgCDCEFDAELC0F/CyEAIARBEGokACAACzEBAX9BASEBAkACQAJAIABBCmsOBAIBAQIACyAAQajAAEYNAQsgAEGpwABGIQELIAELqAIBA38CQAJAIAAoAjAiCUEBaiIKIAAoAiwiCE0EQCAAKAIoIQgMAQsgACgCICAAKAIoIAhBA2xBAXYiCEEIIAhBCEsbIgkgACgCJGwQhQQiCEUEQEF/IQgMAgsgACAINgIoIAAgCTYCLCAAKAIwIglBAWohCgsgACAKNgIwIAggACgCJCAJbGoiCCAHNgIEIAggBjoAACAIIAQ2AgwgCCAFNgIIIAggAzoAASAIQRBqIQQgACgCDEEBdCEFQQAhAANAIAAgBUZFBEAgBCAAQQJ0IgZqIAEgBmooAgA2AgAgAEEBaiEADAELCyAEIAVBAnRqIQFBACEIQQAhAANAIAAgA0YNASABIABBAnQiBGogAiAEaigCADYCACAAQQFqIQAMAAsACyAIC2sAAkACQAJAAkACQCAAIAFyQQ9xDg8ABAMEAgQDBAEEAwQCBA
 
MEC0HhAkHiAiABQRBGGw8LQeMCQeQCIAFBCEYbDwtB5QJB5gIgAUEERhsPC0HnAkHoAiABQQJGGw8LQekCQeoCIAFBAUYbC1IBAn8CfyAAKAIEIgMgAmoiBCAAKAIISwR/QX8gACAEEMwBDQEaIAAoAgQFIAMLIAAoAgAiA2ogASADaiACECMaIAAgACgCBCACajYCBEEACxoLDAAgACgCECABEO4DC1wBAX8CQCABQiCIpyICQX9HBEAgAkF4Rw0BIAEQDQ8LIAGnIgIvAQZBB0cNACACKQMgIgFCgICAgHCDQoCAgICAf1INACABEA0PCyAAQeTJAEEAEBRCgICAgOAAC1IBBH8gBEEAIARBAEobIQhBACEEAkADQCAEIAhGDQEgAyAEaiEFIAIgBGohBiAEQQFqIQQgACAGEC8iBiABIAUQLyIFRg0ACyAGIAVrIQcLIAcLQwECfwNAAkAgAkEBTgR/IAAgARAvEOgCIgRBAE4NAUF/BSADCw8LIAJBAWshAiABQQFqIQEgBCADQQR0ciEDDAALAAsmAQF/IwBBEGsiAiQAIAJBADYCDCAAQQUgAUEAEP0BIAJBEGokAAt5AQJ/IwBBEGsiBCQAAkAgACABIAIgAxCuASIBEAsNAAJAIAAgARCWASIFQQBIDQAgAkEBRw0BIAAgBEEIaiADKQMAEA0QrAENACAEKQMIIAWtVw0BIABB0KwBQQAQFAsgACABEApCgICAgOAAIQELIARBEGokACABC0IBAX8CQCAAIAFqIgAtAAFBPUcNAEEBIQICQAJAIAAtAAAiAEEWaw4EAgEBAgALIABBsQFGDQELIABBHUYhAgsgAgtpACABQQFqQQhNBEAgACABQc0Aa0H/AXEQDg8LIAFBgAFqQf8BTQRAIABBuwEQDiAAIAFB/wFxEA4PCyABQYCAAmpB//8DTQRAIABBvAEQDiAAIAFB//8DcRAwDwsgAEEBEA4gACABEBwLaQE
 
EfyAAKAIEIQUCQANAIAEgBU4NAQJAAkAgACgCACABaiIDLQAAIgRBtAFHBEAgBEHAAUYNASAEQesARw0EIAIgAygAAUcNBAwCCyACIAMoAAFGDQELIAFBBWohAQwBCwtBASEGCyAGC4ECAQV/IAAgAUF/EG8aAkADQCAGQQpGBEBB6wAhBAwCCwJAIAFBAEgNACABIAAoAqwCTg0AIAAoAqQCIAFBFGxqKAIIIQUgACgCgAIhBwNAAkACQCAFIAdqIggtAAAiBEG0AUYNACAEQcABRwRAIARBDkcNAkEpIQQDQCAHIAVBAWoiBWotAAAiA0EORg0ACyADQSlGDQZBDiEEDAYLIANFDQAgAyAIKAABNgIACyAFIARBAnRBkDFqLQAAaiEFDAELCyAEQesARw0CIAZBAWohBiAIKAABIQEMAQsLQZ6KAUGhDUH/8wFBlZoBEAAACyACIAQ2AgAgACABQQEQbxogAQs2AAJAIAAgAUEIEFYiAEEASA0AIAEoAmBFDQAgASgCdCAAQQR0aiIBIAEoAgxBAnI2AgwLIAALpQEBAn8gASgCwAIiCkGAgAROBEAgAEGfkAFBABBBQX8PC0F/IQkgACABQcgCakEIIAFBxAJqIApBAWoQfQR/QX8FIAEgASgCwAIiCUEBajYCwAIgASgCyAIgCUEDdGoiCSAEOwECIAkgB0EDdEEIcSAGQQJ0QQRxIANBAXRBAnEgAkEBcXJyciAIQQR0cjoAACAJIAAgBRAXNgIEIAEoAsACQQFrCwvVAQEDfwJAAkAgAUGhf0YEQEF/IQMgAEEIIAIQsAJFDQEMAgtBfyEDIABBoX8gAhDMAw0BC0EAIQMgACgCECABRw0AQekAQeoAIAFBoX9GGyEFIAJBe3EhAiAAEDQhBANAQX8hAyAAEA8NASAAQREQDCAAIAUgBBAbGiAAQQ4QDAJAIAFBoX9GBEAgAEEIIAIQsAJFDQEMAwsgAEGhfyACEMwD
 
DQILIAAoAhAiAyABRg0ACyADQaZ/RgRAIABBpocBQQAQE0F/DwsgACAEEB1BACEDCyADC40BAQJ/AkACQCAAKAJAIgEQpAEiAkG/AUcEQCACQc0ARw0BIAEoApgCIQIgAUF/NgKYAiABIAI2AoQCIABBzgAQDA8LIAEoApgCIgAgACABKAKAAiICaigAAWsgAmoiAC0AAUHWAEcNASAAQdcAOgABIAFBfzYCmAILDwtB04UBQaENQe2wAUGKhgEQAAALWQEDfyAAKALMASACQQN0akEEaiEDA0ACQEF/IQQgAygCACIDQX9GDQAgACgCdCADQQR0aiIFKAIEIAJHDQAgAyEEIAUoAgAgAUYNACAFQQhqIQMMAQsLIAQL0yECCX8BfiMAQRBrIgckACABQQJxIgRBAXYhCUF+IQICQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgACgCECIDQYABag4HAgMSDQEBBQALAkAgA0HVAGoODAkLDAEBAQEKAQEBDwALAkAgA0E7ag4KBwEBCAEBAQEREAALIANBKEYNBSADQS9GDQMgA0HbAEYgA0H7AEZyDQ0LIAAoAjghAiAHIAAoAhgiATYCBCAHIAIgAWs2AgAgAEHaggEgBxATDBQLAkAgACkDICILQv////8PWARAIABBARAMIAAgC6cQOAwBCyAAIAtBABDRAUEASA0UC0F/IQEgABAPDRQMEQtBfyEBIAAgACkDIEEBENEBDRMgABAPRQ0QDBMLQX8hAgsgACAAKAI4IAJqNgI4IAAoAgAoAugBRQRAIABBioABQQAQEwwRC0F/IQEgABDvBA0RQQAhAiAAIAApAyBBABDRARogACgCACIEIAApAyAgACkDKCAEKALoAREWACILEAsEQCAAKAJAIgQEQCAEKAJoQQBHQQF0IQILIAAoAgAiBCAEKAIQKQOAASAAKAIMIAAoAhQgA
 
hDEAgwSCyAAIAtBABDRASEEIAAoAgAgCxAKIAQNESAAQTMQDCAAEA9FDQ8MEQsCQCABQQRxRQ0AQQAhAiAAQQBBARClAUGkf0cNAEF/IQEgAEEDQQAgACgCGCAAKAIUENYBRQ0PDBELQX8hASAAEIgCRQ0NDBALQX8hAUEAIQIgAEECQQAgACgCGCAAKAIUENYBRQ0NDA8LQX8hAUEAIQIgAEEBQQAQ9wJFDQwMDgtBfyEBIAAQDw0NIABBBxAMDAoLQX8hASAAEA8NDCAAQbYBEAwgAEEIEBoMCAtBfyEBIAAQDw0LIABBCRAMDAgLQX8hASAAEA8NCiAAQQoQDAwHCyAAKAIoBEAgABDvAQwJCwJAIAFBBHEiAkUNACAAQQEQiAFBpH9HDQBBfyEBQQAhAiAAQQNBACAAKAIYIAAoAhQQ1gFFDQgMCgsCQAJAIABBhQEQUUUNACAAQQEQiAFBCkYNACAAKAIUIQYgACgCGCEDQX8hASAAEA8NCyAAKAIQIgRBRUYEQCAAQQJBAiADIAYQ1gFFDQkMDAsCQCACRQ0AAkAgBEEoRgR/IABBAEEBEKUBQaR/Rg0BIAAoAhAFIAQLQYN/Rw0BIAAoAigNASAAQQEQiAFBpH9HDQELIABBA0ECIAMgBhDWAUUNCQwMC0GFASECIAAoAgBBhQEQFxoMAQsCQCAAKAIgIgJBzQBHDQAgACgCQCgCXA0AIABBo4ABQQAQEwwKC0F/IQEgACgCACACEBchAiAAEA8NCgsgAEG2ARAMIAAgAhA4IAAgACgCQC8BvAEQFgwGCyAAIAdBDGpBABClAUE9RgRAIABBAEEAQQAgBygCDEECcUEBENMBQQBODQYMCAsgACgCEEH7AEYEQEEAIQMjAEEQayIFJAAgBUEANgIMAkACQCAAEA8NACAAQQsQDAJAA0AgACgCECIBQf0ARg0BAkACQCABQaV/RgRAQX8hCCAAEA8NBiAAEGANBiAAQQ
 
cQDCAAQdMAEAwgAEEGEGsgAEEOEAwgAEEOEAwMAQsgACgCFCEEIAAoAhghAiAAIAVBDGpBAUEBQQAQ0gMiBkEASA0BAkACQCAGQQFGBEAgAEG2ARAMIAAgBSgCDCIIEBogACAAKAJALwG8ARAWDAELIAAoAhBBKEYEQCAAAn8gBkF+cSIBQQJGBEBBACEIIAZBAmoMAQsgBkEDa0EAIAZBBGtBA0kbIQhBBgsgCCACIAQQ1gENBAJAIAUoAgwiCEUEQCAAQdUAEAwMAQsgAEHUABAMIAAgCBAaCyAAIAZBAWtBBHJBBCABQQJGG0H/AXEQawwCCyAAQToQLg0DIAAQYA0DAkAgBSgCDCIIQcQARwRAIAgNASAAEM0DIABB0QAQDCAAQQ4QDEEAIQgMAwsgAwRAIABBwYYBQQAQE0HEACEIDAgLIABBzwAQDEEBIQNBxAAhCAwCCyAAIAgQqQELIABBzAAQDCAAIAgQGgsgACgCACAIEBELIAVBADYCDCAAKAIQQSxHDQIgABAPRQ0BCwsgBSgCDCEIDAELQQAhCCAAQf0AEC5FDQELIAAoAgAgCBARQX8hCAsgBUEQaiQAIAhFDQYMCAtBACECQX8hBAJAIAAQDw0AAkADQAJAIAJBH0sNACAAKAIQIgFB3QBGIAFBpX9GciABQSxGcg0AIAAQYA0DIAJBAWohAiAAKAIQIgFB3QBGDQEgAUEsRw0CIAAQD0UNAQwDCwsgAEEmEAwgACACQf//A3EQFkEAIQMDQCAAKAIQIQECQAJAAkACQCACQf////8HRwRAIAFBLEYNAyABQaV/Rg0CIAFB3QBGDQEgABBgDQcgAEHMABAMIAAgAhCTARA4IAJBAWohAkEAIQMgACgCEEEsRw0FDAQLIAFB3QBHDQELIANFDQQgAEEREAwgAEEBEAwgACACEDggAEHDABAMIABBMBAaDAQLIABBARAMIAAgAhA4A0ACQAJAAkAgACgCECI
 
CQaV/RwRAQY8BIQEgAkEsRw0BQQEhAwwCCyAAEA8NCEHSACEBIAAQYEUNAQwICyACQd0ARg0BIAAQYA0HIABB0QAQDEEAIQMLIAAgARAMIAAoAhBBLEcNACAAEA9FDQEMBgsLIAMEQCAAQRIQDCAAQcMAEAwgAEEwEBoMBAsgAEEOEAwMAwtBASEDIAJBAWohAgsgABAPRQ0ACwwBCyAAQd0AEC4hBAsgBEUNBQwHC0F/IQEgABAPDQcgACgCEEEuRgRAIAAQDw0IIABB1gAQUUUEQCAAQeSAAUEAEBMMCQsgACgCQCgCUEUEQCAAQfWAAUEAEBMMCQsgABAPDQggAEG2ARAMIABB8QAQGgwECyAAQQAQzwMNB0EBIQkgACgCEEEoRgRAQQEhAgwGCyAAQREQDCAAQSEQDAwDC0F/IQEgABAPDQYCQCAAKAIQIgJB2wBGIAJBLkZyRQRAIAJBKEcNAUECIQIgACgCQCgCVA0GIABBnoEBQQAQEwwICyAAKAJAKAJYRQRAIABB04EBQQAQEwwICyAAQbYBEAwgAEEIEBpBACECIABBABAWIABBtgEQDCAAQfMAEBogAEEAEBYgAEE0EAwMBQsgAEH1gQFBABATDAYLQX8hASAAEA8NBSAAKAIQQS5GBEAgABAPDQYgAEH7ABBRRQRAIABBjIIBQQAQEwwHCyAAKAJERQRAIABBmoIBQQAQEwwHCyAAEA8NBiAAQQwQDCAAQQYQawwDCyAAQSgQLg0FIARFBEAgAEHAggFBABATDAYLIAAQYA0FIABBKRAuDQUgAEE1EAxBACECQQEhCQwDC0F/IQFBACECIABBAEEAEOsEDQQMAgtBACECIABBABAWDAELQQAhAgsgB0F/NgIMA0AgACgCQCEDAkACQAJAAkACQAJAAkACfwJAIAAoAhAiAUGnf0ciBkUEQCAAEA8NCyAAKAIQIQEgCQRAQQEhCiABQShGDQILIAFB2wBHDQUM
 
CQsgAiABQYJ/R3JFBEBBACEKIAcoAgxBAEgEQEEDIQRBAAwDCyAAQYGDAUEAEBMMCwsgCUUNA0EAIQogAUEoRw0DCyAAEA8NCUEAIQQgAgRAQQAhBSACIQQMAgtBAQshBkEBIQFBACEFAkACQAJAAkACQCADEKQBIgJBxwBrDgQBBAQDAAsgAkG8AUcEQCACQbYBRg0CIAJBwQBHDQQgAygCgAIgAygCmAJqQcIAOgAAQQIhAUHBACEFDAQLIAMoAoACIAMoApgCakG9AToAAEECIQFBvAEhBQwDCyADKAKAAiADKAKYAmpByAA6AABBAiEBQccAIQUMAgsgAygCgAIgAygCmAJqIggoAAEhAiAKRQRAQTEhBSAGIAJBOkZxDQMLAn8gAyECIAgvAAUhBkEAIQUDQAJAIAJFDQAgAigCzAEgBkEDdGpBBGohBgNAIAYoAgAiBkEATgRAIAIoAnQgBkEEdGoiBigCAEHUAEYEQEEBIQUMAwUgBkEIaiEGDAILAAsLIAIoAgwhBiACKAIEIQIMAQsLIAVFCwRAQbYBIQUMAgtBugEhBSAIQboBOgAADAELQccAIQUgAygCgAIgAygCmAJqQccAOgAAQQIhAQsgCkUNACAAIAdBDGogARDvAgsCQCAEQQNGBEAgAEEBIAdBCGoQ6wQNCQwBCwJAIARBAkciBkUEQCAAQbYBEAwgAEHyABAaIABBABAWIABBNBAMIABBtgEQDCAAQfEAEBogAEEAEBYMAQsgBEEBRw0AIABBERAMC0EAIQECQAJAA0AgACgCECICQSlGDQIgAUH//wNGBEAgB0H//wM2AgggAEG1gwFBABATDAwLIAJBpX9GDQEgABBgRQRAIAFBAWohASAAKAIQQSlGDQMgAEEsEC5FDQELCyAHIAE2AggMCgsgByABNgIIIABBJhAMIAAgAUH//wNxEBYgAEEBEAwgACABEDgDQAJAAkAgACgCECIBQaV/RwRAI
 
AFBKUYNAiAAEGANDSAAQdEAEAxBjwEhAgwBC0F/IQEgABAPDQ1B0gAhAiAAEGANDQsgACACEAwgACgCEEEpRg0AQX8hASAAQSwQLkUNAQwMCwsgABAPDQkgAEEOEAwCQAJAAkACQCAFQboBaw4DAQMBAAsgBUExRg0BIAVBxwBGDQAgBUHBAEcNAgsgAEEYEAwgAEEnEAwgACAEQQFGEBZBACECDAoLIABBMhAMDAcLIAZFBEAgAEEnEAwgAEEBEBYMBgsgBEEBRgRAIABBGBAMIABBJxAMIABBARAWQQAhAgwJCyAAQQYQDCAAQRsQDCAAQScQDEEAIQIgAEEAEBYMCAsgByABNgIIIAAQDw0ICwJAAkACQAJAIAVBugFrDgMBAwEACyAFQTFGDQEgBUHHAEYNACAFQcEARw0CCyAAQSQQDCAAIAcvAQgQFkEAIQIMCAsgAEExEAwgACAHLwEIEBYMBQsCQAJAAkAgBEEBaw4CAQACCyAAQSEQDCAAIAcvAQgQFgwFCyAAQSEQDCAAIAcvAQgQFkEAIQIMBwsgAEEiEAwgACAHLwEIEBZBACECDAYLIAFB2wBGDQQgAUEuRw0BIAAQDw0GIAAoAhAhAQsCQCABQal/RgRAIAMQpAFBNEYEQCAAQc2DAUEAEBMMCAsgBkUEQCAAIAdBDGpBARDvAgsgAEG8ARAMIAAgACgCIBAaIAAgACgCQC8BvAEQFgwBCyABENUBRQRAIABB94MBQQAQEwwHCyADEKQBQTRGBEAgACAAKAIAIAAoAiAQXiILQQEQ0QEhASAAKAIAIAsQCiABDQcgAEHKABAMDAELIAZFBEAgACAHQQxqQQEQ7wILIABBwQAQDCAAIAAoAiAQGgtBfyEBIAAQD0UNBAwGC0EAIQEgBygCDCICQQBIDQUgACACEB0MBQsgAEEREAwgAEG7ARAMIABBCBAaQQAhAiAAQQAQFiAAEPMEDAILIAAgAy8BvAEQFi
 
ADQQE2AkRBACECDAELIAMQpAEhBCAGRQRAIAAgB0EMakEBEO8CC0F/IQEgABAPDQIgABCXAQ0CIABB3QAQLg0CIARBNEYEQCAAQcoAEAwFIABBxwAQDAsMAAsAC0F/IQELIAdBEGokACABC2gAAkAgAUF/Sg0AQX8hASAAKAIAIABBpAJqQRQgAEGoAmogACgCrAJBAWoQfQ0AIAAgACgCrAIiAUEBajYCrAIgACgCpAIgAUEUbGoiAEEANgIQIABCfzcCCCAAQoCAgIBwNwIACyABC4IBAQF/AkACQCAAKAIQQYN/Rw0AIAAoAigNACAAKAIgIQIgACgCQC0AbkEBcUUNASACQc0ARg0AIAJBOkcNAQsgAEHE/gBBABATQQAPCyAAKAIAIAIQFyECAkACQCABBEAgACACEO4EDQELIAAQD0UNAQsgACgCACACEBFBACECCyACC+QEAQN/AkACQAJAAkACfwJAAkACQAJAIAJFDQACQCAAQcEAEFFFBEAgAEHCABBRRQ0BCyAAKAIAIAAoAiAQFyEFIAAQDw0CAkACQCAAKAIQIgZBKGsOBQYBAQEGAAsgBkH9AEYgBkE6RnINBQsgACgCACAFEBFBA0ECIAVBwgBGGyEGDAELIAAoAhBBKkYEQCAAEA8NCEEEIQYMAQsgAEGFARBRRQ0AIABBARCIAUEKRg0AIAAoAgAgACgCIBAXIQUgABAPDQECQAJAIAAoAhAiBkEoaw4FBQEBAQUACyAGQf0ARiAGQTpGcg0ECyAAKAIAIAUQEUEFIQYgACgCEEEqRw0AIAAQDw0HQQYhBgsgACgCECIFENUBBEBBACEEIAVBg39GBEAgACgCKEUhBAsgACgCACAAKAIgEBchBSAAEA8NASAEQQBHDAQLAkACQAJAIAVBgAFqDgIBAAILIAAoAgAgACkDIBA5IgVFDQggABAPDQIMAwsgACgCACAAKQMgEDkiBUUNByAAEA9FDQIMAQs
 
gBUHbAEcEQCAERSAFQal/R3INBiAAKAIAIAAoAiAQFyEFIAAQDw0BQRAhBAwFCyAAEA8NBiAAEJcBDQYgAEHdABAuDQZBACEEQQAhBQwECyAAKAIAIAUQEQwFC0EAIQQMAgtBACEGQQELIQdBACEEIAYgA0UgB0Vycg0AIAAoAhAiAEE6RyACRSAAQShHcnEhBgwDCyAGQQJJDQIgACgCEEEoRg0CIAAoAgAgBRARCyAAQeOKAUEAEBMLIAFBADYCAEF/DwsgASAFNgIAIAQgBnILUwEBf0F/IQIgACgCACAAKAJAIgBBtAJqQQggAEG8AmogACgCuAJBAWoQfUUEQCAAIAAoArgCIgJBAWo2ArgCIAAoArQCIAJBA3RqIAE3AwALIAILkgEBAn8gASgCiAEiBEGAgAROBEAgAEGlyABBABBBQX8PC0F/IQMgACABQYABakEQIAFBhAFqIARBAWoQfQR/QX8FIAEgASgCiAEiA0EBajYCiAEgASgCgAEgA0EEdGoiA0IANwIAIANCADcCCCADIAAgAhAXNgIAIAMgAygCDEGA////B3I2AgwgASgCiAFBAWsLC5ABAQJ/AkADQCACQQBOBEACQCAAKAJ0IAJBBHRqIgQoAgAgAUcNACAEKAIMIgVBAnENAyADRQ0AIAVB+ABxQRhGDQMLIAQoAgghAgwBCwsCQCAAKAIgRQ0AIAAoAiQNAEGAgICABCECAkAgACABELICIgAEQCAALQAEQQJxDQELQQAhAAsgAA0BC0F/IQILIAILogEBA38jAEEQayICJAACf0EAIABBJxBRRQ0AGiAAIAIQ+QJBfwJ/QX8gABAPDQAaAkAgACgCECIDQS9qIgRBB01BAEEBIAR0QcEBcRsgA0H7AEZyRQRAQQEgA0HbAEYNAhogA0GDf0cNAUEAIAAoAigNAhoLIAFBAnZBAXEgACgCBCAAKAIURnIMAQtBAAsgACACEPgCGwshACACQRBq
 
JAAgAAuCAgEFfwJAAkACQCACQc0ARiACQTpGckUEQCAAKAIAIQUgAkEWRw0BIAAoAkAhBgwCCyAAQe+PAUEAEBMMAgsgACgCQCIGKALAAiIHQQAgB0EAShshBwNAIAQgB0YNASAEQQN0IQggBEEBaiEEIAggBigCyAJqKAIEIAJHDQALIABBhpABQQAQEwwBCyAFIAYgA0H9AEZBACABKAI4IAJBAUEBQQAQywMiAEEASA0AIAUgAUE0akEMIAFBPGogASgCOEEBahB9DQAgASABKAI4IgJBAWo2AjggASgCNCEBIAUgAxAXIQMgASACQQxsaiIBIAA2AgAgASADNgIEQQAPC0F/C6wEAQd/IwBBEGsiBCQAIAAoAkAhByAAKAIAIQYgAkGxf0chCUG7f0G7f0G3fyACQVFGIggbIAJBSUYbQf8BcSEKAn8CQANAAkACQCAAKAIQIgVBg39GBEAgACgCKARAIAAQ7wEMBQsgBiAAKAIgEBciBUEnRyAIRUEAIAJBSUcbckUEQCAAQfqOAUEAEBMMAwsgABAPDQIgACAFIAIQtAINAiADBEAgACAAKAJAKAKUAyAFIAVBABCJAkUNAwsCQCAAKAIQQT1GBEAgABAPDQQgCUUEQCAAQbYBEAwgACAFEBogACAHLwG8ARAWIAAgBEEMaiAEQQhqIAQgBEEEakEAQQBBPRC6AUEASA0FIAAgARC5AQRAIAYgBCgCABARDAYLIAAgBRCpASAAIAQoAgwgBCgCCCAEKAIAIAQoAgRBAEEAENIBDAILIAAgARC5AQ0EIAAgBRCpASAAIAoQDCAAIAUQGiAAIAcvAbwBEBYMAQsgCEUEQCACQUlHDQEgAEGijwFBABATDAQLIABBBhAMIABBuwEQDCAAIAUQGiAAIAcvAbwBEBYLIAYgBRARDAELAkAgBUEgckH7AEcNACAAIARBDGpBABClAUE9Rw0AIABBBhAMIAAgAkEAQQEgBCgCD
 
EECcUEBENMBQQBODQEMBAsgAEHJjwFBABATDAMLQQAgACgCEEEsRw0DGiAAEA9FDQEMAgsLIAYgBRARC0F/CyEAIARBEGokACAAC/QCAgR/AX4jAEEgayICJAACfwJAIAAoAgAgAkEIakEgEEINAAJAA0ACQCABIgQgACgCPE8NACAEQQFqIQFB4AAhAwJAAkACQAJAAkAgBC0AACIFQdwAaw4FAgMDAwEACyAFQSRHDQJBJCEDIAEtAABB+wBHDQMgBEECaiEBCyAAQYJ/NgIQIAAgAzYCKCACQQhqEDchBiAAIAE2AjggACAGNwMgQQAMBwsgAkEIakHcABA7DQUgASAAKAI8Tw0CIARBAmohASAELQABIQULAkACQAJAIAUiA0EKaw4EAQICAAILIAFBAWogASABLQAAQQpGGyEBCyAAIAAoAghBAWo2AghBCiEDDAELIANBGHRBGHVBf0oNACABQQFrQQYgAkEEahBfIgNB///DAEsNAyACKAIEIQELIAJBCGogAxC+AUUNAQwDCwsgAEGb1gBBABATDAELIABBhNYAQQAQEwsgAkEIahBEQX8LIQEgAkEgaiQAIAELdgECfyABIAEtAABBfHFBAXIiBDoAACABIAItAAxBAnRBBHEgBEF5cXIiBDoAACABIARBdXEgAi0ADEECdEEIcXIiBDoAACACLQAMIQUgASADOwECIAEgBEENcSAFQQF0QfABcXI6AAAgASAAIAIoAgAQFzYCBAshACAAQpADgVCtQu4CQu0CIABCA4NQGyAAQuQAgVCtfXwLYAECfyMAQTBrIgEkAEGAgICAeCECIAFB/////wcgAELoB3+nIABC/////78+VRtBgICAgHggAEKZ+P//v0FZGzYCLCABQSxqIAEQBxogASgCJCECIAFBMGokACACQURtC4IEAwh+AX8BfCMAQRBrIg0kAAJ/QX8gACANQQhqIAEQuAINABoCfCANKwMIIg69Qv
 
///////////wCDQoGAgICAgID4/wBaBEBEAAAAAAAAAAAgBA0BGkEADAILAn4gDplEAAAAAAAA4ENjBEAgDrAMAQtCgICAgICAgICAfwshBUQAAAAAAAAAACADRQ0AGkEAIAUQ3ANrIgCsQuDUA34gBXwhBSAAtwshDiAFQoC4mSkQ/QQiASABQugHfyIGQugHfn0hCCABQoDd2wF/IQkgAULg1AN/QjyBIQogBkI8gSELIA0gBSABfUKAuJkpfyIFNwMAQgAhASAFQgR8QgcQ/QQhDCANKQMAIgdCkM4AfkLJ9t4BEPsCQrIPfCEFA0AgByAFEPwEfSIGQn9XBEAgBUIBfSEFDAELIAUQ2wMgBlcEQCAFQgF8IQUMAQsLIA0gBjcDACAFIQcgDSkDACEGA0ACQCABQgtRDQAgAadBAnRBwPcAajQCACEFIAFCAVEEQCAHENsDIAV8Qu0CfSEFCyAFIAZVDQAgAUIBfCEBIAYgBX0hBgwBCwsgAiAOOQNAIAIgDLk5AzggAiAIuTkDMCACIAu5OQMoIAIgCrk5AyAgAiAJuTkDGCACIAG5OQMIIAIgB7k5AwAgAiAGQgF8uTkDEEEBCyEAIA1BEGokACAACw0AIAAgASACQQEQgQULIQAgASgCBEEFRwRAIAFBBTYCBCAAKAIQIAFBCGoQiQMLC1kCAn8BfiMAQRBrIgMkAEF/IQQCQCAAIAFBABB4IgUQCw0AIAAgA0EMaiAFEMMBDQAgACABQQAgAygCDCACaiIArRCWAkEASA0AIABFIQQLIANBEGokACAECxsAIAEoAiAEQCAAIAFBKGoQiQMgAUEANgIgCwugAQICfwF8AkACfAJAAkACQAJAAkAgABBUIgJBCGoOCgIBBgYGBgYCAwAECyAApyEBDAULIACnQQAQ5gUhAQwECyAAp0HbGGwhAQwDCyAAp0HbGGy3DAELIAJBB0cNAUQAAAAAAAD4fyAAEEkiAyADvUL
 
///////////8Ag0KAgICAgICA+P8AVhsLvSIAQiCIIACFp0HbGGwhAQsgASACcwsHACAAQQFxCxIAIABBCHQgAEEIdnJB//8DcQsuAQF/IAAgACABIAAgAhDHASICIAFBABASIgEQtwEhAyAAIAEQCiAAIAIQESADC1QBAX8gAEEgEC0iAkUEQEEADwsgAkEBNgIAIAJCgICAgMAAQoCAgIAwIAEbNwMYIAIgAkEYajYCECACIAItAAVBAXI6AAUgACgCECACQQMQvAEgAgsKACAAKAIEIABGCzIAAkAgACACIAFBAEEAECIiAhALDQAgAhAgDQAgACACEAogABAoQoCAgIDgACECCyACCwsAIAAgASACEMMBCwwAIABB5MkAQQAQFAuDBAEGfyMAQRBrIggkACABQQA2AgAgAkEANgIAQQIhBiAFKAIIIglBACAJQQBKGyEJA0ACQCAHIAlGBEBBfyEHDAELIAMgBSgCACAHQQN0aiILKAIARgRAIAsoAgQgBEYNAQsgB0EBaiEHDAELCwJAIAdBf0oNAEF/IQYgACIHIAVBCCAFQQRqIAUoAghBAWoQfQR/QX8FIAUgBSgCCCIAQQFqNgIIIAUoAgAgAEEDdGoiACADNgIAIAAgByAEEBc2AgRBAAtBAEgNAAJAIAMgBBC/BSIGBEAgBigCCEUNASAGKAIMIgBB/QBGDQEgByABIAIgAygCECAGKAIAQQN0aigCBCAAIAUQ6wMhBgwCCyAEQRZHBEADQCADKAIsIApKBEAgBiEAQQAhCQJAAkACQCAHIAhBDGogCEEIaiADKAIQIAMoAiggCkECdGooAgBBA3RqKAIEIAQgBRDrAyIGQQFqDgUCAAEBAgELIAIoAgAiBgRAIAEoAgAgCCgCDEYEQCAIKAIIKAIMIAYoAgxGDQILIAFBADYCACACQQA2AgBBAyEGDAILIAEgCCgCDDYCACACIAgoAgg2AgALQQEhCSAAIQYL
 
IApBAWohCiAJDQEMBAsLQQAhBiACKAIADQILQQEhBgwBCyABIAM2AgAgAiAGNgIAQQAhBgsgCEEQaiQAIAYLcwECfyMAQZABayIEJABB4DwhBQJAAkACQAJAIAFBAWoOBQMCAgABAgtBij0hBQwBC0HJPSEFCyAAIARB0ABqIAMQhgEhASAEIAAgBEEQaiACKAIEEIYBNgIEIAQgATYCACAAIAUgBBDQAgsgBEGQAWokAAtoAQJ/IwBBEGsiBSQAIAVBADYCCCAFQgA3AwAgACABIAIgAyAEIAUQ6wMhAQNAIAYgBSgCCE5FBEAgACAFKAIAIAZBA3RqKAIEEBEgBkEBaiEGDAELCyAAIAUoAgAQGCAFQRBqJAAgAQseACABKAIAQQRHBEAgACABQQhqEIkDIAFBBDYCAAsLpQEBBX8jAEEQayIDJABBfyECAkAgACgCFA0AIAAoAgAgACgCBCABQQF0QRBqIANBDGoQswEiBEUEQCAAEIgDDAELIARBEGohBSAAKAIIIQIgAygCDCEGA0AgAkEBSEUEQCAFIAJBAWsiAkEBdGogAiAFai0AADsBAAwBCwsgAEEBNgIQIAAgBDYCBCAAIAZBAXYgAWo2AgxBACECCyADQRBqJAAgAgtUAQJ/IAAgASkDGCACECEgACABKQMAIAIQIQJAIAEoAjwiBEUNACABKAIgIQMDQCADIARPDQEgACADKQMAIAIQISADQQhqIQMgASgCPCEEDAALAAsLGgEBfyABpygCICIDBEAgACADKQMAIAIQIQsLQgEBfyABIAEoAgBBAWsiAjYCAAJAIAJFBEAgASgCBEUNASABQRBqEEYgACABEB8LDwtBlx9BoQ1BxuUCQaEfEAAAC6ACAQR/IAFBKGoQbiABIAKnKAIgIgYtABA2AjggASAGKAIUNgIwIAEgACAGLwEoIAQQSiIIIAYvASpqIAYvAS5qQQEQSkEDdBAtIgA2AiAgAEUEQEF/D
 
wsgASACEA03AxggAxANIQIgASAINgI0IAEgBDYCCCABIAI3AwAgASABKAIgIgcgCEEDdGoiADYCJCABIAAgBi8BKkEDdGo2AjxBACEAIARBACAEQQBKGyEJA0AgACAJRkUEQCAFIABBA3QiB2opAwAQDSECIAcgASgCICIHaiACNwMAIABBAWohAAwBCwsgBCAIIAYvASpqIgAgACAESBshAAN/IAAgBEYEf0EABSAHIARBA3RqQoCAgIAwNwMAIARBAWohBAwBCwsLfAEEfyABpyIGLwEGIQcgAEEYEC0iBUUEQCAAIAIQCkF/DwsgAqciCCgCICEAIAUgBCAHQZkeajEAAIY+AhQgBSADpyIHNgIQIAUgCDYCDCAFIAY2AgggBSAAQQxqEEwgBiAEPgIoIAYgBTYCICAGIAAoAgggB2o2AiRBAAvtAQEEfwJ+IAAoAhAhBQJAIAAgASADEGwiARALRQRAIAJCgICAgAhaBEAgAEGg0AEQaQwCCyAAQRwQLSIERQRAQQAhBAwCCyAEIAKnIgY2AgACQAJAIANBFEcNACAFKAK4ASIHRQ0AIAQgBSgCxAEgBkEBEEogBxECACIFNgIIIAVFDQMgBUEAIAYQSxoMAQsgBCAAIAZBARBKEGoiBjYCCCAGRQ0CCyAEQQxqEG4gBEEuNgIYIARBADYCFCAEIANBFEY6AAUgBEEAOgAEIAEgBBCKAQsgAQwBCyAAIAEQCiAAIAQQGEKAgICA4AALCzsBAX8gACgCECIDIAEgAhDUAiIBRQRAIAAQxgFCgICAgOAADwsgAygCOCABQQJ0ajUCAEKAgICAgH+ECxMAIABCgICAgHCDQoCAgICAf1EL7gEBAX8gAEGYAxBqIgZFBEBBAA8LIAYgADYCACAGQRBqEG4gBkF/NgIIIAYgATYCBCABBEAgBkEYaiABQRBqEEwgBiABLQBuOgBuIAYgASgCvAE2AgwLIAYgAzYCLCAGIAI2Ai
 
AgACAGQYACahCRAiAGQQA2AnAgBkF/NgKYAiAGQZABakH/AUEoEEsaIAZChICAgBA3AsQBIAYgBkHQAWo2AswBIAZCfzcC0AEgBkF/NgLwASAGQoCAgIBwNwK8ASAAIAQQxwEhASAGIAU2AvACIAYgATYC7AIgACAGQfQCahCRAiAGIAU2ApwCIAYLOwAgAJ1EAAAAAAAAAACgRAAAAAAAAPh/IABEAADcwgiyPkNlG0QAAAAAAAD4fyAARAAA3MIIsj7DZhsLFQEBfiAAIAEQjQUhAiAAIAEQCiACC+EKAgp+A38jAEEQayIOJAAgDiACNwMIAkACQAJAAkACQAJAAkACQAJAAkAgAhBUQQdqDg8DAgICAgIABAQEAgICAgECCwJAAkACQAJAAkACQCACpyIQLwEGQQRrDgMBAAQFC0KAgICAMCEDIAAgAhA+IgIQCw0BIA4gACACEPoDIgI3AwggAhALDQEgASgCKCACEI0BIQ8MDQsgDiAAIAIQnQEiAjcDCEKAgICAMCEDIAIQC0UNAQtCgICAgDAhCEKAgICAMCEEQoCAgIAwIQZCgICAgDAhCQwKCyABKAIoIAIQjQEhDwwKCyABKAIoIBApAyAQjAEhDyAAIAIQCgwJC0KAgICAMCEGIAAgASkDCEEBIA5BCGoQ/QMiBRALDQYgACAFECwEQCAAQfLNAEEAEBQMBwsgACADEA0iCyABKQMYEA0QxgIiCRALBEBCgICAgDAhA0KAgICAMCEIDAYLAkAgASkDGBD2AUUEQAJAIABBtBAgCRANIgVBvhUQvQEiAxALBEBCgICAgDAhCAwBCyAAQYzXABBxIggQC0UNAgtCgICAgDAhBCAFIQkMCQsgASkDIBANIQMgASkDIBANIQgLIAAgACABKQMIQQEgDkEIakEAELMFEI0CDQUgACACEL8BIhBBAEgNBSAQBEAgACAOIAIQQA0GIAEoAihB2wAQOxogDikDACIMQgA
 
gDEIAVRshDQNAIAQgDVIEQCAEUEUEQCABKAIoQSwQOxoLIAEoAiggAxCMARogACACIAQQYiIHEAsNCCAAIAQiBUKAgICACFoEfiAFuRAVBSAFCxA+IgoQCwRAQoCAgIAwIQQgCiEGDAsLIAAgASACIAcgChD8AyEHIAAgChAKIAcQCw0IIAVCAXwhBCAAIAFCgICAgCAgByAHEBAbIAkQ+wNFDQEMCAsLQoCAgIAwIQRB3QAhECAMQgFTDQUgASkDGBD2AQ0FIAEoAihBChA7GiABKAIoIAsQjAEaDAULAn4gASkDECIFEBBFBEAgBRANDAELIABCgICAgDBBASAOQQhqQQAQsgULIgQQCw0HIAAgDiAEEEANByABKAIoQfsAEDsaIA4pAwAiBUIAIAVCAFUbIQoDQCAHIApSBEAgACAGEAogACAEIAcQYiIGEAsNCSAAIAIgBhANIgYQngEiBRALDQkgACABIAIgBSAGEPwDIgUQCw0JIAUQEEUEQCAPBEAgASgCKEEsEDsaCyAAIAYQ+gMiBhALBEAgACAFEAoMCwsgASgCKCADEIwBGiABKAIoIAYQjAEaIAEoAihBOhA7GiABKAIoIAgQjAEaQQEhDyAAIAEgBSAJEPsDDQoLIAdCAXwhBwwBCwtB/QAhECAPRQ0EIAEoAhgoAgRB/////wdxRQ0EIAEoAihBChA7GiABKAIoIAsQjAEaDAQLIAIQSb1CgICAgICAgPj/AINCgICAgICAgPj/AFINAkKAgICAICECIA5CgICAgCA3AwgMAgsgACACEAoMBgsgDiAAIAIQ+gMiAjcDCEKAgICAMCEDQoCAgIAwIQhCgICAgDAhBEKAgICAMCEGQoCAgIAwIQkgAhALDQQLIAEoAiggAhCNASEPDAQLIAEoAiggEBA7GkEAIQ8gACAAIAEpAwhBAEEAQQAQsQUQjQINAiAAIAIQCiAAIAQQCiAAIAMQCiAAIAgQCiAAIAkQ
 
CiAAIAYQCgwDC0KAgICAMCEEDAELQoCAgIAwIQNCgICAgDAhCEKAgICAMCEEQoCAgIAwIQkLIAAgAhAKIAAgBBAKIAAgAxAKIAAgCBAKIAAgCRAKIAAgBhAKQX8hDwsgDkEQaiQAIA8LigIBAX8jAEEgayIFJAAgBSAENwMYAkACQAJAIAMQIARAIAAgA0GLASADQQAQEiIEEAsEQCADIQQMAwsgACAEEDoEQCAAIAQgA0EBIAVBGGoQNSEEIAAgAxAKIAQQC0UNAgwDCyAAIAQQCgsgAyEECwJAIAEpAwAiAxAQBEAgBCEDDAELIAUgBDcDCCAFIAUpAxg3AwAgACADIAJBAiAFECIhAyAAIAQQCiADIQQgAxALDQELAkAgAxBUQQdqIgFBDksNAEEBIAF0QYHHAXENAiABQQZHDQAgACADEDpFDQILIAAgAxAKQoCAgIAwIQMMAQsgACAEEApCgICAgOAAIQMLIAVBIGokACADC74CAgJ/BH4jAEEgayIEJABCgICAgOAAIQgCQCAAIARBGGogACABECkiCRBADQACQCAEKQMYIgdCAVMNACAEQgA3AxAgAkECTgRAIAAgBEEQaiADKQMIQgAgByAHEH4NAgsCQAJAIAkgBEEMaiAEQQhqEI4CRQRAIAQpAxAhAQwBCyAEKQMQIgYgBDUCCCIBIAEgBlMbIQEgBCgCDCECA0AgASAGUgRAIAanIQUgBkIBfCEGIAAgAykDABANIAIgBUEDdGopAwAQDUECEN4BRQ0BDAMLCyAEIAE3AxALIAEgByABIAdVGyEGA0AgASAGUQ0CIAAgCSABEGIiBxALDQMgAUIBfCEBIAAgAykDABANIAdBAhDeAUUNAAsLQoGAgIAQIQgMAQtCgICAgBAhCAsgACAJEAogBEEgaiQAIAgL/wUCAn8HfiMAQeAAayIEJABCgICAgDAhByAEQoCAgIAwNwMwIARCgICAgDA3AyggBEKAgICAM
 
DcDICAEQoCAgIAwNwMYIAQgBEHIAGo2AkAgBCAAQS8QMTcDOCAAIARByABqQQAQQhogBCAAEE4iBjcDIEKAgICA4AAhCQJAAkAgBhALDQACQCAAIAIQOgRAIAQgAjcDGAwBCyAAIAIQvwEiBUEASA0BIAVFDQAgBCAAEE4iBjcDKCAGEAsNASAAIARBCGogAhBADQEgBCkDCCIGQgAgBkIAVRshCwNAIAggC1ENASAEIAAgAiAIEGIiBjcDECAGEAsNAgJAAkACQCAGECAEQCAGpy8BBkH+/wNxQQRHDQIgBCAAIAYQPiIGNwMQIAYQC0UNAQwGCyAGEI4BBEAgBCAAIAYQPiIGNwMQIAYQC0UNAQwGCyAGEJsBRQ0BCyAAIAQpAyhBASAEQRBqEP0DIgwQCwRAIAAgBhAKDAULIAAgDBAsDQAgACAEKQMoIAogBhCPARogCkIBfCEKDAELIAAgBhAKCyAIQgF8IQgMAAsACwJAIAMQDSIGECBFDQACQAJAAkAgBqcvAQZBBGsOAgABAgsgACAGEJ0BIQYMAQsgACAGED4hBgsgBhALRQ0AIAAgBhAKDAELIAQCfiAGEI4BBEAgACAEQQRqIAZBCkEAEGMNAiAAQdsaIAQoAgQQ/gEMAQsgBhCbAQRAIAAgBqciBUEAIAUoAgRB/////wdxQQoQsAEQmgEMAQsgBCkDOBANCyICNwMwIAAgBhAKIAIQCw0AIAAQPSIHEAsNACAAIAdBLyABEA0iAUEHEBlBAEgNACAAIARBGGogByABEA0gBCkDOCICEPwDIgEQCw0AIAEQEARAQoCAgIAwIQkMAQsgACAEQRhqIAEgAhD7Aw0AIAQoAkAQNyEJDAELIAQoAkAQRAsgACAHEAogACAEKQM4EAogACAEKQMwEAogACAEKQMoEAogACAEKQMgEAogBEHgAGokACAJC3sCAX8BfiMAQdAAayIEJAAgACAEIAEgAiADELQFIARBAD
 
YCTEKAgICAMCEFAkACQCAEEK0BDQAgBBCBBCIFEAsNACAEKAIQQap/Rg0BIARBwBpBABATCyAAIAUQCiAEIARBEGoQjwJCgICAgOAAIQULIARB0ABqJAAgBQtAAQF/IwBBEGsiAiQAAn8gASAAKAIQRwRAIAIgATYCACAAQf3WACACEBNBfwwBCyAAEK0BCyEAIAJBEGokACAAC+EEAgR/An4jAEEQayIDJAAgACgCACECAkACQAJAAkACQAJAAkACQAJAAkAgACgCECIBQYABag4EAgEFAwALIAFBqn9GDQMgAUHbAEcEQCABQfsARw0FQoCAgIAgIQUgABCtAQ0IIAIQPSIFEAsNCAJAIAAoAhAiAUH9AEYNAANAAkAgAUGBf0YEQCACIAApAyAQOSIBDQEMDAsgAUGDf0cNCiAAKAJMRQ0KIAIgACgCIBAXIQELAkACQCAAEK0BDQAgAEE6EIAEDQAgABCBBCIGEAtFDQELIAIgARARDAsLIAIgBSABIAZBBxAZIQQgAiABEBEgBEEASA0KIAAoAhBBLEcNASAAEK0BDQogACgCTEUgACgCECIBQf0AR3INAAsLIABB/QAQgAQNCAwJC0KAgICAICEFIAAQrQENByACEE4iBRALDQcCQCAAKAIQQd0ARg0AQQAhAQNAIAAQgQQiBhALDQkgAiAFIAEgBkEHEJwBQQBIDQkgACgCEEEsRw0BIAAQrQENCSABQQFqIQEgACgCTEUNACAAKAIQQd0ARw0ACwsgAEHdABCABA0HDAgLIAApAyAQDSEFIAAQrQENBgwHCyAAKQMgIQUgABCtAQ0FDAYLIAAoAiBBAWsiAUECSw0BIAFBA3RBgNwBaikDACEFIAAQrQENBAwFCyAAQczWAEEAEBMMAQsgACgCOCEBIAMgACgCGCIENgIEIAMgASAEazYCACAAQeTWACADEBMLQoCAgIAgIQUMAQsgAEG01gBBABATCyACIAUQCkK
 
AgICA4AAhBQsgA0EQaiQAIAULDgAgACgCECgCjAEpAwgLRwIBfgF/IAEQIEUEQEEADwtBfyEDIAAgAUHEASABQQAQEiICEAsEf0F/BSACEBBFBEAgACACECwPCyAAIAFBABDbAUEARwsLtggCDX8BfiMAQeAAayIGJAACQCACEBBFBEBCgICAgOAAIRAgACAGQdwAaiACEJACIgdFDQEgBigCXCEFA0AgBSAIRwRAAkAgByAIaiwAAEHnAGtBH3ciBEEJS0HLBSAEdkEBcUVyRQRAIARBAnRB1NsBaigCACIEIAlxRQ0BCyAAIAcQNiAAQefOAEEAENACDAQLIAhBAWohCCAEIAlyIQkMAQsLIAAgBxA2C0KAgICA4AAhECAAIAZB3ABqIAEgCUEEdkF/c0EBcRChBCIMRQ0AIAYoAlwhBSMAQeABayIEJAAgBEEAQdwBEEsiA0F/NgI8IANCgYCAgHA3AjQgAyAMNgIgIAMgBSAMajYCHCADIAw2AhggAyAANgJAIAMgCTYCJCADIAlBA3ZBAXE2AjAgAyAJQQF2QQFxNgIsIAMgCUEEdkEBcTYCKCADIABB6wIQ5AIgA0HEAGoiDiAAQesCEOQCIAMgCUH/AXEQDiADQQAQDiADQQAQDiADQQAQHCAJQSBxRQRAIANBCEEGELgBGiADQQQQXSADQQdBdRC4ARoLIAZBEGohCCADQQtBABCqAgJ/AkAgA0EAEOECDQAgA0EMQQAQqgIgA0EKEF0gAygCGC0AAARAIANB8N8BQQAQPAwBCyADKAIMBEAgAxCpAgwBCwJ/IAMoAgRBB2shDyADKAIAQQdqIQlBACEFAkACQANAAkACQAJAAkACQCAKIA9IBH8gCSAKaiIHLQAAIgRBHU8NBSAKIARB4OUBai0AACILaiAPSg0HAkAgBEEPaw4MAAIFBQUFAwQFBQACBQsgBUEBaiEEIAUgDUgEQCAEIQUMBQsgBUH+AUohByAE
 
IgUhDSAHRQ0EQX8FIA0LDAgLIAVBAEwNBiAFQQFrIQUMAgsgBy8AAUECdCALaiELDAELIAcvAAFBA3QgC2ohCwsgCiALaiEKDAELC0GL5gFBn+YBQfoNQbjmARAAAAtBy+YBQZ/mAUH7DUG45gEQAAALQeXmAUGf5gFBiA5BuOYBEAAACyIEQX9MBEAgA0GR4AFBABA8DAELIAMoAgAgAygCNDoAASADKAIAIAQ6AAIgAygCAEEDaiADKAIEQQdrEFsgAygCSCIEIAMoAjRBAWtLBEAgAyADKAJEIAQQhwEaIAMoAgAiBCAELQAAQYABcjoAAAsgDhCVASAIQQA6AAAgBiADKAIENgJYIAMoAgAMAQsgAxCVASAOEJUBIANB3ABqIQcgCEE/aiEFA0AgBy0AACIERSAFIAhNckUEQCAIIAQ6AAAgCEEBaiEIIAdBAWohBwwBCwsgCEEAOgAAIAZBADYCWEEACyEEIANB4AFqJAAgACAMEDYgBEUEQCAGIAZBEGo2AgAgAEGIzwAgBhDQAgwBCyAAIAQgBigCWBDVAiEQIAAgBBAYCyAGQeAAaiQAIBALDgAgACgCECABIAIQ5gELswECBX8BfiABKQJUIgdCOIZCOIenRQRAIAEgB0KAfoNCAYQ3AlQDQCABKAIUIARMBEBBAA8LAn8gASgCECAEQQN0aiIGKAIAIQJBACEFQQAgACABKAIEEKIEIgNFDQAaIAAgACACEKIEIgIEfyAAIAMgAhC9BSEFIAAgAxA2IAIFIAMLEDYgBQsiA0UEQEF/DwsgBiADNgIEIARBAWohBEF/IQIgACADEIYEQX9KDQALCyACC3ABAX9BxgAhAgJAAkACQAJAAkACQAJAAkACQCABEFRBCGoOEAYBBwcHBwcCCAAFAwcHBwgHC0HHAA8LQcgADwsgAacsAAVBAE4NAQtBxQAPC0EbIQIgACABEDoNAwtByQAPC0HKAA8LQcwAIQILIAIL6
 
wMCA38BfiMAQSBrIgYkACABEA0hAQJAAkACQAJAAkADQAJAAkACQCABpyIHLQAFQQRxRQ0AIAAoAhAoAkQgBy8BBkEYbGooAhQiCEUNACAIKAIYIghFDQAgACABIAIgAyAEIAUgCBEqACEHDAELIAAgBiAHIAIQUyIHQX9KDQELIAAgARAKDAULAkAgBwRAIAYtAABBEHEEQCAAQQAgBikDGCIJpyAJEBAbIAQgAyAFEKIDIQcgACAGKQMQEAogACAGKQMYEAogACABEAoMCAsgACAGKQMIEAogBi0AAEECcQ0BIAAgARAKDAMLIAAgARCZAiIBECZFDQELCyAAIAEQCiAEECBFBEAgACADEAogACAFQc3LABB2IQcMBQsgACAGIASnIgggAhBTIgdBf0wNAyAHRQ0CIAYtAABBEHEEQCAAIAYpAxAQCiAAIAYpAxgQCiAAIAMQCiAAIAVB58sAEHYhBwwFCyAAIAYpAwgQCiAGLQAAQQJxRQ0AIAgvAQZBC0cNAQsgACADEAogACAFIAIQ3wEhBwwDCyAAIAQgAiADQoCAgIAwQoCAgIAwQYDAABB1IQcMAQsgACAIIAIgA0KAgICAMEKAgICAMCAFQYfOAHIQlgQhBwsgACADEAoLIAZBIGokACAHC2MBAn8CQCABQoCAgIBwVA0AIAGnIgMvAQYQ9wFFDQAgAygCIC0AEUEIcUUNACADKAIoIgQEQCAAIAStQoCAgIBwhBAKC0EAIQAgAyACQoCAgIBwWgR/IAIQDacFQQALNgIoCwvGAQEDfyABQRxqIQQgAUEYaiEGA0AgBiAEKAIAIgRHBEACQCAEQQJrLwEAIAJHDQAgBEEIayIFLQAFQQF2QQFxIANHDQAgBSAFKAIAQQFqNgIAIAUPCyAEQQRqIQQMAQsLIABBIBAtIgBFBEBBAA8LIABBATYCACAAIAI7AQYgACAALQAFQfwBcSADQQF0QQJxcjoABSAAQQhqIA
 
YQTCABQRBBFCADG2ooAgAhASAAQoCAgIAwNwMYIAAgASACQQN0ajYCECAAC6YCAgV/AX4jAEEQayIGJAACQCACQv////9vWARAIABBmMgAQQAQFAwBCyAAIAZBDGogAhDaAQ0AIAYoAgwiBEGBgARPBEAgAEGlyABBABBBDAELIABBASAEIARBAUkbQQN0EGoiBUUNAAJAAkAgAqciBy8BBiIDQQhHQQAgA0ECRxsNACAHLQAFQQhxRQ0AIAQgBygCKEcNAEEAIQMDQCADIARGDQIgBSADQQN0IgBqIAcoAiQgAGopAwAQDTcDACADQQFqIQMMAAsAC0EAIQMDQCADIARGDQEgACACIAMQeCIIEAsEQCAAIAUgAxCYA0EAIQMMAwUgBSADQQN0aiAINwMAIANBAWohAwwBCwALAAsgASAENgIAIAUhAwsgBkEQaiQAIAMLhQICAn8CfkKAgICA4AAhCQJAIAAQfw0AAkACQCABQoCAgIBwWgRAIAGnIgYtAAVBEHFFBEAgAEHJzABBABAUQoCAgIDgAA8LIAVBAXIhBSAGLwEGIgdBDUYNAiAAKAIQKAJEIAdBGGxqKAIQIgYNAQsgAEGPxABBABAUQoCAgIDgAA8LIAAgASACIAMgBCAFIAYRFQAPCyAGKAIgLQARQQRxBEAgACABQoCAgIAwIAIgAyAEIAUQ4gEPCyAAIAJBARBsIggQCw0AAkAgACABIAggAiADIAQgBRDiASIBQv////9vWARAIAEQC0UNAQsgACAIEAogAQ8LIAAgARAKIAghCQsgCQvQAQIBfwF+AkACQCAAIAGnIgQvABFBA3ZBBnFBkMcAai8BABChASIFEAsEQAwBCwJAIAAgBSAEIAIgAxChBSIBEAsNACAAIAEgBCgCHCICQS8gAhsgBC8BLBCpAyAELwARIgJBEHEEQCAAIAAoAihBkANBwAIgAkEwcUEwRhtqKQMAEFIiBRALDQEgACABQTs
 
gBUECEBkaIAEPCyACQQFxRQ0CIAFBARCuAyAAIAFBO0EAQQBBAhCTAxogAQ8LCyAAIAEQCkKAgICA4AAhAQsgAQsNACAAIAEgAhANEM0FCzUBAn8CQCAAQoCAgIBwVA0AIACnIgQvAQZBDEcNACAEKAIkIAFHDQAgBC4BKiACRiEDCyADC/MDAQ1/IwBBIGsiBSQAIANBACADQQBKGyENQQAhAwNAAkAgAyANRgRAQQAhCgwBCyAFQQA2AhggBUIANwMQIAVCADcDCCAFIAEgA0EMbGoiBygCBDYCDCAFIAcoAgg2AhAgAiADaiEGQX8hCiADQQFqIQMgBygCACEHQX8hCwJAIAZB//8DSw0AAkAgBiAAKAJAIgRJBEAgACgCRCIEIAZBGGxqKAIARQ0BDAILQTMgBkEBaiAEQQNsQQJtEEoQSiIIQQN0IQ4gAEHMAGohBCAAQcgAaiEPA0AgDyAEKAIAIglHBEAgACAJKAIUIA4Q5gEiDEUNAyAIIAAoAkAiBCAEIAhIGyEQA0AgBCAQRwRAIAwgBEEDdGpCgICAgCA3AwAgBEEBaiEEDAELCyAJIAw2AhQgCUEEaiEEDAELCyAAIAAoAkQgCEEYbBDmASIERQ0BIAQgACgCQCIJQRhsakEAIAggCWtBGGwQSxogACAINgJAIAAgBDYCRAsgBCAGQRhsaiIEIAY2AgAgBxDxAUUEQCAAKAI4IAdBAnRqKAIAIgYgBigCAEEBajYCAAsgBCAHNgIEIAQgBSgCDDYCCCAEIAUoAhA2AgwgBCAFKAIUNgIQIAQgBSgCGDYCFEEAIQsLIAtBf0oNAQsLIAVBIGokACAKC08BA38gACgC1AEgASgCFCAAKALIARDRAkECdGohAgNAIAIiAygCACIEQShqIQIgASAERw0ACyADIAEoAig2AgAgACAAKALQAUEBazYC0AELFwAgACgCICgCFCAALwEGQZkeai0AAHYLGAAgACAAQQh2
 
QQdxIgBxIABBf3MgAXFyC7IIAQx/IwBBEGsiByQAAkACQANAIAEoAhAiAyADKAIYIAJxQX9zIg5BAnRqKAIAIQVBACEEIAMQJyELA0AgBQRAIAcgCyAFQQFrIgVBA3RqIgM2AgwgAygCACEGIAIgAygCBEYEQEEAIQkgBkGAgIAgcUUNBUF/IQkgACABIAdBDGoQ4wENBSABKAIQIQYCQCAEBEAgBhAnIAQgC2tBA3VBACAEG0EDdGoiAiACKAIAQYCAgGBxIAcoAgwoAgBB////H3FyNgIAIAcoAgwhBAwBCyAOQQJ0IAZqIAcoAgwiBCgCAEH///8fcTYCAAtBASEJIAYgBigCJEEBajYCJCAAKAIQIAEoAhQgBUEDdGoiAyAEKAIAQRp2EM8FIAAgBygCDCgCBBARIAcoAgwiAiACKAIAQf///x9xNgIAIAcoAgxBADYCBCADQoCAgIAwNwMAIAYoAiQiAkEISA0FIAIgBigCIEEBdkkNBSAAIQVBACECAkACQAJAIAEoAhAiCC0AEEUEQEECIAgoAiAgCCgCJGsQSiINIAgoAhxLDQEgCCgCGEEBaiEAA0AgACIDQQF2IgAgDU8NAAsCQCAFIAMgDRDkARAtIgBFDQAgA0EBayELIAAgAxC9AiEAIAhBCGoQRiAAIAhBMBAjIgRBCGogBSgCEEHQAGoQTCAEIANBAnQiAGtBACAAEEsaIAhBMGohACAEQTBqIQogASgCFCEGA0AgBCgCICIDIAxLBEAgACgCBCIDBEAgCiADNgIEIAogACgCAEGAgIBgcSIOIAooAgBB////H3FyNgIAIAogDiAEIAAoAgQgC3FBf3NBAnRqIgMoAgBB////H3FyNgIAIAMgAkEBaiIDNgIAIAYgAkEDdGogBiAMQQN0aikDADcDACAKQQhqIQogAyECCyAMQQFqIQwgAEEIaiEADAELCyACIAMgBCgCJGtHDQMgBEEANgIkIAQgDTYCH
 
CAEIAs2AhggBCACNgIgIAEgBDYCECAFIAgQvwIQGCAFIAEoAhQgDUEDdBCaAiIARQ0AIAEgADYCFAsMAwtBisIAQaENQa0jQZnCABAAAAtBrMIAQaENQbEjQZnCABAAAAtBxsIAQaENQdYjQZnCABAAAAsMBQUgBkH///8fcSEFIAMhBAwCCwALC0EBIQkgAS0ABSIDQQRxRQ0CIANBCHFFDQEgACAHQQhqIAIQsgFFDQIgBygCCCIFIAEoAigiBE8NAiABLwEGIgNBCEYgA0ECRnJFBEBBACEJDAMLIARBAWsgBUYEQCAAIAEoAiQgBUEDdGopAwAQCiABIAU2AigMAwsgACABEKADRQ0AC0F/IQkMAQsgACgCECgCRCABLwEGQRhsaigCFCIDRQ0AIAMoAggiA0UNACAAIAGtQoCAgIBwhCACIAMREwAhCQsgB0EQaiQAIAkLBABBAAvuBAIDfwF+IwBBEGsiCCQAAkACQAJAAkACQCABLQAFIgdBBHFFDQAgAS8BBiIJQQJGBEACQCAHQQhxBEACQCACEFwEQCAIIAIQeSIJNgIMIAkgASgCKEcNASAHQQFxRQ0GIAZBgDBxDQEgBkEAEJMEQQdHDQEgACABIAMQDSAGEJcEIQcMCQsgACAIQQxqIAIQsgFFDQQLQX8hByAAIAEQoANFDQEMBwsgACAIQQxqIAIQsgFFDQILIAAgCEEIaiABKAIUIgkpAwAQxAEaIAgoAgxBAWoiByAIKAIITQ0BIAEoAhAQJy0AA0EIcUUEQCAAIAZBMBDfASEHDAYLIAAgCSAHQQBOBH4gB60FIAe4EBULEB4MAQsgCUEVa0H//wNxQQhNBEAgACACEKUDIgdFDQEgB0EASA0EIAAgBkGGwQAQdiEHDAULIAZBgIAIcQ0AIAAoAhAoAkQgCUEYbGooAhQiB0UNACABrUKAgICAcIQhCiAHKAIMIgcEQCAAIAogAiADIAQgBSAGIAcRIw
 
AhBwwFCyAAIAoQnwEiB0EASA0DIAdFDQELIAEtAAVBAXENAQsgACAGQaIXEHYhBwwCCyAAIAEgAiAGQQVxQRByIAZBB3EgBkGAMHEiAhsQgAEiAUUNACACBEAgAUEANgIAAkAgBkGAEHFFDQAgACAEEDpFDQAgASAEEA0+AgALIAFBADYCBEEBIQcgBkGAIHFFDQIgACAFEDpFDQIgASAFEA0+AgQMAgsCQCAGQYDAAHEEQCABIAMQDTcDAAwBCyABQoCAgIAwNwMAC0EBIQcMAQtBfyEHCyAIQRBqJAAgBwuSAQIDfwF+IAEoAhQiBSkDACIHQv////8PViABKAIoIgZBAWoiBCAHp01yRQRAIAEoAhAQJy0AA0EIcUUEQCAAIAIQCiAAIANBMBDfAQ8LIAUgBK03AwALAkAgBCABKAIgTQ0AIAAgASAEENMFRQ0AIAAgAhAKQX8PCyABKAIkIAZBA3RqIAI3AwAgASAENgIoQQELCwAgACABQQEQoAQLwwEBA38gAUKAgICAcFQEQEEADwsgAaciAi8BBkEpRgRAIwBBEGsiBCQAAkACQCAAIARBCGogAUHiABCEASICRQ0AIAQpAwgiARAQBEAgACACKQMAEJkEIQMMAgsgACABIAIpAwhBASACEDUiARALDQAgACABECwiA0UEQEEAIQMMAgsgACACKQMAEJ8BIgJBAEgNACACRQ0BIABBodgAQQAQFAtBfyEDCyAEQRBqJAAgAw8LIAIgAi0ABUH+AXE6AAVBAQsuAQF/IACnKQMgIgBCgICAgHCDQoCAgICQf1EEfyAApygCBEH/////B3EFQQALCwoAIAAoAgBBfHELMwAgACACQQEQ/AEiAEUEQEKAgICA4AAPCyAAQRBqIAEgAkEBdBAjGiAArUKAgICAkH+EC2UCAn8BfkEEIQJCgICAgCAhBAJAAkACQAJAAkACQCABEFQiA0EIag4KAwIFBQUFBQUEAQALIAN
 
BB0YNAwwEC0EGIQIMAgtBBSECDAELQQchAgsgACgCKCACQQN0aikDACEECyAEC18BAXwgACkCBEL//////////z9YBEAgASABKwMIRAAAAAAAAPA/IAAoAgC3IgKjoDkDCCABIAErAxAgACgCBCIAQf////8HcSAAQR92IgB0IABrQRFquCACo6A5AxALC+cGAQV/AkACQAJAAkACQAJAAkACQAJAIAEtAARBD3EOBgABBAIDBgULIAAgASgCECIHIAIRAwAgBxAnIQUDQCAHKAIgIANKBEACQCAFKAIERQ0AIAEoAhQgA0EDdGohBAJAAkACQAJAIAUoAgBBHnZBAWsOAwABAgMLIAQoAgAiBgRAIAAgBiACEQMACyAEKAIEIgRFDQMgACAEIAIRAwAMAwsgBCgCACIELQAFQQFxRQ0CIAAgBCACEQMADAILIAAgBBCbBCACEQMADAELIAAgBCkDACACECELIANBAWohAyAFQQhqIQUMAQsLIAEvAQYiA0EBRg0GIAAoAkQgA0EYbGooAgwiA0UNBiAAIAGtQoCAgIBwhCACIAMREQAPCwNAIAEoAjggA0oEQCAAIAEoAjQgA0EDdGopAwAgAhAhIANBAWohAwwBCwsgASgCMCIBRQ0FIAAgASACEQMADwsgAS0ABUEBcUUNBSAAIAEoAhApAwAgAhAhDwsgASgCIARAIAAgAUEoaiACEPADCyAAIAEpAxAgAhAhIAAgASkDGCACECEPCyABKAIsIgFFDQIgACABIAIRAwAPCxABAAsgAUHkAWohAyABQeABaiEHA0AgByADKAIAIgVHBEAgBUEIayEDQQAhBANAIAMoAiAgBEoEQAJAIAMoAhwgBEEUbGoiBigCCA0AIAYoAgQiBkUNACAAIAYgAhEDAAsgBEEBaiEEDAELCyAAIAMpA0AgAhAhIAAgAykDSCACECEgACADKQNgIAIQISAAIAMpA2ggAhAhIAVBBGohAwwB
 
CwsgACABKQPAASACECEgACABKQPIASACECEgACABKQOwASACECEgACABKQO4ASACECEgACABKQOoASACECFBACEDA0AgA0EIRgRAQQAhAwNAIAAoAkAgA0oEQCAAIAEoAiggA0EDdGopAwAgAhAhIANBAWohAwwBCwsgACABKQOYASACECEgACABKQOgASACECEgACABKQNQIAIQISAAIAEpA0AgAhAhIAAgASkDSCACECEgACABKQM4IAIQISAAIAEpAzAgAhAhIAEoAiQiAQRAIAAgASACEQMACwUgACABIANBA3RqKQNYIAIQISADQQFqIQMMAQsLCw8LQbM5QaENQY4sQcg5EAAAC4kCAgF+An8jAEEwayIEJABBoRkhBUKAgICA4AAhAwJAAkACQAJAAkACQAJAAkACQAJAAkACQCABEFRBCGoOEAUGCQkJCQoEAAECAwkJCwgJCyAEIAE+AgAgBEEQakEgQZ4ZIAQQVRogBEEQaiEFDAkLIABBA0ECIAGnGxAxIQMMCQsgAEEBEDEhAwwICyAAQcUAEDEhAwwHCyAAIAFBABCbAyIBEAsEQCABIQMMBwsgACABIAIQoAQhAyAAIAEQCgwGCyACRQ0BCyABEA0hAwwECyAAQbUZQQAQFAwDCyAAIAEQSUEKQQBBABDJAiEDDAILQdUZIQULIAAgBRBxIQMLIARBMGokACADC6YEAQl/AkACQAJAIAJCgICAgHCDQoCAgICQf1IEQCAAIAIQKyICEAtFDQEMAgsgAhANIQILIAKnIgooAgQiBUH/////B3EhBgJAIAVBAE4EQCAKQRBqIQVBACEDA0AgBCAGRkUEQCADIAQgBWotAABBB3ZqIQMgBEEBaiEEDAELCyADRQRAIAFFDQQgASAGNgIAIAUPCyAAIAMgBmpBABD8ASIHRQ0CQQAhAyAHQRBqIgshBANAIAMgBkYNAgJ/IAMgBWosAAAiCEEATgRAIAQgCDoAA
 
CAEQQFqDAELIAQgCEE/cUGAAXI6AAEgBCAIQcABcUEGdkHAAXI6AAAgBEECagshBCADQQFqIQMMAAsACyAAIAZBA2xBABD8ASIHRQ0BQQAhBSAHQRBqIgshBANAIAUiCCAGTg0BIAhBAWohBSAKIAhBAXRqLwEQIglB/wBNBEAgBCAJOgAAIARBAWohBAUCQCADIAUgBk5yIAlBgPgDcUGAsANHcg0AIAogBUEBdGovARAiDEGA+ANxQYC4A0cNACAJQQp0QYD4P3EgDEH/B3FyQYCABGohCSAIQQJqIQULIAQgCRDjAiAEaiEECwwACwALIARBADoAACAHIAQgB2tBEGtB/////wdxrSAHKQIEQoCAgIB4g4Q3AgQgACACEAogAQRAIAEgBygCBEH/////B3E2AgALIAsPCyABRQRAQQAPC0EAIQUgAUEANgIACyAFCyUCAX8BfiAAIAEQMSIDEAtFBEAgACADELcBIQIgACADEAoLIAILDAAgASAAKAIMEQQACz0BAX8gASABKAIAIgJBAWs2AgAgAkEBTARAIAEpAgRCgICAgICAgIDAAFoEQCAAIAEQqwMPCyAAIAEQHwsLVQECfyMAQRBrIgIkACAAKAIQIQACfwJAIAJBDGogARDoBUUNACACKAIMIgNBAEgNACAAIAEQpAQgAxCTAQwBCyAAIAFBARDUAgshASACQRBqJAAgAQtcAQN/IABB4AFqIQQgACgC5AEhAwNAIAQgAyICRwRAIAIoAgQhAwJAAkACQCABDgMCAAEECyACLABMDQMMAQsgAikCTEIghkI4h6cNAgsgACACQQhrEOoFDAELCwu8AQEDfwJAIAEgAigCECIDBH8gAwVBACEDIAIQ8AUNASACKAIQCyACKAIUIgVrSwRAIAIgACABIAIoAiQRAQAPCwJ/IAIsAEtBf0oEQCABIQMDQCABIAMiBEUNAhogACAEQQFrIgNqLQAAQQpHDQALIAIgAC
 
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
 
+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
 
CIp0H//wFxIgetQjCGhCIJEIACQQBMBEAgASAKIAMgCRCAAgRAIAEhBAwCCyAFQfAAaiABIAJCAEIAEDIgBSkDeCECIAUpA3AhBAwBCyAGBH4gAQUgBUHgAGogASAKQgBCgICAgICAwLvAABAyIAUpA2giCkIwiKdB+ABrIQYgBSkDYAshBCAHRQRAIAVB0ABqIAMgCUIAQoCAgICAgMC7wAAQMiAFKQNYIglCMIinQfgAayEHIAUpA1AhAwsgCUL///////8/g0KAgICAgIDAAIQhCSAKQv///////z+DQoCAgICAgMAAhCEKIAYgB0oEQANAAn4gCiAJfSADIARWrX0iC0IAWQRAIAsgBCADfSIEhFAEQCAFQSBqIAEgAkIAQgAQMiAFKQMoIQIgBSkDICEEDAULIAtCAYYgBEI/iIQMAQsgCkIBhiAEQj+IhAshCiAEQgGGIQQgBkEBayIGIAdKDQALIAchBgsCQCAKIAl9IAMgBFatfSIJQgBTBEAgCiEJDAELIAkgBCADfSIEhEIAUg0AIAVBMGogASACQgBCABAyIAUpAzghAiAFKQMwIQQMAQsgCUL///////8/WARAA0AgBEI/iCEBIAZBAWshBiAEQgGGIQQgASAJQgGGhCIJQoCAgICAgMAAVA0ACwsgCEGAgAJxIQcgBkEATARAIAVBQGsgBCAJQv///////z+DIAZB+ABqIAdyrUIwhoRCAEKAgICAgIDAwz8QMiAFKQNIIQIgBSkDQCEEDAELIAlC////////P4MgBiAHcq1CMIaEIQILIAAgBDcDACAAIAI3AwggBUGAAWokAAuhBAIEfgJ/AkAgAb0iBEIBhiIDUCAEQv///////////wCDQoCAgICAgID4/wBWckUEQCAAvSIFQjSIp0H/D3EiBkH/D0cNAQsgACABoiIAIACjDwsCfgJAIAMgBUIBhiICVARAIARCNIinQf8PcSEHIAZFBEAgBUIMhiI
 
CQgBTBEBBACEGDAMLQX8hBgNAIAJCAYYiAkIAUw0DIAZBAWshBgwACwALIAVC/////////weDQoCAgICAgIAIhAwCCyAARAAAAAAAAAAAoiAAIAIgA1EbDwsgBUEBIAZrrYYLIQICfgJAIAdFBEAgBEIMhiIDQgBTBEBBACEHDAILQX8hBwNAIANCAYYiA0IAUw0CIAdBAWshBwwACwALIARC/////////weDQoCAgICAgIAIhAwBCyAEQQEgB2uthgshBCAGIAdKBEADQAJAIAIgBH0iA0IAUw0AIAMiAkIAUg0AIABEAAAAAAAAAACiDwsgAkIBhiECIAZBAWsiBiAHSg0ACyAHIQYLAkAgAiAEfSIDQgBTDQAgAyICQgBSDQAgAEQAAAAAAAAAAKIPCwJAIAJC/////////wdWBEAgAiEDDAELA0AgBkEBayEGIAJCgICAgICAgARUIQcgAkIBhiIDIQIgBw0ACwsgBUKAgICAgICAgIB/gyECIAZBAU4EfiADQoCAgICAgIAIfSAGrUI0hoQFIANBASAGa62ICyAChL8LiwwBBn8gACABaiEFAkACQCAAKAIEIgJBAXENACACQQNxRQ0BIAAoAgAiAiABaiEBAkAgACACayIAQfinBCgCAEcEQCACQf8BTQRAIAAoAggiBCACQQN2IgJBA3RBjKgEakYaIAAoAgwiAyAERw0CQeSnBEHkpwQoAgBBfiACd3E2AgAMAwsgACgCGCEGAkAgACAAKAIMIgNHBEAgACgCCCICQfSnBCgCAEkaIAIgAzYCDCADIAI2AggMAQsCQCAAQRRqIgIoAgAiBA0AIABBEGoiAigCACIEDQBBACEDDAELA0AgAiEHIAQiA0EUaiICKAIAIgQNACADQRBqIQIgAygCECIEDQALIAdBADYCAAsgBkUNAgJAIAAgACgCHCIEQQJ0QZSqBGoiAigCAEYEQCACIAM2AgAgAw0BQeinBEHopwQo
 
AgBBfiAEd3E2AgAMBAsgBkEQQRQgBigCECAARhtqIAM2AgAgA0UNAwsgAyAGNgIYIAAoAhAiAgRAIAMgAjYCECACIAM2AhgLIAAoAhQiAkUNAiADIAI2AhQgAiADNgIYDAILIAUoAgQiAkEDcUEDRw0BQeynBCABNgIAIAUgAkF+cTYCBCAAIAFBAXI2AgQgBSABNgIADwsgBCADNgIMIAMgBDYCCAsCQCAFKAIEIgJBAnFFBEAgBUH8pwQoAgBGBEBB/KcEIAA2AgBB8KcEQfCnBCgCACABaiIBNgIAIAAgAUEBcjYCBCAAQfinBCgCAEcNA0HspwRBADYCAEH4pwRBADYCAA8LIAVB+KcEKAIARgRAQfinBCAANgIAQeynBEHspwQoAgAgAWoiATYCACAAIAFBAXI2AgQgACABaiABNgIADwsgAkF4cSABaiEBAkAgAkH/AU0EQCAFKAIIIgQgAkEDdiICQQN0QYyoBGpGGiAEIAUoAgwiA0YEQEHkpwRB5KcEKAIAQX4gAndxNgIADAILIAQgAzYCDCADIAQ2AggMAQsgBSgCGCEGAkAgBSAFKAIMIgNHBEAgBSgCCCICQfSnBCgCAEkaIAIgAzYCDCADIAI2AggMAQsCQCAFQRRqIgQoAgAiAg0AIAVBEGoiBCgCACICDQBBACEDDAELA0AgBCEHIAIiA0EUaiIEKAIAIgINACADQRBqIQQgAygCECICDQALIAdBADYCAAsgBkUNAAJAIAUgBSgCHCIEQQJ0QZSqBGoiAigCAEYEQCACIAM2AgAgAw0BQeinBEHopwQoAgBBfiAEd3E2AgAMAgsgBkEQQRQgBigCECAFRhtqIAM2AgAgA0UNAQsgAyAGNgIYIAUoAhAiAgRAIAMgAjYCECACIAM2AhgLIAUoAhQiAkUNACADIAI2AhQgAiADNgIYCyAAIAFBAXI2AgQgACABaiABNgIAIABB+KcEKAIARw0BQeynBCABN
 
gIADwsgBSACQX5xNgIEIAAgAUEBcjYCBCAAIAFqIAE2AgALIAFB/wFNBEAgAUEDdiICQQN0QYyoBGohAQJ/QeSnBCgCACIDQQEgAnQiAnFFBEBB5KcEIAIgA3I2AgAgAQwBCyABKAIICyECIAEgADYCCCACIAA2AgwgACABNgIMIAAgAjYCCA8LQR8hAiAAQgA3AhAgAUH///8HTQRAIAFBCHYiAiACQYD+P2pBEHZBCHEiBHQiAiACQYDgH2pBEHZBBHEiA3QiAiACQYCAD2pBEHZBAnEiAnRBD3YgAyAEciACcmsiAkEBdCABIAJBFWp2QQFxckEcaiECCyAAIAI2AhwgAkECdEGUqgRqIQcCQAJAQeinBCgCACIEQQEgAnQiA3FFBEBB6KcEIAMgBHI2AgAgByAANgIAIAAgBzYCGAwBCyABQQBBGSACQQF2ayACQR9GG3QhAiAHKAIAIQMDQCADIgQoAgRBeHEgAUYNAiACQR12IQMgAkEBdCECIAQgA0EEcWoiB0EQaigCACIDDQALIAcgADYCECAAIAQ2AhgLIAAgADYCDCAAIAA2AggPCyAEKAIIIgEgADYCDCAEIAA2AgggAEEANgIYIAAgBDYCDCAAIAE2AggLC58IAQt/IABFBEAgARChAg8LIAFBQE8EQEGEpwRBMDYCAEEADwsCf0EQIAFBC2pBeHEgAUELSRshBiAAQQhrIgUoAgQiCUF4cSEEAkAgCUEDcUUEQEEAIAZBgAJJDQIaIAZBBGogBE0EQCAFIQIgBCAGa0HEqwQoAgBBAXRNDQILQQAMAgsgBCAFaiEHAkAgBCAGTwRAIAQgBmsiA0EQSQ0BIAUgCUEBcSAGckECcjYCBCAFIAZqIgIgA0EDcjYCBCAHIAcoAgRBAXI2AgQgAiADEPQFDAELIAdB/KcEKAIARgRAQfCnBCgCACAEaiIEIAZNDQIgBSAJQQFxIAZyQQJyNgIEIAUgBmoiAyAEIA
 
ZrIgJBAXI2AgRB8KcEIAI2AgBB/KcEIAM2AgAMAQsgB0H4pwQoAgBGBEBB7KcEKAIAIARqIgMgBkkNAgJAIAMgBmsiAkEQTwRAIAUgCUEBcSAGckECcjYCBCAFIAZqIgQgAkEBcjYCBCADIAVqIgMgAjYCACADIAMoAgRBfnE2AgQMAQsgBSAJQQFxIANyQQJyNgIEIAMgBWoiAiACKAIEQQFyNgIEQQAhAkEAIQQLQfinBCAENgIAQeynBCACNgIADAELIAcoAgQiA0ECcQ0BIANBeHEgBGoiCiAGSQ0BIAogBmshDAJAIANB/wFNBEAgBygCCCIEIANBA3YiAkEDdEGMqARqRhogBCAHKAIMIgNGBEBB5KcEQeSnBCgCAEF+IAJ3cTYCAAwCCyAEIAM2AgwgAyAENgIIDAELIAcoAhghCwJAIAcgBygCDCIIRwRAIAcoAggiAkH0pwQoAgBJGiACIAg2AgwgCCACNgIIDAELAkAgB0EUaiIEKAIAIgINACAHQRBqIgQoAgAiAg0AQQAhCAwBCwNAIAQhAyACIghBFGoiBCgCACICDQAgCEEQaiEEIAgoAhAiAg0ACyADQQA2AgALIAtFDQACQCAHIAcoAhwiA0ECdEGUqgRqIgIoAgBGBEAgAiAINgIAIAgNAUHopwRB6KcEKAIAQX4gA3dxNgIADAILIAtBEEEUIAsoAhAgB0YbaiAINgIAIAhFDQELIAggCzYCGCAHKAIQIgIEQCAIIAI2AhAgAiAINgIYCyAHKAIUIgJFDQAgCCACNgIUIAIgCDYCGAsgDEEPTQRAIAUgCUEBcSAKckECcjYCBCAFIApqIgIgAigCBEEBcjYCBAwBCyAFIAlBAXEgBnJBAnI2AgQgBSAGaiIDIAxBA3I2AgQgBSAKaiICIAIoAgRBAXI2AgQgAyAMEPQFCyAFIQILIAILIgIEQCACQQhqDwsgARChAiIFRQRAQQAPCyAFIABBfEF4IAB
 
BBGsoAgAiAkEDcRsgAkF4cWoiAiABIAEgAksbECMaIAAQ6QEgBQvYAwICfgJ/IwBBIGsiBCQAAkAgAUL///////////8AgyIDQoCAgICAgMCAPH0gA0KAgICAgIDA/8MAfVQEQCABQgSGIABCPIiEIQMgAEL//////////w+DIgBCgYCAgICAgIAIWgRAIANCgYCAgICAgIDAAHwhAgwCCyADQoCAgICAgICAQH0hAiAAQoCAgICAgICACIVCAFINASACIANCAYN8IQIMAQsgAFAgA0KAgICAgIDA//8AVCADQoCAgICAgMD//wBRG0UEQCABQgSGIABCPIiEQv////////8Dg0KAgICAgICA/P8AhCECDAELQoCAgICAgID4/wAhAiADQv///////7//wwBWDQBCACECIANCMIinIgVBkfcASQ0AIARBEGogACABQv///////z+DQoCAgICAgMAAhCICIAVBgfcAaxByIAQgACACQYH4ACAFaxDWAiAEKQMIQgSGIAQpAwAiAEI8iIQhAiAEKQMQIAQpAxiEQgBSrSAAQv//////////D4OEIgBCgYCAgICAgIAIWgRAIAJCAXwhAgwBCyAAQoCAgICAgICACIVCAFINACACQgGDIAJ8IQILIARBIGokACACIAFCgICAgICAgICAf4OEvwuCEQIFfwt+IwBBwAFrIgUkACAEQv///////z+DIRIgAkL///////8/gyEMIAIgBIVCgICAgICAgICAf4MhESAEQjCIp0H//wFxIQcCQAJAAkAgAkIwiKdB//8BcSIJQQFrQf3/AU0EQCAHQQFrQf7/AUkNAQsgAVAgAkL///////////8AgyIKQoCAgICAgMD//wBUIApCgICAgICAwP//AFEbRQRAIAJCgICAgICAIIQhEQwCCyADUCAEQv///////////wCDIgJCgICAgICAwP//AFQgAkKAgICAgIDA//8AURtFBEAgBEKA
 
gICAgIAghCERIAMhAQwCCyABIApCgICAgICAwP//AIWEUARAIAMgAkKAgICAgIDA//8AhYRQBEBCACEBQoCAgICAgOD//wAhEQwDCyARQoCAgICAgMD//wCEIRFCACEBDAILIAMgAkKAgICAgIDA//8AhYRQBEBCACEBDAILIAEgCoRQDQIgAiADhFAEQCARQoCAgICAgMD//wCEIRFCACEBDAILIApC////////P1gEQCAFQbABaiABIAwgASAMIAxQIgYbeSAGQQZ0rXynIgZBD2sQckEQIAZrIQYgBSkDuAEhDCAFKQOwASEBCyACQv///////z9WDQAgBUGgAWogAyASIAMgEiASUCIIG3kgCEEGdK18pyIIQQ9rEHIgBiAIakEQayEGIAUpA6gBIRIgBSkDoAEhAwsgBUGQAWogEkKAgICAgIDAAIQiFEIPhiADQjGIhCICQoTJ+c6/5ryC9QAgAn0iBBC0ASAFQYABakIAIAUpA5gBfSAEELQBIAVB8ABqIAUpA4gBQgGGIAUpA4ABQj+IhCIEIAIQtAEgBUHgAGogBEIAIAUpA3h9ELQBIAVB0ABqIAUpA2hCAYYgBSkDYEI/iIQiBCACELQBIAVBQGsgBEIAIAUpA1h9ELQBIAVBMGogBSkDSEIBhiAFKQNAQj+IhCIEIAIQtAEgBUEgaiAEQgAgBSkDOH0QtAEgBUEQaiAFKQMoQgGGIAUpAyBCP4iEIgQgAhC0ASAFIARCACAFKQMYfRC0ASAGIAkgB2tqIQYCfkIAIAUpAwhCAYYgBSkDAEI/iIRCAX0iCkL/////D4MiBCACQiCIIgt+Ig4gCkIgiCIKIAJC/////w+DIg9+fCICQiCIIAIgDlStQiCGhCAKIAt+fCACQiCGIgsgBCAPfnwiAiALVK0gAiACIAQgA0IRiEL/////D4MiDn4iDyAKIANCD4ZCgID+/w+DIg1+fCILQiCGIhAgBCANfnwgEFStI
 
AogDn4gCyAPVK1CIIYgC0IgiIR8fHwiAlatfHwgAkIAUq18fSILQv////8PgyIOIAR+Ig8gCiAOfiINIAQgC0IgiCIQfnwiC0IghnwiDiAPVK0gCiAQfiALIA1UrUIghiALQiCIhHx8IA5CACACfSICQiCIIgsgBH4iDyACQv////8PgyINIAp+fCICQiCGIhAgBCANfnwgEFStIAogC34gAiAPVK1CIIYgAkIgiIR8fHwiAiAOVK18IAJCAn0iDyACVK18QgF9IgtC/////w+DIgIgDEIChiABQj6IhEL/////D4MiBH4iDiABQh6IQv////8PgyIKIAtCIIgiC358Ig0gDlStIA0gDSAPQiCIIg4gDEIeiEL//+//D4NCgIAQhCIMfnwiDVatfCALIAx+fCACIAx+IhMgBCALfnwiECATVK1CIIYgEEIgiIR8IA0gDSAQQiCGfCINVq18IA0gDSAKIA5+IhMgD0L/////D4MiDyAEfnwiECATVK0gECAQIAIgAUIChkL8////D4MiE358IhBWrXx8Ig1WrXwgDSALIBN+IgsgDCAPfnwiDCAEIA5+fCIEIAIgCn58IgJCIIggAiAEVK0gCyAMVq0gBCAMVK18fEIghoR8IgQgDVStfCAEIAQgECAOIBN+IgwgCiAPfnwiCkIgiCAKIAxUrUIghoR8IgogEFStIAogAkIghnwgClStfHwiBFatfCICQv////////8AWARAIAFCMYYgBEIgiCIBIANC/////w+DIgp+Ig0gBEL/////D4MiDCADQiCIIgt+fCIOQiCGIhAgCiAMfnwiDyAQVK19IA9CAFKtfSACQv////8PgyAKfiAMIBJC/////w+DfnwgASALfnwgDSAOVq1CIIYgDkIgiIR8IAQgFEIgiH4gAyACQiCIfnwgAiALfnwgASASfnxCIIZ8fSESIAZBAWshBkIAIA99DAELIARCIYghDCABQjCGIAJCP4YgBE
 
IBiIQiBEL/////D4MiASADQiCIIgp+Ig8gDCACQh+GhCINQv////8PgyIQIANC/////w+DIgx+fCILQiCGIhMgASAMfnwiDiATVK19IA5CAFKtfSAEIBRCIIh+IAMgAkIhiH58IAJCAYgiAiAKfnwgDSASfnxCIIYgCiAQfiACQv////8PgyAMfnwgASASQv////8Pg358IAsgD1StQiCGIAtCIIiEfHx9IRJCACAOfQshASAGQYCAAU4EQCARQoCAgICAgMD//wCEIRFCACEBDAELIAZB//8AaiEHIAZBgYB/TARAAkAgBw0AIAQgAUIBhiADViASQgGGIAFCP4iEIgEgFFYgASAUURutfCIBIARUrSACQv///////z+DfCICQoCAgICAgMAAg1ANACACIBGEIREMAgtCACEBDAELIAQgAUIBhiADWiASQgGGIAFCP4iEIgEgFFogASAUURutfCIBIARUrSACQv///////z+DfCAHrUIwhnwgEYQhEQsgACABNwMAIAAgETcDCCAFQcABaiQADwsgAEIANwMAIABCgICAgICA4P//ACARIAIgA4RQGzcDCCAFQcABaiQAC8QBAgF/An5BfyEDAkAgAEIAUiABQv///////////wCDIgRCgICAgICAwP//AFYgBEKAgICAgIDA//8AURsNAEEAIAJC////////////AIMiBUKAgICAgIDA//8AViAFQoCAgICAgMD//wBRGw0AIAAgBCAFhIRQBEBBAA8LIAEgAoNCAFkEQEEAIAEgAlMgASACURsNASAAIAEgAoWEQgBSDwsgAEIAUiABIAJVIAEgAlEbDQAgACABIAKFhEIAUiEDCyADC9wyAxV/B34BfCMAQRBrIhEkACMAQaABayIOJAAgDkEQakEAQZABEEsaIA5BfzYCXCAOIAA2AjwgDkF/NgIYIA4gADYCFCAOQRBqEKoEIA5BEGohAiMAQTBrIg0kAEHgowQoAgA
 
hEEHUowQoAgAhDwNAAn8gAigCBCIAIAIoAmhJBEAgAiAAQQFqNgIEIAAtAAAMAQsgAhBaCyIFEP0FDQALQQEhAAJAAkAgBUEraw4DAAEAAQtBf0EBIAVBLUYbIQAgAigCBCIEIAIoAmhJBEAgAiAEQQFqNgIEIAQtAAAhBQwBCyACEFohBQsCQAJAAkADQCAGQYmjBGosAAAgBUEgckYEQAJAIAZBBksNACACKAIEIgQgAigCaEkEQCACIARBAWo2AgQgBC0AACEFDAELIAIQWiEFCyAGQQFqIgZBCEcNAQwCCwsgBkEDRwRAIAZBCEYNASAGQQRJDQIgBkEIRg0BCyACKAJoIgQEQCACIAIoAgRBAWs2AgQLIAZBBEkNAANAIAQEQCACIAIoAgRBAWs2AgQLIAZBAWsiBkEDSw0ACwsjAEEQayICJAACfiAAskMAAIB/lLwiBEH/////B3EiAEGAgIAEa0H////3B00EQCAArUIZhkKAgICAgICAwD98DAELIAStQhmGQoCAgICAgMD//wCEIABBgICA/AdPDQAaQgAgAEUNABogAiAArUIAIABnIgBB0QBqEHIgAikDACEWIAIpAwhCgICAgICAwACFQYn/ACAAa61CMIaECyEXIA0gFjcDACANIBcgBEGAgICAeHGtQiCGhDcDCCACQRBqJAAgDSkDCCEWIA0pAwAhFwwBCwJAAkACQCAGDQBBACEGA0AgBkGSowRqLAAAIAVBIHJHDQECQCAGQQFLDQAgAigCBCIEIAIoAmhJBEAgAiAEQQFqNgIEIAQtAAAhBQwBCyACEFohBQsgBkEBaiIGQQNHDQALDAELAkACQCAGDgQAAQECAQsCQCAFQTBHDQACfyACKAIEIgQgAigCaEkEQCACIARBAWo2AgQgBC0AAAwBCyACEFoLQV9xQdgARgRAIwBBsANrIgMkAAJ/IAIoAgQiBCACKAJoSQRAIAIgBEEBajYCBCAELQAA
 
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
 
DQEgBUKuj4XXx8LrowFTDQALCyACQQpJBEADQAJ/IAAoAgQiASAAKAJoSQRAIAAgAUEBajYCBCABLQAADAELIAAQWgtBMGtBCkkNAAsLIAAoAmgEQCAAIAAoAgRBAWs2AgQLQgAgBX0gBSAEGyEFDAELQoCAgICAgICAgH8hBSAAKAJoRQ0AIAAgACgCBEEBazYCBEKAgICAgICAgIB/DwsgBQu/AgEBfyMAQdAAayIEJAACQCADQYCAAU4EQCAEQSBqIAEgAkIAQoCAgICAgID//wAQMiAEKQMoIQIgBCkDICEBIANB//8BSARAIANB//8AayEDDAILIARBEGogASACQgBCgICAgICAgP//ABAyIANB/f8CIANB/f8CSBtB/v8BayEDIAQpAxghAiAEKQMQIQEMAQsgA0GBgH9KDQAgBEFAayABIAJCAEKAgICAgIDAABAyIAQpA0ghAiAEKQNAIQEgA0GDgH5KBEAgA0H+/wBqIQMMAQsgBEEwaiABIAJCAEKAgICAgIDAABAyIANBhoB9IANBhoB9ShtB/P8BaiEDIAQpAzghAiAEKQMwIQELIAQgASACQgAgA0H//wBqrUIwhhAyIAAgBCkDCDcDCCAAIAQpAwA3AwAgBEHQAGokAAs1ACAAIAE3AwAgACACQv///////z+DIARCMIinQYCAAnEgAkIwiKdB//8BcXKtQjCGhDcDCAsQACAAQSBGIABBCWtBBUlyC9gBAQR/IAAoAlQhAwJAIAAoAhQgACgCHCIFayIGBEAgACAFNgIUIAAgBSAGEP4FIAZJDQELAkAgAygCEEHhAEcEQCADKAIAIQQMAQsgAyADKAIEIgQ2AgALIAMoAgwgBGogASADKAIIIARrIgEgAiABIAJJGyIEECMaIAMgAygCACAEaiIBNgIAIAEgAygCBE0NACADIAE2AgQgAygCCCICIAFLBEAgAygCDCABakEAOgAAIAQPCyAALQAAQQRxR
 
SACRXINACACIAMoAgxqQQFrQQA6AAALIAQLuwIAAkAgAUEUSw0AAkACQAJAAkACQAJAAkACQAJAAkAgAUEJaw4KAAECAwQFBgcICQoLIAIgAigCACIBQQRqNgIAIAAgASgCADYCAA8LIAIgAigCACIBQQRqNgIAIAAgATQCADcDAA8LIAIgAigCACIBQQRqNgIAIAAgATUCADcDAA8LIAIgAigCAEEHakF4cSIBQQhqNgIAIAAgASkDADcDAA8LIAIgAigCACIBQQRqNgIAIAAgATIBADcDAA8LIAIgAigCACIBQQRqNgIAIAAgATMBADcDAA8LIAIgAigCACIBQQRqNgIAIAAgATAAADcDAA8LIAIgAigCACIBQQRqNgIAIAAgATEAADcDAA8LIAIgAigCAEEHakF4cSIBQQhqNgIAIAAgASsDADkDAA8LIAAgAiADEQMACwtQAQN/AkAgACgCACwAABBFRQRADAELA0AgACgCACICLAAAIQMgACACQQFqNgIAIAEgA2pBMGshASACLAABEEVFDQEgAUEKbCEBDAALAAsgAQt/AgF/AX4gAL0iA0I0iKdB/w9xIgJB/w9HBHwgAkUEQCABIABEAAAAAAAAAABhBH9BAAUgAEQAAAAAAADwQ6IgARCBBiEAIAEoAgBBQGoLNgIAIAAPCyABIAJB/gdrNgIAIANC/////////4eAf4NCgICAgICAgPA/hL8FIAALC5sCACAARQRAQQAPCwJ/AkAgAAR/IAFB/wBNDQECQEGcpQQoAgAoAgBFBEAgAUGAf3FBgL8DRg0DDAELIAFB/w9NBEAgACABQT9xQYABcjoAASAAIAFBBnZBwAFyOgAAQQIMBAsgAUGAsANPQQAgAUGAQHFBgMADRxtFBEAgACABQT9xQYABcjoAAiAAIAFBDHZB4AFyOgAAIAAgAUEGdkE/cUGAAXI6AAFBAwwECyABQYCABGtB//8/TQRAIAAgAUE/cU
 
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
 
AygCIDUCFAVCgICAgOAACwseACAAIAFBABCZASIARQRAQoCAgIDgAA8LIAA1AigLPQEBfkKAgICAECEBIAMpAwAiBEKAgICAcFoEfiAEpy8BBkEVa0H//wNxQQpJrUKAgICAEIQFQoCAgIAQCwuQAwIFfgF/IwBBIGsiAiQAQoCAgIDgACEIAkAgACABIAQQaCIKRQ0AIAotAAQEQCAAEHAMAQsgACACQRhqIAMpAwBCACAKNAIAIgUgBRB+DQAgAiAFNwMQIAMpAwgiBhAQBH4gBQUgACACQRBqIAZCACAFIAUQfg0BIAIpAxALIAIpAxgiCX0Q1AQhByAAIAFCgICAgDAQ8gEiBhALBEAgBiEIDAELAkAgBhAQBEAgAEKAgICAMCAHIAQQ9QMhBQwBCyACIAdCgICAgAh8Qv////8PWAR+IAdC/////w+DBSAHuRAVCzcDCCAAIAZBASACQQhqEK4BIQUgACAGEAogACACKQMIEAoLAkAgBRALDQACQCAAIAUgBBBoIgNFDQAgACAFIAEQWARAIABBoNEBQQAQFAwBCwJAIAMtAAQNACADNAIAIAdTBEAgAEHB0QFBABAUDAILIAotAAQNACADKAIIIAooAgggCadqIAenECMaDAILIAAQcAsgACAFEAoMAQsgBSEICyACQSBqJAAgCAsuACAAIAEgAhBoIgBFBEBCgICAgOAADwsgACgCACIAQQBOBEAgAK0PCyAAuBAVC/YCAQF+IAFBKBA/IQIgBEEBNgIAAkACQCACRQRAIABB0M8BQQAQFAwBCwJAAkACQAJAAkACQAJAAkAgAigCAEEBaw4EAgIHAQALIAVFDQIgACACEMADC0KAgICAMCEBIAVBAWsOAgMEBwsgAykDABANIQECQCAFQQJHDQBBASEDIAIoAgBBAUcNACAAIAEQkgEMAgsgAigCRCIDIAWtNwMAIANBCGsgATcDACACIANBCGo2AkQLQQAhAwsgA
 
kEDNgIAIAIgAzYCFCAAIAJBCGoQwAIhASACQQE2AgAgARALBEAgACACEMADIAEPCyACKAJEQQhrIgMpAwAhBiADQoCAgIAwNwMAIAFC/////w9YBEAgAadBAkYEQCACQQI2AgAgBEECNgIAIAYPCyAEQQA2AgAgBg8LIAAgARAKIAAgAhDAAyAGDwsgAykDABANDwsgACADKQMAEA0QkgEMAQsgAEHgzwFBABAUC0KAgICA4AAhAQsgAQtmAQF+IAMpAwAiARD3A0UEQCAAQeTJAEEAEBRCgICAgOAADwtCgICAgDAhBCABpykCBEKAgICAgICAgECDQoCAgICAgICAgH9RBH4gAUL/////D4NCgICAgJB/hBANBUKAgICAMAsLLwEBfkKAgICA4AAhASAAIAMpAwAQKyIEEAsEfkKAgICA4AAFIAAgBKdBAhD2AwsLSQIBfgF/IAAgARDBAyIBEAsEQCABDwtCgICAgDAhAiABpyIDKAIEQYCAgIB4RwRAIAAgACgCECADENMCEDEhAgsgACABEAogAgsJACAAIAEQwQMLTgEBfiMAQRBrIgIkACACIAAgARDBAyIBNwMIAkAgARALBEAgASEEDAELIABCgICAgDBBASACQQhqEMgEIQQgACABEAoLIAJBEGokACAECy0AQoCAgIDgACAAIAMpAwAgAykDCEEAEJsCIgBBAEetQoCAgIAQhCAAQQBIGwuGAQEDfiADKQMAIgEhBCACQQROBEAgAykDGCEECyABQv////9vWARAIAAQKEKAgICA4AAPCyADKQMQIQZCgICAgOAAIQUCQCAAIAMpAwgQOSICRQ0AIAAgASACIAYQDSAEQQAQiAQhAyAAIAIQESADQQBIDQAgA0EAR61CgICAgBCEIQULIAULKgAgAykDACIBQv////9vWARAIAAQKEKAgICA4AAPCyAAIAFBA0EAEP8CC2MBAX4gAykDACIEQv////9vWARAIA
 
AQKEKAgICA4AAPC0KAgICA4AAhAQJAIAAgAykDCBA5IgJFDQAgACAEIAIQdyEDIAAgAhARIANBAEgNACADQQBHrUKAgICAEIQhAQsgAQtjAQJ+AkACQCADKQMAIgFC/////29YBEAgABAoDAELIAMpAwghBSABIQQgAkEDTgRAIAMpAxAhBAsgACAFEDkiAg0BC0KAgICA4AAPCyAAIAEgAiAEQQAQEiEBIAAgAhARIAELZgEBfiADKQMAIgRC/////29YBEAgABAoQoCAgIDgAA8LQoCAgIDgACEBAkAgACADKQMIEDkiAkUNACAAIAQgAkEAEN0BIQMgACACEBEgA0EASA0AIANBAEetQoCAgIAQhCEBCyABC4sBAgF/An4jAEEQayIEJAAgAykDCCEFIAMpAwAiBiEBAkACQAJAAkAgAkEDSA0AIAMpAxAiARCxAQ0AIABBycwAQQAQFAwBCyAAIARBDGogBRCLBCICDQELQoCAgIDgACEBDAELIAAgBiABIAQoAgwiAyACEI4DIQEgACACIAMQmAMLIARBEGokACABCxwAIAAgAykDAEEAIAJBAWsQSiADQQhqQQIQmgMLQwAjAEEQayICJAACfkKAgICA4AAgACACQQxqIAMpAwAQxAENABpCICACKAIMIgBFDQAaIABnrQshASACQRBqJAAgAQtQACMAQRBrIgIkAEKAgICA4AAhAQJAIAAgAkEMaiADKQMAEJMCDQAgACACQQhqIAMpAwgQkwINACACKAIIIAIoAgxsrSEBCyACQRBqJAAgAQsGACAAtrsLUwACfCAAIAApA9ABIgFCDIggAYUiAUIZhiABhSIBQhuIIAGFIgE3A9ABIAFCnbqz+5SS/aIlfkIMiEKAgICAgICA+D+Ev0QAAAAAAADwv6ALEBUL9QMDA3wFfwN+IwBBEGsiCCQAIAhCADcDCAJAAkAgAkEBSA0AQoCAgIDgACEBIAAgCEEIaiADKQM
 
AEEcNAUEBIQkgCCsDCCEEIAJBAUcEQANAIAIgCUYNAiAAIAggAyAJQQN0aikDABBHDQMgCUEBaiEJIAgrAwAhBSMAQSBrIgckACAEvUL///////////8AgyINIAW9Qv///////////wCDIgwgDCANVhsiDr8hBAJAIA5CNIinIgpB/w9GDQAgDSAMIAwgDVQbIgy/IQUCQCAOUA0AIAxCNIinIgtB/w9GDQAgCyAKa0HBAE4EQCAFIASgIQQMAgsCfCALQf4LTwRAIAREAAAAAAAAMBSiIQQgBUQAAAAAAAAwFKIhBUQAAAAAAACwawwBC0QAAAAAAADwPyAKQbwESw0AGiAERAAAAAAAALBroiEEIAVEAAAAAAAAsGuiIQVEAAAAAAAAMBQLIQYgB0EYaiAHQRBqIAUQhgYgB0EIaiAHIAQQhgYgBiAHKwMAIAcrAxCgIAcrAwigIAcrAxign6IhBAwBCyAFIQQLIAdBIGokAAwACwALIASZIQQLIAS9An8gBJlEAAAAAAAA4EFjBEAgBKoMAQtBgICAgHgLIgC3vVEEQCAArSEBDAELIAQQFSEBCyAIQRBqJAAgAQtbAQF/AkAgAL1C////////////AINCgICAgICAgPj/AFYgAEQAAAAAAAAAAGFyDQAgAEQAAAAAAAAAAGMhAUQAAAAAAADwvyEAIAENAEQAAAAAAADwPyEACyAAC4MBAgJ+AX8gAL0iAUI0iKdB/w9xIgNB/gdNBEAgAUKAgICAgICAgIB/gyECIANB/gdHIAFCgICAgICAgPC/f1FyRQRAIAJCgICAgICAgPg/hL8PCyACvw8LIANBsghNBHwgAUI/hyABfEIBQbMIIANrrYYiAUIBiHxCACABfYO/BSAACwvjBAICfAV/IwBBEGsiCCQAAn4gAkUEQEQAAAAAAADw/0QAAAAAAADwfyAEGxAVDAELAnwgAykDACIBQv////8PWARAIAJBASACQQFK
 
GyELIAGnIQlBASEHA0AgByALRwRAIAm3IAMgB0EDdGopAwAiAUKAgICAEFoNAxogAachCgJ/IAQEQCAJIAoQSgwBCyAJIAoQsAELIQkgB0EBaiEHDAELCyAJrQwCC0KAgICA4AAgACAIQQhqIAEQRw0BGkEBIQcgCCsDCAshBSAHIAIgAiAHSBshAgNAIAIgB0cEQEKAgICA4AAgACAIIAMgB0EDdGopAwAQRw0CGgJAIAW9Qv///////////wCDQoCAgICAgID4/wBWDQAgCCsDACIGvUL///////////8Ag0KAgICAgICA+P8AVgRAIAYhBQwBCyAEBEAgBb1C////////////AINCgICAgICAgPj/AFgEfCAFIAUgBqUgBr1C////////////AINCgICAgICAgPj/AFYbBSAGCyAGvSAFvYO/IAVEAAAAAAAAAABiIAZEAAAAAAAAAABichshBQwBCyAFvUL///////////8Ag0KAgICAgICA+P8AWAR8IAUgBSAGpCAGvUL///////////8Ag0KAgICAgICA+P8AVhsFIAYLIAa9IAW9hL8gBUQAAAAAAAAAAGIgBkQAAAAAAAAAAGJyGyEFCyAHQQFqIQcMAQsLIAW9An8gBZlEAAAAAAAA4EFjBEAgBaoMAQtBgICAgHgLIgC3vVEEQCAArQwBCyAFEBULIQEgCEEQaiQAIAEL0AEBAn8jAEEQayICJAACfiAAIAFBJhBoIgNFBEAgBEEANgIAQoCAgIDgAAwBCwJAIAMpAwAiARAQRQRAIAIgAygCDCIFNgIMIAUgAaciBigCBEH/////B3FJDQEgACABEAogA0KAgICAMDcDAAsgBEEBNgIAQoCAgIAwDAELIAYgAkEMahDZASEHIAMgAigCDDYCDCAEQQA2AgAgB0H//wNNBEAgACAHQf//A3EQpgMMAQsgACAGIAVBAXRqQRBqQQIQnAQLIQEgAkEQaiQAIAEL2
 
QICAn8CfiMAQSBrIgIkAEKAgICA4AAhBwJAIAAgARBhIgEQCw0AIAAgAkEIakEHEEIaIAJBCGpBPBA7GiACQQhqIARBA3QiBUHAwgFqKAIAIgYQiwEaQZ49IAR2QQFxRQRAIAJBCGpBIBA7GiACQQhqIAVBxMIBaigCABCLARogAkEIakHBwwEQiwEaIAAgAykDABBhIggQCwRAIAAgARAKIAJBCGoQRAwCCyAIpyEDQQAhBANAIAQgAygCBEH/////B3FPRQRAAkAgAyAEEC8iBUEiRgRAIAJBCGpBxMMBEIsBGgwBCyACQQhqIAUQlAEaCyAEQQFqIQQMAQsLIAAgCBAKIAJBCGpBIhA7GgsgAkEIakE+EDsaIAJBCGogARCNARogAkEIakHLwwEQiwEaIAJBCGogBhCLARogAkEIakE+EDsaIAJBCGoQNyEHCyACQSBqJAAgBwu1BAEIfyMAQTBrIgIkAAJAIAAgARBhIgEQCw0AIAGnIgcoAgRB/////wdxIgNFDQACQCAAIAJBGGogAxBCDQBBACEDIAJBADYCFANAAkAgBygCBEH/////B3EgA0oEQEEAIQMCfwJAIARFIAcgAkEUahDZASILQaMHR3INACACKAIUQQFrIQojAEEQayIIJAAgCCAKNgIMA0ACf0EAIAgoAgwiBUEBSA0AGiAFQQFrIQYCQAJAIAcoAgRBf0wEQCAHIAZBAXRqLwEQIglBgPgDcUGAuANHIAVBAkhyDQEgByAFQQJrIgVBAXRqLwEQIgxBgNAAakH//wNxQYAISw0BIAlB/wdxQYCABHIgDEH/B3FBCnRqIQkMAgsgBiAHai0AECEJCyAGIQULIAggBTYCDCAJCyIGELoEDQALAkAgBhC8BEUEQEEAIQYMAQtBASEGIAggCkEBaiIFNgIMA0AgBSAHKAIEQf////8HcU4NASAHIAhBDGoQ2QEiBRC6BARAIAgoAgwhBQwBCwsgBRC8BE
 
UhBgsgCEEQaiQAIAZFDQAgAkHCBzYCCEEBDAELIAJBCGogCyAEELcDCyIGQQAgBkEAShshBgNAIAMgBkYNAiADQQJ0IQUgA0EBaiEDIAJBGGogBSACQQhqaigCABC+AUUNAAsMAwsgACABEAogAkEYahA3IQEMAwsgAigCFCEDDAALAAsgACABEAogAkEYahBEQoCAgIDgACEBCyACQTBqJAAgAQtaAQF+QoCAgIDgACEEIAAgARBhIgEQCwR+QoCAgIDgAAUgACADKQMAECsiBBALBEAgACABEApCgICAgOAADwsgAacgBKcQlQIhAiAAIAEQCiAAIAQQCiACrQsLCQAgACABEI0FC18AAn4CQCABQiCIpyICQX9HBEAgAkF5Rw0BIAEQDQwCCyABpyICLwEGQQVHDQAgAikDICIBQoCAgIBwg0KAgICAkH9SDQAgARANDAELIABBwNMAQQAQFEKAgICA4AALC6ABAgF/AX4gACABEGEiARALBEAgAQ8LIAGnIgUoAgRB/////wdxIQJBACEDAkAgBEEBcUUNAANAIAIgA0YEQCACIQMMAgsgBSADEC8Q4gJFDQEgA0EBaiEDDAALAAsCQCAEQQJxRQRAIAIhBAwBCwNAIAIiBCADTA0BIAUgBEEBayICEC8Q4gINAAsLIAAgBSADIAQQmgEhBiAAIAEQCiAGC5oDAgZ/A34jAEEgayIFJABCgICAgOAAIQwCQCAAIAEQYSIBEAsNAAJAAkAgACAFQQRqIAMpAwAQwgENACAFKAIEIgcgAaciCSgCBEH/////B3EiCEwNAUEgIQpCgICAgDAhCwJAIAJBAkgNACADKQMIIg0QEA0AIAAgDRArIgsQCw0BAkACQCALpyIGKAIEQf////8HcQ4CAAECCyAAIAsQCgwDCyAGQQAQLyEKQQAhBgsgB0GAgICABE4EQCAAQfQNQQAQQQwBCyAAIAVBCGogBxBCRQRAIAUgByAIayI
 
DNgIEAkAgBARAIAVBCGogCUEAIAgQVw0BCwJAIAYEQANAIANBAUgNAiAFQQhqIAZBACADIAYoAgRB/////wdxELABIgIQVw0DIAUgAyACayIDNgIEDAALAAsgBUEIaiAKIAMQywQNAQsgBEUEQCAFQQhqIAlBACAIEFcNAQsgACALEAogACABEAogBUEIahA3IQwMBAsgBUEIahBECyAAIAsQCgsgACABEAoMAQsgASEMCyAFQSBqJAAgDAv3BAIEfgV/IwBB0ABrIgIkACADKQMIIQggAykDACEFAkACQAJAIAEQEEUEQCABECZFDQELIABBk84AQQAQFAwBCwJAIAUQEA0AIAUQJg0AIAQEQCAAIAUQzQRBAEgNAgtCgICAgOAAIQYgACAFQcYBIAVBABASIgcQCw0CIAcQEA0AIAcQJg0AIAIgCDcDKCACIAE3AyAgACAHIAVBAiACQSBqEDUhBgwCCyAAIAJBCGpBABBCGkKAgICAMCEHAkAgACABECsiBhALBEBCgICAgDAhBQwBCyAAIAUQKyIFEAsNACAAIAgQOiINRQRAIAAgCBArIgcQCw0BCyAGpyEKIAWnIgwpAgQhAQNAAkACQCABQv////8Hg1AEQEEAIQMgC0UNASAJIAooAgRB/////wdxTg0CIAlBAWohAwwBCyAKIAwgCRDMBCIDQX9KDQAgCw0BIAJBCGoQRCAAIAUQCiAAIAcQCgwFCyACIAU3AyACfiANBEAgAiAGNwMwIAIgA603AyggACAAIAhCgICAgDBBAyACQSBqECIQPgwBCyACIAc3A0ggAkKAgICAMDcDQCACQoCAgIAwNwM4IAIgBjcDKCACIAOtNwMwIAAgAkEgahCQBQsiARALDQIgAkEIaiAKIAkgAxBXGiACQQhqIAEQjQEaIAwpAgQiAadB/////wdxIANqIQlBASELIAQNAQsLIAJBCGogCiAJIAooAgRB/////wdxEFcaIAAg
 
BRAKIAAgBxAKIAAgBhAKIAJBCGoQNyEGDAILIAJBCGoQRCAAIAUQCiAAIAcQCiAAIAYQCgtCgICAgOAAIQYLIAJB0ABqJAAgBguDAgIDfwF+IwBBIGsiAiQAAkACQCAAIAEQYSIBEAsNACAAIAIgAykDABCOBA0AIAIpAwAiB0KAgICACFoEQCAAQaTCARBpDAELIAenIgNBAUYNASABpyIFKQIEpyIGQf////8HcSIERQ0BIAcgBK1+QoCAgIAEWQRAIABB9A1BABBBDAELIAAgAkEIaiADIARsIAZBH3YQqgMNAAJAIARBAUcEQANAIANBAUgNAiACQQhqIAVBACAEEFcaIANBAWshAwwACwALIAJBCGogBUEAEC8gAxDLBBoLIAAgARAKIAJBCGoQNyEBDAELIAAgARAKQoCAgIDgACEBCyACQSBqJAAgAQulAQICfwJ+IwBBEGsiAiQAAkAgACABEGEiARALBEAgASEGDAELQoCAgIDgACEGAkAgACACQQxqIAMpAwAgAaciBSgCBEH/////B3EiBCAEEGMNACACIAQ2AgggAykDCCIHEBBFBEAgACACQQhqIAcgBCAEEGMNASACKAIIIQQLIAAgBSACKAIMIgMgBCADEEoQmgEhBgsgACABEAoLIAJBEGokACAGC6cBAgN/An4jAEEQayICJAACQCAAIAEQYSIBEAsEQCABIQcMAQtCgICAgOAAIQcCQCAAIAJBDGogAykDACABpyIGKAIEQf////8HcSIEIAQQYw0AIAIgBCACKAIMIgVrIgQ2AgggACAGIAUgAykDCCIIEBAEfyAEBSAAIAJBCGogCCAEQQAQYw0BIAIoAggLIAVqEJoBIQcLIAAgARAKCyACQRBqJAAgBwu6AQICfwJ+IwBBEGsiAiQAAkAgACABEGEiARALBEAgASEGDAELQoCAgIDgACEGAkAgACACQQxqIAMpAwAgAaciBSgCBEH/////B3FBA
 
BBjDQAgAiAFKAIEQf////8HcSIENgIIIAMpAwgiBxAQRQRAIAAgAkEIaiAHIARBABBjDQEgAigCCCEECyAAIAUgAigCDCIDIAQgAyAESCIFGyAEIAMgBRsQmgEhBgsgACABEAoLIAJBEGokACAGC5gEAgl+A38jAEEQayINJAAgAykDCCEHIAMpAwAhBAJAAkACQCABEBBFBEAgARAmRQ0BCyAAQZPOAEEAEBQMAQsCQCAEEBAiAg0AIAQQJg0AQoCAgIDgACEFIAAgBEHIASAEQQAQEiIIEAsNAiAIEBANACAIECYNACANIAc3AwggDSABNwMAIAAgCCAEQQIgDRA1IQUMAgtCgICAgDAhCQJAIAAgARArIgwQCwRAQoCAgIAwIQUMAQsgABBOIgUQCw0AAkAgBxAQBEAgDUF/NgIADAELIAAgDSAHEMQBQQBIDQELIAynIg4pAgQhASAAIAQQKyIJEAsNAAJAIA0oAgAiA0UNACABp0H/////B3EhDyAAIA4CfwJAIAINACAJpyICKQIEQv////8HgyEKAkAgDwRAIAFC/////weDIAp9IApQrSIEfSEHIAOtIQgDQCAEIAt8IgEgB1UNAiAOIAIgAacQzAQiA0EASA0CIAAgDiALpyADEJoBIgEQCw0GIAAgBSAGIAFBABCqAUEASA0GIAogA6x8IQsgBkIBfCIGIAhSDQALDAQLIApQRQ0BDAMLIAZC/////w+DIQYgC6cMAQtBAAsgDxCaASIBEAsNASAAIAUgBiABQQAQqgFBAEgNAQsgACAMEAogACAJEAoMAgsgACAFEAogACAMEAogACAJEAoLQoCAgIDgACEFCyANQRBqJAAgBQvTAgEDfiMAQTBrIgIkACACIAE3AyggAykDACEFAkACQCABEBBFBEAgARAmRQ0BCyAAQZPOAEEAEBRCgICAgOAAIQcMAQsCQCAFEBANACAFECYNAEKAgICA4AAhByAAIAUgBC
 
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
 
QQAQNQshBCAAIAEQCgsgBAvWAgICfwR+IwBBIGsiBSQAAn4CQCAAIAUgACABECkiCRBADQBBLCEGQoCAgIAwIQgCQCACQQFIIARyRQRAQQAhAiADKQMAIgEQEA0BIAAgARArIggQCw0CQX8hBiAIpyICKAIEQQFHDQEgAi0AECEGDAELQQAhAgsgACAFQQhqQQAQQhpCACEBIAUpAwAiB0IAIAdCAFUbIQoCQANAIAEgClIEQAJAIAFQDQAgBkEATgRAIAVBCGogBhA7GgwBCyAFQQhqIAJBACACKAIEQf////8HcRBXGgsgACAJIAGnEHgiBxALDQICQCAHECYNACAHEBANACAFQQhqIAQEfiAAIAcQ1QQFIAcLEI0BDQMLIAFCAXwhAQwBCwsgACAIEAogACAJEAogBUEIahA3DAILIAVBCGoQRCAAIAgQCgsgACAJEApCgICAgOAACyEBIAVBIGokACABC/MBAgF/An4jAEEgayIEJAACfgJAAkACQCAAIARBEGogACABECkiBRBADQAgBCkDECIGQgFTDQEgBCAGQgF9IgE3AwggAkECTgRAIAAgBEEIaiADKQMIQn8gASAGEH4NASAEKQMIIQELA0AgAUIAUw0CIAAgBSABIARBGGoQiQEiAkEASA0BIAIEQCAAIAMpAwAQDSAEKQMYQQAQ3gENBAsgAUIBfSEBDAALAAsgACAFEApCgICAgOAADAILQn8hAQsgACAFEAogAUL/////D4MgAUKAgICACHxC/////w9YDQAaIAG5EBULIQEgBEEgaiQAIAEL9QICAX8EfiMAQSBrIgQkAAJ+AkACQCAAIARBEGogACABECkiBxBADQBCfyEGIAQpAxAiCEIBUw0BIARCADcDCCACQQJOBEAgACAEQQhqIAMpAwhCACAIIAgQfg0BCwJAIAcgBEEEaiAEEI4CRQRAIAQpAwghAQwBCyAEKQMIIgUgBDUCACIBIAEgBVMbI
 
QEgBCgCBCECA0AgASAFUgRAIAAgAykDABANIAIgBadBA3RqKQMAEA1BABDeAQRAIAUhBgwFBSAFQgF8IQUMAgsACwsgBCABNwMICyABIAggASAIVRshBQNAIAEgBVENAiAAIAcgASAEQRhqEIkBIgJBAEgNAQJAIAJFDQAgACADKQMAEA0gBCkDGEEAEN4BRQ0AIAEhBgwDCyABQgF8IQEMAAsACyAAIAcQCkKAgICA4AAMAQsgACAHEAogBkL/////D4MgBkKAgICACHxC/////w9YDQAaIAa5EBULIQEgBEEgaiQAIAEL3AICCH4BfyMAQTBrIg0kAEKAgICAMCEGAkACQCAAIA1BCGogACABECkiBxBABEBCgICAgDAhBQwBC0KAgICAMCEFIAAgAykDACIKEGcNAEKAgICAMCEJIAJBAk4EQCADKQMIIQkLIA0pAwgiBUIAIAVCAFUbIQsDQCAIIAtSBEACfiAIIgVCgICAgAhaBEAgCLkQFSEFCyAFCxALDQIgACAHIAUQngEiBhALDQIgDSABNwMgIA0gBTcDGCANIAY3AxAgACAKIAlBAyANQRBqECIiDBALDQIgACAMECwEQCAEBEAgACAGEAogACAHEAoMBQsgACAFEAogACAHEAogBiEFDAQFIAAgBhAKIAAgBRAKIAhCAXwhCAwCCwALCyAAIAcQCkL/////D0KAgICAMCAEGyEFDAELIAAgBRAKIAAgBhAKIAAgBxAKQoCAgIDgACEFCyANQTBqJAAgBQv1AQIBfwJ+IwBBIGsiBCQAAkACQCAAIARBGGogACABECkiBhBADQAgBEIANwMQAkAgAkEBTARAIAQgBCkDGCIFNwMIDAELIAQpAxghBSADKQMIIgEQEEUEQCAAIARBEGogAUIAIAUgBRB+DQILIAQgBTcDCCACQQNIDQAgAykDECIBEBANACAAIARBCGogAUIAIAUgBRB+DQEgBCkDCCEFCyAEKQ
 
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
 
IgEQCw0CIAAgBCABQoCAgIAwQQEQxgUNAiAAIAEQCgsgAkEBaiECDAALAAsgACAEEAogACABEApCgICAgOAAIQQLIAQLGwAgACADKQMAIAMpAwgQWEEAR61CgICAgBCEC5sCAgN+A38jAEEgayICJABCgICAgOAAIQQgACADKQMAECkiBRALRQRAQoCAgIAwIQECfgJAIAAgAkEcaiACQRhqIAWnQQMQkAENACAAED0iARALDQAgAigCHCEHIAIoAhghCEEAIQMDQCADIAhHBEAgACAHIANBA3RqIgkoAgQQXiIGEAsNAiACIAY3AwggAiAFNwMAIABCgICAgDBBAiACQQAQ2AQhBCAAIAYQCiAEEAsNAiAEEBBFBEAgACABIAkoAgQgBEGHgAEQGUF/TA0DCyADQQFqIQMMAQsLIAAgByAIEGQgAQwBCyAAIAIoAhwgAigCGBBkIAAgBRAKIAEhBUKAgICA4AALIQQgACAFEAoLIAJBIGokACAEC20AAn4CQCADKQMAIgFC/////29YBEAgBEUNASAAEChCgICAgOAADwtCgICAgOAAIAAgARCZBCICQQBIDQEaIAQEQCACQQBHrUKAgICAEIQPCyACDQAgAEGrnAFBABAUQoCAgIDgAA8LIAEQDQsLTwACQAJAIAMpAwAiAUL/////b1gEQCAERQRAQoCAgIAQDwsgABAoDAELIAAgARCfASIAQQBODQELQoCAgIDgAA8LIABBAEetQoCAgIAQhAsQACAAIAMpAwBBAkEAEP8CCxAAIAAgAykDAEEBQQAQ/wILLQEBfkKAgICA4AAhASAAIAMpAwAiBCADKQMIENoEBH5CgICAgOAABSAEEA0LC30BAn4gAykDACIBQv////9vWARAIAAQKEKAgICA4AAPCyADKQMQIQZCgICAgOAAIQUCQCAAIAMpAwgQOSICRQ0AIAAgASACIAYgBEVBDnQQ2QQhAyAAIAIQESADQQBID
 
QAgBARAIANBAEetQoCAgIAQhA8LIAEQDSEFCyAFCycAIAAgAykDACIBIAMpAwhBARCbAkEASARAQoCAgIDgAA8LIAEQDQs4ACADKQMAIgFCIIinIgJBf0YgBEVBACACQX5xQQJHG3JFBEAgABAoQoCAgIDgAA8LIAAgARD7AQtiAQF+AkAgAykDACIBECANACABECYNACAAQcChAUEAEBRCgICAgOAADwsCQCAAIAEQUiIBEAtFBEAgAykDCCIEEBANASAAIAEgBBDaBEUNASAAIAEQCgtCgICAgOAADwsgAQu4AQECfiABECBFBEAgABAoQoCAgIDgAA8LQoCAgIDgACEFAn4gACABQTYgAUEAEBIiBBAQBEAgAEGOARAxDAELIAAgBBA+CyIEEAsEfkKAgICA4AAFAn4gACABQTMgAUEAEBIiARAQBEAgAEEvEDEMAQsgACABED4LIgEQCwRAIAAgBBAKQoCAgIDgAA8LAkAgBBD2AQ0AIAEQ9gENACAAQb4VIARBkJwBEL0BIQQLIAAgBCABEMYCCwtpAgF/AX5B8KYEKAIABEAQggULQfCmBBDXBSICNgIAIAIQ4AQhAkGApwQgATYCAEH0pgQgAjYCACACIAAgABBDQY0IELYFIgMgARCnAwRAQfSmBCgCACADEApBAA8LQfimBCADNwMAQQELvgICA38BfCMAQdAAayIEJAAgBEEQakEAQTgQSxogBEKAgICAgICA+D83AyBCgICAgMB+IQECQCACRQ0AIAJBByACQQdIGyICQQAgAkEAShshAgNAIAIgBUcEQCAAIARBCGogAyAFQQN0IgZqKQMAEEcEQEKAgICA4AAhAQwDCyAEKwMIIge9QoCAgICAgID4/wCDQoCAgICAgID4/wBRDQIgBEEQaiAGaiAHnTkDAAJAIAUNACAEKwMQIgdEAAAAAAAAAABmRSAHRAAAAAAAAFlAY0VyDQAgBCAHRAAAAAAAsJ1AoD
 
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
 
BqIAYgBSASpxBXGiACQcgAaiAPEIwBGiARpykCBEL/////B4MgEnynIQULIARBAWohBAwBCwsgAkHIAGogBiAFIAYoAgRB/////wdxEFcaIAJByABqEDchFAwCC0KAgICAMCEPQoCAgIAwIRBCgICAgDAhEQsgAkHIAGoQRAsgAkEQahCPBSAAIBcQCiAAIBEQCiAAIBAQCiAAIA8QCiAAIBMQCiAAIBUQCgsgAkGQAWokACAUC5IBACMAQSBrIgIkAAJ+AkAgARAgRQRAIAAQKAwBCyAAIAJBCGpBABBCGiACQQhqQS8QOxoCQCACQQhqIAAgAUHsACABQQAQEhCNAQ0AIAJBCGpBLxA7GiACQQhqIAAgAUHtACABQQAQEhCNAQ0AIAJBCGoQNwwCCyACQQhqEEQLQoCAgIDgAAshASACQSBqJAAgAQs/AQF+QoCAgIDgACEEIAAgASADKQMAENgBIgEQCwR+QoCAgIDgAAUgARAmIQIgACABEAogAkWtQoCAgIAQhAsLgAIBA34CQCAAIAFBARDbASICRQ0AIAMpAwghBgJAAkAgACADKQMAIgRBABDbASIDBEAgBhAQRQRAIABB99IAQQAQFEKAgICA4AAPCyADNQIAQoCAgICQf4QQDSEEIAM1AgRCgICAgJB/hBANIQUMAQtCgICAgDAhBQJ+IAQQEARAIABBLxAxDAELIAAgBBArCyIEEAsNASAAIAQgBhCEBCIFEAsNAQsgACACNQIAQoCAgICQf4QQCiAAIAI1AgRCgICAgJB/hBAKIAIgBT4CBCACIAQ+AgAgACABQdUAQgAQSEEASA0BIAEQDQ8LIAAgBBAKIAAgBRAKC0KAgICA4AALawEBfyABQv////9vWARAIAAQKEKAgICA4AAPCwJ+IAAgAUEAENsBIgNFBEBCgICAgDAgACABIAAoAigpA5ABEFgNARogAEESEJwDQoCAgIDgAA8LIAIgAygCBC0AEHF
 
BAEetQoCAgIAQhAsLxwMBB38jAEEgayIFJAACQAJAAkACQAJAIAFC/////29YBEAgABAoDAELIAAgASAAKAIoKQOQARBYDQIgACABQQEQ2wEiAg0BC0KAgICA4AAhAQwDCyACKAIAIgcpAgSnIgJB/////wdxIgMNAQsgAEHQ0gAQcSEBDAELIAAgBUEIaiADIAJBH3YQqgMaIAcoAgRB/////wdxIQhBACEAA0ACQAJAIAAgCEgEQCAAQQFqIQJBfyEGAkACfwJAAkACQAJAAkACQAJAIAcgABAvIgNB2wBrDgMDAQIACyACIQACQCADQQprDgQECwsFAAsgA0EvRw0HIARFDQVBASEEQS8hAwwHC0HcACEDIAIgCE4NBiAAQQJqIQAgByACEC8hBgwJC0EAIQRB3QAhAwwFC0HbACEDIAQgAiAITnINBiAAQQJqIAIgByACEC9B3QBGIgIbIQBB3QBBfyACGyEGQQEhBAwHC0HuAAwCC0HyAAwBC0EAIQRBLwshBkHcACEDCyACIQAMAgsgBUEIahA3IQEMAwsgAiEAQQEhBAsgBUEIaiADEJQBGiAGQQBIDQAgBUEIaiAGEJQBGgwACwALIAVBIGokACABC9gCAgN/AX4jAEEQayIEJAACQCABQv////9vWARAIAAQKEKAgICA4AAhBQwBC0KAgICA4AAhBSAAIAAgAUHuACABQQAQEhAsIgJBAEgNACACBH8gBEHnADoACCAEQQlqBSAEQQhqCyECIAAgACABQZ/PABDMAhAsIgNBAEgNACADBEAgAkHpADoAACACQQFqIQILIAAgACABQarPABDMAhAsIgNBAEgNACADBEAgAkHtADoAACACQQFqIQILIAAgACABQbTPABDMAhAsIgNBAEgNACADBEAgAkHzADoAACACQQFqIQILIAAgACABQe8AIAFBABASECwiA0EASA0AIAMEQCACQfUAOgAAIAJBAWohAgsgACAA
 
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
 
CyACRQRAIAAgACgCAEEBazYCACAAIAAoAgRBCGs2AgQgARDpAQwDC0EAIAAoAgggACgCBCACakkNARogASACEPUFDwsgACACEKUFCw8LQQALJgAgAQRAIAAgACgCAEEBazYCACAAIAAoAgRBCGs2AgQgARDpAQsLKAEBfwJAIAGnKAIgIgNFDQAgAygCAEEERg0AIAAgA0EIaiACEPADCwscAQF/IAFBKBA/IgIEQCAAIAIQ7gMgACACEB8LCyUBAX8gAacoAiAiAwRAIAAgAykDACACECEgACADKQMIIAIQIQsLJwEBfyABpygCICICBEAgACACKQMAECUgACACKQMIECUgACACEB8LCx4BAX8gAacoAiAiAgRAIAAgAikDABAlIAAgAhAfCwtDAQJ/IAGnKAIgIgIEQAJAIAIpAwAiARDeBUUNACACKAIMIgNFDQAgACADEPIDIAIpAwAhAQsgACABECUgACACEB8LC1gBA38CQCABpygCICIERQ0AIARBCGohAyAEQQRqIQUDQCADKAIAIgMgBUYNASAEKAIARQRAIAAgAykDECACECELIAAgAykDGCACECEgA0EEaiEDDAALAAsLgQEBBX8gAacoAiAiAwRAIANBBGohBSADKAIIIQIDQCACIAVHBEAgAigCBCEGIAJBEGshBCACQQxrKAIARQRAAkAgAygCAARAIAQQpgUMAQsgACACKQMQECULIAAgAikDGBAlCyAAIAQQHyAGIQIMAQsLIAAgAygCEBAfIAAgAxAfCwshAQF/IAGnKAIgIgMEQCAAIAM1AgxCgICAgHCEIAIQIQsLQAEBfyABpygCICICBEAgACACNQIMQoCAgIBwhCIBEN4FBH4gAhBGIAI1AgxCgICAgHCEBSABCxAlIAAgAhAfCwtbAQJ/IAGnKAIgIgIEQAJAAkAgAi0ABUUNACAAKAK8ASIDRQ0AIAAoAsQBIAIoAgggAxEDAAwBCyACKAIYI
 
gNFDQAgACACKAIUIAIoAgggAxEGAAsgACACEB8LCykBAX8gACABpyICNQIkQoCAgICQf4QQJSAAIAI1AiBCgICAgJB/hBAlCxEAIAAgAacoAiApAwAgAhAhCxkBAX8gACABpygCICICKQMAECUgACACEB8LQQEDfwJAIAFBDxA/IgRFDQAgBEEIaiEFA0AgAyAELQAFTw0BIAAgBSADQQN0aikDACACECEgA0EBaiEDDAALAAsLQwEDfyABQQ8QPyIDBEAgA0EIaiEEA0AgAiADLQAFT0UEQCAAIAQgAkEDdGopAwAQJSACQQFqIQIMAQsLIAAgAxAfCwtJAQJ/IAAgAacoAiAiBCkDACACECEgACAEKQMIIAIQIQNAIAMgBCgCEE5FBEAgACAEIANBA3RqKQMYIAIQISADQQFqIQMMAQsLC0kBAn8gACABpygCICICKQMAECUgACACKQMIECUDQCADIAIoAhBORQRAIAAgAiADQQN0aikDGBAlIANBAWohAwwBCwsgACACEB8LjgEBBH8gAaciAygCJCEFIAMoAiAhBCADKAIoIgMEQCAAIAOtQoCAgIBwhCACECELIAQEQAJAIAVFDQBBACEDA0AgAyAEKAI8Tg0BAkAgBSADQQJ0aigCACIGRQ0AIAYtAAVBAXFFDQAgACAGIAIRAwALIANBAWohAwwACwALIAAgBK1CgICAgGCEIAIQIQsLcwEDfyABpyICKAIoIgMEQCAAIAOtQoCAgIBwhBAlCyACKAIgIgMEQCACKAIkIgQEQEEAIQIDQCACIAMoAjxORQRAIAAgBCACQQJ0aigCABD5ASACQQFqIQIMAQsLIAAgBBAfCyAAIAOtQoCAgIBghBAlCwsSACABpygCICIABEAgABCtAwsLDgAgACABpykDICACECELGQAgACABpyIAKQMgECUgAEKAgICAMDcDIAs1AQJ/IAGnIQQDQCADIAQoAihPRQRAIAAgBCgCJC
 
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
 
b3BlcnR5ICclcycgb2YgdW5kZWZpbmVkAGNhbm5vdCBzZXQgcHJvcGVydHkgJyVzJyBvZiBudWxsAGNhbm5vdCBzZXQgcHJvcGVydHkgJyVzJyBvZiB1bmRlZmluZWQAcC0+Y2xhc3NfaWQgPT0gSlNfQ0xBU1NfQVJSQVkASlNfU2V0UHJvcGVydHlJbnRlcm5hbABwcm9wID09IEpTX0FUT01fbGVuZ3RoAG91dC1vZi1ib3VuZCBudW1lcmljIGluZGV4AG5vdCBhbiBvYmplY3QAb2JqZWN0IGlzIG5vdCBleHRlbnNpYmxlAHBycyAhPSBOVUxMAEpTX0RlZmluZVByb3BlcnR5AHByb3BlcnR5IGlzIG5vdCBjb25maWd1cmFibGUAbm9uIGludGVnZXIgaW5kZXggaW4gdHlwZWQgYXJyYXkAbmVnYXRpdmUgaW5kZXggaW4gdHlwZWQgYXJyYXkAb3V0LW9mLWJvdW5kIGluZGV4IGluIHR5cGVkIGFycmF5AGludmFsaWQgZGVzY3JpcHRvciBmbGFncwBjb3VsZCBub3QgZGVsZXRlIHByb3BlcnR5AGludmFsaWQgYXJyYXkgaW5kZXgAJWQAW2Z1bmN0aW9uIGJ5dGVjb2RlXQBjYW5ub3QgY29udmVydCBzeW1ib2wgdG8gc3RyaW5nAFt1bnN1cHBvcnRlZCB0eXBlXQBldmFsX3R5cGUgPT0gSlNfRVZBTF9UWVBFX0dMT0JBTCB8fCBldmFsX3R5cGUgPT0gSlNfRVZBTF9UWVBFX01PRFVMRQBKU19FdmFsVGhpcwBSZWdFeHAAdW5leHBlY3RlZCBkYXRhIGF0IHRoZSBlbmQAICAgICAgICAgIAAAAIwAAABeAAAAXwAAAGAAAABhAAAAYgAAAGMAAABkAAAAZQAAAGYAAABQcm94eQBBoBsL0wHALgAAkC8AAFAwAACwMAAAADEAAFAxAAAMCwUEA
 
gIAALIAAABnAAAAaAAAALMAAABpAAAAagAAALQAAABpAAAAagAAALUAAABAAAAAQQAAALYAAABrAAAAbAAAALcAAABrAAAAbAAAAC8AAABtAAAAbgAAALgAAABAAAAAQQAAALkAAABvAAAAcAAAAFByb21pc2UAQXN5bmNGdW5jdGlvbgBBc3luY0dlbmVyYXRvckZ1bmN0aW9uAERhdGUAT2JqZWN0AEZ1bmN0aW9uAEVycm9yAEGAHQslJlMAADBTAAA7UwAASlMAAFZTAABgUwAAaVMAAHdTAABBcnJheQBBsB0LhTFjb3B5V2l0aGluAGVudHJpZXMAZmlsbABmaW5kAGZpbmRJbmRleABmbGF0AGZsYXRNYXAAaW5jbHVkZXMAa2V5cwB2YWx1ZXMAAE51bWJlcgBCb29sZWFuAFN0cmluZwBTeW1ib2wAR2VuZXJhdG9yRnVuY3Rpb24AZXZhbAAAAAABAQICAgNBcnJheUJ1ZmZlcgBTaGFyZWRBcnJheUJ1ZmZlcgBUeXBlZEFycmF5AEJZVEVTX1BFUl9FTEVNRU5UAERhdGFWaWV3AG1yMSAhPSBOVUxMAGRlbGV0ZV93ZWFrX3JlZgBtci0+ZW1wdHkAbWFwX2RlY3JlZl9yZWNvcmQAc2YtPmN1cl9zcCAhPSBOVUxMAGFzeW5jX2Z1bmNfZnJlZQBzaXplICE9IDAAanNfZGVmX21hbGxvYwAAAG51bGwAZmFsc2UAdHJ1ZQBpZgBlbHNlAHJldHVybgB2YXIAdGhpcwBkZWxldGUAdm9pZAB0eXBlb2YAbmV3AGluAGluc3RhbmNlb2YAZG8Ad2hpbGUAZm9yAGJyZWFrAGNvbnRpbnVlAHN3aXRjaABjYXNlAGRlZmF1bHQAdGhyb3cAdHJ5AGNhdGNoAGZpbmFsbHkAZnVuY3Rpb24AZGVidWdnZXIAd2l0aABjbGFzcwBjb25zdABlbnVtAGV4cG9ydA
 
BleHRlbmRzAGltcG9ydABzdXBlcgBpbXBsZW1lbnRzAGludGVyZmFjZQBsZXQAcGFja2FnZQBwcml2YXRlAHByb3RlY3RlZABwdWJsaWMAc3RhdGljAHlpZWxkAGF3YWl0AABsZW5ndGgAZmlsZU5hbWUAbGluZU51bWJlcgBtZXNzYWdlAGVycm9ycwBzdGFjawBuYW1lAHRvU3RyaW5nAHRvTG9jYWxlU3RyaW5nAHZhbHVlT2YAZXZhbABwcm90b3R5cGUAY29uc3RydWN0b3IAY29uZmlndXJhYmxlAHdyaXRhYmxlAGVudW1lcmFibGUAdmFsdWUAZ2V0AHNldABvZgBfX3Byb3RvX18AdW5kZWZpbmVkAG51bWJlcgBib29sZWFuAHN0cmluZwBvYmplY3QAc3ltYm9sAGludGVnZXIAdW5rbm93bgBhcmd1bWVudHMAY2FsbGVlAGNhbGxlcgA8ZXZhbD4APHJldD4APHZhcj4APGFyZ192YXI+ADx3aXRoPgBsYXN0SW5kZXgAdGFyZ2V0AGluZGV4AGlucHV0AGRlZmluZVByb3BlcnRpZXMAYXBwbHkAam9pbgBjb25jYXQAc3BsaXQAY29uc3RydWN0AGdldFByb3RvdHlwZU9mAHNldFByb3RvdHlwZU9mAGlzRXh0ZW5zaWJsZQBwcmV2ZW50RXh0ZW5zaW9ucwBoYXMAZGVsZXRlUHJvcGVydHkAZGVmaW5lUHJvcGVydHkAZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yAG93bktleXMAYWRkAGRvbmUAbmV4dAB2YWx1ZXMAc291cmNlAGZsYWdzAGdsb2JhbAB1bmljb2RlAHJhdwBuZXcudGFyZ2V0AHRoaXMuYWN0aXZlX2Z1bmMAPGhvbWVfb2JqZWN0PgA8Y29tcHV0ZWRfZmllbGQ+ADxzdGF0aWNfY29tcHV0ZWRfZmllbGQ+ADxjbGFzc19maWV
 
sZHNfaW5pdD4APGJyYW5kPgAjY29uc3RydWN0b3IAYXMAZnJvbQBtZXRhACpkZWZhdWx0KgAqAE1vZHVsZQB0aGVuAHJlc29sdmUAcmVqZWN0AHByb21pc2UAcHJveHkAcmV2b2tlAGFzeW5jAGV4ZWMAZ3JvdXBzAHN0YXR1cwByZWFzb24AZ2xvYmFsVGhpcwB0b0pTT04AT2JqZWN0AEFycmF5AEVycm9yAE51bWJlcgBTdHJpbmcAQm9vbGVhbgBTeW1ib2wAQXJndW1lbnRzAE1hdGgASlNPTgBEYXRlAEZ1bmN0aW9uAEdlbmVyYXRvckZ1bmN0aW9uAEZvckluSXRlcmF0b3IAUmVnRXhwAEFycmF5QnVmZmVyAFNoYXJlZEFycmF5QnVmZmVyAFVpbnQ4Q2xhbXBlZEFycmF5AEludDhBcnJheQBVaW50OEFycmF5AEludDE2QXJyYXkAVWludDE2QXJyYXkASW50MzJBcnJheQBVaW50MzJBcnJheQBGbG9hdDMyQXJyYXkARmxvYXQ2NEFycmF5AERhdGFWaWV3AE1hcABTZXQAV2Vha01hcABXZWFrU2V0AE1hcCBJdGVyYXRvcgBTZXQgSXRlcmF0b3IAQXJyYXkgSXRlcmF0b3IAU3RyaW5nIEl0ZXJhdG9yAFJlZ0V4cCBTdHJpbmcgSXRlcmF0b3IAR2VuZXJhdG9yAFByb3h5AFByb21pc2UAUHJvbWlzZVJlc29sdmVGdW5jdGlvbgBQcm9taXNlUmVqZWN0RnVuY3Rpb24AQXN5bmNGdW5jdGlvbgBBc3luY0Z1bmN0aW9uUmVzb2x2ZQBBc3luY0Z1bmN0aW9uUmVqZWN0AEFzeW5jR2VuZXJhdG9yRnVuY3Rpb24AQXN5bmNHZW5lcmF0b3IARXZhbEVycm9yAFJhbmdlRXJyb3IAUmVmZXJlbmNlRXJyb3IAU3ludGF4RXJyb3IAVHlwZUVycm9y
 
AFVSSUVycm9yAEludGVybmFsRXJyb3IAPGJyYW5kPgBTeW1ib2wudG9QcmltaXRpdmUAU3ltYm9sLml0ZXJhdG9yAFN5bWJvbC5tYXRjaABTeW1ib2wubWF0Y2hBbGwAU3ltYm9sLnJlcGxhY2UAU3ltYm9sLnNlYXJjaABTeW1ib2wuc3BsaXQAU3ltYm9sLnRvU3RyaW5nVGFnAFN5bWJvbC5pc0NvbmNhdFNwcmVhZGFibGUAU3ltYm9sLmhhc0luc3RhbmNlAFN5bWJvbC5zcGVjaWVzAFN5bWJvbC51bnNjb3BhYmxlcwBTeW1ib2wuYXN5bmNJdGVyYXRvcgAAKG5ld19oYXNoX3NpemUgJiAobmV3X2hhc2hfc2l6ZSAtIDEpKSA9PSAwAEpTX1Jlc2l6ZUF0b21IYXNoAGF0b20gPCBydC0+YXRvbV9zaXplAF9fSlNfQXRvbVRvVmFsdWUAc2gtPmhlYWRlci5yZWZfY291bnQgPT0gMABqc19mcmVlX3NoYXBlMABpICE9IDAASlNfRnJlZUF0b21TdHJ1Y3QAcnQtPmF0b21fY291bnQgPj0gMABwLT5yZWZfY291bnQgPT0gMABmcmVlX3plcm9fcmVmY291bnQAcy0+aXNfd2VhawByZXNldF93ZWFrX3JlZgAhbXItPmVtcHR5AAEAAAAFAAEUBQABFQUAARUFAAEXBQABFwEAAQABAAEAAQABAAEAAQABAAEAAQABAAIAAQUDAAEKAQEAAAECAQABAwIAAQECAAECAwABAgQAAQMGAAECAwABAwQAAQQFAAEDAwABBAQAAQUFAAECAgABBAQAAQMDAAEDAwABBAQAAQUFAAMCAQ0DAQENAwEADQMCAQ0DAgANAwABDQMDAQoBAQAAAQAAAAEBAgABAAAAAQICAAECAAABAQAAAQEAAAYAABgFAQEPAwIBCgECAQABAQEAAQEBAAUAARcFAAEXBQABFwUBA
 
BcFAQAXBQIAFwECAwABAwAABgAAGAYAABgGAQAYBQEBFwUBAhcFAgAXAQIBAAEDAAABAwEAAQIBAAECAgABAwAAAQMBAAEEAAAFAgEXBQEBFwECAgABAgEAAQICAAEDAgABAwIAAgMDBQYCARgCAwEFBgICGAYDAxgDAAEQAwEAEAMBARADAAERAwEAEQMBAREDAAESAwEAEgMBARIDAAAQAwABEAMBABADAQAQAwABEgMBABIDAQASAwAAEAUBABYFAQAWBQAAFgUAARYFAAAWAQEAAAEBAQABAQEAAQICAAoBABoKAgEaCgEAGgoBABoKAQAaCgEAGgcAAhkHAAIZBwACGQUAAhcBAQEAAQEDAAEBAwABAQMAAgMFBQEBAQABAQIAAQMAAAEEBAABBAQAAgQFBQEAAAABAQIAAQECAAEBAgABAQEAAQEBAAEBAQABAQEAAQEBAAEBAgABAQIAAgAABwIAAAcCAQAHAQEBAAEBAQABAQEAAQIBAAUAARcBAgEAAQIBAAECAQABAgEAAQIBAAECAQABAgEAAQIBAAECAQABAgEAAQIBAAECAQABAgEAAQIBAAECAQABAgEAAQIBAAECAQABAgEAAQIBAAECAQABAgEAAQEBAAEAAAADAAAKAwAACgUAABYHAAEZBwABGQcBABkHAAEZCwACGwcAAhkHAAIZBwEBGQcBAhkHAQEZBQEBEwUAABMBAAEBAQABAQEAAQEBAAEBAQABAQEAAQEBAAEBAQABAQEAAQECAAEGAwABCwIAAQgCAAEIAQABAAIAAQcCAQAHAgEBBwEAAQIBAAECAQABAgEAAQIBAQACAQEAAgEBAAIBAQACAQEBAgEBAQIBAQECAQEBAgEAAQMBAAEDAQABAwEAAQMBAQADAQEAAwEBAAMBAQADAQEBAwEBAQMBAQEDAQEBAwEAAQQBAAEEAQABBAEAAQQBAQAEAQEABAEBAAQBAQAEAQEBBAEBAQQBAQ
 
EEAQEBBAEBAQACAQAJAgEACQIAAAkDAAAMAQEBDgEBAQ4BAQEOAQEBDgEBAQABAQEAAQEBAAEBAQBwLT5tYXJrID09IDAAZ2NfZGVjcmVmAHZhcl9yZWYtPmlzX2RldGFjaGVkAG1hcmtfY2hpbGRyZW4AcC0+cmVmX2NvdW50ID4gMABnY19kZWNyZWZfY2hpbGQAZ2Nfc2NhbgBwLT5nY19vYmpfdHlwZSA9PSBKU19HQ19PQkpfVFlQRV9KU19PQkpFQ1QgfHwgcC0+Z2Nfb2JqX3R5cGUgPT0gSlNfR0NfT0JKX1RZUEVfRlVOQ1RJT05fQllURUNPREUAZ2NfZnJlZV9jeWNsZXMASlNfQXRvbUdldFN0clJUADxudWxsPgAhYXRvbV9pc19mcmVlKHApAGNpcmN1bGFyIHByb3RvdHlwZSBjaGFpbgBwcm94eTogYmFkIHByb3RvdHlwZQBwcm94eTogaW5jb25zaXN0ZW50IHByb3RvdHlwZQByZXZva2VkIHByb3h5AG9wZXJhbmQgJ3Byb3RvdHlwZScgcHJvcGVydHkgaXMgbm90IGFuIG9iamVjdABpbnRlcnJ1cHRlZAAlcyBpcyBub3QgaW5pdGlhbGl6ZWQAbGV4aWNhbCB2YXJpYWJsZQAAAHEAAAByAAAAcwAAAENvdWxkIG5vdCBmaW5kIGV4cG9ydCAnJXMnIGluIG1vZHVsZSAnJXMnAGNpcmN1bGFyIHJlZmVyZW5jZSB3aGVuIGxvb2tpbmcgZm9yIGV4cG9ydCAnJXMnIGluIG1vZHVsZSAnJXMnAGV4cG9ydCAnJXMnIGluIG1vZHVsZSAnJXMnIGlzIGFtYmlndW91cwAocHItPnUuaW5pdC5yZWFsbV9hbmRfaWQgJiAzKSA9PSAwAEpTX0RlZmluZUF1dG9Jbml0UHJvcGVydHkAJyVzJyBpcyBub3QgZGVmaW5lZABudW1faW5kZXggPT0
 
gbnVtX2tleXNfY291bnQASlNfR2V0T3duUHJvcGVydHlOYW1lc0ludGVybmFsAHN0cl9pbmRleCA9PSBudW1fa2V5c19jb3VudCArIHN0cl9rZXlzX2NvdW50AHN5bV9pbmRleCA9PSBhdG9tX2NvdW50AEpTX0F0b21Jc0FycmF5SW5kZXgAYXRvbTFfaXNfaW50ZWdlciAmJiBhdG9tMl9pc19pbnRlZ2VyAG51bV9rZXlzX2NtcABqc19nZXRfYXRvbV9pbmRleABub3QgY29uZmlndXJhYmxlAG5vIHNldHRlciBmb3IgcHJvcGVydHkAJyVzJyBpcyByZWFkLW9ubHkAcC0+c2hhcGUtPmhlYWRlci5yZWZfY291bnQgPT0gMQBhZGRfcHJvcGVydHkAJWxsZABjYW5ub3QgY3JlYXRlIG51bWVyaWMgaW5kZXggaW4gdHlwZWQgYXJyYXkAdmFyX3JlZi0+aGVhZGVyLnJlZl9jb3VudCA+IDAAZnJlZV92YXJfcmVmAEpTX0F0b21Jc051bWVyaWNJbmRleDEAAG4AZgBpAG4AaQB0AHkAbmZpbml0eQAhc2gtPmlzX2hhc2hlZABjb21wYWN0X3Byb3BlcnRpZXMAbmV3X3NpemUgPD0gc2gtPnByb3Bfc2l6ZQBqID09IChzaC0+cHJvcF9jb3VudCAtIHNoLT5kZWxldGVkX3Byb3BfY291bnQpACVzIG9iamVjdCBleHBlY3RlZABjYW5ub3QgY29udmVydCBzeW1ib2wgdG8gbnVtYmVyAHRvUHJpbWl0aXZlAEluZmluaXR5AGludmFsaWQgYXJyYXkgbGVuZ3RoAE5hTgAlLipmAG4gPCBidWZfc2l6ZQBqc19mY3Z0MQAlKy4qZQBtdXN0IGJlIGNhbGxlZCB3aXRoIG5ldwBub3QgYSBmdW5jdGlvbgBkZXJpdmVkIGNsYXNzIGNvbnN0cnVjdG9yIG11
 
c3QgcmV0dXJuIGFuIG9iamVjdCBvciB1bmRlZmluZWQAY2xhc3MgY29uc3RydWN0b3JzIG11c3QgYmUgaW52b2tlZCB3aXRoICduZXcnAHVuc3VwcG9ydGVkIHJlZmVyZW5jZSB0byAnc3VwZXInAGl0ZXJhdG9yIGRvZXMgbm90IGhhdmUgYSB0aHJvdyBtZXRob2QAaW52YWxpZCB0aHJvdyB2YXIgdHlwZSAlZAAndGhpcycgY2FuIGJlIGluaXRpYWxpemVkIG9ubHkgb25jZQBpbnZhbGlkIHJldCB2YWx1ZQBpdGVyYXRvciBtdXN0IHJldHVybiBhbiBvYmplY3QAaXRlcmF0b3JfY2xvc2VfcmV0dXJuAHZhbHVlIGhhcyBubyBwcm9wZXJ0eQBpbnZhbGlkIG9wY29kZTogcGM9JXUgb3Bjb2RlPTB4JTAyeAAADQAQAC0AMQBpbXBvcnQubWV0YSBub3Qgc3VwcG9ydGVkIGluIHRoaXMgY29udGV4dABleHBlY3RpbmcgPGJyYW5kPiBwcml2YXRlIGZpZWxkAGludmFsaWQgYnJhbmQgb24gb2JqZWN0AHJlZGVjbGFyYXRpb24gb2YgJyVzJwA8aW5wdXQ+AG5vdCBhIG9iamVjdAB0b28gbWFueSBhcmd1bWVudHMAc3RyaW5nIGV4cGVjdGVkAG5vIGZ1bmN0aW9uIGZpbGVuYW1lIGZvciBpbXBvcnQoKQBjYW5ub3QgZGVmaW5lIHZhcmlhYmxlICclcycAdmFsdWUgaXMgbm90IGl0ZXJhYmxlACFfX0pTX0F0b21Jc1RhZ2dlZEludChkZXNjcikASlNfTmV3U3ltYm9sRnJvbUF0b20AZGVzY3IgPCBydC0+YXRvbV9zaXplAG5vdCBhIHN5bWJvbABwcml2YXRlIGNsYXNzIGZpZWxkICclcycgZG9lcyBub3QgZXhpc3QAcHJpdmF0ZSBjbGFzc
 
yBmaWVsZCAnJXMnIGFscmVhZHkgZXhpc3RzAFsAXQBnZXQgAHNldCAAcGFyZW50IGNsYXNzIG11c3QgYmUgY29uc3RydWN0b3IAcGFyZW50IHByb3RvdHlwZSBtdXN0IGJlIGFuIG9iamVjdCBvciBudWxsAGItPmZ1bmNfa2luZCA9PSBKU19GVU5DX05PUk1BTABqc19vcF9kZWZpbmVfY2xhc3MAcmVjZWl2ZXIgaXMgbm90IGFuIG9iamVjdABzZXR0ZXIgaXMgZm9yYmlkZGVuAGludmFsaWQgaW5kZXggZm9yIGFwcGVuZABudWxsIG9yIHVuZGVmaW5lZCBhcmUgZm9yYmlkZGVuAGludmFsaWQgJ2luJyBvcGVyYW5kAG5vdCBhIGNvbnN0cnVjdG9yACAgICBhdCAlcwA6JWQAPGFub255bW91cz4AICglcwAgKG5hdGl2ZSkAZHVwbGljYXRlIGV4cG9ydGVkIG5hbWUgJyVzJwBjb3VsZCBub3QgbG9hZCBtb2R1bGUgJyVzJwAuAC4uAGJ5dGVjb2RlIGZ1bmN0aW9uIGV4cGVjdGVkAGV2YWwgaXMgbm90IHN1cHBvcnRlZABjaXJjdWxhciByZWZlcmVuY2UAZ2V0ICVzAHNldCAlcwBjYW5ub3QgY29udmVydCB0byBvYmplY3QAbm9ybWFsaXplAEHAzgAL9QEsJwAAAwAAAAAAAAB0AAAAYmFkIG5vcm1hbGl6YXRpb24gZm9ybQBpbnZhbGlkIHJlZ3VsYXIgZXhwcmVzc2lvbiBmbGFncwAlcwBmbGFncwBzb3VyY2UAZ2xvYmFsAGlnbm9yZUNhc2UAbXVsdGlsaW5lAGRvdEFsbAB1bmljb2RlAHN0aWNreQBleGVjAGNvbXBpbGUAdGVzdAB0b1N0cmluZwBbU3ltYm9sLnJlcGxhY2VdAFtTeW1ib2wubWF0Y2hdAFtTeW1ib2wubWF0Y2hBbG
 
xdAFtTeW1ib2wuc2VhcmNoXQBbU3ltYm9sLnNwbGl0XQBBwNAAC+ADiycAAAEBAAB1AAAAAAAAAJEnAAABAQAAdgAAAAAAAACYJwAAAQIBAHcAAAAAAAAAnycAAAECAgB3AAAAAAAAAKonAAABAgQAdwAAAAAAAAC0JwAAAQIIAHcAAAAAAAAAuycAAAECEAB3AAAAAAAAAMMnAAABAiAAdwAAAAAAAADKJwAAAwAAAAEAAAAwAAAAzycAAAMAAAACAAAAeAAAANcnAAADAAAAAQAAAHkAAADcJwAAAwAAAAAAAAB6AAAA5ScAAAMAAAACAAAAewAAAPYnAAADAAAAAQAAAHwAAAAFKAAAAwAAAAEAAAB9AAAAFygAAAMAAAABAAAAfgAAACcoAAADAAAAAgAAAH8AAAAoPzopAG91dCBvZiBtZW1vcnkgaW4gcmVnZXhwIGV4ZWN1dGlvbgBmbGFncyBtdXN0IGJlIHVuZGVmaW5lZABSZWdFeHAgZXhlYyBtZXRob2QgbXVzdCByZXR1cm4gYW4gb2JqZWN0IG9yIG51bGwAbm90IGEgc3RyaW5nAHkAW1N5bWJvbC5zcGVjaWVzXQDPKQAAAQEAAIAAAAAAAAAAbmV4dABbU3ltYm9sLnRvU3RyaW5nVGFnXQBSZWdFeHAgU3RyaW5nIEl0ZXJhdG9yAEGw1AAL1wrwKQAAAwAAAAAMAACBAAAA9SkAAAEDAAAKKgAAAAAAAHVuZXhwZWN0ZWQgZW5kIG9mIGNvbW1lbnQAdW5leHBlY3RlZCBjaGFyYWN0ZXIAaW52YWxpZCBjaGFyYWN0ZXIgaW4gYSBKU09OIHN0cmluZwBvY3RhbCBlc2NhcGUgc2VxdWVuY2VzIGFyZSBub3QgYWxsb3dlZCBpbiBzdHJpY3QgbW9kZQBtYWxmb3JtZWQgZXNjYXBlIHNlcXVlbmNlIGluIHN0cmluZyBsaXRlcmFsAGludmFsaWQ
 
gVVRGLTggc2VxdWVuY2UAdW5leHBlY3RlZCBlbmQgb2Ygc3RyaW5nAGV4cGVjdGluZyBwcm9wZXJ0eSBuYW1lAHVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0AHVuZXhwZWN0ZWQgdG9rZW46ICclLipzJwBleHBlY3RpbmcgJyVjJwAgAFx1JTA0eABBcnJheSBsb28gbG9uZwBKU09OAAAAAAAAAACkKwAAAwgAANArAAADAAAAcGFyc2UAc3RyaW5naWZ5AMArAAADAAAAAgAAAIIAAADGKwAAAwAAAAMAAACDAAAA9SkAAAEDAACkKwAAAAAAAHByb3h5OiBpbmNvbnNpc3RlbnQgaXNFeHRlbnNpYmxlAHByb3h5OiBpbmNvbnNpc3RlbnQgcHJldmVudEV4dGVuc2lvbnMAcHJveHk6IGluY29uc2lzdGVudCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IAaW52YWxpZCBnZXR0ZXIAaW52YWxpZCBzZXR0ZXIAY2Fubm90IGhhdmUgc2V0dGVyL2dldHRlciBhbmQgdmFsdWUgb3Igd3JpdGFibGUAcHJveHk6IHByb3BlcnRpZXMgbXVzdCBiZSBzdHJpbmdzIG9yIHN5bWJvbHMAcHJveHk6IGR1cGxpY2F0ZSBwcm9wZXJ0eQBwcm94eTogdGFyZ2V0IHByb3BlcnR5IG11c3QgYmUgcHJlc2VudCBpbiBwcm94eSBvd25LZXlzAHByb3h5OiBwcm9wZXJ0eSBub3QgcHJlc2VudCBpbiB0YXJnZXQgd2VyZSByZXR1cm5lZCBieSBub24gZXh0ZW5zaWJsZSBwcm94eQBwcm94eTogaW5jb25zaXN0ZW50IGRlbGV0ZVByb3BlcnR5AHByb3h5OiBkZWZpbmVQcm9wZXJ0eSBleGNlcHRpb24AcHJveHk6IGluY29uc2lzdGVudCBkZWZpbmVQcm9wZXJ0eQBwcm94
 
eTogaW5jb25zaXN0ZW50IGhhcwBwcm94eTogaW5jb25zaXN0ZW50IGdldABwcm94eTogaW5jb25zaXN0ZW50IHNldABwcm94eTogY2Fubm90IHNldCBwcm9wZXJ0eQByZXZvY2FibGUAVi4AAAMAAAACAAAAhAAAAHNldABnZXQAaGFzAGRlbGV0ZQBjbGVhcgBzaXplAGZvckVhY2gAdmFsdWVzAGtleXMAZW50cmllcwBbU3ltYm9sLml0ZXJhdG9yXQBNYXAAcC4AAAMAAAACAQAAhQAAAHQuAAADAAAAAQEAAIYAAAB4LgAAAwAAAAEBAACHAAAAfC4AAAMAAAABAQAAiAAAAIMuAAADAAAAAAEAAIkAAACJLgAAAQIAAIoAAAAAAAAAji4AAAMAAAABAQAAiwAAAJYuAAADAAQAAAEAAIwAAACdLgAAAwAAAAABAACMAAAAoi4AAAMACAAAAQAAjAAAAKouAAADCQAAoi4AAP/////1KQAAAQMAALwuAAAAAAAAYWRkAFNldABBkN8AC7cBgC8AAAMAAQABAQAAhQAAAHguAAADAAEAAQEAAIcAAAB8LgAAAwABAAEBAACIAAAAgy4AAAMAAQAAAQAAiQAAAIkuAAABAgEAigAAAAAAAACOLgAAAwABAAEBAACLAAAAli4AAAMAAQAAAQAAjAAAAJ0uAAADCQAAli4AAP////+qLgAAAwkAAJYuAAD/////oi4AAAMACQAAAQAAjAAAAPUpAAABAwAAhC8AAAAAAABXZWFrTWFwAEHQ4AALV3AuAAADAAIAAgEAAIUAAAB0LgAAAwACAAEBAACGAAAAeC4AAAMAAgABAQAAhwAAAHwuAAADAAIAAQEAAIgAAAD1KQAAAQMAAEAwAAAAAAAAV2Vha1NldABBsOEAC4IDgC8AAAMAAwABAQAAhQAAAHguAAADAAMAAQEAAIcAAAB8LgAAAwADAAEBAACIAAAA9SkAAAEDA
 
ACgMAAAAAAAAE1hcCBJdGVyYXRvcgAAAADwKQAAAwAAAAAMAACNAAAA9SkAAAEDAADwMAAAAAAAAHMgIT0gTlVMTABqc19tYXBfaXRlcmF0b3JfbmV4dABTZXQgSXRlcmF0b3IAAAAAAPApAAADAAEAAAwAAI0AAAD1KQAAAQMAAD8xAAAAAAAAc2V0L2FkZCBpcyBub3QgYSBmdW5jdGlvbgAAAAAAAADPKQAAAQEAAIAAAAAAAAAAcmVzb2x2aW5nIGZ1bmN0aW9uIGFscmVhZHkgc2V0AHByb21pc2Ugc2VsZiByZXNvbHV0aW9uAGFyZ2MgPT0gNQBwcm9taXNlX3JlYWN0aW9uX2pvYgBhcmdjID09IDMAanNfcHJvbWlzZV9yZXNvbHZlX3RoZW5hYmxlX2pvYgB0aGVuAGNhdGNoAGZpbmFsbHkAQcDkAAtmIDIAAAMAAAACAAAAjgAAACUyAAADAAAAAQAAAI8AAAArMgAAAwAAAAEAAACQAAAA9SkAAAEDAAAsDgAAAAAAAHJlc29sdmUAcmVqZWN0AGFsbABhbGxTZXR0bGVkAGFueQByYWNlAEGw5QAL1gGAMgAAAwAAAAEBAACRAAAAiDIAAAMAAQABAQAAkQAAAI8yAAADAAAAAQEAAJIAAACTMgAAAwABAAEBAACSAAAAnjIAAAMAAgABAQAAkgAAAKIyAAADAAAAAQAAAJMAAADPKQAAAQEAAIAAAAAAAAAAcmVqZWN0ZWQAZnVsZmlsbGVkAGFzeW5jIABmdW5jdGlvbgAgYW5vbnltb3VzKAAKKSB7CgAKfSkAAAAAAAAAAPUpAAABAwAANA4AAAAAAABbU3ltYm9sLmFzeW5jSXRlcmF0b3JdAEGQ5wALkwhwMwAAAwAAAAAAAACUAAAAcmV0dXJuAHRocm93AAAAAPApAAADAAAAAQEAAJUAAACgMwAAAwABAAEBAACVAAAApzMAAAMAAgABAQAAlQ
 
AAAG5vdCBhbiBBc3luYy1mcm9tLVN5bmMgSXRlcmF0b3IAQXN5bmNHZW5lcmF0b3IAAPApAAADAAAAAQEAAJYAAACgMwAAAwABAAEBAACWAAAApzMAAAMAAgABAQAAlgAAAPUpAAABAwAAADQAAAAAAABub3QgYW4gQXN5bmNHZW5lcmF0b3Igb2JqZWN0AEpTX0lzVW5kZWZpbmVkKGZ1bmNfcmV0KQBqc19hc3luY19nZW5lcmF0b3JfcmVzdW1lX25leHQAcy0+c3RhdGUgPT0gSlNfQVNZTkNfR0VORVJBVE9SX1NUQVRFX0FXQUlUSU5HX1JFVFVSTiB8fCBzLT5zdGF0ZSA9PSBKU19BU1lOQ19HRU5FUkFUT1JfU1RBVEVfQ09NUExFVEVEAGpzX2FzeW5jX2dlbmVyYXRvcl9yZXNvbHZlX2Z1bmN0aW9uAHMtPnN0YXRlID09IEpTX0FTWU5DX0dFTkVSQVRPUl9TVEFURV9FWEVDVVRJTkcAAPUpAAABAwAAQg4AAAAAAAB2YWx1ZU9mAFtTeW1ib2wudG9QcmltaXRpdmVdAHRvVVRDU3RyaW5nAHRvR01UU3RyaW5nAHRvSVNPU3RyaW5nAHRvRGF0ZVN0cmluZwB0b1RpbWVTdHJpbmcAdG9Mb2NhbGVTdHJpbmcAdG9Mb2NhbGVEYXRlU3RyaW5nAHRvTG9jYWxlVGltZVN0cmluZwBnZXRUaW1lem9uZU9mZnNldABnZXRUaW1lAGdldFllYXIAZ2V0RnVsbFllYXIAZ2V0VVRDRnVsbFllYXIAZ2V0TW9udGgAZ2V0VVRDTW9udGgAZ2V0RGF0ZQBnZXRVVENEYXRlAGdldEhvdXJzAGdldFVUQ0hvdXJzAGdldE1pbnV0ZXMAZ2V0VVRDTWludXRlcwBnZXRTZWNvbmRzAGdldFVUQ1NlY29uZHMAZ2V0TWlsbGlzZWNvbmRzAGdldFVUQ01pbGxpc2V
 
jb25kcwBnZXREYXkAZ2V0VVRDRGF5AHNldFRpbWUAc2V0TWlsbGlzZWNvbmRzAHNldFVUQ01pbGxpc2Vjb25kcwBzZXRTZWNvbmRzAHNldFVUQ1NlY29uZHMAc2V0TWludXRlcwBzZXRVVENNaW51dGVzAHNldEhvdXJzAHNldFVUQ0hvdXJzAHNldERhdGUAc2V0VVRDRGF0ZQBzZXRNb250aABzZXRVVENNb250aABzZXRZZWFyAHNldEZ1bGxZZWFyAHNldFVUQ0Z1bGxZZWFyAHRvSlNPTgBBsO8AC7YGcDUAAAMAAAAAAAAAlwAAANwnAAADABMAAAEAAJgAAAB4NQAAAwAAAAEAAACZAAAAjTUAAAMAAwAAAQAAmAAAAJk1AAADCQAAjTUAAP////+lNQAAAwAjAAABAACYAAAAsTUAAAMAEQAAAQAAmAAAAL41AAADABIAAAEAAJgAAADLNQAAAwAzAAABAACYAAAA2jUAAAMAMQAAAQAAmAAAAO01AAADADIAAAEAAJgAAAAANgAAAwAAAAAAAACaAAAAEjYAAAMAAAAAAAAAlwAAABo2AAADAAEBAAEAAJsAAAAiNgAAAwABAAABAACbAAAALjYAAAMAAAAAAQAAmwAAAD02AAADABEAAAEAAJsAAABGNgAAAwAQAAABAACbAAAAUjYAAAMAIQAAAQAAmwAAAFo2AAADACAAAAEAAJsAAABlNgAAAwAxAAABAACbAAAAbjYAAAMAMAAAAQAAmwAAAHo2AAADAEEAAAEAAJsAAACFNgAAAwBAAAABAACbAAAAkzYAAAMAUQAAAQAAmwAAAJ42AAADAFAAAAEAAJsAAACsNgAAAwBhAAABAACbAAAAvDYAAAMAYAAAAQAAmwAAAM82AAADAHEAAAEAAJsAAADWNgAAAwBwAAABAACbAAAA4DYAAAMAAAABAAAAnAAAAOg2AAADAHEGAQEAAJ0AAAD4NgAAAwBwBgEB
 
AACdAAAACzcAAAMAcQUCAQAAnQAAABY3AAADAHAFAgEAAJ0AAAAkNwAAAwBxBAMBAACdAAAALzcAAAMAcAQDAQAAnQAAAD03AAADAHEDBAEAAJ0AAABGNwAAAwBwAwQBAACdAAAAUjcAAAMAMQIBAQAAnQAAAFo3AAADADACAQEAAJ0AAABlNwAAAwAxAQIBAACdAAAAbjcAAAMAMAECAQAAnQAAAHo3AAADAAAAAQAAAJ4AAACCNwAAAwAxAAMBAACdAAAAjjcAAAMAMAADAQAAnQAAAJ03AAADAAAAAQAAAJ8AAABub3QgYSBEYXRlIG9iamVjdABEYXRlIHZhbHVlIGlzIE5hTgBJbnZhbGlkIERhdGUAJS4zcywgJTAyZCAlLjNzICUwKmQgAEHw9QALFVN1bk1vblR1ZVdlZFRodUZyaVNhdABBkPYAC6IBSmFuRmViTWFyQXByTWF5SnVuSnVsQXVnU2VwT2N0Tm92RGVjACUuM3MgJS4zcyAlMDJkICUwKmQAJTA0ZAAlKzA3ZAAtJTAyZC0lMDJkVAAlMDJkLyUwMmQvJTAqZAAlMDJkOiUwMmQ6JTAyZCBHTVQAJTAyZCUwMmQAJTAyZDolMDJkOiUwMmQuJTAzZFoAJTAyZDolMDJkOiUwMmQgJWNNAEHA9wALZB8AAAAcAAAAHwAAAB4AAAAfAAAAHgAAAB8AAAAfAAAAHgAAAB8AAAAeAAAAHwAAAGludmFsaWQgaGludABvYmplY3QgbmVlZHMgdG9JU09TdHJpbmcgbWV0aG9kAG5vdwBVVEMAQbD4AAugLB08AAADAAAAAAAAAKAAAADAKwAAAwAAAAEAAAChAAAAITwAAAMAAAAHAAAAogAAAHNmICE9IE5VTEwAX19KU19FdmFsSW50ZXJuYWwASlNfVkFMVUVfR0VUX1RBRyhzZi0+Y3VyX2Z1bmMpID09IEpTX1RBR19PQkpFQ1QAanNfY2xhc3Nfa
 
GFzX2J5dGVjb2RlKHAtPmNsYXNzX2lkKQBpbnZhbGlkIGZpcnN0IGNoYXJhY3RlciBvZiBwcml2YXRlIG5hbWUAb2N0YWwgbGl0ZXJhbHMgYXJlIGRlcHJlY2F0ZWQgaW4gc3RyaWN0IG1vZGUAaW52YWxpZCBudW1iZXIgbGl0ZXJhbAAlLipzAHVzZSBzdHJpY3QAdXNlIHN0cmlwAHRvbyBtYW55IGxvY2FsIHZhcmlhYmxlcwBmdW5jdGlvbiBuYW1lIGV4cGVjdGVkAGludmFsaWQgcmVkZWZpbml0aW9uIG9mIGdsb2JhbCBpZGVudGlmaWVyIGluIG1vZHVsZSBjb2RlAGludmFsaWQgcmVkZWZpbml0aW9uIG9mIGdsb2JhbCBpZGVudGlmaWVyAG1pc3NpbmcgZm9ybWFsIHBhcmFtZXRlcgBpbnZhbGlkIG51bWJlciBvZiBhcmd1bWVudHMgZm9yIGdldHRlciBvciBzZXR0ZXIAJyVzJyBpcyBhIHJlc2VydmVkIGlkZW50aWZpZXIAaW52YWxpZCByZWRlZmluaXRpb24gb2YgbGV4aWNhbCBpZGVudGlmaWVyAGludmFsaWQgcmVkZWZpbml0aW9uIG9mIHBhcmFtZXRlciBuYW1lAGludmFsaWQgcmVkZWZpbml0aW9uIG9mIGEgdmFyaWFibGUAdW5leHBlY3RlZCBlbmQgb2YgcmVnZXhwAHVuZXhwZWN0ZWQgbGluZSB0ZXJtaW5hdG9yIGluIHJlZ2V4cAB1bmV4cGVjdGVkIGVsbGlwc2lzIHRva2VuAGFzc2lnbm1lbnQgcmVzdCBwcm9wZXJ0eSBtdXN0IGJlIGxhc3QAaW52YWxpZCBkZXN0cnVjdHVyaW5nIHRhcmdldABtaXNzaW5nIGJpbmRpbmcgcGF0dGVybi4uLgByZXN0IGVsZW1lbnQgY2Fubm90IGhhdmUgYSBkZWZhdWx0IHZhbH
 
VlAHJlc3QgZWxlbWVudCBtdXN0IGJlIHRoZSBsYXN0IG9uZQBpbnZhbGlkIGFzc2lnbm1lbnQgc3ludGF4AHRvbyBjb21wbGljYXRlZCBkZXN0cnVjdHVyaW5nIGV4cHJlc3Npb24AUmVnRXhwIGFyZSBub3Qgc3VwcG9ydGVkACdhcmd1bWVudHMnIGlkZW50aWZpZXIgaXMgbm90IGFsbG93ZWQgaW4gY2xhc3MgZmllbGQgaW5pdGlhbGl6ZXIAZXhwZWN0aW5nIHRhcmdldABuZXcudGFyZ2V0IG9ubHkgYWxsb3dlZCB3aXRoaW4gZnVuY3Rpb25zAHN1cGVyKCkgaXMgb25seSB2YWxpZCBpbiBhIGRlcml2ZWQgY2xhc3MgY29uc3RydWN0b3IAJ3N1cGVyJyBpcyBvbmx5IHZhbGlkIGluIGEgbWV0aG9kAGludmFsaWQgdXNlIG9mICdzdXBlcicAbWV0YSBleHBlY3RlZABpbXBvcnQubWV0YSBvbmx5IHZhbGlkIGluIG1vZHVsZSBjb2RlAGludmFsaWQgdXNlIG9mICdpbXBvcnQoKScAdW5leHBlY3RlZCB0b2tlbiBpbiBleHByZXNzaW9uOiAnJS4qcycAdGVtcGxhdGUgbGl0ZXJhbCBjYW5ub3QgYXBwZWFyIGluIGFuIG9wdGlvbmFsIGNoYWluAFRvbyBtYW55IGNhbGwgYXJndW1lbnRzAHByaXZhdGUgY2xhc3MgZmllbGQgZm9yYmlkZGVuIGFmdGVyIHN1cGVyAGV4cGVjdGluZyBmaWVsZCBuYW1lAGV4cGVjdGVkICd9JyBhZnRlciB0ZW1wbGF0ZSBleHByZXNzaW9uAGNsYXNzIHN0YXRlbWVudCByZXF1aXJlcyBhIG5hbWUAaW52YWxpZCBtZXRob2QgbmFtZQBpbnZhbGlkIGZpZWxkIG5hbWUAcHJvcGVydHkgY29uc3RydWN0b3I
 
gYXBwZWFycyBtb3JlIHRoYW4gb25jZQBwcml2YXRlIGNsYXNzIGZpZWxkIGlzIGFscmVhZHkgZGVmaW5lZAA8c2V0PgBmZC0+Ynl0ZV9jb2RlLmJ1ZltkZWZpbmVfY2xhc3NfcG9zXSA9PSBPUF9kZWZpbmVfY2xhc3MAc2V0X29iamVjdF9uYW1lX2NvbXB1dGVkACgpe3N1cGVyKC4uLmFyZ3VtZW50cyk7fQAoKXt9AGR1cGxpY2F0ZSBfX3Byb3RvX18gcHJvcGVydHkgbmFtZQB1bmV4cGVjdGVkICd5aWVsZCcga2V5d29yZAB5aWVsZCBpbiBkZWZhdWx0IGV4cHJlc3Npb24AmpucnZ6goaKtrq+fY2Fubm90IG1peCA/PyB3aXRoICYmIG9yIHx8AHVuZXhwZWN0ZWQgJ2F3YWl0JyBrZXl3b3JkAGF3YWl0IGluIGRlZmF1bHQgZXhwcmVzc2lvbgB1bnBhcmVudGhlc2l6ZWQgdW5hcnkgZXhwcmVzc2lvbiBjYW4ndCBhcHBlYXIgb24gdGhlIGxlZnQtaGFuZCBzaWRlIG9mICcqKicAY2Fubm90IGRlbGV0ZSBhIGRpcmVjdCByZWZlcmVuY2UgaW4gc3RyaWN0IG1vZGUAY2Fubm90IGRlbGV0ZSBhIHByaXZhdGUgY2xhc3MgZmllbGQAaW52YWxpZCBsdmFsdWUgaW4gc3RyaWN0IG1vZGUAaW52YWxpZCBmb3IgaW4vb2YgbGVmdCBoYW5kLXNpZGUAaW52YWxpZCBpbmNyZW1lbnQvZGVjcmVtZW50IG9wZXJhbmQAaW52YWxpZCBhc3NpZ25tZW50IGxlZnQtaGFuZCBzaWRlAGxhYmVsID49IDAgJiYgbGFiZWwgPCBzLT5sYWJlbF9jb3VudAB1cGRhdGVfbGFiZWwAbHMtPnJlZl9jb3VudCA+PSAwAGludmFsaWQgcHJvcGVydHkgbmFtZQBk
 
dXBsaWNhdGUgcGFyYW1ldGVyIG5hbWVzIG5vdCBhbGxvd2VkIGluIHRoaXMgY29udGV4dAB5aWVsZCBpcyBhIHJlc2VydmVkIGlkZW50aWZpZXIAaW52YWxpZCB2YXJpYWJsZSBuYW1lIGluIHN0cmljdCBtb2RlAGludmFsaWQgbGV4aWNhbCB2YXJpYWJsZSBuYW1lAHNwZWNpYWwgPT0gUFVUX0xWQUxVRV9OT0tFRVAgfHwgc3BlY2lhbCA9PSBQVVRfTFZBTFVFX05PS0VFUF9ERVBUSABwdXRfbHZhbHVlAHNldF9vYmplY3RfbmFtZQAidXNlIHN0cmljdCIgbm90IGFsbG93ZWQgaW4gZnVuY3Rpb24gd2l0aCBkZWZhdWx0IG9yIGRlc3RydWN0dXJpbmcgcGFyYW1ldGVyAGludmFsaWQgZnVuY3Rpb24gbmFtZSBpbiBzdHJpY3QgY29kZQBpbnZhbGlkIGFyZ3VtZW50IG5hbWUgaW4gc3RyaWN0IGNvZGUAZHVwbGljYXRlIGFyZ3VtZW50IG5hbWVzIG5vdCBhbGxvd2VkIGluIHRoaXMgY29udGV4dABpZGVudGlmaWVyIGV4cGVjdGVkAGludmFsaWQgZXhwb3J0IHN5bnRheABmcm9tIGNsYXVzZSBleHBlY3RlZAAnbGV0JyBpcyBub3QgYSB2YWxpZCBsZXhpY2FsIGlkZW50aWZpZXIAbWlzc2luZyBpbml0aWFsaXplciBmb3IgY29uc3QgdmFyaWFibGUAdmFyaWFibGUgbmFtZSBleHBlY3RlZABleHBlY3RpbmcgJ2FzJwBpbnZhbGlkIGltcG9ydCBiaW5kaW5nAGR1cGxpY2F0ZSBpbXBvcnQgYmluZGluZwB0b28gbWFueSBjbG9zdXJlIHZhcmlhYmxlcwBkdXBsaWNhdGUgbGFiZWwgbmFtZQByZXR1cm4gbm90IGluIGEgZnVuY3Rpb
 
24AbGluZSB0ZXJtaW5hdG9yIG5vdCBhbGxvd2VkIGFmdGVyIHRocm93AGxleGljYWwgZGVjbGFyYXRpb25zIGNhbid0IGFwcGVhciBpbiBzaW5nbGUtc3RhdGVtZW50IGNvbnRleHQAZm9yIGF3YWl0IGlzIG9ubHkgdmFsaWQgaW4gYXN5bmNocm9ub3VzIGZ1bmN0aW9ucwBkdXBsaWNhdGUgZGVmYXVsdABpbnZhbGlkIHN3aXRjaCBzdGF0ZW1lbnQAZXhwZWN0aW5nIGNhdGNoIG9yIGZpbmFsbHkAaW52YWxpZCBrZXl3b3JkOiB3aXRoAGZ1bmN0aW9uIGRlY2xhcmF0aW9ucyBjYW4ndCBhcHBlYXIgaW4gc2luZ2xlLXN0YXRlbWVudCBjb250ZXh0AGNsYXNzIGRlY2xhcmF0aW9ucyBjYW4ndCBhcHBlYXIgaW4gc2luZ2xlLXN0YXRlbWVudCBjb250ZXh0ACdmb3IgYXdhaXQnIGxvb3Agc2hvdWxkIGJlIHVzZWQgd2l0aCAnb2YnAGEgZGVjbGFyYXRpb24gaW4gdGhlIGhlYWQgb2YgYSBmb3ItJXMgbG9vcCBjYW4ndCBoYXZlIGFuIGluaXRpYWxpemVyAG9mAGluAGV4cGVjdGVkICdvZicgb3IgJ2luJyBpbiBmb3IgY29udHJvbCBleHByZXNzaW9uAGNvbnRpbnVlIG11c3QgYmUgaW5zaWRlIGxvb3AAYnJlYWsgbXVzdCBiZSBpbnNpZGUgbG9vcCBvciBzd2l0Y2gAYnJlYWsvY29udGludWUgbGFiZWwgbm90IGZvdW5kAHVuc3VwcG9ydGVkIGtleXdvcmQ6ICVzAGNwb29sX2lkeCA+PSAwAGpzX2NyZWF0ZV9mdW5jdGlvbgBzLT5pc19ldmFsIHx8IHMtPmNsb3N1cmVfdmFyX2NvdW50ID09IDAAYWRkX2V2YWxfdmFyaWFibGVzAG
 
V4cG9ydGVkIHZhcmlhYmxlICclcycgZG9lcyBub3QgZXhpc3QAcmVzb2x2ZV92YXJpYWJsZXMAbGFiMSA+PSAwICYmIGxhYjEgPCBzLT5sYWJlbF9jb3VudABiY19idWZbcG9zXSA9PSBPUF9sYWJlbABvcHRpbWl6ZV9zY29wZV9tYWtlX3JlZgBvcHRpbWl6ZV9zY29wZV9tYWtlX2dsb2JhbF9yZWYAdmFyX2tpbmQgIT0gSlNfVkFSX05PUk1BTAByZXNvbHZlX3Njb3BlX3ByaXZhdGVfZmllbGQAdmFyX2tpbmQgPT0gSlNfVkFSX1BSSVZBVEVfU0VUVEVSAHVuZGVmaW5lZCBwcml2YXRlIGZpZWxkICclcycAcy0+bGFiZWxfc2xvdHNbbGFiZWxdLmZpcnN0X3JlbG9jID09IE5VTEwAc2tpcF9kZWFkX2NvZGUAcmVzb2x2ZV9sYWJlbHMAbHMtPmFkZHIgPT0gLTEAZGlmZiA9PSAoaW50MTZfdClkaWZmAGRpZmYgPT0gKGludDhfdClkaWZmAGxhYmVsX3Nsb3RzW2ldLmZpcnN0X3JlbG9jID09IE5VTEwAZmluZF9qdW1wX3RhcmdldABpbnZhbGlkIG9wY29kZSAob3A9JWQsIHBjPSVkKQBieXRlY29kZSBidWZmZXIgb3ZlcmZsb3cgKG9wPSVkLCBwYz0lZCkAc3RhY2sgdW5kZXJmbG93IChvcD0lZCwgcGM9JWQpAHN0YWNrIG92ZXJmbG93IChvcD0lZCwgcGM9JWQpAHVuY29uc2lzdGVudCBzdGFjayBzaXplOiAlZCAlZCAocGM9JWQpAG5hbWUAbWVzc2FnZQAAAADcJwAAAwAAAAAAAACjAAAA0E0AAAMDAABuDgAAAAAAANVNAAADAwAAvgoAAAAAAAA6IABpbnZhbGlkIHByb3BlcnR5IGFjY2VzcwBwcm94eSBwcmV2ZW50RXh0ZW5
 
zaW9ucyBoYW5kbGVyIHJldHVybmVkIGZhbHNlAGNyZWF0ZQBnZXRQcm90b3R5cGVPZgBzZXRQcm90b3R5cGVPZgBkZWZpbmVQcm9wZXJ0eQBkZWZpbmVQcm9wZXJ0aWVzAGdldE93blByb3BlcnR5TmFtZXMAZ2V0T3duUHJvcGVydHlTeW1ib2xzAGlzRXh0ZW5zaWJsZQBwcmV2ZW50RXh0ZW5zaW9ucwBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IAZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycwBpcwBhc3NpZ24Ac2VhbABmcmVlemUAaXNTZWFsZWQAaXNGcm96ZW4AX19nZXRDbGFzcwBmcm9tRW50cmllcwAAAAAAAABaTgAAAwAAAAIAAACkAAAAYU4AAAMAAAABAQAApQAAAHBOAAADAAAAAgAAAKYAAAB/TgAAAwAAAAMBAACnAAAAjk4AAAMAAAACAAAAqAAAAJ9OAAADAAAAAQAAAKkAAACzTgAAAwAAAAEAAACqAAAAnS4AAAMAAAABAQAAqwAAAJYuAAADAAEAAQEAAKsAAACiLgAAAwACAAEBAACrAAAAyU4AAAMAAAABAQAArAAAANZOAAADAAAAAQEAAK0AAADoTgAAAwAAAAIBAACuAAAAAU8AAAMAAAABAAAArwAAABtPAAADAAAAAgAAALAAAAAeTwAAAwAAAAIAAACxAAAAJU8AAAMAAAABAQAAsgAAACpPAAADAAEAAQEAALIAAAAxTwAAAwAAAAEBAACzAAAAOk8AAAMAAQABAQAAswAAAENPAAADAAAAAQAAALQAAABOTwAAAwAAAAEAAAC1AAAAbm90IGEgcHJvdG90eXBlAGhhc093blByb3BlcnR5AGlzUHJvdG90eXBlT2YAcHJvcGVydHlJc0VudW1lcmFibGUAX19wcm90b19fAF9fZGVmaW5lR2V0dGVyX18AX19kZWZpbmVTZXR0
 
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
 
2QAwgdsAQALcAEAC3gAAgd8AUAPiAFCD4wBQA+UAQJDmAACB7gBAEu8AtAH4AFCD+ABAAvoAMAH7ADCB+wBAKPwAMAEQAUASEQExAR0BQIIdATCBHgExAR8BAYIfAUCCIAEwgSEBMAEiATCBIgFACiMBAQEoAQGBKAEBASkBAIEpAQABKgEAAisBAIEsAQCBLQEBAS4BAAEwAQGBMAEAgTEBAYEyAQEBMwEAATQBAIE0AQEBNQEBgTUBAQE2AQCBNwEBgTgBAAE5AQCBOgEBgT4BAAFAAQEBQQEAgUEBAYFDAQABRAEAgUQBAAJFAQABRgEAAUkBAYFOAQEBTwFzgaIBQAS4AUACuwEAg70BMIG/ATABwwEwA8QBMAHGATACxwHQAcgBMJHIATCJ0QEAAdYBAIPWAdMB2AEAkdgBcwHhAQCJ4QEAAeYBAILmATCB5wFzAegBc4HoAXOB6gFzAesBAIHrAUAY7AFzAfgBc4H4AQAB+QEAgfkBoAH6AXOB+gFAgvsBMIH8AUAC/QEwg/4BMBAAAjAgCAIAIBgCABAoAkAiMAJANkUCMAFgAkCOYAIAgWcCQGBoAjCmmAIAprACtYHDAjEmUAgxgWMIMYFmCAAraAgAg34IEVDQCRAG+AkgBvwJdAFADnSBQA50AUEOdIFBDnQBQg50gUIOdAFDDoCBQw6AAUQOMCtIDjCDXg4BgbwOAYG+DgEBxw5AfgAPQBg/D7UBSw+2gUsPtgFMD7aBTA+3AU0PgIFNDzABTw9AYFAPAAiADzAIhA8ABogPMAaMDwAIkA8wCJQPAAiYDzAInA8ABqAPMAakD7ABqA8AgagP0wGpDwCBqQ/TAaoPAIGqD9MBqw8AgasPMIGsDzCBrQ8wga4PMIGvDwAIsA8wCLQPAAK4DwAEuQ8AArsPAQK8DwECvQ8BAr4PtwjAD2cIxA+4CMgPaAjMD7gI0A9oCNQPAALYD7kB2Q+xgdkPuQHaD7EB2w/Xg
 
dsPMALcDzAC3Q9hAd4PcwHfD7kB4Q+ygeEPugHiD7IB4w/YgeMPMATkD2IB5g8AAugP0AHpD9CB6Q+wAesP0IHrDzAC7A8wAu0PAQLwD9MB8Q/TgfEPugHyDwGB8g+wAfMP04HzDzAC9A8wAvUPMQH2D7oB+Q+ygfkPuwH6D7IB+w/ZgfsPMAL8DzAC/Q9iAf4PoAGTEKABlRCggZUQMQGZEAEBpxAxELAQARC4EECCwRAxGlsSARpoEjEvABYBLxgWQAIwFjABMRYwgTEWMAEyFgCBMhYAATMWQIYzFjCBNhYwATcWMIE3FjABOBZAAjkWQII6FjACPxZAZEAWQIR1FkACeRYAJoAWAIGTFgCBlhZALiBTQBxAU0AOkVNAPplTQIS8UzCBvlNACr9TQILFUzCBxlNABMhTAQHKU0AUy1MwAdVTMIHVUzAB1lMwgdZTMAHXUzAB2FMwgdhTMAHZUzGB2VNADNpTQALhUzEB4lMwgeJTMAHjU0CE41NAgvpTAYGpVSBQuFWyAYB9soGAfbIBgX3agYF92gGCfbOBgn2zAYN9u4GJfbsBin27gYp9vAGLfbuBi30xmpB/AZqgfzEoAIIBKBSCMSRYggEkbIIxM0CGATNghjEgUIwBIGCMMSAgtwEgMLcxIoD0ASKR9ABB8PIBC+MDAQCcBgdNAwQQAI8LAAARAAgAU0pRAFIAUwA6VFUAV1k/XVwARmFjQmQAZgBoAGoAbABuAABAAAAAABoAkwAAIDUAJwAhACQiKgATa20AJiQnFBYYGxw+Hj8fOT0iIUEeQCUlJiggKkksQy5LMEwyREKZAACVj31+g4QSgIJ2dxJ7o3x4eYqSmKaghQCaoZN1M5UAjgB0mZiXlgAAngCcAKGgFS4vMLS1TqqpEhQeISIiKjQ1pqc2H0oAAJcBWtodNgUAxMPGxcjHysnMy8TVRdZC10bYztDS1NrZ7vb+DgcPgJ8AIYCj7QDAQMZg59vmmc
 
AAAAZg3Cn9FRIGFvjdBhUShAjGFv/fA8BAAEZg3uBtNzg5FRQXFgAaGRwbAF+3ZURHAE9iTlAAAEgAAACjpKUAAAAAALYAAFoASABbVlhgXnBpb00AADtnuAAARaiKi4yrrFhYr5Swb7JcW15dYF9iYWRjZmVoZwAAAAAAAACZAwgDAQOlAxMDAANCA5EDlwOpA0YASQBMAFMAaQAHA7wCTgBKAAwDNQVSBUgAMQNUAFcACgNZAEEAvgIIH4AfKB+QH2gfoB+6H4YDsx/KH4kDwx+hA/ofjwPzH0QFRgU7BU4FPQW4A2IESqZgHskDawDlAEHg9gELwgFAqYCOgPyA04CMgI2BjQKA4YCRhZoBAAERAAEECAEIMAgBFSAAOZkxnYRAlIDWgqaAQWKApoBXdvgCgI+AsEDbCIBB0ICMgI+M5AMBiQAUKBARAgEYCyRLJgEBhuWAYHm2gUCRgb2IlAWAmIDHgkM0ogaAjGEoltSAxgEICQuAiwAGgMADDwaAmwMEABaAQVOBmICYgJ6AmICegJiAnoCYgJ6AmAdZY5mFmYWZAAAAALkC4KAeQJ6mQLrUAYnXAYrxAQBBsPgBC7QFpgWAioCiAIDGAwADAYFB9kC/GRiICIBA+oZAzgSAsKwAAQEAq4CKhYmKAKKAiZSPgOQ4iQOgAICdmtqKuYoYCJeXqoL2r7YAAzsChomBjICOgLkDH4CTgZkBgbgDCwkSgJ0KgIqBuAMgC4CTgZUogLkBAB8GgYqBnYC8gIuAsQKAuBQQHoGKgZyAuQEFBIGTgZuBuAsfgJOBnIDHBhCA2QGGiojhAYiIAIXJgZoAAIC2jQQBhIqAo4iA5RgoCYGYC4KPg4wBDYCOgN2AQl+CQ7GCnIKcgZ2Bvwg3AYoQIKyDs4DAgaGA9ROBiAWCQNoJgLkAMAABPYkIpgeQvoOvACAEgKeIi4GfGQiCtwAKAIK5OYG/hdEQjAYYKBGxvoyAod4EQbwAgoq
 
CjIKMgoyBiyeBiQEBhLAgiQCMgI+MsqBLioHwgvyAjoDfn66AQdSAoxokgNyF3IJgbxWAROGFQQ2A4RiJAJuDz4GNoc2AloLsDwIDgJgMgECWgZmRjIClh5iKrYKvARmBkICUgcEpCYGLB4CigIqAsgARDAiAmoCNDAiA44SIgvgBA4BgTy+AQJKPQj2PEIuPoQGAQKgGBYCKgKIAgK6ArIHCgJSCQgCAQOGAQJSERoUQDIOnE4BApIFCPINBgoFAmIpAr4C1jreCsBkJgI6AsYKjIIe9gIuBs4iJGYDeEQANgECfAoeUgbgKgKQyhEDCORCAloDTKAMIgUDtHQiBmoHUOQCB6QABKIDkERiEQQKIAUD/CAOAQI8ZC4CfiacpH4CIKYKtjAFBlTAogNGVDgEB+SoACDCAxwoAgEFagVU6iGA2toS6hoiDRAqAvpC/CIFgTLcIg1TCgoiPDp2DQJOCR7q2g7E4jYCVII5FTzCQDgEEQQSNQa2DRd+G7IdKroRsDACAnd//QO8AQfD9AQtCvgUA/gcAUgogBQwgOw5AYRBADxggQxtgeR0A8SAADaZALqkg3qoAD/8g5wpBghEhxBRhRBkBSB0hpLwBPuEB8AEOAEHA/gELlQjAmYWZroCJAwSWgJ6AQcmDi40mAIBAgCAJGAUAEACTgNKAQIqHQKWApQiFqMaaG6yqogjiAI4OgYkRgI8AnZzYioCXoIgLBJUYiAKAlpiGirSUgJG7tRCRBomOjx8JgZUGABMQj4CMCIKNgYkHKwmVBgEBAZ4YgJKCj4gCgJUGAQQQkYCOgZaAijkJlQYBBBCdCIKOgJAAKhAaCAAKChKLlYCzOBCWgI8QmRSBnQM4EJaAiQQQnwCBjoGQiAKAqAiPBBeClyyRgpeAiAAOua8Bi4a5CAAglwCAiQGIASCAlIOfgL44o5qE8qqTgI8rGgIOE4yLgJClACCBqoBBTAMOAAOBqAOBoAMOAAOBjoC4
 
A4HCpI+P1Q2CQmuBkICZhMqCioaMA42RjZGNjAKOs6IDgMLYhqgAhMWJnrCdDIqrg5m1loi00YDcrpCGtp2MgYmrmaOogomjgYiGqgqoGCgKBEC/v0EVDYGlDQ8AAACAnoG0BgASBhMNg4wiBvOAjICPjOQDAYkADSgAAICPCyQYkKhKdq6AroBAhCsRi6UAIIG3MI+WiDAwMDAwMDCGQiWCmIg0DIPVHIDZA4SqgN2Qn6+PQf9Zv79gUfyCRIzCrYFBDIKPiYGTro+egc+miIHmgbSBiKmMAgOAlpyzjbG9KgCBipuJlpichq6bgI8giYkgqJYQh5OWEIKxABEMCACXEYoyiykphYgwMKqAjYXynGAro4uWg7BgIQNBbYHppYaLJACJgIwEAAEBgOugQWqRv4G1p4vzIECGo5mFmYrYFQ0NCqKLgJmAkgGAjoGNofrEtEEKnIKwrp+MnYSliZ2Box8EqUCdkaODo4Onh7NAm0E2iJWJh0CXKQCrARCBlomWiJ7AkgGJlYmZxbcpv4COGBCcqZyCnKI4m5q1iZWJkoyR7ci2soyyjKNBW6kpzZyJB5XplJqWi7TKrJ+YmaOcAQeiEIuvjYOUAICikYCY0zAAGI6AiYaupTkJlQYBBBCRgIuEQJ20kYOTgp2vkwiAQLeuqIOjr5OAuqqMgMaaQOSr87+eOQE4CJeOAIDdOaaPAICbgImnMJSAiq2SgKG4QQaIgKSQgLCd7zAIpZSAmCgIn42AQUaSQLyAzkOZ5e6QQMNKu0QuT9BCRmAhuEI4hp7wnZGvj4OelISSQq+//8ogwYy/CICbV/eHRNWpiGAi9kEesIKQH0GLSQPqhIyCiIaJV2XUgMYBCAkLgIsABoDAAw8GgJsDBAAWgEFTgZiAmICegJiAnoCYgJ6AmICegJgHSTOsiYaPgEFwq0UTQMS6wzBEsxiaAQAIgIkDAAAoGAAAAgEACAAAAAABAAsGAwMAgImAkCIEg
 
JBRQ2Cm3aFQNIpA3YFWgY1dMEweQh1F4VNKAEHghgILY/YDIKYHAKkJALQKALoLAD4NAOAOIFcSAOsWAMoZIMAdYIAgAC4tAMAxIImnIPCpAOOrAD79APsAITcHYQEKAR0PISwSAcgUIdEZIUcdATlqIQmNAbzUAanXITruAd6mIksTAwBB0IcCC/IEr4mkgNaAQkfvloBA+oRBCKwAAQEAx4qvnijkMSkIGYmWgJ2a2oqOiaCIiICXGIgCBKqC9o6AoLUQkQaJCYmQgrcAMQmCiICJCYmNAYK3ACMJEoCTixCKgrcAOBCCkwmJiSiCtwAxCRaCiQmJkYC6IhCDiICNiY+EuDAQHoGKCYmQgrcAMBAegYoJiY+DtggwEIOIgIkJiZCCxQMoAD2JCbwBhos4idYBiIopib0NiYoAAAOBsJMBhIqAo4iA45OAiYsbEBEyg4yLgI5CvoKIiEOfgpyCnIGdgb+fiAGJoBGJQI6A9YuDi4mJ/4q7hLiJgJyBioWJlY0BvoSukIqJkIiLgp2MgYmrja+Th4mFifUQlBgoCkDFuQRCPoGSgPqMGIKLS/2CQIyA359CKYXogWB1hInEA4mfgc+BQQ8CA4CWI4DSgbGRiYmFkYyKm4eYjKuDro2OiYqAiYmujYsHCYmggrEAEQwIgKgkgUDrOAmJYE8jgELgj4+PEZeCQL+JpIBCvIBA4YBAlIRBJIlFVhAMg6cTgECkgUI8H4lBcIFAmIpAroK0jp6JjoOsirSJKqONgIkhq4CLgq+NO4CL0YsoQJ+LhIkrtggxCYKIgIkJMoRAv5GIiRjQk4uJQNQxiJqB0ZCOidCMh4nSjoOJQPGOQKSJxSgJGACBi4n2MTKAm4mnMB+AiIqtj0GUOIePibeVgI35KgAIMAeJryAIJ4lBSINgS2iJQIWEuoaYiUP0ALYz0ICKgWBMqoFUxSIvOYadg0CTgkWIsUH/toOxOI2AlSCORU8wkA4BBEEEho
 
iJQaGNRdWG7DSJUpWJbAUFQO8AQdCMAgujEvoGAIQJAPAKAHAMAPQNAEoQIBoYIHQbIN0gAAyoAFqqIBr/AK0OATgSIcEVIeUZIaodIYzRQUrhIfABDgAAAABBZGxhbSxBZGxtAEFob20sQWhvbQBBbmF0b2xpYW5fSGllcm9nbHlwaHMsSGx1dwBBcmFiaWMsQXJhYgBBcm1lbmlhbixBcm1uAEF2ZXN0YW4sQXZzdABCYWxpbmVzZSxCYWxpAEJhbXVtLEJhbXUAQmFzc2FfVmFoLEJhc3MAQmF0YWssQmF0awBCZW5nYWxpLEJlbmcAQmhhaWtzdWtpLEJoa3MAQm9wb21vZm8sQm9wbwBCcmFobWksQnJhaABCcmFpbGxlLEJyYWkAQnVnaW5lc2UsQnVnaQBCdWhpZCxCdWhkAENhbmFkaWFuX0Fib3JpZ2luYWwsQ2FucwBDYXJpYW4sQ2FyaQBDYXVjYXNpYW5fQWxiYW5pYW4sQWdoYgBDaGFrbWEsQ2FrbQBDaGFtLENoYW0AQ2hlcm9rZWUsQ2hlcgBDaG9yYXNtaWFuLENocnMAQ29tbW9uLFp5eXkAQ29wdGljLENvcHQsUWFhYwBDdW5laWZvcm0sWHN1eABDeXByaW90LENwcnQAQ3lyaWxsaWMsQ3lybABEZXNlcmV0LERzcnQARGV2YW5hZ2FyaSxEZXZhAERpdmVzX0FrdXJ1LERpYWsARG9ncmEsRG9ncgBEdXBsb3lhbixEdXBsAEVneXB0aWFuX0hpZXJvZ2x5cGhzLEVneXAARWxiYXNhbixFbGJhAEVseW1haWMsRWx5bQBFdGhpb3BpYyxFdGhpAEdlb3JnaWFuLEdlb3IAR2xhZ29saXRpYyxHbGFnAEdvdGhpYyxHb3RoAEdyYW50aGEsR3JhbgBHcmVlayxHcmVrAEd1amFyYXRpLEd1anIAR3VuamFsYV9Hb25kaSxHb25nAEd1cm11a2h
 
pLEd1cnUASGFuLEhhbmkASGFuZ3VsLEhhbmcASGFuaWZpX1JvaGluZ3lhLFJvaGcASGFudW5vbyxIYW5vAEhhdHJhbixIYXRyAEhlYnJldyxIZWJyAEhpcmFnYW5hLEhpcmEASW1wZXJpYWxfQXJhbWFpYyxBcm1pAEluaGVyaXRlZCxaaW5oLFFhYWkASW5zY3JpcHRpb25hbF9QYWhsYXZpLFBobGkASW5zY3JpcHRpb25hbF9QYXJ0aGlhbixQcnRpAEphdmFuZXNlLEphdmEAS2FpdGhpLEt0aGkAS2FubmFkYSxLbmRhAEthdGFrYW5hLEthbmEAS2F5YWhfTGksS2FsaQBLaGFyb3NodGhpLEtoYXIAS2htZXIsS2htcgBLaG9qa2ksS2hvagBLaGl0YW5fU21hbGxfU2NyaXB0LEtpdHMAS2h1ZGF3YWRpLFNpbmQATGFvLExhb28ATGF0aW4sTGF0bgBMZXBjaGEsTGVwYwBMaW1idSxMaW1iAExpbmVhcl9BLExpbmEATGluZWFyX0IsTGluYgBMaXN1LExpc3UATHljaWFuLEx5Y2kATHlkaWFuLEx5ZGkATWFrYXNhcixNYWthAE1haGFqYW5pLE1haGoATWFsYXlhbGFtLE1seW0ATWFuZGFpYyxNYW5kAE1hbmljaGFlYW4sTWFuaQBNYXJjaGVuLE1hcmMATWFzYXJhbV9Hb25kaSxHb25tAE1lZGVmYWlkcmluLE1lZGYATWVldGVpX01heWVrLE10ZWkATWVuZGVfS2lrYWt1aSxNZW5kAE1lcm9pdGljX0N1cnNpdmUsTWVyYwBNZXJvaXRpY19IaWVyb2dseXBocyxNZXJvAE1pYW8sUGxyZABNb2RpLE1vZGkATW9uZ29saWFuLE1vbmcATXJvLE1yb28ATXVsdGFuaSxNdWx0AE15YW5tYXIsTXltcgBOYWJhdGFlYW4sTmJhdABOYW5kaW5hZ2Fy
 
aSxOYW5kAE5ld19UYWlfTHVlLFRhbHUATmV3YSxOZXdhAE5rbyxOa29vAE51c2h1LE5zaHUATnlpYWtlbmdfUHVhY2h1ZV9IbW9uZyxIbW5wAE9naGFtLE9nYW0AT2xfQ2hpa2ksT2xjawBPbGRfSHVuZ2FyaWFuLEh1bmcAT2xkX0l0YWxpYyxJdGFsAE9sZF9Ob3J0aF9BcmFiaWFuLE5hcmIAT2xkX1Blcm1pYyxQZXJtAE9sZF9QZXJzaWFuLFhwZW8AT2xkX1NvZ2RpYW4sU29nbwBPbGRfU291dGhfQXJhYmlhbixTYXJiAE9sZF9UdXJraWMsT3JraABPcml5YSxPcnlhAE9zYWdlLE9zZ2UAT3NtYW55YSxPc21hAFBhaGF3aF9IbW9uZyxIbW5nAFBhbG15cmVuZSxQYWxtAFBhdV9DaW5fSGF1LFBhdWMAUGhhZ3NfUGEsUGhhZwBQaG9lbmljaWFuLFBobngAUHNhbHRlcl9QYWhsYXZpLFBobHAAUmVqYW5nLFJqbmcAUnVuaWMsUnVucgBTYW1hcml0YW4sU2FtcgBTYXVyYXNodHJhLFNhdXIAU2hhcmFkYSxTaHJkAFNoYXZpYW4sU2hhdwBTaWRkaGFtLFNpZGQAU2lnbldyaXRpbmcsU2dudwBTaW5oYWxhLFNpbmgAU29nZGlhbixTb2dkAFNvcmFfU29tcGVuZyxTb3JhAFNveW9tYm8sU295bwBTdW5kYW5lc2UsU3VuZABTeWxvdGlfTmFncmksU3lsbwBTeXJpYWMsU3lyYwBUYWdhbG9nLFRnbGcAVGFnYmFud2EsVGFnYgBUYWlfTGUsVGFsZQBUYWlfVGhhbSxMYW5hAFRhaV9WaWV0LFRhdnQAVGFrcmksVGFrcgBUYW1pbCxUYW1sAFRhbmd1dCxUYW5nAFRlbHVndSxUZWx1AFRoYWFuYSxUaGFhAFRoYWksVGhhaQBUaWJldGFuLFRpY
 
nQAVGlmaW5hZ2gsVGZuZwBUaXJodXRhLFRpcmgAVWdhcml0aWMsVWdhcgBWYWksVmFpaQBXYW5jaG8sV2NobwBXYXJhbmdfQ2l0aSxXYXJhAFllemlkaSxZZXppAFlpLFlpaWkAWmFuYWJhemFyX1NxdWFyZSxaYW5iAEGAnwILsRTAGZlFhRmZRa4ZgEWOGYBFhBmWRYAZnkWAGeFgRaYZhEWEGYENkxngDzeDK4AZgisBgyuAGYArA4ArgBmAK4AZgisAgCsAkysAviuNGo8r4CQdgTfgSB0ApQUBsQUBggUAtjQHmjQDhTQKhASAGYUEgBmNBIAZgAQAgASAGZ8EgBmJBIo3mQSAN+ALBIAZoQSNhwC7hwGCh68EsZENumMBgmOtewGOewCbUAGAUACKhzSUBACRBAqOBIAZnATQH4M3jh+BGZkfgwsAhwsBgQsBlQsAhgsAgAsCgwsBiAsBgQsBgwsHgAsDgQsAhAsBmAsBgi4AhS4DgS4BlS4Ahi4AgS4AgS4AgS4BgC4AhC4DgS4Bgi4CgC4Ggy4AgC4GkC4JgiwAiCwAgiwAlSwAhiwAgSwAhCwBiSwAgiwAgiwBgCwOgywBiywGhiwAgnAAh3ABgXABlXAAhnAAgXAAhHABiHABgXABgnAGgnADgXAAhHABkXAJgY4AhY4Cgo4Ag44CgY4AgI4AgY4CgY4Cgo4Ci44DhI4Cgo4Ag44BgI4FgI4NlI4EjJAAgpAAlpAAj5ACh5AAgpAAg5AGgZAAgpAEg5ABiZAGiJCMPACCPACWPACJPACEPAGIPACCPACDPAaBPAaAPACDPAGJPACBPAyMTwCCTwCyTwCCTwCFTwOPTwGZTwCCgQCRgQKXgQCIgQCAgQGGgQKAgQOFgQCAgQCHgQWJgQGCgQu5kgOAGZuSJIFEAIBEAIREAJdEAIBEAJZEAYREAIBEAIVEAYlEAYNEH8eTAKOTA6aTAKOTAI6TAIaTgxmBkyTgP1
 
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
 
R0ZXJfTnVtYmVyAE5vLE90aGVyX051bWJlcgBTbSxNYXRoX1N5bWJvbABTYyxDdXJyZW5jeV9TeW1ib2wAU2ssTW9kaWZpZXJfU3ltYm9sAFNvLE90aGVyX1N5bWJvbABQYyxDb25uZWN0b3JfUHVuY3R1YXRpb24AUGQsRGFzaF9QdW5jdHVhdGlvbgBQcyxPcGVuX1B1bmN0dWF0aW9uAFBlLENsb3NlX1B1bmN0dWF0aW9uAFBpLEluaXRpYWxfUHVuY3R1YXRpb24AUGYsRmluYWxfUHVuY3R1YXRpb24AUG8sT3RoZXJfUHVuY3R1YXRpb24AWnMsU3BhY2VfU2VwYXJhdG9yAFpsLExpbmVfU2VwYXJhdG9yAFpwLFBhcmFncmFwaF9TZXBhcmF0b3IAQ2MsQ29udHJvbCxjbnRybABDZixGb3JtYXQAQ3MsU3Vycm9nYXRlAENvLFByaXZhdGVfVXNlAExDLENhc2VkX0xldHRlcgBMLExldHRlcgBNLE1hcmssQ29tYmluaW5nX01hcmsATixOdW1iZXIAUyxTeW1ib2wAUCxQdW5jdHVhdGlvbixwdW5jdABaLFNlcGFyYXRvcgBDLE90aGVyAEGAvwILsAgOAAAAPgAAAMABAAAADgAAAPAAAAAAfwAAAIADAQAAPEFTQ0lJX0hleF9EaWdpdCxBSGV4AEJpZGlfQ29udHJvbCxCaWRpX0MARGFzaABEZXByZWNhdGVkLERlcABEaWFjcml0aWMsRGlhAEV4dGVuZGVyLEV4dABIZXhfRGlnaXQsSGV4AElEU19CaW5hcnlfT3BlcmF0b3IsSURTQgBJRFNfVHJpbmFyeV9PcGVyYXRvcixJRFNUAElkZW9ncmFwaGljLElkZW8ASm9pbl9Db250cm9sLEpvaW5fQwBMb2dpY2FsX09yZGVyX0V4Y2VwdGlvbixMT0UATm9uY2hhcmFjdGVyX0NvZGVfUG9pbnQ
 
sTkNoYXIAUGF0dGVybl9TeW50YXgsUGF0X1N5bgBQYXR0ZXJuX1doaXRlX1NwYWNlLFBhdF9XUwBRdW90YXRpb25fTWFyayxRTWFyawBSYWRpY2FsAFJlZ2lvbmFsX0luZGljYXRvcixSSQBTZW50ZW5jZV9UZXJtaW5hbCxTVGVybQBTb2Z0X0RvdHRlZCxTRABUZXJtaW5hbF9QdW5jdHVhdGlvbixUZXJtAFVuaWZpZWRfSWRlb2dyYXBoLFVJZGVvAFZhcmlhdGlvbl9TZWxlY3RvcixWUwBXaGl0ZV9TcGFjZSxzcGFjZQBCaWRpX01pcnJvcmVkLEJpZGlfTQBFbW9qaQBFbW9qaV9Db21wb25lbnQsRUNvbXAARW1vamlfTW9kaWZpZXIsRU1vZABFbW9qaV9Nb2RpZmllcl9CYXNlLEVCYXNlAEVtb2ppX1ByZXNlbnRhdGlvbixFUHJlcwBFeHRlbmRlZF9QaWN0b2dyYXBoaWMsRXh0UGljdABEZWZhdWx0X0lnbm9yYWJsZV9Db2RlX1BvaW50LERJAElEX1N0YXJ0LElEUwBDYXNlX0lnbm9yYWJsZSxDSQBBU0NJSQBBbHBoYWJldGljLEFscGhhAEFueQBBc3NpZ25lZABDYXNlZABDaGFuZ2VzX1doZW5fQ2FzZWZvbGRlZCxDV0NGAENoYW5nZXNfV2hlbl9DYXNlbWFwcGVkLENXQ00AQ2hhbmdlc19XaGVuX0xvd2VyY2FzZWQsQ1dMAENoYW5nZXNfV2hlbl9ORktDX0Nhc2Vmb2xkZWQsQ1dLQ0YAQ2hhbmdlc19XaGVuX1RpdGxlY2FzZWQsQ1dUAENoYW5nZXNfV2hlbl9VcHBlcmNhc2VkLENXVQBHcmFwaGVtZV9CYXNlLEdyX0Jhc2UAR3JhcGhlbWVfRXh0ZW5kLEdyX0V4dABJRF9Db250aW51ZSxJREMATG93ZXJjYXNlLExvd2VyAE1h
 
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
 
zQLRAtUC5wLtAvEC9QL5Av0CBQMJAw0DEwMXAxsDIwMnAysDLwM1Az0DQQNJA00DUQMLD1cDWwNfA2MDZwNrA28DcwN5A30DgQOFA4kDjQORA5UDmQOdA6ED3BClA8kDzQPZA90D4QPvA/EDPQRPBJkE8AQCBUoFZAVsBXAFcwWaBfoF/gUHBgsGFAYYBh4GIgYoBo4GlAaYBp4GogarBqwD8watA/YGrgP5Bq8D/AbMA/8GzQMCB84DBQcJBw0HEQeGAzIHNQe5AzcHOweIA1MHiQNWB5ADaweKA3cHsAOJB44DmQefB6MHjAO4B48Duwe0AL4HwAfCBxAgywcuAM0HzwcgANIH1gfbB98H5AfqB/AHIAD2BxIiAQgFCAcIHQglCCcIQwAtCDAIkAE2CDkITgBFCEcITAhOCFEIWgCpA1oAUwhXCGAIaQBiCGUIbwh0CHoIfgiiCEkApAimCKkIVgCrCK0IsAi0CFgAtgi4CLsIwAjCCMUIdgDHCMkIzAjQCHgA0gjUCNcI2wjeCOQI5wjwCPMI9gj5CAIJBgkLCQ8JFAkXCRoJIwksCTsJPglBCUQJRwlKCVYJXAlgCWIJZAloCWoJcAl4CXwJgAmGCYkJjwmRCTAAkwmZCZwJngmhCaQJYS3Na5+fpgmxCbwJxwmVCqEKFQsgACcLMQuNC6ELpQupC60LsQu1C7kLvQvBC8ULIQw1DDkMPQxBDEUMSQxNDFEMVQxZDG8McQxzDKAMvAzcDOQM7Az0DPwMBA0MDRQNIg0uDXoNgg2FDYkNjQ2dDbENtQ28DcINxg0oDiwOMA4yDjYOPA4+DkEOQw5GDncOew6JDo4OlA6cDqMOqQ60Dr4Oxg7KDs8O2Q7dDuQO7A7zDvgOBA8KDxUPGw8iDygPMw89D0UPTA9RD1cPXg9jD2kPcA92D30Pgg+JD40Png+kD6kPrQ+4D74PyQ/QD9YP2g/hD+UP7w/6DwAQBBAJEA8QExAaE
 
B8QIxApEC8QMhA2EDkQPxBFEFkQYRB5EHwQgBCVEKEQsRDDEMsQzxDaEN4Q6hDyEPQQABEFERERQRFJEU0RUxFXEVoRbhFxEXURexF9EYERhBGMEZIRlhGcEaIRqBGrEW+nrxGzEY0CuxENEgsTCRSNFJIUUBVpFW8VdRV7FYcVkxUrAJ4VthW6Fb4VwhXGFcoV3hXiFUYWXxaFFosWSRdPF1QXdBd0GHoYDhnQGXQafBqaGp8asxq9GsMa1xrcGuIa8BogGy0bNRs5G08bxhvYG9ob3BtkMR0cHxwhHCMcJRwnHEUcUxxYHGEcahx8HIUcihyqHMUcxxzJHMsczRzPHNEc0xzzHPUc9xz5HPscAh0EHQYdCB0XHRkdGx0dHR8dIR0jHSUdJx0pHSsdLR0vHTEdMx03HfQDOR0HIjsdAiI9HUUd9ANHHQciSR0CIksdUx30A1UdByJXHQIiWR1hHfQDYx0HImUdAiJnHW8d9ANxHQcicx0CInUdfx2BHYMdhR2HHYkdjx2sHS0GtB3AHSwG0B1AHkweXx5xHoQehh6KHpAelh6YHpwenh6mHqkeqx6xHrMetTC5HhEfJx8rHy0fMh9/H5AfkSChIKcgoSG/IgBBgOgCC9JHIIgghDIzIIEgpzFvMdA0MdAyM9A0QYBBgUGCQYNBiEGKAABDp0WARYFFgkWISYBJgUmCSYgAAE6DT4BPgU+CT4NPiAAAAABVgFWBVYJViFmBAAAAAGGAYYFhgmGDYYhhigAAY6dlgGWBZYJliGmAaYFpgmmIAABug2+Ab4Fvgm+Db4gAAAAAdYB1gXWCdYh5gQAAeYhBhEGGQahDgUOCQ4dDjESMRYRFhkWHRahFjEeCR4ZHh0enSIJJg0mESYZJqEmHSUppakqCS6dMgUynTIxMAABrIGtOgU6nToy8Am5PhE+GT4tSgVKnUoxTgVOCU6dTjFSnVIxVg1WEVYZVilWLVahXglmCWYhagVqHWo
 
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";if(!S(T)){var
 ka=T;T=b.locateFile?b.locateFile(ka,t):t+ka;}function la(){var a=T;try{if(a==T&&v)return new 
Uint8Array(v);if(S(a))try{var c=ma(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){w(g);}}function na(){return v||"function"!==typeof 
fetch?Promise.resolve().then(function(){return 
la();}):fetch(T,{credentials:"same-origin"}).then(function(a){if(!a.ok)throw"failed to load wasm binary file 
at '"+T+"'";return a.arrayBuff
 er();}).catch(function(){return la();});}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=L(a)+1,d=M(c);D(a,E,d,c);return d;}function oa(){}var pa=[null,[],[]];function qa(){function 
a(k){return(k=k.toTimeString().match(/\(([A-Za-z ]+)\)$/))?k[1]:"GMT";}if(!ra){ra=!0;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[sa()>>2]=60*g;N[ta()>>2]=Number(c!=f);d=a(d);e=a(e);d=ba(d);e=ba(e);f<c?(N[X()>>2]=d,N[X()+4>>2]=e):(N[X()>>2]=e,N[X()+4>>2]=d);}}var
 ra;oa=(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 ma="function"===typeof 
atob?atob:function(a){var c="",d=0;a=a.replace(/[^A-Za-z0-9\+\/=]/g,"");do{var 
e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuv
 wxyz0123456789+/=".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;},ua={a:function(a,c,d,e){w("Assertion failed: "+H(a)+", at: "+[c?H(c):"unknown 
filename",d,e?H(e):"unknown function"]);},b:function(){w();},g:oa,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=E.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{x.grow(Math.min(2147483648,e)-ca.byteLengt
 h+65535>>>16);da();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++){for(var 
k=N[c+8*g>>2],m=N[c+(8*g+4)>>2],y=0;y<m;y++){var 
l=E[k+y],p=pa[a];0===l||10===l?((1===a?aa:u)(K(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){qa();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;x=b.asm.k;da();O=b.asm.t;fa.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 na().then(function(g){return 
WebAssembly.instantiate(g,e);}).then(f,function(g){u("failed to asynchronously prepare wasm: 
"+g);w(g);});}var 
e={a:ua};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(T)||"function"!==typeof 
fetch?d(c):fetch(T,{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(n);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);},ta=b.__get_daylight=function(){return(ta=b.__get_daylight=b.asm.v).apply(null,arguments);},sa=b.__get_timezone=function(){return(sa=b.__get_timezone=b.asm.w).apply(null,arguments);},G=b.stackSave=function(){return(G=b.stackSave=b.asm.x).apply(null,ar
 
guments);},I=b.stackRestore=function(){return(I=b.stackRestore=b.asm.y).apply(null,arguments);},C=b.stackAlloc=function(){return(C=b.stackAlloc=b.asm.z).apply(null,arguments);};b.ccall=B;b.cwrap=function(a,c,d,e){d=d||[];var
 f=d.every(function(g){return"number"===g;});return"string"!==c&&f&&!e?A(a):function(){return 
B(a,c,d,arguments,e);};};b.stringToNewUTF8=W;var Y;R=function va(){Y||Z();Y||(R=va);};function Z(){function 
a(){if(!Y&&(Y=!0,b.calledRun=!0,!z)){V(fa);V(ha);h(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();ia.unshift(c);}V(ia);}}if(!(0<P)){if(b.preRun)for("function"==typeof 
b.preRun&&(b.preRun=[b.preRun]);b.preRun.length;)ja();V(ea);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.lengt
 h;)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=function(){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,n;b.ready=new 
Promise(function(a,c){h=a;n=c;});var q={},r;for(r in b)b.hasOwnProperty(r)&&(q[r]=b[r]);var 
t="";"undefined"!==typeof 
document&&document.currentScript&&(t=document.currentScript.src);_scriptDir&&(t=_scriptDir);0!==t.indexOf("blob:")?t=t.substr(0,t.lastIndexOf("/")+1):t="";var
 aa=b.print||console.log.bind(console),u=b.printErr||console.warn.bind(console);for(r in 
q)q.hasOwnProperty(r)&&(b[r]=q[r]);q=null;var v;b.wasmBinary&&(v=b.wasmBinary);var 
noExitRuntime=b.noExitRuntime||!0;"object"!==typeof WebAssembly&&w("no native wasm support detected");var 
x,z=!1;function A(a){var c=b["_"+a];c||w("Assertion failed: Cannot call unknown function "+(a+", make sure it 
is ex
 ported"));return c;}function B(a,c,d,e){var f={string:function(l){var p=0;if(null!==l&&void 
0!==l&&0!==l){var U=(l.length<<2)+1;p=C(U);D(l,E,p,U);}return p;},array:function(l){var 
p=C(l.length);F.set(l,p);return p;}},g=A(a),k=[];a=0;if(e)for(var m=0;m<e.length;m++){var 
y=f[d[m]];y?(0===a&&(a=G()),k[m]=y(e[m])):k[m]=e[m];}d=g.apply(null,k);d=function(l){return"string"===c?H(l):"boolean"===c?!!l:l;}(d);0!==a&&I(a);return
 d;}var J="undefined"!==typeof TextDecoder?new TextDecoder("utf8"):void 0;function K(a,c,d){var 
e=c+d;for(d=c;a[d]&&!(d>=e);)++d;if(16<d-c&&a.subarray&&J)return J.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?K(E,a,void 0):"";}function D(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
 L(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 ba(a){var c=L(a)+1,d=M(c);d&&D(a,F,d,c);return d;}var ca,F,E,N;function da(){var 
a=x.buffer;ca=a;b.HEAP8=F=new Int8Array(a);b.HEAP16=new Int16Array(a);b.HEAP32=N=new 
Int32Array(a);b.HEAPU8=E=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,ea=[],fa=[],ha=[],ia=[];function ja(){var a=b.preRun.shift();ea.unshift(a);}
 var P=0,Q=null,R=null;b.preloadedImages={};b.preloadedAudios={};function 
w(a){if(b.onAbort)b.onAbort(a);u(a);z=!0;a=new WebAssembly.RuntimeError("abort("+a+"). Build with -s 
ASSERTIONS=1 for more info.");n(a);throw a;}function S(a){return 
String.prototype.startsWith?a.startsWith("data:application/octet-stream;base64,"):0===a.indexOf("data:application/octet-stream;base64,");}var
 
T="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/fwBgBn9/f39/fwF/YAR/f39/AX5gA39+fgF/YAF/AX5gBX9+fn5+AGABfgF+YAJ8fAF8YAABf2AFf35/fn8Bf2AHf35/fn5+fwF/YAV/fn5/fwF+YAAAYAV/f39/fwBgA39+fgBgBH9+fn8AYAd/f39/f39/AX9gBn9+f35+fwF/YAV/fn5+fwF/YAV/fn5/fwBgAn5/AGAJf39/f39/f39/AX9gBH9+f38Bf2AEf35+fwF/YAJ+fwF/YAZ/f39/f38BfmAHf35/f39/fwF+YAR/fn9+AX5gBH9+fn8BfmAHf39/f39/fwBgA39/fgBgBH9/fn8A
 
YAR/fn9/AGAIf39/f39/f38Bf2AEf39/fgF/YAR/fn9+AX9gBH9+fn4Bf2AGf3x/f39/AX9gA35/fwF/YAR/fn5+AX5gAn5+AX5gAnx/AXxgA3x8fwF8YAZ/f39/f38AYAN/f3wAYAV/fn9/fwBgBH9+f34AYAJ/fABgB3x/f39/f38AYAp/f39/f39/f39/AX9gB39/f35+fn8Bf2AFf39+f38Bf2AEf39+fgF/YAV/f35+fwF/YAZ/f35+f38Bf2AGf39+fn5+AX9gBX9+f39/AX9gBn9+f39/fwF/YAV/fn5+fgF/YAZ/fn5+fn8Bf2AEf3x/fwF/YAN+fn4Bf2AEfn5+fgF/YAJ8fwF/YAJ8fAF/YAABfmABfAF+YAV/f39/fwF+YAd/f39/f39+AX5gBX9/f39+AX5gBH9/f34BfmADf39+AX5gBH9/fn8BfmAFf39+fn4BfmAFf35/fn8BfmAHf35+fn9/fwF+YAh/fn5+fn9+fgF+YAN/fnwBfmAFf3x/f38BfmABfwF8YAF+AXxgAn9/AXxgAn5+AXwCPQoBYQFhABkBYQFiACUBYQFjAAIBYQFkAAsBYQFlAAQBYQFmAAMBYQFnAAEBYQFoAAIBYQFpAAgBYQFqABkD2AjWCAoQAx8DBBADYwYGWwMCAyIDAQMDNwMQESQBOQoQBAgJAQkNAgICAwweBgQkAx0DDQ0CBh0JMQ4GAQQIBAgOPGkCAQMDHQgPAgkLEAsBCxwOBAMEAwwBBAkWTAYGBg0TAwIDDz0IAQgMKCYBIwETDwQeAgEUUAQLAwQQFwYBAQIwLQINDRA9FB0KBAIIDQQEExsQIgkWDS0MBi4EAQhECwMrNQ4EABMCEAELJ0gGDQECOgQGYQINDw4ODg4GCAJCMgYCAidHXhQTNhoIBBQBFgIOEwQvMAErA2QBAjIBAgYIASI2AggIAgQWAwQPEAQNAwQJARkYBFcBLAIGA0oCBBQpXQUNPwMOA
 
wEOHAI8Ig0JATACAQMIBAQDMQcEBBoCCAYmCRYGFAEEAgYBBAMBDgUvA0kCAgQMYFwFRgEWGQhnKxcPAxQGBgIBAgEYKAsHIEMHAgILAQQCBAIGDQAyBBgbCwECCwYLAQQDBAEEAQIDAUE4Dh8AVA8ZBANVBAwIAxYDag0kDBgaD1IGBAEBBiQFDwMNAwsCAk4BAgIMMRA5CwMBCC0HBwIEBAIEAQEGCwQBBDoCBgMJFAEDAAIDAQsCLgEIAQICAhQNAQsCCwsCGR8QUTcDEwMQBAQTAgQWDggaGRQDAgYRA09TNRgQGgcJTWIAQBsCHR0NFgECDSonCw4VAA4/CwMEAgEESxcJDRAEGAkDBg8XAgIDAgMBHl8IBikUBAdYBwIlAgICGQQIBAsEAgECBAECKSkCAVkADw8BAQ0JBAEAAGUfCQUABSIcGgAaAQMEAy4UAQMCAgECCgEQAwIEAQIBCAIMFAQEBAEBH0EFZi84JQMJAwMKBgYBDjQJCwgMAAMfAQYVCRAcIAUMEAgDDwULGQECCBEMBQBaDgMDAygFBQUmAhszDAICJAIBBAICAwYBAggrHBMMF0ADDg4GCQsCAQ0OFyEMCBwcJgEQAwQYARgEAQICAgEDAAUEBggEJx4gAwJrHlZoHSgeBAEZBEICBEMgRQcAAwQaAgAzAAAGBgYGBgYGBgYGBQUAAAEMAAEMAQwBDAEMAQwBDAEMBQUBAAAAJQAABQAACQUAAA8JAAUPEgAACQAAAAAAAAAAAAAAAAcAAAcHBRIFBQAAAAUFBQAAAAAABQUFBQAAAAAAAAAAAAAAAAAABQAAAAAAAAAABQUFAAAAAAMABQAFAQAAAAAFAAAFAAUFAAkJAAAAAAUFFgkAAAAAAAAAAAUAAAAFBQAAAAUABQAAAgAAAAAAAAUAAAASBRIFAAASBRISEgAAABgRChEKCgoRChISBQUPBQUFBQUSACo0EyMTOxcRCgAAEgkAAAAAAA
 
AAAA8JCQAjExcTEhgjARsbGwEDEQoRCgoKEQoRCgoKEQoRChEKEQoKEQoRCgYYFRUVFQEDAwMVFRUVAAQIIQ8BBwcAACEhIQEPAAM+BQEHBwcHBwcHByAHBwcHBwcHBxUHAwQHAXAB9wL3AgUHAQGAAoCAAgYJAX8BQfCzxAILB08QAWsCAAFsALMEAW0A3wgBbgCCBQFvAL0HAXAAiwcBcQC2BgFyAKECAXMA6QEBdAEAAXUAxAgBdgDDCAF3AMIIAXgAuwgBeQC6CAF6ALkICfMFAQBBAQv2ApUErwiuCK0IrAizCLIIsQjAB9wErQeTB4UH6wbmAr8GtQbIBKEGkAaPBo4GjQbdCIgGygjHCMEIwAjsBbgItwi2CLUItAjrBYQEqwiwCIkImwWICOYB3wfWB6oIiwiRBekH0gfRB9AHzgfKB8gHkAeyBqkIqAinCKYIpQinBaQIowiiCKEIoAifCJ4InQicCJsImgiZCJgIlwiWCPEDlQjxA5QIkwiSCJEIigiGCIUIhAiHCKUFkAiPCPMH8gfxB/AH7wfuB+0H7AfrB94H3QfcB/ED2wenBdoH2QfYB9cHjgiNCIwIgwiCCIEIgAj/B/4H/Qf8B/sH+gf5B/gH9wf2B/UH9AfqB+gH5wfmB+UH5AfjB+IH4QfgB9UH1AfTB4wCzwfNB8wHywfJB8cHqQXGB8UHxAfDB/4EwgfBB78HqgW+B7wHuwe6B7kHuAe3B7YHtQeyBbQHswfYBLIHsQewB9YErweuB6wH1wSrB6oHqQeoB6cHpgelB6QHoweiB5oDoQegB58HngedB5wHmweaB5kHmAeXB5YH/QOVB5QHsQWzBZIHkQePB44HjQeMB4oHiQeIB4cH0gTRBIYHhAeDB4IHgQeAB/8G/gb9BvwG+wb6BvkG+Ab3BvYG9Qb0BvMG8gbxBvAG7wbuBu0G7AbqBukG6AbnBuYG5QbkBuMG4gbhBuAG3wbeBt0G3AbbBto
 
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
 
CNgIMIAMoAgQiA0F/RgRAIAAgBDYCFAwJCyADIARGDQgMCQsgBCAFai8AACEEIAggA0EIaiICNgIMIAMoAgQiA0F/RgRAIAAgBDYCFAwICyADIARGDQcMCAsgACAEIAVqKAAANgIYDAYLIAAgBCAFaiIDKAAANgIYIAAgAy8ABDYCHAwFCyAAIAQgBWooAAA2AiAMBAsgACAEIAVqIgMoAAA2AiAgACADLQAENgIcDAMLIAAgBCAFaiIDKAAANgIgIAAgAy8ABDYCHAwCCyAAIAQgBWoiAygAADYCICAAIAMoAAQ2AhggACADLQAINgIcDAELCyAAIAk2AgwgACABNgIIQQEhDQsgCEEQaiQAIA0LCwAgACABQQAQoAQLvwEDAn8BfgF8QX8hAgJAAkACQAJAAkACQCABQiCIpyIDQQdqDg4CBAQEBAQDAAEBAQQEBQQLIAGnQQBHDwsgAacPCyABpykCBCEEIAAgARAKIARC/////weDQgBSDwsgAactAAUhAiAAIAEQCiACQX9zQYABcUEHdg8LIANBC2pBEk8EQCABEEkiBb1C////////////AINCgYCAgICAgPj/AFQgBUQAAAAAAAAAAGJxDwsgACABEApBASECCyACCxkAIAAoAhAgARDnASIBRQRAIAAQxgELIAELPwEBfyMAQRBrIgIkAAJ/IAEgACgCEEcEQCACIAE2AgAgAEH91gAgAhATQX8MAQsgABAPCyEAIAJBEGokACAACyEAIAAoAgRBf0wEQCAAIAFBAXRqLwEQDwsgACABai0AEAsoAQF/IwBBEGsiAiQAIAIgATsBDiAAIAJBDmpBAhCHARogAkEQaiQACwsAIAAgAUEBEOMFC5oLAgV/D34jAEHgAGsiBSQAIAJCIIYgAUIgiIQhDyAEQi+GIANCEYiEIQwgBEL///////8/gyINQg+GIANCMYiEIRAgAiAEhUKAgICAgICAgIB/gyEKIAJC////
 
////P4MiC0IgiCERIA1CEYghEiAEQjCIp0H//wFxIQcCQAJ/IAJCMIinQf//AXEiCUEBa0H9/wFNBEBBACAHQQFrQf7/AUkNARoLIAFQIAJC////////////AIMiDkKAgICAgIDA//8AVCAOQoCAgICAgMD//wBRG0UEQCACQoCAgICAgCCEIQoMAgsgA1AgBEL///////////8AgyICQoCAgICAgMD//wBUIAJCgICAgICAwP//AFEbRQRAIARCgICAgICAIIQhCiADIQEMAgsgASAOQoCAgICAgMD//wCFhFAEQCACIAOEUARAQoCAgICAgOD//wAhCkIAIQEMAwsgCkKAgICAgIDA//8AhCEKQgAhAQwCCyADIAJCgICAgICAwP//AIWEUARAIAEgDoQhAkIAIQEgAlAEQEKAgICAgIDg//8AIQoMAwsgCkKAgICAgIDA//8AhCEKDAILIAEgDoRQBEBCACEBDAILIAIgA4RQBEBCACEBDAILIA5C////////P1gEQCAFQdAAaiABIAsgASALIAtQIgYbeSAGQQZ0rXynIgZBD2sQciAFKQNYIgtCIIYgBSkDUCIBQiCIhCEPIAtCIIghEUEQIAZrIQYLIAYgAkL///////8/Vg0AGiAFQUBrIAMgDSADIA0gDVAiCBt5IAhBBnStfKciCEEPaxByIAUpA0giAkIPhiAFKQNAIgNCMYiEIRAgAkIvhiADQhGIhCEMIAJCEYghEiAGIAhrQRBqCyEGIAxC/////w+DIgIgAUL/////D4MiAX4iEyADQg+GQoCA/v8PgyIDIA9C/////w+DIg5+fCIEQiCGIg0gASADfnwiDCANVK0gAiAOfiIVIAMgC0L/////D4MiC358IhQgEEL/////D4MiDSABfnwiECAEIBNUrUIghiAEQiCIhHwiEyACIAt+IhYgAyARQoCABIQiD358IgMgDSAOfnwiESABIBJC/////weDQoCAg
 
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
 
CADKAIMIQUgAUGAATYCCCABIAFBEGo2AgwgAUEQaiEGAn8DQCABKAIIQQZrIQgCQANAIAQgBmogAjoAACAEQQFqIQQgBSwAACICQQBIDQEgAkH/AXEiAkEDdkEccUHg3wFqKAIAIAJ2QQFxRQ0BIAVBAWohBSAEIAhJDQALQQAgACgCACABQQxqIAFBCGogAUEQahCOBQ0CGiABKAIMIQYMAQsLIAAoAgAgBiAEEKwDCyECIAEoAgwiBCABQRBqRwRAIAAoAgAgBBAYCyADIAU2AgwgAUGQAWokACACRQ0CIABBg382AhAgAEIANwIkIAAgAjYCIAsgACADKAIMNgI4QQAMAwsgAUECaiEBA0AgAyABNgIMA0ACQAJAIAEtAAAiAgRAIAJBCmsOBAYBAQYBCyABIAAoAjxPDQUMAQsgAkEYdEEYdUF/Sg0AIAFBBiADQQxqEF8iAkF+cUGowABGBEAgAygCDCEBDAULIAMoAgwhASACQX9HDQELCyABQQFqIQEMAAsACwsgB0GofzYCAEF/CyEAIANBEGokACAACxEAIAAgASABIAIgA0ECEIwEC6wBAgJ/An4CfyACRQRAQoCAgIAwIQZBAAwBCyAAKAIQIgMpA4ABIQYgA0KAgICAIDcDgAFBfwshA0F/IQQCQCAAIAFBBiABQQAQEiIFEAsNAAJAIAUQEA0AIAUQJg0AIAAgBSABQQBBABA1IQECfyADIAINABpBfyABEAsNABogAyABECANABogABAoQX8LIQQgACABEAoMAQsgAyEECyACBEAgACAGEJIBCyAECwwAIAAgASAAIAFIGwsdACAAQoCAgIBwWgR/IACnLQAFQQR2QQFxBUEACwuuAQEBfyMAQRBrIgMkAAJAAkAgAhBcBEAgASACEHk2AgBBASECDAELIAAoAhAiACgCLCACTQ0BAn8CQCAAKAI4IAJBAnRqKAIAIgApAgRCgICAgICAgIBAg0KAgICAgI
 
CAgMAAUg0AIANBDGogABDoBUUNAEEBIAMoAgwiAEF/Rw0BGgtBACEAQQALIQIgASAANgIACyADQRBqJAAgAg8LQcovQaENQb8YQcI/EAAAC0UAIAAoAhAgASACEOYBIgEgAkVyRQRAIAAQxgEgAQ8LIAMEQCADQQAgACgCECABEKMEIgAgAmsiAiAAIAJJGzYCAAsgAQtpAQN+IAAgAkIgiCIDIAFCIIgiBH4gAkL/////D4MiAiABQv////8PgyIBfiIFQiCIIAIgBH58IgJCIIh8IAEgA34gAkL/////D4N8IgFCIIh8NwMIIAAgBUL/////D4MgAUIghoQ3AwAL+QECA34CfyMAQRBrIgUkAAJ+IAG9IgNC////////////AIMiAkKAgICAgICACH1C/////////+//AFgEQCACQjyGIQQgAkIEiEKAgICAgICAgDx8DAELIAJCgICAgICAgPj/AFoEQCADQjyGIQQgA0IEiEKAgICAgIDA//8AhAwBCyACUARAQgAMAQsgBSACQgAgA6dnQSBqIAJCIIinZyACQoCAgIAQVBsiBkExahByIAUpAwAhBCAFKQMIQoCAgICAgMAAhUGM+AAgBmutQjCGhAshAiAAIAQ3AwAgACACIANCgICAgICAgICAf4OENwMIIAVBEGokAAsqAQF/IwBBEGsiAyQAIAMgAjYCDCAAIAEgAkHuAkEAEK0EGiADQRBqJAALDQAgAEEAIAFBABChBAsbACAAIAFB/wFxEA4gACgCBCEBIAAgAhAcIAELlwwBB38jAEEgayICJAACQAJAAkACQAJAAn8gACgCECIDQYN/RwRAQQAgA0FXRw0BGiAAKAJAIgMtAGxBAXFFBEAgAEHjhgFBABATDAMLIAMoAmRFBEAgAEH+hgFBABATDAMLQX8hBSAAEA8NBQJ/AkACQAJAIAAoAhAiA0Epaw4EAgEBAgALIANB3QBGIANBOmtBAklyIANB/QB
 
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
 
CQRBqIAEQhgEFQcE8CzYCACAAQas8IAIQzwIgAkHQAGokAAvIogEDIH8FfgJ8IwBB4ABrIgchECAHJAAgACgCECEXQoCAgIDgACEoAkAgABB/DQACfwJ/AkACQAJAAkACQCABQv////9vWARAIAZBBHFFDQEgAaciCCIKKAI8IQcgCCgCGCIZKAIkIRMgGSgCICIRKAIwIQYgES8BKiEJIApBADYCPCAIIBcoAowBNgIQIAgoAiAhFSAIKAIwIQwgCCgCJCESIBcgCEEQaiIUNgKMASAVIRggDCEKIBIgCUEDdGoiGyAIKAIMRQ0GGgwECyABpyIZLwEGIghBDUYNAiAXKAJEIAhBGGxqKAIQIgcNAQsgAEGPxABBABAUDAYLIAAgASACIAQgBSAGIAcRFQAhKAwFCyAZKAIgIhEvAS4hDCARLwEqIRUgES8BKCEIIBAgES0AEDYCWCAQIAE3AzggECAENgJUIBBByABqEG4gGSgCJCETIAcgCEEAIAZBAXZBAXEgBCAISHIbIgYgDCAVampBA3RBD2pB8P//AXFrIhgkACAFIRUgBkUNASAEIBEvASgQsAEiB0EAIAdBAEobIQcDQCAHIBJGBEAgByARLwEoIgggByAISxshDANAIAcgDEcEQCAYIAdBA3RqQoCAgIAwNwMAIAdBAWohBwwBCwsgECAINgJUIBghFQwDBSAYIBJBA3QiCGogBSAIaikDABANNwMAIBJBAWohEgwBCwALAAtBAQwCCyAQIBU2AkAgECAYIAZBA3RqIhI2AkQgES8BKiEIQQAhBwNAIAcgCEcEQCASIAdBA3RqQoCAgIAwNwMAIAdBAWohBwwBCwsgESgCFCEMIBAgFygCjAE2AjAgFyAQQTBqNgKMASARKAIwIQYgEEEwaiEUIBIgCEEDdGoiBwshG0EACyEIA0ACQAJAAkACQCAIRQRAIBJBCGohHCASQRBqIR0gEkEYaiEeIBVBCGohHyAV
 
QRBqISAgFUEYaiEhIBtBGGohIyACQiCIpyIkQX5xISUgEEEwaiEmIBBBIGohIiAHIQgCQANAAkAgDEEBaiEKQgAhKEKAgICAMCEBAn8CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAwtAAAiDkEBaw7zAdQBACQIkQEJCgsMDQ4PEBESExQXFRYYGRobICEiIxwfHR4oJiYpKSor2AHjASwtLi/XATAxMjM0NTY3ODg5OTqeAaEBPDs9jgGPAZABkgGTAZQBnAGdAaABnwGiAZUBlgGXAZgBmQGjAaQBpQGaAZoBmwGbAT4/QEFCQ2tsbXFyc3Rub3B1fHt4f4ABgQHIAckBygHLAcsBywHLAcsBywF2dnZ3ggGEAYYBgwGFAYgBhwGJAYoBiwGMAdcB1QHWAdYB4gGuAa0BsAGvAbEBsQGzAbIBpwG0A
 
Y0BxQHGAccBqQGqAasBpgGoAawBtQG3AbYBuwG8Ab0BvgHEAcMBvwHAAcEBwgG4AboBuQHRAdwBAQEBAQEBAQEBAgMEBQZERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXV5fYGFiY2RlZmdoaWoHfn16eSUlJSXMAc0BzgHPAdMBCyAHIBEoAjQgCigAAEEDdGopAwAQDTcDACAMQQVqIQogB0EIaiEIDNsBCyAHIA5BswFrrTcDACAHQQhqIQgM2gELIAcgCiwAAK03AwAgDEECaiEKIAdBCGohCAzZAQsgByAKLgAArTcDACAMQQNqIQogB0EIaiEIDNgBCyAHIBEoAjQgDC0AAUEDdGopAwAQDTcDACAHQQhqIQggDEECaiEKDNcBCyAHIAYgESgCNCAMLQABQQN0aikDABANIBMgFBCNBCIBNwMAIAdBCGohCCAMQQJqIQogARALRQ3WAQzYAQsgByAGQS8QMTcDACAHQQhqIQgM1QELIAYgB0EIayIIKQMAIgFBMCABQQAQEiIBEAsN2AEgBiAIKQMAEAogCCABNwMADNMBCyAHIAYgCigAABBeNwMAIAxBBWohCiAHQQhqIQgM0wELIAdCgICAgDA3AwAgB0EIaiEIDNIBCyAHQoCAgIAgNwMAIAdBCGohCAzRAQsCQAJAAn4gAiAkQX9GDQAaIAIgES0AEEEBcQ0AGiAlQQJHDQEgBikDwAELEA0hKAwBCyAGIAIQKSIoEAsN1QELIAcgKDcDACAHQQhqIQgM0AELIAdCgICAgBA3AwAgB0EIaiEIDM8BCyAHQoGAgIAQNwMAIAdBCGohCAzOAQsgByAGED0iATcDACAHQQhqIQggARALRQ3NAQzPAQsgDEECaiEKAkACQAJAAkACQAJAAkACQCAMLQABDgcAAQIDBAUGBwsgBwJ+QQAhCEEAIQkgBiAGKAIoKQMIQQgQUCIBEAtFBEAgBiABpyILQTBBAxCAASAErT
 
cDAAJAIARBAUgNACAGIARBA3QQLSIJBEADQCAEIAhGDQIgCSAIQQN0Ig1qIAUgDWopAwAQDTcDACAIQQFqIQgMAAsACyAGIAEQCkKAgICA4AAMAgsgCyAENgIoIAsgCTYCJCAGIAFBwwEgBikDqAEQDUEDEBkaIAYgAUHOAEKAgICAMCAGKQOwASInICdBgDAQdRoLIAELIgE3AwAgB0EIaiEIIAEQC0UN0wEM1QELIAcCfiAEIBEvASgQsAEhCEEAIQkCQCAGIAYoAigpAwhBCRBQIgEQCw0AIAYgAaciDUEwQQMQgAEgBK03AwAgCEEAIAhBAEobIQ4DQAJAAkACQCAJIA5GBEAgCCAEIAQgCEgbIQkDQCAIIAlGDQQgBiABIAggBSAIQQN0aikDABANQQcQnAEhCyAIQQFqIQggC0EATg0ACwwBCyAGIBQgCUEBEIoEIgtFDQAgBiANIAkQkwFBJxCAASIPDQEgBigCECALEPkBCyAGIAEQCkKAgICA4AAhAQwDCyAPIAs2AgAgCUEBaiEJDAELCyAGIAFBwwEgBikDqAEQDUEDEBkaIAYgAUHOACAGKAIQKAKMASkDCBANQQMQGRogAQwBCyABCyIBNwMAIAdBCGohCCABEAtFDdIBDNQBCyAHIBQpAwgQDTcDACAHQQhqIQgM0QELIAcgAxANNwMAIAdBCGohCAzQAQsgBwJ+QoCAgIAwIBkoAigiCEUNABogCK1CgICAgHCEEA0LNwMAIAdBCGohCAzPAQsgByAGQoCAgIAgEFIiATcDACAHQQhqIQggARALRQ3OAQzQAQsgBwJ+AkAgBhC+BSIJBEAgBiAJELwFIQggBiAJEBEgCA0BCyAGQZjHAEEAEBRCgICAgOAADAELAn4gCCkDaCIBEBAEQEKAgICA4AAgBkKAgICAIBBSIgEQCw0BGiAIIAE3A2gLIAEQDQsLIgE3AwAgB0EIaiEIIAEQC0UNzQEMzwELEAE
 
ACyAKLwAAIQoCQCAGEE4iARALDQAgBCAKIAQgCkobIQkgCiEIA0AgCCAJRg0BIAggCmshCyAIQQN0IQ0gCEEBaiEIIAYgASALIAUgDWopAwAQDUEHEJwBQX9KDQALIAYgARAKQoCAgIDgACEBCyAHIAE3AwAgB0EIaiEIIAxBA2ohCiABEAtFDcsBDM0BCyAGIAdBCGsiCCkDABAKDMoBCyAGIAdBEGsiCCkDABAKIAggB0EIayIIKQMANwMADMkBCyAGIAdBGGsiCCkDABAKIAggB0EQayIIKQMANwMAIAggB0EIayIIKQMANwMADMgBCyAHIAdBCGspAwAQDTcDACAHQQhqIQgMxwELIAcgB0EQaykDABANNwMAIAcgB0EIaykDABANNwMIIAdBEGohCAzGAQsgByAHQRhrKQMAEA03AwAgByAHQRBrKQMAEA03AwggByAHQQhrKQMAEA03AxAgB0EYaiEIDMUBCyAHIAdBCGsiCCkDADcDACAIIAdBEGspAwAQDTcDACAHQQhqIQgMxAELIAcgB0EIayIIKQMAIgE3AwAgCCAHQRBrIggpAwA3AwAgCCABEA03AwAgB0EIaiEIDMMBCyAHIAdBCGsiCCkDACIBNwMAIAdBEGsiDCkDACEnIAwgB0EYayIMKQMANwMAIAggJzcDACAMIAEQDTcDACAHQQhqIQgMwgELIAcgB0EIayIIKQMAIgE3AwAgB0EQayIMKQMAIScgDCAHQRhrIgwpAwA3AwAgCCAnNwMAIAwgB0EgayIIKQMANwMAIAggARANNwMAIAdBCGohCAzBAQsgB0EQayIIKQMAIQEgCCAHQRhrIggpAwA3AwAgCCABNwMADL8BCyAHQRhrIggpAwAhASAIIAdBEGsiCCkDADcDACAHQQhrIgwpAwAhJyAMIAE3AwAgCCAnNwMADL4BCyAHQSBrIggpAwAhASAIIAdBGGsiCCkDADcDACAHQRBrIgwpAwAh
 
JyAMIAdBCGsiDCkDADcDACAIICc3AwAgDCABNwMADL0BCyAHQShrIggpAwAhASAIIAdBIGsiCCkDADcDACAHQRhrIgwpAwAhJyAMIAdBEGsiDCkDADcDACAIICc3AwAgDCAHQQhrIggpAwA3AwAgCCABNwMADLwBCyAHQQhrIggpAwAhASAIIAdBEGsiCCkDADcDACAHQRhrIgwpAwAhJyAMIAE3AwAgCCAnNwMADLsBCyAHQRBrIggpAwAhASAIIAdBGGsiCCkDADcDACAHQSBrIgwpAwAhJyAMIAE3AwAgCCAnNwMADLoBCyAHQRBrIggpAwAhASAIIAdBGGsiCCkDADcDACAHQSBrIgwpAwAhJyAMIAdBKGsiDCkDADcDACAIICc3AwAgDCABNwMADLkBCyAHQQhrIggpAwAhASAIIAdBEGsiCCkDADcDACAIIAE3AwAMuAELIAdBIGsiCCkDACEBIAggB0EQayIIKQMANwMAIAdBCGsiDCkDACEnIAwgB0EYayIMKQMANwMAIAggATcDACAMICc3AwAMtwELIAcgBiARKAI0IAooAABBA3RqKQMAEA0gEyAUEI0EIgE3AwAgB0EIaiEIIAxBBWohCiABEAtFDbcBDLkBCyAOQewBayELDAELIAovAAAhCyAMQQNqIQoLIBQgCjYCICAGIAcgC0EDdGsiCEEIaykDAEKAgICAMEKAgICAMCALIAhBABDiASIBEAsNuAEgDkEjRg27AUF/IQwgC0F/IAtBf0obIQkDQCAJIAxHBEAgBiAIIAxBA3RqKQMAEAogDEEBaiEMDAELCyAHIAtBf3NBA3RqIgcgATcDACAHQQhqIQgMtAELIAovAAAhCCAUIAxBA2oiCjYCICAGIAcgCEEDdGsiCUEQaykDACAJQQhrKQMAIAggCUEAEIwEIgEQCw23AUF+IQwgCEF+IAhBfkobIQsDQCALIAxHBEAgBiAJIAxBA3RqKQMAEAogD
 
EEBaiEMDAELCyAHQX4gCGtBA3RqIgcgATcDACAHQQhqIQgMswELIAovAAAhCCAUIAxBA2oiCjYCICAGIAcgCEEDdGsiCUEIaykDACAJQRBrKQMAQoCAgIAwIAggCUEAEOIBIgEQCw22ASAOQSVGDbkBQX4hDCAIQX4gCEF+ShshCwNAIAsgDEcEQCAGIAkgDEEDdGopAwAQCiAMQQFqIQwMAQsLIAdBfiAIa0EDdGoiByABNwMAIAdBCGohCAyyAQsgDEEDaiEJIAovAAAhCAJAIAYQTiIBEAtFBEBBACEKIAhBACAIGyELIAcgCEEDdGshCANAIAogC0YNAiAGIAEgChCTASAIIApBA3RqIg0pAwBBh4ABEBkhDiANQoCAgIAwNwMAIApBAWohCiAOQX9KDQALIAYgARAKCyAJIQoMtgELIAggATcDACAIQQhqIQggCSEKDLEBCyAMQQNqIQkgBiAHQRhrIgspAwBBAiAHQRBrIgggCi8AABCaAyIBEAsEQCAJIQoMtQELIAYgCykDABAKIAYgCCkDABAKIAYgB0EIaykDABAKIAsgATcDACAJIQoMsAELQoCAgIAQISgCQCAHQQhrKQMAIgEQIA0AQoGAgIAQISggARAQDQAgAEGexABBABAUDLQBCyAHICg3AwAgB0EIaiEIDK8BCyADEBBFDa0BIAZB28QAQQAQFAyyAQsgByEIIAdBEGspAwAhAQJ/AkACQCAHQQhrKQMAIidC/////29YDQAgJ6ciCS8BBhD3AUUNACAJKAIoIgtFDQAgCygCECINIA0oAhhBf3NBAnRB+HlyaigCACEJIA0QJyENAkADQCAJBEAgDSAJQQFrIglBA3RqIg4oAgRBwQFGDQIgDigCAEH///8fcSEJDAELCyAGQcLHAEEAEBQMAgsgAUKAgICAcFQNACALKAIUIAlBA3RqKQMAIidCgICAgHCDQoCAgICAf1INACAGICcQmAIhCyABpy
 
gCECINIAsgDSgCGHFBf3NBAnRqKAIAIQkgDRAnIQ0DQCAJBEBBACANIAlBAWtBA3RqIgkoAgQgC0YNBBogCSgCAEH///8fcSEJDAELCyAGQeLHAEEAEBQMAQsgBhAoC0F/C0EATg2tAQyxAQsCfyAHQRBrIggpAwAhAQJ/AkACQCAHQQhrIg4pAwAiJ0L/////b1gEQCAGECgMAQsgJ6ciCygCECINIA0oAhhBf3NBAnRB+HlyaigCACEJIA0QJyENAkACQANAIAkEQCANIAlBAWsiCUEDdGoiDygCBEHBAUYNAiAPKAIAQf///x9xIQkMAQsLQX8gBkH3ABDJBSInEAsNBBogBiALQcEBQQcQgAEiCUUEQCAGICcQCkF/DAYLIAkgJxANIic3AwAMAQsgCygCFCAJQQN0aikDABANIScLIAYgJxCYAiEJIAFC/////29YBEAgBhAoIAYgCRARDAELIAYgAacgCUEHEIABIQsgBiAJEBEgCw0BC0F/DAILIAtCgICAgDA3AwBBAAsLQQBIDbABIAYgCCkDABAKIAYgDikDABAKDKwBCyAGIAdBCGsiBykDABCSAQyvAQsgCigAACEIIAxBBmohCgJAAkACQAJAAkACQCAMLQAFIgkOBQABAgMEBQsgBkGAgAEgCBDfARoMswELIAYgCBDMBQyyAQsgBiAIEOEBDLEBCyAGQYnFAEEAEM8CDLABCyAGQarFAEEAEBQMrwELIBAgCTYCECAGQdDFACAQQRBqEEEMrgELIAovAAAhCCAMLwADIQsgFCAMQQVqIgo2AiACfiAGIAcgCEEDdGsiCUEIayINKQMAIAYpA7gBEFgEQCAGQoCAgIAwIAhBAU8EfiAJKQMABUKAgICAMAtBAiALQQFrEJkDDAELIAYgDSkDAEKAgICAMEKAgICAMCAIIAlBABDiAQsiARALDa0BQX8hDCAIQX8gCEF/ShshCwNAIAsgDEcEQCAGIAkgDEE
 
DdGopAwAQCiAMQQFqIQwMAQsLIAcgCEF/c0EDdGoiByABNwMAIAdBCGohCAypAQsgDEEDaiEJIAovAAAhDgJAIAYgEEEYaiAHQQhrIggpAwAQiwQiCgRAAn4gBiAHQRBrIgspAwAgBikDuAEQWARAIAZCgICAgDAgECgCGCINBH4gCikDAAVCgICAgDALQQIgDkEBaxCZAwwBCyAGIAspAwBCgICAgDAgECgCGCINIAoQIgshASAGIAogDRCYAyABEAtFDQELIAkhCgytAQsgBiALKQMAEAogBiAIKQMAEAogCyABNwMAIAkhCgyoAQsgB0EQayIIIAZCgICAgDAgCCkDACAHQQhrIggpAwAQywU3AwAMpwELIAYgB0EIayIIKQMAEPsBIgEQCw2qASAGIAgpAwAQCiAIIAE3AwAMpQELAn4gB0EIayIJKQMAISgjAEEwayIIJAACfkKAgICAICAGEL4FIgtFDQAaIAYgCxBeCyEBIAYgCxARAkAgARALBEAgASEnDAELAkAgBiAIQSBqEI8DIicQCwRAIAEhKAwBCyAIIAgpAyAiKTcDACAIICg3AxggCCABNwMQIAggCCkDKCIoNwMIIAZBKEEEIAgQggMgBiABEAogBiApEAoLIAYgKBAKCyAIQTBqJAAgJwsQCw2pASAGIAkpAwAQCiAJICc3AwAMpAELIAxBBWohCQJ/IAYoAsgBKAIQIgggCigAACINIAgoAhhxQX9zQQJ0aigCACEKIAgQJyEIAkADQCAKBEBBASELIAggCkEBa0EDdGoiCigCBCANRg0CIAooAgBB////H3EhCgwBCwsgBiAGKQPAASANEHciC0EATg0AQX8hCwsgC0EASAsEQCAJIQoMqQELIAcgC0EAR61CgICAgBCENwMAIAdBCGohCCAJIQoMpAELIAxBBWohCQJ+IA5BN2shDSAGKALIASIOKAIQIgsgCigAACIIIAsoAhhxQX9zQQJ0aigC
 
ACEKIAsQJyELAkADQCAKRQ0BIAggCyAKQQFrIgpBA3RqIg8oAgRHBEAgDygCAEH///8fcSEKDAELCyAOKAIUIApBA3RqKQMAIgEQgwEEQCAGIAgQ4QFCgICAgOAADAILIAEQDQwBCyAGIAYpA8ABIgEgCCABIA0QEgsiARALBEAgCSEKDKgBCyAHIAE3AwAgB0EIaiEIIAkhCgyjAQsgCigAACEIIAxBBWohCiAGIAggB0EIayIIKQMAIA5BOWsQygVBf0oNogEMpAELIAxBBWohCSAKKAAAIQsgB0EQayIIKAIARQRAIAYgCxDNAiAJIQoMpgELIAkhCiAGIAsgB0EIaykDAEECEMoFQX9KDaEBIAghBwylAQsgCigAACELIAchCCAMQQZqIgkhCgJ/IAwtAAUhDiAGKALAASIWKAIQIg8gDygCGCALcUF/c0ECdGooAgAhDSAPECchDwJAAkACQAJAAkADQCANRQ0BIA1BA3QgD2oiGkEIayENIAsgGkEEaygCAEcEQCANKAIAQf///x9xIQ0MAQsLIA5BgAFxBEAgDS0AA0EEcQ0DDAQLIA5BwABxRQ0CIA0oAgAiDUGAgIAgcQ0CIA1BgICAgHxxQYCAgIAERg0BIA1BgICAwAFxQYCAgMABRg0CDAELIA5BgAFxDQEgFi0ABUEBcQ0BCyAGIAtB6sgAEMUBDAILIAYoAsgBKAIQIg4gDigCGCALcUF/c0ECdGooAgAhDSAOECchDgNAQQAgDUUNAxogDiANQQFrQQN0aiINKAIEIAtGDQEgDSgCAEH///8fcSENDAALAAsgBiALEMwFC0F/C0UNoAEgCSEKDKQBCyAKKAAAIQsgByEIIAxBBmoiCSEKAn8gDC0ABSINQQJxQQVyIA1BAXFBBnIgDUGAAXEiDhshGiAGQcgBQcABIA4baigCACIPKAIQIhYgFigCGCALcUF/c0ECdGooAgAhDUKAgICAwABCgICAgDAgD
 
hshASAWECchDgJAA0AgDQRAIA4gDUEBa0EDdGoiDSgCBCALRg0CIA0oAgBB////H3EhDQwBCwsgDy0ABUEBcUUNAEF/IAYgDyALIBoQgAEiC0UNARogCyABNwMAC0EAC0UNnwEgCSEKDKMBCyAMQQZqIQkCfyAHQQhrIggpAwAhASAMLQAFIQ4gBikDwAEiJ6coAhAiDSAKKAAAIgogDSgCGHFBf3NBAnRqKAIAIQsgDRAnIQ0gBiAnIAogAUKAgICAMEKAgICAMAJ/AkADQCALRQ0BIAtBA3QgDWpBCGsiDygCACELIAogDygCBEcEQCALQf///x9xIQsMAQsLQYDAASALQYCAgCBxRQ0BGgsgDkGGzgFyCxB1QR91CwRAIAkhCgyjAQsgBiAIKQMAEAogCSEKDJ4BCyAHIBIgCi8AAEEDdGopAwAQDTcDACAMQQNqIQogB0EIaiEIDJ0BCyAGIBIgCi8AAEEDdGogB0EIayIIKQMAEB4gDEEDaiEKDJwBCyAGIBIgCi8AAEEDdGogB0EIaykDABANEB4gDEEDaiEKDJoBCyAHIBUgCi8AAEEDdGopAwAQDTcDACAMQQNqIQogB0EIaiEIDJoBCyAGIBUgCi8AAEEDdGogB0EIayIIKQMAEB4gDEEDaiEKDJkBCyAGIBUgCi8AAEEDdGogB0EIaykDABANEB4gDEEDaiEKDJcBCyAHIBIgDC0AAUEDdGopAwAQDTcDACAMQQJqIQogB0EIaiEIDJcBCyAGIBIgDC0AAUEDdGogB0EIayIIKQMAEB4gDEECaiEKDJYBCyAGIBIgDC0AAUEDdGogB0EIaykDABANEB4gDEECaiEKDJQBCyAHIBIpAwAQDTcDACAHQQhqIQgMlAELIAcgHCkDABANNwMAIAdBCGohCAyTAQsgByAdKQMAEA03AwAgB0EIaiEIDJIBCyAHIB4pAwAQDTcDACAHQQhqIQgMkQELIAYgEiAHQQhrIg
 
gpAwAQHgyQAQsgBiAcIAdBCGsiCCkDABAeDI8BCyAGIB0gB0EIayIIKQMAEB4MjgELIAYgHiAHQQhrIggpAwAQHgyNAQsgBiASIAdBCGspAwAQDRAeIAchCAyMAQsgBiAcIAdBCGspAwAQDRAeIAchCAyLAQsgBiAdIAdBCGspAwAQDRAeIAchCAyKAQsgBiAeIAdBCGspAwAQDRAeIAchCAyJAQsgByAVKQMAEA03AwAgB0EIaiEIDIgBCyAHIB8pAwAQDTcDACAHQQhqIQgMhwELIAcgICkDABANNwMAIAdBCGohCAyGAQsgByAhKQMAEA03AwAgB0EIaiEIDIUBCyAGIBUgB0EIayIIKQMAEB4MhAELIAYgHyAHQQhrIggpAwAQHgyDAQsgBiAgIAdBCGsiCCkDABAeDIIBCyAGICEgB0EIayIIKQMAEB4MgQELIAYgFSAHQQhrKQMAEA0QHiAHIQgMgAELIAYgHyAHQQhrKQMAEA0QHiAHIQgMfwsgBiAgIAdBCGspAwAQDRAeIAchCAx+CyAGICEgB0EIaykDABANEB4gByEIDH0LIAcgEygCACgCECkDABANNwMAIAdBCGohCAx8CyAHIBMoAgQoAhApAwAQDTcDACAHQQhqIQgMewsgByATKAIIKAIQKQMAEA03AwAgB0EIaiEIDHoLIAcgEygCDCgCECkDABANNwMAIAdBCGohCAx5CyAGIBMoAgAoAhAgB0EIayIIKQMAEB4MeAsgBiATKAIEKAIQIAdBCGsiCCkDABAeDHcLIAYgEygCCCgCECAHQQhrIggpAwAQHgx2CyAGIBMoAgwoAhAgB0EIayIIKQMAEB4MdQsgBiATKAIAKAIQIAdBCGspAwAQDRAeIAchCAx0CyAGIBMoAgQoAhAgB0EIaykDABANEB4gByEIDHMLIAYgEygCCCgCECAHQQhrKQMAEA0QHiAHIQgMcgsgBiATKAIMKAIQIAdBCGspAwA
 
QDRAeIAchCAxxCyAHIBMgCi8AAEECdGooAgAoAhApAwAQDTcDACAMQQNqIQogB0EIaiEIDHALIAYgEyAKLwAAQQJ0aigCACgCECAHQQhrIggpAwAQHiAMQQNqIQoMbwsgBiATIAovAABBAnRqKAIAKAIQIAdBCGspAwAQDRAeIAxBA2ohCiAHIQgMbgsgDEEDaiEJIBMgCi8AACIIQQJ0aigCACgCECkDACIBEIMBRQRAIAcgARANNwMAIAdBCGohCCAJIQoMbgsgBiARIAhBARDHAiAJIQoMcQsgDEEDaiEJIBMgCi8AACIIQQJ0aigCACgCECIKKQMAEIMBRQRAIAYgCiAHQQhrIggpAwAQHiAJIQoMbQsgBiARIAhBARDHAiAJIQoMcAsgDEEDaiEJIBMgCi8AACIIQQJ0aigCACgCECIKKQMAEIMBRQRAIAYgESAIQQEQxwIgCSEKDHALIAYgCiAHQQhrIggpAwAQHiAJIQoMawsgBiASIAovAABBA3RqQoCAgIDAABAeIAxBA2ohCiAHIQgMagsgDEEDaiEJIBIgCi8AACIIQQN0aikDACIBEIMBRQRAIAcgARANNwMAIAdBCGohCCAJIQoMagsgBiARIAhBABDHAiAJIQoMbQsgDEEDaiEJIBIgCi8AACIIQQN0aiIKKQMAEIMBRQRAIAYgCiAHQQhrIggpAwAQHiAJIQoMaQsgBiARIAhBABDHAiAJIQoMbAsgDEEDaiEJIBIgCi8AAEEDdGoiCCkDABCDAUUEQCAGQerFAEEAEM8CIAkhCgxsCyAGIAggB0EIayIIKQMAEB4gCSEKDGcLIAovAAAhCyAUQRhqIQ0gFCgCHCEKA0AgDSAKIghHBEAgCCgCBCEKIAhBAmsvAQAgC0cNASAIQQhrIgktAAVBAnENASAUKAIUIAtBA3RqKQMAEA0hASAIIAhBEGo2AgggCCABNwMQIAgQRiAJIAktAAVBAXI6AAUgBigC
 
ECAJQQMQvAEMAQsLIAxBA2ohCiAHIQgMZgsgCigAACEJIAwvAAUhCyAHIAZCgICAgCAQUiIBNwMAIAdBCGohCCAMQQdqIQoCQAJAIAEQCw0AAkAgDkH6AEYEQCATIAtBAnRqKAIAIgsgCygCAEEBajYCAAwBCyAGIBQgCyAOQfkARhCKBCILRQ0BCyAGIAcoAgAgCUEiEIABIg0NASAXIAsQ+QELIAghBwxqCyANIAs2AgAgByAGIAkQXjcDCCAHQRBqIQgMZQsgDEEFaiEJAn8gBikDyAEiAaciDSgCECILIAooAAAiCCALKAIYcUF/c0ECdGooAgAhCiALECchCyAHAn4CQAJAAkACQANAIApFDQEgCCALIApBAWsiDkEDdGoiCigCBEcEQCAKKAIAQf///x9xIQoMAQsLIA0oAhQgDkEDdGopAwAQgwEEQCAGIAgQ4QEMAgsgCi0AA0EIcQ0DIAZBgIABIAgQ3wEMBQsgBiAGKQPAASAIEHciCkEATg0BC0F/DAMLQoCAgIAwIApFDQEaIAYpA8ABIQELIAEQDQs3AwAgByAGIAgQXjcDCEEACwRAIAkhCgxpCyAHQRBqIQggCSEKDGQLIAogCigAAGohCiAHIQggBhB/RQ1jDGcLIAogCi4AAGohCiAHIQggBhB/RQ1iDGYLIAogCiwAAGohCiAHIQggBhB/RQ1hDGULAn8gDEEFaiIJAn8gB0EIayIIKQMAIgFCIIinQQNNBEAgAacMAQsgBiABECwLRQ0AGiAJIAooAABqQQRrCyEKIAYQf0UNYAxiCwJ/IAxBBWoiCQJ/IAdBCGsiCCkDACIBQiCIp0EDTQRAIAGnDAELIAYgARAsCw0AGiAJIAooAABqQQRrCyEKIAYQf0UNXwxhCwJ/IAxBAmoiCQJ/IAdBCGsiCCkDACIBQiCIp0EDTQRAIAGnDAELIAYgARAsC0UNABogCiwAACAJakEBawshCiAGEH9FDV4MY
 
AsCfyAMQQJqIgkCfyAHQQhrIggpAwAiAUIgiKdBA00EQCABpwwBCyAGIAEQLAsNABogCiwAACAJakEBawshCiAGEH9FDV0MXwsgByAKIAooAABqIBEoAhRrrUKAgICA0ACENwMAIAxBBWohCiAHQQhqIQgMXAsgCigAACEIIAcgDCARKAIUa0EFaq03AwAgCCAKaiEKIAdBCGohCAxbCwJAIAdBCGsiCCkDACIBQv////8PVg0AIAGnIgkgESgCGE8NACARKAIUIAlqIQoMWwsgBkGOxgBBABBBDF4LIAchCCAHQQhrIgkCfiAJKQMAIQFBACENIwBBEGsiCSQAIAFCIIinIg5BAWoiC0EETUEAQQEgC3RBGXEbRQRAIAYgARCXBSEBCwJAAkACQCAGQRgQLSILRQ0AIAZCgICAgCBBERBQIicQCwRAIAYgCxAYDAELIAtBADYCECALIAE3AwAgC0EANgIIICenIAs2AiAgDkF+cUECRg0CIAEQDSIoIQECQANAAkACQCAGIAEQmQIiARAmRQRAIAEQCw0EIAYgCUEMaiAJQQhqIAGnQREQkAENAiAGIAkoAgwgCSgCCCIOEGQgDkUNASAGIAEQCiAoEA0hAQNAIAYgCUEMaiAJQQhqIAGnQSEQkAFFBEBBACELIAkoAgwhDSAJKAIIIQ4DQCALIA5HBEAgBiAnIA0gC0EDdGoiDygCBEKAgICAICAPKAIAQQBHQQJ0EBkaIAtBAWohCwwBCwsgBiANIA4QZCAGIAEQmQIiARAmDQkgARALDQYgBhB/RQ0BCwsgBiABEAoMBAsCQCAopyIOLQAFQQhxRQ0AIA4oAhAiFhAnIQ8gFigCICIWQQAgFkEAShshFgNAIA0gFkcEQCAPLQADQRBxDQIgD0EIaiEPIA1BAWohDQwBCwsgC0EBNgIIIAsgDigCKDYCDAwHCyAGIAlBDGogCUEIaiAOQREQkAENAyAJKAIMIQ0gCSgCCC
 
EOQQAhCwNAIAsgDkcEQCAGICcgDSALQQN0aigCBEKAgICAIEEAEJcCGiALQQFqIQsMAQsLIAYgDSAOEGQMBgsgBhB/RQ0BCwsgBiABEAoLIAYgJxAKDAELIAYgARAKC0KAgICA4AAhJwsgCUEQaiQAICciAQs3AwBBf0EAIAEQCxtFDVkMXQtCgYCAgBAhAUKAgICAMCEnAkACQCAHQQhrKQMAIihCgICAgHBUDQAgKKciDS8BBkERRw0AIA0oAiAhCANAAkAgCCgCCARAIAgoAhAiCyAIKAIMTw0DIAsQkwEhCSAIIAtBAWo2AhAMAQsgCCgCECILIA0oAhAiCSgCIE8NAiAJECcgC0EDdGoiDigCBCEJIAggC0EBajYCECAJRQ0BIA4tAANBEHFFDQELIAYgCCkDACAJEHciC0EASA0CIAtFDQALQoCAgIAQIQEgBiAJEF4hJwsgByABNwMIIAcgJzcDAEEAIQsLIAsNXCAHQRBqIQgMWAsgBiAHQQAQlwMNWyAHQoCAgIDQADcDCCAHQRBqIQgMVwsgDEECaiEKQX0gDC0AAWshCyMAQRBrIgkkAEEBIQggCUEBNgIMAkACQCAHIAtBA3RqIgspAwAiARAQRQRAQX8hDUF/IQgCQCAGIAEgCykDCCAJQQxqEKsBIgEQCw0AIAkoAgwiCA0AQQAhCAwCCyAGIAspAwAQCiALQoCAgIAwNwMAIAhBAEgNAiAGIAEQCiAIQQBHIQgLQoCAgIAwIQELIAcgATcDACAHIAitQoCAgIAQhDcDCEEAIQ0LIAlBEGokACANDVogB0EQaiEIDFYLIAYgB0EBEJcDDVkgB0KAgICA0AA3AwggB0EQaiEIDFULIwBBEGsiCCQAAn8gB0EIayIJKQMAIgEQIEUEQCAGQaDGAEEAEBRBfwwBC0F/IAYgASAIQQxqEKAFIicQCw0AGiAGIAEQCiAJICc3AwAgByAIKAIMQQBHrUKAgICAEIQ
 
3AwBBAAshCSAIQRBqJAAgCQ1YIAdBCGohCAxUCyAHQQhrKQMAECANUiAGQaDGAEEAEBQMVwsgBiAHQRBrIgkpAwAQCiAHQRhrIggpAwAiARAQDVIgBiABQQAQrwEEQCAJIQcMVwsgBiAIKQMAEAoMUgsgB0EIayIHKQMAIQEDQAJAIAcgG00NACAHQQhrIggpAwAiJ0KAgICAcINCgICAgNAAUQ0AIAYgJxAKIAghBwwBCwsgByAjSQRAIAZBv8YAQQAQQSAGIAEQCgxWCyAHIAdBCGsiCCkDADcDACAHQRBrIgwpAwAhJyAMIAdBGGsiDCkDADcDACAIICc3AwAgDCABNwMAIAdBCGohCAxRCyAGIAdBGGspAwAgB0EgaykDAEEBIAdBCGsiCBAiIgEQCw1UIAYgCCkDABAKIAggATcDACAHIQgMUAsgDEECaiEKIAYgB0EgayIIKQMAIgFBF0EGIAwtAAEiCUEBcRsgAUEAEBIiJxALDVNCgYCAgBAhAQJAICcQEA0AICcQJg0AIAgpAwAhAQJ+IAlBAnEEQCAGICcgAUEAQQAQNQwBCyAGICcgAUEBIAdBCGsQNQsiARALDVQgBiAHQQhrIggpAwAQCiAIIAE3AwBCgICAgBAhAQsgByABNwMAIAdBCGohCAxPCwJ/IAdBCGsiCCkDACIBQiCIp0EDTQRAIAGnQQBHDAELIAYgARAsCyEMIAggDEWtQoCAgIAQhDcDACAHIQgMTgsgDEEFaiEJIAYgB0EIayIIKQMAIgEgCigAACABQQAQEiIBEAsEQCAJIQoMUgsgBiAIKQMAEAogCCABNwMAIAchCCAJIQoMTQsgDEEFaiEJIAYgB0EIaykDACIBIAooAAAgAUEAEBIiARALBEAgCSEKDFELIAcgATcDACAHQQhqIQggCSEKDEwLIAYgB0EQayIIKQMAIAooAAAgB0EIaykDAEGAgAIQlwIhByAGIAgpAwAQCiAMQQVq
 
IQogB0F/Sg1LDE0LIAxBBWohCSAGIAooAAAQyQUiARALBEAgCSEKDE8LIAcgATcDACAHQQhqIQggCSEKDEoLAn4gB0EIayIIKQMAIQEgB0EQayILKQMAIidC/////29YBEAgBhAoQoCAgIDgAAwBCyABQoCAgIBwg0KAgICAgH9SBEAgBhDqA0KAgICA4AAMAQsgBiABEJgCIQcgJ6ciDigCECINIAcgDSgCGHFBf3NBAnRqKAIAIQkgDRAnIQ0CQANAIAkEQCANIAlBAWsiCUEDdGoiDygCBCAHRg0CIA8oAgBB////H3EhCQwBCwsgBiAHEJ8FQoCAgIDgAAwBCyAOKAIUIAlBA3RqKQMAEA0LIQEgBiAIKQMAEAogBiALKQMAEAogCyABNwMAIAEQC0UNSQxLCwJ/IAdBCGsiDSkDACEBIAdBEGspAwAhJwJAAkAgB0EYayIIKQMAIihC/////29YBEAgBhAoDAELIAFCgICAgHCDQoCAgICAf1IEQCAGEOoDDAELIAYgARCYAiEHICinIg4oAhAiCyAHIAsoAhhxQX9zQQJ0aigCACEJIAsQJyELA0AgCQRAIAsgCUEBayIJQQN0aiIPKAIEIAdGDQMgDygCAEH///8fcSEJDAELCyAGIAcQnwULIAYgJxAKQX8MAQsgBiAOKAIUIAlBA3RqICcQHkEACyEHIAYgCCkDABAKIAYgDSkDABAKIAdBf0oNSAxKCwJ/IAdBEGsiCCkDACEBIAdBCGspAwAhJwJAAkAgB0EYaykDACIoQv////9vWARAIAYQKAwBCyABQoCAgIBwg0KAgICAgH9SBEAgBhDqAwwBCyAGIAEQmAIhByAopyINKAIQIgsgByALKAIYcUF/c0ECdGooAgAhCSALECchCwJAA0AgCUUNASAHIAsgCUEBa0EDdGoiCSgCBEcEQCAJKAIAQf///x9xIQkMAQsLIAYgB0GZygAQxQEMAQsgBiANIAdBB
 
xCAASIHDQELIAYgJxAKQX8MAQsgByAnNwMAQQALIQcgBiAIKQMAEAogB0F/Sg1HDEkLIAooAAAhCCAMQQVqIQogBiAHQRBrKQMAIAggB0EIayIIKQMAQYeAARAZQX9KDUYMSAsgCigAACELIAchCCAMQQVqIgkhCiAGIAdBCGspAwAgCxDIBUF/Sg1FIAkhCgxJCyAHIQggBiAHQQhrKQMAIAdBEGspAwAQxwVBf0oNRAxICwJAIAdBCGsiCCkDACIBECBFBEAgARAmRQ0BCyAGIAdBEGspAwAgAUEBEJsCQQBIDUgLIAYgARAKDEMLIAYgB0EIaykDACAHQRBrKQMAEIkEIAchCAxCCwJ/IA5B1QBGBEAgBiAHQRBrKQMAEDkiCEUNRyAHQRhrDAELIAooAAAhCCAMQQVqIQogB0EQawshCyAKLQAAIg1BBHEhCSALKQMAIScCfgJ+AkACQAJAIA1BA3EOAgABAgsgCUGDzgFyIQsgB0EIaykDACIBISpCgICAgDAMAgsgCUGBmgFyIQtCgICAgDAhKkKAgICAMCEoIAdBCGspAwAiAQwCCyAJQYGqAXIhC0KAgICAMCEqIAdBCGspAwAiAQshKEKAgICAMAshKwJ/QcXKACENIAYgCBCcBSEpAkAgC0GAEHFFBEBBysoAIQ0gC0GAIHFFDQELIAYgDSApQb4VEL0BISkLQX8hDQJAICkQCw0AIAYgAUE2IClBARAZQQBIDQAgBiABICcQiQRBACENCyANQQBOCwRAIAYgJyAIICogKyAoIAsQdSENCyAGIAdBCGspAwAQCgJAIA5B1QBHBEAgB0EIayEIDAELIAYgCBARIAYgB0EQayIIKQMAEAoLIApBAWohCiANQX9KDUEMQwsgCigAACEPIAxBBmoiCSEKIA5B1wBGIQ4gByIIQQhrIhYpAwAhKiAHQRBrIQ0CfgJAAkAgDC0ABUEBcQRAIA0pAwAiJxAmBEBCgICAgC
 
AhKCAGKQMwEA0hJwwCCyAnELEBRQRAIAZBz8oAQQAQFEKAgICAMCEpQoCAgIAwISgMAwtCgICAgDAhKSAGICdBOyAnQQAQEiIoEAsNAiAoECYNASAoECANASAGQfDKAEEAEBQMAgsgBigCKCkDCBANISggBikDMBANIScLIAYgKBBSIikQCw0AICqnIgstABFBMHFFBEAgBiAnQQ0QUCIBEAsNAUKAgICAMCEqIAYgASALIBMgFBChBSIBEAsNASAGIAEgKRCJBCABQQEQrgMgBiABQTAgCzMBLEEBEBkaAkAgDgRAIAYgASAHQRhrKQMAEMcFQQBODQEMAwsgBiABIA8QyAVBAEgNAgtBACELIAYgKUE8IAEQDSIBQYOAARAZQQBIDQEgASAGIAFBOyApEA0iKUGAgAEQGUF/Sg0CGgwBC0GbywBBoQ1BqPwAQbrLABAAAAsgBiAnEAogBiAoEAogBiAqEApBfyELICkhKCABISdCgICAgDAhKUKAgICAMAshASAGICgQCiAGICcQCiANIAE3AwAgFiApNwMAIAtBAE4NQCAJIQoMRAsgBiAHQRBrIgkpAwAgB0EIayIIKQMAEJ4BIQEgBiAJKQMAEAogCSABNwMAIAEQC0UNPwxBCyAHQQhrIgggBiAHQRBrKQMAIAgpAwAQngEiATcDACAHIQggARALRQ0+DEILIAdBCGspAwAhASAHQRBrKQMAIicQEARAIAYgARA5IghFDUIgBiAIEM0CIAYgCBARDEILIAYgJyABEA0QngEiARALDUEgByABNwMAIAdBCGohCAw9CyAGIAdBCGsiDSkDABA5IglFDUAgBiAHQRBrIggpAwAgCSAHQRhrIgspAwBBABASIQEgBiAJEBEgARALDUAgBiANKQMAEAogBiAIKQMAEAogBiALKQMAEAogCyABNwMADDwLIAYgB0EYayIIKQMAIAdBEGspAwAgB0EIaykDAEGAgAIQ4AEhByA
 
GIAgpAwAQCiAHQX9KDTsMPQsgB0EYayIIKQMAIigQECELIAYQ+gEhCQJ/IAsEQCAJBEAgBiAHQRBrKQMAEDkiCEUNQSAGIAgQzQIgBiAIEBEMQQsgCCAGKQPAARANIig3AwBBgIACDAELQYCABkGAgAIgCRsLIQkgBiAoIAdBEGspAwAgB0EIaykDACAJEOABIQcgBiAIKQMAEAogB0F/Sg06DDwLIAdBGGsiCSkDAEL/////b1gEQCAGECgMPgsgBiAHQRBrIg0pAwAQOSILRQ09IAYgCSkDACALIAdBCGspAwAgB0EgayIIKQMAQYCAAhCIBCEHIAYgCxARIAYgCCkDABAKIAYgCSkDABAKIAYgDSkDABAKIAdBf0oNOSAHQR52QQJxRQw6CyAGIAdBGGspAwAgB0EQaykDABANIAdBCGsiCCkDAEGHgAEQygJBf0oNOAw6CyMAQRBrIggkAAJAIAdBEGsiDikDACIoQoCAgIAQWgRAIAZB+8sAQQAQQUF/IQ0MAQtBfyENIAYgB0EIayILKQMAIgFBwwEgAUEAEBIiARALDQAgAUEpQQEQjwQhDyAGIAEQCiAGIAspAwBBABD1ASIBEAsNACAGIAFB6gAgAUEAEBIiJxALBEAgBiABEAoMAQsgKKchCQJAAkACQCAPRQ0AICdBKkEAEI8ERQ0AIAspAwAgCEEMaiAIQQhqEI4CRQ0AIAYgCEEEaiALKQMAENoBDQIgCCgCBCIPIAgoAghHDQAgB0EYayEWIAgoAgwhGkEAIQsDQCALIA9GDQIgBiAWKQMAIAkgGiALQQN0aikDABANQQcQnAFBAEgNAyALQQFqIQsgCUEBaiEJDAALAAsgB0EYayELA0AgBiABICcgCEEEahCrASIoEAsNAiAIKAIEDQEgBiALKQMAIAkgKEEHEJwBQX9MDQIgCUEBaiEJDAALAAsgDiAJrTcDACAGIAEQCiAGICcQCkEAIQ0MAQsgBiAB
 
QQEQrwEaIAYgARAKIAYgJxAKCyAIQRBqJAAgDQ07IAYgB0EIayIIKQMAEAoMNwsgDEECaiEKIAchCCAGIAcgDC0AASIJQX9zQQN0QWByaikDACAHIAlBAnZBf3NBA3RBQHJqKQMAIAcgCUEFdkF/c0EDdGopAwBBABDGBUUNNgw6CwJAIAdBCGsiCCkDACIBQiCIIiggB0EQayIJKQMAIidCIIgiKYRQBEAgAaciC0EASCALICenIg1qIgsgDUhzDQEgCSALrTcDAAw3CyApp0ELakESSSAop0ELakESSXINACAJICcQSSABEEmgEBU3AwAMNgsgBiAHEMQFRQ01DDkLIAxBAmohCgJAIBIgDC0AAUEDdGoiCCkDACIBQiCIIiggB0EIayIHKQMAIidCIIiEUARAICenIglBAEggCSABpyILaiIJIAtIcw0BIAggCa03AwAgByEIDDYLIChC+f///w9SDQAgBiAnQQIQwAEiARALDTkgBiAIKQMAEA0gARDGAiIBEAsNOSAGIAggARAeIAchCAw1CyAQIAEQDTcDICAQIAcpAwA3AyggBiAmEMQFDTggBiAIIBApAyAQHiAHIQgMNAsgB0EIayIIKQMAIgFCIIgiKCAHQRBrIgkpAwAiJ0IgiCIphFAEQCAnQiCGQiCHIAFCIIZCIId9IgFCgICAgAh8Qv////8PVg0EIAkgAUL/////D4M3AwAMNAsgKadBC2pBEkkgKKdBC2pBEklyDQMgCSAnEEkgARBJoRAVNwMADDMLAnwgB0EIayIIKQMAIgFCIIgiKCAHQRBrIgkpAwAiJ0IgiCIphFAEQCABQiCGQiCHICdCIIZCIId+IihCgICAgAh8QoCAgIAQWgRAICi5DAILRAAAAAAAAACAIChQRSABICeEp0F/SnJFDQEaIAkgKEL/////D4M3AwAMNAsgKadBC2pBEkkgKKdBC2pBEklyDQMgJxBJIAEQSaILISwgCSAsE
 
BU3AwAMMgsgB0EIayIIKQMAIgEgB0EQayIJKQMAIieEQv////8PVg0BIBQtAChBBHENASAJAn4gJ6e3IAGnt6MiLL0CfyAsmUQAAAAAAADgQWMEQCAsqgwBC0GAgICAeAsiB7e9UQRAIAetDAELICwQFQs3AwAMMQsgB0EIayIIKQMAIgEgB0EQayIJKQMAIieEQv////8PVg0AICenIgtBH3YgAaciDUEBSHINACAJIAsgDW+tNwMADDALIwBBEGsiCCQAIAdBCGsiCykDACEBAn8CQCAGIAhBCGogB0EQayIJKQMAEFkEQCAGIAEQCgwBCyAGIAggARBZDQAgCQJ+AnwCQAJAAkACQAJAAkAgDkGaAWsOBgABAgQFAwQLIAgrAwggCCsDAKIMBQsgCCsDCCAIKwMAowwECyAIKwMIIAgrAwAQ8wUMAwsgCCsDCCAIKwMAEJoFDAILEAEACyAIKwMIIAgrAwChCyIsvQJ/ICyZRAAAAAAAAOBBYwRAICyqDAELQYCAgIB4CyIJt71RBEAgCa0MAQsgLBAVCzcDAEEADAELIAlCgICAgDA3AwAgC0KAgICAMDcDAEF/CyEJIAhBEGokACAJDTMgB0EIayEIDC8LIAdBBGsoAgAiCEUgCEELakERS3INLSAHIQggBiAHQY0BEJICRQ0uDDILAkACfCAHQQhrIggpAwAiAUIgiKciCUUEQEQAAAAAAAAAgCABpyIMRQ0BGkQAAAAAAADgQSAMQYCAgIB4Rg0BGiAIQgAgAX1C/////w+DNwMAIAchCAwwCyAJQQtqQRJJDQEgARBJmgshLCAIICwQFTcDACAHIQgMLgsgByEIIAYgB0GMARCSAkUNLQwxCyAHQQhrIggpAwAiAUL/////D1YgAadB/////wdGckUEQCAIIAFCAXxC/////w+DNwMAIAchCAwtCyAHIQggBiAHQY8BEJICRQ0sDDALIAdBCGsiCCkDACIBQv////
 
8PViABp0GAgICAeEZyRQRAIAggAUIBfUL/////D4M3AwAgByEIDCwLIAchCCAGIAdBjgEQkgJFDSsMLwsjAEEQayIIJAACf0F/IAYgCEEIaiAHQQhrIgkpAwAQWQ0AGiAHAn4gCCsDCCIsIA5BAXRBoAJruKBEAAAAAAAA8L+gIi29An8gLZlEAAAAAAAA4EFjBEAgLaoMAQtBgICAgHgLIgu3vVEEQCALrQwBCyAtEBULNwMAICy9An8gLJlEAAAAAAAA4EFjBEAgLKoMAQtBgICAgHgLIgu3vVEEQCALrSEBQQAMAQsgLBAVIQFBAAshCyAJIAE3AwAgCEEQaiQAIAsNLiAHQQhqIQgMKgsgDEECaiEKIBIgDC0AAUEDdGoiCCkDACIBQv////8PViABp0H/////B0ZyRQRAIAggAUIBfEL/////D4M3AwAMKQsgECABEA03AxggBiAiQY8BEJICDS0gBiAIIBApAxgQHgwoCyAMQQJqIQogEiAMLQABQQN0aiIIKQMAIgFC/////w9WIAGnQYCAgIB4RnJFBEAgCCABQgF9Qv////8PgzcDAAwoCyAQIAEQDTcDGCAGICJBjgEQkgINLCAGIAggECkDGBAeDCcLIAdBCGsiCCkDACIBQv////8PWARAIAggAUL/////D4U3AwAgByEIDCgLIAchCCMAQRBrIgkkACAGIAlBDGogB0EIayINKQMAEMMBIQsgDUKAgICAMCAJNQIMQv////8PhSALGzcDACAJQRBqJABBf0EAIAsbRQ0nDCsLIAdBCGsiCCkDACIBIAdBEGsiCSkDACInhEL/////D1gEQCAJICenIAGndK03AwAMJwsgBiAHQaABEMUCRQ0mDCoLIAdBCGsiCCkDACIBIAdBEGsiCSkDACInhEL/////D1gEQCAJAn4gJ6cgAad2IgdBAE4EQCAHrQwBCyAHuBAVCzcDAAwmCyMAQRBrIgkkACAHQQhrIg0
 
pAwAhAQJ/AkAgBiAJQQxqIAdBEGsiCykDABDpAwRAIAYgARAKDAELIAYgCUEIaiABEOkDDQAgCwJ+IAkoAgwgCSgCCHYiC0EATgRAIAutDAELIAu4EBULNwMAQQAMAQsgC0KAgICAMDcDACANQoCAgIAwNwMAQX8LIQsgCUEQaiQAIAtFDSUMKQsgB0EIayIIKQMAIgEgB0EQayIJKQMAIieEQv////8PWARAIAkgJ6cgAad1rTcDAAwlCyAGIAdBoQEQxQJFDSQMKAsgB0EIayIIKQMAIgEgB0EQayIJKQMAIieEQv////8PWARAIAkgASAngzcDAAwkCyAGIAdBrQEQxQJFDSMMJwsgB0EIayIIKQMAIAdBEGsiCSkDAIQiAUL/////D1gEQCAJIAE3AwAMIwsgBiAHQa8BEMUCRQ0iDCYLIAdBCGsiCCkDACIBIAdBEGsiCSkDACInhEL/////D1gEQCAJIAEgJ4VC/////w+DNwMADCILIAYgB0GuARDFAkUNIQwlCyAHQQhrIggpAwAiASAHQRBrIgkpAwAiJ4RC/////w9YBEAgCSAnpyABp0itQoCAgIAQhDcDAAwhCyAGIAdBowEQlgNFDSAMJAsgB0EIayIIKQMAIgEgB0EQayIJKQMAIieEQv////8PWARAIAkgJ6cgAadMrUKAgICAEIQ3AwAMIAsgBiAHQaQBEJYDRQ0fDCMLIAdBCGsiCCkDACIBIAdBEGsiCSkDACInhEL/////D1gEQCAJICenIAGnSq1CgICAgBCENwMADB8LIAYgB0GlARCWA0UNHgwiCyAHQQhrIggpAwAiASAHQRBrIgkpAwAiJ4RC/////w9YBEAgCSAnpyABp06tQoCAgIAQhDcDAAweCyAGIAdBpgEQlgNFDR0MIQsgB0EIayIIKQMAIgEgB0EQayIJKQMAIieEQv////8PWARAIAkgJ6cgAadGrUKAgICAEIQ3AwAMHQsgBiAH
 
QQAQwwVFDRwMIAsgB0EIayIIKQMAIgEgB0EQayIJKQMAIieEQv////8PWARAIAkgJ6cgAadHrUKAgICAEIQ3AwAMHAsgBiAHQQEQwwVFDRsMHwsgB0EIayIIKQMAIgEgB0EQayIMKQMAIieEQv////8PWARAIAwgJ6cgAadGrUKAgICAEIQ3AwAMGwsgBiAHQQAQwgUMGgsgB0EIayIIKQMAIgEgB0EQayIMKQMAIieEQv////8PWARAIAwgJ6cgAadHrUKAgICAEIQ3AwAMGgsgBiAHQQEQwgUMGQsCfyAHQQhrKQMAIgFC/////29YBEAgBkG0zABBABAUQX8MAQtBfyEIAkAgBiAHQRBrIg0pAwAiJxA5IglFDQAgBiABIAkQdyELIAYgCRARIAtBAEgNACAGICcQCiAGIAEQCiANIAtBAEetQoCAgIAQhDcDAEEAIQgLIAgLDRwgB0EIayEIDBgLAn8gBiAHQRBrIgkpAwAiASAHQQhrKQMAIicQ2wUiCEEASARAIAgMAQsgBiABEAogBiAnEAogCSAIQQBHrUKAgICAEIQ3AwBBAAsNGyAHQQhrIQgMFwsgBiAHQQhrIggpAwAiARCHBCEMIAYgARAKIAggBiAMEDE3AwAgByEIDBYLIAdBEGsiDSkDACEBQX8hCAJAIAYgB0EIaykDACInEDkiCUUNACAGIAEgCUGAgAIQ3QEhCyAGIAkQESALQQBIDQAgBiABEAogBiAnEAogDSALQQBHrUKAgICAEIQ3AwBBACEICyAIDRkgB0EIayEIDBULIAooAAAhCCAMQQVqIQogBiAGKQPAASAIQQAQ3QEiCEEASA0YIAcgCEEAR61CgICAgBCENwMAIAdBCGohCAwUCyAHQQhrIggpAwAiAUL/////b1YNEiAGIAEQKSIBEAsNFyAGIAgpAwAQCiAIIAE3AwAgByEIDBMLIAdBCGsiCCkDACIBQiCIp0EIaiIJQQhNQQBBA
 
SAJdEGDAnEbDREgBiABEJgEIgEQCw0WIAYgCCkDABAKIAggATcDACAHIQgMEgsCQCAHQRBrKQMAIgEQEEUEQCABECZFDQELIAZB1cYAQQAQFAwWCyAHQQhrIggpAwAiAUIgiKdBCGoiCUEITUEAQQEgCXRBgwJxGw0QIAYgARCYBCIBEAsNFSAGIAgpAwAQCiAIIAE3AwAgByEIDBELIAxBCmohCSAMKAAFIQsgDC0ACSENIAYgB0EIayIIKQMAIgEgCigAACIKEHciD0EASA0OAkAgD0UNACANBEBBACENIAYgAUHNASABQQAQEiInEAsEf0F/BSAnECAEQCAGIAYgJyAKICdBABASECwhDQsgBiAnEAogDQsiDUEASA0QIA0NAQsCQAJAAkACQAJAAkACQCAOQfIAaw4GAAECAwQFBgsgBiABIAogAUEAEBIiARALDRUgBiAIIAEQHgwFCyAGIAEgCiAHQRBrIgcpAwBBgIACEJcCIQogBiAIKQMAEAogCkF/TA0UDAQLIAYgASAKQQAQ3QEiCkEASA0TIAYgCCkDABAKIAggCkEAR61CgICAgBCENwMADAMLIAcgBiAKEF43AwAgB0EIaiEHDAILIAYgASAKIAFBABASIgEQCw0RIAcgATcDACAHQQhqIQcMAQsgBiABIAogAUEAEBIiARALDRAgBiAIKQMAEAogCEKAgICAMDcDACAHIAE3AwAgB0EIaiEHCyAJIAtqQQVrIQogByEIDBELIAYgCCkDABAKIAkhCgwQCyAHQQhrKQMAIihCgICAgHCDQoCAgIAwUQ0MDAULIAdBCGspAwAiKEKAgICAcINCgICAgCBRDQsMBAsgBiAHQQhrKQMAIigQhwRBxQBGDQEMAwsgBiAHQQhrKQMAIigQhwRBG0cNAgsgBiAoEAoMCAsgB0EIaykDACIoQoCAgIBgg0KAgICAIFENBwsgBiAoEAogB0EIa0KAgICAEDcDACAHIQ
 
gMCQsgESgCFCEIIBAgDjYCBCAQIAhBf3MgCmo2AgAgBkHrxgAgEBBBDAwLIAcgCigAAK03AwAgDEEFaiEKIAdBCGohCAwHC0IBISgMDAtCAiEoDAsLQoCAgIAwISgMCgsgB0EIayIHKQMAIQEMCgsgB0EIa0KBgICAEDcDACAHIQgMAgsgCSEKDAULIAchCAtBAQshCSAIIQcgCiEMIAkNAQsLIAghBwtBASEIDAULAn8CQAJAIBcpA4ABIgEiJ0KAgICAcFQNACAnpyIILwEGQQNHDQAgCCgCECIMIAwoAhhBf3NBAnRBqH5yaigCACEIIAwQJyEMA0AgCEUEQEEAIQgMAwsgCEEDdCAMaiIJQQhrIQggCUEEaygCAEE1Rg0CIAgoAgBB////H3EhCAwACwALQQAMAQsgCEULBEAgFCAKNgIgIAYgAUEAQQBBABDEAiAXKQOAASEBC0EAIQgCQCABQoCAgIBwVA0AIAGnIgwvAQZBA0cNACAMLQAFQQV2QQFxIQgLAkAgCA0AIAchDANAIAwiByAbTQ0BIAYgB0EIayIMKQMAIgEQCiABQoCAgIBwg0KAgICA0ABSDQAgAaciCA0FIAYgB0EQayIMKQMAEAogBiAHQRhrKQMAQQEQrwEaDAALAAtCgICAgOAAIShCgICAgOAAIQEgES0AEUEwcUUNAQsgFCAHNgIsIBQgCjYCIAwBCyAUQRhqEOcDRQRAIBcgFBDBBQsDfiAHIBhNBH4gAQUgBiAYKQMAEAogGEEIaiEYDAELCyEoCyAXIBQoAgA2AowBDAILIAwgFykDgAE3AwAgF0KAgICAIDcDgAEgESgCFCAIaiEMQQAhCAwACwALIBBB4ABqJAAgKAuIAQECfyABKAIQIgMtABBFBEBBAA8LAkAgAygCAEEBRwRAIAIEfyACKAIAIAMQJ2tBA3UFQQALIQQgACADENIFIgNFBEBBfw8LIAAoAhAgASgCEBCeAiABIAM
 
2AhAgAkUNASACIAMQJyAEQQN0ajYCAEEADwsgACgCECADEJEEIANBADoAEAtBAAsQACAAQQJ0IAFBA3RqQTBqC6wBAgJ/AX4gACAAKQMwQQ8QUCIIEAtFBEAgACAEQQN0QQhqEC0iBkUEQCAAIAgQCkKAgICA4AAPCyAGIAM7AQYgBiAEOgAFIAYgAjoABCAGIAE2AgBBACEBIARBACAEQQBKGyEDIAZBCGohBANAIAEgA0ZFBEAgBCABQQN0IgdqIAUgB2opAwAQDTcDACABQQFqIQEMAQsLIAggBhCKASAAIAhBLyACEKkDCyAICxMAIABBEGogASACIAAoAggRAQALEQAgAEEQaiABIAAoAgARAgALRwAgACABSQRAIAAgASACECMaDwsgAgRAIAAgAmohACABIAJqIQEDQCAAQQFrIgAgAUEBayIBLQAAOgAAIAJBAWsiAg0ACwsLzAwBB38CQCAARQ0AIABBCGsiAyAAQQRrKAIAIgFBeHEiAGohBQJAIAFBAXENACABQQNxRQ0BIAMgAygCACIBayIDQfSnBCgCAEkNASAAIAFqIQAgA0H4pwQoAgBHBEAgAUH/AU0EQCADKAIIIgIgAUEDdiIEQQN0QYyoBGpGGiACIAMoAgwiAUYEQEHkpwRB5KcEKAIAQX4gBHdxNgIADAMLIAIgATYCDCABIAI2AggMAgsgAygCGCEGAkAgAyADKAIMIgFHBEAgAygCCCICIAE2AgwgASACNgIIDAELAkAgA0EUaiICKAIAIgQNACADQRBqIgIoAgAiBA0AQQAhAQwBCwNAIAIhByAEIgFBFGoiAigCACIEDQAgAUEQaiECIAEoAhAiBA0ACyAHQQA2AgALIAZFDQECQCADIAMoAhwiAkECdEGUqgRqIgQoAgBGBEAgBCABNgIAIAENAUHopwRB6KcEKAIAQX4gAndxNgIADAMLIAZBEEEUIAYoAhAgA0YbaiABNgIAIAFFDQIL
 
IAEgBjYCGCADKAIQIgIEQCABIAI2AhAgAiABNgIYCyADKAIUIgJFDQEgASACNgIUIAIgATYCGAwBCyAFKAIEIgFBA3FBA0cNAEHspwQgADYCACAFIAFBfnE2AgQgAyAAQQFyNgIEIAAgA2ogADYCAA8LIAMgBU8NACAFKAIEIgFBAXFFDQACQCABQQJxRQRAIAVB/KcEKAIARgRAQfynBCADNgIAQfCnBEHwpwQoAgAgAGoiADYCACADIABBAXI2AgQgA0H4pwQoAgBHDQNB7KcEQQA2AgBB+KcEQQA2AgAPCyAFQfinBCgCAEYEQEH4pwQgAzYCAEHspwRB7KcEKAIAIABqIgA2AgAgAyAAQQFyNgIEIAAgA2ogADYCAA8LIAFBeHEgAGohAAJAIAFB/wFNBEAgBSgCCCICIAFBA3YiBEEDdEGMqARqRhogAiAFKAIMIgFGBEBB5KcEQeSnBCgCAEF+IAR3cTYCAAwCCyACIAE2AgwgASACNgIIDAELIAUoAhghBgJAIAUgBSgCDCIBRwRAIAUoAggiAkH0pwQoAgBJGiACIAE2AgwgASACNgIIDAELAkAgBUEUaiICKAIAIgQNACAFQRBqIgIoAgAiBA0AQQAhAQwBCwNAIAIhByAEIgFBFGoiAigCACIEDQAgAUEQaiECIAEoAhAiBA0ACyAHQQA2AgALIAZFDQACQCAFIAUoAhwiAkECdEGUqgRqIgQoAgBGBEAgBCABNgIAIAENAUHopwRB6KcEKAIAQX4gAndxNgIADAILIAZBEEEUIAYoAhAgBUYbaiABNgIAIAFFDQELIAEgBjYCGCAFKAIQIgIEQCABIAI2AhAgAiABNgIYCyAFKAIUIgJFDQAgASACNgIUIAIgATYCGAsgAyAAQQFyNgIEIAAgA2ogADYCACADQfinBCgCAEcNAUHspwQgADYCAA8LIAUgAUF+cTYCBCADIABBAXI2AgQgACADaiAANgIACyAAQ
 
f8BTQRAIABBA3YiAUEDdEGMqARqIQACf0HkpwQoAgAiAkEBIAF0IgFxRQRAQeSnBCABIAJyNgIAIAAMAQsgACgCCAshAiAAIAM2AgggAiADNgIMIAMgADYCDCADIAI2AggPC0EfIQIgA0IANwIQIABB////B00EQCAAQQh2IgEgAUGA/j9qQRB2QQhxIgF0IgIgAkGA4B9qQRB2QQRxIgJ0IgQgBEGAgA9qQRB2QQJxIgR0QQ92IAEgAnIgBHJrIgFBAXQgACABQRVqdkEBcXJBHGohAgsgAyACNgIcIAJBAnRBlKoEaiEBAkACQAJAQeinBCgCACIEQQEgAnQiB3FFBEBB6KcEIAQgB3I2AgAgASADNgIAIAMgATYCGAwBCyAAQQBBGSACQQF2ayACQR9GG3QhAiABKAIAIQEDQCABIgQoAgRBeHEgAEYNAiACQR12IQEgAkEBdCECIAQgAUEEcWoiB0EQaigCACIBDQALIAcgAzYCECADIAQ2AhgLIAMgAzYCDCADIAM2AggMAQsgBCgCCCIAIAM2AgwgBCADNgIIIANBADYCGCADIAQ2AgwgAyAANgIIC0GEqARBhKgEKAIAQQFrIgBBfyAAGzYCAAsLRAEBf0F/IQMgACAAKAIEIAJqEMwBBH9BfwUgACgCACABaiIDIAJqIAMgACgCBCABaxDoASAAIAAoAgQgAmo2AgRBAAsLHwAgACABIAAgAhDHASICIAMgBBAZIQQgACACEBEgBAtgACAEQfIAIANBxABrIANBtQFGG0H/AXEQDiAEIAAgAhAXEBwgBSABIAUoAgAQ0AMiADYCACAEIAAQHCAEIAZB/wFxEA4gASAFKAIAQQEQbxogASABKALQAkEBajYC0AIL9AcCBH8BfiMAQRBrIgMkAAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAAKAIQIgJBzQBqDgMEAQMACyACQewAakECSQ0BAkAgAkEraw
 
4DAQYBAAsgAkFYRg0EIAJB/gBGDQAgAkEhRw0FC0F/IQQgABAPDQwgAEEQEO0BDQxBjAEhBAJAAkAgAkEraw4DBwEJAAsgAkG0f0cEQCACQSFGDQggAkH+AEcNAUGVASEEDAkLIABBDhAMQQYhBAwICxABAAsgABAPDQggAEEAEO0BDQggACADQQxqIANBCGogAyADQQRqQQBBASACELoBDQggACACQQZrQf8BcRAMIAAgAygCDCADKAIIIAMoAgAgAygCBEECQQAQ0gEMBwtBfyEEIAAQDw0KIABBEBDtAQ0KQZcBIQQgACgCQCIBEKQBQbYBRw0FIAEoAoACIAEoApgCakG1AToAAAwFC0F/IQQCfyAAKAJAIQFBfyECAkAgABAPDQAgAEEQEO0BDQACQAJAAkACQAJAAkACQAJAIAEQpAEiAkHHAGsOBAEGBgUACyACQbwBRg0DIAJBtgFGDQIgAkHBAEcNBSABKAKYAiICIAEoAoACaigAASEFIAFBfzYCmAIgASACNgKEAiAAIAAoAgAgBRBeIgZBARDRASECIAAoAgAgBhAKIAAoAgAgBRARIAJFDQEMBwsgASgCmAIhAiABQX82ApgCIAEgAjYChAILIABBmAEQDAwECyABKAKAAiABKAKYAmoiAigAASIFQQhGIAVB8QBGcg0CIAEtAG5BAXEEQCAAQcWIAUEAEBNBfwwGCyACQbgBOgAADAMLIABB9YgBQQAQE0F/DAQLIABBMBAMIABBABAaIABBAxBrQQAMAwsgAEEOEAwgAEEKEAwLQQAhAgsgAgtFDQgMCQsgACgCQCIBLQBsQQJxRQRAIABBwocBQQAQEwwGCyABKAJkRQRAIABB3YcBQQAQEwwGC0F/IQQgABAPDQggAEEQEO0BDQhBiwEhBAwDC0F/IQQgACABQQRxQQJyEM8DDQcgACgCMA0DIAAoAhAiAkF+cUGUf0cNAyAAIANBDGogA0EIaiADIAN
 
BBGpBAEEBIAIQugENByAAIAJBBGtB/wFxEAwgACADKAIMIAMoAgggAygCACADKAIEQQNBABDSASAAEA9FDQMMBwtBjQEhBAwBC0GWASEECyAAIAQQDAwDC0EAIQQgAUEYcUUNAyAAKAIQQaN/Rw0DIAFBEHFFDQEgACgCAEH5hwFBABDQAgtBfyEEDAILQX8hBCAAEA8NASAAQQgQ7QENASAAQZ8BEAwLQQAhBAsgA0EQaiQAIAQLfAECfyAAKAJAIgEEQCABKAK8ASECIABBswEQDCAAIAJB//8DcRAWIAEgASgCzAEgAkEDdGooAgAiADYCvAEDQAJAIABBAEgEQEF/IQAMAQsgASgCzAEgAEEDdGoiAigCBCIAQX9KDQAgAigCACEADAELCyABIAA2AsABCws3AQF/IwBB0ABrIgEkACABIAAoAgAgAUEQaiAAKAIgEIYBNgIAIABBs/wAIAEQEyABQdAAaiQAC7ImARR/IwBBMGsiCCQAIAAoAgAhDgJAAkACQAJAAkACfwJAIAAiAigCEEGDf0cNACACKAIoDQAgAkEAEIgBQTpGIQMLIANFCwRAIAIoAhAhAwwBCyAOIAIoAiAQFyELIAIoAkBBsAJqIQACQANAIAAoAgAiAEUNASAAKAIEIAtHDQALIAJBupABQQAQEwwCCyACEA8NASACQToQLg0BIAIoAhAiA0HHAGpBA0kNACACEDQhA0EAIQAgAigCQCAIQRBqIAsgA0F/QQAQpwEgAiABQR50QR91QQBBAyACKAJALQBuQQFxG3EQ8AENASACIAMQHSACKAJAEKYBDAMLAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIANB0gBqDiQDEQEdEREREREREQUEBgcHCBERAgkREQwQCw8cEhISERERERwACyADQYN/Rg0MIANBO0YNCSADQfsARw0Q
 
IAIQ9AINHQweCyACKAJAKAIgBEAgAkHPkAFBABATDB0LIAIQDw0cQQAhACACAn9BACACKAIQIgFBO0YNABpBACABQf0ARg0AGkEAIAIoAjANABogAhCXAQ0dQQELEPMCIAIQuwENHAweCyACEA8NGyACKAIwBEAgAkHokAFBABATDBwLIAIQlwENGyACQS8QDCACELsBRQ0cDBsLIAIQDw0aIAIQggEaIAIQ1AEgAhCIAg0aIAJB6QBBfxAbIQAgAiACKAJALQBuQX9zQQFxIgEQ8AENGgJAIAIoAhBBr39HBEAgACEDDAELIAJB6wBBfxAbIQMgAhAPDRsgAiAAEB0gAiABEPABDRsLIAIgAxAdDBcLIAIQNCEAIAIQNCEBIAIoAkAgCEEQaiALIAEgAEEAEKcBIAIQDw0ZIAIQ1AEgAiAAEB0gAhCIAg0ZIAJB6QAgARAbGiACELUCDRkgAkHrACAAEBsaIAIgARAdIAIoAkAQpgEMGgsgAhA0IQAgAhA0IQEgAhA0IQMgAigCQCAIQRBqIAsgASAAQQAQpwEgAhAPDRggAiADEB0gAhDUASACELUCDRggAiAAEB0gAkG6fxAuDRggAhCIAg0YIAIoAhBBO0YEQCACEA8NGQsgAkHqACADEBsaIAIgARAdIAIoAkAQpgEMGQsgAhAPDRcgAhDUAUEAIQEgCEEANgIMAkAgAigCECIAQVhHBEAgAEEoRw0BIAIgCEEMakEAEKUBGgwBCyACKAJALQBsQQJxRQRAIAJBzpEBQQAQEwwZCyACEA8NGEEBIQELIAJBKBAuDRcgCC0ADEEBcUUEQCABIQQjAEFAaiIFJAAgAigCACEMIAIoAkAiDygCvAEhECACEDQhAyACEDQhESACEDQhEiACEDQhEyACEIIBGkEBIQkgAigCQCAFQRBqIAsgEiADQQEQpwEgBSAQNgIoIAJB6wBBfxAbIRUgAigCQCgChAIhDSACIBMQHSACK
 
AIQIQBBUSEBQX8hBwJAAkACQAJAAkACQAJAAkACQCACQQQQ1gMOAgABCAsgAEFJRiEKIABBUUYhCSAAQbF/RiAAQVFGckVBACAAQUlHGw0BIAAhAQsgAhAPDQQCQCACKAIQIgBB+wBGIABB2wBGckUEQCAAQYN/RgRAIAIoAihFDQILIAJByY8BQQAQEwwGC0EBIQkgAiABQQBBAUF/QQAQ0wFBAEgNByAFQQA2AjwMAwsgBSAMIAIoAiAQFyIGNgI8IAIQDwRAIAIoAgAgBhARDAULIAIgBiABELQCRQ0BIAIoAgAgBhARDAQLAkACQCACKAIQQSByQfsARw0AIAIgBUEMakEAEKUBIgFBWUdBACABQbd/RxsNACACQQBBAEEBIAUoAgxBAnFBARDTAUEATg0BDAULIAIQsQINBCACIAVBOGogBUE0aiAFQTxqIAVBCGpBAEEAQbt/ELoBDQQgAiAFKAI4IAUoAjQgBSgCPCAFKAIIQQRBABDSAQsgBUEANgI8QQAhCQwCCyACQbsBQbsBQbcBIAkbIAobEAwgAiAGEBogAiAPLwG8ARAWQQAhCQsgASEACyACQesAIBEQGxogAigCQCgChAIhFCACIBUQHUEBIQcCQCACKAIQQT1HDQACQCACEA9FBEBBACEHIAJBABC5AUUNAQsgDCAGEBEMAgsgBkUNACACQbcBEAwgAiAGEBogAiAPLwG8ARAWCyAMIAYQEQJAAkACQCACQcMAEFEEQCAFQQE2AiwgBSAFKAIgQQJqNgIgQcaUASEKQQAhASAHRQ0BDAMLIAIoAhBBt39HDQEgBARAIAJB15MBQQAQEwwEC0EBIQEgBw0CQcmUASEKIABBsX9HDQAgDy0AbkEBcUUgCUF/c3ENAgsgBSAKNgIAIAJBgZQBIAUQEwwCCyACQcyUAUEAEBMMAQsgAhAPDQACQCABRQRAIAIQYEUNAQwCCyACEJcBDQELIAIgAigCQCgCvA
 
EgEBCzAiACQfwAQf4AQf0AIAQbIAEbEAwgAkHrACADEBsaIAJBKRAuRQ0BC0F/IQcMAQsgAigCQCIAQYACaiIHIAAoAoQCIgkgFCANayIGahDMARogByAAKAKAAiANaiAGEIcBGiAAKAKAAiANakGxASAGEEsaIAIoAkAiBiAAKAKEAkEFazYCmAIgAyAGKAKsAiIAIAAgA0gbIQogCSANayEJIAMhAANAIAAgCkcEQCAGKAKkAiAAQRRsaiIMKAIEIgcgDUggByAUTnJFBEAgDCAHIAlqNgIECyAAQQFqIQAMAQsLIAIgERAdQX8hByACELUCDQAgAiACKAJAKAK8ASAQELMCIAIgAxAdAn8gAUUEQCAEBEAgAkEUEAwgAkEOEAwgAkEkEAwgAkEAEBYgAkGLARAMIAJBggEQDEGDAQwCCyACQYABEAwgAkEAEGtBgwEMAQsgAkH/ABAMQQ4LIQAgAkHpACATEBsaIAJBDhAMIAIgEhAdIAIgABAMIAIoAkAQpgEgAhDuAUEAIQcLIAVBQGskACAHRQ0ZDBgLIAIoAkAoArwBIQYgAhCCARogAigCECIAQTtGDRNBUSEDAkAgAkEEENYDDgIAEhgLIABBsX9GIABBUUZyDRAgACIDQUlGDREgAkEAEPQEDRcgAkEOEAwMEgsgAhAPDRYgA0HEAGohAUEAIQACQCACKAIwDQAgAigCEEGDf0cNACACKAIoDQAgAigCICEACwJ/IAIoAkAiBEGwAmohAyAEKAK8ASEFAkADQCADKAIAIgMEQCACIAUgAygCGBCzAiADKAIYIQUCQCABBEAgAygCDCIEQX9GDQEgAARAIAMoAgQgAEcNAgsMBAsgAygCCCIEQX9GDQAgAARAIAMoAgQgAEcNAQsMAwsCf0EAIAMoAhxFDQAaIAJBgwEQDEEDCyEEA0AgAygCECAESgRAIAJBDhAMIARBAWohBAwBCwsgAygCFEF/Rg0BIAJBBhA
 
MIAJB7QAgAygCFBAbGiACQQ4QDAwBCwsCQCAARQRAIAEEQCACQfyUAUEAEBMMAgsgAkGZlQFBABATDAELIAJBvZUBQQAQEwtBfwwBCyACQesAIAQQGxpBAAsNFiAABEAgAhAPDRcLIAIQuwFFDRcMFgsgAhAPDRUgAhDUASACEIgCDRUgAhCCARogAhA0IQRBfyEBIAIoAkAgCEEQaiALIARBf0EBEKcBIAJB+wAQLg0VQX8hAwJAA0ACQAJAAkAgAigCECIAQcEAag4CAAECCyABQQBIBH9BfwUgAkHrAEF/EBsLIQAgAiABEB0DQCACEA8NGiACQREQDCACEJcBDRogAkE6EC4NGiACQasBEAwgAigCEEG/f0YEQCACQeoAIAAQGyEADAELCyACQekAQX8QGyEBIAIgABAdDAILIAIQDw0YIAJBOhAuDRggA0EATgRAIAJBgJIBQQAQEwwZCyABQX9MBEAgAkHrAEF/EBshAQsgAkG0ARAMIAJBABA4IAIoAkAoAoQCQQRrIQMMAQsCQAJAIABB/QBHBEAgAUF/Sg0BIAJBkpIBQQAQEwwaCyACQf0AEC4NGSADQQBIDQEgAigCQCgCgAIgA2ogARBbIAIoAkAoAqQCIAFBFGxqIANBBGo2AgQMAwsgAkEHEPABRQ0BDBgLCyACIAEQHQsgAiAEEB0gAkEOEAwgAigCQBCmAQwSCyACENQBIAIQDw0UIAIQNCEBIAIQNCEAIAIQNCEDIAIQNCEEIAJB7AAgARAbGiACKAJAIAhBEGpBAEF/QX9BARCnASAIIAM2AiQgAhD0Ag0UIAIoAkAQpgEgAhDyAgRAIAJBDhAMIAJBBhAMIAJB7QAgAxAbGiACQQ4QDCACQesAIAQQGxoLAkACQAJAIAIoAhBBPWoOAgAPAQsgAhAPDRYgAhCCARogAiABEB0gAigCEEH7AEYEQCACQQ4QDAwOCyACQSgQLg0WIAIoAhAiAUH7AEYg
 
AUHbAEZyDQECQCABQYN/RgRAIAIoAihFDQELIAJBu44BQQAQEwwXCyAOIAIoAiAQFyEBAkAgAhAPRQRAIAIgAUFDELQCQX9KDQELIA4gARARDBcLIAJBtwEQDCACIAEQOCACIAIoAkAvAbwBEBYMDAsgAkGrkgFBABATDBULIAJBUUEAQQFBf0EBENMBQQBODQoMFAsgAhAPRQ0UDBMLIAIoAkAtAG5BAXEEQCACQcaSAUEAEBMMEwsgAhAPDRIgAhCIAg0SIAIQggEaIAIgAigCQEHUAEEAEKgBIgBBAEgNEiACQe8AEAwgAkHZABAMIAIgAEH//wNxEBYgAhDUASACELUCDRIMDwsgAUEBcUUNASABQQRxDQYgAkEAEIgBQSpGDQEMBgsgAigCKARAIAIQ7wEMEQtBUSEDAkAgAiABENYDDgIADxELIAJBhQEQUUUNAyACQQEQiAFBRUcNAyABQQRxDQULIAJB3JIBQQAQEwwPCyABQQRxRQRAIAJBm5MBQQAQEwwPC0F/IQFBACEAIAJBAEEAEPcCRQ0QDBELIAIQDw0NIAIQuwFFDQ4MDQsgAhCXAQ0MAkAgAigCQCgCpAFBAE4EQCACQdkAEAwgAiACKAJALwGkARAWDAELIAJBDhAMCyACELsBRQ0NDAwLIAIoAiAhASMAQdAAayIAJAAgACACKAIAIABBEGogARCGATYCACACQdyVASAAEBMgAEHQAGokAAwLC0EAIQAgAkEBQQAgAigCGCACKAIUENYBDQoMDAsgAkEpEC4NCQsgAkHsACAAEBsaIAIQggEaIAIoAkAgCEEQakEAQX9Bf0EBEKcBIAggAzYCJCACEPQCDQggAigCQBCmASACEO4BIAIQ7gEgAhDyAgRAIAJBDhAMIAJBBhAMIAJB7QAgAxAbGiACQQ4QDCACQesAIAQQGxoLIAAhAQsgAiABEB0gAkHtACADEBsaIAJBLxAMIAIgAxAdIAIoAhBBR
 
EYEQCACEA8NCEEAIQAgAigCQCAIQRBqQQBBf0F/QQIQpwEgAigCQCIBKAKkAUEATgRAIAIoAgAgAUHRABBWIgBBAEgNCSACQdgAEAwgAiACKAJALwGkARAWIAJB2QAQDCACIABB//8DcRAWIAIQ1AELIAIQ9AINCCACKAJAIgEoAqQBQQBOBH8gAkHYABAMIAIgAEH//wNxEBYgAkHZABAMIAIgAigCQC8BpAEQFiACKAJABSABCxCmAQsgAkHuABAMIAIgBBAdDAgLIAAhAwsgAhAPDQUgAkEAIANBABDYAw0FCyACIAIoAkAoArwBIAYQswILIAJBOxAuDQMgAhA0IQQgAhA0IQAgAhA0IQMgAhA0IQUgAigCQCAIQRBqIAsgBSAAQQAQpwEgAyEBIAIoAhBBO0cEQCACIAQQHSACEJcBDQQgAkHpACAFEBsaIAQhAQsgAkE7EC4NAwJAIAIoAhBBKUYEQCAIIAE2AhxBACEEIAEhAAwBCyACQesAIAMQGxogAigCQCgChAIhBCACIAAQHSACEJcBDQQgAkEOEAwgASADRg0AIAJB6wAgARAbGgsgAkEpEC4NAyACKAJAKAKEAiEHIAIgAxAdIAIQtQINAyACIAIoAkAoArwBIAYQswICQCABIANGIAAgAUZyRQRAIAIoAkAiAUGAAmoiBiABKAKEAiIJIAcgBGsiA2oQzAEaIAYgASgCgAIgBGogAxCHARogASgCgAIgBGpBsQEgAxBLGiACKAJAIgMgASgChAJBBWs2ApgCIAAgAygCrAIiASAAIAFKGyEGIAkgBGshCQNAIAAgBkYNAiADKAKkAiAAQRRsaiIKKAIEIgEgBEggASAHTnJFBEAgCiABIAlqNgIECyAAQQFqIQAMAAsACyACQesAIAAQGxoLIAIgBRAdIAIoAkAQpgELIAIQ7gEMAwsgAUEEcQ0AIAJBkJEBQQAQEwwBCyACEA8NAEEAIQAgAkEBIANBAB
 
DYAw0AIAIQuwFFDQILQX8hAAwBC0EAIQALIA4gCxARIAAhAQsgCEEwaiQAIAELCAAgAEHPAUgLmQEBAX4CQAJAAkAgARAgRQ0AIAAgAUE8IAFBABASIgEQCw0CAkAgARAQDQAgARAgRQRAIAAgARAKDAILIAAgAUHMASABQQAQEiEDIAAgARAKAkAgAxALDQAgAxAQDQEgAxAmDQEgAxCxAQ0AIAAgAxAKIABBycwAQQAQFAwDCyADDwsgAhANDwsgABAoC0KAgICA4AAhAQsgAQsSACABEPEBRQRAIAAgARCFBQsLOgEBfwJAIABBMGsiAUEKTwR/IABBwQBrQRlLDQEgAEE3awUgAQsPCyAAQdcAa0EkIABB4QBrQRpJGwutAgEDfgJAAkAgAgRAIAAgAUHOASABQQAQEiIDEAsNAiADEBBFBEAgAxAmRQ0CCyAAIAFBwwEgAUEAEBIiAxALDQIgACABIAMQ6AMhASAAIAMQCiABEAsEQCABDwsCfkKAgICA4AAhAyAAIAFB6gAgAUEAEBIiBBALRQRAIABBMBChASIDEAsEQCAAIAQQCiADDAILIABBEBBqIgJFBEAgACADEAogACAEEApCgICAgOAADAILIAEQDSEFIAIgBDcDCCACIAU3AwAgAyACEIoBCyADCyEDIAAgARAKIAMPCyAAIAFBwwEgAUEAEBIiAxALDQELIAAgAxA6RQRAIAAgAxAKIABBhskAQQAQFEKAgICA4AAPCyAAIAEgAxDoAyEBIAAgAxAKIAEhAwsgAwspAQF/IABCgICAgHCDQoCAgICQf1EEfyAApygCBEH/////B3FFBUEACwstAQF/QQEhAQJAAkACQCAAQQ1rDgQCAQECAAsgAEEtRg0BCyAAQTFGIQELIAELCgAgACABEA0QLAtoAQF/AkACQCABRQ0AIAEoAgAiAkEATA0BIAEgAkEBayICNgIAIAINAAJAIAEtAAVBAXEEQCAAIAE
 
pAxgQJSABEJ8CDAELIAFBCGoQRgsgACABEB8LDwtBscEAQaENQfQoQc/BABAAAAscACAAKAIQKAKMASIARQRAQQAPCyAAKAIoQQFxC5oCAgN/An4gAUKAgICAcFoEQCABpyICLwEGQSlGBEAjAEEQayIDJABCgICAgOAAIQUCQCAAIANBCGogAUHfABCEASICRQ0AIAMpAwgiARAQBEAgACACKQMAEPsBIQUMAQsCQCAAIAEgAikDCEEBIAIQNSIBEAsNAAJAAkACQCABQiCIp0EBag4EAAEBAAELIAAgAikDABCfASIEQX9MDQEgBA0CIAAgAikDABD7ASIGEAsNASAAIAYQCiAGpyABp0YNAgsgACABEAogAEHFO0EAEBQMAgsgACABEAoMAQsgASEFCyADQRBqJAAgBQ8LIAIoAhAoAiwiAEUEQEKAgICAIA8LIACtQoCAgIBwhBANDwsgACABEJ0EEA0LGwAgACgCECABIAIQ4gUiAUUEQCAAEMYBCyABCzcAIAAgASACIAMCf0EAIAAoAhAiAC0AiAENABpBASAAKAKMASIARQ0AGiAAKQMIEKgDRQsQ3AULswMCBH8BfiMAQSBrIgQkACABIAEgAmoiBSABIAVLGyEDIAEhBgJ+AkADQAJAAkACfyAFIAZLBEAgBiwAAEEATg0CIAYhAwsgAyABayIGQYCAgIAETwsEQCAAQfQNQQAQQQwECyADIAVGBEAgACABIAIQ1QIMBQsgACAEIAIQQg0BIAQgASAGEJ0CGgNAAkACQCADIAVJBEAgAywAACIAQQBOBEAgBCAAQf8BcRA7GiADQQFqIQMMBAsgAyAFIANrIARBHGoQXyIBQf//A00EQCAEKAIcIQMMAwsgAUGAgMQASQ0BIAMgBSADIAVLGyEAA0BB/f8DIQEgAyAFTwRAIAAhAwwECyADLAAAIgJBf0ogAkH/AXFBvwFLckUEQCADQQFqIQMMAQsLA0AgA0EB
 
aiIDIAVPDQMgAywAACIAQX9KDQMgAEH/AXFBwAFJDQALDAILIAQQNwwHCyAEKAIcIQMgBCABQYCABGtBCnZBgLADahCUARogAUH/B3FBgLgDciEBCyAEIAEQlAEaDAALAAsgBkEBaiEGDAELCyAEEEQLQoCAgIDgAAshByAEQSBqJAAgBwtSAQJ/QdSlBCgCACIBIABBA2pBfHEiAmohAAJAIAJBACAAIAFNGw0AIAA/AEEQdEsEQCAAEARFDQELQdSlBCAANgIAIAEPC0GEpwRBMDYCAEF/C9sBAgF/An5BASEEAkAgAEIAUiABQv///////////wCDIgVCgICAgICAwP//AFYgBUKAgICAgIDA//8AURsNACACQgBSIANC////////////AIMiBkKAgICAgIDA//8AViAGQoCAgICAgMD//wBRGw0AIAAgAoQgBSAGhIRQBEBBAA8LIAEgA4NCAFkEQEF/IQQgACACVCABIANTIAEgA1EbDQEgACAChSABIAOFhEIAUg8LQX8hBCAAIAJWIAEgA1UgASADURsNACAAIAKFIAEgA4WEQgBSIQQLIAQL4wEBAn8gAkEARyEDAkACQAJAIAJFIABBA3FFcg0AIAFB/wFxIQQDQCAALQAAIARGDQIgAEEBaiEAIAJBAWsiAkEARyEDIAJFDQEgAEEDcQ0ACwsgA0UNAQsCQCAALQAAIAFB/wFxRiACQQRJcg0AIAFB/wFxQYGChAhsIQMDQCAAKAIAIANzIgRBf3MgBEGBgoQIa3FBgIGChHhxDQEgAEEEaiEAIAJBBGsiAkEDSw0ACwsgAkUNACABQf8BcSEBA0AgASAALQAARgRAIAAPCyAAQQFqIQAgAkEBayICDQALC0EACyIAIAAgAUE7IAIQDSICIAMQGRogACACQTwgARANIAQQGRoL3QQBBn8gACgCACIEQQFqIQJBCCEDAkACQAJAIAQtAAAiBkEwayIHQQhPBEBBf
 
iEFAkACQAJAAkACQAJAIAZB7gBrDgsBCQkJAgkDBQQJBQALAkAgBkHiAGsOBQgJCQkACQtBDCEDDAcLQQohAwwGC0ENIQMMBQtBCSEDDAQLQQshAwwDCwJAIAFFDQAgAi0AAEH7AEcNACAEQQJqIQIgBC0AAiEEQQAhAwNAIAIhAUF/IQUgBBDoAiICQQBIDQUgAiADQQR0ciIDQf//wwBLDQUgAUEBaiICLQAAIgRB/QBHDQALIAFBAmohAgwDCyAEQQJBBCAGQfgARhsiB0EBcmohBEEAIQNBACEFA0AgBSAHRwRAIAItAAAQ6AIiBkEASARAQX8PBSAFQQFqIQUgAkEBaiECIAYgA0EEdHIhAwwCCwALCyABQQJHIANBgHhxQYCwA0dyDQEgBC0AAEHcAEcNASAELQABQfUARw0BQQAhAkEAIQUDQAJAIAJBBEYNACACIARqLQACEOgCIgFBAEgNACACQQFqIQIgASAFQQR0ciEFDAELCyACQQRHIAVBgHhxQYC4A0dyDQEgA0EKdEGA+D9xIAVB/wdxckGAgARqIQMgBEEGaiECDAILIAFBAkYEQEF/IQUgBw0DIAItAAAQRQ0DQQAhAwwCCyACLQAAQTBrIgFBB0sEQCAHIQMMAgsgBEECaiECIAEgB0EDdHIiA0EfSw0BIAQtAAJBMGsiAUEHSw0BIARBA2ohAiABIANBA3RyIQMMAQsgBCECCyAAIAI2AgAgAyEFCyAFC4sBAQN/IwBBkAFrIgMkACADIAI2AowBAn8gA0GAASABIAIQ1wIiBEH/AE0EQCAAIAMgBBCHAQwBC0F/IAAgBCAAKAIEakEBahDMAQ0AGiADIAI2AowBIAAoAgQiBSAAKAIAaiAAKAIIIAVrIAEgAhDXAhogACAAKAIEIARqNgIEQQALGiADQZABaiQAC50BAQN/IwBBEGsiAiQAIAJBJToACkEBIQMgAUGAAk4EQCACQfUAOgALIAIgAU
 
EIdkEPcUGisgFqLQAAOgANIAIgAUEMdkEPcUGisgFqLQAAOgAMQQQhAwsgAkEKaiADaiIEIAFBD3FBorIBai0AADoAASAEIAFBBHZBD3FBorIBai0AADoAACAAIAJBCmogA0ECchCdAhogAkEQaiQAC7YBAQJ/AkAgAiABKAIEIgpGBEAgAyELDAELIAAgCiACIAMgBCAFIAYgByAIIAkQhgIiBUEATg0AQX8PC0EAIQIgASgCwAIiA0EAIANBAEobIQMCQANAIAIgA0cEQAJAIAUgASgCyAIgAkEDdGoiCi8BAkcNACAKLQAAIgpBAXZBAXEgBEcNACALIApBAXFGDQMLIAJBAWohAgwBCwsgACABIAsgBCAFIAYgByAIIAkQywMhAgsgAgtHAQJ/IAAoAnwhAgJAA0AgAkEBTgRAIAAoAnQgAkEBayICQQR0aiIDKAIAIAFHDQEgAygCBA0BDAILCyAAIAEQ8QQhAgsgAgsiAAJAIABBKBAuDQAgABCXAQ0AQX9BACAAQSkQLhsPC0F/C9ABAQJ/IAAoAgAhBSMAQdAAayIGJAACQCABIAMQvwUEQAJAIAAEQCAGIAUgBkEQaiADEIYBNgIAIABBhM0AIAYQEwwBCyAFIANBhM0AEJQDC0EAIQAMAQtBACEAIAUgAUEcakEUIAFBJGogASgCIEEBahB9DQAgASABKAIgIgBBAWo2AiAgASgCHCAAQRRsaiIAQgA3AgAgAEEANgIQIABCADcCCCAAIAUgAhAXNgIMIAUgAxAXIQEgACAENgIIIAAgATYCEAsgBkHQAGokACAAC/kVAQp/IwBBEGsiDyQAIAAoAkAhByAAKAIAIQsCQAJAAkACQCABQQJNBEACQCACDQBBACECIABBhQEQUUUNACAAQQEQiAFBCkYNAEF/IQggABAPDQVBAiECC0F/IQggABAPDQQgACgCECIKQSpGBEAgABAPDQUgACgCECEKIAJBAXIhAgs
 
CQAJAAkACQCAKQSlqDgIBAgALIApBg39HDQQCQCAAKAIoDQAgAkEBcUUgAUECR3JFQQAgACgCICIKQS1GGw0AIAJBAnFFIAFBAkdyIApBLkdyDQMLIAAQ7wEMBwsgAUECRw0DIActAG5BAXFFDQEMAwsgAUECRw0CIAAoAkQNAgsgCyAAKAIgEBchCiAAEA9FDQIMAwsgAUEDRg0BIAtBABAXGgwBC0EAIQogAUECRiAFQQJGcg0AIABB7/oAQQAQEwwCCwJAAkACQCAHKAIgIghFIAFBAUtyDQAgBygCJEEBRw0AIAcgChCyAiIJRQ0AIAkoAgggBygCvAFHDQAgAEGG+wBBABATDAELQX8hEAJAIAFBAUcEQAwBCwJAIAINACAHLQBuQQFxDQAgByAKIAcoAsABQQAQ1QNBf0oNACAHIAoQhwJBgICAgHpxQYCAgIACRg0AIApBzQBGBEAgBygCSA0BC0EBIQ0LAkAgCEUNACAHKAIkQQFLDQAgBygCvAEiCCAHKALwAUcNACAHIAoQsgIiCUUNASAJKAIIIAhHDQEgAEG/+wBBABATDAILQX8hCCAAIAcgCkEEQQMgAhsQqAEiEEF/TA0DCyALIAdBACABQQFLIAAoAgwgBBD4AyIHDQELIAsgChARQX8hCAwCCyAGBEAgBiAHNgIACyAAIAc2AkAgByAKNgJwIAcgAUEIRiIENgJgIAcgAUEDRyIINgJMIAcgCDYCSCAHIAJFIAFBA0lxNgI0IAcgAUEEa0EFSSIJNgIwQQEhDEEBIQ4gCEUEQCAHKAIEIggoAlwhDiAIKAJYIQkgCCgCUCEMIAgoAlQhBAsgByAONgJcIAcgCTYCWCAHIAQ2AlQgByAMNgJQIAcgAkH/AXEgAUEIdHI7AWwgAUEHayIOQQFNBEAgAEErEAwLIAFBB0YEQCAAEPMECyAHQgE3AjgCQAJAAkACQCABQQNHIAAoAhAiBEGDf0dyRQRAIAAo
 
AigNAyALIAcgACgCIBDUA0EASA0EIAdBATYCjAEMAQsCQCAEQShGBEAgACAPQQxqQQAQpQEaIA8tAAxBBHEEQCAHQQE2AjwLIAAQD0UNAQwFCyAAQSgQLg0ECyAHKAI8BEBBfyEIIAdBfzYCvAEgABCCAUEASA0GC0EAIQkCQANAIAAoAhAiCEEpRg0BAkACQAJAAkACfyAIQaV/RyIMRQRAIAdBADYCOCAAEA8NCyAAKAIQIQgLIAhBg39HCwRAIAhB+wBHQQAgCEHbAEcbDQQgB0EANgI4AkAgDEUEQCAAQQ0QDCAHKAKIASEIDAELIAsgB0EAENQDIQggAEHbABAMCyAAIAhB//8DcRAWIABBUUGxfyAHKAI8G0EBQQFBf0EBENMBIgRBAEgNCiAEIAlyIQRBASEJIARFBEAgByAHKAKMAUEBajYCjAFBACEJCyAMRQ0BDAMLIAAoAigNCCAAKAIgIgRBLUYEQCAHLQBsQQFGDQkLIAcoAjwEQCAAIAcgBEEBEKgBQQBIDQoLIAsgByAEENQDIghBAEgNCSAAEA8NCSAMDQEgAEENEAwgACAIQf//A3EiCBAWIAcoAjwEQCAAQREQDCAAQbsBEAwgACAEEBogACAHLwG8ARAWCyAAQdwAEAwgACAIEBYgB0EANgI4CyAAKAIQQSlGDQQgAEEpEC4aDAgLIAAoAhBBPUYEQCAHQQA2AjggABAPDQggABA0IQkgAEHbABAMIAAgCEH//wNxIggQFiAAQREQDCAAQQYQDCAAQasBEAwgAEHpACAJEBsaIABBDhAMIAAQYA0IIAAgBBCpASAAQREQDCAAQdwAEAwgACAIEBYgACAJEB0gAEG7ARAMIAAgBBAaIAAgBy8BvAEQFkEBIQkMAQsgCUUEQCAHIAcoAowBQQFqNgKMAQsgBygCPEUNACAAQdsAEAwgACAIQf//A3EQFiAAQbsBEAwgACAEEBogACAHLwG8ARAWCyAAK
 
AIQQSlGDQIgAEEsEC5FDQEMBgsLIABB6fsAQQAQEwwECwJAAkAgAUEEaw4CAQACCyAHKAKIAUEBRg0BDAILIAcoAogBDQELIAcoAjwEQCAHKALMASAHKAK8AUEDdGpBBGohCANAAkAgCCgCACIEQQBIDQAgBygCdCIIIARBBHQiBGoiCSgCBCAHKAK8AUcNACAHIAkoAgAiCRCHAkF/TARAIAsgByAJEFZBAEgNBiAHKAJ0IQggAEG2ARAMIAAgBCAIaiIJKAIAEBogACAHLwG8ARAWIABBtwEQDCAAIAkoAgAQGiAAQQAQFgsgBCAIakEIaiEIDAELCyAAQbMBEAwgACAHLwG8ARAWIAdBADYCvAEgByAHKALMASgCBDYCwAELIAAQDw0CIAJBfXFBAUYEQCAAQYcBEAwLIAdBATYCZCAAEIIBGiAHIAcoArwBNgLwAQJAAkAgACgCEEGkf0cNACAAEA8NBCAAKAIQQfsARg0AIAAgByAKEPIEDQQgABBgDQQgAEEuQSggAhsQDCAHLQBuQQJxDQEgByAAKAI0IANrIgI2ApADIAcgCyADIAIQowMiAjYCjAMgAg0BDAQLIABB+wAQLg0DIAAQ+AQNAyAAIAcgChDyBA0DA0AgACgCEEH9AEcEQCAAEPcERQ0BDAULCyAHLQBuQQJxRQRAIAcgACgCOCADayICNgKQAyAHIAsgAyACEKMDIgI2AowDIAJFDQQLIAAQDw0DIAAQ8gJFDQAgAEEAEPMCCyAAIAcoAgQ2AkAgBygCcCECIAcgAEKAgICAIBDTAyIDNgIIIAFBAk8EQEEAIQggDkECSQ0FIABBAxAMIAAgAxA4IAINBSAAQc0AEAwgAEEAEDgMBQsgAUEBRgRAIABBAxAMIAAgAxA4IA0EQAJAIAAoAkAiASgCKARAIAsgASACEPECIgFFDQYgAUEANgIIIAEgAS0ABEH+AXEgACgCQC0AbkEBcXI6AAQMAQsgAS
 
ACEIcCQX9KDQAgCyABIAIQVkEASA0FCyAAQREQDCAAQbcBEAwgACACEBogAEEAEBYLQQAhCCAQQQBOBEAgACgCQCgCdCAQQQR0aiIBIAEoAgxB/4CAgHhxIANBB3RBgP///wdxcjYCDCAAQQ4QDAwGCyAAQbsBEAwgACACEBogACAAKAJALwG8ARAWDAULAkACQCAAKAJAIgEoAihFBEAgACABIAJBBhCoASIBQQBIDQUgACgCQCEAIAFBgICAgAJxBEAgACgCgAEgAUEEdGoiACAAKAIMQf+AgIB4cSADQQd0QYD///8HcXI2AgwMAgsgACgCdCABQQR0aiIAIAAoAgxB/4CAgHhxIANBB3RBgP///wdxcjYCDAwBCyALIAEgAkH8ACACGyIBEPECIgJFDQQgAiADNgIAIAUNAQtBACEIDAULQQAhCCAAIAAoAkAoApQDIAEgAUEWIAVBAUYbQQAQiQINBAwCCyAAQYL8AEEAEBMMAQsgABDvAQsgACAHKAIENgJAIAsgBxCLA0F/IQggBkUNASAGQQA2AgAMAQsgCyAKEBELIA9BEGokACAIC3kBAX8gACAGQQwQUCIGEAtFBEAgBqciByAAEKACIgA2AiAgByAFOwEqIAcgBDoAKSAHIAM6ACggByABNgIkIAcgBy0ABUHvAXEgBEECa0EESUEEdHI6AAUgACAGIAAgAkG+FSACGxDHASIBIAMQqQMgACABEBELIAYL0AECAX4BfyMAQRBrIgIkAAJAIAEQIEUEQCAAEChCgICAgOAAIQUMAQsCQCAEDQAgAykDACIFQSoQP0UNACAAIAVBPCAFQQAQEiIFEAsNASAAIAUgARBYIQYgACAFEAogBkUNACADKQMAEA0hBQwBCyAAIAIgARDBAiIBEAtFBEAgACACIARBA3RqKQMAQoCAgIAwQQEgAxAiIQUgACACKQMAEAogACACKQMIEAogBRALBEAgACABEAoMAgsgACA
 
FEAoLIAEhBQsgAkEQaiQAIAULDAAgACABEAogARALC0QBAn8CQCAAQoCAgIBwVA0AIACnIgMvAQZBAkcNACADLQAFQQhxRQ0AIAIgAygCKDYCACABIAMoAiQ2AgBBASEECyAEC3gBAX8CQAJAAkACQAJAIAEoAgAiAkH/AGoOBAAAAwECCyAAKAIAIAEpAxAQCg8LIAAoAgAgASkDEBAKIAAoAgAgASkDGBAKDwsgAkGpf0cNAQsgACgCACABKAIQEBEPCyACQdUAakEtTQRAIAAoAgAgASgCEBARCwsNACAAIAEgAkEAEKEECw4AIAEgACgCEEErEOQCC9MBAwF/AX4BfCMAQRBrIgMkAAJ/IAAgA0EIaiABQQhrIgEpAwAQWQRAQoCAgIAwIQRBfwwBCwJ8AkACQAJAAkACQCACQYwBaw4EAgQBAAMLIAMrAwhEAAAAAAAA8D+gDAQLIAMrAwhEAAAAAAAA8L+gDAMLIAMrAwiaDAILEAEACyADKwMICyIFvQJ/IAWZRAAAAAAAAOBBYwRAIAWqDAELQYCAgIB4CyIAt71RBEAgAK0hBEEADAELIAUQFSEEQQALIQAgASAENwMAIANBEGokACAACw0AIAAgASACEA0QwwELSQECfyACQv////8HWARAIAAgASACpxCTAUGAgAEQ3QEPCyAAIAIQnQMiA0UEQEF/DwsgACABIANBgIABEN0BIQQgACADEBEgBAtDAQF/IAAgASAAKAIEQf////8HcSIAIAEoAgRB/////wdxIgEQsAEQ5QUiAiAAIAFGckUEQEF/QQEgACABSRsPCyACCyAAIAAgASACQQBOBH4gAq0FIAK4EBULIANBgIABEOABC8IKAgd/AX4jAEEgayIJJAACQAJAAkACQAJAAkACfwJAAkACQAJAAkAgAUIgiKdBAWoOBQMCAgABAgsgACADEAogACACQeYVEMUBQX8hBQwKCyAAIAMQCiAAIAJBhxYQ
 
xQFBfyEFDAkLIAAgARCdBKchBgwBCyABpyEGAkADQCAGKAIQIgcgBygCGCACcUF/c0ECdGooAgAhBSAHECchBwNAIAVFBEAgBiEHQQAMBQsgAiAHIAVBAWtBA3QiCGoiBSgCBEcEQCAFKAIAQf///x9xIQUMAQsLIAYoAhQgCGohByAFKAIAIghBgICAwH5xQYCAgMAARgRAIAAgByADEB4MBQsCQCAIQYCAgIACcQRAIAYvAQZBAkcNASACQTBHDQMgACAGIAMgBBDWBSEFDAsLIAhBGnZBMHEiCEEwRwRAIAhBIEcEQCAIQRBHDQggACAHKAIEIAEgAyAEEKIDIQUMDAsgBi8BBkELRg0HIAAgBygCACgCECADEB4MBgsgACAGIAIgByAFEM4CRQ0BDAkLC0GtFkGhDUGPwgBByxYQAAALQeIWQaENQZDCAEHLFhAAAAtBAQshBQNAAkACQCAFRQRAAkAgBi0ABSIFQQRxRQ0AAkAgBUEIcQRAIAIQXARAIAIQeSIFIAYoAihPDQIgBiAHRw0FIAAgASAFrSADIAQQ4AEhBQwNCyAGLwEGQRVrQf//A3FBCEsNAiAAIAIQpQMiCEUNAkF/IQUgCEF/Sg0JDAoLIAAoAhAoAkQgBi8BBkEYbGooAhQiBUUNASAFKAIYBEAgACAGrUKAgICAcIQQDSIMIAIgAyABIAQgBSgCGBEqACEFIAAgDBAKDAoLIAUoAgBFDQEgACAJIAatQoCAgIBwhBANIgwgAiAFKAIAERcAIQUgACAMEAogBUF/TA0JIAVFDQEgCS0AAEEQcQRAIABBACAJKQMYIgynIAwQEBsgASADIAQQogMhBSAAIAkpAxAQCiAAIAkpAxgQCgwMCyAAIAkpAwgQCiAJLQAAQQJxRQ0HIAYgB0cNAyAAIAEgAiADQoCAgIAwQoCAgIAwQYDAABB1IQUMCQsgBi8BBkEVa0H//wNxQQlJDQcLIAYoAhAoAiwhB
 
kEBIQUMAwsgBkUNAANAIAYoAhAiCCAIKAIYIAJxQX9zQQJ0aigCACEFIAgQJyEKA0AgBUUNAyACIAogBUEBa0EDdCIFaiIIKAIERwRAIAgoAgBB////H3EhBQwBCwsgBigCFCAFaiEKAkAgCCgCACIFQRp2QTBxIgtBMEcEQCALQRBHDQEgACAKKAIEIAEgAyAEEKIDIQUMCwtBfyEFIAAgBiACIAogCBDOAkUNAQwKCwsgBUGAgIDAAHENAQwECyAEQYCABHEEQCAAIAMQCiAAIAIQzQJBfyEFDAgLIAdFBEAgACADEAogACAEQZQXEHYhBQwICyAHLQAFIgZBAXFFBEAgACADEAogACAEQaIXEHYhBQwICyAGQQRxBEACQCAGQQhxRQ0AIAcvAQZBAkcNACACEFxFDQAgAhB5IAcoAihHDQAgACAHIAMgBBCXBCEFDAkLIAAgByACIANCgICAgDBCgICAgDAgBEGHzgByEJYEIQUMBgsgACAHIAJBBxCAASICRQ0GIAIgAzcDAAwCC0EAIQUMAAsAC0EBIQUMBAsgACADEAogACAEIAIQ3wEhBQwDCyAAIAAgAxCdASIBEApBfyEFIAEQCw0CIAAgBEH5FhB2IQUMAgsgACADEAoMAQsgACADEApBfyEFCyAJQSBqJAAgBQsNACAAKAIQIAGnENMCCxUBAX4gACABEPsBIQIgACABEAogAgsfACAAKAIQIAEgAhDmASIBIAJFckUEQCAAEMYBCyABC+4DAgN/AX4CQAJAIAMEQCABQoCAgIBgg0KAgICAIFINAQwCCyABQoCAgIBwVA0BC0EBIQQCQAJAIAJCIIinQQFqDgQAAgIBAgsgAqchBQsCQAJAIAFC/////29YQQAgAxsNACABpyIGLwEGQSlGBEAjAEEgayIEJAACQAJAIAAgBEEYaiABQeAAEIQBIgVFDQAgBSkDACEBIAQpAxgiBxAQBEAgACABIAIgAxCbAi
 
EDDAILIAQgAjcDCCAEIAE3AwAgACAHIAUpAwhBAiAEEDUiARALDQAgACABECxFBEAgA0UEQEEAIQMMAwsgAEGwO0EAEBQMAQsgACAFKQMAEJ8BIgZBAEgNAEEBIQMgBg0BIAAgBSkDABD7ASIBEAsNACAAIAEQCiACpyABp0YNASAAQcU7QQAQFAtBfyEDCyAEQSBqJAAgAw8LIAYoAhAoAiwgBUYNACAGLQAFQQFxRQRAIANFDQIgAEGiF0EAEBRBfw8LIAUEQCAFIQQDQCAEIAZGBEAgA0UNBCAAQZc7QQAQFEF/DwsgBCgCECgCLCIEDQALIAIQDRoLQX8hBCAAIAZBABDjAQ0AIAYoAhAiAygCLCIEBEAgACAErUKAgICAcIQQCgsgAyAFNgIsQQEhBAsgBA8LQQAPCyAAEChBfwsZACAAIAEQ5wEiAARAIABBACABEEsaCyAAC5MBAQJ/An8gACgCCCACaiIEIAAoAgxKBEBBfyAAIARBABDSAg0BGgsCQCAAKAIQBEAgAkEAIAJBAEobIQQDQCADIARGDQIgACgCBCAAKAIIIANqQQF0aiABIANqLQAAOwEQIANBAWohAwwACwALIAAoAgQgACgCCGpBEGogASACECMaCyAAIAAoAgggAmo2AghBAAsLnwEBAn8gASABKAIAIgJBAWs2AgAgAkEBTARAAkAgASgCAEUEQCABLQAQBEAgACABEJEECyABKAIsIgIEQCAAIAKtQoCAgIBwhBAlC0EAIQIgARAnIQMDQCABKAIgIAJLBEAgACADKAIEEPMBIAJBAWohAiADQQhqIQMMAQsLIAEQnwIgACABEL8CEB8MAQtB8C9BoQ1BwyJBijAQAAALCwsJACAAQQhqEEYLEQAgACAAKAIAQQFqNgIAIAALli4BDH8jAEEQayIMJAACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAEH0AU0EQEHkpwQoAgAiBUEQIABBC2p
 
BeHEgAEELSRsiCEEDdiICdiIBQQNxBEAgAUF/c0EBcSACaiIDQQN0IgFBlKgEaigCACIEQQhqIQACQCAEKAIIIgIgAUGMqARqIgFGBEBB5KcEIAVBfiADd3E2AgAMAQsgAiABNgIMIAEgAjYCCAsgBCADQQN0IgFBA3I2AgQgASAEaiIBIAEoAgRBAXI2AgQMDQsgCEHspwQoAgAiCk0NASABBEACQEECIAJ0IgBBACAAa3IgASACdHEiAEEAIABrcUEBayIAIABBDHZBEHEiAnYiAUEFdkEIcSIAIAJyIAEgAHYiAUECdkEEcSIAciABIAB2IgFBAXZBAnEiAHIgASAAdiIBQQF2QQFxIgByIAEgAHZqIgNBA3QiAEGUqARqKAIAIgQoAggiASAAQYyoBGoiAEYEQEHkpwQgBUF+IAN3cSIFNgIADAELIAEgADYCDCAAIAE2AggLIARBCGohACAEIAhBA3I2AgQgBCAIaiICIANBA3QiASAIayIDQQFyNgIEIAEgBGogAzYCACAKBEAgCkEDdiIBQQN0QYyoBGohB0H4pwQoAgAhBAJ/IAVBASABdCIBcUUEQEHkpwQgASAFcjYCACAHDAELIAcoAggLIQEgByAENgIIIAEgBDYCDCAEIAc2AgwgBCABNgIIC0H4pwQgAjYCAEHspwQgAzYCAAwNC0HopwQoAgAiBkUNASAGQQAgBmtxQQFrIgAgAEEMdkEQcSICdiIBQQV2QQhxIgAgAnIgASAAdiIBQQJ2QQRxIgByIAEgAHYiAUEBdkECcSIAciABIAB2IgFBAXZBAXEiAHIgASAAdmpBAnRBlKoEaigCACIBKAIEQXhxIAhrIQMgASECA0ACQCACKAIQIgBFBEAgAigCFCIARQ0BCyAAKAIEQXhxIAhrIgIgAyACIANJIgIbIQMgACABIAIbIQEgACECDAELCyABIAhqIgkgAU0NAiABKAIYIQsgASABKAIMIgRHBEAg
 
ASgCCCIAQfSnBCgCAEkaIAAgBDYCDCAEIAA2AggMDAsgAUEUaiICKAIAIgBFBEAgASgCECIARQ0EIAFBEGohAgsDQCACIQcgACIEQRRqIgIoAgAiAA0AIARBEGohAiAEKAIQIgANAAsgB0EANgIADAsLQX8hCCAAQb9/Sw0AIABBC2oiAEF4cSEIQeinBCgCACIJRQ0AQR8hBUEAIAhrIQMCQAJAAkACfyAIQf///wdNBEAgAEEIdiIAIABBgP4/akEQdkEIcSICdCIAIABBgOAfakEQdkEEcSIBdCIAIABBgIAPakEQdkECcSIAdEEPdiABIAJyIAByayIAQQF0IAggAEEVanZBAXFyQRxqIQULIAVBAnRBlKoEaigCACICRQsEQEEAIQAMAQtBACEAIAhBAEEZIAVBAXZrIAVBH0YbdCEBA0ACQCACKAIEQXhxIAhrIgcgA08NACACIQQgByIDDQBBACEDIAIhAAwDCyAAIAIoAhQiByAHIAIgAUEddkEEcWooAhAiAkYbIAAgBxshACABQQF0IQEgAg0ACwsgACAEckUEQEECIAV0IgBBACAAa3IgCXEiAEUNAyAAQQAgAGtxQQFrIgAgAEEMdkEQcSICdiIBQQV2QQhxIgAgAnIgASAAdiIBQQJ2QQRxIgByIAEgAHYiAUEBdkECcSIAciABIAB2IgFBAXZBAXEiAHIgASAAdmpBAnRBlKoEaigCACEACyAARQ0BCwNAIAAoAgRBeHEgCGsiASADSSECIAEgAyACGyEDIAAgBCACGyEEIAAoAhAiAQR/IAEFIAAoAhQLIgANAAsLIARFDQAgA0HspwQoAgAgCGtPDQAgBCAIaiIGIARNDQEgBCgCGCEFIAQgBCgCDCIBRwRAIAQoAggiAEH0pwQoAgBJGiAAIAE2AgwgASAANgIIDAoLIARBFGoiAigCACIARQRAIAQoAhAiAEUNBCAEQRBqIQILA0AgAiEHIAAiAUEUa
 
iICKAIAIgANACABQRBqIQIgASgCECIADQALIAdBADYCAAwJCyAIQeynBCgCACICTQRAQfinBCgCACEDAkAgAiAIayIBQRBPBEBB7KcEIAE2AgBB+KcEIAMgCGoiADYCACAAIAFBAXI2AgQgAiADaiABNgIAIAMgCEEDcjYCBAwBC0H4pwRBADYCAEHspwRBADYCACADIAJBA3I2AgQgAiADaiIAIAAoAgRBAXI2AgQLIANBCGohAAwLCyAIQfCnBCgCACIGSQRAQfCnBCAGIAhrIgE2AgBB/KcEQfynBCgCACICIAhqIgA2AgAgACABQQFyNgIEIAIgCEEDcjYCBCACQQhqIQAMCwtBACEAIAhBL2oiCQJ/QbyrBCgCAARAQcSrBCgCAAwBC0HIqwRCfzcCAEHAqwRCgKCAgICABDcCAEG8qwQgDEEMakFwcUHYqtWqBXM2AgBB0KsEQQA2AgBBoKsEQQA2AgBBgCALIgFqIgVBACABayIHcSICIAhNDQpBnKsEKAIAIgQEQEGUqwQoAgAiAyACaiIBIANNIAEgBEtyDQsLQaCrBC0AAEEEcQ0FAkACQEH8pwQoAgAiAwRAQaSrBCEAA0AgAyAAKAIAIgFPBEAgASAAKAIEaiADSw0DCyAAKAIIIgANAAsLQQAQ/wEiAUF/Rg0GIAIhBUHAqwQoAgAiA0EBayIAIAFxBEAgAiABayAAIAFqQQAgA2txaiEFCyAFIAhNIAVB/v///wdLcg0GQZyrBCgCACIEBEBBlKsEKAIAIgMgBWoiACADTSAAIARLcg0HCyAFEP8BIgAgAUcNAQwICyAFIAZrIAdxIgVB/v///wdLDQUgBRD/ASIBIAAoAgAgACgCBGpGDQQgASEACyAAQX9GIAhBMGogBU1yRQRAQcSrBCgCACIBIAkgBWtqQQAgAWtxIgFB/v///wdLBEAgACEBDAgLIAEQ/wFBf0cEQCABIAVqIQUgACEBDAgLQQAgBW
 
sQ/wEaDAULIAAiAUF/Rw0GDAQLAAtBACEEDAcLQQAhAQwFCyABQX9HDQILQaCrBEGgqwQoAgBBBHI2AgALIAJB/v///wdLDQEgAhD/ASIBQX9GQQAQ/wEiAEF/RnIgACABTXINASAAIAFrIgUgCEEoak0NAQtBlKsEQZSrBCgCACAFaiIANgIAQZirBCgCACAASQRAQZirBCAANgIACwJAAkACQEH8pwQoAgAiBwRAQaSrBCEAA0AgASAAKAIAIgMgACgCBCICakYNAiAAKAIIIgANAAsMAgtB9KcEKAIAIgBBACAAIAFNG0UEQEH0pwQgATYCAAtBACEAQairBCAFNgIAQaSrBCABNgIAQYSoBEF/NgIAQYioBEG8qwQoAgA2AgBBsKsEQQA2AgADQCAAQQN0IgNBlKgEaiADQYyoBGoiAjYCACADQZioBGogAjYCACAAQQFqIgBBIEcNAAtB8KcEIAVBKGsiA0F4IAFrQQdxQQAgAUEIakEHcRsiAGsiAjYCAEH8pwQgACABaiIANgIAIAAgAkEBcjYCBCABIANqQSg2AgRBgKgEQcyrBCgCADYCAAwCCyABIAdNDQAgACgCDEEIcSADIAdLcg0AIAAgAiAFajYCBEH8pwQgB0F4IAdrQQdxQQAgB0EIakEHcRsiAGoiAjYCAEHwpwRB8KcEKAIAIAVqIgEgAGsiADYCACACIABBAXI2AgQgASAHakEoNgIEQYCoBEHMqwQoAgA2AgAMAQtB9KcEKAIAIAFLBEBB9KcEIAE2AgALIAEgBWohAkGkqwQhAAJAAkACQAJAAkACQANAIAIgACgCAEcEQCAAKAIIIgANAQwCCwsgAC0ADEEIcUUNAQtBpKsEIQADQCAHIAAoAgAiAk8EQCACIAAoAgRqIgQgB0sNAwsgACgCCCEADAALAAsgACABNgIAIAAgACgCBCAFajYCBCABQXggAWtBB3FBACABQQhqQQdxG2oiCSAIQQN
 
yNgIEIAJBeCACa0EHcUEAIAJBCGpBB3EbaiIFIAggCWoiBmshAiAFIAdGBEBB/KcEIAY2AgBB8KcEQfCnBCgCACACaiIANgIAIAYgAEEBcjYCBAwDCyAFQfinBCgCAEYEQEH4pwQgBjYCAEHspwRB7KcEKAIAIAJqIgA2AgAgBiAAQQFyNgIEIAAgBmogADYCAAwDCyAFKAIEIgBBA3FBAUYEQCAAQXhxIQcCQCAAQf8BTQRAIAUoAggiAyAAQQN2IgBBA3RBjKgEakYaIAMgBSgCDCIBRgRAQeSnBEHkpwQoAgBBfiAAd3E2AgAMAgsgAyABNgIMIAEgAzYCCAwBCyAFKAIYIQgCQCAFIAUoAgwiAUcEQCAFKAIIIgAgATYCDCABIAA2AggMAQsCQCAFQRRqIgAoAgAiAw0AIAVBEGoiACgCACIDDQBBACEBDAELA0AgACEEIAMiAUEUaiIAKAIAIgMNACABQRBqIQAgASgCECIDDQALIARBADYCAAsgCEUNAAJAIAUgBSgCHCIDQQJ0QZSqBGoiACgCAEYEQCAAIAE2AgAgAQ0BQeinBEHopwQoAgBBfiADd3E2AgAMAgsgCEEQQRQgCCgCECAFRhtqIAE2AgAgAUUNAQsgASAINgIYIAUoAhAiAARAIAEgADYCECAAIAE2AhgLIAUoAhQiAEUNACABIAA2AhQgACABNgIYCyAFIAdqIQUgAiAHaiECCyAFIAUoAgRBfnE2AgQgBiACQQFyNgIEIAIgBmogAjYCACACQf8BTQRAIAJBA3YiAEEDdEGMqARqIQICf0HkpwQoAgAiAUEBIAB0IgBxRQRAQeSnBCAAIAFyNgIAIAIMAQsgAigCCAshACACIAY2AgggACAGNgIMIAYgAjYCDCAGIAA2AggMAwtBHyEAIAJB////B00EQCACQQh2IgAgAEGA/j9qQRB2QQhxIgN0IgAgAEGA4B9qQRB2QQRxIgF0IgAgAEGAgA9q
 
QRB2QQJxIgB0QQ92IAEgA3IgAHJrIgBBAXQgAiAAQRVqdkEBcXJBHGohAAsgBiAANgIcIAZCADcCECAAQQJ0QZSqBGohBAJAQeinBCgCACIDQQEgAHQiAXFFBEBB6KcEIAEgA3I2AgAgBCAGNgIAIAYgBDYCGAwBCyACQQBBGSAAQQF2ayAAQR9GG3QhACAEKAIAIQEDQCABIgMoAgRBeHEgAkYNAyAAQR12IQEgAEEBdCEAIAMgAUEEcWoiBCgCECIBDQALIAQgBjYCECAGIAM2AhgLIAYgBjYCDCAGIAY2AggMAgtB8KcEIAVBKGsiA0F4IAFrQQdxQQAgAUEIakEHcRsiAGsiAjYCAEH8pwQgACABaiIANgIAIAAgAkEBcjYCBCABIANqQSg2AgRBgKgEQcyrBCgCADYCACAHIARBJyAEa0EHcUEAIARBJ2tBB3EbakEvayIAIAAgB0EQakkbIgJBGzYCBCACQayrBCkCADcCECACQaSrBCkCADcCCEGsqwQgAkEIajYCAEGoqwQgBTYCAEGkqwQgATYCAEGwqwRBADYCACACQRhqIQADQCAAQQc2AgQgAEEIaiEBIABBBGohACABIARJDQALIAIgB0YNAyACIAIoAgRBfnE2AgQgByACIAdrIgRBAXI2AgQgAiAENgIAIARB/wFNBEAgBEEDdiIAQQN0QYyoBGohAgJ/QeSnBCgCACIBQQEgAHQiAHFFBEBB5KcEIAAgAXI2AgAgAgwBCyACKAIICyEAIAIgBzYCCCAAIAc2AgwgByACNgIMIAcgADYCCAwEC0EfIQAgB0IANwIQIARB////B00EQCAEQQh2IgAgAEGA/j9qQRB2QQhxIgJ0IgAgAEGA4B9qQRB2QQRxIgF0IgAgAEGAgA9qQRB2QQJxIgB0QQ92IAEgAnIgAHJrIgBBAXQgBCAAQRVqdkEBcXJBHGohAAsgByAANgIcIABBAnRBlKoEaiEDAkBB6KcEK
 
AIAIgJBASAAdCIBcUUEQEHopwQgASACcjYCACADIAc2AgAgByADNgIYDAELIARBAEEZIABBAXZrIABBH0YbdCEAIAMoAgAhAQNAIAEiAigCBEF4cSAERg0EIABBHXYhASAAQQF0IQAgAiABQQRxaiIDKAIQIgENAAsgAyAHNgIQIAcgAjYCGAsgByAHNgIMIAcgBzYCCAwDCyADKAIIIgAgBjYCDCADIAY2AgggBkEANgIYIAYgAzYCDCAGIAA2AggLIAlBCGohAAwFCyACKAIIIgAgBzYCDCACIAc2AgggB0EANgIYIAcgAjYCDCAHIAA2AggLQfCnBCgCACIAIAhNDQBB8KcEIAAgCGsiATYCAEH8pwRB/KcEKAIAIgIgCGoiADYCACAAIAFBAXI2AgQgAiAIQQNyNgIEIAJBCGohAAwDC0GEpwRBMDYCAEEAIQAMAgsCQCAFRQ0AAkAgBCgCHCICQQJ0QZSqBGoiACgCACAERgRAIAAgATYCACABDQFB6KcEIAlBfiACd3EiCTYCAAwCCyAFQRBBFCAFKAIQIARGG2ogATYCACABRQ0BCyABIAU2AhggBCgCECIABEAgASAANgIQIAAgATYCGAsgBCgCFCIARQ0AIAEgADYCFCAAIAE2AhgLAkAgA0EPTQRAIAQgAyAIaiIAQQNyNgIEIAAgBGoiACAAKAIEQQFyNgIEDAELIAQgCEEDcjYCBCAGIANBAXI2AgQgAyAGaiADNgIAIANB/wFNBEAgA0EDdiIAQQN0QYyoBGohAgJ/QeSnBCgCACIBQQEgAHQiAHFFBEBB5KcEIAAgAXI2AgAgAgwBCyACKAIICyEAIAIgBjYCCCAAIAY2AgwgBiACNgIMIAYgADYCCAwBC0EfIQAgA0H///8HTQRAIANBCHYiACAAQYD+P2pBEHZBCHEiAnQiACAAQYDgH2pBEHZBBHEiAXQiACAAQYCAD2pBEHZBAnEiAHRBD3YgASACci
 
AAcmsiAEEBdCADIABBFWp2QQFxckEcaiEACyAGIAA2AhwgBkIANwIQIABBAnRBlKoEaiECAkACQCAJQQEgAHQiAXFFBEBB6KcEIAEgCXI2AgAgAiAGNgIAIAYgAjYCGAwBCyADQQBBGSAAQQF2ayAAQR9GG3QhACACKAIAIQgDQCAIIgEoAgRBeHEgA0YNAiAAQR12IQIgAEEBdCEAIAEgAkEEcWoiAigCECIIDQALIAIgBjYCECAGIAE2AhgLIAYgBjYCDCAGIAY2AggMAQsgASgCCCIAIAY2AgwgASAGNgIIIAZBADYCGCAGIAE2AgwgBiAANgIICyAEQQhqIQAMAQsCQCALRQ0AAkAgASgCHCICQQJ0QZSqBGoiACgCACABRgRAIAAgBDYCACAEDQFB6KcEIAZBfiACd3E2AgAMAgsgC0EQQRQgCygCECABRhtqIAQ2AgAgBEUNAQsgBCALNgIYIAEoAhAiAARAIAQgADYCECAAIAQ2AhgLIAEoAhQiAEUNACAEIAA2AhQgACAENgIYCwJAIANBD00EQCABIAMgCGoiAEEDcjYCBCAAIAFqIgAgACgCBEEBcjYCBAwBCyABIAhBA3I2AgQgCSADQQFyNgIEIAMgCWogAzYCACAKBEAgCkEDdiIAQQN0QYyoBGohBEH4pwQoAgAhAgJ/QQEgAHQiACAFcUUEQEHkpwQgACAFcjYCACAEDAELIAQoAggLIQAgBCACNgIIIAAgAjYCDCACIAQ2AgwgAiAANgIIC0H4pwQgCTYCAEHspwQgAzYCAAsgAUEIaiEACyAMQRBqJAAgAAtjAgF/AX4jAEEQayICJAAgAAJ+IAFFBEBCAAwBCyACIAGtQgAgAWciAUHRAGoQciACKQMIQoCAgICAgMAAhUGegAEgAWutQjCGfCEDIAIpAwALNwMAIAAgAzcDCCACQRBqJAALgwECA38BfgJAIABCgICAgBBUBEAgACEFDAELA0AgAUE
 
BayIBIAAgAEIKgCIFQgp+fadBMHI6AAAgAEL/////nwFWIQIgBSEAIAINAAsLIAWnIgIEQANAIAFBAWsiASACIAJBCm4iA0EKbGtBMHI6AAAgAkEJSyEEIAMhAiAEDQALCyABC+kFAwF/BHwBfgJAAkACQAJ8AkAgAL0iBkIgiKdB/////wdxIgFB+tCNggRPBEAgAL1C////////////AINCgICAgICAgPj/AFYNBSAGQgBTBEBEAAAAAAAA8L8PCyAARO85+v5CLoZAZEUNASAARAAAAAAAAOB/og8LIAFBw9zY/gNJDQIgAUGxxcL/A0sNACAGQgBZBEBBASEBRHY8eTXvOeo9IQIgAEQAAOD+Qi7mv6AMAgtBfyEBRHY8eTXvOeq9IQIgAEQAAOD+Qi7mP6AMAQsCfyAARP6CK2VHFfc/okQAAAAAAADgPyAApqAiAplEAAAAAAAA4EFjBEAgAqoMAQtBgICAgHgLIgG3IgNEdjx5Ne856j2iIQIgACADRAAA4P5CLua/oqALIgAgACACoSIAoSACoSECDAELIAFBgIDA5ANJDQFBACEBCyAAIABEAAAAAAAA4D+iIgSiIgMgAyADIAMgAyADRC3DCW63/Yq+okQ5UuaGys/QPqCiRLfbqp4ZzhS/oKJEhVX+GaABWj+gokT0EBERERGhv6CiRAAAAAAAAPA/oCIFRAAAAAAAAAhAIAQgBaKhIgShRAAAAAAAABhAIAAgBKKho6IhBCABRQRAIAAgACAEoiADoaEPCyAAIAQgAqGiIAKhIAOhIQICQAJAAkAgAUEBag4DAAIBAgsgACACoUQAAAAAAADgP6JEAAAAAAAA4L+gDwsgAEQAAAAAAADQv2MEQCACIABEAAAAAAAA4D+goUQAAAAAAAAAwKIPCyAAIAKhIgAgAKBEAAAAAAAA8D+gDwsgAUH/B2qtQjSGvyEDIAFBOU8EQCAAIAKhRAAAAAAAAPA/oCIAIACg
 
RAAAAAAAAOB/oiAAIAOiIAFBgAhGG0QAAAAAAADwv6APC0QAAAAAAADwP0H/ByABa61CNIa/IgShIAAgAiAEoKEgAUEUSCIBGyAAIAKhRAAAAAAAAPA/IAEboCADoiEACyAAC44CAQZ/IwBBEGsiBCQAAkAgBEEMaiAAQeCvA0EbELsEIgFBAEgNACABQcCwA2ohAQNAIAEtAAAiAkEYdEEYdSEGAn8gAUEBaiACQT9xIgJBMEkNABogAkEIdCEDIAJBN00EQCADIAEtAAFqQdDfAGshAiABQQJqDAELIAEtAAIgA0GA8ABrIAEtAAFBCHRyakGwEGohAiABQQNqCyIDQQFqIAMgBkF/ShshAQJAIAAgAiAEKAIMIgNqQQFqIgJJBEACQAJAIAZBwAFxQQZ2DgMDAAUBCyABQQFrLQAAIAAgA2tqIQUMBAtB5gEhBQwDCyAEIAI2AgwMAQsLIAFBAWstAAAhBQsgBEEQaiQAIAULWQEDf0F/IQEgACAAKAIAIgJBAmoiAxDdAgR/QX8FIAAoAggiAUEEaiABIAJBAnQiAhDoASAAKAIIIgFBADYCACABIAJqQX82AgQgACADNgIAIAAQuQRBAAsL8gEBBH8CQANAAkACQAJAAn8gAiAHTCIIIAQgBkxyRQRAIAEgB0ECdGooAgAiCSADIAZBAnRqKAIAIghJBEAgCQwCCyAIIAlHDQMgBkEBaiEGIAdBAWohByAJIQgMBAsgCA0BIAEgB0ECdGooAgALIQggB0EBaiEHDAILIAQgBkwNAyADIAZBAnRqKAIAIQgLIAZBAWohBgsCfwJAAkACQAJAIAUOAwMAAQILIAYgB3FBAXEMAwsgBiAHc0EBcQwCCxABAAsgBiAHckEBcQshCSAJIAAoAgBBAXFGDQAgACAIEL0ERQ0AC0F/DwsgABC5BEEAC2oCAX4CfyAAKAIAIQMDQCADLQAAIgRBMGtB/wFxQQlNBEAgAkIKfiAEr
 
UL/AYN8QjB9IgJC/////wdUIgQgAXIEQCACQv////8HIAQbIQIgA0EBaiEDDAIFQX8PCwALCyAAIAM2AgAgAqcLDAAgAEH95QFBABA8CxYAIAAgAUH/AXEQDiAAIAJB/wFxEA4LmQgBD38jAEHgBGsiDCQAIAAgAhC+AyENIAAgAkGAAXIQvgMhEgJAIAJFIAFBAklyDQAgDCABNgIEIAwgADYCACAMQQA2AghBACACayEQIAxBDHIhCwNAIAsgDE0NASALQQxrIgsoAggiDkEyIA5BMkobIRMgCygCBCEIIAsoAgAhBQNAAkAgCEEGTQRAIAIgCGwhAAwBCyAOIBNGBEAgAiAIbCIHIAJrIQYgCEEBdiACbCEKIAUgAhC+AyEIA0ACQCAKRQRAA0AgByACayIHRQ0CIAUgBSAHaiACIAgRBgAgByACayEGQQAhAANAIABBAXQgAmoiASAHTw0BIAAgBWoiCQJ/IAEgBkkEQCABQQAgAiABIAVqIgAgACACaiAEIAMRAQBBAEobaiEBCyABIAVqIgALIAQgAxEBAEEASg0BIAkgACACIAgRBgAgASEADAALAAsACyAKIAJrIgohAANAIABBAXQgAmoiASAHTw0CIAAgBWoiCQJ/IAEgBkkEQCABQQAgAiABIAVqIgAgACACaiAEIAMRAQBBAEobaiEBCyABIAVqIgALIAQgAxEBAEEASg0CIAkgACACIAgRBgAgASEADAALAAsLQQAhAAwBCyAOQQFqIQ5BASEJIAUCfyAFIAhBAnYgAmwiAWoiByAFIAFBAXRqIgYgBCADEQEAIQAgBiAFIAFBA2xqIgogBCADEQEAIQECQCAAQX9MBEAgAUEASA0BIAogByAHIAogBCADEQEAQQBIGwwCCyABQQBKDQAgByAKIAcgCiAEIAMRAQBBAEgbIQYLIAYLIAIgDREGACAFIAIgCGxqIgohASAKIQYgAiAFaiIPIQBBASERA0ACQA
 
JAIAAgAU8NACAFIAAgBCADEQEAIgdBf0wNACAHDQEgDyAAIAIgDREGACACIA9qIQ8gEUEBaiERDAELAkADQCAAIAEgEGoiAU8NASAFIAEgBCADEQEAIgdBAEwEQCAHDQEgBiAQaiIGIAEgAiANEQYAIAhBAWshCAwBCwsgACABIAIgDREGAAwBCyAFIAAgACAPayIHIA8gBWsiASABIAdLGyIBayABIBIRBgAgACAKIAYgAGsiASAKIAZrIgAgACABSxsiAGsgACASEQYAIAggCWshBiAKIAFrIQECQCAGIAkgEWsiCEkEQCAFIQkgCCEAIAEhBSAGIQgMAQsgASEJIAYhAAsgCyAONgIIIAsgADYCBCALIAk2AgAgC0EMaiELDAMLIAAgAmohACAJQQFqIQkMAAsACwsgACAFaiEGIAUhCQNAIAIgCWoiCSEAIAYgCU0NAQNAIAAgBU0NASAAIBBqIgEgACAEIAMRAQBBAUgNASAAIAEgAiANEQYAIAEhAAwACwALAAsACyAMQeAEaiQAC08BAX8gARCOAQRAIAEQDQ8LAkAgAUKAgICAcFQNACABpyICLwEGQQRHDQAgAikDICIBEI4BRQ0AIAEQDQ8LIABB2bQBQQAQFEKAgICA4AALkAIBAn8jAEEQayIDJAAgAyACNwMIQoCAgIDgACECAkAgACABEL8BIgRBAEgNACAERQRAIABCgICAgDBBASADQQhqEOYCIQIMAQsgACABQTwgAUEAEBIiARALBEAgASECDAELAkACQCABELEBRQ0AIAAgARCNAyIERQ0BIAAgBEYNACAAIAEgBCkDQBBYRQ0AIAAgARAKQoCAgIAwIQELAn4gARAgBEAgACABQcwBIAFBABASIQIgACABEAogAhALDQNCgICAgDAgAiACECYbIQELIAELEBAEQCAAQoCAgIAwQQEgA0EIahDmAiECDAILIAAgAUEBIANBCGoQrgEhAgsgACABEAo
 
LIANBEGokACACCxoAIABB3gBB2AAgARsQDiAAIAJB//8DcRAwC+0BAQN/A0ACQCACIANMDQAgASADaiIFLQAAIgZBAnQhBwJAAkAgBkG0AUcEQCAGQcABRw0BIAQgBSgAATYCAAwCCyAAIAUoAAEiBUEAEG9BAEoNAiAAKAKkAiAFQRRsaigCEEUNAUHwmAFBoQ1BiPABQZqZARAAAAsgB0GTMWotAAAiBkEcSw0AQQEgBnQiBkGAgIAccUUEQCAGQYCAgOAAcUUEQCAGQYCAgIIBcUUNAiAAIAUoAAFBfxBvGgwCCyAAIAUoAAVBfxBvGgsgACgCACAFKAABEBELIAMgB0GQMWotAABqIQMMAQsLIAMLuQMBBX8gAUUEQCAAIAJBBHFBCHIQ7QEPC0F/IQMCQAJAAkAgACABQQFrIgQgAhCwAg0AIARBB0sNASACQXtxIQUgAkEBcSEGIAFBAWshBwNAIAAoAhAhAQJAAkACQAJAAkACQAJAAkACQAJAIAcOBwABAgMEBQYHCyABQSVHBEBBmgEhAiABQSpGDQkgAUEvRw0NQZsBIQIMCQtBnAEhAgwIC0GdASECQQAhAwJAIAFBK2sOAwgKAAoLQZ4BIQIMBwsgAUHqAGoiAUEDTw0KIAFB4ABrIQIMBgtBACEDAkACQAJAAkAgAUHmAGoOAwELAgALAkAgAUHJAGoOAggDAAtBowEhAgJAIAFBPGsOAwkLAAsLQaUBIQIMCAtBpAEhAgwHC0GmASECDAYLQacBIQIMBQsgAUHjAGoiAUEETw0IQanXquV6IAFBA3R2IQIMBAtBrQEhAiABQSZHDQcMAwtBrgEhAiABQd4ARw0GDAILQa8BIQIgAUH8AEcNBQwBC0GoASECIAZFDQILQX8hAyAAEA8NASAAIAQgBRCwAg0BIAAgAkH/AXEQDAwACwALIAMPCxABAAtBAAsJACAAQQIQzwMLUwEEfyAAKAL0ASICQQAgAkEA
 
ShshBEEAIQICQANAIAIgBEYNASABIAAoAvwBIgUgAkEEdGooAgxHBEAgAkEBaiECDAELCyAFIAJBBHRqIQMLIAMLNgADQCABIAJMRQRAIABBswEQDCAAIAFB//8DcRAWIAAoAkAoAswBIAFBA3RqKAIAIQEMAQsLC9UBAQJ/IAAgACgCQCIEIAECfwJAAkACQAJAAkACQCABQSdGDQAgAUHNAEYgAUE6RnJFBEAgAUHFAEYNASABQS1HDQNBr4sBIQMgBC0AbEEBRg0CDAMLQc6LASEDIAQtAG5BAXENASABQcUARw0CCyACQbF/Rg0DIAJBQ0YNBEHziwEhAyACQUlGDQAgAkFRRw0CCyAAIANBABATQX8PCyACQbF/Rg0BIAJBQ0YNAkEBIAJBUUYNAxogAkFJRw0AQQIMAwsQAQALQQYMAQtBBQsQqAFBH3ULCQAgAEEAEPABCzsBAX8gASgCACECA0ACQCACIAAoAgRB/////wdxTg0AIAAgAhAvQSBHDQAgASACQQFqIgI2AgAMAQsLC4UBAgV/AX5BfyEEAkAgASgCACIFIAAoAgRB/////wdxIgZODQAgBSEDA0ACQAJAIAMgBkYEQCAGIQMMAQsgACADEC8iB0Ewa0EKSQ0BIAMgBUYNAwsgAiAINwMAIAEgAzYCAEEAIQQMAgsgA0EBaiEDIAetIAhCCn58QjB9IQgMAAsACyAEC0EBAX8CQCACQoCAgIBwVA0AIAKnIgMvAQZBCkcNACADKQMgIgIQjgFFDQAgACABIAIQRw8LIABBoPUAQQAQFEF/CxsBAX4gACABIAIgAyAEEMMCIQUgACABEAogBQvlAwIHfwF+IwBBMGsiBSQAIAFBKhA/IQYgBUIANwIoAkADQCAHQQJHBEACQCAAQSAQaiIIBEAgCEEIaiEJQQAhBANAIARBAkYNAiAJIARBA3QiCmogAyAKaikDABANNwMAIARBAWohBAwACwALQX8hB
 
CAHQQFHDQMgACgCECAFKAIoELsCDAMLIAggAiAHQQN0aikDACILQoCAgIAwIAAgCxA6GxANNwMYIAVBKGogB0ECdGogCDYCACAHQQFqIQcMAQsLAkAgBigCACIERQRAIAZBBGohAEEAIQQDQCAEQQJGDQIgBUEoaiAEQQJ0aigCACAAIARBA3RqEEwgBEEBaiEEDAALAAsCQCAEQQJHDQBBAiEEIAYoAhQNACAAKAIQIgIoApgBIgNFDQAgACABIAYpAxhBASACKAKcASADESwAIAYoAgAhBAsgBSAFQShqIARBAWsiA0ECdGooAgAiAikDCDcDACAFIAIpAxA3AwggBSACKQMYNwMQQQAhBCAFIANBAEetQoCAgIAQhDcDGCAFIAYpAxg3AyAgAEEtQQUgBRCCAwNAIARBAkYNASAAKAIQIAVBKGogBEECdGooAgAQuwIgBEEBaiEEDAALAAsgBkEBNgIUQQAhBAsgBUEwaiQAIAQLIwAgACABKQMIECUgACABKQMQECUgACABKQMYECUgACABEB8LmQIBAX8jAEEQayIHJAAgByAAOQMIIAcgAUEBayIFNgIAIAZBgAFB8cMAIAcQVRogAyAGLQAAQS1GNgIAIAQgBi0AAToAACABQQJOBEAgBEEBaiAGQQNqIAUQIxoLIAEgBGpBADoAACACAn8gASAGaiABQQFKakECaiEBQQAhBUEAIQNBACEEA0AgASICQQFqIQEgAiwAABD9BQ0ACwJAAkACQCACLAAAIgZBK2sOAwECAAILQQEhAwsgASwAACEGIAEhAiADIQQLAkAgBhBFRQ0AQQAhAQNAIAEgAiwAAGtBMGohBSACLAABEEVFDQEgAkEBaiECIAVBCmwhAQwACwALIAVBACAFayAEG0EBags2AgAgB0EQaiQACwoAIAAgAUECdGoLDgAgACABakGBgNzxeWwLEAAgACgCGEF/c0ECdCAAagshACAAIAGtIAEpAw
 
BCgICAgDAgASgCCCABKAIgQQQQ4gELmQICBX8BfiMAQRBrIgQkACMAQRBrIgMkACADQoCAgIAwNwMIIANCgICAgDA3AwAgAEEsQQJBAEECIAMQ5QEhCCADQRBqJAAgBCAINwMIIAgQC0UEQAJ+An4gAhAQBEAgACACQQEgBEEIahDrBQwBCyAAIAJBASAEQQhqEK4BCyIIEAtFBEAgBCkDCEEPED9BCGohBwNAIAVBAkYEQANAIAZBAkcEQCABIAZBA3QiA2ogAyAHaikDABANNwMAIAZBAWohBgwBCwsgBCkDCCECIAgMAwsgBUEDdCEDIAVBAWohBSAAIAMgB2opAwAQZ0UNAAsLIAAgBCkDCBAKIAghAkKAgICA4AALIQggACACEAoLIARBEGokACAIC70MAwl/A34BfCMAQdAAayIIJAAgCCABNgJMQd8AQYACIARBIHEbIQkCQAJAAkACQAJ/AkACQAJAAkACQCABLQAAIgdBK2sOAwECAAILQQEhDAsgCCABQQFqIgE2AkwgBEGACHFFDQEgAS0AACEHCyAHQTBHDQACQAJAAkAgAS0AASIHQfgARwRAIAdB7wBGDQIgB0HYAEcNAQsgA0FvcUUEQCAIIAFBAmoiBTYCTEEQDAYLIAdB7wBGDQEgA0UhBgwECyADRSEGIAMgB0HPAEdyDQMMAQsgAw0GCyAEQQRxRQ0EIAggAUECaiIFNgJMQQgMAgsgBEGBAXENAgJ/IAhBzABqIQdBtMMAIQUDQCAFLQAAIgYEQCAGIAEtAABHBEBBAAwDBSAFQQFqIQUgAUEBaiEBDAILAAsLIAcEQCAHIAE2AgALQQELRQ0CRAAAAAAAAPD/RAAAAAAAAPB/IAwbIhG9An8gEZlEAAAAAAAA4EFjBEAgEaoMAQtBgICAgHgLIgC3vVEEQCAArSEODAYLIBEQFSEODAULAkACQCAHQeIARwRAIAdBwgBGIAZxDQEgBkEBcyAHQTB
 
rQf8BcUEJS3INBCAEQRBxRQ0FIAFBAWohBUECIQYDQCAHQfgBcUEwRw0DIAEgBmotAAAhByAGQQFqIQYMAAsACyAGRQ0FCyAEQQRxRQ0DIAggAUECaiIFNgJMQQIMAQtBgAIhCSAHQf4BcUE4Rg0CIAggBTYCTEEICyEDQoCAgIDAfiEOIAUtAAAQ9AEgA0gNAgwDCyADDQELQQohAwsgCCgCTCIKQQFqIQdBACEBIANBCkchCwJAA0ACQCABIApqIgUtAAAiBkEYdEEYdSENIAYQ9AEgA04EQCAJIA1HDQEgCyABQQFHckUEQCAKLQAAQTBGDQQLIAUtAAEQ9AEgA04NAQsgCCAKIAFBAWoiAWo2AkwMAQsLIAUhBwtBACELAkAgBEEBcQ0AAkAgBkEuRw0AIAcgCk0EQCAHLQABEPQBIANODQILIAggB0EBaiIFNgJMQoCAgIDAfiEOIAkgBywAASIGRg0CA0AgBkH/AXEQ9AEgA04EQEEBIQsgCSAGQRh0QRh1Rw0CIAUtAAEQ9AEgA04NAgsgCCAFQQFqIgE2AkwgBS0AASEGIAEhBQwACwALIAUgCk0NAAJAIAZB/wFxQeUARwRAIANBCkZBACAGQf8BcUHFAEYbDQEgBkEgckH/AXFB8ABHIANBEEtyDQJBASADdEGEggRxDQEMAgsgA0EKRw0BC0EBIQsgBUEBaiEBAkACQAJAIAUtAAFBK2sOAwACAQILIAVBAmohAQwBCyAFQQJqIQELIAEtAAAQRUUNACABIQUDQCAIIAUiAUEBaiIFNgJMIAEtAAEiBEEYdEEYdSEHIAQQRQ0AIAcgCUcNASABLQACEEUNAAsLIAUgCkYEQEKAgICAwH4hDgwBCyAIIQkCQCAFIAprIgRBAmoiB0HBAE8EQCAAKAIQIAcQ5wEiCUUNAQtBACEBQQAhBiAMBEAgCUEtOgAAQQEhBgsgBEEAIARBAEobIQQDQCABIARHBEAgASAK
 
ai0AACIFQd8ARwRAIAYgCWogBToAACAGQQFqIQYLIAFBAWohAQwBCwsgBiAJakEAOgAAAn4gA0EKRwRAQoCAgIDAfiALDQEaCwJ8QgAhDiADQQpGQQAgCxtFBEAgCUEBaiAJIAktAAAiBkEtRhshAQNAIAEiBEEBaiEBIAQtAAAiBUEwRg0ACwJ+IANBCkYEQEIKIQ9CmLPmzJmz5swZDAELQQAgA2usIAOsIg+ACyEQQQAhAQNAAkAgBUUNACAFEPQBIgUgA04NACAOIAWsIA4gD358IA4gEFYiBRshDiABIAVqIQEgBC0AASEFIARBAWohBAwBCwsgDrohEQJ8IAEEQCADtyABtxCFBiARoiERCyARmgsgESAGQS1GGwwBCyAJEPkFCyIRvQJ/IBGZRAAAAAAAAOBBYwRAIBGqDAELQYCAgIB4CyIBt71RBEAgAa0MAQsgERAVCyEOIAdBwQBJDQEgACgCECAJEB8MAQsgABDGAUKAgICA4AAhDgsgAgRAIAIgCCgCTDYCAAsgCEHQAGokACAOCyYBAX4gACABIAIgAUEAEBIiBRALBH4gBQUgACAFIAEgAyAEEDULC7sHAg1/AX4jAEHgAGsiBSQAIAAgBUHIAGoQkQICQCACBEAgBSACNgJAIAVByABqQdvMACAFQUBrEIQCIANBf0cEQCAFIAM2AjAgBUHIAGpB5cwAIAVBMGoQhAILIAVByABqQQoQDiAAIAFBMSAAIAIQcUEDEBkaIAAgAUEyIAOtQQMQGRogBEECcQ0BCyAAKAIQQYwBaiECA0AgAigCACICRQ0BQQAhAyAEQQFxRQRAIAUCf0EAIQYCQCACKQMIIhJCgICAgHBUDQAgEqciDCgCECIHIAcoAhhBf3NBAnRBpH5yaigCACEDIAcQJyEIA0AgA0UNASAIIANBAWsiB0EDdGoiAygCACEKIAMoAgRBNkcEQCAKQf///x9xIQMMAQsLIApB/////wNLD
 
QAgDCgCFCAHQQN0aikDACISQoCAgIBwg0KAgICAkH9SDQAgACASELcBIQYLQenMACAGRQ0AGiAGQenMACAGLQAAGws2AiAgBUHIAGpB28wAIAVBIGoQhAIgACAGEDYCQCACKAIIIgMvAQYQ9wEEQCADKAIgIgkvABEiA0ELdkEBcSEPIANBgAhxRQ0BIAIoAiAgCSgCFEF/c2ohDEEAIRAjAEEQayILJABBfyEDAkAgCS0AEkEEcUUNACAJKAJQIghFDQAgCCAJKAJMaiENIAkoAkQhBgNAIAYhAyAIIA1PDQEgCEEBaiEHAn8gCC0AACIGRQRAAkAgC0EIaiAHIA0QlAUiBkEASA0AIAsoAgghEUEAIQojAEEQayIOJAACQCAOQQxqIAYgB2oiCCANEJQFIgdBAEgEQEF/IQcMAQsgDigCDCIGQQF2QQAgBkEBcWtzIQoLIAsgCjYCDCAOQRBqJAAgB0EASA0AIAsoAgwgA2ohBiAHIAhqDAILIAkoAkQhAwwDCyADIAZBAWsiBiAGQf8BcUEFbiIRQQVsa0H/AXFqQQFrIQYgBwshCCAQIBFqIhAgDE0NAAsLIAtBEGokACAFIAAgCSgCQBCiBCIGQf86IAYbNgIQIAVByABqQfXMACAFQRBqEIQCIAAgBhA2IANBf0cEQCAFIAM2AgAgBUHIAGpB5cwAIAUQhAILIAVByABqQSkQDgwBC0EAIQ8gBUHIAGpB+swAQQAQhAILIAVByABqQQoQDiAEIQMgDw0CCyADIQQMAAsACyAFQcgAakEAEA5CgICAgCAhEiAFKAJURQRAIAAgBSgCSBBxIRILIAVByABqEJUBIAAgAUE1IBJBAxAZGiAFQeAAaiQAC+wBAgJ/AX4jAEEQayIDJAAgAUEIayIEKQMAIQUCfwJAIAAgA0EMaiABQRBrIgEpAwAQwwEEQCAAIAUQCgwBCyAAIANBCGogBRDDAQ0AIAECfwJAAkACQAJAAk
 
ACQCACQa0Baw4DAQMCAAsCQCACQaABaw4CBQAECyADKAIMIAMoAgh1DAULIAMoAgggAygCDHEMBAsgAygCCCADKAIMcgwDCyADKAIIIAMoAgxzDAILEAEACyADKAIMIAMoAgh0C603AwBBAAwBCyABQoCAgIAwNwMAIARCgICAgDA3AwBBfwshACADQRBqJAAgAAvcBAIGfwJ+AkAgAUKAgICAcINCgICAgJB/UgRAQoCAgIDgACEJIAAgARA+IgEQCw0BCwJAIAJCgICAgHCDQoCAgICQf1ENAEKAgICA4AAhCSAAIAIQPiICEAtFDQAgASECDAELAkAgAqciBCkCBCIJQv////8Hg1ANAAJAIAGnIgMoAgBBAUcNACADKQIEIAmFp0EASA0AIAAoAhAgAxCjBCAEKAIEIgVB/////wdxIgcgAykCBCIJpyIIQf////8HcSIGaiAFQR92dCAIQR92IghrQRFqSQ0AIAgEQCADIAZBAXRqQRBqIARBEGogBUEBdBAjGiADIAQpAgQgCXxC/////weDIAlCgICAgHiDhDcCBAwCCyADQRBqIgUgBmogBEEQaiAHECMaIAMgBCkCBCAJfEL/////B4MiCiAJQoCAgIB4g4Q3AgQgBSAKp2pBADoAAAwBCwJ+AkACQCAEKQIEIgmnQf////8HcSADKQIEIgqnQf////8HcWoiBkGAgICABE8EQCAAQfQNQQAQQQwBCyAAIAYgCSAKhKdBH3YiBxD8ASIFDQELQoCAgIDgAAwBCwJAIAdFBEAgBUEQaiADQRBqIAMoAgRB/////wdxECMiByADKAIEQf////8HcWogBEEQaiAEKAIEQf////8HcRAjGiAGIAdqQQA6AAAMAQsgBUEQaiIGIAMgAygCBEH/////B3EQlQUgBiADKAIEQQF0aiAEIAQoAgRB/////wdxEJUFCyAFrUKAgICAkH+ECyEJIAAgARAKDAELIAEhCQsgACA
 
CEAogCQtAACAAAn8CfyADBEAgASgCJCACQQN0akEEagwBC0EAIAEoAiAiA0UNARogAyABLwEoIAJqQQR0agsoAgALEOEBCwsAIABB4ztBABAUC50MAgx/BH4jAEGAAWsiCiQAIAohBSMAQeABayIIJAACQCABvSIRQoCAgICAgID4/wCDQoCAgICAgID4/wBRBEAgEUL///////////8Ag0KBgICAgICA+P8AWgRAIAVBzsK5AjYAAAwCCyABRAAAAAAAAAAAYwRAIAVBLToAACAFQQFqIQULIAVBvMMALQAAOgAIIAVBtMMAKQAANwAADAELAkAgBEUEQAJ+IAGZRAAAAAAAAOBDYwRAIAGwDAELQoCAgICAgICAgH8LIhJC/////////w98Qv7///////8fViASuSABYnINASAFAn8gCEHVAWoiA0EAOgAAIBIgEkI/hyIRfCARhSERIAKtIRMDQCADIgJBAWsiA0EwQdcAIBEgESATgCIUIBN+faciBEEKSBsgBGo6AAAgESATWiEEIBQhESAEDQALIBJCf1cEQCACQQJrIgNBLToAAAsgAwsQiQYMAgtEAAAAAAAAAAAgASABRAAAAAAAAAAAYRshASAEQQJHDQAjAEGAAmsiAiQAAkAgAkGAAWogASADQQFqIgRBABCFAyACai0Af0E1Rw0AIAJBgAFqIAEgBEGACBCFAyIGIAIgASAEQYAQEIUDRw0AIAJBgAFqIAIgBhB0DQBBgAhBgBAgAi0AgAFBLUYbIQcLIAUgASADIAcQhQMaIAJBgAJqJAAMAQsgAyECIAhBCGohDSAIQQxqIQ4gCEEQaiELIwBBkANrIgckAAJAIARBA3FBAUYiD0UEQEERIQJBASEMA0AgAiAMTQRAQQAhCQwDCyABIAIgDGpBAXYiCSANIA4gC0EAIAdBkAJqELwCIAdBkAJqEPkFIAFhBEAgCUEBIAlBAUgbIQYDQCAJQQJIBEAgBiEC
 
DAMLIAkiAkEBayIQIQkgCyAQai0AAEEwRg0ACwUgCUEBaiEMCwwACwALIAEgAkEBaiIGIAdBDGogB0EIaiAHQZABakEAIAdBkAJqELwCIAdBkAFqIAJqLQAAQTVHDQAgASAGIAdBDGogB0EIaiAHQZABakGACCAHQZACahC8AiABIAYgB0EEaiAHIAdBEGpBgBAgB0GQAmoQvAIgB0GQAWogB0EQaiAGEHQNACAHKAIMIAcoAgRHDQBBgAhBgBAgBygCCBshCQsgASACIA0gDiALIAkgB0GQAmoQvAIgB0GQA2okACAIKAIMBEAgBUEtOgAAIAVBAWohBQsgCCgCCCEGAkAgBEEEcQ0AIAZBAUggBiADQRUgDxtKckUEQCACIAZMBEBBACEEIAYgAmsiA0EAIANBAEobIQMgBSAIQRBqIAIQIyACaiEFA0AgAyAERwRAIAVBMDoAACAEQQFqIQQgBUEBaiEFDAELCyAFQQA6AAAMAwsgBSAIQRBqIAYQIyAGaiIEQS46AABBACEFIAIgBmsiAkEAIAJBAEobIQIDQCAEQQFqIQQgAiAFRwRAIAQgCEEQaiAFIAZqai0AADoAACAFQQFqIQUMAQsLIARBADoAAAwCCyAGQQVqQQVLDQAgBUGw3AA7AABBACEEQQAgBmsiA0EAIANBAEobIQMgBUECaiEFA0AgAyAERwRAIAVBMDoAACAEQQFqIQQgBUEBaiEFDAELCyAFIAhBEGogAhAjIAJqQQA6AAAMAQsgBSAILQAQOgAAAkAgAkECSARAIAVBAWohBAwBCyAFQS46AAEgBUECaiEEQQEhBQNAIAIgBUYNASAEIAhBEGogBWotAAA6AAAgBUEBaiEFIARBAWohBAwACwALIARB5QA6AAAgBkEBayEDIAZBAUgEfyAEQQFqBSAEQSs6AAEgBEECagshAiAIIAM2AgAjAEEQayIEJAAgBCAINgIMIwBBoAFrIgMkACADQQhqQ
 
dCdBEGQARAjGiADIAI2AjQgAyACNgIcIANBfiACayIGQf////8HIAZB/////wdJGyIGNgI4IAMgAiAGaiICNgIkIAMgAjYCGCADQQhqQZ4ZIAgQqwQgBgRAIAMoAhwiAiACIAMoAhhGa0EAOgAACyADQaABaiQAIARBEGokAAsgCEHgAWokACAAIAoQcSERIApBgAFqJAAgEQs3AQF/IAAgAhA5IQUgACACEAogBUUEQCAAIAMQCkF/DwsgACABIAUgAyAEEBkhBCAAIAUQESAEC4wCAgJ/AXwjAEEQayIEJAACQAJAAkACQCACQiCIpyIFQQJNBEAgAqciA0EATg0DDAELIAVBC2pBEk8EQAJ/IAIQSSIGRAAAAAAAAPBBYyAGRAAAAAAAAAAAZnEEQCAGqwwBC0EACyIDuCAGYQ0DDAELIAMEQEF/IQMgACACEJ0BIgIQCw0EIAAgBEEMaiACQQEQywINBCAEKAIMIQMMAwsgACAEQQxqIAIQxAEEQCAAIAIQCgwCC0F/IQMgACACEJ0BIgIQCw0DIAAgBEEIaiACQQAQywINAyAEKAIIIgMgBCgCDEYNAgsgAEG9wwAQaQtBfyEDDAELIAEgAzYCAEEAIQMLIARBEGokACADCx8AIAAgASAAIAIQxwEiAiABQQAQEiEBIAAgAhARIAELMQEBfyMAQdAAayICJAAgAiAAIAJBEGogARCGATYCACAAQa4+IAIQzwIgAkHQAGokAAuSAQIBfwF+IwBBEGsiBSQAIAUgBDYCDCAAIAEgBUEMahDjAUUEQCADEJsEIAEgAiADKAIEIAMoAgBBA3FBAnRB1DxqKAIAERsAIQYgAxDZBSAFKAIMIgAgACgCAEH/////A3E2AgAgA0KAgICAMCAGIAYQCyIAGzcDACAFQRBqJABBf0EAIAAbDwsgBUEQaiQAQX8LJgEBfyMAQRBrIgMkACADIAI2AgwgAEECIAEgAhD9ASADQRBqJA
 
ALJgEBfyMAQRBrIgMkACADIAI2AgwgAEEDIAEgAhD9ASADQRBqJAALCgAgAEEgIAFrdgvSAQEDfyMAQRBrIgUkAEF/IQMCQCAAKAIUDQACQAJAIAFBgICAgAROBEAgACgCAEH0DUEAEEEMAQsgASAAKAIMQQNsQQJtEEpB/////wMQsAEhASAAKAIQIgQgAkGAAkhyRQRAIAAgARDvAyEDDAMLIAAoAgAgACgCBCABIAR0IARrQRFqIAVBDGoQswEiAg0BCyAAEIgDDAELIAAoAhAhAyAFKAIMIQQgACACNgIEIAAgBCADdiABakH/////AxCwATYCDEEAIQMLIAVBEGokACADC4ABAgJ/AX4CQCABKQIEIgRC//////////+/f1YEQCABKAIMIQAMAQsgACgCNCAEQiCIpyAAKAIkQQFrcUECdGohAiAAKAI4IQMDQCADIAIoAgAiAEECdGooAgAiAiABRg0BIAJBDGohAiAADQALQZkwQaENQfgUQYjAABAAAAsgAAvvBgIGfwF+AkACQAJAAn8gAkECTARAIAIgASkCBCIJQj6Ip0YEQCAAIAEQ0wIiAxDxAUUNBSABIAEoAgBBAWs2AgAgAw8LIAAoAjQgACgCJEEBayABIAIQ5gVB/////wNxIgdxIghBAnRqIQMgCadB/////wdxIQUDQCACIAMoAgAiA0UNAhoCQCAAKAI4IANBAnRqKAIAIgQpAgQiCUIgiKdB/////wNxIAdHIAlCPoinIAJHciAJp0H/////B3EgBUdyDQAgBCABIAUQ5QUNACADEPEBDQQgBCAEKAIAQQFqNgIADAQLIARBDGohAwwACwALIAJBA0chB0EDCyEFAkAgACgCPA0AQQAhA0HTASAAKAIsQQNsQQJtEEoiBEH/////A0sNASAAIAAoAjggBEECdBDmASIGRQ0BIAAoAiwiAkUEQCAAQRAQnAIiAkUEQCAAIAYQHwwDCyACQQE2AgA
 
gAiACKQIEQoCAgICAgICAQIQ3AgQgBiACNgIAIAAgACgCKEEBajYCKEEBIQILIAAgAjYCPCAAIAY2AjggACAENgIsIARBAWshBgNAIAIgBE8NASAAKAI4IAJBAnRqQQAgAkEBaiIDIAIgBkYbEOQFNgIAIAMhAgwACwALAkAgAQRAIAEpAgQiCUL//////////z9YBEAgASAJIAWtQj6GhDcCBAwCCyAAIAmnIgJB/////wdxIAJBH3YiAnQgAmtBEWoQ5wEiAkUEQEEAIQMMBAsgAkEBNgIAIAIgAikCBEL/////d4MgASkCBEKAgICACIOEIgk3AgQgAiAJQoCAgIB4gyABKQIEQv////8Hg4Q3AgQgAkEQaiABQRBqIAEoAgQiA0EfdiIERSADQf////8HcSAEdGoQIxogACABEKQEIAIhAQwBCyAAQRAQ5wEiAUUEQEEADwsgAUKBgICAgICAgIB/NwIACyAAIAAoAjggACgCPCIDQQJ0aiICKAIAQQF2NgI8IAIgATYCACABIAM2AgwgASABNQIEIAetQiCGhCAFrUI+hoQ3AgQgACAAKAIoQQFqNgIoIAVBA0YNAiABIAAoAjQgCEECdGoiASgCADYCDCABIAM2AgAgACgCKCAAKAIwSA0CIAAgACgCJEEBdBDABRoMAgsgAUUNAQsgACABEKQEIAMPCyADC0YAIAJBAEwEQCAAQS8QMQ8LIAAgAkEAEPwBIgBFBEBCgICAgOAADwsgAEEQaiABIAIQIyACakEAOgAAIACtQoCAgICQf4QLUAEBfgJAIANBwABxBEAgAiADQUBqrYghAUIAIQIMAQsgA0UNACACQcAAIANrrYYgASADrSIEiIQhASACIASIIQILIAAgATcDACAAIAI3AwgLwAEBAn8jAEGgAWsiBCQAIARBCGpB0J0EQZABECMaAkACQCABQQFrQf////8HTwRAIAENAUEBIQEgBEGfAWohAAsgBCAA
 
NgI0IAQgADYCHCAEQX4gAGsiBSABIAEgBUsbIgE2AjggBCAAIAFqIgA2AiQgBCAANgIYIARBCGogAiADQe4CQe8CEK0EIQAgAUUNASAEKAIcIgEgASAEKAIYRmtBADoAAAwBC0GEpwRBPTYCAEF/IQALIARBoAFqJAAgAAudAwMCfAF+A38CQAJAAkACQCAAvSIDQgBZBEAgA0IgiKciBEH//z9LDQELIANC////////////AINQBEBEAAAAAAAA8L8gACAAoqMPCyADQn9VDQEgACAAoUQAAAAAAAAAAKMPCyAEQf//v/8HSw0CQYCAwP8DIQVBgXghBiAEQYCAwP8DRwRAIAQhBQwCCyADpw0BRAAAAAAAAAAADwsgAEQAAAAAAABQQ6K9IgNCIIinIQVBy3chBgsgBiAFQeK+JWoiBEEUdmq3IgFEAADg/kIu5j+iIANC/////w+DIARB//8/cUGewZr/A2qtQiCGhL9EAAAAAAAA8L+gIgAgAUR2PHk17znqPaIgACAARAAAAAAAAABAoKMiASAAIABEAAAAAAAA4D+ioiICIAEgAaIiASABoiIAIAAgAESfxnjQCZrDP6JEr3iOHcVxzD+gokQE+peZmZnZP6CiIAEgACAAIABERFI+3xLxwj+iRN4Dy5ZkRsc/oKJEWZMilCRJ0j+gokSTVVVVVVXlP6CioKCioCACoaCgIQALIAALkgEBA3xEAAAAAAAA8D8gACAAoiICRAAAAAAAAOA/oiIDoSIERAAAAAAAAPA/IAShIAOhIAIgAiACIAJEkBXLGaAB+j6iRHdRwRZswVa/oKJETFVVVVVVpT+goiACIAKiIgMgA6IgAiACRNQ4iL7p+qi9okTEsbS9nu4hPqCiRK1SnIBPfpK+oKKgoiAAIAGioaCgC5kBAQN8IAAgAKIiAyADIAOioiADRHzVz1o62eU9okTrnCuK5uVavqCiIAMgA0R9/rFX4x3HPqJE1WHBG
 
aABKr+gokSm+BARERGBP6CgIQUgAyAAoiEEIAJFBEAgBCADIAWiRElVVVVVVcW/oKIgAKAPCyAAIAMgAUQAAAAAAADgP6IgBCAFoqGiIAGhIARESVVVVVVVxT+ioKELjQEAIABECff9DeE9Aj+iRIiyAXXg70k/oCAAokQ7j2i1KIKkv6AgAKJEVUSIDlXByT+gIACiRH1v6wMS1tS/oCAAokRVVVVVVVXFP6AgAKIgAESCki6xxbizP6JEWQGNG2wG5r+gIACiRMiKWZzlKgBAoCAAokRLLYocJzoDwKAgAKJEAAAAAAAA8D+gowu9AgEHfwJAIAFFDQADQCACQQNGBEAgAUEBcSIFRSABQQZxRXIhBwNAIARB6QJGDQMCQAJAIAMgBEECdEHA5wFqKAIAIgJBBHZBD3EiBnZBAXFFDQAgAkEPdiEBIAJBCHZB/wBxIQgCQAJAAkAgBkEEaw4CAAECCyAHRQ0BIAEgBWohBkEAIQIDQCACIAhPDQMgAiAGaiEBIAJBAmohAiAAIAEgAUEBahB8RQ0ACwwDCyAHRQ0AIAFBAWohAiAFRQRAIAAgASACEHwNAwsgACACIAFBAmoiAhB8RQRAIAVFDQIgACACIAFBA2oQfEUNAgtBfw8LIAAgASABIAhqEHwNAQsgBEEBaiEEDAELC0F/DwUgASACdkEBcQRAIAJBAnRB1OQDaigCACADciEDCyACQQFqIQIMAQsACwALQQALTQEBfyABIAAoAgQiAkoEQCAAKAIMIAAoAgggASACQQNsQQJtEEoiAUECdCAAKAIQEQEAIgJFBEBBfw8LIAAgATYCBCAAIAI2AggLQQALlAIBAn8jAEEQayIEJAACQCAEQQxqIAAgAiADELsEIgJBAEgNACABIAJqIQIDQCACQQFqIQECQCACLQAAIgNBP00EQCAEKAIMIANBA3ZqQQFqIgIgAEsNAyAEIANBB3EgAmpBAWoiAzYCDCAFQQFzIQ
 
UMAQsgA0EYdEEYdUF/TARAIAQgAyAEKAIMakH/AGsiAzYCDAwBCyADQd8ATQRAIAQgBCgCDCACLQABIANBCHRyakH//wBrIgM2AgwgAkECaiEBDAELIAQgBCgCDCACLQACIANBEHQgAi0AAUEIdHJyakH///8CayIDNgIMIAJBA2ohAQsgACADSQ0BIAVBAXMhBSABIQIMAAsACyAEQRBqJAAgBQtMAQJ/IwBBEGsiAyQAAn8gAiABKAIAIgQtAABHBEAgAyACNgIAIABBy+IBIAMQPEF/DAELIAEgBEEBajYCAEEACyECIANBEGokACACCx4AIABBMGtBCkkgAEFfcUHBAGtBGklyIABB3wBGcgvBAQEDfwJAAn8gACgCQBpBAAsEQCAAQbHgAUEAEDwMAQsgACgCBCEDIAAgARDFBA0AQQUgA2shBANAIAAoAhgiAi0AAEH8AEcEQEEADwsgACACQQFqNgIYIAAoAgQhAiAAIANBBRDqAQRAIAAQqQJBfw8LIAAoAgAgA2pBCToAACAAKAIAIANqQQFqIAIgBGoQWyAAQQdBABC4ASECIAAgARDFBA0BIAAoAgAgAmogACgCBCACa0EEaxBbDAALAAtBfwtLAQJ/AkADQCABQQpGDQEgAUECdEECckGg3wFqLwEAIABKDQEgAUEBdCECIAFBAWohASACQQF0QaTfAWovAQAgAEwNAAtBAQ8LQQALtgIBA38CfwJ/IAFB/wBNBEAgACABOgAAIABBAWoMAQsCfyABQf8PTQRAIAAhAiABQQZ2QUByDAELAn8gAUH//wNNBEAgAEEBaiECIAAhBCABQQx2QWByDAELAn8gAUH///8ATQRAIAAhAyABQRJ2QXByDAELAn8gAUH///8fTQRAIABBAWohAyABQRh2QXhyIQIgAAwBC0EAIAFBAEgNBRogACABQR52QfwBcjoAACAAQQJqIQMgAUEYdkE/cUGAf3IhAiAAQQFqCyA
 
COgAAIAFBEnZBP3FBgH9yCyECIAMgAjoAACADQQJqIQIgA0EBaiEEIAFBDHZBP3FBgH9yCyEDIAQgAzoAACABQQZ2QT9xQYB/cgshAyACIAM6AAAgAiABQT9xQYABcjoAASACQQJqCyAAawsLJAAgAEIANwIAIAAgATYCFCAAQgA3AgggACACQeACIAIbNgIQCycBAn8CQCAAIAFBABCZASIDBEAgAxCYAUUNASAAEHALQX8hAgsgAgvJAQIDfwF+IwBBEGsiBSQAAkAgACABQQIQbCIBEAsNAAJAAkAgAkEBRw0AIAMpAwAiBxCOAUUNACAAIAVBDGogBxANQQEQywINASAAIAFBMAJ+IAUoAgwiAkEATgRAIAKtDAELIAK4EBULEEhBf0wNAQwCCyACQQAgAkEAShshAgNAIAIgBEYNAiAAIAEgBCADIARBA3RqKQMAEA0QlgIhBiAEQQFqIQQgBkF/Sg0ACwsgACABEApCgICAgOAAIQELIAVBEGokACABCxEAIAAgASACIAMgBCAFEMkBCzoBAX8CQCAAQTBrIgFBCk8EfyAAQcEAa0EFSw0BIABBN2sFIAELDwsgAEHXAGtBfyAAQeEAa0EGSRsLfAICfgF/IAAgAikDACIDQQAQmQEiBUUEQEKAgICA4AAPCyAAIANCgICAgDAQ8gEiAxALBEAgAw8LIAJBCGohAiABQQFrQQAQSiEBIAMQEARAIABCgICAgDAgASACIAUvAQYQ7AUPCyAAIAMgASACEMUDIQQgACADEAogBAsRACAAIAEgAiADQQBBABDJAQsyACAAQQwQLSIARQRAQQAPCyAAIAM2AgggACACNgIEIAAgASgCEDYCACABIAA2AhAgAAtrAQF/AkAgASgCoAEiA0F/Sg0AIAAgASACEFYiA0EASA0AIAEgAzYCoAEgA0EEdCIAIAEoAnRqIgIgAigCDEGHf3FBIHI2AgwgAS0AbkEBcUUNACABKAJ0
 
IABqIgAgACgCDEEBcjYCDAsgAwsuAQF/AkAgASgCmAEiAkF/Sg0AIAAgAUHNABBWIgJBAEgNACABIAI2ApgBCyACCzIAIAAoAgAgASACIAMQ8AIiAEEATgRAIAEoAnQgAEEEdGoiASABKAIMQQNyNgIMCyAAC3ABAn8gASgCAEF/TARAIAEgABA0NgIACyAAQREQDCAAQbABEAwgAkEAIAJBAEobIQIgAEHpAEF/EBshBANAIAIgA0ZFBEAgAEEOEAwgA0EBaiEDDAELCyAAQQYQDCAAQesAIAEoAgAQGxogACAEEB0LaAAgACABIAIQViIAQQBOBEAgASgCdCAAQQR0aiICIAIoAgxBh39xIANBA3RB+ABxcjYCDCACIAEoArwBIgM2AgQgAiABKALAATYCCCABKALMASADQQN0aiAANgIEIAEgADYCwAELIAALbQEBfyAAIAFB/AFqQRAgAUH4AWogASgC9AFBAWoQfUUEQCABIAEoAvQBIgNBAWo2AvQBIAEoAvwBIANBBHRqIgNBfzYCACADIAMtAARB+AFxOgAEIAMgASgCvAE2AgggAyAAIAIQFzYCDAsgAwtMAQJ/AkAgACgCQBCkASIAQSNrIgJBDU1BAEEBIAJ0QeXwAHEbDQACQAJAIABB6wBrDgQCAQECAAsgAEHqAWtBAkkNAQtBASEBCyABC7EDAQN/IAAoAkBBsAJqIQMDQEEAIQICQANAIAMoAgAiA0UNASADKAIcBEAgAUUEQCAAQQYQDAsgAEGEARAMQYMBIQIgACAAKAJALQBsQQNGBH8gAEEOEAwgAEEOEAwgAEHCABAMIABBBhAaIABBERAMIABBsAEQDCAAQeoAQX8QGyEBIABBJBAMIABBABAWIABBgQEQDCAAQYsBEAwgAEHrAEF/EBshBCAAIAEQHSAAQQ4QDCAAIAQQHUEOBUGDAQsQDEF9IQJBASEBCyADKAIQIAJqIQIgAygCFEF/Rg0AC
 
0EPQQ4gARshBANAIAIEQCAAIAQQDCACQQFrIQIMAQsLIAFFBEAgAEEGEAwLIABB7QAgAygCFBAbGkEBIQEMAQsLIAACfyAAKAJAIgIoAmAEQAJAIAFFBEBBfyECDAELIABBKhAMIABB6QBBfxAbIQIgAEEOEAwLIABBtgEQDCAAQQgQGiAAQQAQFiAAIAIQHUEoDAELIAItAGwiBARAAkAgAUUEQEEGIQMMAQtBiwEhA0EuIARBA0cNAhoLIAAgAxAMQS4MAQtBKEEpIAEbCxAMC0gAAkAgAEH7ABAuDQAgACgCEEH9AEcEQCAAEIIBGgNAIABBBxDwAQ0CIAAoAhBB/QBHDQALIAAQ7gELQX9BACAAEA8bDwtBfwuYAQEEfyABKAIUIgVBACAFQQBKGyEGIAFBEGohBAJAA0AgAyAGRwRAIAQoAgAgA0EDdGooAgAgAkYNAiADQQFqIQMMAQsLQX8hAyAAIARBCCABQRhqIAVBAWoQfQ0AIAEgASgCFCIEQQFqNgIUIAEoAhAhAyAAIAIQFyEBIAMgBEEDdGoiAEEANgIEIAAgATYCACAGIQMLIAMLZQEBfyAAQfoAEFFFBEAgAEHljgFBABATQQAPCwJAIAAQDw0AIAAoAhBBgX9HBEAgAEG4yABBABATQQAPCyAAKAIAIAApAyAQOSIBRQ0AIAAQD0UEQCABDwsgACgCACABEBELQQALhRMBFX8jAEFAaiIDJAAgACgCACEGIAAoAkAhBCADQQA2AjwgACgCGCEQIAQgBC0AbiITQQFyOgBuAn8CQCAAEA8NAAJAAkAgACgCEEGDf0YEQCAAKAIoRQ0BIAAQ7wEMAwsgASACQQJGcg0BIABBs4QBQQAQEwwCCyAGIAAoAiAQFyEJIAAQDw0BCyABRQRAIAYgCUH8ACAJGxAXIQoLIAAQggEaAn8gACgCECIFQUxGBEAgABAPDQIgABCxAg0CQQEMAQsgAEEGEAxBAAshDC
 
AJBEAgACAEIAlBAhCoAUEASA0BCyAAQfsAEC4NACAAEIIBGiAAQQIQDCAEKAKEAiEUIABBABA4IABB1gAQDCAAIAlBFkEvIAobIAkbEBogACAMEGsgBCgCmAIhFUEAIQEDQCABQQJHBEAgA0EQaiABQQR0aiIHQQA2AgggB0IANwMAIAFBAWohAQwBCwsgA0EANgI0IAVBTEYhFgNAAkBBAAJ/An8CQAJAIAAoAhAiBUE7RwRAIAVB/QBGDQVBACAFQVZHDQMaIAAQDw0HIAAoAhBBO2sOAwECAQILIAAQD0UNBQwGCyAGQSwQFxogA0EsNgI8IAAoAhghD0EAIQtBACENQQAhAUEsDAILIABBGxAMQQELIQ0gACgCGCEPIAAgA0E8akEBQQBBARDSAyIBQQBIDQMgBUFWRiELIAMoAjwLIgVB+ABGQQAgAUFvcSIIIAsgBUE8R3IiFxtyRSALIAVBO0ZxG0UEQCAAQdOEAUEAEBMMAwsgAUEQcSEHAkACQAJAAkAgAUFucUECRgRAIAcEQAJAIAQgBSAEKAK8ARDOAyIBQQBOBEAgBCgCdCABQQR0aiIFKAIMIg5BA3ZBD3EiAUEJTUEAQQEgAXRB4ARxGyABIAhBBWpGcg0EIAUgDkGHf3FByAByNgIMDAELIAAgBCAFIAhBBWoQ7gJBf0wNCQsgACADQRBqIA1BBHRqEOkEQQBIDQgLIAAgCEECakEAIA8gACgCFEEAIANBDGoQigINByAHBEAgAygCDEEBNgK4ASAAQdAAEAwgAEG7ARAMIAMoAjwhAQJAIAhBAkcEQCAGIAEQ5wQiAUUNCiAAIAEQGiAAIAQgAUEIEO4CIQUgBiABEBEgBUEATg0BDAoLIAAgARAaCyAAIAAoAkAvAbwBEBYMBQsCQCADKAI8RQRAIABB1QAQDAwBCyAAQdQAEAwgACADKAI8EBoLIAAgCEEBa0H/AXEQawwEC0EGIQ5BASEBQQAhEUE
 
AIRICQAJAAkACQAJAIAgOBwADAwMEAQIDCyAAKAIQQShGDQIgBUE7a0EBTQRAIABB54QBQQAQEwwLCyAHBEAgBCAFIAQoArwBEM4DQX9KDQUgACAEIAVBBRDuAkEASA0LIABBBRAMIAAgAygCPBAaIABBuwEQDCAAIAMoAjwQGiAAIAAoAkAvAbwBEBYLIANBEGogDUEEdGoiBSgCAEUEQCAAIAUQ5gQNCwtBACEBIAMoAjxFBEAgBSgCBCEIIwBBIGsiASQAIAEgCDYCACABQRBqQRBB8Q0gARBVGiAGQfUAQfQAIAsbIAFBEGoQ5AQhCCABQSBqJAAgCCIBRQ0LIAAgBCABQQIQqAFBf0wEQCAGIAEQEQwMCyAAQfAAEAwgAEG7ARAMIAAgARAaIAAgACgCQC8BvAEQFgsgACAFKAIANgJAIABBtgEQDCAAQQgQGiAAQQAQFgJAIAMoAjxFBEAgAEG2ARAMIAAgARAaIAAgACgCQC8BvAEQFiAFIAUoAgRBAWo2AgQgBiABEBEMAQsgB0UNACAAQbYBEAwgACADKAI8EBogACAAKAJALwG8ARAWCwJAIAAoAhBBPUYEQCAAEA8NDCAAEGBFDQEMDAsgAEEGEAwLAkAgBwRAIAAQzQMgAEHGABAMDAELIAMoAjwiAUUEQCAAEM0DIABB0QAQDCAAQQ4QDAwBCyAAIAEQqQEgAEHMABAMIAAgAygCPBAaCyAAIAAoAkAoAgQ2AkAgABC7AUUNBwwKC0ECIQEMAgtBAyEBDAELQQAhASAXDQAgAygCNARAIABB+oQBQQAQEwwICwJ/IBYEQEEIIQ5BASERQQAMAQtBByEOQQELIRILIAcEQCAAIANBEGogDUEEdGoQ6QRBAEgNBwsgACAOIAEgDyAAKAIUQQAgA0E4ahCKAg0GIBEgEnIEQCADIAMoAjg2AjQMBAsgB0UNAiADKAI4QQE2ArgBIAQgAygCPCIBIAQoArwBEM4D
 
QQBIDQELIABBpoUBQQAQEwwFCyAAIAQgAUEGEO4CQQBIDQQgAEHQABAMIABBzQAQDCAAIAMoAjwQGiAAQbsBEAwgACADKAI8EBogACAAKAJALwG8ARAWDAELAkAgAygCPEUEQCAAQdUAEAwMAQsgAEHUABAMIAAgAygCPBAaCyAAQQAQawsgCwRAIABBGxAMCyAGIAMoAjwQESADQQA2AjwMAQsLIAMoAjQiAUUEQCADQTRqIQgjAEEQayIBJAAgACABEPkCIABBo4YBQbyGASAMGyIFNgI4IAAoAjwhCyAAIAVBGEEEIAwbajYCPCAAKAIUIQ1BfyEHIAAQD0UEQCAAQQhBByAMG0EAIAUgDUEAIAgQigIhBwsgACALNgI8IAAgARD4AiEMIAFBEGokACAHIAxyDQEgAygCNCEBCyAEKAKAAiAUaiABKAIIEFsgBC0AbkECcUUEQCAGIAMoAjQoAowDEBggAygCNCAAKAI4IBBrIgE2ApADIAYgECABEKMDIQEgAygCNCABNgKMAyABRQ0BCyAAEA8NACAAIARB9gBBAhCoAUEASA0AAkAgAygCEARAIAAgA0EQahDlBAwBCyAAQQYQDAsgAEG7ARAMIABB9gAQGiAAIAAoAkAvAbwBEBYgAEEOEAwgAygCIARAIABBERAMIAAgA0EgahDlBCAAQSQQDCAAQQAQFiAAQQ4QDAsgCQRAIABBERAMIABBuwEQDCAAIAkQGiAAIAQvAbwBEBYLIAAQ7gEgABDuAQJAIAoEQCAAIAQgCkEBEKgBQQBIDQIgAEG7ARAMIAAgChAaIAAgBC8BvAEQFgwBCyAJDQAgAEG/ARAMIAAgBCgCmAIgFWtBAWoQOAtBACACRQ0BGkEAIAAgBCgClAMgCiAKQRYgAkEBRhtBABCJAg0BGgsgBiADKAI8EBFBfwshACAGIAkQESAGIAoQESAEIBM6AG4gA0FAayQAIAALLgAgACABKAIANgIUI
 
AAgASgCBDYCCCAAIAEoAgw2AjggACABKAIINgIwIAAQDwsqACABIAAoAgQ2AgAgASAAKAIUNgIEIAEgACgCGDYCDCABIAAoAjA2AggLjAECBn8BfiABKAIAIgMgACgCBEH/////B3EiBCADIARKGyADayEGIANBAmohB0EAIQQCQANAIARBAkcEQEF/IQUgBCAGRg0CIAAgAxAvIghBMGtBCUsNAiAEQQFqIQQgA0EBaiEDIAitIAlCCn58QjB9IQkMAQsLIAIgCTcDACABIAc2AgBBACEFCyAFCxgAIAAgACABgSIAIABCP4cgAYN8fSABfwseACAAIAEgACACEA0gAxCSAyICQQAQgQUgACACEAoLZQEDfyABKAIQIgQgASgCFEEBayACEOIDcUEDdCIFakEEaiEDA38gAygCACIDIAQgBWpGBEBBAA8LIAAgAykDCBANIAIQDUECEN4BBH8gA0EYawUgA0EEaiEDIAEoAhAhBAwBCwsLKQACQCAAQiCIp0ELakESSQ0AIAAQSUQAAAAAAAAAAGINAEIAIQALIAAL0wMCCH8DfiMAQTBrIgQkAEKAgICA4AAhDAJAIAAgARApIgEQCw0AQoCAgIAwIQwCQAJAIAAgBEEsaiAEQShqIAGnIgkgAkFvcRCQAQ0AIAAQTiIMEAsNACACQRBxIQogBCgCLCEGIAQoAighByADQQFrIQtBACECA0AgAiAHRg0CIAYgAkEDdGooAgQhAwJAAkAgCgRAIAAgBEEIaiAJIAMQUyIFQQBIBEBBAiEFDAILIAVFBEBBBSEFDAILIAAgBEEIahBNQQUhBSAEKAIIQQRxRQ0BCwJAAkACQAJAAkAgCw4CAQIACyAAIAMQXiINEAtFDQIMBwsgACABIAMgAUEAEBIiDRALRQ0BDAYLIAAQTiINEAsNBSAAIAMQXiIOEAsNASAAIA1CACAOQYCAARCqAUEASA0BIAAgASADIAFBABASIg4QCw
 
0BIAAgDUIBIA5BgIABEKoBQQBIDQELIAAgDCAIrSANQQAQqgFBAEgNBCAIQQFqIQgMAgsgACANEAoMAwsgBUECaw4EAgQEAAQLIAJBAWohAgwACwALIAAgDBAKQoCAgIDgACEMIAQoAighByAEKAIsIQYLIAAgBiAHEGQgACABEAoLIARBMGokACAMC6MBAgN+A38jAEEQayIJJAAgBEIAIARCAFUbIQggBUEASCEKA0ACQCAGIAhRBEBBACEFDAELQX8hBSAAIAEgBkJ/hSAEfCAGIAobIgcgA3wgCUEIahCJASILQQBIDQAgAiAHfCEHAkAgCwRAIAAgASAHIAkpAwgQjwFBAE4NAQwCCyAAIAEgBxCUAkEASA0BCyAGQgF8IQYMAQsLIAlBEGokACAFC2ECAX8BfiMAQRBrIgMkAAJ+AkACQCACRQ0AIAApAgQiBEL/////B4MgAVcNACAEp0EASA0BCyABQgF8DAELIAMgAT4CDCAAIANBDGoQ2QEaIAM0AgwLIQEgA0EQaiQAIAELfwEDfyAAKAIQIQUgACACQQN0QRhqEC0iBEUEQA8LIAQgAjYCECAEIAE2AgwgBCAANgIIQQAhACACQQAgAkEAShshASAEQRhqIQIDQCAAIAFHBEAgAiAAQQN0IgZqIAMgBmopAwAQDTcDACAAQQFqIQAMAQsLIAQgBUGgAWoQTAskACAAQQh0QYCA/AdxIABBGHRyIABBCHZBgP4DcSAAQRh2cnILCQAgACABOwAAC0oAIwBBEGsiAyQAIAMgATkDCCADIAI2AgAgAEGAAUHWwwAgAxBVIgBBgAFOBEBB28MAQaENQYPZAEHowwAQAAALIANBEGokACAAC3ABA38jAEEQayICJAAgACEBA0ACQCABLAAAIgNBAE4EQCADQf8BcUEJayIDQRdLQQEgA3RBn4CABHFFcg0BIAFBAWohAQwCCyABQQYgAkEMahBfEOICRQ0AIAIoAgw
 
hAQwBCwsgAkEQaiQAIAEgAGsL2AQCCX8BfgJ+IAEpA0AiCxAQBEBCgICAgOAAAn4jAEEgayICJAACQCAAQQsQoQEiCxALDQAgAkIANwMYIAJCADcDECACQgA3AwggACACQQhqIAFBABCiBSEEIAAgAigCCBAYAkAgBARAIAIoAhQhBgwBCyALpyEHIAIoAhwiCEEAIAhBAEobIQkgAigCFCEGQQAhBAJAA0AgBCAJRwRAAkACQCAGIARBDGxqIgMoAggiBQRAIAIgATYCAAwBCwJAAkAgACACIAJBBGogASADKAIAEO0DIgUOBAEGBgAGCyADQQA2AgQMAgsgAigCBCEFCyAFKAIMQf0ARgRAIANBAjYCBCADIAIoAgAoAhAgBSgCAEEDdGooAgQ2AggMAQsgA0EBNgIEIAUoAgQiCgRAIAMgCjYCCAwBCyADIAIoAgAoAkgoAiQgBSgCAEECdGooAgA2AggLIARBAWohBAwBCwsgBiAIQQxBLyAAEKsCQQAhBANAIAQgCUcEQAJAAkACQCAGIARBDGxqIgMoAgRBAWsOAgABAgsgAygCCCEFIAAgByADKAIAQSYQgAEiA0UNBSAFIAUoAgBBAWo2AgAgAyAFNgIADAELIAAgCyADKAIAQQEgAygCCEEGEJMDQQBIDQQLIARBAWohBAwBCwsgACAGEBggACALQckBIABB/gAQMUEAEBkaIAcgBy0ABUH+AXE6AAUMAgsgACAFIAEgAygCABDsAwsgACAGEBggACALEApCgICAgOAAIQsLIAJBIGokACALCxALDQEaIAEgCzcDQAsgCxANCwsjACAAKAIAIAAoAgQQGCAAQQA2AgwgAEIANwIEIABBfzYCFAt2AQJ/IAAgAUEQahDBBQJAIAEoAiAiAgRAIAEoAjwiA0UNAQNAIAIgA09FBEAgACACKQMAECUgAkEIaiECIAEoAjwhAwwBCwsgACABKAIgEB8LIAAgASkDGBAl
 
IAAgASkDABAlDwtBsx9BoQ1BiZQBQcYfEAAACw0AIAAgASACQRMQ9QML6AMBA38gAUEQaiEDIAEoAhQhAgNAIAIgA0ZFBEAgAkEYayEEIAIoAgQhAiAAIAQQiwMMAQsLIAAoAhAgASgCgAIgASgChAIgASgCoAIQowUgAUGAAmoQlQEgACABKALMAhAYIAAgASgCpAIQGCAAIAEoAtgCEBhBACECA0AgAiABKAK4Ak5FBEAgACABKAK0AiACQQN0aikDABAKIAJBAWohAgwBCwsgACABKAK0AhAYIAAgASgCcBARQQAhAgNAIAIgASgCfE5FBEAgACABKAJ0IAJBBHRqKAIAEBEgAkEBaiECDAELCyAAIAEoAnQQGEEAIQIDQCACIAEoAogBTkUEQCAAIAEoAoABIAJBBHRqKAIAEBEgAkEBaiECDAELCyAAIAEoAoABEBhBACECA0AgAiABKAL0AU5FBEAgACABKAL8ASACQQR0aigCDBARIAJBAWohAgwBCwsgACABKAL8ARAYQQAhAgNAIAIgASgCwAJORQRAIAAgASgCyAIgAkEDdGooAgQQESACQQFqIQIMAQsLIAAgASgCyAIQGCABKALMASICIAFB0AFqRwRAIAAgAhAYCyAAIAEoAuwCEBEgAUH0AmoQlQEgACABKAKMAxAYIAEoAgQEQCABQRhqEEYLIAAgARAYC+UCAwJ8A38BfgJ/IAArAwgiAkQAAAAAAAAoQBDzBSIDmUQAAAAAAADgQWMEQCADqgwBC0GAgICAeAsiBEEMaiAEIARBAEgbIgRBAEohBiAEQQAgBhshBgJ+IAArAwAgAkQAAAAAAAAoQKOcoCICmUQAAAAAAADgQ2MEQCACsAwBC0KAgICAgICAgIB/CyIHEPwEuSECA0AgBSAGRkUEQCAFQQJ0QcD3AGooAgAhBCAFQQFGBEAgBCAHENsDp2pB7QJrIQQLIAVBAWohBSACIAS3oCECDAELC
 
yACIAArAxBEAAAAAAAA8L+goEQAAAAAcJmUQaIgACsDMCAAKwMYRAAAAABAd0tBoiAAKwMgRAAAAAAATO1AoqAgACsDKEQAAAAAAECPQKKgoKAhAiABBHwgAgJ+IAKZRAAAAAAAAOBDYwRAIAKwDAELQoCAgICAgICAgH8LENwDQeDUA2y3oAUgAgsQ+QMLjAEBAn8CQANAIAFCgICAgHBUDQECQAJAAkACQAJAAkAgAaciAi8BBiIDQQxrDgUFAQMHAQALIANBKUYNASADQS1rDgUABgYGAAYLIAIoAiAoAjAPCyACKAIgIgJFDQQgAi0AEUUNASAAEMgCQQAPCyACKAIgIQILIAIpAwAhAQwBCwsgAigCICEACyAACxEAIAAgASACIAMgBEECEIwECw8AIAAgAUKAgICAMBDBAgttAgN+AX8gABBOIgQQC0UEQCABQQAgAUEAShutIQVBACEBA0AgAyAFUQRAIAQPCyAAIAQgAyACIAFBA3RqKQMAEA1BABCqASEGIANCAXwhAyABQQFqIQEgBkF/Sg0ACyAAIAQQCgtCgICAgOAAC6IGAQZ/IwBBMGsiBiQAIAYgAzYCLAJ/AkAgACgCACAGQRBqQSAQQg0AIAFB4ABHIQoCQANAIAMgACgCPCILTw0BAkAgAy0AACIHQR9LDQAgACgCQEUEQCACRQ0EIABB/9QAQQAQEwwECyAKRQRAIAdBDUcNAUEKIQcgA0EBaiADIAMtAAFBCkYbIQMMAQsgB0EKaw4EAgAAAgALIAYgA0EBaiIJNgIsAkACQAJAAkAgASAHRwRAIAdB3ABGDQEgB0EkRw0CQSQhByAKDQMgCS0AAEH7AEcNAyAGIANBAmo2AixBJCEBCyAEQYF/NgIAIAQgATYCGCAEIAZBEGoQNzcDECAFIAYoAiw2AgBBAAwHCwJAIAYCfwJAAkACQAJAIAktAAAiCEEKaw4EAQUFAwALIAhFDQEgCEEiRiAIQS
 
dGckVBACAIQdwARxsNBCAGIANBAmo2AiwgCCEHDAYLIANBAmoMAgsgCSALTw0HIAYgA0ECajYCLEEAIQcMBAsgA0ECQQEgAy0AAkEKRhtqQQFqCyIDNgIsIAFB4ABGDQQgACAAKAIIQQFqNgIIDAQLAkACQAJAIAhBMGtB/wFxQQlNBEAgACgCQCIHRQ0CIAFB4ABHBEAgBy0AbkEBcUUNAgsCQCAIQTBHDQAgAy0AAkEwa0H/AXFBCkkNACAGIANBAmo2AixBACEHDAYLIAFB4ABGIAhBN0tyDQIgAkUNCSAAQaLVAEEAEBMMCQsgCEEYdEEYdUF/Sg0AIAlBBiAGQQxqEF8iB0GAgMQATw0FIAYgBigCDCIDNgIsIAdBfnFBqMAARg0GDAQLIAZBLGpBARCDAiIHQX9HDQELIAJFDQYgAEHY1QBBABATDAYLIAdBf0oNASAGIAYoAixBAWo2AiwgCCEHDAELIAdBGHRBGHVBf0oNACADQQYgBkEMahBfIgdB///DAEsNASAGIAYoAgw2AiwLIAZBEGogBxC+AQ0DIAYoAiwhAwwBCwsgAkUNASAAQYTWAEEAEBMMAQsgAkUNACAAQZvWAEEAEBMLIAZBEGoQREF/CyEDIAZBMGokACADC2oBAn4CQAJAIAAQPSIDEAsEQCADIQQMAQtCgICAgOAAIQQgACADQcAAIAFBBxAZQQBIBEAgAyEBDAELIAMhASAAIANB6QAgAkEAR61CgICAgBCEQQcQGUF/Sg0BCyAAIAEQCiAEIQMLIAMLvgEBA38CQCABQoCAgIBwWgR/IAGnIggoAhAiByAHKAIYIAJxQX9zQQJ0aigCACEGIAcQJyEHAkADQCAGRQ0BIAIgByAGQQFrQQN0aiIGKAIERwRAIAYoAgBB////H3EhBgwBCwsQAQALIAAgCCACIAVBB3FBMHIQgAEiAkUEQEF/DwsgAiAAEKACIgA2AgAgAEEDcQ0BIAIgBDY
 
CBCACIAAgA3I2AgBBAQVBAAsPC0HxPUGhDUHeyABBlD4QAAALMAEBfyMAQdAAayIDJAAgAyAAIANBEGogARCGATYCACAAIAIgAxDQAiADQdAAaiQACysAIABB/wBNBEAgAEEDdkH8////AXFB0N8BaigCACAAdkEBcQ8LIAAQtQMLjwMCA38CfiMAQRBrIgMkACABQQhrIgUpAwAhBgJ/AkACQCAAIAAgAUEQayIEKQMAQQEQwAEiBxALBH4gBgUgACAGQQEQwAEiBhALRQ0BIAcLEAoMAQsCQCAHQoCAgIBwg0KAgICAkH9SIAZCgICAgHCDQoCAgICQf1JyRQRAIAenIAanEJUCIQEgACAHEAogACAGEAoCQAJAAkACQCACQaMBaw4DAAECAwsgAUEfdiECDAQLIAFBAUghAgwDCyABQQBKIQIMAgsgAUF/SiECDAELAn8CQAJAIAAgA0EIaiAHEFkEQCAAIAYQCgwBCyAAIAMgBhBZRQ0BC0EADAELAn8CQAJAAkACQCACQaMBaw4DAAECAwsgAysDCCADKwMAYwwDCyADKwMIIAMrAwBlDAILIAMrAwggAysDAGQMAQsgAysDCCADKwMAZgshAkEBC0UNAQsgBCACQQBHrUKAgICAEIQ3AwBBAAwBCyAEQoCAgIAwNwMAIAVCgICAgDA3AwBBfwshACADQRBqJAAgAAtTAgJ+An9BfyEFAkAgACABQQhrIgYpAwAiBCACEPUBIgMQCw0AIAAgBBAKIAYgAzcDACAAIANB6gAgA0EAEBIiAxALDQAgASADNwMAQQAhBQsgBQsuAQF/A0AgAiADRkUEQCAAIAEgA0EDdGopAwAQCiADQQFqIQMMAQsLIAAgARAYC2UBAn8jAEEQayIFJAACQCACEJsBRQRAIAIQDSECDAELIAAgBUEMaiACEJACIgZFBEBCgICAgOAAIQIMAQsgACABIAYgBSgCDEGQyAAgAyAEELcFIQIg
 
ACAGEDYLIAVBEGokACACC7wBAgN+AX8jAEEQayICJABCgICAgOAAIQUCQCAAIAEQZw0AIAMpAwAhBgJAAkAgAykDCCIHQiCIpyIDQQNHBEAgBEECRg0CIANBAkYNAQwCCyAEQQJGDQELIAAgASAGQQBBABAiIQUMAQsgACACQQxqIAcQiwQiA0UNACACKAIMIQgCfiAEQQFxBEAgACABIAYgCCADEI4DDAELIAAgASAGIAggAxAiCyEFIAAgAyAIEJgDCyACQRBqJAAgBQsNACAAIAEQDSACEMABCxwAIAAgACgCECgCRCABQRhsaigCBEH1wgAQxQELZQEBfyMAQTBrIgIkAAJ/IAFC/////wdYBEAgAacQkwEMAQsgAiABNwMAIAJBEGpBGEGBwQAgAhBVGkEAIAAgAkEQahBxIgEQCw0AGiAAKAIQIAGnQQEQ1AILIQAgAkEwaiQAIAALPAEBfyABIAAoAtQBIAEoAhQgACgCyAEQ0QJBAnRqIgIoAgA2AiggAiABNgIAIAAgACgC0AFBAWo2AtABC0MAAn9BACACKAIAKAIAQRp2IANGDQAaQX8gACABIAIQ4wENABogAigCACIAIAAoAgBB////H3EgA0EadHI2AgBBAAsLqwEBBH9BfyECAkAgACABQQAQ4wENACABKAIoIgQgASgCECIDKAIgaiIFIAMoAhxLBEAgACABQRBqIAEgBRDRBQ0BCyABKAIkIQNBACECA0AgAiAERkUEQCAAIAEgAhCTAUEHEIABIAMpAwA3AwAgAkEBaiECIANBCGohAwwBCwsgACABKAIkEBhBACECIAFBADYCKCABQgA3AyAgASABLQAFQfcBcToABQsgAgt5AQN/AkACQCAAQQFxIgINACABQYECcUGBAkYgAUGACHFBACAAIAFzQQRxG3INASACIAFBgPQAcUVyDQAgAEEwcSICQRBGIAFBgDBxIgRBAEdzDQEgAEECcSABQYIEc
 
UGCBEdyIAJBEEZyDQAgBEUNAQtBASEDCyADC5QBAQF/IwBBEGsiBSQAIAUgAzcDCAJAIAEEQCAAIAGtQoCAgIBwhBANIAJBASAFQQhqEDUhAiAAIAUpAwgQCkF/IQEgAhALDQEgACACEApBASEBDAELIAAgAxAKIARBgIABcUUEQEEAIQEgBEGAgAJxRQ0BIAAQ+gFFDQELIABBq8AAQQAQFEF/IQELIAVBEGokACABCyIAIAAgAkEBahAtIgAEQCAAIAEgAhAjIAJqQQA6AAALIAALYAIBfwF+AkAgARBcDQACQAJAAkAgACgCECgCOCABQQJ0aigCACkCBCIDQj6Ip0EBaw4DAwIAAQtBASECAkAgA0IgiKdB/////wNxDgIDAAELQQIPCxABAAtBASECCyACCygBAX4Cf0EAIAAgARDYBSICEBANABpBfyACEAsNABogACACEApBAQsLTgIBfwF+IwBBEGsiAiQAAn4gAUH/AU0EQCACIAE6AA8gACACQQ9qQQEQ1QIMAQsgAiABOwEMIAAgAkEMakEBEJwECyEDIAJBEGokACADC98BAQR/IAAQCwR/QfSmBCgCABCRASEAQfSmBCgCACAAQaYIEOUDIQJB9KYEKAIAIQMCQCACRQRAIAMgABAKDAELIAMgAEGrCBDlAyEDQfSmBCgCACEEIANFBEAgBCACEDZB9KYEKAIAIAAQCgwBCyAEIABBsQgQ5QMhBEH0pgQoAgAhBSAERQRAIAUgAhA2QfSmBCgCACADEDZB9KYEKAIAIAAQCgwBCyAFIAAQCiACIAQgAyABEAlB9KYEKAIAIAIQNkH0pgQoAgAgAxA2QfSmBCgCACAEEDYLQQEFQQALCykBAn8CQCAAQoCAgIBwVA0AIACnIgIvAQYQ9wFFDQAgAigCICEBCyABCyEAIAAgAUEwIAOtQQEQGRogACABQTYgACACEDFBARAZGgtPAQF/IAEgAjYCDCABIAA2Ag
 
AgAUEANgIUIAEgAzYCECABQQA2AgggASAAIAIgAxD8ASIANgIEIAAEf0EABSABQX82AhQgAUEANgIMQX8LC/gBAgV/AX4gASgCDCECAkACQAJAIAEpAgQiB0KAgICAgICAgEBaBEAgACgCOCEEDAELAkAgASAAKAI4IgQgACgCNCAHQiCIpyAAKAIkQQFrcUECdGoiAygCACIFQQJ0aigCACIGRgRAIAMgAjYCAAwBCwNAIAYhAyAFRQ0DIAQgAygCDCIFQQJ0aigCACIGIAFHDQALIAMgAjYCDAsgBSECCyAEIAJBAnRqIAAoAjwQ5AU2AgAgACACNgI8IAAgARAfIAAgACgCKCIAQQFrNgIoIABBAEwNAQ8LQZkwQaENQdgWQaAwEAAAC0GyMEGhDUHsFkGgMBAAAAuJAgIFfwF+AkACQCACBEAgASwAABBFDQELAn8gACgCECEEIAEgAkEBEOkFIgNB/////wNxIQYgBCgCNCAEKAIkQQFrIANxQQJ0aiEDA0ACQAJAIAMoAgAiBUUNACAEKAI4IAVBAnRqKAIAIgMpAgQiCEKAgICAgICAgECDQoCAgICAgICAwABSIAhCIIinQf////8DcSAGR3INASAIpyIHQQBIIAdB/////wdxIAJHcg0BIANBEGogASACEHQNASAFEPEBDQAgAyADKAIAQQFqNgIACyAFDAILIANBDGohAwwACwALIgMNAQtBACEDIAAgASACEP4BIggQCw0AIAAgCKcQpQQhAwsgAwvEAgECfyAAIAAoAgAiAUEBayICNgIAAkAgAUEBSg0AIAJFBEAgACgCECECQQAhASAAQQAQpgQgACAAKQPAARAKIAAgACkDyAEQCiAAIAApA7ABEAogACAAKQO4ARAKIAAgACkDqAEQCgNAIAFBCEYEQEEAIQEDQCACKAJAIAFKBEAgACAAKAIoIAFBA3RqKQMAEAogAUEBaiEBDAELCyACIAAoAigQHyA
 
AIAApA5gBEAogACAAKQOgARAKIAAgACkDUBAKIAAgACkDQBAKIAAgACkDSBAKIAAgACkDOBAKIAAgACkDMBAKIAAoAhAhASAAKAIkIgIEQCABIAIQngILIABBFGoQRiAAEJ8CIAAoAhAgABAfDAMFIAAgACABQQN0aikDWBAKIAFBAWohAQwBCwALAAtBxw1BoQ1B6BFB4g0QAAALCyoBAX8gAEKAgICAcFoEQCAApyICIAItAAVB7wFxIAFBBHRBEHFyOgAFCwusAQMBfAF+AX8gAL0iAkI0iKdB/w9xIgNBsghNBHwgA0H9B00EQCAARAAAAAAAAAAAog8LAnwgACAAmiACQn9VGyIARAAAAAAAADBDoEQAAAAAAAAww6AgAKEiAUQAAAAAAADgP2QEQCAAIAGgRAAAAAAAAPC/oAwBCyAAIAGgIgAgAUQAAAAAAADgv2VFDQAaIABEAAAAAAAA8D+gCyIAIACaIAJCf1UbBSAACwvWAwMCfAJ/AX4gAL0iBUIgiKchAwJAAnwCfAJAIAVCAFlBACADQfmE6v4DSxtFBEAgA0GAgMD/e08EQEQAAAAAAADw/yAARAAAAAAAAPC/YQ0EGiAAIAChRAAAAAAAAAAAow8LIANBAXRBgICAygdJDQQgA0HF/cr+e08NAUQAAAAAAAAAAAwCCyADQf//v/8HSw0DCyAARAAAAAAAAPA/oCIBvSIFQiCIp0HiviVqIgNBFHZB/wdrIQQgACABoUQAAAAAAADwP6AgACABRAAAAAAAAPC/oKEgA0H//7+ABEsbIAGjRAAAAAAAAAAAIANB//+/mgRNGyECIAVC/////w+DIANB//8/cUGewZr/A2qtQiCGhL9EAAAAAAAA8L+gIQAgBLcLIgFEAADg/kIu5j+iIAAgAiABRHY8eTXvOeo9oqAgACAARAAAAAAAAABAoKMiASAAIABEAAAAAAAA4D+ioiICIAEgAaIiASABoiIAIAAg
 
AESfxnjQCZrDP6JEr3iOHcVxzD+gokQE+peZmZnZP6CiIAEgACAAIABERFI+3xLxwj+iRN4Dy5ZkRsc/oKJEWZMilCRJ0j+gokSTVVVVVVXlP6CioKCioCACoaCgCw8LIAAL7wEBAn8CfwJAIAFB/wFxIgMEQCAAQQNxBEADQCAALQAAIgJFIAIgAUH/AXFGcg0DIABBAWoiAEEDcQ0ACwsCQCAAKAIAIgJBf3MgAkGBgoQIa3FBgIGChHhxDQAgA0GBgoQIbCEDA0AgAiADcyICQX9zIAJBgYKECGtxQYCBgoR4cQ0BIAAoAgQhAiAAQQRqIQAgAkGBgoQIayACQX9zcUGAgYKEeHFFDQALCwNAIAAiAi0AACIDBEAgAkEBaiEAIAMgAUH/AXFHDQELCyACDAILIAAQQyAAagwBCyAACyIAQQAgAC0AACABQf8BcUYbCysAIABBgAFPBH8gAEHPAU0EQCAAQYAFag8LIABBAXRBrqwDai8BAAUgAAsLEAAgAC8AACAALQACQRB0cgtpAQR/IAEQQyEDA0ACQCAALQAARQRAQX8hAgwBCwNAAn8gAEEsELEDIgRFBEAgABBDDAELIAQgAGsLIgUgA0YEQCAAIAEgAxB0RQ0CCyAAIAVqQQFqIQAgBA0ACyACQQFqIQIMAQsLIAILEQAgAEHA/gFB4IYCQSEQ3gILYAEBfyMAQSBrIgMkACADIAAoAhA2AhggAyAAKQIINwMQIAMgACkCADcDCCAAQQA2AgggAEIANwIAIAAgAygCECADKAIIIAEgAkEAEKcCIQAgA0EIahBPIANBIGokACAAC5IFAQd/AkACQCABQf8ATQRAIAJFDQEgAUEgaiABIAFBwQBrQRpJGyEBDAILIAJBAEchCEHoAiEFA0AgAyAFSg0CIAEgAyAFakEBdiIGQQJ0QcDnAWooAgAiB0EPdiIESQRAIAZBAWshBQwBCyABIAdBCHZB/wBxIARqTwRAI
 
AZBAWohAwwBCwsgB0EIdEGAHnEiCSAGQfDyAWotAAAiBXIhAwJAAkACQAJAAkACQAJAAkACQCAHQQR2IgdBD3EiBg4NAAAAAAECAwQFBgYHBwgLIAIgB0EBcUdBACACQQJHIAZBAklyGw0JIAEgBGsgA0ECdEHA5wFqKAIAQQ92aiEBDAkLIAEgBGsiA0EBcSACQQBHRg0IIANBAXMgBGohAQwICyABIARrIgRBAUYEQEEBQX8gAhsgAWohAQwICyAEIAJFQQF0Rw0HQQJBfiACGyABaiEBDAcLIAEgBGshASACRQRAIABBmQc2AgQgACABIANBBXZB/gBxQeD1AWovAQBqNgIAQQIPCyABIAVBP3FBAXRB4PUBai8BAGohAQwGCyACQQFGDQUgAyACQQJGQQV0aiEBDAULIAJBAUYNBCADQQF0QeD1AWovAQAgAkECRmohAQwECyAGQQlrIAhHDQMgA0EBdEHg9QFqLwEAIQEMAwsgBkELayACRw0CIAAgBUE/cUEBdEHg9QFqLwEANgIEIAAgA0EFdkH+AHFB4PUBai8BACABIARrajYCAEECDwsgAg0BIAAgCUEHdkHg9QFqLwEANgIAIAAgBUEPcUEBdEHg9QFqLwEANgIIIAAgBUEDdkEecUHg9QFqLwEANgIEQQMPCyABQSBrIAEgAUHhAGtBGkkbIQELIAAgATYCAEEBCxcAIAAgAUH/AXEQDiAAIAJB//8DcRAwC7MYARN/IwBBEGsiCCQAIAggAigCACIENgIMAkACQAJAAkACQAJAAkACQAJAIAQtAAAiBwRAIAdB3ABHDQUgBEEBaiIFIAAoAhxPDQEgCCAEQQJqNgIMAkACQAJAAkACQAJAAkACQAJAAkAgBC0AASIHQdMAaw4FBAEBAQYACwJAIAdB4wBrDgIIBwALAkAgB0HzAGsOBQMBAQEFAAsgB0HEAEYNASAHQdAARiAHQfAARnINCAsgACgCKEEBdC
 
EEDAsLQQEhBgwEC0ECIQYMAwtBAyEGDAILQQQhBgwBC0EFIQYLQX8hByAGQQF0QXxxQdTjAWooAgAiAy8BACEEIAEgACgCQEHrAhCFASAGQQFxIQAgA0ECaiEDIARBAXQhBkEAIQQCQAJAA0AgBCAGRwRAIARBAXQhBSAEQQFqIQQgASADIAVqLwEAEL0ERQ0BDAILC0EAIQQgAEUNASABEKYCRQ0BCyABEE9BfyEECyAEDQsMBAsCQCAELQACIgFB3wFxQcEAa0H/AXFBGk8EQCAAKAIoIQcgA0UgAUHfAEYgAUEwa0H/AXFBCklyRXINASAHDQcLIAggBEEDajYCDCABQR9xIQcMCgsgBw0FIAggBTYCDEHcACEHDAkLIAAoAihFBEBBACEEDAQLIAdB0ABGIRNBfyEHIAAhCiABIQMjAEGAAWsiBiQAAn8CQAJAIAgoAgwiAC0AAEH7AEYEQCAGQUBrIQQCQAJAA0ACQCAAQQFqIQEgAC0AASIFEOACRQ0AIAQgBkFAa2tBPksNAiAEIAU6AAAgBEEBaiEEIAEhAAwBCwsgBEEAOgAAIAYhBAJAIAEtAAAiBUE9Rw0AIABBAmohAQNAIAEtAAAiBRDgAkUNASAEIAZrQT9PBEAgCkGZ5AFBABA8DAcFIAQgBToAACAEQQFqIQQgAUEBaiEBDAELAAsACyAEQQA6AAAgBUH9AEcEQCAKQbjkAUEAEDwMBQtBACEEAkACQCAGQUBrQcbkAUEHEHRFDQAgBkFAa0HN5AFBAxB0RQ0AQQEhBCAGQUBrQdDkAUESEHRFDQAgBigCQEHzxuEDRw0BCyADIAooAkBB6wIQhQECfyADIQ0gBCEQQQAhBSMAQTBrIgkkAAJAAkBBkI0CIAYQtAMiDkEASARAQX4hEQwBCyADIQwgEARAIAlBGGogDSgCDCANKAIQEIUBIAkgDSgCDCANKAIQEIUBIAlBGGohDAsgDkEBaiESQYCfAiE
 
AA0AgAEGxswJJBEAgBSELAn8gAEEBaiAALQAAIg9B/wBxIgVB4ABJDQAaIAVB7wBNBEAgAC0AASAFQQh0ckGgvwFrIQUgAEECagwBCyAALQACIAVBEHRyIAAtAAFBCHRyQaDfvwNrIQUgAEEDagshBCAPQYABcUUEQCAFIAtqQQFqIQUgBCEADAILIARBAWohACAFIAtqQQFqIQUgEiAELQAARw0BIAwgCyAFEHxFDQEMAwsLIBBFDQBBwLMCIQAgDkE2RiEUIA5BGEchFUEAIQQDQCAAQd+5AkkEQCAEIQUgACwAACILQf8BcSEEAn8gAEEBaiALQX9KDQAaIAtB/wFxQb8BTQRAIAAtAAEgBEEIdHJBgP8BayEEIABBAmoMAQsgAC0AAiAEQRB0ciAALQABQQh0ckGA//4FayEEIABBA2oLIgBBAWohDyAEIAVqQQFqIQQgAC0AACELAkACQCAURQRAQQAhACAVDQELIAtFDQEgCSAFIAQQfEUNAQwFCwNAIAAgC0YNASAAIA9qIRYgAEEBaiEAIBIgFi0AAEcNAAsgCSAFIAQQfA0ECyALIA9qIQAMAQsLAkAgDkE2R0EAIA5BGEcbRQRAIAkQpgINAyANIAwoAgggDCgCACAJKAIIIAkoAgBBARCnAkUNAQwDCyANIAwoAgggDCgCACAJKAIIIAkoAgBBABCnAg0CCyAMEE8gCRBPCyAJQTBqJAAgEQwBCwNAIBBFDQAgDBBPIAkQTwwACwALIgBFDQIgAxBPIABBfkcNBCAKQeLkAUEAEDwMBQsCQCAGQUBrQfnkAUEREHQEQCAGQUBrQYrlAUEDEHQNAQsgAyAKKAJAQesCEIUBIAMgBhC2BCIARQ0CIAMQTyAAQX5HDQQgCkGN5QFBABA8DAULIAYtAAANACADIAooAkBB6wIQhQEgAyAGQUBrELYEIgBBf0YEQCADEE8MBAsgAEF/Sg0BIwBBoARrIgAkAEF+IQQC
 
QEGgvwIgBkFAaxC0AyIFQQBIDQACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgBUEiaw4TAAcBAgYQDg0RDwwICRIEAwULChMLQX8hBEEAIANBAEGAARB8RQ0TGgwUC0F/IQRBACADQQBBgIDEABB8RQ0SGgwTCyAAQoaAgIDwADcDCCAAQoCAgIAQNwMAIAMgABB7DBELIABCg4CAgPAANwMgIABCgYCAgBA3AxggAEKAgICAgIAENwMQIAMgAEEQahB7DBALIABBQGtCg4CAgPAANwMAIABCgYCAgDA3AzggAEKAgICAwAA3AzAgAyAAQTBqEHsMDwsgAEKDgICA8AA3A2AgAEKBgICAwAA3A1ggAEKAgICAIDcDUCADIABB0ABqEHsMDgsgAEEHNgKQASAAQoOAgIAwNwOIASAAQoOAgIAQNwOAASAAQoGAgIDAADcDeCAAQoCAgIDgATcDcCADIABB8ABqEHsMDQsgAEKDgICA8AA3A8gBIABCgYCAgCA3A8ABIABCg4CAgDA3A7gBIABCg4CAgBA3A7ABIABCgYCAgMAANwOoASAAQoCAgIDghwE3A6ABIAMgAEGgAWoQewwMCyAAQQc2AugBIABCg4CAgOAANwPgASAAQoGAgIDQADcD2AEgAEKAgICAkKiAgD83A9ABIAMgAEHQAWoQewwLCyAAQoOAgIDwADcDgAIgAEKBgICA0AA3A/gBIABCgICAgIAoNwPwASADIABB8AFqEHsMCgsgAEKEgICA8AA3A8gCIABCg4CAgOAANwPAAiAAQoGAgICwATcDuAIgAEKegICAMDcDsAIgAEKdgICAEDcDqAIgAEKDgICAEDcDoAIgAEKBgICA8AA3A5gCIABCgICAgOCHATcDkAIgAyAAQZACahB7DAkLIABBBzYCmAMgAEKGgICAwAA3A5ADIABCjICAgDA3A4gDIABCg4CAgBA3A4ADI
 
ABCgYCAgOADNwP4AiAAQoGAgIDQAzcD8AIgAEKIgICAMDcD6AIgAEKDgICAEDcD4AIgAEKBgICA8AA3A9gCIABCgICAgODfwQA3A9ACIAMgAEHQAmoQewwICyADQQEQ3AIMBwsgA0ECENwCDAYLIANBBxDcAgwFCyAAQoWAgIDwADcDsAMgAEKBgICA0AE3A6gDIABCgoCAgBA3A6ADIAMgAEGgA2oQewwECyAAQoWAgIDwADcD0AMgAEKBgICA4AE3A8gDIABCgoCAgMAANwPAAyADIABBwANqEHsMAwsgAEKFgICA8AA3A/ADIABCgYCAgPABNwPoAyAAQoKAgIDAADcD4AMgAyAAQeADahB7DAILIABChYCAgPAANwOQBCAAQoGAgICgATcDiAQgAEKBgICAgAY3A4AEIAMgAEGABGoQewwBCyAFQSFLDQEgAyAFQRBqELQECyEECyAAQaAEaiQAIAQiAEUNASADEE8gAEF+Rw0DCyAKQa7lAUEAEDwMAwsCQCATRQ0AIAMQpgJFDQAgAxBPDAMLIAggAUEBajYCDEEADAMLIApBguQBQQAQPAwBCyAKEKkCC0F/CyEAIAZBgAFqJAAgAEUNAgwJCyAEIAAoAhxPDQBBACEHDAYLIABBrOMBQQAQPAwEC0GAgICABCEHDAULIAggBTYCDCAIQQxqIAQQgwIiAUF/SgRAIAEhBwwFCwJAIAFBfkcNACAIKAIMLQAAIgFFDQBB7uIBIAFBEBCBAg0CCyAAKAIoRQ0BCyAAQf7iAUEAEDwMAQsgCCgCDCEEIAdBGHRBGHVBAE4NASAEQQYgCEEMahBfIgdBgIAESQ0CIAAoAigNAiAAQbvjAUEAEDwLQX8hBwwCCyAIIARBAWo2AgwLIAIgCCgCDDYCAAsgCEEQaiQAIAcLHwEBfyAAKAI8IgFBf0wEfyAAEMAEGiAAKAI8BSABCwuDAwEEfyMAQRBrIgQkACAEIAEoAgAiBT
 
YCDCACQQF0IQYgACEDAn8DQAJAAkACQAJ/AkACQCAFLQAAIgJB3ABHBEAgAkE+Rw0BIAAgA0YNBiADQQA6AAAgASAEKAIMQQFqNgIAQQAMCAsgBCAFQQFqNgIMIAUtAAFB9QBGDQEMBQsgAkEYdEEYdUF/Sg0CIAVBBiAEQQxqEF8MAQsgBEEMaiAGEIMCCyICQf//wwBLDQIMAQsgBCAFQQFqNgIMCwJAIAAgA0YEQAJ/IAJB/wBNBEAgAkEDdkH8////AXFB0N8BaigCACACdkEBcQwBCyACELUDC0UNAgwBCwJ/IAJB/wBNBEAgAkEDdkH8////AXFB4N8BaigCACACdkEBcQwBCyACQX5xQYzAAEYgAhC4BEEAR3ILRQ0BCyADIABrQfkASg0AAn8gAkH/AE0EQCADIAI6AAAgA0EBagwBCyADIAIQ4wIgA2oLIQMgBCgCDCEFDAELC0F/CyEAIARBEGokACAACzEBAX9BASEBAkACQAJAIABBCmsOBAIBAQIACyAAQajAAEYNAQsgAEGpwABGIQELIAELqAIBA38CQAJAIAAoAjAiCUEBaiIKIAAoAiwiCE0EQCAAKAIoIQgMAQsgACgCICAAKAIoIAhBA2xBAXYiCEEIIAhBCEsbIgkgACgCJGwQhQQiCEUEQEF/IQgMAgsgACAINgIoIAAgCTYCLCAAKAIwIglBAWohCgsgACAKNgIwIAggACgCJCAJbGoiCCAHNgIEIAggBjoAACAIIAQ2AgwgCCAFNgIIIAggAzoAASAIQRBqIQQgACgCDEEBdCEFQQAhAANAIAAgBUZFBEAgBCAAQQJ0IgZqIAEgBmooAgA2AgAgAEEBaiEADAELCyAEIAVBAnRqIQFBACEIQQAhAANAIAAgA0YNASABIABBAnQiBGogAiAEaigCADYCACAAQQFqIQAMAAsACyAIC2sAAkACQAJAAkACQCAAIAFyQQ9xDg8ABAMEAgQDBAEEAwQ
 
CBAMEC0HhAkHiAiABQRBGGw8LQeMCQeQCIAFBCEYbDwtB5QJB5gIgAUEERhsPC0HnAkHoAiABQQJGGw8LQekCQeoCIAFBAUYbC1IBAn8CfyAAKAIEIgMgAmoiBCAAKAIISwR/QX8gACAEEMwBDQEaIAAoAgQFIAMLIAAoAgAiA2ogASADaiACECMaIAAgACgCBCACajYCBEEACxoLDAAgACgCECABEO4DC1wBAX8CQCABQiCIpyICQX9HBEAgAkF4Rw0BIAEQDQ8LIAGnIgIvAQZBB0cNACACKQMgIgFCgICAgHCDQoCAgICAf1INACABEA0PCyAAQeTJAEEAEBRCgICAgOAAC1IBBH8gBEEAIARBAEobIQhBACEEAkADQCAEIAhGDQEgAyAEaiEFIAIgBGohBiAEQQFqIQQgACAGEC8iBiABIAUQLyIFRg0ACyAGIAVrIQcLIAcLQwECfwNAAkAgAkEBTgR/IAAgARAvEOgCIgRBAE4NAUF/BSADCw8LIAJBAWshAiABQQFqIQEgBCADQQR0ciEDDAALAAsmAQF/IwBBEGsiAiQAIAJBADYCDCAAQQUgAUEAEP0BIAJBEGokAAt5AQJ/IwBBEGsiBCQAAkAgACABIAIgAxCuASIBEAsNAAJAIAAgARCWASIFQQBIDQAgAkEBRw0BIAAgBEEIaiADKQMAEA0QrAENACAEKQMIIAWtVw0BIABB0KwBQQAQFAsgACABEApCgICAgOAAIQELIARBEGokACABC0IBAX8CQCAAIAFqIgAtAAFBPUcNAEEBIQICQAJAIAAtAAAiAEEWaw4EAgEBAgALIABBsQFGDQELIABBHUYhAgsgAgtpACABQQFqQQhNBEAgACABQc0Aa0H/AXEQDg8LIAFBgAFqQf8BTQRAIABBuwEQDiAAIAFB/wFxEA4PCyABQYCAAmpB//8DTQRAIABBvAEQDiAAIAFB//8DcRAwDwsgAEEBEA4gACABEBwL
 
aQEEfyAAKAIEIQUCQANAIAEgBU4NAQJAAkAgACgCACABaiIDLQAAIgRBtAFHBEAgBEHAAUYNASAEQesARw0EIAIgAygAAUcNBAwCCyACIAMoAAFGDQELIAFBBWohAQwBCwtBASEGCyAGC4ECAQV/IAAgAUF/EG8aAkADQCAGQQpGBEBB6wAhBAwCCwJAIAFBAEgNACABIAAoAqwCTg0AIAAoAqQCIAFBFGxqKAIIIQUgACgCgAIhBwNAAkACQCAFIAdqIggtAAAiBEG0AUYNACAEQcABRwRAIARBDkcNAkEpIQQDQCAHIAVBAWoiBWotAAAiA0EORg0ACyADQSlGDQZBDiEEDAYLIANFDQAgAyAIKAABNgIACyAFIARBAnRBkDFqLQAAaiEFDAELCyAEQesARw0CIAZBAWohBiAIKAABIQEMAQsLQZ6KAUGhDUH/8wFBlZoBEAAACyACIAQ2AgAgACABQQEQbxogAQs2AAJAIAAgAUEIEFYiAEEASA0AIAEoAmBFDQAgASgCdCAAQQR0aiIBIAEoAgxBAnI2AgwLIAALpQEBAn8gASgCwAIiCkGAgAROBEAgAEGfkAFBABBBQX8PC0F/IQkgACABQcgCakEIIAFBxAJqIApBAWoQfQR/QX8FIAEgASgCwAIiCUEBajYCwAIgASgCyAIgCUEDdGoiCSAEOwECIAkgB0EDdEEIcSAGQQJ0QQRxIANBAXRBAnEgAkEBcXJyciAIQQR0cjoAACAJIAAgBRAXNgIEIAEoAsACQQFrCwvVAQEDfwJAAkAgAUGhf0YEQEF/IQMgAEEIIAIQsAJFDQEMAgtBfyEDIABBoX8gAhDMAw0BC0EAIQMgACgCECABRw0AQekAQeoAIAFBoX9GGyEFIAJBe3EhAiAAEDQhBANAQX8hAyAAEA8NASAAQREQDCAAIAUgBBAbGiAAQQ4QDAJAIAFBoX9GBEAgAEEIIAIQsAJFDQEMAwsgAEGhfyACE
 
MwDDQILIAAoAhAiAyABRg0ACyADQaZ/RgRAIABBpocBQQAQE0F/DwsgACAEEB1BACEDCyADC40BAQJ/AkACQCAAKAJAIgEQpAEiAkG/AUcEQCACQc0ARw0BIAEoApgCIQIgAUF/NgKYAiABIAI2AoQCIABBzgAQDA8LIAEoApgCIgAgACABKAKAAiICaigAAWsgAmoiAC0AAUHWAEcNASAAQdcAOgABIAFBfzYCmAILDwtB04UBQaENQe2wAUGKhgEQAAALWQEDfyAAKALMASACQQN0akEEaiEDA0ACQEF/IQQgAygCACIDQX9GDQAgACgCdCADQQR0aiIFKAIEIAJHDQAgAyEEIAUoAgAgAUYNACAFQQhqIQMMAQsLIAQL0yECCX8BfiMAQRBrIgckACABQQJxIgRBAXYhCUF+IQICQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgACgCECIDQYABag4HAgMSDQEBBQALAkAgA0HVAGoODAkLDAEBAQEKAQEBDwALAkAgA0E7ag4KBwEBCAEBAQEREAALIANBKEYNBSADQS9GDQMgA0HbAEYgA0H7AEZyDQ0LIAAoAjghAiAHIAAoAhgiATYCBCAHIAIgAWs2AgAgAEHaggEgBxATDBQLAkAgACkDICILQv////8PWARAIABBARAMIAAgC6cQOAwBCyAAIAtBABDRAUEASA0UC0F/IQEgABAPDRQMEQtBfyEBIAAgACkDIEEBENEBDRMgABAPRQ0QDBMLQX8hAgsgACAAKAI4IAJqNgI4IAAoAgAoAugBRQRAIABBioABQQAQEwwRC0F/IQEgABDvBA0RQQAhAiAAIAApAyBBABDRARogACgCACIEIAApAyAgACkDKCAEKALoAREWACILEAsEQCAAKAJAIgQEQCAEKAJoQQBHQQF0IQILIAAoAgAiBCAEKAIQKQOAASAAKAIMIAAoAh
 
QgAhDEAgwSCyAAIAtBABDRASEEIAAoAgAgCxAKIAQNESAAQTMQDCAAEA9FDQ8MEQsCQCABQQRxRQ0AQQAhAiAAQQBBARClAUGkf0cNAEF/IQEgAEEDQQAgACgCGCAAKAIUENYBRQ0PDBELQX8hASAAEIgCRQ0NDBALQX8hAUEAIQIgAEECQQAgACgCGCAAKAIUENYBRQ0NDA8LQX8hAUEAIQIgAEEBQQAQ9wJFDQwMDgtBfyEBIAAQDw0NIABBBxAMDAoLQX8hASAAEA8NDCAAQbYBEAwgAEEIEBoMCAtBfyEBIAAQDw0LIABBCRAMDAgLQX8hASAAEA8NCiAAQQoQDAwHCyAAKAIoBEAgABDvAQwJCwJAIAFBBHEiAkUNACAAQQEQiAFBpH9HDQBBfyEBQQAhAiAAQQNBACAAKAIYIAAoAhQQ1gFFDQgMCgsCQAJAIABBhQEQUUUNACAAQQEQiAFBCkYNACAAKAIUIQYgACgCGCEDQX8hASAAEA8NCyAAKAIQIgRBRUYEQCAAQQJBAiADIAYQ1gFFDQkMDAsCQCACRQ0AAkAgBEEoRgR/IABBAEEBEKUBQaR/Rg0BIAAoAhAFIAQLQYN/Rw0BIAAoAigNASAAQQEQiAFBpH9HDQELIABBA0ECIAMgBhDWAUUNCQwMC0GFASECIAAoAgBBhQEQFxoMAQsCQCAAKAIgIgJBzQBHDQAgACgCQCgCXA0AIABBo4ABQQAQEwwKC0F/IQEgACgCACACEBchAiAAEA8NCgsgAEG2ARAMIAAgAhA4IAAgACgCQC8BvAEQFgwGCyAAIAdBDGpBABClAUE9RgRAIABBAEEAQQAgBygCDEECcUEBENMBQQBODQYMCAsgACgCEEH7AEYEQEEAIQMjAEEQayIFJAAgBUEANgIMAkACQCAAEA8NACAAQQsQDAJAA0AgACgCECIBQf0ARg0BAkACQCABQaV/RgRAQX8hCCAAEA8NBiAAEGANBiA
 
AQQcQDCAAQdMAEAwgAEEGEGsgAEEOEAwgAEEOEAwMAQsgACgCFCEEIAAoAhghAiAAIAVBDGpBAUEBQQAQ0gMiBkEASA0BAkACQCAGQQFGBEAgAEG2ARAMIAAgBSgCDCIIEBogACAAKAJALwG8ARAWDAELIAAoAhBBKEYEQCAAAn8gBkF+cSIBQQJGBEBBACEIIAZBAmoMAQsgBkEDa0EAIAZBBGtBA0kbIQhBBgsgCCACIAQQ1gENBAJAIAUoAgwiCEUEQCAAQdUAEAwMAQsgAEHUABAMIAAgCBAaCyAAIAZBAWtBBHJBBCABQQJGG0H/AXEQawwCCyAAQToQLg0DIAAQYA0DAkAgBSgCDCIIQcQARwRAIAgNASAAEM0DIABB0QAQDCAAQQ4QDEEAIQgMAwsgAwRAIABBwYYBQQAQE0HEACEIDAgLIABBzwAQDEEBIQNBxAAhCAwCCyAAIAgQqQELIABBzAAQDCAAIAgQGgsgACgCACAIEBELIAVBADYCDCAAKAIQQSxHDQIgABAPRQ0BCwsgBSgCDCEIDAELQQAhCCAAQf0AEC5FDQELIAAoAgAgCBARQX8hCAsgBUEQaiQAIAhFDQYMCAtBACECQX8hBAJAIAAQDw0AAkADQAJAIAJBH0sNACAAKAIQIgFB3QBGIAFBpX9GciABQSxGcg0AIAAQYA0DIAJBAWohAiAAKAIQIgFB3QBGDQEgAUEsRw0CIAAQD0UNAQwDCwsgAEEmEAwgACACQf//A3EQFkEAIQMDQCAAKAIQIQECQAJAAkACQCACQf////8HRwRAIAFBLEYNAyABQaV/Rg0CIAFB3QBGDQEgABBgDQcgAEHMABAMIAAgAhCTARA4IAJBAWohAkEAIQMgACgCEEEsRw0FDAQLIAFB3QBHDQELIANFDQQgAEEREAwgAEEBEAwgACACEDggAEHDABAMIABBMBAaDAQLIABBARAMIAAgAhA4A0ACQAJAAkAgACgC
 
ECICQaV/RwRAQY8BIQEgAkEsRw0BQQEhAwwCCyAAEA8NCEHSACEBIAAQYEUNAQwICyACQd0ARg0BIAAQYA0HIABB0QAQDEEAIQMLIAAgARAMIAAoAhBBLEcNACAAEA9FDQEMBgsLIAMEQCAAQRIQDCAAQcMAEAwgAEEwEBoMBAsgAEEOEAwMAwtBASEDIAJBAWohAgsgABAPRQ0ACwwBCyAAQd0AEC4hBAsgBEUNBQwHC0F/IQEgABAPDQcgACgCEEEuRgRAIAAQDw0IIABB1gAQUUUEQCAAQeSAAUEAEBMMCQsgACgCQCgCUEUEQCAAQfWAAUEAEBMMCQsgABAPDQggAEG2ARAMIABB8QAQGgwECyAAQQAQzwMNB0EBIQkgACgCEEEoRgRAQQEhAgwGCyAAQREQDCAAQSEQDAwDC0F/IQEgABAPDQYCQCAAKAIQIgJB2wBGIAJBLkZyRQRAIAJBKEcNAUECIQIgACgCQCgCVA0GIABBnoEBQQAQEwwICyAAKAJAKAJYRQRAIABB04EBQQAQEwwICyAAQbYBEAwgAEEIEBpBACECIABBABAWIABBtgEQDCAAQfMAEBogAEEAEBYgAEE0EAwMBQsgAEH1gQFBABATDAYLQX8hASAAEA8NBSAAKAIQQS5GBEAgABAPDQYgAEH7ABBRRQRAIABBjIIBQQAQEwwHCyAAKAJERQRAIABBmoIBQQAQEwwHCyAAEA8NBiAAQQwQDCAAQQYQawwDCyAAQSgQLg0FIARFBEAgAEHAggFBABATDAYLIAAQYA0FIABBKRAuDQUgAEE1EAxBACECQQEhCQwDC0F/IQFBACECIABBAEEAEOsEDQQMAgtBACECIABBABAWDAELQQAhAgsgB0F/NgIMA0AgACgCQCEDAkACQAJAAkACQAJAAkACfwJAIAAoAhAiAUGnf0ciBkUEQCAAEA8NCyAAKAIQIQEgCQRAQQEhCiABQShGDQILIAFB2wBHD
 
QUMCQsgAiABQYJ/R3JFBEBBACEKIAcoAgxBAEgEQEEDIQRBAAwDCyAAQYGDAUEAEBMMCwsgCUUNA0EAIQogAUEoRw0DCyAAEA8NCUEAIQQgAgRAQQAhBSACIQQMAgtBAQshBkEBIQFBACEFAkACQAJAAkACQCADEKQBIgJBxwBrDgQBBAQDAAsgAkG8AUcEQCACQbYBRg0CIAJBwQBHDQQgAygCgAIgAygCmAJqQcIAOgAAQQIhAUHBACEFDAQLIAMoAoACIAMoApgCakG9AToAAEECIQFBvAEhBQwDCyADKAKAAiADKAKYAmpByAA6AABBAiEBQccAIQUMAgsgAygCgAIgAygCmAJqIggoAAEhAiAKRQRAQTEhBSAGIAJBOkZxDQMLAn8gAyECIAgvAAUhBkEAIQUDQAJAIAJFDQAgAigCzAEgBkEDdGpBBGohBgNAIAYoAgAiBkEATgRAIAIoAnQgBkEEdGoiBigCAEHUAEYEQEEBIQUMAwUgBkEIaiEGDAILAAsLIAIoAgwhBiACKAIEIQIMAQsLIAVFCwRAQbYBIQUMAgtBugEhBSAIQboBOgAADAELQccAIQUgAygCgAIgAygCmAJqQccAOgAAQQIhAQsgCkUNACAAIAdBDGogARDvAgsCQCAEQQNGBEAgAEEBIAdBCGoQ6wQNCQwBCwJAIARBAkciBkUEQCAAQbYBEAwgAEHyABAaIABBABAWIABBNBAMIABBtgEQDCAAQfEAEBogAEEAEBYMAQsgBEEBRw0AIABBERAMC0EAIQECQAJAA0AgACgCECICQSlGDQIgAUH//wNGBEAgB0H//wM2AgggAEG1gwFBABATDAwLIAJBpX9GDQEgABBgRQRAIAFBAWohASAAKAIQQSlGDQMgAEEsEC5FDQELCyAHIAE2AggMCgsgByABNgIIIABBJhAMIAAgAUH//wNxEBYgAEEBEAwgACABEDgDQAJAAkAgACgCECIBQaV/Rw
 
RAIAFBKUYNAiAAEGANDSAAQdEAEAxBjwEhAgwBC0F/IQEgABAPDQ1B0gAhAiAAEGANDQsgACACEAwgACgCEEEpRg0AQX8hASAAQSwQLkUNAQwMCwsgABAPDQkgAEEOEAwCQAJAAkACQCAFQboBaw4DAQMBAAsgBUExRg0BIAVBxwBGDQAgBUHBAEcNAgsgAEEYEAwgAEEnEAwgACAEQQFGEBZBACECDAoLIABBMhAMDAcLIAZFBEAgAEEnEAwgAEEBEBYMBgsgBEEBRgRAIABBGBAMIABBJxAMIABBARAWQQAhAgwJCyAAQQYQDCAAQRsQDCAAQScQDEEAIQIgAEEAEBYMCAsgByABNgIIIAAQDw0ICwJAAkACQAJAIAVBugFrDgMBAwEACyAFQTFGDQEgBUHHAEYNACAFQcEARw0CCyAAQSQQDCAAIAcvAQgQFkEAIQIMCAsgAEExEAwgACAHLwEIEBYMBQsCQAJAAkAgBEEBaw4CAQACCyAAQSEQDCAAIAcvAQgQFgwFCyAAQSEQDCAAIAcvAQgQFkEAIQIMBwsgAEEiEAwgACAHLwEIEBZBACECDAYLIAFB2wBGDQQgAUEuRw0BIAAQDw0GIAAoAhAhAQsCQCABQal/RgRAIAMQpAFBNEYEQCAAQc2DAUEAEBMMCAsgBkUEQCAAIAdBDGpBARDvAgsgAEG8ARAMIAAgACgCIBAaIAAgACgCQC8BvAEQFgwBCyABENUBRQRAIABB94MBQQAQEwwHCyADEKQBQTRGBEAgACAAKAIAIAAoAiAQXiILQQEQ0QEhASAAKAIAIAsQCiABDQcgAEHKABAMDAELIAZFBEAgACAHQQxqQQEQ7wILIABBwQAQDCAAIAAoAiAQGgtBfyEBIAAQD0UNBAwGC0EAIQEgBygCDCICQQBIDQUgACACEB0MBQsgAEEREAwgAEG7ARAMIABBCBAaQQAhAiAAQQAQFiAAEPMEDAILIAAgAy8BvAE
 
QFiADQQE2AkRBACECDAELIAMQpAEhBCAGRQRAIAAgB0EMakEBEO8CC0F/IQEgABAPDQIgABCXAQ0CIABB3QAQLg0CIARBNEYEQCAAQcoAEAwFIABBxwAQDAsMAAsAC0F/IQELIAdBEGokACABC2gAAkAgAUF/Sg0AQX8hASAAKAIAIABBpAJqQRQgAEGoAmogACgCrAJBAWoQfQ0AIAAgACgCrAIiAUEBajYCrAIgACgCpAIgAUEUbGoiAEEANgIQIABCfzcCCCAAQoCAgIBwNwIACyABC4IBAQF/AkACQCAAKAIQQYN/Rw0AIAAoAigNACAAKAIgIQIgACgCQC0AbkEBcUUNASACQc0ARg0AIAJBOkcNAQsgAEHE/gBBABATQQAPCyAAKAIAIAIQFyECAkACQCABBEAgACACEO4EDQELIAAQD0UNAQsgACgCACACEBFBACECCyACC+QEAQN/AkACQAJAAkACfwJAAkACQAJAIAJFDQACQCAAQcEAEFFFBEAgAEHCABBRRQ0BCyAAKAIAIAAoAiAQFyEFIAAQDw0CAkACQCAAKAIQIgZBKGsOBQYBAQEGAAsgBkH9AEYgBkE6RnINBQsgACgCACAFEBFBA0ECIAVBwgBGGyEGDAELIAAoAhBBKkYEQCAAEA8NCEEEIQYMAQsgAEGFARBRRQ0AIABBARCIAUEKRg0AIAAoAgAgACgCIBAXIQUgABAPDQECQAJAIAAoAhAiBkEoaw4FBQEBAQUACyAGQf0ARiAGQTpGcg0ECyAAKAIAIAUQEUEFIQYgACgCEEEqRw0AIAAQDw0HQQYhBgsgACgCECIFENUBBEBBACEEIAVBg39GBEAgACgCKEUhBAsgACgCACAAKAIgEBchBSAAEA8NASAEQQBHDAQLAkACQAJAIAVBgAFqDgIBAAILIAAoAgAgACkDIBA5IgVFDQggABAPDQIMAwsgACgCACAAKQMgEDkiBUUNByAAEA9FDQIM
 
AQsgBUHbAEcEQCAERSAFQal/R3INBiAAKAIAIAAoAiAQFyEFIAAQDw0BQRAhBAwFCyAAEA8NBiAAEJcBDQYgAEHdABAuDQZBACEEQQAhBQwECyAAKAIAIAUQEQwFC0EAIQQMAgtBACEGQQELIQdBACEEIAYgA0UgB0Vycg0AIAAoAhAiAEE6RyACRSAAQShHcnEhBgwDCyAGQQJJDQIgACgCEEEoRg0CIAAoAgAgBRARCyAAQeOKAUEAEBMLIAFBADYCAEF/DwsgASAFNgIAIAQgBnILUwEBf0F/IQIgACgCACAAKAJAIgBBtAJqQQggAEG8AmogACgCuAJBAWoQfUUEQCAAIAAoArgCIgJBAWo2ArgCIAAoArQCIAJBA3RqIAE3AwALIAILkgEBAn8gASgCiAEiBEGAgAROBEAgAEGlyABBABBBQX8PC0F/IQMgACABQYABakEQIAFBhAFqIARBAWoQfQR/QX8FIAEgASgCiAEiA0EBajYCiAEgASgCgAEgA0EEdGoiA0IANwIAIANCADcCCCADIAAgAhAXNgIAIAMgAygCDEGA////B3I2AgwgASgCiAFBAWsLC5ABAQJ/AkADQCACQQBOBEACQCAAKAJ0IAJBBHRqIgQoAgAgAUcNACAEKAIMIgVBAnENAyADRQ0AIAVB+ABxQRhGDQMLIAQoAgghAgwBCwsCQCAAKAIgRQ0AIAAoAiQNAEGAgICABCECAkAgACABELICIgAEQCAALQAEQQJxDQELQQAhAAsgAA0BC0F/IQILIAILogEBA38jAEEQayICJAACf0EAIABBJxBRRQ0AGiAAIAIQ+QJBfwJ/QX8gABAPDQAaAkAgACgCECIDQS9qIgRBB01BAEEBIAR0QcEBcRsgA0H7AEZyRQRAQQEgA0HbAEYNAhogA0GDf0cNAUEAIAAoAigNAhoLIAFBAnZBAXEgACgCBCAAKAIURnIMAQtBAAsgACACEPgCGwshACACQ
 
RBqJAAgAAuCAgEFfwJAAkACQCACQc0ARiACQTpGckUEQCAAKAIAIQUgAkEWRw0BIAAoAkAhBgwCCyAAQe+PAUEAEBMMAgsgACgCQCIGKALAAiIHQQAgB0EAShshBwNAIAQgB0YNASAEQQN0IQggBEEBaiEEIAggBigCyAJqKAIEIAJHDQALIABBhpABQQAQEwwBCyAFIAYgA0H9AEZBACABKAI4IAJBAUEBQQAQywMiAEEASA0AIAUgAUE0akEMIAFBPGogASgCOEEBahB9DQAgASABKAI4IgJBAWo2AjggASgCNCEBIAUgAxAXIQMgASACQQxsaiIBIAA2AgAgASADNgIEQQAPC0F/C6wEAQd/IwBBEGsiBCQAIAAoAkAhByAAKAIAIQYgAkGxf0chCUG7f0G7f0G3fyACQVFGIggbIAJBSUYbQf8BcSEKAn8CQANAAkACQCAAKAIQIgVBg39GBEAgACgCKARAIAAQ7wEMBQsgBiAAKAIgEBciBUEnRyAIRUEAIAJBSUcbckUEQCAAQfqOAUEAEBMMAwsgABAPDQIgACAFIAIQtAINAiADBEAgACAAKAJAKAKUAyAFIAVBABCJAkUNAwsCQCAAKAIQQT1GBEAgABAPDQQgCUUEQCAAQbYBEAwgACAFEBogACAHLwG8ARAWIAAgBEEMaiAEQQhqIAQgBEEEakEAQQBBPRC6AUEASA0FIAAgARC5AQRAIAYgBCgCABARDAYLIAAgBRCpASAAIAQoAgwgBCgCCCAEKAIAIAQoAgRBAEEAENIBDAILIAAgARC5AQ0EIAAgBRCpASAAIAoQDCAAIAUQGiAAIAcvAbwBEBYMAQsgCEUEQCACQUlHDQEgAEGijwFBABATDAQLIABBBhAMIABBuwEQDCAAIAUQGiAAIAcvAbwBEBYLIAYgBRARDAELAkAgBUEgckH7AEcNACAAIARBDGpBABClAUE9Rw0AIABBBhAMIAAgAkEAQQEgBC
 
gCDEECcUEBENMBQQBODQEMBAsgAEHJjwFBABATDAMLQQAgACgCEEEsRw0DGiAAEA9FDQEMAgsLIAYgBRARC0F/CyEAIARBEGokACAAC/QCAgR/AX4jAEEgayICJAACfwJAIAAoAgAgAkEIakEgEEINAAJAA0ACQCABIgQgACgCPE8NACAEQQFqIQFB4AAhAwJAAkACQAJAAkAgBC0AACIFQdwAaw4FAgMDAwEACyAFQSRHDQJBJCEDIAEtAABB+wBHDQMgBEECaiEBCyAAQYJ/NgIQIAAgAzYCKCACQQhqEDchBiAAIAE2AjggACAGNwMgQQAMBwsgAkEIakHcABA7DQUgASAAKAI8Tw0CIARBAmohASAELQABIQULAkACQAJAIAUiA0EKaw4EAQICAAILIAFBAWogASABLQAAQQpGGyEBCyAAIAAoAghBAWo2AghBCiEDDAELIANBGHRBGHVBf0oNACABQQFrQQYgAkEEahBfIgNB///DAEsNAyACKAIEIQELIAJBCGogAxC+AUUNAQwDCwsgAEGb1gBBABATDAELIABBhNYAQQAQEwsgAkEIahBEQX8LIQEgAkEgaiQAIAELdgECfyABIAEtAABBfHFBAXIiBDoAACABIAItAAxBAnRBBHEgBEF5cXIiBDoAACABIARBdXEgAi0ADEECdEEIcXIiBDoAACACLQAMIQUgASADOwECIAEgBEENcSAFQQF0QfABcXI6AAAgASAAIAIoAgAQFzYCBAshACAAQpADgVCtQu4CQu0CIABCA4NQGyAAQuQAgVCtfXwLYAECfyMAQTBrIgEkAEGAgICAeCECIAFB/////wcgAELoB3+nIABC/////78+VRtBgICAgHggAEKZ+P//v0FZGzYCLCABQSxqIAEQBxogASgCJCECIAFBMGokACACQURtC4IEAwh+AX8BfCMAQRBrIg0kAAJ/QX8gACANQQhqIAEQuAINABoCfCANKwMIIg6
 
9Qv///////////wCDQoGAgICAgID4/wBaBEBEAAAAAAAAAAAgBA0BGkEADAILAn4gDplEAAAAAAAA4ENjBEAgDrAMAQtCgICAgICAgICAfwshBUQAAAAAAAAAACADRQ0AGkEAIAUQ3ANrIgCsQuDUA34gBXwhBSAAtwshDiAFQoC4mSkQ/QQiASABQugHfyIGQugHfn0hCCABQoDd2wF/IQkgAULg1AN/QjyBIQogBkI8gSELIA0gBSABfUKAuJkpfyIFNwMAQgAhASAFQgR8QgcQ/QQhDCANKQMAIgdCkM4AfkLJ9t4BEPsCQrIPfCEFA0AgByAFEPwEfSIGQn9XBEAgBUIBfSEFDAELIAUQ2wMgBlcEQCAFQgF8IQUMAQsLIA0gBjcDACAFIQcgDSkDACEGA0ACQCABQgtRDQAgAadBAnRBwPcAajQCACEFIAFCAVEEQCAHENsDIAV8Qu0CfSEFCyAFIAZVDQAgAUIBfCEBIAYgBX0hBgwBCwsgAiAOOQNAIAIgDLk5AzggAiAIuTkDMCACIAu5OQMoIAIgCrk5AyAgAiAJuTkDGCACIAG5OQMIIAIgB7k5AwAgAiAGQgF8uTkDEEEBCyEAIA1BEGokACAACw0AIAAgASACQQEQgQULIQAgASgCBEEFRwRAIAFBBTYCBCAAKAIQIAFBCGoQiQMLC1kCAn8BfiMAQRBrIgMkAEF/IQQCQCAAIAFBABB4IgUQCw0AIAAgA0EMaiAFEMMBDQAgACABQQAgAygCDCACaiIArRCWAkEASA0AIABFIQQLIANBEGokACAECxsAIAEoAiAEQCAAIAFBKGoQiQMgAUEANgIgCwugAQICfwF8AkACfAJAAkACQAJAAkAgABBUIgJBCGoOCgIBBgYGBgYCAwAECyAApyEBDAULIACnQQAQ5gUhAQwECyAAp0HbGGwhAQwDCyAAp0HbGGy3DAELIAJBB0cNAUQAAAAAAAD4fyAAEEkiAyAD
 
vUL///////////8Ag0KAgICAgICA+P8AVhsLvSIAQiCIIACFp0HbGGwhAQsgASACcwsHACAAQQFxCxIAIABBCHQgAEEIdnJB//8DcQsuAQF/IAAgACABIAAgAhDHASICIAFBABASIgEQtwEhAyAAIAEQCiAAIAIQESADC1QBAX8gAEEgEC0iAkUEQEEADwsgAkEBNgIAIAJCgICAgMAAQoCAgIAwIAEbNwMYIAIgAkEYajYCECACIAItAAVBAXI6AAUgACgCECACQQMQvAEgAgsKACAAKAIEIABGCzIAAkAgACACIAFBAEEAECIiAhALDQAgAhAgDQAgACACEAogABAoQoCAgIDgACECCyACCwsAIAAgASACEMMBCwwAIABB5MkAQQAQFAuDBAEGfyMAQRBrIggkACABQQA2AgAgAkEANgIAQQIhBiAFKAIIIglBACAJQQBKGyEJA0ACQCAHIAlGBEBBfyEHDAELIAMgBSgCACAHQQN0aiILKAIARgRAIAsoAgQgBEYNAQsgB0EBaiEHDAELCwJAIAdBf0oNAEF/IQYgACIHIAVBCCAFQQRqIAUoAghBAWoQfQR/QX8FIAUgBSgCCCIAQQFqNgIIIAUoAgAgAEEDdGoiACADNgIAIAAgByAEEBc2AgRBAAtBAEgNAAJAIAMgBBC/BSIGBEAgBigCCEUNASAGKAIMIgBB/QBGDQEgByABIAIgAygCECAGKAIAQQN0aigCBCAAIAUQ6wMhBgwCCyAEQRZHBEADQCADKAIsIApKBEAgBiEAQQAhCQJAAkACQCAHIAhBDGogCEEIaiADKAIQIAMoAiggCkECdGooAgBBA3RqKAIEIAQgBRDrAyIGQQFqDgUCAAEBAgELIAIoAgAiBgRAIAEoAgAgCCgCDEYEQCAIKAIIKAIMIAYoAgxGDQILIAFBADYCACACQQA2AgBBAyEGDAILIAEgCCgCDDYCACACIAgoAgg2AgALQQEhCSAAI
 
QYLIApBAWohCiAJDQEMBAsLQQAhBiACKAIADQILQQEhBgwBCyABIAM2AgAgAiAGNgIAQQAhBgsgCEEQaiQAIAYLcwECfyMAQZABayIEJABB4DwhBQJAAkACQAJAIAFBAWoOBQMCAgABAgtBij0hBQwBC0HJPSEFCyAAIARB0ABqIAMQhgEhASAEIAAgBEEQaiACKAIEEIYBNgIEIAQgATYCACAAIAUgBBDQAgsgBEGQAWokAAtoAQJ/IwBBEGsiBSQAIAVBADYCCCAFQgA3AwAgACABIAIgAyAEIAUQ6wMhAQNAIAYgBSgCCE5FBEAgACAFKAIAIAZBA3RqKAIEEBEgBkEBaiEGDAELCyAAIAUoAgAQGCAFQRBqJAAgAQseACABKAIAQQRHBEAgACABQQhqEIkDIAFBBDYCAAsLpQEBBX8jAEEQayIDJABBfyECAkAgACgCFA0AIAAoAgAgACgCBCABQQF0QRBqIANBDGoQswEiBEUEQCAAEIgDDAELIARBEGohBSAAKAIIIQIgAygCDCEGA0AgAkEBSEUEQCAFIAJBAWsiAkEBdGogAiAFai0AADsBAAwBCwsgAEEBNgIQIAAgBDYCBCAAIAZBAXYgAWo2AgxBACECCyADQRBqJAAgAgtUAQJ/IAAgASkDGCACECEgACABKQMAIAIQIQJAIAEoAjwiBEUNACABKAIgIQMDQCADIARPDQEgACADKQMAIAIQISADQQhqIQMgASgCPCEEDAALAAsLGgEBfyABpygCICIDBEAgACADKQMAIAIQIQsLQgEBfyABIAEoAgBBAWsiAjYCAAJAIAJFBEAgASgCBEUNASABQRBqEEYgACABEB8LDwtBlx9BoQ1BxuUCQaEfEAAAC6ACAQR/IAFBKGoQbiABIAKnKAIgIgYtABA2AjggASAGKAIUNgIwIAEgACAGLwEoIAQQSiIIIAYvASpqIAYvAS5qQQEQSkEDdBAtIgA2AiAgAEUEQE
 
F/DwsgASACEA03AxggAxANIQIgASAINgI0IAEgBDYCCCABIAI3AwAgASABKAIgIgcgCEEDdGoiADYCJCABIAAgBi8BKkEDdGo2AjxBACEAIARBACAEQQBKGyEJA0AgACAJRkUEQCAFIABBA3QiB2opAwAQDSECIAcgASgCICIHaiACNwMAIABBAWohAAwBCwsgBCAIIAYvASpqIgAgACAESBshAAN/IAAgBEYEf0EABSAHIARBA3RqQoCAgIAwNwMAIARBAWohBAwBCwsLfAEEfyABpyIGLwEGIQcgAEEYEC0iBUUEQCAAIAIQCkF/DwsgAqciCCgCICEAIAUgBCAHQZkeajEAAIY+AhQgBSADpyIHNgIQIAUgCDYCDCAFIAY2AgggBSAAQQxqEEwgBiAEPgIoIAYgBTYCICAGIAAoAgggB2o2AiRBAAvtAQEEfwJ+IAAoAhAhBQJAIAAgASADEGwiARALRQRAIAJCgICAgAhaBEAgAEGg0AEQaQwCCyAAQRwQLSIERQRAQQAhBAwCCyAEIAKnIgY2AgACQAJAIANBFEcNACAFKAK4ASIHRQ0AIAQgBSgCxAEgBkEBEEogBxECACIFNgIIIAVFDQMgBUEAIAYQSxoMAQsgBCAAIAZBARBKEGoiBjYCCCAGRQ0CCyAEQQxqEG4gBEEuNgIYIARBADYCFCAEIANBFEY6AAUgBEEAOgAEIAEgBBCKAQsgAQwBCyAAIAEQCiAAIAQQGEKAgICA4AALCzsBAX8gACgCECIDIAEgAhDUAiIBRQRAIAAQxgFCgICAgOAADwsgAygCOCABQQJ0ajUCAEKAgICAgH+ECxMAIABCgICAgHCDQoCAgICAf1EL7gEBAX8gAEGYAxBqIgZFBEBBAA8LIAYgADYCACAGQRBqEG4gBkF/NgIIIAYgATYCBCABBEAgBkEYaiABQRBqEEwgBiABLQBuOgBuIAYgASgCvAE2AgwLIAYgAzYCLCAGIAI
 
2AiAgACAGQYACahCRAiAGQQA2AnAgBkF/NgKYAiAGQZABakH/AUEoEEsaIAZChICAgBA3AsQBIAYgBkHQAWo2AswBIAZCfzcC0AEgBkF/NgLwASAGQoCAgIBwNwK8ASAAIAQQxwEhASAGIAU2AvACIAYgATYC7AIgACAGQfQCahCRAiAGIAU2ApwCIAYLOwAgAJ1EAAAAAAAAAACgRAAAAAAAAPh/IABEAADcwgiyPkNlG0QAAAAAAAD4fyAARAAA3MIIsj7DZhsLFQEBfiAAIAEQjQUhAiAAIAEQCiACC+EKAgp+A38jAEEQayIOJAAgDiACNwMIAkACQAJAAkACQAJAAkACQAJAAkAgAhBUQQdqDg8DAgICAgIABAQEAgICAgECCwJAAkACQAJAAkACQCACpyIQLwEGQQRrDgMBAAQFC0KAgICAMCEDIAAgAhA+IgIQCw0BIA4gACACEPoDIgI3AwggAhALDQEgASgCKCACEI0BIQ8MDQsgDiAAIAIQnQEiAjcDCEKAgICAMCEDIAIQC0UNAQtCgICAgDAhCEKAgICAMCEEQoCAgIAwIQZCgICAgDAhCQwKCyABKAIoIAIQjQEhDwwKCyABKAIoIBApAyAQjAEhDyAAIAIQCgwJC0KAgICAMCEGIAAgASkDCEEBIA5BCGoQ/QMiBRALDQYgACAFECwEQCAAQfLNAEEAEBQMBwsgACADEA0iCyABKQMYEA0QxgIiCRALBEBCgICAgDAhA0KAgICAMCEIDAYLAkAgASkDGBD2AUUEQAJAIABBtBAgCRANIgVBvhUQvQEiAxALBEBCgICAgDAhCAwBCyAAQYzXABBxIggQC0UNAgtCgICAgDAhBCAFIQkMCQsgASkDIBANIQMgASkDIBANIQgLIAAgACABKQMIQQEgDkEIakEAELMFEI0CDQUgACACEL8BIhBBAEgNBSAQBEAgACAOIAIQQA0GIAEoAihB2wAQOxogDikDACIM
 
QgAgDEIAVRshDQNAIAQgDVIEQCAEUEUEQCABKAIoQSwQOxoLIAEoAiggAxCMARogACACIAQQYiIHEAsNCCAAIAQiBUKAgICACFoEfiAFuRAVBSAFCxA+IgoQCwRAQoCAgIAwIQQgCiEGDAsLIAAgASACIAcgChD8AyEHIAAgChAKIAcQCw0IIAVCAXwhBCAAIAFCgICAgCAgByAHEBAbIAkQ+wNFDQEMCAsLQoCAgIAwIQRB3QAhECAMQgFTDQUgASkDGBD2AQ0FIAEoAihBChA7GiABKAIoIAsQjAEaDAULAn4gASkDECIFEBBFBEAgBRANDAELIABCgICAgDBBASAOQQhqQQAQsgULIgQQCw0HIAAgDiAEEEANByABKAIoQfsAEDsaIA4pAwAiBUIAIAVCAFUbIQoDQCAHIApSBEAgACAGEAogACAEIAcQYiIGEAsNCSAAIAIgBhANIgYQngEiBRALDQkgACABIAIgBSAGEPwDIgUQCw0JIAUQEEUEQCAPBEAgASgCKEEsEDsaCyAAIAYQ+gMiBhALBEAgACAFEAoMCwsgASgCKCADEIwBGiABKAIoIAYQjAEaIAEoAihBOhA7GiABKAIoIAgQjAEaQQEhDyAAIAEgBSAJEPsDDQoLIAdCAXwhBwwBCwtB/QAhECAPRQ0EIAEoAhgoAgRB/////wdxRQ0EIAEoAihBChA7GiABKAIoIAsQjAEaDAQLIAIQSb1CgICAgICAgPj/AINCgICAgICAgPj/AFINAkKAgICAICECIA5CgICAgCA3AwgMAgsgACACEAoMBgsgDiAAIAIQ+gMiAjcDCEKAgICAMCEDQoCAgIAwIQhCgICAgDAhBEKAgICAMCEGQoCAgIAwIQkgAhALDQQLIAEoAiggAhCNASEPDAQLIAEoAiggEBA7GkEAIQ8gACAAIAEpAwhBAEEAQQAQsQUQjQINAiAAIAIQCiAAIAQQCiAAIAMQCiAAIAgQCiAAI
 
AkQCiAAIAYQCgwDC0KAgICAMCEEDAELQoCAgIAwIQNCgICAgDAhCEKAgICAMCEEQoCAgIAwIQkLIAAgAhAKIAAgBBAKIAAgAxAKIAAgCBAKIAAgCRAKIAAgBhAKQX8hDwsgDkEQaiQAIA8LigIBAX8jAEEgayIFJAAgBSAENwMYAkACQAJAIAMQIARAIAAgA0GLASADQQAQEiIEEAsEQCADIQQMAwsgACAEEDoEQCAAIAQgA0EBIAVBGGoQNSEEIAAgAxAKIAQQC0UNAgwDCyAAIAQQCgsgAyEECwJAIAEpAwAiAxAQBEAgBCEDDAELIAUgBDcDCCAFIAUpAxg3AwAgACADIAJBAiAFECIhAyAAIAQQCiADIQQgAxALDQELAkAgAxBUQQdqIgFBDksNAEEBIAF0QYHHAXENAiABQQZHDQAgACADEDpFDQILIAAgAxAKQoCAgIAwIQMMAQsgACAEEApCgICAgOAAIQMLIAVBIGokACADC74CAgJ/BH4jAEEgayIEJABCgICAgOAAIQgCQCAAIARBGGogACABECkiCRBADQACQCAEKQMYIgdCAVMNACAEQgA3AxAgAkECTgRAIAAgBEEQaiADKQMIQgAgByAHEH4NAgsCQAJAIAkgBEEMaiAEQQhqEI4CRQRAIAQpAxAhAQwBCyAEKQMQIgYgBDUCCCIBIAEgBlMbIQEgBCgCDCECA0AgASAGUgRAIAanIQUgBkIBfCEGIAAgAykDABANIAIgBUEDdGopAwAQDUECEN4BRQ0BDAMLCyAEIAE3AxALIAEgByABIAdVGyEGA0AgASAGUQ0CIAAgCSABEGIiBxALDQMgAUIBfCEBIAAgAykDABANIAdBAhDeAUUNAAsLQoGAgIAQIQgMAQtCgICAgBAhCAsgACAJEAogBEEgaiQAIAgL/wUCAn8HfiMAQeAAayIEJABCgICAgDAhByAEQoCAgIAwNwMwIARCgICAgDA3AyggBEKAgI
 
CAMDcDICAEQoCAgIAwNwMYIAQgBEHIAGo2AkAgBCAAQS8QMTcDOCAAIARByABqQQAQQhogBCAAEE4iBjcDIEKAgICA4AAhCQJAAkAgBhALDQACQCAAIAIQOgRAIAQgAjcDGAwBCyAAIAIQvwEiBUEASA0BIAVFDQAgBCAAEE4iBjcDKCAGEAsNASAAIARBCGogAhBADQEgBCkDCCIGQgAgBkIAVRshCwNAIAggC1ENASAEIAAgAiAIEGIiBjcDECAGEAsNAgJAAkACQCAGECAEQCAGpy8BBkH+/wNxQQRHDQIgBCAAIAYQPiIGNwMQIAYQC0UNAQwGCyAGEI4BBEAgBCAAIAYQPiIGNwMQIAYQC0UNAQwGCyAGEJsBRQ0BCyAAIAQpAyhBASAEQRBqEP0DIgwQCwRAIAAgBhAKDAULIAAgDBAsDQAgACAEKQMoIAogBhCPARogCkIBfCEKDAELIAAgBhAKCyAIQgF8IQgMAAsACwJAIAMQDSIGECBFDQACQAJAAkAgBqcvAQZBBGsOAgABAgsgACAGEJ0BIQYMAQsgACAGED4hBgsgBhALRQ0AIAAgBhAKDAELIAQCfiAGEI4BBEAgACAEQQRqIAZBCkEAEGMNAiAAQdsaIAQoAgQQ/gEMAQsgBhCbAQRAIAAgBqciBUEAIAUoAgRB/////wdxQQoQsAEQmgEMAQsgBCkDOBANCyICNwMwIAAgBhAKIAIQCw0AIAAQPSIHEAsNACAAIAdBLyABEA0iAUEHEBlBAEgNACAAIARBGGogByABEA0gBCkDOCICEPwDIgEQCw0AIAEQEARAQoCAgIAwIQkMAQsgACAEQRhqIAEgAhD7Aw0AIAQoAkAQNyEJDAELIAQoAkAQRAsgACAHEAogACAEKQM4EAogACAEKQMwEAogACAEKQMoEAogACAEKQMgEAogBEHgAGokACAJC3sCAX8BfiMAQdAAayIEJAAgACAEIAEgAiADELQFIAR
 
BADYCTEKAgICAMCEFAkACQCAEEK0BDQAgBBCBBCIFEAsNACAEKAIQQap/Rg0BIARBwBpBABATCyAAIAUQCiAEIARBEGoQjwJCgICAgOAAIQULIARB0ABqJAAgBQtAAQF/IwBBEGsiAiQAAn8gASAAKAIQRwRAIAIgATYCACAAQf3WACACEBNBfwwBCyAAEK0BCyEAIAJBEGokACAAC+EEAgR/An4jAEEQayIDJAAgACgCACECAkACQAJAAkACQAJAAkACQAJAAkAgACgCECIBQYABag4EAgEFAwALIAFBqn9GDQMgAUHbAEcEQCABQfsARw0FQoCAgIAgIQUgABCtAQ0IIAIQPSIFEAsNCAJAIAAoAhAiAUH9AEYNAANAAkAgAUGBf0YEQCACIAApAyAQOSIBDQEMDAsgAUGDf0cNCiAAKAJMRQ0KIAIgACgCIBAXIQELAkACQCAAEK0BDQAgAEE6EIAEDQAgABCBBCIGEAtFDQELIAIgARARDAsLIAIgBSABIAZBBxAZIQQgAiABEBEgBEEASA0KIAAoAhBBLEcNASAAEK0BDQogACgCTEUgACgCECIBQf0AR3INAAsLIABB/QAQgAQNCAwJC0KAgICAICEFIAAQrQENByACEE4iBRALDQcCQCAAKAIQQd0ARg0AQQAhAQNAIAAQgQQiBhALDQkgAiAFIAEgBkEHEJwBQQBIDQkgACgCEEEsRw0BIAAQrQENCSABQQFqIQEgACgCTEUNACAAKAIQQd0ARw0ACwsgAEHdABCABA0HDAgLIAApAyAQDSEFIAAQrQENBgwHCyAAKQMgIQUgABCtAQ0FDAYLIAAoAiBBAWsiAUECSw0BIAFBA3RBgNwBaikDACEFIAAQrQENBAwFCyAAQczWAEEAEBMMAQsgACgCOCEBIAMgACgCGCIENgIEIAMgASAEazYCACAAQeTWACADEBMLQoCAgIAgIQUMAQsgAEG01gBBABATCyACIAUQ
 
CkKAgICA4AAhBQsgA0EQaiQAIAULDgAgACgCECgCjAEpAwgLRwIBfgF/IAEQIEUEQEEADwtBfyEDIAAgAUHEASABQQAQEiICEAsEf0F/BSACEBBFBEAgACACECwPCyAAIAFBABDbAUEARwsLtggCDX8BfiMAQeAAayIGJAACQCACEBBFBEBCgICAgOAAIRAgACAGQdwAaiACEJACIgdFDQEgBigCXCEFA0AgBSAIRwRAAkAgByAIaiwAAEHnAGtBH3ciBEEJS0HLBSAEdkEBcUVyRQRAIARBAnRB1NsBaigCACIEIAlxRQ0BCyAAIAcQNiAAQefOAEEAENACDAQLIAhBAWohCCAEIAlyIQkMAQsLIAAgBxA2C0KAgICA4AAhECAAIAZB3ABqIAEgCUEEdkF/c0EBcRChBCIMRQ0AIAYoAlwhBSMAQeABayIEJAAgBEEAQdwBEEsiA0F/NgI8IANCgYCAgHA3AjQgAyAMNgIgIAMgBSAMajYCHCADIAw2AhggAyAANgJAIAMgCTYCJCADIAlBA3ZBAXE2AjAgAyAJQQF2QQFxNgIsIAMgCUEEdkEBcTYCKCADIABB6wIQ5AIgA0HEAGoiDiAAQesCEOQCIAMgCUH/AXEQDiADQQAQDiADQQAQDiADQQAQHCAJQSBxRQRAIANBCEEGELgBGiADQQQQXSADQQdBdRC4ARoLIAZBEGohCCADQQtBABCqAgJ/AkAgA0EAEOECDQAgA0EMQQAQqgIgA0EKEF0gAygCGC0AAARAIANB8N8BQQAQPAwBCyADKAIMBEAgAxCpAgwBCwJ/IAMoAgRBB2shDyADKAIAQQdqIQlBACEFAkACQANAAkACQAJAAkACQCAKIA9IBH8gCSAKaiIHLQAAIgRBHU8NBSAKIARB4OUBai0AACILaiAPSg0HAkAgBEEPaw4MAAIFBQUFAwQFBQACBQsgBUEBaiEEIAUgDUgEQCAEIQUMBQsgBUH+AUohB
 
yAEIgUhDSAHRQ0EQX8FIA0LDAgLIAVBAEwNBiAFQQFrIQUMAgsgBy8AAUECdCALaiELDAELIAcvAAFBA3QgC2ohCwsgCiALaiEKDAELC0GL5gFBn+YBQfoNQbjmARAAAAtBy+YBQZ/mAUH7DUG45gEQAAALQeXmAUGf5gFBiA5BuOYBEAAACyIEQX9MBEAgA0GR4AFBABA8DAELIAMoAgAgAygCNDoAASADKAIAIAQ6AAIgAygCAEEDaiADKAIEQQdrEFsgAygCSCIEIAMoAjRBAWtLBEAgAyADKAJEIAQQhwEaIAMoAgAiBCAELQAAQYABcjoAAAsgDhCVASAIQQA6AAAgBiADKAIENgJYIAMoAgAMAQsgAxCVASAOEJUBIANB3ABqIQcgCEE/aiEFA0AgBy0AACIERSAFIAhNckUEQCAIIAQ6AAAgCEEBaiEIIAdBAWohBwwBCwsgCEEAOgAAIAZBADYCWEEACyEEIANB4AFqJAAgACAMEDYgBEUEQCAGIAZBEGo2AgAgAEGIzwAgBhDQAgwBCyAAIAQgBigCWBDVAiEQIAAgBBAYCyAGQeAAaiQAIBALDgAgACgCECABIAIQ5gELswECBX8BfiABKQJUIgdCOIZCOIenRQRAIAEgB0KAfoNCAYQ3AlQDQCABKAIUIARMBEBBAA8LAn8gASgCECAEQQN0aiIGKAIAIQJBACEFQQAgACABKAIEEKIEIgNFDQAaIAAgACACEKIEIgIEfyAAIAMgAhC9BSEFIAAgAxA2IAIFIAMLEDYgBQsiA0UEQEF/DwsgBiADNgIEIARBAWohBEF/IQIgACADEIYEQX9KDQALCyACC3ABAX9BxgAhAgJAAkACQAJAAkACQAJAAkACQCABEFRBCGoOEAYBBwcHBwcCCAAFAwcHBwgHC0HHAA8LQcgADwsgAacsAAVBAE4NAQtBxQAPC0EbIQIgACABEDoNAwtByQAPC0HKAA8LQcwAIQILIA
 
IL6wMCA38BfiMAQSBrIgYkACABEA0hAQJAAkACQAJAAkADQAJAAkACQCABpyIHLQAFQQRxRQ0AIAAoAhAoAkQgBy8BBkEYbGooAhQiCEUNACAIKAIYIghFDQAgACABIAIgAyAEIAUgCBEqACEHDAELIAAgBiAHIAIQUyIHQX9KDQELIAAgARAKDAULAkAgBwRAIAYtAABBEHEEQCAAQQAgBikDGCIJpyAJEBAbIAQgAyAFEKIDIQcgACAGKQMQEAogACAGKQMYEAogACABEAoMCAsgACAGKQMIEAogBi0AAEECcQ0BIAAgARAKDAMLIAAgARCZAiIBECZFDQELCyAAIAEQCiAEECBFBEAgACADEAogACAFQc3LABB2IQcMBQsgACAGIASnIgggAhBTIgdBf0wNAyAHRQ0CIAYtAABBEHEEQCAAIAYpAxAQCiAAIAYpAxgQCiAAIAMQCiAAIAVB58sAEHYhBwwFCyAAIAYpAwgQCiAGLQAAQQJxRQ0AIAgvAQZBC0cNAQsgACADEAogACAFIAIQ3wEhBwwDCyAAIAQgAiADQoCAgIAwQoCAgIAwQYDAABB1IQcMAQsgACAIIAIgA0KAgICAMEKAgICAMCAFQYfOAHIQlgQhBwsgACADEAoLIAZBIGokACAHC2MBAn8CQCABQoCAgIBwVA0AIAGnIgMvAQYQ9wFFDQAgAygCIC0AEUEIcUUNACADKAIoIgQEQCAAIAStQoCAgIBwhBAKC0EAIQAgAyACQoCAgIBwWgR/IAIQDacFQQALNgIoCwvGAQEDfyABQRxqIQQgAUEYaiEGA0AgBiAEKAIAIgRHBEACQCAEQQJrLwEAIAJHDQAgBEEIayIFLQAFQQF2QQFxIANHDQAgBSAFKAIAQQFqNgIAIAUPCyAEQQRqIQQMAQsLIABBIBAtIgBFBEBBAA8LIABBATYCACAAIAI7AQYgACAALQAFQfwBcSADQQF0QQJxcjoABSAAQQh
 
qIAYQTCABQRBBFCADG2ooAgAhASAAQoCAgIAwNwMYIAAgASACQQN0ajYCECAAC6YCAgV/AX4jAEEQayIGJAACQCACQv////9vWARAIABBmMgAQQAQFAwBCyAAIAZBDGogAhDaAQ0AIAYoAgwiBEGBgARPBEAgAEGlyABBABBBDAELIABBASAEIARBAUkbQQN0EGoiBUUNAAJAAkAgAqciBy8BBiIDQQhHQQAgA0ECRxsNACAHLQAFQQhxRQ0AIAQgBygCKEcNAEEAIQMDQCADIARGDQIgBSADQQN0IgBqIAcoAiQgAGopAwAQDTcDACADQQFqIQMMAAsAC0EAIQMDQCADIARGDQEgACACIAMQeCIIEAsEQCAAIAUgAxCYA0EAIQMMAwUgBSADQQN0aiAINwMAIANBAWohAwwBCwALAAsgASAENgIAIAUhAwsgBkEQaiQAIAMLhQICAn8CfkKAgICA4AAhCQJAIAAQfw0AAkACQCABQoCAgIBwWgRAIAGnIgYtAAVBEHFFBEAgAEHJzABBABAUQoCAgIDgAA8LIAVBAXIhBSAGLwEGIgdBDUYNAiAAKAIQKAJEIAdBGGxqKAIQIgYNAQsgAEGPxABBABAUQoCAgIDgAA8LIAAgASACIAMgBCAFIAYRFQAPCyAGKAIgLQARQQRxBEAgACABQoCAgIAwIAIgAyAEIAUQ4gEPCyAAIAJBARBsIggQCw0AAkAgACABIAggAiADIAQgBRDiASIBQv////9vWARAIAEQC0UNAQsgACAIEAogAQ8LIAAgARAKIAghCQsgCQvQAQIBfwF+AkACQCAAIAGnIgQvABFBA3ZBBnFBkMcAai8BABChASIFEAsEQAwBCwJAIAAgBSAEIAIgAxChBSIBEAsNACAAIAEgBCgCHCICQS8gAhsgBC8BLBCpAyAELwARIgJBEHEEQCAAIAAoAihBkANBwAIgAkEwcUEwRhtqKQMAEFIiBRALDQEgACAB
 
QTsgBUECEBkaIAEPCyACQQFxRQ0CIAFBARCuAyAAIAFBO0EAQQBBAhCTAxogAQ8LCyAAIAEQCkKAgICA4AAhAQsgAQsNACAAIAEgAhANEM0FCzUBAn8CQCAAQoCAgIBwVA0AIACnIgQvAQZBDEcNACAEKAIkIAFHDQAgBC4BKiACRiEDCyADC/MDAQ1/IwBBIGsiBSQAIANBACADQQBKGyENQQAhAwNAAkAgAyANRgRAQQAhCgwBCyAFQQA2AhggBUIANwMQIAVCADcDCCAFIAEgA0EMbGoiBygCBDYCDCAFIAcoAgg2AhAgAiADaiEGQX8hCiADQQFqIQMgBygCACEHQX8hCwJAIAZB//8DSw0AAkAgBiAAKAJAIgRJBEAgACgCRCIEIAZBGGxqKAIARQ0BDAILQTMgBkEBaiAEQQNsQQJtEEoQSiIIQQN0IQ4gAEHMAGohBCAAQcgAaiEPA0AgDyAEKAIAIglHBEAgACAJKAIUIA4Q5gEiDEUNAyAIIAAoAkAiBCAEIAhIGyEQA0AgBCAQRwRAIAwgBEEDdGpCgICAgCA3AwAgBEEBaiEEDAELCyAJIAw2AhQgCUEEaiEEDAELCyAAIAAoAkQgCEEYbBDmASIERQ0BIAQgACgCQCIJQRhsakEAIAggCWtBGGwQSxogACAINgJAIAAgBDYCRAsgBCAGQRhsaiIEIAY2AgAgBxDxAUUEQCAAKAI4IAdBAnRqKAIAIgYgBigCAEEBajYCAAsgBCAHNgIEIAQgBSgCDDYCCCAEIAUoAhA2AgwgBCAFKAIUNgIQIAQgBSgCGDYCFEEAIQsLIAtBf0oNAQsLIAVBIGokACAKC08BA38gACgC1AEgASgCFCAAKALIARDRAkECdGohAgNAIAIiAygCACIEQShqIQIgASAERw0ACyADIAEoAig2AgAgACAAKALQAUEBazYC0AELFwAgACgCICgCFCAALwEGQZkeai0AAHYLGAAgACAAQ
 
Qh2QQdxIgBxIABBf3MgAXFyC7IIAQx/IwBBEGsiByQAAkACQANAIAEoAhAiAyADKAIYIAJxQX9zIg5BAnRqKAIAIQVBACEEIAMQJyELA0AgBQRAIAcgCyAFQQFrIgVBA3RqIgM2AgwgAygCACEGIAIgAygCBEYEQEEAIQkgBkGAgIAgcUUNBUF/IQkgACABIAdBDGoQ4wENBSABKAIQIQYCQCAEBEAgBhAnIAQgC2tBA3VBACAEG0EDdGoiAiACKAIAQYCAgGBxIAcoAgwoAgBB////H3FyNgIAIAcoAgwhBAwBCyAOQQJ0IAZqIAcoAgwiBCgCAEH///8fcTYCAAtBASEJIAYgBigCJEEBajYCJCAAKAIQIAEoAhQgBUEDdGoiAyAEKAIAQRp2EM8FIAAgBygCDCgCBBARIAcoAgwiAiACKAIAQf///x9xNgIAIAcoAgxBADYCBCADQoCAgIAwNwMAIAYoAiQiAkEISA0FIAIgBigCIEEBdkkNBSAAIQVBACECAkACQAJAIAEoAhAiCC0AEEUEQEECIAgoAiAgCCgCJGsQSiINIAgoAhxLDQEgCCgCGEEBaiEAA0AgACIDQQF2IgAgDU8NAAsCQCAFIAMgDRDkARAtIgBFDQAgA0EBayELIAAgAxC9AiEAIAhBCGoQRiAAIAhBMBAjIgRBCGogBSgCEEHQAGoQTCAEIANBAnQiAGtBACAAEEsaIAhBMGohACAEQTBqIQogASgCFCEGA0AgBCgCICIDIAxLBEAgACgCBCIDBEAgCiADNgIEIAogACgCAEGAgIBgcSIOIAooAgBB////H3FyNgIAIAogDiAEIAAoAgQgC3FBf3NBAnRqIgMoAgBB////H3FyNgIAIAMgAkEBaiIDNgIAIAYgAkEDdGogBiAMQQN0aikDADcDACAKQQhqIQogAyECCyAMQQFqIQwgAEEIaiEADAELCyACIAMgBCgCJGtHDQMgBEEANgIkIAQgDT
 
YCHCAEIAs2AhggBCACNgIgIAEgBDYCECAFIAgQvwIQGCAFIAEoAhQgDUEDdBCaAiIARQ0AIAEgADYCFAsMAwtBisIAQaENQa0jQZnCABAAAAtBrMIAQaENQbEjQZnCABAAAAtBxsIAQaENQdYjQZnCABAAAAsMBQUgBkH///8fcSEFIAMhBAwCCwALC0EBIQkgAS0ABSIDQQRxRQ0CIANBCHFFDQEgACAHQQhqIAIQsgFFDQIgBygCCCIFIAEoAigiBE8NAiABLwEGIgNBCEYgA0ECRnJFBEBBACEJDAMLIARBAWsgBUYEQCAAIAEoAiQgBUEDdGopAwAQCiABIAU2AigMAwsgACABEKADRQ0AC0F/IQkMAQsgACgCECgCRCABLwEGQRhsaigCFCIDRQ0AIAMoAggiA0UNACAAIAGtQoCAgIBwhCACIAMREwAhCQsgB0EQaiQAIAkLBABBAAvuBAIDfwF+IwBBEGsiCCQAAkACQAJAAkACQCABLQAFIgdBBHFFDQAgAS8BBiIJQQJGBEACQCAHQQhxBEACQCACEFwEQCAIIAIQeSIJNgIMIAkgASgCKEcNASAHQQFxRQ0GIAZBgDBxDQEgBkEAEJMEQQdHDQEgACABIAMQDSAGEJcEIQcMCQsgACAIQQxqIAIQsgFFDQQLQX8hByAAIAEQoANFDQEMBwsgACAIQQxqIAIQsgFFDQILIAAgCEEIaiABKAIUIgkpAwAQxAEaIAgoAgxBAWoiByAIKAIITQ0BIAEoAhAQJy0AA0EIcUUEQCAAIAZBMBDfASEHDAYLIAAgCSAHQQBOBH4gB60FIAe4EBULEB4MAQsgCUEVa0H//wNxQQhNBEAgACACEKUDIgdFDQEgB0EASA0EIAAgBkGGwQAQdiEHDAULIAZBgIAIcQ0AIAAoAhAoAkQgCUEYbGooAhQiB0UNACABrUKAgICAcIQhCiAHKAIMIgcEQCAAIAogAiADIAQgBSAGIAc
 
RIwAhBwwFCyAAIAoQnwEiB0EASA0DIAdFDQELIAEtAAVBAXENAQsgACAGQaIXEHYhBwwCCyAAIAEgAiAGQQVxQRByIAZBB3EgBkGAMHEiAhsQgAEiAUUNACACBEAgAUEANgIAAkAgBkGAEHFFDQAgACAEEDpFDQAgASAEEA0+AgALIAFBADYCBEEBIQcgBkGAIHFFDQIgACAFEDpFDQIgASAFEA0+AgQMAgsCQCAGQYDAAHEEQCABIAMQDTcDAAwBCyABQoCAgIAwNwMAC0EBIQcMAQtBfyEHCyAIQRBqJAAgBwuSAQIDfwF+IAEoAhQiBSkDACIHQv////8PViABKAIoIgZBAWoiBCAHp01yRQRAIAEoAhAQJy0AA0EIcUUEQCAAIAIQCiAAIANBMBDfAQ8LIAUgBK03AwALAkAgBCABKAIgTQ0AIAAgASAEENMFRQ0AIAAgAhAKQX8PCyABKAIkIAZBA3RqIAI3AwAgASAENgIoQQELCwAgACABQQEQoAQLwwEBA38gAUKAgICAcFQEQEEADwsgAaciAi8BBkEpRgRAIwBBEGsiBCQAAkACQCAAIARBCGogAUHiABCEASICRQ0AIAQpAwgiARAQBEAgACACKQMAEJkEIQMMAgsgACABIAIpAwhBASACEDUiARALDQAgACABECwiA0UEQEEAIQMMAgsgACACKQMAEJ8BIgJBAEgNACACRQ0BIABBodgAQQAQFAtBfyEDCyAEQRBqJAAgAw8LIAIgAi0ABUH+AXE6AAVBAQsuAQF/IACnKQMgIgBCgICAgHCDQoCAgICQf1EEfyAApygCBEH/////B3EFQQALCwoAIAAoAgBBfHELMwAgACACQQEQ/AEiAEUEQEKAgICA4AAPCyAAQRBqIAEgAkEBdBAjGiAArUKAgICAkH+EC2UCAn8BfkEEIQJCgICAgCAhBAJAAkACQAJAAkACQCABEFQiA0EIag4KAwIFBQUFBQUEAQAL
 
IANBB0YNAwwEC0EGIQIMAgtBBSECDAELQQchAgsgACgCKCACQQN0aikDACEECyAEC18BAXwgACkCBEL//////////z9YBEAgASABKwMIRAAAAAAAAPA/IAAoAgC3IgKjoDkDCCABIAErAxAgACgCBCIAQf////8HcSAAQR92IgB0IABrQRFquCACo6A5AxALC+cGAQV/AkACQAJAAkACQAJAAkACQAJAIAEtAARBD3EOBgABBAIDBgULIAAgASgCECIHIAIRAwAgBxAnIQUDQCAHKAIgIANKBEACQCAFKAIERQ0AIAEoAhQgA0EDdGohBAJAAkACQAJAIAUoAgBBHnZBAWsOAwABAgMLIAQoAgAiBgRAIAAgBiACEQMACyAEKAIEIgRFDQMgACAEIAIRAwAMAwsgBCgCACIELQAFQQFxRQ0CIAAgBCACEQMADAILIAAgBBCbBCACEQMADAELIAAgBCkDACACECELIANBAWohAyAFQQhqIQUMAQsLIAEvAQYiA0EBRg0GIAAoAkQgA0EYbGooAgwiA0UNBiAAIAGtQoCAgIBwhCACIAMREQAPCwNAIAEoAjggA0oEQCAAIAEoAjQgA0EDdGopAwAgAhAhIANBAWohAwwBCwsgASgCMCIBRQ0FIAAgASACEQMADwsgAS0ABUEBcUUNBSAAIAEoAhApAwAgAhAhDwsgASgCIARAIAAgAUEoaiACEPADCyAAIAEpAxAgAhAhIAAgASkDGCACECEPCyABKAIsIgFFDQIgACABIAIRAwAPCxABAAsgAUHkAWohAyABQeABaiEHA0AgByADKAIAIgVHBEAgBUEIayEDQQAhBANAIAMoAiAgBEoEQAJAIAMoAhwgBEEUbGoiBigCCA0AIAYoAgQiBkUNACAAIAYgAhEDAAsgBEEBaiEEDAELCyAAIAMpA0AgAhAhIAAgAykDSCACECEgACADKQNgIAIQISAAIAMpA2ggAhAhIAVBBGohA
 
wwBCwsgACABKQPAASACECEgACABKQPIASACECEgACABKQOwASACECEgACABKQO4ASACECEgACABKQOoASACECFBACEDA0AgA0EIRgRAQQAhAwNAIAAoAkAgA0oEQCAAIAEoAiggA0EDdGopAwAgAhAhIANBAWohAwwBCwsgACABKQOYASACECEgACABKQOgASACECEgACABKQNQIAIQISAAIAEpA0AgAhAhIAAgASkDSCACECEgACABKQM4IAIQISAAIAEpAzAgAhAhIAEoAiQiAQRAIAAgASACEQMACwUgACABIANBA3RqKQNYIAIQISADQQFqIQMMAQsLCw8LQbM5QaENQY4sQcg5EAAAC4kCAgF+An8jAEEwayIEJABBoRkhBUKAgICA4AAhAwJAAkACQAJAAkACQAJAAkACQAJAAkACQCABEFRBCGoOEAUGCQkJCQoEAAECAwkJCwgJCyAEIAE+AgAgBEEQakEgQZ4ZIAQQVRogBEEQaiEFDAkLIABBA0ECIAGnGxAxIQMMCQsgAEEBEDEhAwwICyAAQcUAEDEhAwwHCyAAIAFBABCbAyIBEAsEQCABIQMMBwsgACABIAIQoAQhAyAAIAEQCgwGCyACRQ0BCyABEA0hAwwECyAAQbUZQQAQFAwDCyAAIAEQSUEKQQBBABDJAiEDDAILQdUZIQULIAAgBRBxIQMLIARBMGokACADC6YEAQl/AkACQAJAIAJCgICAgHCDQoCAgICQf1IEQCAAIAIQKyICEAtFDQEMAgsgAhANIQILIAKnIgooAgQiBUH/////B3EhBgJAIAVBAE4EQCAKQRBqIQVBACEDA0AgBCAGRkUEQCADIAQgBWotAABBB3ZqIQMgBEEBaiEEDAELCyADRQRAIAFFDQQgASAGNgIAIAUPCyAAIAMgBmpBABD8ASIHRQ0CQQAhAyAHQRBqIgshBANAIAMgBkYNAgJ/IAMgBWosAAAiCEEATgRAIAQgCD
 
oAACAEQQFqDAELIAQgCEE/cUGAAXI6AAEgBCAIQcABcUEGdkHAAXI6AAAgBEECagshBCADQQFqIQMMAAsACyAAIAZBA2xBABD8ASIHRQ0BQQAhBSAHQRBqIgshBANAIAUiCCAGTg0BIAhBAWohBSAKIAhBAXRqLwEQIglB/wBNBEAgBCAJOgAAIARBAWohBAUCQCADIAUgBk5yIAlBgPgDcUGAsANHcg0AIAogBUEBdGovARAiDEGA+ANxQYC4A0cNACAJQQp0QYD4P3EgDEH/B3FyQYCABGohCSAIQQJqIQULIAQgCRDjAiAEaiEECwwACwALIARBADoAACAHIAQgB2tBEGtB/////wdxrSAHKQIEQoCAgIB4g4Q3AgQgACACEAogAQRAIAEgBygCBEH/////B3E2AgALIAsPCyABRQRAQQAPC0EAIQUgAUEANgIACyAFCyUCAX8BfiAAIAEQMSIDEAtFBEAgACADELcBIQIgACADEAoLIAILDAAgASAAKAIMEQQACz0BAX8gASABKAIAIgJBAWs2AgAgAkEBTARAIAEpAgRCgICAgICAgIDAAFoEQCAAIAEQqwMPCyAAIAEQHwsLVQECfyMAQRBrIgIkACAAKAIQIQACfwJAIAJBDGogARDoBUUNACACKAIMIgNBAEgNACAAIAEQpAQgAxCTAQwBCyAAIAFBARDUAgshASACQRBqJAAgAQtcAQN/IABB4AFqIQQgACgC5AEhAwNAIAQgAyICRwRAIAIoAgQhAwJAAkACQCABDgMCAAEECyACLABMDQMMAQsgAikCTEIghkI4h6cNAgsgACACQQhrEOoFDAELCwu8AQEDfwJAIAEgAigCECIDBH8gAwVBACEDIAIQ8AUNASACKAIQCyACKAIUIgVrSwRAIAIgACABIAIoAiQRAQAPCwJ/IAIsAEtBf0oEQCABIQMDQCABIAMiBEUNAhogACAEQQFrIgNqLQAAQQpHDQALIAI
 
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
 
EQjCIp0H//wFxIgetQjCGhCIJEIACQQBMBEAgASAKIAMgCRCAAgRAIAEhBAwCCyAFQfAAaiABIAJCAEIAEDIgBSkDeCECIAUpA3AhBAwBCyAGBH4gAQUgBUHgAGogASAKQgBCgICAgICAwLvAABAyIAUpA2giCkIwiKdB+ABrIQYgBSkDYAshBCAHRQRAIAVB0ABqIAMgCUIAQoCAgICAgMC7wAAQMiAFKQNYIglCMIinQfgAayEHIAUpA1AhAwsgCUL///////8/g0KAgICAgIDAAIQhCSAKQv///////z+DQoCAgICAgMAAhCEKIAYgB0oEQANAAn4gCiAJfSADIARWrX0iC0IAWQRAIAsgBCADfSIEhFAEQCAFQSBqIAEgAkIAQgAQMiAFKQMoIQIgBSkDICEEDAULIAtCAYYgBEI/iIQMAQsgCkIBhiAEQj+IhAshCiAEQgGGIQQgBkEBayIGIAdKDQALIAchBgsCQCAKIAl9IAMgBFatfSIJQgBTBEAgCiEJDAELIAkgBCADfSIEhEIAUg0AIAVBMGogASACQgBCABAyIAUpAzghAiAFKQMwIQQMAQsgCUL///////8/WARAA0AgBEI/iCEBIAZBAWshBiAEQgGGIQQgASAJQgGGhCIJQoCAgICAgMAAVA0ACwsgCEGAgAJxIQcgBkEATARAIAVBQGsgBCAJQv///////z+DIAZB+ABqIAdyrUIwhoRCAEKAgICAgIDAwz8QMiAFKQNIIQIgBSkDQCEEDAELIAlC////////P4MgBiAHcq1CMIaEIQILIAAgBDcDACAAIAI3AwggBUGAAWokAAuhBAIEfgJ/AkAgAb0iBEIBhiIDUCAEQv///////////wCDQoCAgICAgID4/wBWckUEQCAAvSIFQjSIp0H/D3EiBkH/D0cNAQsgACABoiIAIACjDwsCfgJAIAMgBUIBhiICVARAIARCNIinQf8PcSEHIAZFBEAgBUIM
 
hiICQgBTBEBBACEGDAMLQX8hBgNAIAJCAYYiAkIAUw0DIAZBAWshBgwACwALIAVC/////////weDQoCAgICAgIAIhAwCCyAARAAAAAAAAAAAoiAAIAIgA1EbDwsgBUEBIAZrrYYLIQICfgJAIAdFBEAgBEIMhiIDQgBTBEBBACEHDAILQX8hBwNAIANCAYYiA0IAUw0CIAdBAWshBwwACwALIARC/////////weDQoCAgICAgIAIhAwBCyAEQQEgB2uthgshBCAGIAdKBEADQAJAIAIgBH0iA0IAUw0AIAMiAkIAUg0AIABEAAAAAAAAAACiDwsgAkIBhiECIAZBAWsiBiAHSg0ACyAHIQYLAkAgAiAEfSIDQgBTDQAgAyICQgBSDQAgAEQAAAAAAAAAAKIPCwJAIAJC/////////wdWBEAgAiEDDAELA0AgBkEBayEGIAJCgICAgICAgARUIQcgAkIBhiIDIQIgBw0ACwsgBUKAgICAgICAgIB/gyECIAZBAU4EfiADQoCAgICAgIAIfSAGrUI0hoQFIANBASAGa62ICyAChL8LiwwBBn8gACABaiEFAkACQCAAKAIEIgJBAXENACACQQNxRQ0BIAAoAgAiAiABaiEBAkAgACACayIAQfinBCgCAEcEQCACQf8BTQRAIAAoAggiBCACQQN2IgJBA3RBjKgEakYaIAAoAgwiAyAERw0CQeSnBEHkpwQoAgBBfiACd3E2AgAMAwsgACgCGCEGAkAgACAAKAIMIgNHBEAgACgCCCICQfSnBCgCAEkaIAIgAzYCDCADIAI2AggMAQsCQCAAQRRqIgIoAgAiBA0AIABBEGoiAigCACIEDQBBACEDDAELA0AgAiEHIAQiA0EUaiICKAIAIgQNACADQRBqIQIgAygCECIEDQALIAdBADYCAAsgBkUNAgJAIAAgACgCHCIEQQJ0QZSqBGoiAigCAEYEQCACIAM2AgAgAw0BQeinBEHop
 
wQoAgBBfiAEd3E2AgAMBAsgBkEQQRQgBigCECAARhtqIAM2AgAgA0UNAwsgAyAGNgIYIAAoAhAiAgRAIAMgAjYCECACIAM2AhgLIAAoAhQiAkUNAiADIAI2AhQgAiADNgIYDAILIAUoAgQiAkEDcUEDRw0BQeynBCABNgIAIAUgAkF+cTYCBCAAIAFBAXI2AgQgBSABNgIADwsgBCADNgIMIAMgBDYCCAsCQCAFKAIEIgJBAnFFBEAgBUH8pwQoAgBGBEBB/KcEIAA2AgBB8KcEQfCnBCgCACABaiIBNgIAIAAgAUEBcjYCBCAAQfinBCgCAEcNA0HspwRBADYCAEH4pwRBADYCAA8LIAVB+KcEKAIARgRAQfinBCAANgIAQeynBEHspwQoAgAgAWoiATYCACAAIAFBAXI2AgQgACABaiABNgIADwsgAkF4cSABaiEBAkAgAkH/AU0EQCAFKAIIIgQgAkEDdiICQQN0QYyoBGpGGiAEIAUoAgwiA0YEQEHkpwRB5KcEKAIAQX4gAndxNgIADAILIAQgAzYCDCADIAQ2AggMAQsgBSgCGCEGAkAgBSAFKAIMIgNHBEAgBSgCCCICQfSnBCgCAEkaIAIgAzYCDCADIAI2AggMAQsCQCAFQRRqIgQoAgAiAg0AIAVBEGoiBCgCACICDQBBACEDDAELA0AgBCEHIAIiA0EUaiIEKAIAIgINACADQRBqIQQgAygCECICDQALIAdBADYCAAsgBkUNAAJAIAUgBSgCHCIEQQJ0QZSqBGoiAigCAEYEQCACIAM2AgAgAw0BQeinBEHopwQoAgBBfiAEd3E2AgAMAgsgBkEQQRQgBigCECAFRhtqIAM2AgAgA0UNAQsgAyAGNgIYIAUoAhAiAgRAIAMgAjYCECACIAM2AhgLIAUoAhQiAkUNACADIAI2AhQgAiADNgIYCyAAIAFBAXI2AgQgACABaiABNgIAIABB+KcEKAIARw0BQeynBC
 
ABNgIADwsgBSACQX5xNgIEIAAgAUEBcjYCBCAAIAFqIAE2AgALIAFB/wFNBEAgAUEDdiICQQN0QYyoBGohAQJ/QeSnBCgCACIDQQEgAnQiAnFFBEBB5KcEIAIgA3I2AgAgAQwBCyABKAIICyECIAEgADYCCCACIAA2AgwgACABNgIMIAAgAjYCCA8LQR8hAiAAQgA3AhAgAUH///8HTQRAIAFBCHYiAiACQYD+P2pBEHZBCHEiBHQiAiACQYDgH2pBEHZBBHEiA3QiAiACQYCAD2pBEHZBAnEiAnRBD3YgAyAEciACcmsiAkEBdCABIAJBFWp2QQFxckEcaiECCyAAIAI2AhwgAkECdEGUqgRqIQcCQAJAQeinBCgCACIEQQEgAnQiA3FFBEBB6KcEIAMgBHI2AgAgByAANgIAIAAgBzYCGAwBCyABQQBBGSACQQF2ayACQR9GG3QhAiAHKAIAIQMDQCADIgQoAgRBeHEgAUYNAiACQR12IQMgAkEBdCECIAQgA0EEcWoiB0EQaigCACIDDQALIAcgADYCECAAIAQ2AhgLIAAgADYCDCAAIAA2AggPCyAEKAIIIgEgADYCDCAEIAA2AgggAEEANgIYIAAgBDYCDCAAIAE2AggLC58IAQt/IABFBEAgARChAg8LIAFBQE8EQEGEpwRBMDYCAEEADwsCf0EQIAFBC2pBeHEgAUELSRshBiAAQQhrIgUoAgQiCUF4cSEEAkAgCUEDcUUEQEEAIAZBgAJJDQIaIAZBBGogBE0EQCAFIQIgBCAGa0HEqwQoAgBBAXRNDQILQQAMAgsgBCAFaiEHAkAgBCAGTwRAIAQgBmsiA0EQSQ0BIAUgCUEBcSAGckECcjYCBCAFIAZqIgIgA0EDcjYCBCAHIAcoAgRBAXI2AgQgAiADEPQFDAELIAdB/KcEKAIARgRAQfCnBCgCACAEaiIEIAZNDQIgBSAJQQFxIAZyQQJyNgIEIAUgBmoiAyA
 
EIAZrIgJBAXI2AgRB8KcEIAI2AgBB/KcEIAM2AgAMAQsgB0H4pwQoAgBGBEBB7KcEKAIAIARqIgMgBkkNAgJAIAMgBmsiAkEQTwRAIAUgCUEBcSAGckECcjYCBCAFIAZqIgQgAkEBcjYCBCADIAVqIgMgAjYCACADIAMoAgRBfnE2AgQMAQsgBSAJQQFxIANyQQJyNgIEIAMgBWoiAiACKAIEQQFyNgIEQQAhAkEAIQQLQfinBCAENgIAQeynBCACNgIADAELIAcoAgQiA0ECcQ0BIANBeHEgBGoiCiAGSQ0BIAogBmshDAJAIANB/wFNBEAgBygCCCIEIANBA3YiAkEDdEGMqARqRhogBCAHKAIMIgNGBEBB5KcEQeSnBCgCAEF+IAJ3cTYCAAwCCyAEIAM2AgwgAyAENgIIDAELIAcoAhghCwJAIAcgBygCDCIIRwRAIAcoAggiAkH0pwQoAgBJGiACIAg2AgwgCCACNgIIDAELAkAgB0EUaiIEKAIAIgINACAHQRBqIgQoAgAiAg0AQQAhCAwBCwNAIAQhAyACIghBFGoiBCgCACICDQAgCEEQaiEEIAgoAhAiAg0ACyADQQA2AgALIAtFDQACQCAHIAcoAhwiA0ECdEGUqgRqIgIoAgBGBEAgAiAINgIAIAgNAUHopwRB6KcEKAIAQX4gA3dxNgIADAILIAtBEEEUIAsoAhAgB0YbaiAINgIAIAhFDQELIAggCzYCGCAHKAIQIgIEQCAIIAI2AhAgAiAINgIYCyAHKAIUIgJFDQAgCCACNgIUIAIgCDYCGAsgDEEPTQRAIAUgCUEBcSAKckECcjYCBCAFIApqIgIgAigCBEEBcjYCBAwBCyAFIAlBAXEgBnJBAnI2AgQgBSAGaiIDIAxBA3I2AgQgBSAKaiICIAIoAgRBAXI2AgQgAyAMEPQFCyAFIQILIAILIgIEQCACQQhqDwsgARChAiIFRQRAQQAPCyAFIABBfEF4
 
IABBBGsoAgAiAkEDcRsgAkF4cWoiAiABIAEgAksbECMaIAAQ6QEgBQvYAwICfgJ/IwBBIGsiBCQAAkAgAUL///////////8AgyIDQoCAgICAgMCAPH0gA0KAgICAgIDA/8MAfVQEQCABQgSGIABCPIiEIQMgAEL//////////w+DIgBCgYCAgICAgIAIWgRAIANCgYCAgICAgIDAAHwhAgwCCyADQoCAgICAgICAQH0hAiAAQoCAgICAgICACIVCAFINASACIANCAYN8IQIMAQsgAFAgA0KAgICAgIDA//8AVCADQoCAgICAgMD//wBRG0UEQCABQgSGIABCPIiEQv////////8Dg0KAgICAgICA/P8AhCECDAELQoCAgICAgID4/wAhAiADQv///////7//wwBWDQBCACECIANCMIinIgVBkfcASQ0AIARBEGogACABQv///////z+DQoCAgICAgMAAhCICIAVBgfcAaxByIAQgACACQYH4ACAFaxDWAiAEKQMIQgSGIAQpAwAiAEI8iIQhAiAEKQMQIAQpAxiEQgBSrSAAQv//////////D4OEIgBCgYCAgICAgIAIWgRAIAJCAXwhAgwBCyAAQoCAgICAgICACIVCAFINACACQgGDIAJ8IQILIARBIGokACACIAFCgICAgICAgICAf4OEvwuCEQIFfwt+IwBBwAFrIgUkACAEQv///////z+DIRIgAkL///////8/gyEMIAIgBIVCgICAgICAgICAf4MhESAEQjCIp0H//wFxIQcCQAJAAkAgAkIwiKdB//8BcSIJQQFrQf3/AU0EQCAHQQFrQf7/AUkNAQsgAVAgAkL///////////8AgyIKQoCAgICAgMD//wBUIApCgICAgICAwP//AFEbRQRAIAJCgICAgICAIIQhEQwCCyADUCAEQv///////////wCDIgJCgICAgICAwP//AFQgAkKAgICAgIDA//8AURtFBEAgB
 
EKAgICAgIAghCERIAMhAQwCCyABIApCgICAgICAwP//AIWEUARAIAMgAkKAgICAgIDA//8AhYRQBEBCACEBQoCAgICAgOD//wAhEQwDCyARQoCAgICAgMD//wCEIRFCACEBDAILIAMgAkKAgICAgIDA//8AhYRQBEBCACEBDAILIAEgCoRQDQIgAiADhFAEQCARQoCAgICAgMD//wCEIRFCACEBDAILIApC////////P1gEQCAFQbABaiABIAwgASAMIAxQIgYbeSAGQQZ0rXynIgZBD2sQckEQIAZrIQYgBSkDuAEhDCAFKQOwASEBCyACQv///////z9WDQAgBUGgAWogAyASIAMgEiASUCIIG3kgCEEGdK18pyIIQQ9rEHIgBiAIakEQayEGIAUpA6gBIRIgBSkDoAEhAwsgBUGQAWogEkKAgICAgIDAAIQiFEIPhiADQjGIhCICQoTJ+c6/5ryC9QAgAn0iBBC0ASAFQYABakIAIAUpA5gBfSAEELQBIAVB8ABqIAUpA4gBQgGGIAUpA4ABQj+IhCIEIAIQtAEgBUHgAGogBEIAIAUpA3h9ELQBIAVB0ABqIAUpA2hCAYYgBSkDYEI/iIQiBCACELQBIAVBQGsgBEIAIAUpA1h9ELQBIAVBMGogBSkDSEIBhiAFKQNAQj+IhCIEIAIQtAEgBUEgaiAEQgAgBSkDOH0QtAEgBUEQaiAFKQMoQgGGIAUpAyBCP4iEIgQgAhC0ASAFIARCACAFKQMYfRC0ASAGIAkgB2tqIQYCfkIAIAUpAwhCAYYgBSkDAEI/iIRCAX0iCkL/////D4MiBCACQiCIIgt+Ig4gCkIgiCIKIAJC/////w+DIg9+fCICQiCIIAIgDlStQiCGhCAKIAt+fCACQiCGIgsgBCAPfnwiAiALVK0gAiACIAQgA0IRiEL/////D4MiDn4iDyAKIANCD4ZCgID+/w+DIg1+fCILQiCGIhAgBCANfnwgEF
 
StIAogDn4gCyAPVK1CIIYgC0IgiIR8fHwiAlatfHwgAkIAUq18fSILQv////8PgyIOIAR+Ig8gCiAOfiINIAQgC0IgiCIQfnwiC0IghnwiDiAPVK0gCiAQfiALIA1UrUIghiALQiCIhHx8IA5CACACfSICQiCIIgsgBH4iDyACQv////8PgyINIAp+fCICQiCGIhAgBCANfnwgEFStIAogC34gAiAPVK1CIIYgAkIgiIR8fHwiAiAOVK18IAJCAn0iDyACVK18QgF9IgtC/////w+DIgIgDEIChiABQj6IhEL/////D4MiBH4iDiABQh6IQv////8PgyIKIAtCIIgiC358Ig0gDlStIA0gDSAPQiCIIg4gDEIeiEL//+//D4NCgIAQhCIMfnwiDVatfCALIAx+fCACIAx+IhMgBCALfnwiECATVK1CIIYgEEIgiIR8IA0gDSAQQiCGfCINVq18IA0gDSAKIA5+IhMgD0L/////D4MiDyAEfnwiECATVK0gECAQIAIgAUIChkL8////D4MiE358IhBWrXx8Ig1WrXwgDSALIBN+IgsgDCAPfnwiDCAEIA5+fCIEIAIgCn58IgJCIIggAiAEVK0gCyAMVq0gBCAMVK18fEIghoR8IgQgDVStfCAEIAQgECAOIBN+IgwgCiAPfnwiCkIgiCAKIAxUrUIghoR8IgogEFStIAogAkIghnwgClStfHwiBFatfCICQv////////8AWARAIAFCMYYgBEIgiCIBIANC/////w+DIgp+Ig0gBEL/////D4MiDCADQiCIIgt+fCIOQiCGIhAgCiAMfnwiDyAQVK19IA9CAFKtfSACQv////8PgyAKfiAMIBJC/////w+DfnwgASALfnwgDSAOVq1CIIYgDkIgiIR8IAQgFEIgiH4gAyACQiCIfnwgAiALfnwgASASfnxCIIZ8fSESIAZBAWshBkIAIA99DAELIARCIYghDCABQjCGIAJCP4Y
 
gBEIBiIQiBEL/////D4MiASADQiCIIgp+Ig8gDCACQh+GhCINQv////8PgyIQIANC/////w+DIgx+fCILQiCGIhMgASAMfnwiDiATVK19IA5CAFKtfSAEIBRCIIh+IAMgAkIhiH58IAJCAYgiAiAKfnwgDSASfnxCIIYgCiAQfiACQv////8PgyAMfnwgASASQv////8Pg358IAsgD1StQiCGIAtCIIiEfHx9IRJCACAOfQshASAGQYCAAU4EQCARQoCAgICAgMD//wCEIRFCACEBDAELIAZB//8AaiEHIAZBgYB/TARAAkAgBw0AIAQgAUIBhiADViASQgGGIAFCP4iEIgEgFFYgASAUURutfCIBIARUrSACQv///////z+DfCICQoCAgICAgMAAg1ANACACIBGEIREMAgtCACEBDAELIAQgAUIBhiADWiASQgGGIAFCP4iEIgEgFFogASAUURutfCIBIARUrSACQv///////z+DfCAHrUIwhnwgEYQhEQsgACABNwMAIAAgETcDCCAFQcABaiQADwsgAEIANwMAIABCgICAgICA4P//ACARIAIgA4RQGzcDCCAFQcABaiQAC8QBAgF/An5BfyEDAkAgAEIAUiABQv///////////wCDIgRCgICAgICAwP//AFYgBEKAgICAgIDA//8AURsNAEEAIAJC////////////AIMiBUKAgICAgIDA//8AViAFQoCAgICAgMD//wBRGw0AIAAgBCAFhIRQBEBBAA8LIAEgAoNCAFkEQEEAIAEgAlMgASACURsNASAAIAEgAoWEQgBSDwsgAEIAUiABIAJVIAEgAlEbDQAgACABIAKFhEIAUiEDCyADC9wyAxV/B34BfCMAQRBrIhEkACMAQaABayIOJAAgDkEQakEAQZABEEsaIA5BfzYCXCAOIAA2AjwgDkF/NgIYIA4gADYCFCAOQRBqEKoEIA5BEGohAiMAQTBrIg0kAEHgowQo
 
AgAhEEHUowQoAgAhDwNAAn8gAigCBCIAIAIoAmhJBEAgAiAAQQFqNgIEIAAtAAAMAQsgAhBaCyIFEP0FDQALQQEhAAJAAkAgBUEraw4DAAEAAQtBf0EBIAVBLUYbIQAgAigCBCIEIAIoAmhJBEAgAiAEQQFqNgIEIAQtAAAhBQwBCyACEFohBQsCQAJAAkADQCAGQYmjBGosAAAgBUEgckYEQAJAIAZBBksNACACKAIEIgQgAigCaEkEQCACIARBAWo2AgQgBC0AACEFDAELIAIQWiEFCyAGQQFqIgZBCEcNAQwCCwsgBkEDRwRAIAZBCEYNASAGQQRJDQIgBkEIRg0BCyACKAJoIgQEQCACIAIoAgRBAWs2AgQLIAZBBEkNAANAIAQEQCACIAIoAgRBAWs2AgQLIAZBAWsiBkEDSw0ACwsjAEEQayICJAACfiAAskMAAIB/lLwiBEH/////B3EiAEGAgIAEa0H////3B00EQCAArUIZhkKAgICAgICAwD98DAELIAStQhmGQoCAgICAgMD//wCEIABBgICA/AdPDQAaQgAgAEUNABogAiAArUIAIABnIgBB0QBqEHIgAikDACEWIAIpAwhCgICAgICAwACFQYn/ACAAa61CMIaECyEXIA0gFjcDACANIBcgBEGAgICAeHGtQiCGhDcDCCACQRBqJAAgDSkDCCEWIA0pAwAhFwwBCwJAAkACQCAGDQBBACEGA0AgBkGSowRqLAAAIAVBIHJHDQECQCAGQQFLDQAgAigCBCIEIAIoAmhJBEAgAiAEQQFqNgIEIAQtAAAhBQwBCyACEFohBQsgBkEBaiIGQQNHDQALDAELAkACQCAGDgQAAQECAQsCQCAFQTBHDQACfyACKAIEIgQgAigCaEkEQCACIARBAWo2AgQgBC0AAAwBCyACEFoLQV9xQdgARgRAIwBBsANrIgMkAAJ/IAIoAgQiBCACKAJoSQRAIAIgBEEBajYCBCAEL
 
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
 
QlLDQEgBUKuj4XXx8LrowFTDQALCyACQQpJBEADQAJ/IAAoAgQiASAAKAJoSQRAIAAgAUEBajYCBCABLQAADAELIAAQWgtBMGtBCkkNAAsLIAAoAmgEQCAAIAAoAgRBAWs2AgQLQgAgBX0gBSAEGyEFDAELQoCAgICAgICAgH8hBSAAKAJoRQ0AIAAgACgCBEEBazYCBEKAgICAgICAgIB/DwsgBQu/AgEBfyMAQdAAayIEJAACQCADQYCAAU4EQCAEQSBqIAEgAkIAQoCAgICAgID//wAQMiAEKQMoIQIgBCkDICEBIANB//8BSARAIANB//8AayEDDAILIARBEGogASACQgBCgICAgICAgP//ABAyIANB/f8CIANB/f8CSBtB/v8BayEDIAQpAxghAiAEKQMQIQEMAQsgA0GBgH9KDQAgBEFAayABIAJCAEKAgICAgIDAABAyIAQpA0ghAiAEKQNAIQEgA0GDgH5KBEAgA0H+/wBqIQMMAQsgBEEwaiABIAJCAEKAgICAgIDAABAyIANBhoB9IANBhoB9ShtB/P8BaiEDIAQpAzghAiAEKQMwIQELIAQgASACQgAgA0H//wBqrUIwhhAyIAAgBCkDCDcDCCAAIAQpAwA3AwAgBEHQAGokAAs1ACAAIAE3AwAgACACQv///////z+DIARCMIinQYCAAnEgAkIwiKdB//8BcXKtQjCGhDcDCAsQACAAQSBGIABBCWtBBUlyC9gBAQR/IAAoAlQhAwJAIAAoAhQgACgCHCIFayIGBEAgACAFNgIUIAAgBSAGEP4FIAZJDQELAkAgAygCEEHhAEcEQCADKAIAIQQMAQsgAyADKAIEIgQ2AgALIAMoAgwgBGogASADKAIIIARrIgEgAiABIAJJGyIEECMaIAMgAygCACAEaiIBNgIAIAEgAygCBE0NACADIAE2AgQgAygCCCICIAFLBEAgAygCDCABakEAOgAAIAQPCyAALQAAQQ
 
RxRSACRXINACACIAMoAgxqQQFrQQA6AAALIAQLuwIAAkAgAUEUSw0AAkACQAJAAkACQAJAAkACQAJAAkAgAUEJaw4KAAECAwQFBgcICQoLIAIgAigCACIBQQRqNgIAIAAgASgCADYCAA8LIAIgAigCACIBQQRqNgIAIAAgATQCADcDAA8LIAIgAigCACIBQQRqNgIAIAAgATUCADcDAA8LIAIgAigCAEEHakF4cSIBQQhqNgIAIAAgASkDADcDAA8LIAIgAigCACIBQQRqNgIAIAAgATIBADcDAA8LIAIgAigCACIBQQRqNgIAIAAgATMBADcDAA8LIAIgAigCACIBQQRqNgIAIAAgATAAADcDAA8LIAIgAigCACIBQQRqNgIAIAAgATEAADcDAA8LIAIgAigCAEEHakF4cSIBQQhqNgIAIAAgASsDADkDAA8LIAAgAiADEQMACwtQAQN/AkAgACgCACwAABBFRQRADAELA0AgACgCACICLAAAIQMgACACQQFqNgIAIAEgA2pBMGshASACLAABEEVFDQEgAUEKbCEBDAALAAsgAQt/AgF/AX4gAL0iA0I0iKdB/w9xIgJB/w9HBHwgAkUEQCABIABEAAAAAAAAAABhBH9BAAUgAEQAAAAAAADwQ6IgARCBBiEAIAEoAgBBQGoLNgIAIAAPCyABIAJB/gdrNgIAIANC/////////4eAf4NCgICAgICAgPA/hL8FIAALC5sCACAARQRAQQAPCwJ/AkAgAAR/IAFB/wBNDQECQEGcpQQoAgAoAgBFBEAgAUGAf3FBgL8DRg0DDAELIAFB/w9NBEAgACABQT9xQYABcjoAASAAIAFBBnZBwAFyOgAAQQIMBAsgAUGAsANPQQAgAUGAQHFBgMADRxtFBEAgACABQT9xQYABcjoAAiAAIAFBDHZB4AFyOgAAIAAgAUEGdkE/cUGAAXI6AAFBAwwECyABQYCABGtB//8/TQRAIAAgAUE
 
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
 
wsgAygCIDUCFAVCgICAgOAACwseACAAIAFBABCZASIARQRAQoCAgIDgAA8LIAA1AigLPQEBfkKAgICAECEBIAMpAwAiBEKAgICAcFoEfiAEpy8BBkEVa0H//wNxQQpJrUKAgICAEIQFQoCAgIAQCwuQAwIFfgF/IwBBIGsiAiQAQoCAgIDgACEIAkAgACABIAQQaCIKRQ0AIAotAAQEQCAAEHAMAQsgACACQRhqIAMpAwBCACAKNAIAIgUgBRB+DQAgAiAFNwMQIAMpAwgiBhAQBH4gBQUgACACQRBqIAZCACAFIAUQfg0BIAIpAxALIAIpAxgiCX0Q1AQhByAAIAFCgICAgDAQ8gEiBhALBEAgBiEIDAELAkAgBhAQBEAgAEKAgICAMCAHIAQQ9QMhBQwBCyACIAdCgICAgAh8Qv////8PWAR+IAdC/////w+DBSAHuRAVCzcDCCAAIAZBASACQQhqEK4BIQUgACAGEAogACACKQMIEAoLAkAgBRALDQACQCAAIAUgBBBoIgNFDQAgACAFIAEQWARAIABBoNEBQQAQFAwBCwJAIAMtAAQNACADNAIAIAdTBEAgAEHB0QFBABAUDAILIAotAAQNACADKAIIIAooAgggCadqIAenECMaDAILIAAQcAsgACAFEAoMAQsgBSEICyACQSBqJAAgCAsuACAAIAEgAhBoIgBFBEBCgICAgOAADwsgACgCACIAQQBOBEAgAK0PCyAAuBAVC/YCAQF+IAFBKBA/IQIgBEEBNgIAAkACQCACRQRAIABB0M8BQQAQFAwBCwJAAkACQAJAAkACQAJAAkAgAigCAEEBaw4EAgIHAQALIAVFDQIgACACEMADC0KAgICAMCEBIAVBAWsOAgMEBwsgAykDABANIQECQCAFQQJHDQBBASEDIAIoAgBBAUcNACAAIAEQkgEMAgsgAigCRCIDIAWtNwMAIANBCGsgATcDACACIANBCGo2AkQLQQAhAw
 
sgAkEDNgIAIAIgAzYCFCAAIAJBCGoQwAIhASACQQE2AgAgARALBEAgACACEMADIAEPCyACKAJEQQhrIgMpAwAhBiADQoCAgIAwNwMAIAFC/////w9YBEAgAadBAkYEQCACQQI2AgAgBEECNgIAIAYPCyAEQQA2AgAgBg8LIAAgARAKIAAgAhDAAyAGDwsgAykDABANDwsgACADKQMAEA0QkgEMAQsgAEHgzwFBABAUC0KAgICA4AAhAQsgAQtmAQF+IAMpAwAiARD3A0UEQCAAQeTJAEEAEBRCgICAgOAADwtCgICAgDAhBCABpykCBEKAgICAgICAgECDQoCAgICAgICAgH9RBH4gAUL/////D4NCgICAgJB/hBANBUKAgICAMAsLLwEBfkKAgICA4AAhASAAIAMpAwAQKyIEEAsEfkKAgICA4AAFIAAgBKdBAhD2AwsLSQIBfgF/IAAgARDBAyIBEAsEQCABDwtCgICAgDAhAiABpyIDKAIEQYCAgIB4RwRAIAAgACgCECADENMCEDEhAgsgACABEAogAgsJACAAIAEQwQMLTgEBfiMAQRBrIgIkACACIAAgARDBAyIBNwMIAkAgARALBEAgASEEDAELIABCgICAgDBBASACQQhqEMgEIQQgACABEAoLIAJBEGokACAECy0AQoCAgIDgACAAIAMpAwAgAykDCEEAEJsCIgBBAEetQoCAgIAQhCAAQQBIGwuGAQEDfiADKQMAIgEhBCACQQROBEAgAykDGCEECyABQv////9vWARAIAAQKEKAgICA4AAPCyADKQMQIQZCgICAgOAAIQUCQCAAIAMpAwgQOSICRQ0AIAAgASACIAYQDSAEQQAQiAQhAyAAIAIQESADQQBIDQAgA0EAR61CgICAgBCEIQULIAULKgAgAykDACIBQv////9vWARAIAAQKEKAgICA4AAPCyAAIAFBA0EAEP8CC2MBAX4gAykDACIEQv////9vWAR
 
AIAAQKEKAgICA4AAPC0KAgICA4AAhAQJAIAAgAykDCBA5IgJFDQAgACAEIAIQdyEDIAAgAhARIANBAEgNACADQQBHrUKAgICAEIQhAQsgAQtjAQJ+AkACQCADKQMAIgFC/////29YBEAgABAoDAELIAMpAwghBSABIQQgAkEDTgRAIAMpAxAhBAsgACAFEDkiAg0BC0KAgICA4AAPCyAAIAEgAiAEQQAQEiEBIAAgAhARIAELZgEBfiADKQMAIgRC/////29YBEAgABAoQoCAgIDgAA8LQoCAgIDgACEBAkAgACADKQMIEDkiAkUNACAAIAQgAkEAEN0BIQMgACACEBEgA0EASA0AIANBAEetQoCAgIAQhCEBCyABC4sBAgF/An4jAEEQayIEJAAgAykDCCEFIAMpAwAiBiEBAkACQAJAAkAgAkEDSA0AIAMpAxAiARCxAQ0AIABBycwAQQAQFAwBCyAAIARBDGogBRCLBCICDQELQoCAgIDgACEBDAELIAAgBiABIAQoAgwiAyACEI4DIQEgACACIAMQmAMLIARBEGokACABCxwAIAAgAykDAEEAIAJBAWsQSiADQQhqQQIQmgMLQwAjAEEQayICJAACfkKAgICA4AAgACACQQxqIAMpAwAQxAENABpCICACKAIMIgBFDQAaIABnrQshASACQRBqJAAgAQtQACMAQRBrIgIkAEKAgICA4AAhAQJAIAAgAkEMaiADKQMAEJMCDQAgACACQQhqIAMpAwgQkwINACACKAIIIAIoAgxsrSEBCyACQRBqJAAgAQsGACAAtrsLUwACfCAAIAApA9ABIgFCDIggAYUiAUIZhiABhSIBQhuIIAGFIgE3A9ABIAFCnbqz+5SS/aIlfkIMiEKAgICAgICA+D+Ev0QAAAAAAADwv6ALEBUL9QMDA3wFfwN+IwBBEGsiCCQAIAhCADcDCAJAAkAgAkEBSA0AQoCAgIDgACEBIAAgCEEIaiAD
 
KQMAEEcNAUEBIQkgCCsDCCEEIAJBAUcEQANAIAIgCUYNAiAAIAggAyAJQQN0aikDABBHDQMgCUEBaiEJIAgrAwAhBSMAQSBrIgckACAEvUL///////////8AgyINIAW9Qv///////////wCDIgwgDCANVhsiDr8hBAJAIA5CNIinIgpB/w9GDQAgDSAMIAwgDVQbIgy/IQUCQCAOUA0AIAxCNIinIgtB/w9GDQAgCyAKa0HBAE4EQCAFIASgIQQMAgsCfCALQf4LTwRAIAREAAAAAAAAMBSiIQQgBUQAAAAAAAAwFKIhBUQAAAAAAACwawwBC0QAAAAAAADwPyAKQbwESw0AGiAERAAAAAAAALBroiEEIAVEAAAAAAAAsGuiIQVEAAAAAAAAMBQLIQYgB0EYaiAHQRBqIAUQhgYgB0EIaiAHIAQQhgYgBiAHKwMAIAcrAxCgIAcrAwigIAcrAxign6IhBAwBCyAFIQQLIAdBIGokAAwACwALIASZIQQLIAS9An8gBJlEAAAAAAAA4EFjBEAgBKoMAQtBgICAgHgLIgC3vVEEQCAArSEBDAELIAQQFSEBCyAIQRBqJAAgAQtbAQF/AkAgAL1C////////////AINCgICAgICAgPj/AFYgAEQAAAAAAAAAAGFyDQAgAEQAAAAAAAAAAGMhAUQAAAAAAADwvyEAIAENAEQAAAAAAADwPyEACyAAC4MBAgJ+AX8gAL0iAUI0iKdB/w9xIgNB/gdNBEAgAUKAgICAgICAgIB/gyECIANB/gdHIAFCgICAgICAgPC/f1FyRQRAIAJCgICAgICAgPg/hL8PCyACvw8LIANBsghNBHwgAUI/hyABfEIBQbMIIANrrYYiAUIBiHxCACABfYO/BSAACwvjBAICfAV/IwBBEGsiCCQAAn4gAkUEQEQAAAAAAADw/0QAAAAAAADwfyAEGxAVDAELAnwgAykDACIBQv////8PWARAIAJBASACQ
 
QFKGyELIAGnIQlBASEHA0AgByALRwRAIAm3IAMgB0EDdGopAwAiAUKAgICAEFoNAxogAachCgJ/IAQEQCAJIAoQSgwBCyAJIAoQsAELIQkgB0EBaiEHDAELCyAJrQwCC0KAgICA4AAgACAIQQhqIAEQRw0BGkEBIQcgCCsDCAshBSAHIAIgAiAHSBshAgNAIAIgB0cEQEKAgICA4AAgACAIIAMgB0EDdGopAwAQRw0CGgJAIAW9Qv///////////wCDQoCAgICAgID4/wBWDQAgCCsDACIGvUL///////////8Ag0KAgICAgICA+P8AVgRAIAYhBQwBCyAEBEAgBb1C////////////AINCgICAgICAgPj/AFgEfCAFIAUgBqUgBr1C////////////AINCgICAgICAgPj/AFYbBSAGCyAGvSAFvYO/IAVEAAAAAAAAAABiIAZEAAAAAAAAAABichshBQwBCyAFvUL///////////8Ag0KAgICAgICA+P8AWAR8IAUgBSAGpCAGvUL///////////8Ag0KAgICAgICA+P8AVhsFIAYLIAa9IAW9hL8gBUQAAAAAAAAAAGIgBkQAAAAAAAAAAGJyGyEFCyAHQQFqIQcMAQsLIAW9An8gBZlEAAAAAAAA4EFjBEAgBaoMAQtBgICAgHgLIgC3vVEEQCAArQwBCyAFEBULIQEgCEEQaiQAIAEL0AEBAn8jAEEQayICJAACfiAAIAFBJhBoIgNFBEAgBEEANgIAQoCAgIDgAAwBCwJAIAMpAwAiARAQRQRAIAIgAygCDCIFNgIMIAUgAaciBigCBEH/////B3FJDQEgACABEAogA0KAgICAMDcDAAsgBEEBNgIAQoCAgIAwDAELIAYgAkEMahDZASEHIAMgAigCDDYCDCAEQQA2AgAgB0H//wNNBEAgACAHQf//A3EQpgMMAQsgACAGIAVBAXRqQRBqQQIQnAQLIQEgAkEQaiQAIA
 
EL2QICAn8CfiMAQSBrIgIkAEKAgICA4AAhBwJAIAAgARBhIgEQCw0AIAAgAkEIakEHEEIaIAJBCGpBPBA7GiACQQhqIARBA3QiBUHAwgFqKAIAIgYQiwEaQZ49IAR2QQFxRQRAIAJBCGpBIBA7GiACQQhqIAVBxMIBaigCABCLARogAkEIakHBwwEQiwEaIAAgAykDABBhIggQCwRAIAAgARAKIAJBCGoQRAwCCyAIpyEDQQAhBANAIAQgAygCBEH/////B3FPRQRAAkAgAyAEEC8iBUEiRgRAIAJBCGpBxMMBEIsBGgwBCyACQQhqIAUQlAEaCyAEQQFqIQQMAQsLIAAgCBAKIAJBCGpBIhA7GgsgAkEIakE+EDsaIAJBCGogARCNARogAkEIakHLwwEQiwEaIAJBCGogBhCLARogAkEIakE+EDsaIAJBCGoQNyEHCyACQSBqJAAgBwu1BAEIfyMAQTBrIgIkAAJAIAAgARBhIgEQCw0AIAGnIgcoAgRB/////wdxIgNFDQACQCAAIAJBGGogAxBCDQBBACEDIAJBADYCFANAAkAgBygCBEH/////B3EgA0oEQEEAIQMCfwJAIARFIAcgAkEUahDZASILQaMHR3INACACKAIUQQFrIQojAEEQayIIJAAgCCAKNgIMA0ACf0EAIAgoAgwiBUEBSA0AGiAFQQFrIQYCQAJAIAcoAgRBf0wEQCAHIAZBAXRqLwEQIglBgPgDcUGAuANHIAVBAkhyDQEgByAFQQJrIgVBAXRqLwEQIgxBgNAAakH//wNxQYAISw0BIAlB/wdxQYCABHIgDEH/B3FBCnRqIQkMAgsgBiAHai0AECEJCyAGIQULIAggBTYCDCAJCyIGELoEDQALAkAgBhC8BEUEQEEAIQYMAQtBASEGIAggCkEBaiIFNgIMA0AgBSAHKAIEQf////8HcU4NASAHIAhBDGoQ2QEiBRC6BARAIAgoAgwhBQwBCwsgBRC
 
8BEUhBgsgCEEQaiQAIAZFDQAgAkHCBzYCCEEBDAELIAJBCGogCyAEELcDCyIGQQAgBkEAShshBgNAIAMgBkYNAiADQQJ0IQUgA0EBaiEDIAJBGGogBSACQQhqaigCABC+AUUNAAsMAwsgACABEAogAkEYahA3IQEMAwsgAigCFCEDDAALAAsgACABEAogAkEYahBEQoCAgIDgACEBCyACQTBqJAAgAQtaAQF+QoCAgIDgACEEIAAgARBhIgEQCwR+QoCAgIDgAAUgACADKQMAECsiBBALBEAgACABEApCgICAgOAADwsgAacgBKcQlQIhAiAAIAEQCiAAIAQQCiACrQsLCQAgACABEI0FC18AAn4CQCABQiCIpyICQX9HBEAgAkF5Rw0BIAEQDQwCCyABpyICLwEGQQVHDQAgAikDICIBQoCAgIBwg0KAgICAkH9SDQAgARANDAELIABBwNMAQQAQFEKAgICA4AALC6ABAgF/AX4gACABEGEiARALBEAgAQ8LIAGnIgUoAgRB/////wdxIQJBACEDAkAgBEEBcUUNAANAIAIgA0YEQCACIQMMAgsgBSADEC8Q4gJFDQEgA0EBaiEDDAALAAsCQCAEQQJxRQRAIAIhBAwBCwNAIAIiBCADTA0BIAUgBEEBayICEC8Q4gINAAsLIAAgBSADIAQQmgEhBiAAIAEQCiAGC5oDAgZ/A34jAEEgayIFJABCgICAgOAAIQwCQCAAIAEQYSIBEAsNAAJAAkAgACAFQQRqIAMpAwAQwgENACAFKAIEIgcgAaciCSgCBEH/////B3EiCEwNAUEgIQpCgICAgDAhCwJAIAJBAkgNACADKQMIIg0QEA0AIAAgDRArIgsQCw0BAkACQCALpyIGKAIEQf////8HcQ4CAAECCyAAIAsQCgwDCyAGQQAQLyEKQQAhBgsgB0GAgICABE4EQCAAQfQNQQAQQQwBCyAAIAVBCGogBxBCRQRAIAUgByAI
 
ayIDNgIEAkAgBARAIAVBCGogCUEAIAgQVw0BCwJAIAYEQANAIANBAUgNAiAFQQhqIAZBACADIAYoAgRB/////wdxELABIgIQVw0DIAUgAyACayIDNgIEDAALAAsgBUEIaiAKIAMQywQNAQsgBEUEQCAFQQhqIAlBACAIEFcNAQsgACALEAogACABEAogBUEIahA3IQwMBAsgBUEIahBECyAAIAsQCgsgACABEAoMAQsgASEMCyAFQSBqJAAgDAv3BAIEfgV/IwBB0ABrIgIkACADKQMIIQggAykDACEFAkACQAJAIAEQEEUEQCABECZFDQELIABBk84AQQAQFAwBCwJAIAUQEA0AIAUQJg0AIAQEQCAAIAUQzQRBAEgNAgtCgICAgOAAIQYgACAFQcYBIAVBABASIgcQCw0CIAcQEA0AIAcQJg0AIAIgCDcDKCACIAE3AyAgACAHIAVBAiACQSBqEDUhBgwCCyAAIAJBCGpBABBCGkKAgICAMCEHAkAgACABECsiBhALBEBCgICAgDAhBQwBCyAAIAUQKyIFEAsNACAAIAgQOiINRQRAIAAgCBArIgcQCw0BCyAGpyEKIAWnIgwpAgQhAQNAAkACQCABQv////8Hg1AEQEEAIQMgC0UNASAJIAooAgRB/////wdxTg0CIAlBAWohAwwBCyAKIAwgCRDMBCIDQX9KDQAgCw0BIAJBCGoQRCAAIAUQCiAAIAcQCgwFCyACIAU3AyACfiANBEAgAiAGNwMwIAIgA603AyggACAAIAhCgICAgDBBAyACQSBqECIQPgwBCyACIAc3A0ggAkKAgICAMDcDQCACQoCAgIAwNwM4IAIgBjcDKCACIAOtNwMwIAAgAkEgahCQBQsiARALDQIgAkEIaiAKIAkgAxBXGiACQQhqIAEQjQEaIAwpAgQiAadB/////wdxIANqIQlBASELIAQNAQsLIAJBCGogCiAJIAooAgRB/////wdxEFcaI
 
AAgBRAKIAAgBxAKIAAgBhAKIAJBCGoQNyEGDAILIAJBCGoQRCAAIAUQCiAAIAcQCiAAIAYQCgtCgICAgOAAIQYLIAJB0ABqJAAgBguDAgIDfwF+IwBBIGsiAiQAAkACQCAAIAEQYSIBEAsNACAAIAIgAykDABCOBA0AIAIpAwAiB0KAgICACFoEQCAAQaTCARBpDAELIAenIgNBAUYNASABpyIFKQIEpyIGQf////8HcSIERQ0BIAcgBK1+QoCAgIAEWQRAIABB9A1BABBBDAELIAAgAkEIaiADIARsIAZBH3YQqgMNAAJAIARBAUcEQANAIANBAUgNAiACQQhqIAVBACAEEFcaIANBAWshAwwACwALIAJBCGogBUEAEC8gAxDLBBoLIAAgARAKIAJBCGoQNyEBDAELIAAgARAKQoCAgIDgACEBCyACQSBqJAAgAQulAQICfwJ+IwBBEGsiAiQAAkAgACABEGEiARALBEAgASEGDAELQoCAgIDgACEGAkAgACACQQxqIAMpAwAgAaciBSgCBEH/////B3EiBCAEEGMNACACIAQ2AgggAykDCCIHEBBFBEAgACACQQhqIAcgBCAEEGMNASACKAIIIQQLIAAgBSACKAIMIgMgBCADEEoQmgEhBgsgACABEAoLIAJBEGokACAGC6cBAgN/An4jAEEQayICJAACQCAAIAEQYSIBEAsEQCABIQcMAQtCgICAgOAAIQcCQCAAIAJBDGogAykDACABpyIGKAIEQf////8HcSIEIAQQYw0AIAIgBCACKAIMIgVrIgQ2AgggACAGIAUgAykDCCIIEBAEfyAEBSAAIAJBCGogCCAEQQAQYw0BIAIoAggLIAVqEJoBIQcLIAAgARAKCyACQRBqJAAgBwu6AQICfwJ+IwBBEGsiAiQAAkAgACABEGEiARALBEAgASEGDAELQoCAgIDgACEGAkAgACACQQxqIAMpAwAgAaciBSgCBEH/////B3
 
FBABBjDQAgAiAFKAIEQf////8HcSIENgIIIAMpAwgiBxAQRQRAIAAgAkEIaiAHIARBABBjDQEgAigCCCEECyAAIAUgAigCDCIDIAQgAyAESCIFGyAEIAMgBRsQmgEhBgsgACABEAoLIAJBEGokACAGC5gEAgl+A38jAEEQayINJAAgAykDCCEHIAMpAwAhBAJAAkACQCABEBBFBEAgARAmRQ0BCyAAQZPOAEEAEBQMAQsCQCAEEBAiAg0AIAQQJg0AQoCAgIDgACEFIAAgBEHIASAEQQAQEiIIEAsNAiAIEBANACAIECYNACANIAc3AwggDSABNwMAIAAgCCAEQQIgDRA1IQUMAgtCgICAgDAhCQJAIAAgARArIgwQCwRAQoCAgIAwIQUMAQsgABBOIgUQCw0AAkAgBxAQBEAgDUF/NgIADAELIAAgDSAHEMQBQQBIDQELIAynIg4pAgQhASAAIAQQKyIJEAsNAAJAIA0oAgAiA0UNACABp0H/////B3EhDyAAIA4CfwJAIAINACAJpyICKQIEQv////8HgyEKAkAgDwRAIAFC/////weDIAp9IApQrSIEfSEHIAOtIQgDQCAEIAt8IgEgB1UNAiAOIAIgAacQzAQiA0EASA0CIAAgDiALpyADEJoBIgEQCw0GIAAgBSAGIAFBABCqAUEASA0GIAogA6x8IQsgBkIBfCIGIAhSDQALDAQLIApQRQ0BDAMLIAZC/////w+DIQYgC6cMAQtBAAsgDxCaASIBEAsNASAAIAUgBiABQQAQqgFBAEgNAQsgACAMEAogACAJEAoMAgsgACAFEAogACAMEAogACAJEAoLQoCAgIDgACEFCyANQRBqJAAgBQvTAgEDfiMAQTBrIgIkACACIAE3AyggAykDACEFAkACQCABEBBFBEAgARAmRQ0BCyAAQZPOAEEAEBRCgICAgOAAIQcMAQsCQCAFEBANACAFECYNAEKAgICA4AAhByAAIAU
 
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
 
UEAQQAQNQshBCAAIAEQCgsgBAvWAgICfwR+IwBBIGsiBSQAAn4CQCAAIAUgACABECkiCRBADQBBLCEGQoCAgIAwIQgCQCACQQFIIARyRQRAQQAhAiADKQMAIgEQEA0BIAAgARArIggQCw0CQX8hBiAIpyICKAIEQQFHDQEgAi0AECEGDAELQQAhAgsgACAFQQhqQQAQQhpCACEBIAUpAwAiB0IAIAdCAFUbIQoCQANAIAEgClIEQAJAIAFQDQAgBkEATgRAIAVBCGogBhA7GgwBCyAFQQhqIAJBACACKAIEQf////8HcRBXGgsgACAJIAGnEHgiBxALDQICQCAHECYNACAHEBANACAFQQhqIAQEfiAAIAcQ1QQFIAcLEI0BDQMLIAFCAXwhAQwBCwsgACAIEAogACAJEAogBUEIahA3DAILIAVBCGoQRCAAIAgQCgsgACAJEApCgICAgOAACyEBIAVBIGokACABC/MBAgF/An4jAEEgayIEJAACfgJAAkACQCAAIARBEGogACABECkiBRBADQAgBCkDECIGQgFTDQEgBCAGQgF9IgE3AwggAkECTgRAIAAgBEEIaiADKQMIQn8gASAGEH4NASAEKQMIIQELA0AgAUIAUw0CIAAgBSABIARBGGoQiQEiAkEASA0BIAIEQCAAIAMpAwAQDSAEKQMYQQAQ3gENBAsgAUIBfSEBDAALAAsgACAFEApCgICAgOAADAILQn8hAQsgACAFEAogAUL/////D4MgAUKAgICACHxC/////w9YDQAaIAG5EBULIQEgBEEgaiQAIAEL9QICAX8EfiMAQSBrIgQkAAJ+AkACQCAAIARBEGogACABECkiBxBADQBCfyEGIAQpAxAiCEIBUw0BIARCADcDCCACQQJOBEAgACAEQQhqIAMpAwhCACAIIAgQfg0BCwJAIAcgBEEEaiAEEI4CRQRAIAQpAwghAQwBCyAEKQMIIgUgBDUCACIBIAEgBV
 
MbIQEgBCgCBCECA0AgASAFUgRAIAAgAykDABANIAIgBadBA3RqKQMAEA1BABDeAQRAIAUhBgwFBSAFQgF8IQUMAgsACwsgBCABNwMICyABIAggASAIVRshBQNAIAEgBVENAiAAIAcgASAEQRhqEIkBIgJBAEgNAQJAIAJFDQAgACADKQMAEA0gBCkDGEEAEN4BRQ0AIAEhBgwDCyABQgF8IQEMAAsACyAAIAcQCkKAgICA4AAMAQsgACAHEAogBkL/////D4MgBkKAgICACHxC/////w9YDQAaIAa5EBULIQEgBEEgaiQAIAEL3AICCH4BfyMAQTBrIg0kAEKAgICAMCEGAkACQCAAIA1BCGogACABECkiBxBABEBCgICAgDAhBQwBC0KAgICAMCEFIAAgAykDACIKEGcNAEKAgICAMCEJIAJBAk4EQCADKQMIIQkLIA0pAwgiBUIAIAVCAFUbIQsDQCAIIAtSBEACfiAIIgVCgICAgAhaBEAgCLkQFSEFCyAFCxALDQIgACAHIAUQngEiBhALDQIgDSABNwMgIA0gBTcDGCANIAY3AxAgACAKIAlBAyANQRBqECIiDBALDQIgACAMECwEQCAEBEAgACAGEAogACAHEAoMBQsgACAFEAogACAHEAogBiEFDAQFIAAgBhAKIAAgBRAKIAhCAXwhCAwCCwALCyAAIAcQCkL/////D0KAgICAMCAEGyEFDAELIAAgBRAKIAAgBhAKIAAgBxAKQoCAgIDgACEFCyANQTBqJAAgBQv1AQIBfwJ+IwBBIGsiBCQAAkACQCAAIARBGGogACABECkiBhBADQAgBEIANwMQAkAgAkEBTARAIAQgBCkDGCIFNwMIDAELIAQpAxghBSADKQMIIgEQEEUEQCAAIARBEGogAUIAIAUgBRB+DQILIAQgBTcDCCACQQNIDQAgAykDECIBEBANACAAIARBCGogAUIAIAUgBRB+DQEgBCkDCCEFCyA
 
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
 
RApIgEQCw0CIAAgBCABQoCAgIAwQQEQxgUNAiAAIAEQCgsgAkEBaiECDAALAAsgACAEEAogACABEApCgICAgOAAIQQLIAQLGwAgACADKQMAIAMpAwgQWEEAR61CgICAgBCEC5sCAgN+A38jAEEgayICJABCgICAgOAAIQQgACADKQMAECkiBRALRQRAQoCAgIAwIQECfgJAIAAgAkEcaiACQRhqIAWnQQMQkAENACAAED0iARALDQAgAigCHCEHIAIoAhghCEEAIQMDQCADIAhHBEAgACAHIANBA3RqIgkoAgQQXiIGEAsNAiACIAY3AwggAiAFNwMAIABCgICAgDBBAiACQQAQ2AQhBCAAIAYQCiAEEAsNAiAEEBBFBEAgACABIAkoAgQgBEGHgAEQGUF/TA0DCyADQQFqIQMMAQsLIAAgByAIEGQgAQwBCyAAIAIoAhwgAigCGBBkIAAgBRAKIAEhBUKAgICA4AALIQQgACAFEAoLIAJBIGokACAEC20AAn4CQCADKQMAIgFC/////29YBEAgBEUNASAAEChCgICAgOAADwtCgICAgOAAIAAgARCZBCICQQBIDQEaIAQEQCACQQBHrUKAgICAEIQPCyACDQAgAEGrnAFBABAUQoCAgIDgAA8LIAEQDQsLTwACQAJAIAMpAwAiAUL/////b1gEQCAERQRAQoCAgIAQDwsgABAoDAELIAAgARCfASIAQQBODQELQoCAgIDgAA8LIABBAEetQoCAgIAQhAsQACAAIAMpAwBBAkEAEP8CCxAAIAAgAykDAEEBQQAQ/wILLQEBfkKAgICA4AAhASAAIAMpAwAiBCADKQMIENoEBH5CgICAgOAABSAEEA0LC30BAn4gAykDACIBQv////9vWARAIAAQKEKAgICA4AAPCyADKQMQIQZCgICAgOAAIQUCQCAAIAMpAwgQOSICRQ0AIAAgASACIAYgBEVBDnQQ2QQhAyAAIAIQESADQQ
 
BIDQAgBARAIANBAEetQoCAgIAQhA8LIAEQDSEFCyAFCycAIAAgAykDACIBIAMpAwhBARCbAkEASARAQoCAgIDgAA8LIAEQDQs4ACADKQMAIgFCIIinIgJBf0YgBEVBACACQX5xQQJHG3JFBEAgABAoQoCAgIDgAA8LIAAgARD7AQtiAQF+AkAgAykDACIBECANACABECYNACAAQcChAUEAEBRCgICAgOAADwsCQCAAIAEQUiIBEAtFBEAgAykDCCIEEBANASAAIAEgBBDaBEUNASAAIAEQCgtCgICAgOAADwsgAQu4AQECfiABECBFBEAgABAoQoCAgIDgAA8LQoCAgIDgACEFAn4gACABQTYgAUEAEBIiBBAQBEAgAEGOARAxDAELIAAgBBA+CyIEEAsEfkKAgICA4AAFAn4gACABQTMgAUEAEBIiARAQBEAgAEEvEDEMAQsgACABED4LIgEQCwRAIAAgBBAKQoCAgIDgAA8LAkAgBBD2AQ0AIAEQ9gENACAAQb4VIARBkJwBEL0BIQQLIAAgBCABEMYCCwtpAgF/AX5B8KYEKAIABEAQggULQfCmBBDXBSICNgIAIAIQ4AQhAkGApwQgATYCAEH0pgQgAjYCACACIAAgABBDQY0IELYFIgMgARCnAwRAQfSmBCgCACADEApBAA8LQfimBCADNwMAQQELvgICA38BfCMAQdAAayIEJAAgBEEQakEAQTgQSxogBEKAgICAgICA+D83AyBCgICAgMB+IQECQCACRQ0AIAJBByACQQdIGyICQQAgAkEAShshAgNAIAIgBUcEQCAAIARBCGogAyAFQQN0IgZqKQMAEEcEQEKAgICA4AAhAQwDCyAEKwMIIge9QoCAgICAgID4/wCDQoCAgICAgID4/wBRDQIgBEEQaiAGaiAHnTkDAAJAIAUNACAEKwMQIgdEAAAAAAAAAABmRSAHRAAAAAAAAFlAY0VyDQAgBCAHRAAAAAAAsJ1
 
AoDkDEAsgBUEBaiEFDAELCyAEQRBqQQAQjAMiB70CfyAHmUQAAAAAAADgQWMEQCAHqgwBC0GAgICAeAsiALe9UQRAIACtIQEMAQsgBxAVIQELIARB0ABqJAAgAQsnABCrBSIBQoCAgIAIfEL/////D1gEQCABQv////8Pgw8LIAG5EBULCABCgICAgDALwAEBAn4jAEEQayICJAACfgJAIAAgACABECkiAUEBEJsDIgUQCw0AIAUQjgEEQCAAIAJBCGogBRBHQQBIDQFCgICAgCAgAisDCL1CgICAgICAgPj/AINCgICAgICAgPj/AFENAhoLIAAgAUGl6wAQzAIiBBALDQAgACAEEDpFBEAgAEH99wBBABAUIAAgBBAKDAELIAAgBCABQQBBABA1DAELQoCAgIDgAAshBCAAIAEQCiAAIAUQCiACQRBqJAAgBAvgAQIBfAF+IwBBEGsiAiQAQoCAgIDgACEFAkAgACACQQhqIAEQuAINACAAIAJBCGogAykDABBHDQAgAgJ+An8gAisDCCIEvUKAgICAgICA+P8Ag0KAgICAgICA+P8AUgRAIASdIgREAAAAAACwnUCgIAQgBEQAAAAAAABZQGMbIAQgBEQAAAAAAAAAAGYbIQQLIAS9An8gBJlEAAAAAAAA4EFjBEAgBKoMAQtBgICAgHgLIgO3vVELBEAgA60MAQsgBBAVCzcDACAAIAFBASACQREQ/gQhBQsgAkEQaiQAIAULUQEBfiMAQRBrIgIkAEKAgICA4AAhBAJAIAAgAkEIaiABELgCDQAgACACQQhqIAMpAwAQRw0AIAAgASACKwMIEPkDEP8EIQQLIAJBEGokACAEC6kBAQF8IwBB0ABrIgIkAAJ+QoCAgIDgACAAIAEgAiAEQQ9xQQAQ3QMiAEEASA0AGkKAgICAwH4gAEUNABogBEGAAnEEQCACIAIrAwBEAAAAAACwncCgOQMACyACIARBBHZBD3FBA3Rq
 
KwMAIgW9An8gBZlEAAAAAAAA4EFjBEAgBaoMAQtBgICAgHgLIgS3vVEEQCAErQwBCyAFEBULIQEgAkHQAGokACABC4UBAQF8IwBBEGsiAiQAAn5CgICAgOAAIAAgAkEIaiABELgCDQAaQoCAgIDAfiACKwMIIgS9Qv///////////wCDQoCAgICAgID4/wBWDQAaAn4gBJ0iBJlEAAAAAAAA4ENjBEAgBLAMAQtCgICAgICAgICAfwsQ3AOtCyEBIAJBEGokACABC3UBAX4CQCABECBFBEAgABAoDAELAkAgAykDACIEEJsBRQ0AIAAgBBA5IgJFDQEgACACEBFBESEDAkACQAJAIAJBxgBrDgMCAwEACyACQRZHDQILQRAhAwsgACABIAMQmwMPCyAAQfD3AEEAEBQLQoCAgIDgAAtoAQF8IwBBEGsiAiQAAn5CgICAgOAAIAAgAkEIaiABELgCDQAaIAIrAwgiBL0CfyAEmUQAAAAAAADgQWMEQCAEqgwBC0GAgICAeAsiALe9UQRAIACtDAELIAQQFQshASACQRBqJAAgAQvFAQEBfyAEQQFxIQYgBSkDAEEyED8iAigCBCEFIAMpAwAhAQJAAkACQCAEQQJOBEAgBUF+cUEERw0CIAJBBTYCBCAGBEAgACACIAEQ3gMMAgsgACACIAFBARD8AgwBCyAFQQNHDQIgAiAGNgIUIAEQDSEBAkAgBgRAIAAgARCSAQwBCyACKAJEQQhrIAE3AwALIAAgAhCDBQtCgICAgDAPC0Gl6QBBoQ1B05kBQYzqABAAAAtBsOoAQaENQdyZAUGM6gAQAAALhAICAn8CfiMAQSBrIgIkACABQTIQPyEGAkAgACACQRBqEI8DIgEQC0UEQCAGRQRAIABB0OgAQQAQFCACIAAQkQE3AwggACACKQMYIgdCgICAgDBBASACQQhqECIhCCAAIAIpAwgQCiAAIAgQCiAAIAIpAxAQCiAAIAcQC
 
gwCCyAAQTAQaiIFBEAgBSAENgIIIAUgAykDABANNwMQIAUgARANIgE3AxggBSACKQMQNwMgIAUgAikDGDcDKCAFIAZByABqEEwgBigCBEEDRg0CIAAgBhCDBQwCCyAAIAIpAxAQCiAAIAIpAxgQCiAAIAEQCgtCgICAgOAAIQELIAJBIGokACABCxgAIAAgAykDABANIAAgBSkDABD4ARCSAwvWBAICfwJ+IwBBMGsiBSQAAkAgAAJ/AkAgACAFQSBqEI8DIggQC0UEQCABQTAQPyIGRQRAIABB4OcAQQAQFAwCCwJAIARFBEAgBikDCBANIQEMAQsgACAGKQMAIgFBBkEXIARBAUYbIAFBABASIgEQCw0CIAEQEEUEQCABECZFDQELIAMpAwAQDSEBIARBAUYEQCAFIAAgAUEBEJIDNwMAIAVBIGoMBAsgBSABNwMAIAVBIGpBCHIMAwsgBSAAIAYpAwAgASACQQBKIAMgBUEUahCWBSIHNwMYIAAgARAKIAcQCw0BIAUoAhRBAkYEQCAFIAAgByAFQRRqEKAFNwMYIAAgBxAKIAUpAxgiBxALDQILIAcQCw0BIAAgACkDUEEBIAVBGGpBABCMAiIBEAsEQCAAIAUpAxgQCgwCCyAFKAIUIQMjAEEQayICJAAgAiADQQBHrUKAgICAEIQ3AwggAEE2QQFBAEEBIAJBCGoQ5QEhByACQRBqJAAgBSAHNwMAAkAgBxALRQRAIAAgBSkDGBAKIAVCgICAgDA3AwggACABIAUgBUEgahC6AiECIAAgBxAKIAAgARAKIAAgBSkDIBAKIAAgBSkDKBAKIAINAQwFCyAAIAEQCiAAIAUpAxgQCiAAIAUpAyAQCiAAIAUpAygQCgsgACAIEAoLQoCAgIDgACEIDAILIAUgABCRATcDACAFQSBqQQhyCykDAEKAgICAMEEBIAUQIiEBIAAgBSkDABAKIAAgARAKIAAgBSkDIBAKIAAgBS
 
kDKBAKCyAFQTBqJAAgCAsGACABEA0L8QIBBX4jAEEwayICJAACQCABECBFBEAgABAoQoCAgIDgACEFDAELIAAgAkEgaiABEMECIgUQCw0AQoCAgIAwIQZCgICAgDAhBAJAAkAgACABQYABIAFBABASIggQCw0AIAAgCBBnDQAgACADKQMAQQAQ9QEiBBALBEAMAQsgACAEQeoAIARBABASIgYQCw0AA0AgAiAAIAQgBiACQRRqEKsBIgc3AxggBxALDQEgAigCFA0CIAAgCCABQQEgAkEYahAiIQcgACACKQMYEAogBxALRQRAIAAgACAHQf8AQQIgAkEgahC5AhCNAkUNAQsLIAAgBEEBEK8BGgsgAiAAEJEBNwMIIAAgAikDKEKAgICAMEEBIAJBCGoQIiEBIAAgAikDCBAKIAAgBSABIAEQCyIDGxAKQoCAgIDgACAFIAMbIQULIAAgCBAKIAAgBhAKIAAgBBAKIAAgAikDIBAKIAAgAikDKBAKCyACQTBqJAAgBQv2AgIFfgF/IwBBIGsiAiQAIAAgBSkDABD4ASELIAIgBSkDECIHNwMYIAUpAyAhCSAFKQMYIQhCgICAgOAAIQECQCAAIAJBFGogBSkDCBCTAg0AAkAgCw0AIAVCgYCAgBA3AwACQCAEQQNxIgVBAUYEQCAAED0iBhALDQMCQCAAQaDmAEGp5gAgBEEEcSIEGxBxIgoQCw0AIAAgBkGIASAKQQcQGUEASA0AIAAgBkGJAUHAACAEGyADKQMAEA1BBxAZQX9KDQILIAAgBhAKDAMLIAMpAwAQDSEGCyAAIAcgAigCFCAGQQcQnAFBAEgNASAAIAlBfxDgAyIDQQBIDQEgA0UNAAJAIAVBAkYEQCACIAAgBxCEBSIGNwMIIAYQCw0DIAAgCEKAgICAMEEBIAJBCGoQIiEBIAAgAikDCBAKDAELIAAgCEKAgICAMEEBIAJBGGoQIiEBCyABEAsNASAAIAE
 
QCgtCgICAgDAhAQsgAkEgaiQAIAELyQYCDX4BfyMAQfAAayICJAAgAkKAgICAMDcDUAJAIAEQIEUEQCAAEChCgICAgOAAIQkMAQsgACACQeAAaiABEMECIgkQCw0AQoCAgIAwIQhCgICAgDAhBkKAgICAMCEHAkACQCAAIAFBgAEgAUEAEBIiDhALDQAgACAOEGcNAAJAIAAgAykDAEEAEPUBIgcQCwRADAELIAAgB0HqACAHQQAQEiIIEAsNACACIAAQTiIFNwNQIAUQCw0AIAAQTiIGEAsNASAAIAZBAEIBQQcQnAFBAEgNASACQeAAaiAEQQJGQQN0ciEDIAIpA2AhESACKQNoIQ8CQAJAA0AgAiAAIAcgCCACQQxqEKsBIgU3A1ggBRALDQQgAigCDEUEQCAAIA4gAUEBIAJB2ABqECIhCyAAIAIpA1gQCiALEAsNAyACIAo3AxggAkKAgICAEDcDECACIAIpA1A3AyAgAiADKQMANwMoIAIgBjcDMCAAQTVBASAEQQUgAkEQahDlASIFEAsNAgJAIARBAUYEQCAAQTVBAUEFQQUgAkEQahDlASIMEAsNBAwBCwJAIARBAkcEQCAFIRAgDyINIQUMAQsgESINIRAgACACKQNQIAqnQoCAgIAwQQcQnAFBAEgNBQsgBSEMIA0QDRogECEFCyAAIAZBARDgA0F/TARAIAAgCxAKIAAgBRAKIAAgDBAKDAQLIAIgDDcDSCACIAU3A0AgACALQf8AQQIgAkFAaxC5AiENIAAgBRAKIAAgDBAKIApCAXwhCiAAIA0QjQJFDQEMAwsLIAAgBkF/EOADIhJBAEgNAyASRQ0EIARBAkYEQCAAIAIpA1AQhAUiARALDQQgACACKQNQEAogAiABNwNQCyAAIAAgAykDAEKAgICAMEEBIAJB0ABqECIQjQINAwwECyAAIAsQCgsgACAHQQEQrwEaDAELCyACIAAQkQE3AwAgACACKQNo
 
Ig9CgICAgDBBASACECIhASAAIAIpAwAQCiABEAtFBEAgACABEAoMAQsgACAJEApCgICAgOAAIQkLIAAgDhAKIAAgBhAKIAAgAikDUBAKIAAgCBAKIAAgBxAKIAAgAikDYBAKIAAgDxAKCyACQfAAaiQAIAkLCQAgBSkDABANCxUAIAAgBSkDABANEJIBQoCAgIDgAAurAQEBfiMAQRBrIgIkACAFKQMAIQYgAiAAIAUpAwhCgICAgDBBAEEAECIiATcDCAJAIAEQCw0AIAAgBkEBIAJBCGpBABCMAiEBIAAgAikDCBAKIAEQCw0AIAIgAEEzQTQgBBtBAEEAQQEgAxDlASIGNwMAIAYQCwRAIAAgARAKIAIpAwAhAQwBCyAAIAFB/wBBASACELkCIQEgACACKQMAEAoLIAJBEGokACABC/EBAQJ+IwBBIGsiAiQAIAMpAwAhBAJAIAAgAUKAgICAMBDyASIFEAsNAAJAIAAgBBA6RQRAIAIgBBANIgQ3AxAgAiAEEA03AxgMAQsgAiAENwMIIAIgBTcDAEEAIQMDQCADQQJGDQEgAkEQaiADQQN0aiAAQTJBASADQQIgAhDlASIENwMAIAQQCwRAIANBAUYEQCAAIAIpAxAQCgsgACAFEApCgICAgOAAIQUMAwUgA0EBaiEDDAELAAsACyAAIAUQCiAAIAFB/wBBAiACQRBqEMMCIQUgACACKQMQEAogACACKQMYEAoLIAJBIGokACAFCzkAIwBBEGsiAiQAIAJCgICAgDA3AwAgAiADKQMANwMIIAAgAUH/AEECIAIQwwIhASACQRBqJAAgAQulAQIBfwN+IwBBEGsiAiQAQoCAgIDgACEFAkAgACABQSoQaEUNACAAIAFCgICAgDAQ8gEiBhALBEAgBiEFDAELIAAgAiAGEMECIQcgACAGEAoCQCAHEAsNACAAIAEgAyACELoCIQMDQCAEQQJGRQRAIAAgAiAEQQN0aikDA
 
BAKIARBAWohBAwBCwsgA0UNACAAIAcQCgwBCyAHIQULIAJBEGokACAFC98BAgN+AX8jAEEQayIGJAAgAUEFRgRAIAIpAxAhAyAAIAIpAxgQ+AEhASAGIAIpAyAiBDcDCCAGAn4gAxAQBEAgBBANIgMgAUUNARogACADEJIBQoCAgIDgAAwBCyAAIANCgICAgDBBASAGQQhqECILIgM3AwAgAxALIgEEQCAGIAAQkQEiAzcDAAtCgICAgDAhBCAAIAIgAUEDdGopAwAiBRAQBH4gAwUgACAFQoCAgIAwQQEgBhAiIQQgBikDAAsQCiAGQRBqJAAgBA8LQdfjAEGhDUHX6QJB4eMAEAAAC4EBAQN/AkAgAUEyED8iBEUNACAEQcwAaiEDIARByABqIQUDQCADKAIAIgMgBUZFBEAgACADKQMQIAIQISAAIAMpAxggAhAhIAAgAykDICACECEgACADKQMoIAIQISADQQRqIQMMAQsLIAQoAgRBfnFBBEYNACAAIARBCGogAhDwAwsLFgEBfyABQTIQPyICBEAgACACEK0FCwslAQF/IAFBMBA/IgMEQCAAIAMpAwAgAhAhIAAgAykDCCACECELCycBAX8gAUEwED8iAgRAIAAgAikDABAlIAAgAikDCBAlIAAgAhAfCwsWAQF/IAGnKAIgIgIEQCAAIAIQrgULCygBAX8gAacoAiAiAgRAIAAgAigCCBCGBSAAIAIpAwAQJSAAIAIQHwsLgAEBBX8gAUEqED8iBQRAIAVBBGohBgNAIARBAkZFBEAgBiAEQQN0aiIHQQRqIQMDQCADKAIAIgMgB0ZFBEAgACADKQMIIAIQISAAIAMpAxAgAhAhIAAgAykDGCACECEgA0EEaiEDDAELCyAEQQFqIQQMAQsLIAAgBSkDGCACECELC2kBBn8gAUEqED8iBARAIARBBGohBQNAIAJBAkZFBEAgBSACQQN0aiIGKAIEIQMDQCADIAZGRQ
 
RAIAMoAgQhByAAIAMQuwIgByEDDAELCyACQQFqIQIMAQsLIAAgBCkDGBAlIAAgBBAfCwtYAQF/QQAhAgN+IAJBAkYEQEKAgICAMA8LIAUgAkEDdCIEaiIGKQMAEBAEfiAGIAMgBGopAwAQDTcDACACQQFqIQIMAQUgAEGg4wBBABAUQoCAgIDgAAsLC88CAQN/IwBBEGsiByQAAn4gACABIAVBI2oQaCIDRQRAIARBADYCAEKAgICA4AAMAQsCQCADKQMAIgEQEA0AIAEgBUEfahA/IgYEQAJAIAMoAgwiCEUEQCAGKAIIIQIMAQsgCCgCFCECIAAoAhAgCBDyAwsgBkEEaiEGA0AgAiAGRgRAIANBADYCDCAAIAMpAwAQCiADQoCAgIAwNwMADAMLIAJBDGsoAgAEQCACKAIEIQIMAQsLIAJBEGsiBiAGKAIAQQFqNgIAIAMgBjYCDCAEQQA2AgAgAygCCCIDRQRAIAIpAxAQDQwDCyAHIAIpAxAiATcDACAFRQRAIAIpAxghAQsgByABNwMIIANBAUYEQCABEA0MAwsgAEECIAcQkAMMAgtBoOIAQaENQf3nAkGq4gAQAAALIARBATYCAEKAgICAMAshASAHQRBqJAAgAQt4AQJ+QoCAgIDgACEGAkAgACABIARBA3EiAkEfahBoRQ0AIAAgAkEjahChASIFEAsNACAAQRAQLSICRQRAIAAgBRAKQoCAgIDgAA8LIAEQDSEBIAJBADYCDCACIARBAnU2AgggAiABNwMAIAUgAhCKASAFIQYLIAYLkwICA34CfyMAQSBrIggkAEKAgICA4AAhBQJAIAAgASAEQR9qEGgiCUUNACADKQMAIQdCgICAgDAhBiACQQJOBEAgAykDCCEGCyAAIAcQZw0AIAlBBGohAiAJKAIIIQMDQCACIANGBEBCgICAgDAhBQwCCyADQQxrKAIABEAgAygCBCEDBSADQRBrIgkgCSgCAEEBajY
 
CACAIIAMpAxAQDSIFNwMIIARFBEAgAykDGBANIQULIAggATcDECAIIAU3AwAgACAHIAZBAyAIECIhBSAAIAgpAwAQCiAERQRAIAAgCCkDCBAKCyADKAIEIQMgACgCECAJEPIDIAUQCw0CIAAgBRAKCwwACwALIAhBIGokACAFCzEAIAAgASACQR9qEGgiAEUEQEKAgICA4AAPCyAAKAIMIgBBAE4EQCAArQ8LIAC4EBULWQEBfyAAIAEgBEEfahBoIgJFBEBCgICAgOAADwsgAkEEaiEDIAIoAgghBAN+IAMgBEYEfkKAgICAMAUgBEEQayEFIAQoAgQhBCAAKAIQIAIgBRCIBQwBCwsLSQAgACABIARBH2oQaCICRQRAQoCAgIDgAA8LIAAgAiADKQMAEP4CEP0CIgNFBEBCgICAgBAPCyAAKAIQIAIgAxCIBUKBgICAEAs1ACAAIAEgBEEfahBoIgJFBEBCgICAgOAADwsgACACIAMpAwAQ/gIQ/QJBAEetQoCAgIAQhAs+ACAAIAEgBEEfahBoIgJFBEBCgICAgOAADwsgACACIAMpAwAQ/gIQ/QIiAEUEQEKAgICAMA8LIAApAygQDQv5AwIDfgR/QoCAgIDgACEHAkAgACABIARBH2oQaCICRQ0AIAMpAwAQ/gIhBQJAIAIoAgBFDQAgBRAgDQAgABAoQoCAgIDgAA8LQoCAgIAwIQYgBEEBcUUEQCADKQMIIQYLAkAgACACIAUQ/QIiBARAIAAgBCkDKBAKDAELAn9BACAAQTAQLSIDRQ0AGiADIAI2AgggA0IBNwMAAkAgAigCAARAIAMgBaciBCgCGDYCDCAEIAM2AhgMAQsgBRANGgsgAyAFNwMgIANBGGogAigCECACKAIUQQFrIAUQ4gNxQQN0ahBMIANBEGogAkEEahBMIAIgAigCDEEBaiIENgIMIAIoAhggBE0EQCMAQRBrIggkACAAIAIoAhBBBCACKAIU
 
IgBBAXQgAEEBRhsiAEEDdCAIQQxqELMBIgkEQCAIKAIMQQN2IABqIQRBACEAA0AgACAERwRAIAkgAEEDdGoQbiAAQQFqIQAMAQsLIARBAWshCiACQQhqIQAgAkEEaiELA0AgCyAAKAIAIgBHBEAgAEEMaygCAEUEQCAAQQhqIAkgACkDEBDiAyAKcUEDdGoQTAsgAEEEaiEADAELCyACIAQ2AhQgAiAJNgIQIAIgBEEBdDYCGAsgCEEQaiQACyADCyIERQ0BCyAEIAYQDTcDKCABEA0hBwsgBwswACAFKQMAIgFBKRA/IgIEQCACQQE6ABEgACABEAogBUKAgICAIDcDAAtCgICAgDALlAEBAn5CgICAgDAhAQJAIABCgICAgDAgAiADEIgGIgQQCw0AAn4jAEEQayICJAAgAiAENwMIIABBMUEAQQBBASACQQhqEOUBIQEgAkEQaiQAIAELEAsNACAAED0iBRALDQAgACAFQYMBIARBBxAZGiAAIAVBhAEgAUEHEBkaIAUPCyAAIAQQCiAAIAEQCkKAgICA4AAL2gICA38CfiMAQdAAayIGJABBfyEHAkAgACAGQcgAaiABQcIAEIQBIghFDQAgBikDSCIBEBAEQCAAIAgpAwAgAiADEA0gBCAFEIgEIQcMAQsCQAJAIAAgAhBeIgkQCwRAIAAgARAKDAELIAgpAwAhCiAGIAQ3AzggBiADNwMwIAYgCTcDKCAGIAo3AyAgACABIAgpAwhBBCAGQSBqEDUhASAAIAkQCiABEAsNAiAAIAEQLCIHBEAgACAGIAgoAgAgAhBTIgJBAEgNASACRQ0DAkAgBigCACICQRNxRQRAIAAgBikDCCADEFhFDQEMBAsgAkERcUEQRw0DIAYpAxgQEEUNAwsgACAGEE0gAEGj3ABBABAUDAELIAVBgIABcUUEQEEAIQcgBUGAgAJxRQ0DIAAQ+gFFDQMLIABBu9wAQQAQFAtBfyEHDAELI
 
AAgBhBNCyAGQdAAaiQAIAcLogICAn8CfiMAQUBqIgQkAAJAAkAgACAEQThqIAFBwQAQhAEiBUUNACAEKQM4IgEQEARAIAAgBSkDACACIANBABASIQEMAgsgACACEF4iBhALBEAgACABEAoMAQsgBSkDACEHIAQgAzcDMCAEIAY3AyggBCAHNwMgIAAgASAFKQMIQQMgBEEgahA1IQEgACAGEAogARALDQAgACAEIAUoAgAgAhBTIgJBAEgNACACRQ0BAkACQCAEKAIAIgJBE3FFBEAgACAEKQMIIAEQWEUNAQwCCyACQRFxQRBHDQEgBCkDEBAQRQ0BIAEQEA0BCyAAIAQQTSAAIAEQCiAAQYvcAEEAEBQMAQsgACAEEE0MAQtCgICAgOAAIQELIARBQGskACABC/YBAgN/An4jAEFAaiIDJABBfyEEAkAgACADQThqIAFB4wAQhAEiBUUNACADKQM4IgEQEARAIAAgBSkDACACEHchBAwBCwJAAkAgACACEF4iBhALBEAgACABEAoMAQsgBSkDACEHIAMgBjcDKCADIAc3AyAgACABIAUpAwhBAiADQSBqEDUhASAAIAYQCiABEAsNAiAAIAEQLCIEDQIgACADIAUoAgAiBCACEFMiAkEASA0AIAJFDQEgAygCACECIAAgAxBNIAJBAXEEQCAELQAFQQFxDQILIABB89sAQQAQFAtBfyEEDAELQQAhBAsgA0FAayQAIAQLuwUCA38DfiMAQUBqIgckAEF/IQgCQCAAIAdBOGogAUHlABCEASIJRQ0AIAcpAzgiChAQBEAgACAJKQMAIAIgAyAEIAUgBhB1IQgMAQsCQCAAIAIQXiILEAsNAAJ+AkAgABA9IgEQCw0AIAZBgBBxBEAgACABQcEAIAQQDUEHEBkaCyAGQYAgcQRAIAAgAUHCACAFEA1BBxAZGgsgBkGAwABxBEAgACABQcAAIAMQDUEHEBkaCyAGQYAEcQRAIA
 
AgAUE+IAZBAXZBAXGtQoCAgIAQhEEHEBkaCyAGQYAIcQRAIAAgAUE/IAZBAnZBAXGtQoCAgIAQhEEHEBkaCyAGQYACcUUNACAAIAFBPSAGQQFxrUKAgICAEIRBBxAZGgsgAQsQCwRAIAAgCxAKDAELIAkpAwAhDCAHIAE3AzAgByALNwMoIAcgDDcDICAAIAogCSkDCEEDIAdBIGoQNSEKIAAgCxAKIAAgARAKIAoQCw0BIAAgChAsRQRAQQAhCCAGQYCAAXFFDQIgAEGw2wBBABAUQX8hCAwCCyAAIAcgCSgCACIJIAIQUyICQQBIDQEgBkGBAnEhCAJAAkAgAkUEQCAIQYACRg0BQQEhCCAJLQAFQQFxRQ0BDAQLAkAgBygCACICIAYQoQNFIAhBgAJGQQAgAkEBcRtyDQACQCAGQYAwcQRAIAJBEXFBEEcNASAGQYAQcQRAIAAgBCAHKQMQEFhFDQMLIAZBgCBxRQ0BIAAgBSAHKQMYEFgNAQwCCyAGQYDAAHFFDQAgBkECcUVBACACQQNxIgJBAkYbDQEgAg0AIAAgAyAHKQMIEFhFDQELIAZBgARxRQ0CIAcoAgBBE3FBAkcNAgsgACAHEE0LIABB0NsAQQAQFEF/IQgMAgsgACAHEE1BASEIDAELIAAgChAKCyAHQUBrJAAgCAuIAgIEfwJ+IwBBQGoiAyQAQX8hBQJAIAAgA0E4aiABQeQAEIQBIgRFDQAgAykDOCIBEBAEQCAAIAQpAwAgAkEAEN0BIQUMAQsgACACEF4iBxALBEAgACABEAoMAQsgBCkDACEIIAMgBzcDKCADIAg3AyAgACABIAQpAwhBAiADQSBqEDUhASAAIAcQCiABEAsNACAAIAEQLCIGRQRAQQAhBQwBCyAAIAMgBCgCACACEFMiAkEASA0AIAIEQAJAAkAgAy0AAEEBcQRAIAAgBCkDABCfASICQQBIDQEgAg0CCyAAQY3bAEEAEBQLIAA
 
gAxBNDAILIAAgAxBNCyAGIQULIANBQGskACAFC+QFAgt/AX4jAEFAaiIFJABBfyELAkAgACAFQThqIANB5wAQhAEiBkUNACAFKQM4IgMQEARAIAAgASACIAYoAgBBAxCQASELDAELIAAgAyAGKQMIQQEgBhA1Ig8QCw0AIAVBADYCLCAFQQA2AjQgBUEANgIwIAAgBUE0aiAPENoBIQcgBSgCNCEKAkAgBw0AAkAgCkUNACAAIApBA3QQaiIJDQBBACEJDAELAn8CQANAAkAgBCAKRgRAIApBASAKQQFLGyEIQQEhBANAIAQgCEYNAiAJIAQgCSAEQQN0aigCBBCKBSEHIARBAWohBCAHQQBIDQALIABB79kAQQAQFEEADAQLIAAgDyAEEHgiAxALDQICQCADEJsBDQAgAxD3Aw0AIAAgAxAKIABBwtkAQQAQFEEADAQLIAAgAxA5IQggACADEAogCEUNAiAJIARBA3RqIgdBADYCACAHIAg2AgQgBEEBaiEEDAELC0EAIAAgBikDABCfASIMQQBIDQEaIAYtABEEQCAAEMgCDAELIAAgBUEsaiAFQTBqIAYoAgBBAxCQAQRAIAUoAjAhBCAFKAIsIQgMAwsgBSgCLCEIIAUoAjAhBEEAIQcDQCAEIAdHBEAgBi0AEQRAIAAQyAIMBQsgACAFQQhqIAYoAgAgCCAHQQN0aiINKAIEEFMiDkEASA0EAkAgDkUNACAAIAVBCGoQTSAFLQAIQQFxQQAgDBsNACAJIAogDSgCBBCKBSINQX9MBEAgAEGJ2gBBABAUDAYLIAwNACAJIA1BA3RqQQE2AgALIAdBAWohBwwBCwsCQCAMDQBBACEGA0AgBiAKRg0BIAZBA3QhByAGQQFqIQYgByAJaigCAA0ACyAAQcHaAEEAEBQMAwsgACAIIAQQZCAAIA8QCiABIAk2AgAgAiAKNgIAQQAhCwwDC0EACyEEQQAhCAsgACAIIAQQZCAA
 
IAkgChBkIAAgDxAKCyAFQUBrJAAgCwvrAwIEfwJ+IwBB4ABrIgQkAEF/IQUCQCAAIARB2ABqIAJB5gAQhAEiBkUNACAGKAIAIQcgBCkDWCICEBAEQCAAIAEgByADEFMhBQwBCyAAIAMQXiIIEAsEQCAAIAIQCgwBCyAGKQMAIQkgBCAINwNIIAQgCTcDQCAAIAIgBikDCEECIARBQGsQNSECIAAgCBAKIAIQCw0AAkACQAJAAkAgAhAgDQAgAhAQDQAgACACEAoMAQsgACAEIAcgAxBTIgNBf0wNAiADBEAgACAEEE0LIAIQEARAQQAhBSADRQ0EIAQtAABBAXFFDQEgBy0ABUEBcUUNAQwECyAAIAYpAwAQnwEiBkF/TA0CIAAgBEEgaiACEIsFIQcgACACEAogB0EASA0DAkAgAwRAIAQoAgBBgDpBgM4AIAQoAiAiA0EQcRsgA3IQoQNFDQEgA0EBcQ0DIAQoAgAiBUEBcQ0BIANBEnENAyAFQQJxDQEMAwsgBkUNACAELQAgQQFxDQILIAAgBEEgahBNCyAAQcfYAEEAEBRBfyEFDAILAkAgAQRAIAEgBCkDIDcDACABIAQpAzg3AxggASAEKQMwNwMQIAEgBCkDKDcDCAwBCyAAIARBIGoQTQtBASEFDAELIAAgAhAKCyAEQeAAaiQAIAULJQEBfyABQSkQPyIDBEAgACADKQMAIAIQISAAIAMpAwggAhAhCwsnAQF/IAFBKRA/IgIEQCAAIAIpAwAQJSAAIAIpAwgQJSAAIAIQHwsLFgAgACADKQMAIAMpAwggAykDEBD+AwurAQIDfgJ/IwBBEGsiByQAQoCAgIDgACEEAkAgACAHQQxqIAMpAwAQkAIiCEUNACAAIAggBygCDEGQyAAQ/wMhASAAIAgQNgJAIAEQCyACQQJIcg0AIAAgAykDCCIGEDpFDQAgABA9IgUQCwRAIAAgARAKDAILIAAgBUEvIAFBBxAZQ
 
X9KBEAgACAFQS8gBhCMBSEECyAAIAUQCgwBCyABIQQLIAdBEGokACAEC70CAQN+IwBBEGsiAyQAIAQCfwJAAkAgACABQScQaCICRQRAQoCAgIAwIQFCgICAgDAhBgwBCyACKAIYBEBCgICAgDAhAUEBDAMLQoCAgIAwIQYgACACKQMAIgggAikDCCIHENgBIgEQCw0AIAEQJgRAIAJBATYCGEKAgICAMCEBQQEMAwsgAigCEARAIAAgACABQgAQYhA+IgYQCw0BIAYQ9gEEQCAAIANBCGogACAIQdUAIAhBABASEKwBQQBIDQIgACAIQdUAAn4gB6cgAykDCCACKAIUEIEDIgdCgICAgAh8Qv////8PWARAIAdC/////w+DDAELIAe5EBULEEhBf0wNAgsgACAGEAoMAgsgAkEBNgIYDAELIAAgARAKIAAgBhAKQoCAgIDgACEBC0EACzYCACADQRBqJAAgAQsGACABEA0LqAYCBH8LfiMAQTBrIgQkAAJAIAEQIEUEQCAAEChCgICAgOAAIQEMAQtCgICAgDAhCQJAAkAgACADKQMAECsiDxALBEBCgICAgDAhCkKAgICAMCEBQoCAgIAwIQxCgICAgDAhEAwBCyAAIAEgACkDSBDyASIQEAsEQEKAgICAMCEKQoCAgIAwIQFCgICAgDAhDAwBCwJAAkAgACAAIAFB7QAgAUEAEBIQPiIMEAsNACAMpyICQfUAQQAQ1wEhBiACQfkAQQAQ1wFBf0wEQCAAQb4VIAxBzdMAEL0BIgwQCw0BCyAEIAw3AyggBCABNwMgIAAgEEECIARBIGoQrgEiChALDQEgABBOIgEQCw0CAkAgAykDCCIIEBAEQEF/IQMgBEF/NgIcDAELIAAgBEEcaiAIEMQBQQBIDQMgBCgCHCIDDQAMBAsCQCAPpyIHKAIEQf////8HcSIFBEAgBkF/c0EfdiEGIAOtIRIgBa0hEUEAIQIDQCACrSELIA
 
IhAwNAIAMgBU8NAyAAIApB1QAgA60iDhBIQQBIDQYgACAJEAogACAKIA8Q2AEiCRALDQYCQCAJECYNACAAIARBEGogACAKQdUAIApBABASEKwBDQcgESAEKQMQIghTBEAgBCARNwMQIBEhCAsgCCALUQ0AIAAgByACIAMQmgEiCxALDQcgACABIA0gCxBtQQBIDQcgDUIBfCILIBJRDQggACAEQQhqIAkQQA0HIAinIQJCASEIIA0gBCkDCCIOQgEgDkIBVRt8IQ0DQCALIA1RDQMgACAAIAkgCBBiED4iDhALDQggACABIAsgDhBtQQBIDQggCEIBfCEIIAtCAXwiCyASUg0ACwwICyAHIA4gBhCBA6chAwwACwALAAsgACAKIA8Q2AEiCRALDQMgCRAmRQ0EQQAhAgsgACAHIAUgAiACIAVLGyAFEJoBIggQCw0CIAAgASANIAgQbUF/Sg0DDAILQoCAgIAwIQoLQoCAgIAwIQELIAAgARAKQoCAgIDgACEBCyAAIA8QCiAAIBAQCiAAIAoQCiAAIAwQCiAAIAkQCgsgBEEwaiQAIAELmQIBBH4CfgJAIAEQIEUEQCAAECgMAQtCgICAgDAhBgJAAkAgACADKQMAECsiBxALBEBCgICAgDAhBAwBCyAAIAFB1QAgAUEAEBIiBBALDQAgACAEQgAQWEUEQCAAIAFB1QBCABBIQQBIDQELIAAgASAHENgBIgUQCw0BIAAgAUHVACABQQAQEiIGEAsNAQJAIAAgBiAEEFgEQCAAIAQQCgwBCyAAIAFB1QAgBBBIQQBODQBCgICAgDAhBAwCCyAAIAcQCiAAIAYQCkL/////DyAFECYNAxogACAFQdcAIAVBABASIQEgACAFEAogAQ8LQoCAgIAwIQULIAAgBRAKIAAgBxAKIAAgBhAKIAAgBBAKC0KAgICA4AALC7QDAgV+AX8jAEEgayICJAACQAJAIAEQIEUEQCAAECgMAQt
 
CgICAgDAhBQJAIAAgAykDABArIggQCwRAQoCAgIAwIQRCgICAgDAhBkKAgICAMCEHDAELAkACQCAAIAEgACkDSBDyASIHEAsEQEKAgICAMCEEDAELIAAgACABQe0AIAFBABASED4iBBALRQ0BC0KAgICAMCEGDAELIAIgBDcDGCACIAE3AxAgACAHQQIgAkEQahCuASIGEAsNACAAIAJBCGogACABQdUAIAFBABASEKwBDQAgACAGQdUAAn4gAikDCCIBQoCAgIAIfEL/////D1gEQCABQv////8PgwwBCyABuRAVCxBIQQBIDQAgAEEnEKEBIgUQCw0AIABBIBAtIgNFDQAgAyAINwMIIAMgBjcDACADIASnIglB5wBBABDXAUF/c0EfdjYCECAJQfUAQQAQ1wEhCSADQQA2AhggAyAJQX9zQR92NgIUIAUgAxCKASAAIAcQCiAAIAQQCgwCCyAAIAgQCiAAIAcQCiAAIAQQCiAAIAYQCiAAIAUQCgtCgICAgOAAIQULIAJBIGokACAFC6UDAgV+An8jAEEQayICJAACQAJAIAEQIEUEQCAAECgMAQtCgICAgDAhBAJAAkAgACADKQMAECsiBhALDQAgACAAIAFB7gAgAUEAEBIQLCIDQQBIDQACQCADRQRAIAAgASAGENgBIQUMAQsgACAAIAFB7wAgAUEAEBIQLCIDQQBIDQEgACABQdUAQgAQSEEASA0BIAAQTiIFEAsNAiAGpyEJA0AgACAEEAogACABIAYQ2AEiBBALDQMgBBAmRQRAIAAgACAEQgAQYhA+IgcQCw0EIAcQ9gEhCiAAIAUgCCAHEI8BQQBIDQQgCEIBfCEIIApFDQEgACACQQhqIAAgAUHVACABQQAQEhCsAUEASA0EIAAgAUHVAAJ+IAkgAikDCCADEIEDIgdCgICAgAh8Qv////8PWARAIAdC/////w+DDAELIAe5EBULEEhBf0wNBAwBCwsgCKcN
 
ACAAIAUQCkKAgICAICEFCyAAIAQQCiAAIAYQCgwDC0KAgICAMCEFCyAAIAUQCiAAIAQQCiAAIAYQCgtCgICAgOAAIQULIAJBEGokACAFC6sSAgt/DH4jAEGQAWsiAiQAIAMpAwghGQJAIAEQIEUEQCAAEChCgICAgOAAIRQMAQsgACACQcgAakEAEEIaIAJBEGoiBkEANgIwIAZCgICAgMAANwMoIAYgADYCACAGIAZBCGo2AgRCgICAgDAhE0KAgICA4AAhFAJAAkAgACADKQMAECsiFRALBEBCgICAgDAhD0KAgICAMCEQQoCAgIAwIRFCgICAgDAhFwwBC0KAgICAMCEXAkAgACAZEDoiCkUEQCAAIBkQKyIXEAsNASAXpyEECyAAIAAgAUHuACABQQAQEhAsIgNBAEgNACADBEAgACAAIAFB7wAgAUEAEBIQLCIFQQBIDQEgACABQdUAQgAQSEEASA0BCwJAIARFDQAgA0UgBCgCBEH/////B3FyDQACf0EAIQRBfyAAIAFBPCABQQAQEiIPEAsNABogACAPIAApA0gQWCEGIAAgDxAKAkAgBkUNAEF/IQQgACABQYYBIAFBABASIg8QCw0AIA9BMEEAEI8EIQQgACAPEAoLIAQLRQ0AQQAhBiMAQTBrIgUkAEKAgICA4AAhDwJAIAAgAUEBENsBIgNFDQAgACAFQQhqQQAQQhoCQCAAIBUQKyISEAsNAAJAIAMoAgRBEGoiCy0AACIEQSFxIgxFBEAgBUIANwMgDAELIAAgAUHVACABQQAQEiIUEAsNASAAIAVBIGogFBCsAQ0BC0EAIQMCQCALLQABIgdBAUkNACAAIAdBA3QQLSIGDQBBACEGDAELIARBEHEhDSAEQQFxIQ4gEqciB0EQaiEJIAcpAgQiEKdBH3YhCiAFKQMgIRECQANAIBEgEEL/////B4NVDQECQCAGIAsgCSARpyAQp0H/////B3EgCiAAEMQEI
 
gRBAUcEQCAEQQBIDQEgDEVBACAEQQJHGw0DIAAgAUHVAEIAEEhBAEgNBAwDCyAGKAIAIQggBSAGKAIEIAlrIAp1IgQ2AiwgBSAErDcDICAIIAlrIAp1IgggA0oEQCAFQQhqIAcgAyAIEFcNBAsgDkUEQCAAIAFB1QAgBCIDrRBIQQBODQMMBAsCQCAIIAQiA0cNAAJAAkAgDUUNACAHKAIEIgNBf0oNACAIIANB/////wdxSQ0BCyAFIAhBAWoiAzYCLAwBCyAHIAVBLGoQ2QEaIAUoAiwhAwsgBSADrCIRNwMgIAcpAgQhECAEIQMMAQsLIABB1dIAQQAQQQwBCyAFQQhqIAcgAyAHKAIEQf////8HcRBXDQAgACASEAogACAGEBggBUEIahA3IQ8MAQsgACASEAogACAGEBggBUEIahBECyAFQTBqJAAgDyEUDAELIBWnIQYgA0UhC0KAgICAMCERA0ACQAJ/AkACQAJAIAAgASAVENgBIg8QCw0AIA8QJg0EAn8jAEEQayIHJAACf0F/IAJBEGoiAygCMA0AGgJAIAMoAigiBCADKAIsSARAIAMoAgQhBAwBCyAEIARBAXVqQR9qQW9xIQkgAygCACEEAkACQCADKAIEIgggA0EIakYEQCAEQQAgCUEDdCAHQQxqELMBIgRFDQEgBCAIKQMANwMAIAQgCCkDGDcDGCAEIAgpAxA3AxAgBCAIKQMINwMIIAcoAgwhCCADIAQ2AgQgAyAIQQN2IAlqNgIsDAMLIAQgCCAJQQN0IAdBDGoQswEiBA0BCyADEI8FIAMoAgAgDxAKIANBfzYCMEF/DAILIAcoAgwhCCADIAQ2AgQgAyAIQQN2IAlqNgIsCyADIAMoAigiA0EBajYCKCAEIANBA3RqIA83AwBBAAshAyAHQRBqJAAgCyADQQBIIgNyCwRAQQJBBCADGwwECyAAIBEQCiAAIAAgD0IAEGIQPiIREAsNACAREPYBRQ
 
0CIAAgAkHgAGogACABQdUAIAFBABASEKwBQX9KDQELQoCAgIAwIQ9CgICAgDAhEAwGCyAAIAFB1QACfiAGIAIpA2AgBRCBAyIPQoCAgIAIfEL/////D1gEQCAPQv////8PgwwBCyAPuRAVCxBIIgNBAE4NACADQR52QQJxDAELQQALIQNCgICAgDAhD0KAgICAMCEQIAMOBQEFAwUABQsLQQAhBUEAIQRCgICAgDAhD0KAgICAMCEQA0AgAigCOCAESgRAIAAgAkEMaiACKAIUIARBA3RqKQMAIhYQ2gFBAEgNAyAAIBEQCiAAIAAgFkIAEGIQPiIREAsNAyAAIAIgACAWQdcAIBZBABASEKwBDQMCQCACKQMAIhIgBikCBEL/////B4MiAVUEQCACIAE3AwAgASESDAELIBJCf1UNAEIAIRIgAkIANwMACyAAIBAQCiAAEE4iEBALDQMgACAQQgAgERANIhEQbUEASA0DIAIoAgwiA0EBIANBAUsbIgOtIRpCASEBA0AgASAaUgRAIAAgFiABEGIiGBALDQUgGBAQRQRAIAAgGBA+IhgQCw0GCyAAIBAgASAYEG0hByABQgF8IQEgB0EATg0BDAULCyAAIBMQCiAAIBZBhwEgFkEAEBIiExALDQMCQCAKBEAgACAQIBogEkL/////D4MQbUEASA0FIAAgECADQQFqrSAVEA0QbUEASA0FAkAgExAQDQAgACAQIANBAmqtIBMQDSIBEG1BAE4NACABIRMMBgsgAiAQNwNoIAJCgICAgDA3A2AgACAPEAogACAAIBlBAiACQeAAakEAEJoDED4hDwwBC0KAgICAMCEBIBMQEEUEQCAAIBMQKSIBEAsNBQsgAiAXNwOIASACIAE3A4ABIAIgEDcDeCACIBU3A2ggAiARNwNgIAIgEkL/////D4M3A3AgACAPEAogACACQeAAahCQBSEPIAAgARAKCyAPEAsNAyAFrCASVwRAIAJ
 
ByABqIAYgBSASpxBXGiACQcgAaiAPEIwBGiARpykCBEL/////B4MgEnynIQULIARBAWohBAwBCwsgAkHIAGogBiAFIAYoAgRB/////wdxEFcaIAJByABqEDchFAwCC0KAgICAMCEPQoCAgIAwIRBCgICAgDAhEQsgAkHIAGoQRAsgAkEQahCPBSAAIBcQCiAAIBEQCiAAIBAQCiAAIA8QCiAAIBMQCiAAIBUQCgsgAkGQAWokACAUC5IBACMAQSBrIgIkAAJ+AkAgARAgRQRAIAAQKAwBCyAAIAJBCGpBABBCGiACQQhqQS8QOxoCQCACQQhqIAAgAUHsACABQQAQEhCNAQ0AIAJBCGpBLxA7GiACQQhqIAAgAUHtACABQQAQEhCNAQ0AIAJBCGoQNwwCCyACQQhqEEQLQoCAgIDgAAshASACQSBqJAAgAQs/AQF+QoCAgIDgACEEIAAgASADKQMAENgBIgEQCwR+QoCAgIDgAAUgARAmIQIgACABEAogAkWtQoCAgIAQhAsLgAIBA34CQCAAIAFBARDbASICRQ0AIAMpAwghBgJAAkAgACADKQMAIgRBABDbASIDBEAgBhAQRQRAIABB99IAQQAQFEKAgICA4AAPCyADNQIAQoCAgICQf4QQDSEEIAM1AgRCgICAgJB/hBANIQUMAQtCgICAgDAhBQJ+IAQQEARAIABBLxAxDAELIAAgBBArCyIEEAsNASAAIAQgBhCEBCIFEAsNAQsgACACNQIAQoCAgICQf4QQCiAAIAI1AgRCgICAgJB/hBAKIAIgBT4CBCACIAQ+AgAgACABQdUAQgAQSEEASA0BIAEQDQ8LIAAgBBAKIAAgBRAKC0KAgICA4AALawEBfyABQv////9vWARAIAAQKEKAgICA4AAPCwJ+IAAgAUEAENsBIgNFBEBCgICAgDAgACABIAAoAigpA5ABEFgNARogAEESEJwDQoCAgIDgAA8LIAIgAygCBC0A
 
EHFBAEetQoCAgIAQhAsLxwMBB38jAEEgayIFJAACQAJAAkACQAJAIAFC/////29YBEAgABAoDAELIAAgASAAKAIoKQOQARBYDQIgACABQQEQ2wEiAg0BC0KAgICA4AAhAQwDCyACKAIAIgcpAgSnIgJB/////wdxIgMNAQsgAEHQ0gAQcSEBDAELIAAgBUEIaiADIAJBH3YQqgMaIAcoAgRB/////wdxIQhBACEAA0ACQAJAIAAgCEgEQCAAQQFqIQJBfyEGAkACfwJAAkACQAJAAkACQAJAIAcgABAvIgNB2wBrDgMDAQIACyACIQACQCADQQprDgQECwsFAAsgA0EvRw0HIARFDQVBASEEQS8hAwwHC0HcACEDIAIgCE4NBiAAQQJqIQAgByACEC8hBgwJC0EAIQRB3QAhAwwFC0HbACEDIAQgAiAITnINBiAAQQJqIAIgByACEC9B3QBGIgIbIQBB3QBBfyACGyEGQQEhBAwHC0HuAAwCC0HyAAwBC0EAIQRBLwshBkHcACEDCyACIQAMAgsgBUEIahA3IQEMAwsgAiEAQQEhBAsgBUEIaiADEJQBGiAGQQBIDQAgBUEIaiAGEJQBGgwACwALIAVBIGokACABC9gCAgN/AX4jAEEQayIEJAACQCABQv////9vWARAIAAQKEKAgICA4AAhBQwBC0KAgICA4AAhBSAAIAAgAUHuACABQQAQEhAsIgJBAEgNACACBH8gBEHnADoACCAEQQlqBSAEQQhqCyECIAAgACABQZ/PABDMAhAsIgNBAEgNACADBEAgAkHpADoAACACQQFqIQILIAAgACABQarPABDMAhAsIgNBAEgNACADBEAgAkHtADoAACACQQFqIQILIAAgACABQbTPABDMAhAsIgNBAEgNACADBEAgAkHzADoAACACQQFqIQILIAAgACABQe8AIAFBABASECwiA0EASA0AIAMEQCACQfUAOgAAIAJBAWohAgsgA
 
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
 
QwDCyACRQRAIAAgACgCAEEBazYCACAAIAAoAgRBCGs2AgQgARDpAQwDC0EAIAAoAgggACgCBCACakkNARogASACEPUFDwsgACACEKUFCw8LQQALJgAgAQRAIAAgACgCAEEBazYCACAAIAAoAgRBCGs2AgQgARDpAQsLKAEBfwJAIAGnKAIgIgNFDQAgAygCAEEERg0AIAAgA0EIaiACEPADCwscAQF/IAFBKBA/IgIEQCAAIAIQ7gMgACACEB8LCyUBAX8gAacoAiAiAwRAIAAgAykDACACECEgACADKQMIIAIQIQsLJwEBfyABpygCICICBEAgACACKQMAECUgACACKQMIECUgACACEB8LCx4BAX8gAacoAiAiAgRAIAAgAikDABAlIAAgAhAfCwtDAQJ/IAGnKAIgIgIEQAJAIAIpAwAiARDeBUUNACACKAIMIgNFDQAgACADEPIDIAIpAwAhAQsgACABECUgACACEB8LC1gBA38CQCABpygCICIERQ0AIARBCGohAyAEQQRqIQUDQCADKAIAIgMgBUYNASAEKAIARQRAIAAgAykDECACECELIAAgAykDGCACECEgA0EEaiEDDAALAAsLgQEBBX8gAacoAiAiAwRAIANBBGohBSADKAIIIQIDQCACIAVHBEAgAigCBCEGIAJBEGshBCACQQxrKAIARQRAAkAgAygCAARAIAQQpgUMAQsgACACKQMQECULIAAgAikDGBAlCyAAIAQQHyAGIQIMAQsLIAAgAygCEBAfIAAgAxAfCwshAQF/IAGnKAIgIgMEQCAAIAM1AgxCgICAgHCEIAIQIQsLQAEBfyABpygCICICBEAgACACNQIMQoCAgIBwhCIBEN4FBH4gAhBGIAI1AgxCgICAgHCEBSABCxAlIAAgAhAfCwtbAQJ/IAGnKAIgIgIEQAJAAkAgAi0ABUUNACAAKAK8ASIDRQ0AIAAoAsQBIAIoAgggAxEDAAwBCyACKA
 
IYIgNFDQAgACACKAIUIAIoAgggAxEGAAsgACACEB8LCykBAX8gACABpyICNQIkQoCAgICQf4QQJSAAIAI1AiBCgICAgJB/hBAlCxEAIAAgAacoAiApAwAgAhAhCxkBAX8gACABpygCICICKQMAECUgACACEB8LQQEDfwJAIAFBDxA/IgRFDQAgBEEIaiEFA0AgAyAELQAFTw0BIAAgBSADQQN0aikDACACECEgA0EBaiEDDAALAAsLQwEDfyABQQ8QPyIDBEAgA0EIaiEEA0AgAiADLQAFT0UEQCAAIAQgAkEDdGopAwAQJSACQQFqIQIMAQsLIAAgAxAfCwtJAQJ/IAAgAacoAiAiBCkDACACECEgACAEKQMIIAIQIQNAIAMgBCgCEE5FBEAgACAEIANBA3RqKQMYIAIQISADQQFqIQMMAQsLC0kBAn8gACABpygCICICKQMAECUgACACKQMIECUDQCADIAIoAhBORQRAIAAgAiADQQN0aikDGBAlIANBAWohAwwBCwsgACACEB8LjgEBBH8gAaciAygCJCEFIAMoAiAhBCADKAIoIgMEQCAAIAOtQoCAgIBwhCACECELIAQEQAJAIAVFDQBBACEDA0AgAyAEKAI8Tg0BAkAgBSADQQJ0aigCACIGRQ0AIAYtAAVBAXFFDQAgACAGIAIRAwALIANBAWohAwwACwALIAAgBK1CgICAgGCEIAIQIQsLcwEDfyABpyICKAIoIgMEQCAAIAOtQoCAgIBwhBAlCyACKAIgIgMEQCACKAIkIgQEQEEAIQIDQCACIAMoAjxORQRAIAAgBCACQQJ0aigCABD5ASACQQFqIQIMAQsLIAAgBBAfCyAAIAOtQoCAgIBghBAlCwsSACABpygCICIABEAgABCtAwsLDgAgACABpykDICACECELGQAgACABpyIAKQMgECUgAEKAgICAMDcDIAs1AQJ/IAGnIQQDQCADIAQoAihPRQRAIAAgBCg
 
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
 
HByb3BlcnR5ICclcycgb2YgdW5kZWZpbmVkAGNhbm5vdCBzZXQgcHJvcGVydHkgJyVzJyBvZiBudWxsAGNhbm5vdCBzZXQgcHJvcGVydHkgJyVzJyBvZiB1bmRlZmluZWQAcC0+Y2xhc3NfaWQgPT0gSlNfQ0xBU1NfQVJSQVkASlNfU2V0UHJvcGVydHlJbnRlcm5hbABwcm9wID09IEpTX0FUT01fbGVuZ3RoAG91dC1vZi1ib3VuZCBudW1lcmljIGluZGV4AG5vdCBhbiBvYmplY3QAb2JqZWN0IGlzIG5vdCBleHRlbnNpYmxlAHBycyAhPSBOVUxMAEpTX0RlZmluZVByb3BlcnR5AHByb3BlcnR5IGlzIG5vdCBjb25maWd1cmFibGUAbm9uIGludGVnZXIgaW5kZXggaW4gdHlwZWQgYXJyYXkAbmVnYXRpdmUgaW5kZXggaW4gdHlwZWQgYXJyYXkAb3V0LW9mLWJvdW5kIGluZGV4IGluIHR5cGVkIGFycmF5AGludmFsaWQgZGVzY3JpcHRvciBmbGFncwBjb3VsZCBub3QgZGVsZXRlIHByb3BlcnR5AGludmFsaWQgYXJyYXkgaW5kZXgAJWQAW2Z1bmN0aW9uIGJ5dGVjb2RlXQBjYW5ub3QgY29udmVydCBzeW1ib2wgdG8gc3RyaW5nAFt1bnN1cHBvcnRlZCB0eXBlXQBldmFsX3R5cGUgPT0gSlNfRVZBTF9UWVBFX0dMT0JBTCB8fCBldmFsX3R5cGUgPT0gSlNfRVZBTF9UWVBFX01PRFVMRQBKU19FdmFsVGhpcwBSZWdFeHAAdW5leHBlY3RlZCBkYXRhIGF0IHRoZSBlbmQAICAgICAgICAgIAAAAIwAAABeAAAAXwAAAGAAAABhAAAAYgAAAGMAAABkAAAAZQAAAGYAAABQcm94eQBBoBsL0wHALgAAkC8AAFAwAACwMAAAADEAAFAxAAAMCw
 
UEAgIAALIAAABnAAAAaAAAALMAAABpAAAAagAAALQAAABpAAAAagAAALUAAABAAAAAQQAAALYAAABrAAAAbAAAALcAAABrAAAAbAAAAC8AAABtAAAAbgAAALgAAABAAAAAQQAAALkAAABvAAAAcAAAAFByb21pc2UAQXN5bmNGdW5jdGlvbgBBc3luY0dlbmVyYXRvckZ1bmN0aW9uAERhdGUAT2JqZWN0AEZ1bmN0aW9uAEVycm9yAEGAHQslJlMAADBTAAA7UwAASlMAAFZTAABgUwAAaVMAAHdTAABBcnJheQBBsB0LhTFjb3B5V2l0aGluAGVudHJpZXMAZmlsbABmaW5kAGZpbmRJbmRleABmbGF0AGZsYXRNYXAAaW5jbHVkZXMAa2V5cwB2YWx1ZXMAAE51bWJlcgBCb29sZWFuAFN0cmluZwBTeW1ib2wAR2VuZXJhdG9yRnVuY3Rpb24AZXZhbAAAAAABAQICAgNBcnJheUJ1ZmZlcgBTaGFyZWRBcnJheUJ1ZmZlcgBUeXBlZEFycmF5AEJZVEVTX1BFUl9FTEVNRU5UAERhdGFWaWV3AG1yMSAhPSBOVUxMAGRlbGV0ZV93ZWFrX3JlZgBtci0+ZW1wdHkAbWFwX2RlY3JlZl9yZWNvcmQAc2YtPmN1cl9zcCAhPSBOVUxMAGFzeW5jX2Z1bmNfZnJlZQBzaXplICE9IDAAanNfZGVmX21hbGxvYwAAAG51bGwAZmFsc2UAdHJ1ZQBpZgBlbHNlAHJldHVybgB2YXIAdGhpcwBkZWxldGUAdm9pZAB0eXBlb2YAbmV3AGluAGluc3RhbmNlb2YAZG8Ad2hpbGUAZm9yAGJyZWFrAGNvbnRpbnVlAHN3aXRjaABjYXNlAGRlZmF1bHQAdGhyb3cAdHJ5AGNhdGNoAGZpbmFsbHkAZnVuY3Rpb24AZGVidWdnZXIAd2l0aABjbGFzcwBjb25zdABlbnVtAGV4cG9
 
ydABleHRlbmRzAGltcG9ydABzdXBlcgBpbXBsZW1lbnRzAGludGVyZmFjZQBsZXQAcGFja2FnZQBwcml2YXRlAHByb3RlY3RlZABwdWJsaWMAc3RhdGljAHlpZWxkAGF3YWl0AABsZW5ndGgAZmlsZU5hbWUAbGluZU51bWJlcgBtZXNzYWdlAGVycm9ycwBzdGFjawBuYW1lAHRvU3RyaW5nAHRvTG9jYWxlU3RyaW5nAHZhbHVlT2YAZXZhbABwcm90b3R5cGUAY29uc3RydWN0b3IAY29uZmlndXJhYmxlAHdyaXRhYmxlAGVudW1lcmFibGUAdmFsdWUAZ2V0AHNldABvZgBfX3Byb3RvX18AdW5kZWZpbmVkAG51bWJlcgBib29sZWFuAHN0cmluZwBvYmplY3QAc3ltYm9sAGludGVnZXIAdW5rbm93bgBhcmd1bWVudHMAY2FsbGVlAGNhbGxlcgA8ZXZhbD4APHJldD4APHZhcj4APGFyZ192YXI+ADx3aXRoPgBsYXN0SW5kZXgAdGFyZ2V0AGluZGV4AGlucHV0AGRlZmluZVByb3BlcnRpZXMAYXBwbHkAam9pbgBjb25jYXQAc3BsaXQAY29uc3RydWN0AGdldFByb3RvdHlwZU9mAHNldFByb3RvdHlwZU9mAGlzRXh0ZW5zaWJsZQBwcmV2ZW50RXh0ZW5zaW9ucwBoYXMAZGVsZXRlUHJvcGVydHkAZGVmaW5lUHJvcGVydHkAZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yAG93bktleXMAYWRkAGRvbmUAbmV4dAB2YWx1ZXMAc291cmNlAGZsYWdzAGdsb2JhbAB1bmljb2RlAHJhdwBuZXcudGFyZ2V0AHRoaXMuYWN0aXZlX2Z1bmMAPGhvbWVfb2JqZWN0PgA8Y29tcHV0ZWRfZmllbGQ+ADxzdGF0aWNfY29tcHV0ZWRfZmllbGQ+ADxjbGFzc19m
 
aWVsZHNfaW5pdD4APGJyYW5kPgAjY29uc3RydWN0b3IAYXMAZnJvbQBtZXRhACpkZWZhdWx0KgAqAE1vZHVsZQB0aGVuAHJlc29sdmUAcmVqZWN0AHByb21pc2UAcHJveHkAcmV2b2tlAGFzeW5jAGV4ZWMAZ3JvdXBzAHN0YXR1cwByZWFzb24AZ2xvYmFsVGhpcwB0b0pTT04AT2JqZWN0AEFycmF5AEVycm9yAE51bWJlcgBTdHJpbmcAQm9vbGVhbgBTeW1ib2wAQXJndW1lbnRzAE1hdGgASlNPTgBEYXRlAEZ1bmN0aW9uAEdlbmVyYXRvckZ1bmN0aW9uAEZvckluSXRlcmF0b3IAUmVnRXhwAEFycmF5QnVmZmVyAFNoYXJlZEFycmF5QnVmZmVyAFVpbnQ4Q2xhbXBlZEFycmF5AEludDhBcnJheQBVaW50OEFycmF5AEludDE2QXJyYXkAVWludDE2QXJyYXkASW50MzJBcnJheQBVaW50MzJBcnJheQBGbG9hdDMyQXJyYXkARmxvYXQ2NEFycmF5AERhdGFWaWV3AE1hcABTZXQAV2Vha01hcABXZWFrU2V0AE1hcCBJdGVyYXRvcgBTZXQgSXRlcmF0b3IAQXJyYXkgSXRlcmF0b3IAU3RyaW5nIEl0ZXJhdG9yAFJlZ0V4cCBTdHJpbmcgSXRlcmF0b3IAR2VuZXJhdG9yAFByb3h5AFByb21pc2UAUHJvbWlzZVJlc29sdmVGdW5jdGlvbgBQcm9taXNlUmVqZWN0RnVuY3Rpb24AQXN5bmNGdW5jdGlvbgBBc3luY0Z1bmN0aW9uUmVzb2x2ZQBBc3luY0Z1bmN0aW9uUmVqZWN0AEFzeW5jR2VuZXJhdG9yRnVuY3Rpb24AQXN5bmNHZW5lcmF0b3IARXZhbEVycm9yAFJhbmdlRXJyb3IAUmVmZXJlbmNlRXJyb3IAU3ludGF4RXJyb3IAVHlwZUVyc
 
m9yAFVSSUVycm9yAEludGVybmFsRXJyb3IAPGJyYW5kPgBTeW1ib2wudG9QcmltaXRpdmUAU3ltYm9sLml0ZXJhdG9yAFN5bWJvbC5tYXRjaABTeW1ib2wubWF0Y2hBbGwAU3ltYm9sLnJlcGxhY2UAU3ltYm9sLnNlYXJjaABTeW1ib2wuc3BsaXQAU3ltYm9sLnRvU3RyaW5nVGFnAFN5bWJvbC5pc0NvbmNhdFNwcmVhZGFibGUAU3ltYm9sLmhhc0luc3RhbmNlAFN5bWJvbC5zcGVjaWVzAFN5bWJvbC51bnNjb3BhYmxlcwBTeW1ib2wuYXN5bmNJdGVyYXRvcgAAKG5ld19oYXNoX3NpemUgJiAobmV3X2hhc2hfc2l6ZSAtIDEpKSA9PSAwAEpTX1Jlc2l6ZUF0b21IYXNoAGF0b20gPCBydC0+YXRvbV9zaXplAF9fSlNfQXRvbVRvVmFsdWUAc2gtPmhlYWRlci5yZWZfY291bnQgPT0gMABqc19mcmVlX3NoYXBlMABpICE9IDAASlNfRnJlZUF0b21TdHJ1Y3QAcnQtPmF0b21fY291bnQgPj0gMABwLT5yZWZfY291bnQgPT0gMABmcmVlX3plcm9fcmVmY291bnQAcy0+aXNfd2VhawByZXNldF93ZWFrX3JlZgAhbXItPmVtcHR5AAEAAAAFAAEUBQABFQUAARUFAAEXBQABFwEAAQABAAEAAQABAAEAAQABAAEAAQABAAIAAQUDAAEKAQEAAAECAQABAwIAAQECAAECAwABAgQAAQMGAAECAwABAwQAAQQFAAEDAwABBAQAAQUFAAECAgABBAQAAQMDAAEDAwABBAQAAQUFAAMCAQ0DAQENAwEADQMCAQ0DAgANAwABDQMDAQoBAQAAAQAAAAEBAgABAAAAAQICAAECAAABAQAAAQEAAAYAABgFAQEPAwIBCgECAQABAQEAAQEBAAUAARcFAAEXBQABFw
 
UBABcFAQAXBQIAFwECAwABAwAABgAAGAYAABgGAQAYBQEBFwUBAhcFAgAXAQIBAAEDAAABAwEAAQIBAAECAgABAwAAAQMBAAEEAAAFAgEXBQEBFwECAgABAgEAAQICAAEDAgABAwIAAgMDBQYCARgCAwEFBgICGAYDAxgDAAEQAwEAEAMBARADAAERAwEAEQMBAREDAAESAwEAEgMBARIDAAAQAwABEAMBABADAQAQAwABEgMBABIDAQASAwAAEAUBABYFAQAWBQAAFgUAARYFAAAWAQEAAAEBAQABAQEAAQICAAoBABoKAgEaCgEAGgoBABoKAQAaCgEAGgcAAhkHAAIZBwACGQUAAhcBAQEAAQEDAAEBAwABAQMAAgMFBQEBAQABAQIAAQMAAAEEBAABBAQAAgQFBQEAAAABAQIAAQECAAEBAgABAQEAAQEBAAEBAQABAQEAAQEBAAEBAgABAQIAAgAABwIAAAcCAQAHAQEBAAEBAQABAQEAAQIBAAUAARcBAgEAAQIBAAECAQABAgEAAQIBAAECAQABAgEAAQIBAAECAQABAgEAAQIBAAECAQABAgEAAQIBAAECAQABAgEAAQIBAAECAQABAgEAAQIBAAECAQABAgEAAQEBAAEAAAADAAAKAwAACgUAABYHAAEZBwABGQcBABkHAAEZCwACGwcAAhkHAAIZBwEBGQcBAhkHAQEZBQEBEwUAABMBAAEBAQABAQEAAQEBAAEBAQABAQEAAQEBAAEBAQABAQEAAQECAAEGAwABCwIAAQgCAAEIAQABAAIAAQcCAQAHAgEBBwEAAQIBAAECAQABAgEAAQIBAQACAQEAAgEBAAIBAQACAQEBAgEBAQIBAQECAQEBAgEAAQMBAAEDAQABAwEAAQMBAQADAQEAAwEBAAMBAQADAQEBAwEBAQMBAQEDAQEBAwEAAQQBAAEEAQABBAEAAQQBAQAEAQEABAEBAAQBAQAEAQEBBAEBAQQ
 
BAQEEAQEBBAEBAQACAQAJAgEACQIAAAkDAAAMAQEBDgEBAQ4BAQEOAQEBDgEBAQABAQEAAQEBAAEBAQBwLT5tYXJrID09IDAAZ2NfZGVjcmVmAHZhcl9yZWYtPmlzX2RldGFjaGVkAG1hcmtfY2hpbGRyZW4AcC0+cmVmX2NvdW50ID4gMABnY19kZWNyZWZfY2hpbGQAZ2Nfc2NhbgBwLT5nY19vYmpfdHlwZSA9PSBKU19HQ19PQkpfVFlQRV9KU19PQkpFQ1QgfHwgcC0+Z2Nfb2JqX3R5cGUgPT0gSlNfR0NfT0JKX1RZUEVfRlVOQ1RJT05fQllURUNPREUAZ2NfZnJlZV9jeWNsZXMASlNfQXRvbUdldFN0clJUADxudWxsPgAhYXRvbV9pc19mcmVlKHApAGNpcmN1bGFyIHByb3RvdHlwZSBjaGFpbgBwcm94eTogYmFkIHByb3RvdHlwZQBwcm94eTogaW5jb25zaXN0ZW50IHByb3RvdHlwZQByZXZva2VkIHByb3h5AG9wZXJhbmQgJ3Byb3RvdHlwZScgcHJvcGVydHkgaXMgbm90IGFuIG9iamVjdABpbnRlcnJ1cHRlZAAlcyBpcyBub3QgaW5pdGlhbGl6ZWQAbGV4aWNhbCB2YXJpYWJsZQAAAHEAAAByAAAAcwAAAENvdWxkIG5vdCBmaW5kIGV4cG9ydCAnJXMnIGluIG1vZHVsZSAnJXMnAGNpcmN1bGFyIHJlZmVyZW5jZSB3aGVuIGxvb2tpbmcgZm9yIGV4cG9ydCAnJXMnIGluIG1vZHVsZSAnJXMnAGV4cG9ydCAnJXMnIGluIG1vZHVsZSAnJXMnIGlzIGFtYmlndW91cwAocHItPnUuaW5pdC5yZWFsbV9hbmRfaWQgJiAzKSA9PSAwAEpTX0RlZmluZUF1dG9Jbml0UHJvcGVydHkAJyVzJyBpcyBub3QgZGVmaW5lZABudW1faW5kZXgg
 
PT0gbnVtX2tleXNfY291bnQASlNfR2V0T3duUHJvcGVydHlOYW1lc0ludGVybmFsAHN0cl9pbmRleCA9PSBudW1fa2V5c19jb3VudCArIHN0cl9rZXlzX2NvdW50AHN5bV9pbmRleCA9PSBhdG9tX2NvdW50AEpTX0F0b21Jc0FycmF5SW5kZXgAYXRvbTFfaXNfaW50ZWdlciAmJiBhdG9tMl9pc19pbnRlZ2VyAG51bV9rZXlzX2NtcABqc19nZXRfYXRvbV9pbmRleABub3QgY29uZmlndXJhYmxlAG5vIHNldHRlciBmb3IgcHJvcGVydHkAJyVzJyBpcyByZWFkLW9ubHkAcC0+c2hhcGUtPmhlYWRlci5yZWZfY291bnQgPT0gMQBhZGRfcHJvcGVydHkAJWxsZABjYW5ub3QgY3JlYXRlIG51bWVyaWMgaW5kZXggaW4gdHlwZWQgYXJyYXkAdmFyX3JlZi0+aGVhZGVyLnJlZl9jb3VudCA+IDAAZnJlZV92YXJfcmVmAEpTX0F0b21Jc051bWVyaWNJbmRleDEAAG4AZgBpAG4AaQB0AHkAbmZpbml0eQAhc2gtPmlzX2hhc2hlZABjb21wYWN0X3Byb3BlcnRpZXMAbmV3X3NpemUgPD0gc2gtPnByb3Bfc2l6ZQBqID09IChzaC0+cHJvcF9jb3VudCAtIHNoLT5kZWxldGVkX3Byb3BfY291bnQpACVzIG9iamVjdCBleHBlY3RlZABjYW5ub3QgY29udmVydCBzeW1ib2wgdG8gbnVtYmVyAHRvUHJpbWl0aXZlAEluZmluaXR5AGludmFsaWQgYXJyYXkgbGVuZ3RoAE5hTgAlLipmAG4gPCBidWZfc2l6ZQBqc19mY3Z0MQAlKy4qZQBtdXN0IGJlIGNhbGxlZCB3aXRoIG5ldwBub3QgYSBmdW5jdGlvbgBkZXJpdmVkIGNsYXNzIGNvbnN0cnVjdG9yI
 
G11c3QgcmV0dXJuIGFuIG9iamVjdCBvciB1bmRlZmluZWQAY2xhc3MgY29uc3RydWN0b3JzIG11c3QgYmUgaW52b2tlZCB3aXRoICduZXcnAHVuc3VwcG9ydGVkIHJlZmVyZW5jZSB0byAnc3VwZXInAGl0ZXJhdG9yIGRvZXMgbm90IGhhdmUgYSB0aHJvdyBtZXRob2QAaW52YWxpZCB0aHJvdyB2YXIgdHlwZSAlZAAndGhpcycgY2FuIGJlIGluaXRpYWxpemVkIG9ubHkgb25jZQBpbnZhbGlkIHJldCB2YWx1ZQBpdGVyYXRvciBtdXN0IHJldHVybiBhbiBvYmplY3QAaXRlcmF0b3JfY2xvc2VfcmV0dXJuAHZhbHVlIGhhcyBubyBwcm9wZXJ0eQBpbnZhbGlkIG9wY29kZTogcGM9JXUgb3Bjb2RlPTB4JTAyeAAADQAQAC0AMQBpbXBvcnQubWV0YSBub3Qgc3VwcG9ydGVkIGluIHRoaXMgY29udGV4dABleHBlY3RpbmcgPGJyYW5kPiBwcml2YXRlIGZpZWxkAGludmFsaWQgYnJhbmQgb24gb2JqZWN0AHJlZGVjbGFyYXRpb24gb2YgJyVzJwA8aW5wdXQ+AG5vdCBhIG9iamVjdAB0b28gbWFueSBhcmd1bWVudHMAc3RyaW5nIGV4cGVjdGVkAG5vIGZ1bmN0aW9uIGZpbGVuYW1lIGZvciBpbXBvcnQoKQBjYW5ub3QgZGVmaW5lIHZhcmlhYmxlICclcycAdmFsdWUgaXMgbm90IGl0ZXJhYmxlACFfX0pTX0F0b21Jc1RhZ2dlZEludChkZXNjcikASlNfTmV3U3ltYm9sRnJvbUF0b20AZGVzY3IgPCBydC0+YXRvbV9zaXplAG5vdCBhIHN5bWJvbABwcml2YXRlIGNsYXNzIGZpZWxkICclcycgZG9lcyBub3QgZXhpc3QAcHJpdmF0ZSBjbG
 
FzcyBmaWVsZCAnJXMnIGFscmVhZHkgZXhpc3RzAFsAXQBnZXQgAHNldCAAcGFyZW50IGNsYXNzIG11c3QgYmUgY29uc3RydWN0b3IAcGFyZW50IHByb3RvdHlwZSBtdXN0IGJlIGFuIG9iamVjdCBvciBudWxsAGItPmZ1bmNfa2luZCA9PSBKU19GVU5DX05PUk1BTABqc19vcF9kZWZpbmVfY2xhc3MAcmVjZWl2ZXIgaXMgbm90IGFuIG9iamVjdABzZXR0ZXIgaXMgZm9yYmlkZGVuAGludmFsaWQgaW5kZXggZm9yIGFwcGVuZABudWxsIG9yIHVuZGVmaW5lZCBhcmUgZm9yYmlkZGVuAGludmFsaWQgJ2luJyBvcGVyYW5kAG5vdCBhIGNvbnN0cnVjdG9yACAgICBhdCAlcwA6JWQAPGFub255bW91cz4AICglcwAgKG5hdGl2ZSkAZHVwbGljYXRlIGV4cG9ydGVkIG5hbWUgJyVzJwBjb3VsZCBub3QgbG9hZCBtb2R1bGUgJyVzJwAuAC4uAGJ5dGVjb2RlIGZ1bmN0aW9uIGV4cGVjdGVkAGV2YWwgaXMgbm90IHN1cHBvcnRlZABjaXJjdWxhciByZWZlcmVuY2UAZ2V0ICVzAHNldCAlcwBjYW5ub3QgY29udmVydCB0byBvYmplY3QAbm9ybWFsaXplAEHAzgAL9QEsJwAAAwAAAAAAAAB0AAAAYmFkIG5vcm1hbGl6YXRpb24gZm9ybQBpbnZhbGlkIHJlZ3VsYXIgZXhwcmVzc2lvbiBmbGFncwAlcwBmbGFncwBzb3VyY2UAZ2xvYmFsAGlnbm9yZUNhc2UAbXVsdGlsaW5lAGRvdEFsbAB1bmljb2RlAHN0aWNreQBleGVjAGNvbXBpbGUAdGVzdAB0b1N0cmluZwBbU3ltYm9sLnJlcGxhY2VdAFtTeW1ib2wubWF0Y2hdAFtTeW1ib2wubWF0Y2h
 
BbGxdAFtTeW1ib2wuc2VhcmNoXQBbU3ltYm9sLnNwbGl0XQBBwNAAC+ADiycAAAEBAAB1AAAAAAAAAJEnAAABAQAAdgAAAAAAAACYJwAAAQIBAHcAAAAAAAAAnycAAAECAgB3AAAAAAAAAKonAAABAgQAdwAAAAAAAAC0JwAAAQIIAHcAAAAAAAAAuycAAAECEAB3AAAAAAAAAMMnAAABAiAAdwAAAAAAAADKJwAAAwAAAAEAAAAwAAAAzycAAAMAAAACAAAAeAAAANcnAAADAAAAAQAAAHkAAADcJwAAAwAAAAAAAAB6AAAA5ScAAAMAAAACAAAAewAAAPYnAAADAAAAAQAAAHwAAAAFKAAAAwAAAAEAAAB9AAAAFygAAAMAAAABAAAAfgAAACcoAAADAAAAAgAAAH8AAAAoPzopAG91dCBvZiBtZW1vcnkgaW4gcmVnZXhwIGV4ZWN1dGlvbgBmbGFncyBtdXN0IGJlIHVuZGVmaW5lZABSZWdFeHAgZXhlYyBtZXRob2QgbXVzdCByZXR1cm4gYW4gb2JqZWN0IG9yIG51bGwAbm90IGEgc3RyaW5nAHkAW1N5bWJvbC5zcGVjaWVzXQDPKQAAAQEAAIAAAAAAAAAAbmV4dABbU3ltYm9sLnRvU3RyaW5nVGFnXQBSZWdFeHAgU3RyaW5nIEl0ZXJhdG9yAEGw1AAL1wrwKQAAAwAAAAAMAACBAAAA9SkAAAEDAAAKKgAAAAAAAHVuZXhwZWN0ZWQgZW5kIG9mIGNvbW1lbnQAdW5leHBlY3RlZCBjaGFyYWN0ZXIAaW52YWxpZCBjaGFyYWN0ZXIgaW4gYSBKU09OIHN0cmluZwBvY3RhbCBlc2NhcGUgc2VxdWVuY2VzIGFyZSBub3QgYWxsb3dlZCBpbiBzdHJpY3QgbW9kZQBtYWxmb3JtZWQgZXNjYXBlIHNlcXVlbmNlIGluIHN0cmluZyBsaXRlcmFsAGludmFs
 
aWQgVVRGLTggc2VxdWVuY2UAdW5leHBlY3RlZCBlbmQgb2Ygc3RyaW5nAGV4cGVjdGluZyBwcm9wZXJ0eSBuYW1lAHVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0AHVuZXhwZWN0ZWQgdG9rZW46ICclLipzJwBleHBlY3RpbmcgJyVjJwAgAFx1JTA0eABBcnJheSBsb28gbG9uZwBKU09OAAAAAAAAAACkKwAAAwgAANArAAADAAAAcGFyc2UAc3RyaW5naWZ5AMArAAADAAAAAgAAAIIAAADGKwAAAwAAAAMAAACDAAAA9SkAAAEDAACkKwAAAAAAAHByb3h5OiBpbmNvbnNpc3RlbnQgaXNFeHRlbnNpYmxlAHByb3h5OiBpbmNvbnNpc3RlbnQgcHJldmVudEV4dGVuc2lvbnMAcHJveHk6IGluY29uc2lzdGVudCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IAaW52YWxpZCBnZXR0ZXIAaW52YWxpZCBzZXR0ZXIAY2Fubm90IGhhdmUgc2V0dGVyL2dldHRlciBhbmQgdmFsdWUgb3Igd3JpdGFibGUAcHJveHk6IHByb3BlcnRpZXMgbXVzdCBiZSBzdHJpbmdzIG9yIHN5bWJvbHMAcHJveHk6IGR1cGxpY2F0ZSBwcm9wZXJ0eQBwcm94eTogdGFyZ2V0IHByb3BlcnR5IG11c3QgYmUgcHJlc2VudCBpbiBwcm94eSBvd25LZXlzAHByb3h5OiBwcm9wZXJ0eSBub3QgcHJlc2VudCBpbiB0YXJnZXQgd2VyZSByZXR1cm5lZCBieSBub24gZXh0ZW5zaWJsZSBwcm94eQBwcm94eTogaW5jb25zaXN0ZW50IGRlbGV0ZVByb3BlcnR5AHByb3h5OiBkZWZpbmVQcm9wZXJ0eSBleGNlcHRpb24AcHJveHk6IGluY29uc2lzdGVudCBkZWZpbmVQcm9wZXJ0eQBwc
 
m94eTogaW5jb25zaXN0ZW50IGhhcwBwcm94eTogaW5jb25zaXN0ZW50IGdldABwcm94eTogaW5jb25zaXN0ZW50IHNldABwcm94eTogY2Fubm90IHNldCBwcm9wZXJ0eQByZXZvY2FibGUAVi4AAAMAAAACAAAAhAAAAHNldABnZXQAaGFzAGRlbGV0ZQBjbGVhcgBzaXplAGZvckVhY2gAdmFsdWVzAGtleXMAZW50cmllcwBbU3ltYm9sLml0ZXJhdG9yXQBNYXAAcC4AAAMAAAACAQAAhQAAAHQuAAADAAAAAQEAAIYAAAB4LgAAAwAAAAEBAACHAAAAfC4AAAMAAAABAQAAiAAAAIMuAAADAAAAAAEAAIkAAACJLgAAAQIAAIoAAAAAAAAAji4AAAMAAAABAQAAiwAAAJYuAAADAAQAAAEAAIwAAACdLgAAAwAAAAABAACMAAAAoi4AAAMACAAAAQAAjAAAAKouAAADCQAAoi4AAP/////1KQAAAQMAALwuAAAAAAAAYWRkAFNldABBkN8AC7cBgC8AAAMAAQABAQAAhQAAAHguAAADAAEAAQEAAIcAAAB8LgAAAwABAAEBAACIAAAAgy4AAAMAAQAAAQAAiQAAAIkuAAABAgEAigAAAAAAAACOLgAAAwABAAEBAACLAAAAli4AAAMAAQAAAQAAjAAAAJ0uAAADCQAAli4AAP////+qLgAAAwkAAJYuAAD/////oi4AAAMACQAAAQAAjAAAAPUpAAABAwAAhC8AAAAAAABXZWFrTWFwAEHQ4AALV3AuAAADAAIAAgEAAIUAAAB0LgAAAwACAAEBAACGAAAAeC4AAAMAAgABAQAAhwAAAHwuAAADAAIAAQEAAIgAAAD1KQAAAQMAAEAwAAAAAAAAV2Vha1NldABBsOEAC4IDgC8AAAMAAwABAQAAhQAAAHguAAADAAMAAQEAAIcAAAB8LgAAAwADAAEBAACIAAAA9SkAAA
 
EDAACgMAAAAAAAAE1hcCBJdGVyYXRvcgAAAADwKQAAAwAAAAAMAACNAAAA9SkAAAEDAADwMAAAAAAAAHMgIT0gTlVMTABqc19tYXBfaXRlcmF0b3JfbmV4dABTZXQgSXRlcmF0b3IAAAAAAPApAAADAAEAAAwAAI0AAAD1KQAAAQMAAD8xAAAAAAAAc2V0L2FkZCBpcyBub3QgYSBmdW5jdGlvbgAAAAAAAADPKQAAAQEAAIAAAAAAAAAAcmVzb2x2aW5nIGZ1bmN0aW9uIGFscmVhZHkgc2V0AHByb21pc2Ugc2VsZiByZXNvbHV0aW9uAGFyZ2MgPT0gNQBwcm9taXNlX3JlYWN0aW9uX2pvYgBhcmdjID09IDMAanNfcHJvbWlzZV9yZXNvbHZlX3RoZW5hYmxlX2pvYgB0aGVuAGNhdGNoAGZpbmFsbHkAQcDkAAtmIDIAAAMAAAACAAAAjgAAACUyAAADAAAAAQAAAI8AAAArMgAAAwAAAAEAAACQAAAA9SkAAAEDAAAsDgAAAAAAAHJlc29sdmUAcmVqZWN0AGFsbABhbGxTZXR0bGVkAGFueQByYWNlAEGw5QAL1gGAMgAAAwAAAAEBAACRAAAAiDIAAAMAAQABAQAAkQAAAI8yAAADAAAAAQEAAJIAAACTMgAAAwABAAEBAACSAAAAnjIAAAMAAgABAQAAkgAAAKIyAAADAAAAAQAAAJMAAADPKQAAAQEAAIAAAAAAAAAAcmVqZWN0ZWQAZnVsZmlsbGVkAGFzeW5jIABmdW5jdGlvbgAgYW5vbnltb3VzKAAKKSB7CgAKfSkAAAAAAAAAAPUpAAABAwAANA4AAAAAAABbU3ltYm9sLmFzeW5jSXRlcmF0b3JdAEGQ5wALkwhwMwAAAwAAAAAAAACUAAAAcmV0dXJuAHRocm93AAAAAPApAAADAAAAAQEAAJUAAACgMwAAAwABAAEBAACVAAAApzMAAAMAAgABAQA
 
AlQAAAG5vdCBhbiBBc3luYy1mcm9tLVN5bmMgSXRlcmF0b3IAQXN5bmNHZW5lcmF0b3IAAPApAAADAAAAAQEAAJYAAACgMwAAAwABAAEBAACWAAAApzMAAAMAAgABAQAAlgAAAPUpAAABAwAAADQAAAAAAABub3QgYW4gQXN5bmNHZW5lcmF0b3Igb2JqZWN0AEpTX0lzVW5kZWZpbmVkKGZ1bmNfcmV0KQBqc19hc3luY19nZW5lcmF0b3JfcmVzdW1lX25leHQAcy0+c3RhdGUgPT0gSlNfQVNZTkNfR0VORVJBVE9SX1NUQVRFX0FXQUlUSU5HX1JFVFVSTiB8fCBzLT5zdGF0ZSA9PSBKU19BU1lOQ19HRU5FUkFUT1JfU1RBVEVfQ09NUExFVEVEAGpzX2FzeW5jX2dlbmVyYXRvcl9yZXNvbHZlX2Z1bmN0aW9uAHMtPnN0YXRlID09IEpTX0FTWU5DX0dFTkVSQVRPUl9TVEFURV9FWEVDVVRJTkcAAPUpAAABAwAAQg4AAAAAAAB2YWx1ZU9mAFtTeW1ib2wudG9QcmltaXRpdmVdAHRvVVRDU3RyaW5nAHRvR01UU3RyaW5nAHRvSVNPU3RyaW5nAHRvRGF0ZVN0cmluZwB0b1RpbWVTdHJpbmcAdG9Mb2NhbGVTdHJpbmcAdG9Mb2NhbGVEYXRlU3RyaW5nAHRvTG9jYWxlVGltZVN0cmluZwBnZXRUaW1lem9uZU9mZnNldABnZXRUaW1lAGdldFllYXIAZ2V0RnVsbFllYXIAZ2V0VVRDRnVsbFllYXIAZ2V0TW9udGgAZ2V0VVRDTW9udGgAZ2V0RGF0ZQBnZXRVVENEYXRlAGdldEhvdXJzAGdldFVUQ0hvdXJzAGdldE1pbnV0ZXMAZ2V0VVRDTWludXRlcwBnZXRTZWNvbmRzAGdldFVUQ1NlY29uZHMAZ2V0TWlsbGlzZWNvbmRzAGdldFVUQ01pbGxp
 
c2Vjb25kcwBnZXREYXkAZ2V0VVRDRGF5AHNldFRpbWUAc2V0TWlsbGlzZWNvbmRzAHNldFVUQ01pbGxpc2Vjb25kcwBzZXRTZWNvbmRzAHNldFVUQ1NlY29uZHMAc2V0TWludXRlcwBzZXRVVENNaW51dGVzAHNldEhvdXJzAHNldFVUQ0hvdXJzAHNldERhdGUAc2V0VVRDRGF0ZQBzZXRNb250aABzZXRVVENNb250aABzZXRZZWFyAHNldEZ1bGxZZWFyAHNldFVUQ0Z1bGxZZWFyAHRvSlNPTgBBsO8AC7YGcDUAAAMAAAAAAAAAlwAAANwnAAADABMAAAEAAJgAAAB4NQAAAwAAAAEAAACZAAAAjTUAAAMAAwAAAQAAmAAAAJk1AAADCQAAjTUAAP////+lNQAAAwAjAAABAACYAAAAsTUAAAMAEQAAAQAAmAAAAL41AAADABIAAAEAAJgAAADLNQAAAwAzAAABAACYAAAA2jUAAAMAMQAAAQAAmAAAAO01AAADADIAAAEAAJgAAAAANgAAAwAAAAAAAACaAAAAEjYAAAMAAAAAAAAAlwAAABo2AAADAAEBAAEAAJsAAAAiNgAAAwABAAABAACbAAAALjYAAAMAAAAAAQAAmwAAAD02AAADABEAAAEAAJsAAABGNgAAAwAQAAABAACbAAAAUjYAAAMAIQAAAQAAmwAAAFo2AAADACAAAAEAAJsAAABlNgAAAwAxAAABAACbAAAAbjYAAAMAMAAAAQAAmwAAAHo2AAADAEEAAAEAAJsAAACFNgAAAwBAAAABAACbAAAAkzYAAAMAUQAAAQAAmwAAAJ42AAADAFAAAAEAAJsAAACsNgAAAwBhAAABAACbAAAAvDYAAAMAYAAAAQAAmwAAAM82AAADAHEAAAEAAJsAAADWNgAAAwBwAAABAACbAAAA4DYAAAMAAAABAAAAnAAAAOg2AAADAHEGAQEAAJ0AAAD4NgAAAwBwB
 
gEBAACdAAAACzcAAAMAcQUCAQAAnQAAABY3AAADAHAFAgEAAJ0AAAAkNwAAAwBxBAMBAACdAAAALzcAAAMAcAQDAQAAnQAAAD03AAADAHEDBAEAAJ0AAABGNwAAAwBwAwQBAACdAAAAUjcAAAMAMQIBAQAAnQAAAFo3AAADADACAQEAAJ0AAABlNwAAAwAxAQIBAACdAAAAbjcAAAMAMAECAQAAnQAAAHo3AAADAAAAAQAAAJ4AAACCNwAAAwAxAAMBAACdAAAAjjcAAAMAMAADAQAAnQAAAJ03AAADAAAAAQAAAJ8AAABub3QgYSBEYXRlIG9iamVjdABEYXRlIHZhbHVlIGlzIE5hTgBJbnZhbGlkIERhdGUAJS4zcywgJTAyZCAlLjNzICUwKmQgAEHw9QALFVN1bk1vblR1ZVdlZFRodUZyaVNhdABBkPYAC6IBSmFuRmViTWFyQXByTWF5SnVuSnVsQXVnU2VwT2N0Tm92RGVjACUuM3MgJS4zcyAlMDJkICUwKmQAJTA0ZAAlKzA3ZAAtJTAyZC0lMDJkVAAlMDJkLyUwMmQvJTAqZAAlMDJkOiUwMmQ6JTAyZCBHTVQAJTAyZCUwMmQAJTAyZDolMDJkOiUwMmQuJTAzZFoAJTAyZDolMDJkOiUwMmQgJWNNAEHA9wALZB8AAAAcAAAAHwAAAB4AAAAfAAAAHgAAAB8AAAAfAAAAHgAAAB8AAAAeAAAAHwAAAGludmFsaWQgaGludABvYmplY3QgbmVlZHMgdG9JU09TdHJpbmcgbWV0aG9kAG5vdwBVVEMAQbD4AAugLB08AAADAAAAAAAAAKAAAADAKwAAAwAAAAEAAAChAAAAITwAAAMAAAAHAAAAogAAAHNmICE9IE5VTEwAX19KU19FdmFsSW50ZXJuYWwASlNfVkFMVUVfR0VUX1RBRyhzZi0+Y3VyX2Z1bmMpID09IEpTX1RBR19PQkpFQ1QAanNfY2xhc3
 
NfaGFzX2J5dGVjb2RlKHAtPmNsYXNzX2lkKQBpbnZhbGlkIGZpcnN0IGNoYXJhY3RlciBvZiBwcml2YXRlIG5hbWUAb2N0YWwgbGl0ZXJhbHMgYXJlIGRlcHJlY2F0ZWQgaW4gc3RyaWN0IG1vZGUAaW52YWxpZCBudW1iZXIgbGl0ZXJhbAAlLipzAHVzZSBzdHJpY3QAdXNlIHN0cmlwAHRvbyBtYW55IGxvY2FsIHZhcmlhYmxlcwBmdW5jdGlvbiBuYW1lIGV4cGVjdGVkAGludmFsaWQgcmVkZWZpbml0aW9uIG9mIGdsb2JhbCBpZGVudGlmaWVyIGluIG1vZHVsZSBjb2RlAGludmFsaWQgcmVkZWZpbml0aW9uIG9mIGdsb2JhbCBpZGVudGlmaWVyAG1pc3NpbmcgZm9ybWFsIHBhcmFtZXRlcgBpbnZhbGlkIG51bWJlciBvZiBhcmd1bWVudHMgZm9yIGdldHRlciBvciBzZXR0ZXIAJyVzJyBpcyBhIHJlc2VydmVkIGlkZW50aWZpZXIAaW52YWxpZCByZWRlZmluaXRpb24gb2YgbGV4aWNhbCBpZGVudGlmaWVyAGludmFsaWQgcmVkZWZpbml0aW9uIG9mIHBhcmFtZXRlciBuYW1lAGludmFsaWQgcmVkZWZpbml0aW9uIG9mIGEgdmFyaWFibGUAdW5leHBlY3RlZCBlbmQgb2YgcmVnZXhwAHVuZXhwZWN0ZWQgbGluZSB0ZXJtaW5hdG9yIGluIHJlZ2V4cAB1bmV4cGVjdGVkIGVsbGlwc2lzIHRva2VuAGFzc2lnbm1lbnQgcmVzdCBwcm9wZXJ0eSBtdXN0IGJlIGxhc3QAaW52YWxpZCBkZXN0cnVjdHVyaW5nIHRhcmdldABtaXNzaW5nIGJpbmRpbmcgcGF0dGVybi4uLgByZXN0IGVsZW1lbnQgY2Fubm90IGhhdmUgYSBkZWZhdWx0IHZ
 
hbHVlAHJlc3QgZWxlbWVudCBtdXN0IGJlIHRoZSBsYXN0IG9uZQBpbnZhbGlkIGFzc2lnbm1lbnQgc3ludGF4AHRvbyBjb21wbGljYXRlZCBkZXN0cnVjdHVyaW5nIGV4cHJlc3Npb24AUmVnRXhwIGFyZSBub3Qgc3VwcG9ydGVkACdhcmd1bWVudHMnIGlkZW50aWZpZXIgaXMgbm90IGFsbG93ZWQgaW4gY2xhc3MgZmllbGQgaW5pdGlhbGl6ZXIAZXhwZWN0aW5nIHRhcmdldABuZXcudGFyZ2V0IG9ubHkgYWxsb3dlZCB3aXRoaW4gZnVuY3Rpb25zAHN1cGVyKCkgaXMgb25seSB2YWxpZCBpbiBhIGRlcml2ZWQgY2xhc3MgY29uc3RydWN0b3IAJ3N1cGVyJyBpcyBvbmx5IHZhbGlkIGluIGEgbWV0aG9kAGludmFsaWQgdXNlIG9mICdzdXBlcicAbWV0YSBleHBlY3RlZABpbXBvcnQubWV0YSBvbmx5IHZhbGlkIGluIG1vZHVsZSBjb2RlAGludmFsaWQgdXNlIG9mICdpbXBvcnQoKScAdW5leHBlY3RlZCB0b2tlbiBpbiBleHByZXNzaW9uOiAnJS4qcycAdGVtcGxhdGUgbGl0ZXJhbCBjYW5ub3QgYXBwZWFyIGluIGFuIG9wdGlvbmFsIGNoYWluAFRvbyBtYW55IGNhbGwgYXJndW1lbnRzAHByaXZhdGUgY2xhc3MgZmllbGQgZm9yYmlkZGVuIGFmdGVyIHN1cGVyAGV4cGVjdGluZyBmaWVsZCBuYW1lAGV4cGVjdGVkICd9JyBhZnRlciB0ZW1wbGF0ZSBleHByZXNzaW9uAGNsYXNzIHN0YXRlbWVudCByZXF1aXJlcyBhIG5hbWUAaW52YWxpZCBtZXRob2QgbmFtZQBpbnZhbGlkIGZpZWxkIG5hbWUAcHJvcGVydHkgY29uc3RydWN0
 
b3IgYXBwZWFycyBtb3JlIHRoYW4gb25jZQBwcml2YXRlIGNsYXNzIGZpZWxkIGlzIGFscmVhZHkgZGVmaW5lZAA8c2V0PgBmZC0+Ynl0ZV9jb2RlLmJ1ZltkZWZpbmVfY2xhc3NfcG9zXSA9PSBPUF9kZWZpbmVfY2xhc3MAc2V0X29iamVjdF9uYW1lX2NvbXB1dGVkACgpe3N1cGVyKC4uLmFyZ3VtZW50cyk7fQAoKXt9AGR1cGxpY2F0ZSBfX3Byb3RvX18gcHJvcGVydHkgbmFtZQB1bmV4cGVjdGVkICd5aWVsZCcga2V5d29yZAB5aWVsZCBpbiBkZWZhdWx0IGV4cHJlc3Npb24AmpucnZ6goaKtrq+fY2Fubm90IG1peCA/PyB3aXRoICYmIG9yIHx8AHVuZXhwZWN0ZWQgJ2F3YWl0JyBrZXl3b3JkAGF3YWl0IGluIGRlZmF1bHQgZXhwcmVzc2lvbgB1bnBhcmVudGhlc2l6ZWQgdW5hcnkgZXhwcmVzc2lvbiBjYW4ndCBhcHBlYXIgb24gdGhlIGxlZnQtaGFuZCBzaWRlIG9mICcqKicAY2Fubm90IGRlbGV0ZSBhIGRpcmVjdCByZWZlcmVuY2UgaW4gc3RyaWN0IG1vZGUAY2Fubm90IGRlbGV0ZSBhIHByaXZhdGUgY2xhc3MgZmllbGQAaW52YWxpZCBsdmFsdWUgaW4gc3RyaWN0IG1vZGUAaW52YWxpZCBmb3IgaW4vb2YgbGVmdCBoYW5kLXNpZGUAaW52YWxpZCBpbmNyZW1lbnQvZGVjcmVtZW50IG9wZXJhbmQAaW52YWxpZCBhc3NpZ25tZW50IGxlZnQtaGFuZCBzaWRlAGxhYmVsID49IDAgJiYgbGFiZWwgPCBzLT5sYWJlbF9jb3VudAB1cGRhdGVfbGFiZWwAbHMtPnJlZl9jb3VudCA+PSAwAGludmFsaWQgcHJvcGVydHkgbmFtZ
 
QBkdXBsaWNhdGUgcGFyYW1ldGVyIG5hbWVzIG5vdCBhbGxvd2VkIGluIHRoaXMgY29udGV4dAB5aWVsZCBpcyBhIHJlc2VydmVkIGlkZW50aWZpZXIAaW52YWxpZCB2YXJpYWJsZSBuYW1lIGluIHN0cmljdCBtb2RlAGludmFsaWQgbGV4aWNhbCB2YXJpYWJsZSBuYW1lAHNwZWNpYWwgPT0gUFVUX0xWQUxVRV9OT0tFRVAgfHwgc3BlY2lhbCA9PSBQVVRfTFZBTFVFX05PS0VFUF9ERVBUSABwdXRfbHZhbHVlAHNldF9vYmplY3RfbmFtZQAidXNlIHN0cmljdCIgbm90IGFsbG93ZWQgaW4gZnVuY3Rpb24gd2l0aCBkZWZhdWx0IG9yIGRlc3RydWN0dXJpbmcgcGFyYW1ldGVyAGludmFsaWQgZnVuY3Rpb24gbmFtZSBpbiBzdHJpY3QgY29kZQBpbnZhbGlkIGFyZ3VtZW50IG5hbWUgaW4gc3RyaWN0IGNvZGUAZHVwbGljYXRlIGFyZ3VtZW50IG5hbWVzIG5vdCBhbGxvd2VkIGluIHRoaXMgY29udGV4dABpZGVudGlmaWVyIGV4cGVjdGVkAGludmFsaWQgZXhwb3J0IHN5bnRheABmcm9tIGNsYXVzZSBleHBlY3RlZAAnbGV0JyBpcyBub3QgYSB2YWxpZCBsZXhpY2FsIGlkZW50aWZpZXIAbWlzc2luZyBpbml0aWFsaXplciBmb3IgY29uc3QgdmFyaWFibGUAdmFyaWFibGUgbmFtZSBleHBlY3RlZABleHBlY3RpbmcgJ2FzJwBpbnZhbGlkIGltcG9ydCBiaW5kaW5nAGR1cGxpY2F0ZSBpbXBvcnQgYmluZGluZwB0b28gbWFueSBjbG9zdXJlIHZhcmlhYmxlcwBkdXBsaWNhdGUgbGFiZWwgbmFtZQByZXR1cm4gbm90IGluIGEgZnVuY3
 
Rpb24AbGluZSB0ZXJtaW5hdG9yIG5vdCBhbGxvd2VkIGFmdGVyIHRocm93AGxleGljYWwgZGVjbGFyYXRpb25zIGNhbid0IGFwcGVhciBpbiBzaW5nbGUtc3RhdGVtZW50IGNvbnRleHQAZm9yIGF3YWl0IGlzIG9ubHkgdmFsaWQgaW4gYXN5bmNocm9ub3VzIGZ1bmN0aW9ucwBkdXBsaWNhdGUgZGVmYXVsdABpbnZhbGlkIHN3aXRjaCBzdGF0ZW1lbnQAZXhwZWN0aW5nIGNhdGNoIG9yIGZpbmFsbHkAaW52YWxpZCBrZXl3b3JkOiB3aXRoAGZ1bmN0aW9uIGRlY2xhcmF0aW9ucyBjYW4ndCBhcHBlYXIgaW4gc2luZ2xlLXN0YXRlbWVudCBjb250ZXh0AGNsYXNzIGRlY2xhcmF0aW9ucyBjYW4ndCBhcHBlYXIgaW4gc2luZ2xlLXN0YXRlbWVudCBjb250ZXh0ACdmb3IgYXdhaXQnIGxvb3Agc2hvdWxkIGJlIHVzZWQgd2l0aCAnb2YnAGEgZGVjbGFyYXRpb24gaW4gdGhlIGhlYWQgb2YgYSBmb3ItJXMgbG9vcCBjYW4ndCBoYXZlIGFuIGluaXRpYWxpemVyAG9mAGluAGV4cGVjdGVkICdvZicgb3IgJ2luJyBpbiBmb3IgY29udHJvbCBleHByZXNzaW9uAGNvbnRpbnVlIG11c3QgYmUgaW5zaWRlIGxvb3AAYnJlYWsgbXVzdCBiZSBpbnNpZGUgbG9vcCBvciBzd2l0Y2gAYnJlYWsvY29udGludWUgbGFiZWwgbm90IGZvdW5kAHVuc3VwcG9ydGVkIGtleXdvcmQ6ICVzAGNwb29sX2lkeCA+PSAwAGpzX2NyZWF0ZV9mdW5jdGlvbgBzLT5pc19ldmFsIHx8IHMtPmNsb3N1cmVfdmFyX2NvdW50ID09IDAAYWRkX2V2YWxfdmFyaWFibGV
 
zAGV4cG9ydGVkIHZhcmlhYmxlICclcycgZG9lcyBub3QgZXhpc3QAcmVzb2x2ZV92YXJpYWJsZXMAbGFiMSA+PSAwICYmIGxhYjEgPCBzLT5sYWJlbF9jb3VudABiY19idWZbcG9zXSA9PSBPUF9sYWJlbABvcHRpbWl6ZV9zY29wZV9tYWtlX3JlZgBvcHRpbWl6ZV9zY29wZV9tYWtlX2dsb2JhbF9yZWYAdmFyX2tpbmQgIT0gSlNfVkFSX05PUk1BTAByZXNvbHZlX3Njb3BlX3ByaXZhdGVfZmllbGQAdmFyX2tpbmQgPT0gSlNfVkFSX1BSSVZBVEVfU0VUVEVSAHVuZGVmaW5lZCBwcml2YXRlIGZpZWxkICclcycAcy0+bGFiZWxfc2xvdHNbbGFiZWxdLmZpcnN0X3JlbG9jID09IE5VTEwAc2tpcF9kZWFkX2NvZGUAcmVzb2x2ZV9sYWJlbHMAbHMtPmFkZHIgPT0gLTEAZGlmZiA9PSAoaW50MTZfdClkaWZmAGRpZmYgPT0gKGludDhfdClkaWZmAGxhYmVsX3Nsb3RzW2ldLmZpcnN0X3JlbG9jID09IE5VTEwAZmluZF9qdW1wX3RhcmdldABpbnZhbGlkIG9wY29kZSAob3A9JWQsIHBjPSVkKQBieXRlY29kZSBidWZmZXIgb3ZlcmZsb3cgKG9wPSVkLCBwYz0lZCkAc3RhY2sgdW5kZXJmbG93IChvcD0lZCwgcGM9JWQpAHN0YWNrIG92ZXJmbG93IChvcD0lZCwgcGM9JWQpAHVuY29uc2lzdGVudCBzdGFjayBzaXplOiAlZCAlZCAocGM9JWQpAG5hbWUAbWVzc2FnZQAAAADcJwAAAwAAAAAAAACjAAAA0E0AAAMDAABuDgAAAAAAANVNAAADAwAAvgoAAAAAAAA6IABpbnZhbGlkIHByb3BlcnR5IGFjY2VzcwBwcm94eSBwcmV2ZW50RXh0
 
ZW5zaW9ucyBoYW5kbGVyIHJldHVybmVkIGZhbHNlAGNyZWF0ZQBnZXRQcm90b3R5cGVPZgBzZXRQcm90b3R5cGVPZgBkZWZpbmVQcm9wZXJ0eQBkZWZpbmVQcm9wZXJ0aWVzAGdldE93blByb3BlcnR5TmFtZXMAZ2V0T3duUHJvcGVydHlTeW1ib2xzAGlzRXh0ZW5zaWJsZQBwcmV2ZW50RXh0ZW5zaW9ucwBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IAZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycwBpcwBhc3NpZ24Ac2VhbABmcmVlemUAaXNTZWFsZWQAaXNGcm96ZW4AX19nZXRDbGFzcwBmcm9tRW50cmllcwAAAAAAAABaTgAAAwAAAAIAAACkAAAAYU4AAAMAAAABAQAApQAAAHBOAAADAAAAAgAAAKYAAAB/TgAAAwAAAAMBAACnAAAAjk4AAAMAAAACAAAAqAAAAJ9OAAADAAAAAQAAAKkAAACzTgAAAwAAAAEAAACqAAAAnS4AAAMAAAABAQAAqwAAAJYuAAADAAEAAQEAAKsAAACiLgAAAwACAAEBAACrAAAAyU4AAAMAAAABAQAArAAAANZOAAADAAAAAQEAAK0AAADoTgAAAwAAAAIBAACuAAAAAU8AAAMAAAABAAAArwAAABtPAAADAAAAAgAAALAAAAAeTwAAAwAAAAIAAACxAAAAJU8AAAMAAAABAQAAsgAAACpPAAADAAEAAQEAALIAAAAxTwAAAwAAAAEBAACzAAAAOk8AAAMAAQABAQAAswAAAENPAAADAAAAAQAAALQAAABOTwAAAwAAAAEAAAC1AAAAbm90IGEgcHJvdG90eXBlAGhhc093blByb3BlcnR5AGlzUHJvdG90eXBlT2YAcHJvcGVydHlJc0VudW1lcmFibGUAX19wcm90b19fAF9fZGVmaW5lR2V0dGVyX18AX19kZWZpbmVTZ
 
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
 
BAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAQAAAAEAAAABAAAAAQAAAAFAAAABQAAAAAAAAAKAAkADgAgACEAoAChAIAWgRYAIAsgKCAqIC8gMCBfIGAgADABMP/+AP8AQdTfAQuRBBAAAAD+//+H/v//BwAAAAAQAP8D/v//h/7//wdleHRyYW5lb3VzIGNoYXJhY3RlcnMgYXQgdGhlIGVuZAB0b28gbWFueSBpbWJyaWNhdGVkIHF1YW50aWZpZXJzAHN0YWNrIG92ZXJmbG93AHN5bnRheCBlcnJvcgBub3RoaW5nIHRvIHJlcGVhdABpbnZhbGlkIGdyb3VwIG5hbWUAZHVwbGljYXRlIGdyb3VwIG5hbWUAaW52YWxpZCBncm91cAB0b28gbWFueSBjYXB0dXJlcwBleHBlY3RpbmcgZ3JvdXAgbmFtZQBncm91cCBuYW1lIG5vdCBkZWZpbmVkAGludmFsaWQgZGVjaW1hbCBlc2NhcGUgaW4gcmVndWxhciBleHByZXNzaW9uAGJhY2sgcmVmZXJlbmNlIG91dCBvZiByYW5nZSBpbiByZWd1bGFyIGV4cHJlc3Npb24AaW52YWxpZCByZXBldGl0aW9uIGNvdW50AGV4cGVjdGluZyAnJWMnAGludmFsaWQgY2xhc3MgcmFuZ2UAXiRcLiorPygpW117fXwvAGludmFsaWQgZXNjYXBlIHNlcXVl
 
bmNlIGluIHJlZ3VsYXIgZXhwcmVzc2lvbgB1bmV4cGVjdGVkIGVuZABtYWxmb3JtZWQgdW5pY29kZSBjaGFyAAAA4HEAAKBvAADwcQAAAQAwADoAQfDjAQvFAwQAMAA6AEEAWwBfAGAAYQB7AGV4cGVjdGluZyAneycgYWZ0ZXIgXHAAdW5rbm93biB1bmljb2RlIHByb3BlcnR5IHZhbHVlAGV4cGVjdGluZyAnfScAU2NyaXB0AHNjAFNjcmlwdF9FeHRlbnNpb25zAHVua25vd24gdW5pY29kZSBzY3JpcHQAR2VuZXJhbF9DYXRlZ29yeQBnYwB1bmtub3duIHVuaWNvZGUgZ2VuZXJhbCBjYXRlZ29yeQB1bmtub3duIHVuaWNvZGUgcHJvcGVydHkgbmFtZQB0b28gbWFueSByYW5nZXMAAAAAAAEDBQEBAQEFBQUBAgIDBQUBAQECAgMDBQUBBQERb3V0IG9mIG1lbW9yeQBvcGNvZGUgPCBSRU9QX0NPVU5UAC90bXAvcXVpY2tqcy9saWJyZWdleHAuYwBjb21wdXRlX3N0YWNrX3NpemUAKHBvcyArIGxlbikgPD0gYmNfYnVmX2xlbgBzdGFja19zaXplID4gMAB2YWwgPCBzLT5jYXB0dXJlX2NvdW50AGxyZV9leGVjX2JhY2t0cmFjawB2YWwyIDwgcy0+Y2FwdHVyZV9jb3VudABBwOcBC6QLMJogAACaMABzgVoAMBdgADAHbACzgW8AABdwAAAHfAAAgX8AQDCAAMMBmACQgZgAQAaZAECQnAC0gaQAQC6lADABvABAhrwAcIG/AAABwAAwgcAAQATBADABwwBAgsMAMILEAECCxQAwAccAMIHHADAByABAgsgAMIHJADABygAAgcoAMAHLADCBywBAAswAAAHNADABzgAwgc4AAAHPADCBzwBABtAAMAHTAECC0wAwgdQAQALWADAB1wBAgtcAMILYA
 
ECE2QAwgdsAQALcAEAC3gAAgd8AUAPiAFCD4wBQA+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/Q9iAf4PoAGTEKABlRCggZUQMQGZEAEBpxAxELAQARC4EECCwRAxGlsSARpoEjEvABYBLxgWQAIwFjABMRYwgTEWMAEyFgCBMhYAATMWQIYzFjCBNhYwATcWMIE3FjABOBZAAjkWQII6FjACPxZAZEAWQIR1FkACeRYAJoAWAIGTFgCBlhZALiBTQBxAU0AOkVNAPplTQIS8UzCBvlNACr9TQILFUzCBxlNABMhTAQHKU0AUy1MwAdVTMIHVUzAB1lMwgdZTMAHXUzAB2FMwgdhTMAHZUzGB2VNADNpTQALhUzEB4lMwgeJTMAHjU0CE41NAgvpTAYGpVSBQuFWyAYB9soGAfbIBgX3agYF92gGCfbOBgn2zAYN9u4GJfbsBin27gYp9vAGLfbuBi30xmpB/AZqgfzEoAIIBKBSCMSRYggEkbIIxM0CGATNghjEgUIwBIGCMMSAgtwEgMLcxIoD0ASKR9ABB8PIBC+MDAQCcBgdNAwQQAI8LAAARAAgAU0pRAFIAUwA6VFUAV1k/XVwARmFjQmQAZgBoAGoAbABuAABAAAAAABoAkwAAIDUAJwAhACQiKgATa20AJiQnFBYYGxw+Hj8fOT0iIUEeQCUlJiggKkksQy5LMEwyREKZAACVj31+g4QSgIJ2dxJ7o3x4eYqSmKaghQCaoZN1M5UAjgB0mZiXlgAAngCcAKGgFS4vMLS1TqqpEhQeISIiKjQ1pqc2H0oAAJcBWtodNgUAxMPGxcjHysnMy8TVRdZC10bYztDS1NrZ7vb+DgcPgJ8AIYCj7QDAQMZg59v
 
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
 
EhoiJQaGNRdWG7DSJUpWJbAUFQO8AQdCMAgujEvoGAIQJAPAKAHAMAPQNAEoQIBoYIHQbIN0gAAyoAFqqIBr/AK0OATgSIcEVIeUZIaodIYzRQUrhIfABDgAAAABBZGxhbSxBZGxtAEFob20sQWhvbQBBbmF0b2xpYW5fSGllcm9nbHlwaHMsSGx1dwBBcmFiaWMsQXJhYgBBcm1lbmlhbixBcm1uAEF2ZXN0YW4sQXZzdABCYWxpbmVzZSxCYWxpAEJhbXVtLEJhbXUAQmFzc2FfVmFoLEJhc3MAQmF0YWssQmF0awBCZW5nYWxpLEJlbmcAQmhhaWtzdWtpLEJoa3MAQm9wb21vZm8sQm9wbwBCcmFobWksQnJhaABCcmFpbGxlLEJyYWkAQnVnaW5lc2UsQnVnaQBCdWhpZCxCdWhkAENhbmFkaWFuX0Fib3JpZ2luYWwsQ2FucwBDYXJpYW4sQ2FyaQBDYXVjYXNpYW5fQWxiYW5pYW4sQWdoYgBDaGFrbWEsQ2FrbQBDaGFtLENoYW0AQ2hlcm9rZWUsQ2hlcgBDaG9yYXNtaWFuLENocnMAQ29tbW9uLFp5eXkAQ29wdGljLENvcHQsUWFhYwBDdW5laWZvcm0sWHN1eABDeXByaW90LENwcnQAQ3lyaWxsaWMsQ3lybABEZXNlcmV0LERzcnQARGV2YW5hZ2FyaSxEZXZhAERpdmVzX0FrdXJ1LERpYWsARG9ncmEsRG9ncgBEdXBsb3lhbixEdXBsAEVneXB0aWFuX0hpZXJvZ2x5cGhzLEVneXAARWxiYXNhbixFbGJhAEVseW1haWMsRWx5bQBFdGhpb3BpYyxFdGhpAEdlb3JnaWFuLEdlb3IAR2xhZ29saXRpYyxHbGFnAEdvdGhpYyxHb3RoAEdyYW50aGEsR3JhbgBHcmVlayxHcmVrAEd1amFyYXRpLEd1anIAR3VuamFsYV9Hb25kaSxHb25nAEd1cm11
 
a2hpLEd1cnUASGFuLEhhbmkASGFuZ3VsLEhhbmcASGFuaWZpX1JvaGluZ3lhLFJvaGcASGFudW5vbyxIYW5vAEhhdHJhbixIYXRyAEhlYnJldyxIZWJyAEhpcmFnYW5hLEhpcmEASW1wZXJpYWxfQXJhbWFpYyxBcm1pAEluaGVyaXRlZCxaaW5oLFFhYWkASW5zY3JpcHRpb25hbF9QYWhsYXZpLFBobGkASW5zY3JpcHRpb25hbF9QYXJ0aGlhbixQcnRpAEphdmFuZXNlLEphdmEAS2FpdGhpLEt0aGkAS2FubmFkYSxLbmRhAEthdGFrYW5hLEthbmEAS2F5YWhfTGksS2FsaQBLaGFyb3NodGhpLEtoYXIAS2htZXIsS2htcgBLaG9qa2ksS2hvagBLaGl0YW5fU21hbGxfU2NyaXB0LEtpdHMAS2h1ZGF3YWRpLFNpbmQATGFvLExhb28ATGF0aW4sTGF0bgBMZXBjaGEsTGVwYwBMaW1idSxMaW1iAExpbmVhcl9BLExpbmEATGluZWFyX0IsTGluYgBMaXN1LExpc3UATHljaWFuLEx5Y2kATHlkaWFuLEx5ZGkATWFrYXNhcixNYWthAE1haGFqYW5pLE1haGoATWFsYXlhbGFtLE1seW0ATWFuZGFpYyxNYW5kAE1hbmljaGFlYW4sTWFuaQBNYXJjaGVuLE1hcmMATWFzYXJhbV9Hb25kaSxHb25tAE1lZGVmYWlkcmluLE1lZGYATWVldGVpX01heWVrLE10ZWkATWVuZGVfS2lrYWt1aSxNZW5kAE1lcm9pdGljX0N1cnNpdmUsTWVyYwBNZXJvaXRpY19IaWVyb2dseXBocyxNZXJvAE1pYW8sUGxyZABNb2RpLE1vZGkATW9uZ29saWFuLE1vbmcATXJvLE1yb28ATXVsdGFuaSxNdWx0AE15YW5tYXIsTXltcgBOYWJhdGFlYW4sTmJhdABOYW5kaW5hZ
 
2FyaSxOYW5kAE5ld19UYWlfTHVlLFRhbHUATmV3YSxOZXdhAE5rbyxOa29vAE51c2h1LE5zaHUATnlpYWtlbmdfUHVhY2h1ZV9IbW9uZyxIbW5wAE9naGFtLE9nYW0AT2xfQ2hpa2ksT2xjawBPbGRfSHVuZ2FyaWFuLEh1bmcAT2xkX0l0YWxpYyxJdGFsAE9sZF9Ob3J0aF9BcmFiaWFuLE5hcmIAT2xkX1Blcm1pYyxQZXJtAE9sZF9QZXJzaWFuLFhwZW8AT2xkX1NvZ2RpYW4sU29nbwBPbGRfU291dGhfQXJhYmlhbixTYXJiAE9sZF9UdXJraWMsT3JraABPcml5YSxPcnlhAE9zYWdlLE9zZ2UAT3NtYW55YSxPc21hAFBhaGF3aF9IbW9uZyxIbW5nAFBhbG15cmVuZSxQYWxtAFBhdV9DaW5fSGF1LFBhdWMAUGhhZ3NfUGEsUGhhZwBQaG9lbmljaWFuLFBobngAUHNhbHRlcl9QYWhsYXZpLFBobHAAUmVqYW5nLFJqbmcAUnVuaWMsUnVucgBTYW1hcml0YW4sU2FtcgBTYXVyYXNodHJhLFNhdXIAU2hhcmFkYSxTaHJkAFNoYXZpYW4sU2hhdwBTaWRkaGFtLFNpZGQAU2lnbldyaXRpbmcsU2dudwBTaW5oYWxhLFNpbmgAU29nZGlhbixTb2dkAFNvcmFfU29tcGVuZyxTb3JhAFNveW9tYm8sU295bwBTdW5kYW5lc2UsU3VuZABTeWxvdGlfTmFncmksU3lsbwBTeXJpYWMsU3lyYwBUYWdhbG9nLFRnbGcAVGFnYmFud2EsVGFnYgBUYWlfTGUsVGFsZQBUYWlfVGhhbSxMYW5hAFRhaV9WaWV0LFRhdnQAVGFrcmksVGFrcgBUYW1pbCxUYW1sAFRhbmd1dCxUYW5nAFRlbHVndSxUZWx1AFRoYWFuYSxUaGFhAFRoYWksVGhhaQBUaWJldGFuLF
 
RpYnQAVGlmaW5hZ2gsVGZuZwBUaXJodXRhLFRpcmgAVWdhcml0aWMsVWdhcgBWYWksVmFpaQBXYW5jaG8sV2NobwBXYXJhbmdfQ2l0aSxXYXJhAFllemlkaSxZZXppAFlpLFlpaWkAWmFuYWJhemFyX1NxdWFyZSxaYW5iAEGAnwILsRTAGZlFhRmZRa4ZgEWOGYBFhBmWRYAZnkWAGeFgRaYZhEWEGYENkxngDzeDK4AZgisBgyuAGYArA4ArgBmAK4AZgisAgCsAkysAviuNGo8r4CQdgTfgSB0ApQUBsQUBggUAtjQHmjQDhTQKhASAGYUEgBmNBIAZgAQAgASAGZ8EgBmJBIo3mQSAN+ALBIAZoQSNhwC7hwGCh68EsZENumMBgmOtewGOewCbUAGAUACKhzSUBACRBAqOBIAZnATQH4M3jh+BGZkfgwsAhwsBgQsBlQsAhgsAgAsCgwsBiAsBgQsBgwsHgAsDgQsAhAsBmAsBgi4AhS4DgS4BlS4Ahi4AgS4AgS4AgS4BgC4AhC4DgS4Bgi4CgC4Ggy4AgC4GkC4JgiwAiCwAgiwAlSwAhiwAgSwAhCwBiSwAgiwAgiwBgCwOgywBiywGhiwAgnAAh3ABgXABlXAAhnAAgXAAhHABiHABgXABgnAGgnADgXAAhHABkXAJgY4AhY4Cgo4Ag44CgY4AgI4AgY4CgY4Cgo4Ci44DhI4Cgo4Ag44BgI4FgI4NlI4EjJAAgpAAlpAAj5ACh5AAgpAAg5AGgZAAgpAEg5ABiZAGiJCMPACCPACWPACJPACEPAGIPACCPACDPAaBPAaAPACDPAGJPACBPAyMTwCCTwCyTwCCTwCFTwOPTwGZTwCCgQCRgQKXgQCIgQCAgQGGgQKAgQOFgQCAgQCHgQWJgQGCgQu5kgOAGZuSJIFEAIBEAIREAJdEAIBEAJZEAYREAIBEAIVEAYlEAYNEH8eTAKOTA6aTAKOTAI6TAIaTgxmBkyT
 
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
 
MZXR0ZXJfTnVtYmVyAE5vLE90aGVyX051bWJlcgBTbSxNYXRoX1N5bWJvbABTYyxDdXJyZW5jeV9TeW1ib2wAU2ssTW9kaWZpZXJfU3ltYm9sAFNvLE90aGVyX1N5bWJvbABQYyxDb25uZWN0b3JfUHVuY3R1YXRpb24AUGQsRGFzaF9QdW5jdHVhdGlvbgBQcyxPcGVuX1B1bmN0dWF0aW9uAFBlLENsb3NlX1B1bmN0dWF0aW9uAFBpLEluaXRpYWxfUHVuY3R1YXRpb24AUGYsRmluYWxfUHVuY3R1YXRpb24AUG8sT3RoZXJfUHVuY3R1YXRpb24AWnMsU3BhY2VfU2VwYXJhdG9yAFpsLExpbmVfU2VwYXJhdG9yAFpwLFBhcmFncmFwaF9TZXBhcmF0b3IAQ2MsQ29udHJvbCxjbnRybABDZixGb3JtYXQAQ3MsU3Vycm9nYXRlAENvLFByaXZhdGVfVXNlAExDLENhc2VkX0xldHRlcgBMLExldHRlcgBNLE1hcmssQ29tYmluaW5nX01hcmsATixOdW1iZXIAUyxTeW1ib2wAUCxQdW5jdHVhdGlvbixwdW5jdABaLFNlcGFyYXRvcgBDLE90aGVyAEGAvwILsAgOAAAAPgAAAMABAAAADgAAAPAAAAAAfwAAAIADAQAAPEFTQ0lJX0hleF9EaWdpdCxBSGV4AEJpZGlfQ29udHJvbCxCaWRpX0MARGFzaABEZXByZWNhdGVkLERlcABEaWFjcml0aWMsRGlhAEV4dGVuZGVyLEV4dABIZXhfRGlnaXQsSGV4AElEU19CaW5hcnlfT3BlcmF0b3IsSURTQgBJRFNfVHJpbmFyeV9PcGVyYXRvcixJRFNUAElkZW9ncmFwaGljLElkZW8ASm9pbl9Db250cm9sLEpvaW5fQwBMb2dpY2FsX09yZGVyX0V4Y2VwdGlvbixMT0UATm9uY2hhcmFjdGVyX0NvZGVfUG9p
 
bnQsTkNoYXIAUGF0dGVybl9TeW50YXgsUGF0X1N5bgBQYXR0ZXJuX1doaXRlX1NwYWNlLFBhdF9XUwBRdW90YXRpb25fTWFyayxRTWFyawBSYWRpY2FsAFJlZ2lvbmFsX0luZGljYXRvcixSSQBTZW50ZW5jZV9UZXJtaW5hbCxTVGVybQBTb2Z0X0RvdHRlZCxTRABUZXJtaW5hbF9QdW5jdHVhdGlvbixUZXJtAFVuaWZpZWRfSWRlb2dyYXBoLFVJZGVvAFZhcmlhdGlvbl9TZWxlY3RvcixWUwBXaGl0ZV9TcGFjZSxzcGFjZQBCaWRpX01pcnJvcmVkLEJpZGlfTQBFbW9qaQBFbW9qaV9Db21wb25lbnQsRUNvbXAARW1vamlfTW9kaWZpZXIsRU1vZABFbW9qaV9Nb2RpZmllcl9CYXNlLEVCYXNlAEVtb2ppX1ByZXNlbnRhdGlvbixFUHJlcwBFeHRlbmRlZF9QaWN0b2dyYXBoaWMsRXh0UGljdABEZWZhdWx0X0lnbm9yYWJsZV9Db2RlX1BvaW50LERJAElEX1N0YXJ0LElEUwBDYXNlX0lnbm9yYWJsZSxDSQBBU0NJSQBBbHBoYWJldGljLEFscGhhAEFueQBBc3NpZ25lZABDYXNlZABDaGFuZ2VzX1doZW5fQ2FzZWZvbGRlZCxDV0NGAENoYW5nZXNfV2hlbl9DYXNlbWFwcGVkLENXQ00AQ2hhbmdlc19XaGVuX0xvd2VyY2FzZWQsQ1dMAENoYW5nZXNfV2hlbl9ORktDX0Nhc2Vmb2xkZWQsQ1dLQ0YAQ2hhbmdlc19XaGVuX1RpdGxlY2FzZWQsQ1dUAENoYW5nZXNfV2hlbl9VcHBlcmNhc2VkLENXVQBHcmFwaGVtZV9CYXNlLEdyX0Jhc2UAR3JhcGhlbWVfRXh0ZW5kLEdyX0V4dABJRF9Db250aW51ZSxJREMATG93ZXJjYXNlLExvd2VyA
 
E1hdGgAVXBwZXJjYXNlLFVwcGVyAFhJRF9Db250aW51ZSxYSURDAFhJRF9TdGFydCxYSURTAEHAxwILtCCBACgAlwAqAIGAKgCXwCsAFYEsAJcALQCBQC0AlwAuABVBLgCZAS8AFiAwAEIIQABCikQAQgRKAJYATAAXgUwAQgJNAEJDTgAvwU8AQsNQAL9AUgBCA1MAQglVAEIIWgCWAF4AQkNeAIHAXwBCAWgAQsFrAIUBcQAXw3EAREhzAESDdwBCg3kAvgJ7AJdBfABCAX0ARAR+AEIOgABCgYcARIeJAIMErAAXA7YAgwK4ABQC0ACWANEAgADdAJeA3gCAgN8AlwDhAD5B4QCAwOEAvgTiAK6D6gCugvIArQH0AC7B9AADQfUAAwP8AIFA/gA+AgABvsABAb4BAwG+QAYBvkAOAT4CFAG+wBUBvgEXAUSBHQFEQTABRAI0AUSBNQFEgzYBRIM4AUSGOgFEAT4BhcBhAa6CiAEvQp0BhAGwAYTAtAGEQEoChEBMAoQATQIuBFYCLsFyAiABdwKEwHcChMCMAoSAjQKuQZYChICXAoQA0gIuwdICIAHXAoQA5QKugfIChAASA4QAMAMiwTEDLoEyA66BUgOEgHYDrgF3A4XAjAOFwKwDLwG3A4EAwwOEwNADhEDTA4SA1AOEwNUDhADXA4RA2gOEwNwDLkHdA4XA3QOEAN4DhUDeA4RA4AOEwOQDhEDnA4SA6AOEwOkDhADrA4RA7gOEgAkEgQA/BISEwQaEgMQGhMHOBiAB0AaEwNAGgwNLBx/ETAeDF08HgQBeB4PSZgdEHYAHQomOB0QYkwdCDZ8HFoKlB4WApge+wKYHRA2oB0SgrgciAcAHRIPAByIBwgdEg8IHIgHEB0SCxAciAcYHRILGBz4RyAdEgtAHIgHSB0SC0gciAdQHRIPUBz5M1geAQNwHvoDcB4DA3Ae+AN0HgEDdB76A3QeAwN0HvgDeB4BA3ge+gN
 
4HgMDeB74A3weAQN8HIAjgByAI5AcgCOgHvgXsB4DA7ge+AO8Hl0DvB4CA7wcXwe8HPkTwB4BA8ge+gPIHgMDyB74D8weAwPQHroL1B4DA9gc+Q/cHgMD4B64D+QeAwPoHPgH7BwKB+we+g/wHgED+B76A/geAwP4HvgD/B4BA/weXgP8HHgEACJWEAAiBQAQIl8AFCIEACQiXQAkImYAJCIHACwiFwAwIsQANCIWADQixwA0IlwEPCJfBEQizwBUIgcAXCJUFHAiBwB4IFQIfCB8FIAiDhSIIFUQlCJcAKggZAUAIgYBACL/AQAgZQUEIgcBBCL9AQggthUIIgUBFCJeARQiVQkYIlwBICJlASAiXgEgIgQBJCICASQiBAEoIAoFKCJUESwgfQk0IgUBOCJnATgiDAk8IlUJRCBkBVAibgFQIGcZUCJfAVwiBAFgIl0BYCJmAWAiXwFgIgQBZCJdAWQiZgFkIm8BZCJcAWgiBQFoIl4BaCJnAWgiVAlsIl0BcCJmAXAiXwFwIgQBdCJdAXQiZgF0Im8BdCJcAXgiBQF4Il4BeCJnAXggVAl8ImUBiCD6BZgi+gGsIvkFzCL4AgQi+QIIIvgCDCL4BiQiFAIsIsUCLCIXAiwixAIwIvkCQCL4AkQi+wZEIvgGYCL5CmwhEAZ0IRAGeCEQBoAhEAaEIRAGiCD4CqwhEArgIIIK6CB5BygifBBgJI0UaCZfAHAmlBB0JK0UfCZvAIQmhBCIJJUUkCZnAJgklDScJH40tCR8NNAmBgDoJswCDCpkAnQqXQJ0KmYCdCr4AtwoVAR8LgcBbC4HApwuBwLwLrQTAC61EwguthMQLg/PGCy2F4AsDHeMLLYjxC4EAAAyDgg0MhAsTDIRCGQwiARwMIsEcDCKBHQwiQR4MIgEfDIQAJQwjwSYMhIAnDIXAJwyECysMhEIxDCIBNAwiwTQMIoE1DCJBNgwiATcMhAA9DCDCPQyEgD8MhcA
 
/DC1KTAwfRVEMn8pTDK0VWQwDh2QMQQeADImAgwwpwYMMqUGEDIkAhQwpQYUMqcKFDIkAhwyPQIcMjYCHDEESiAwDApEMmQCUDKNElAwjg5YMLQeYDK+Emwyhwp0MtQCfDLNAnwyFgJ8MgxigDCNCrAwjRa0Ml8CvDKEEsAylQbIMlwCzDJlAswyXgLMMmcCzDK0XtAyFwL8MswHADLHAwAyzAMEMMUHBDLXAwQyzAMIMsUHCDDMBwwwxgcMMhQDEDLFAxAwzgcQMhQDFDLVAxQy3gMUMtcDFDLEAxgw1QcYMs8DGDLEBxwyzwMcMtQDIDLNAyAyxgcgML0LJDDFBygy1wMoMsQDLDLNAywy1gMsMscDLDC8BzAy1gMwMs8DMDLUAzQyxQM0MtYDNDIXAzQyxAs4Ms0DPDLGAzwyFwM8MsQHQDLPA0AyxAdEMtcDRDLMA0gyFQNIMtYDSDIXA0gwzAdMMsYHTDLNA1AyFgNQMscDUDLMA1QyFQNUMtYDVDLHA1QwhBdYMJYXYDKUC2wyZQNwMF4HcDJkA3QyXQd0MJwHeDIWC3gyJwN8MPwTgDJkA4gybQOIMv4PiDBlC5AwFQuUMP0PmDDHB5wyFQOgMsYHoDIVA6QwHgekMiQDqDJdA6gwZguoMnYDrDI3A6ww/COwMBQHwDJuA8AyXwfAMm4DxDJnA8QwXBfIMmYD0DBfB9AwZQfUMl8D1DJsA9gyZQPYMF4L2DBmB9wyhBPgMJUX6DCXF/AwlQf8MmcD/DAMBpymBANwpAwH+KQMC1yqBQNoqghRAPoJ/Sj6CP2o+AqGKPhABmz6CL5w+kMWzPpcBwD4ZwcA+P0HBPq/CxD6EQcc+rQTIPoFAyj4Eg8o+oAPMPqACzj6EgM8+IAHQPiDB0D6uhNE+hcDTPi0x1D6ty/Q+L4n6Pi0C/z4vLwA/pYIXP7HAGD+vBxk/r/8cP6WBPD+vZD0/MSBUPzGbZD8xAXw/s4N8P7FA
 
fj+9gH4/u8B+P7MAfz8DBYQ/rQGMPxXDjD8tRo4/A8yRP5XGlz+vAZw/hQCdPy+FnT+tOqA/L0S9Px9vwD8fwdc/rV/YP4EA6D8fT+g/H4PwPx+D8j8fg/Q/n4H2P4MH+D+SgSZEksAqRBKBS0QSwdJEEsIuRRKBbkWSAE5GkoNXdBLDbnQfDQB1H40GdR8NDXWfgxN1H4kVdR8NGnUfjSB1FRAndZ9DL3WfRTF1Hw00dR+NOnWVA0F1H0RDdZ+DRXUfjUd1lQdOdZ+DUnUfjVR1Hw1bdR+NYXUfDWh1H41udR8NdXUfjXt1Hw2CdR+NiHUfDY91H42VdR8NnHUfjaJ1AwGpdZ8IqnWBQK51n4OudYFAsHWfjLB1gcC2dS0Dt3WfiLh1gcC8dZ8DvXWBwL51nwy/dYFAxXUtg8V1nwjHdYFAy3Wfg8t1gUDNdZ+MzXWBwNN1LQPUdZ+I1XWBwNl1nwPadYHA23WfDNx1gUDidS2D4nWfCOR1gUDodZ+D6HWBQOp1n4zqdYHA8HUtBPF1H4XzdR8F9nUfhfh1HwX7dR+F/XUtAoB7rU2BewNCiHuBwIl7LUWKewMEjXuBgJB7A9yRey0FoHutyKJ7g0Soe63IqnuXAEB8IUVAfCUNRHyHgEp8FcFKfBdBS3wfDUx8F4JSfJmAU3yXwFN8l4FafJcAZHwvAYB8gYCAfAMWhHzBBJB8AwGUfB8F/H6sAQC+ENEAvqxHCb4QOQ2+LIcpviwCLb6QNy6+kP9JvhC8ab4AAAAAAAAAACAAAABhAAIABAAGALwDCAAKAAwAFQCVAKUAuQDBAMMAxwDLANEA1wDdAOAA5gD4AAgBCgFzABABEgEUASABLAFEAU0BUwFiAWgBagF2AZIBlAGpAbsBxwHRAdUBuQLXATsA2QHbAbcA4QH8AQwCGAIdAiMCJwKjAzMCPwJCAksCTgJRAl0CYAJpAmwCbwJ1AngCgQKKApwCnwKjAq8CuQLFA
 
skCzQLRAtUC5wLtAvEC9QL5Av0CBQMJAw0DEwMXAxsDIwMnAysDLwM1Az0DQQNJA00DUQMLD1cDWwNfA2MDZwNrA28DcwN5A30DgQOFA4kDjQORA5UDmQOdA6ED3BClA8kDzQPZA90D4QPvA/EDPQRPBJkE8AQCBUoFZAVsBXAFcwWaBfoF/gUHBgsGFAYYBh4GIgYoBo4GlAaYBp4GogarBqwD8watA/YGrgP5Bq8D/AbMA/8GzQMCB84DBQcJBw0HEQeGAzIHNQe5AzcHOweIA1MHiQNWB5ADaweKA3cHsAOJB44DmQefB6MHjAO4B48Duwe0AL4HwAfCBxAgywcuAM0HzwcgANIH1gfbB98H5AfqB/AHIAD2BxIiAQgFCAcIHQglCCcIQwAtCDAIkAE2CDkITgBFCEcITAhOCFEIWgCpA1oAUwhXCGAIaQBiCGUIbwh0CHoIfgiiCEkApAimCKkIVgCrCK0IsAi0CFgAtgi4CLsIwAjCCMUIdgDHCMkIzAjQCHgA0gjUCNcI2wjeCOQI5wjwCPMI9gj5CAIJBgkLCQ8JFAkXCRoJIwksCTsJPglBCUQJRwlKCVYJXAlgCWIJZAloCWoJcAl4CXwJgAmGCYkJjwmRCTAAkwmZCZwJngmhCaQJYS3Na5+fpgmxCbwJxwmVCqEKFQsgACcLMQuNC6ELpQupC60LsQu1C7kLvQvBC8ULIQw1DDkMPQxBDEUMSQxNDFEMVQxZDG8McQxzDKAMvAzcDOQM7Az0DPwMBA0MDRQNIg0uDXoNgg2FDYkNjQ2dDbENtQ28DcINxg0oDiwOMA4yDjYOPA4+DkEOQw5GDncOew6JDo4OlA6cDqMOqQ60Dr4Oxg7KDs8O2Q7dDuQO7A7zDvgOBA8KDxUPGw8iDygPMw89D0UPTA9RD1cPXg9jD2kPcA92D30Pgg+JD40Png+kD6kPrQ+4D74PyQ/QD9YP2g/hD+UP7w/6DwAQBBAJEA8QEx
 
AaEB8QIxApEC8QMhA2EDkQPxBFEFkQYRB5EHwQgBCVEKEQsRDDEMsQzxDaEN4Q6hDyEPQQABEFERERQRFJEU0RUxFXEVoRbhFxEXURexF9EYERhBGMEZIRlhGcEaIRqBGrEW+nrxGzEY0CuxENEgsTCRSNFJIUUBVpFW8VdRV7FYcVkxUrAJ4VthW6Fb4VwhXGFcoV3hXiFUYWXxaFFosWSRdPF1QXdBd0GHoYDhnQGXQafBqaGp8asxq9GsMa1xrcGuIa8BogGy0bNRs5G08bxhvYG9ob3BtkMR0cHxwhHCMcJRwnHEUcUxxYHGEcahx8HIUcihyqHMUcxxzJHMsczRzPHNEc0xzzHPUc9xz5HPscAh0EHQYdCB0XHRkdGx0dHR8dIR0jHSUdJx0pHSsdLR0vHTEdMx03HfQDOR0HIjsdAiI9HUUd9ANHHQciSR0CIksdUx30A1UdByJXHQIiWR1hHfQDYx0HImUdAiJnHW8d9ANxHQcicx0CInUdfx2BHYMdhR2HHYkdjx2sHS0GtB3AHSwG0B1AHkweXx5xHoQehh6KHpAelh6YHpwenh6mHqkeqx6xHrMetTC5HhEfJx8rHy0fMh9/H5AfkSChIKcgoSG/IgBBgOgCC9JHIIgghDIzIIEgpzFvMdA0MdAyM9A0QYBBgUGCQYNBiEGKAABDp0WARYFFgkWISYBJgUmCSYgAAE6DT4BPgU+CT4NPiAAAAABVgFWBVYJViFmBAAAAAGGAYYFhgmGDYYhhigAAY6dlgGWBZYJliGmAaYFpgmmIAABug2+Ab4Fvgm+Db4gAAAAAdYB1gXWCdYh5gQAAeYhBhEGGQahDgUOCQ4dDjESMRYRFhkWHRahFjEeCR4ZHh0enSIJJg0mESYZJqEmHSUppakqCS6dMgUynTIxMAABrIGtOgU6nToy8Am5PhE+GT4tSgVKnUoxTgVOCU6dTjFSnVIxVg1WEVYZVilWLVahXglmCWYhagVq
 
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";if(!S(T)){var
 ka=T;T=b.locateFile?b.locateFile(ka,t):t+ka;}function la(){var a=T;try{if(a==T&&v)return new 
Uint8Array(v);if(S(a))try{var c=ma(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){w(g);}}function na(){return v||"function"!==typeof 
fetch?Promise.resolve().then(function(){return 
la();}):fetch(T,{credentials:"same-origin"}).then(function(a){if(!a.ok)throw"failed to load wasm binary file 
at '"+T+"'";return a.arrayB
 uffer();}).catch(function(){return la();});}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=L(a)+1,d=M(c);D(a,E,d,c);return d;}function oa(){}var pa=[null,[],[]];function qa(){function 
a(k){return(k=k.toTimeString().match(/\(([A-Za-z ]+)\)$/))?k[1]:"GMT";}if(!ra){ra=!0;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[sa()>>2]=60*g;N[ta()>>2]=Number(c!=f);d=a(d);e=a(e);d=ba(d);e=ba(e);f<c?(N[X()>>2]=d,N[X()+4>>2]=e):(N[X()>>2]=e,N[X()+4>>2]=d);}}var
 ra;oa=(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 ma="function"===typeof 
atob?atob:function(a){var c="",d=0;a=a.replace(/[^A-Za-z0-9\+\/=]/g,"");do{var 
e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrs
 tuvwxyz0123456789+/=".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;},ua={a:function(a,c,d,e){w("Assertion failed: "+H(a)+", at: "+[c?H(c):"unknown 
filename",d,e?H(e):"unknown function"]);},b:function(){w();},g:oa,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=E.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{x.grow(Math.min(2147483648,e)-ca.byteLe
 ngth+65535>>>16);da();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++){for(var 
k=N[c+8*g>>2],m=N[c+(8*g+4)>>2],y=0;y<m;y++){var 
l=E[k+y],p=pa[a];0===l||10===l?((1===a?aa:u)(K(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){qa();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;x=b.asm.k;da();O=b.asm.t;fa.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 na().then(function(g){return 
WebAssembly.instantiate(g,e);}).then(f,function(g){u("failed to asynchronously prepare wasm: 
"+g);w(g);});}var 
e={a:ua};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(T)||"function"!==typeof 
fetch?d(c):fetch(T,{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(n);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);},ta=b.__get_daylight=function(){return(ta=b.__get_daylight=b.asm.v).apply(null,arguments);},sa=b.__get_timezone=function(){return(sa=b.__get_timezone=b.asm.w).apply(null,arguments);},G=b.stackSave=function(){return(G=b.stackSave=b.asm.x).apply(null
 
,arguments);},I=b.stackRestore=function(){return(I=b.stackRestore=b.asm.y).apply(null,arguments);},C=b.stackAlloc=function(){return(C=b.stackAlloc=b.asm.z).apply(null,arguments);};b.ccall=B;b.cwrap=function(a,c,d,e){d=d||[];var
 f=d.every(function(g){return"number"===g;});return"string"!==c&&f&&!e?A(a):function(){return 
B(a,c,d,arguments,e);};};b.stringToNewUTF8=W;var Y;R=function va(){Y||Z();Y||(R=va);};function Z(){function 
a(){if(!Y&&(Y=!0,b.calledRun=!0,!z)){V(fa);V(ha);h(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();ia.unshift(c);}V(ia);}}if(!(0<P)){if(b.preRun)for("function"==typeof 
b.preRun&&(b.preRun=[b.preRun]);b.preRun.length;)ja();V(ea);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.le
 ngth;)b.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.10.377';
-const pdfjsBuild = '156762c48';
+const pdfjsVersion = '2.11.338';
+const pdfjsBuild = 'dedff3c98';
 
 class SandboxSupport extends _pdfSandboxExternal.SandboxSupportBase {
   exportValueToSandbox(val) {
@@ -242,7 +242,7 @@ class Sandbox {
   }
 
   create(data) {
-    const code = ['(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 
\'object\' && typeof module === \'object\')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 
\'function\' && define.amd)\n\t\tdefine("pdfjs-dist/build/pdf.scripting", [], factory);\n\telse if(typeof 
exports === \'object\')\n\t\texports["pdfjs-dist/build/pdf.scripting"] = 
factory();\n\telse\n\t\troot.pdfjsScripting = factory();\n})(this, function() {\nreturn /******/ (() => { // 
webpackBootstrap\n/******/ \t"use strict";\n/******/ \tvar __webpack_modules__ = ([\n/* 0 */,\n/* 1 */\n/***/ 
((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, 
"__esModule", ({\n  value: true\n}));\nexports.initSandbox = initSandbox;\n\nvar _constants = 
__w_pdfjs_require__(2);\n\nvar _field = __w_pdfjs_require__(3);\n\nvar _aform = 
__w_pdfjs_require__(8);\n\nvar _app = __w_pdfjs_require__(9);\n\nvar _color = __w_pdfjs_require__(5);\n\nvar 
_conso
 le = __w_pdfjs_require__(13);\n\nvar _doc = __w_pdfjs_require__(14);\n\nvar _proxy = 
__w_pdfjs_require__(16);\n\nvar _util = __w_pdfjs_require__(17);\n\nfunction initSandbox(params) {\n  delete 
globalThis.pdfjsScripting;\n  const externalCall = globalThis.callExternalFunction;\n  delete 
globalThis.callExternalFunction;\n\n  const globalEval = code => globalThis.eval(code);\n\n  const send = 
data => externalCall("send", [data]);\n\n  const proxyHandler = new _proxy.ProxyHandler();\n  const {\n    
data\n  } = params;\n  const doc = new _doc.Doc({\n    send,\n    globalEval,\n    ...data.docInfo\n  });\n  
const _document = {\n    obj: doc,\n    wrapped: new Proxy(doc, proxyHandler)\n  };\n  const app = new 
_app.App({\n    send,\n    globalEval,\n    externalCall,\n    _document,\n    calculationOrder: 
data.calculationOrder,\n    proxyHandler,\n    ...data.appInfo\n  });\n  const util = new _util.Util({\n    
externalCall\n  });\n  const appObjects = app._objects;\n\n  if (data.objects) 
 {\n    const annotations = [];\n\n    for (const [name, objs] of Object.entries(data.objects)) {\n      
annotations.length = 0;\n      let container = null;\n\n      for (const obj of objs) {\n        if (obj.type 
!== "") {\n          annotations.push(obj);\n        } else {\n          container = obj;\n        }\n      
}\n\n      let obj = container;\n\n      if (annotations.length > 0) {\n        obj = annotations[0];\n       
 obj.send = send;\n      }\n\n      obj.globalEval = globalEval;\n      obj.doc = _document;\n      
obj.fieldPath = name;\n      obj.appObjects = appObjects;\n      let field;\n\n      switch (obj.type) {\n    
    case "radiobutton":\n          {\n            const otherButtons = annotations.slice(1);\n            
field = new _field.RadioButtonField(otherButtons, obj);\n            break;\n          }\n\n        case 
"checkbox":\n          {\n            const otherButtons = annotations.slice(1);\n            field = new 
_field.CheckboxField(otherButtons, obj
 );\n            break;\n          }\n\n        case "text":\n          if (annotations.length <= 1) {\n      
      field = new _field.Field(obj);\n            break;\n          }\n\n          obj.siblings = 
annotations.map(x => x.id).slice(1);\n          field = new _field.Field(obj);\n          break;\n\n        
default:\n          field = new _field.Field(obj);\n      }\n\n      const wrapped = new Proxy(field, 
proxyHandler);\n\n      doc._addField(name, wrapped);\n\n      const _object = {\n        obj: field,\n       
 wrapped\n      };\n\n      for (const object of objs) {\n        appObjects[object.id] = _object;\n      
}\n\n      if (container) {\n        appObjects[container.id] = _object;\n      }\n    }\n  }\n\n  const 
color = new _color.Color();\n  globalThis.event = null;\n  globalThis.global = Object.create(null);\n  
globalThis.app = new Proxy(app, proxyHandler);\n  globalThis.color = new Proxy(color, proxyHandler);\n  
globalThis.console = new Proxy(new _console.Console(
 {\n    send\n  }), proxyHandler);\n  globalThis.util = new Proxy(util, proxyHandler);\n  globalThis.border = 
_constants.Border;\n  globalThis.cursor = _constants.Cursor;\n  globalThis.display = _constants.Display;\n  
globalThis.font = _constants.Font;\n  globalThis.highlight = _constants.Highlight;\n  globalThis.position = 
_constants.Position;\n  globalThis.scaleHow = _constants.ScaleHow;\n  globalThis.scaleWhen = 
_constants.ScaleWhen;\n  globalThis.style = _constants.Style;\n  globalThis.trans = _constants.Trans;\n  
globalThis.zoomtype = _constants.ZoomType;\n  globalThis.ADBE = {\n    Reader_Value_Asked: true,\n    
Viewer_Value_Asked: true\n  };\n  const aform = new _aform.AForm(doc, app, util, color);\n\n  for (const name 
of Object.getOwnPropertyNames(_aform.AForm.prototype)) {\n    if (name !== "constructor" && 
!name.startsWith("_")) {\n      globalThis[name] = aform[name].bind(aform);\n    }\n  }\n\n  for (const 
[name, value] of Object.entries(_constants.GlobalConstants)) {\n  
   Object.defineProperty(globalThis, name, {\n      value,\n      writable: false\n    });\n  }\n\n  
Object.defineProperties(globalThis, {\n    ColorConvert: {\n      value: color.convert.bind(color),\n      
writable: true\n    },\n    ColorEqual: {\n      value: color.equal.bind(color),\n      writable: true\n    
}\n  });\n  const properties = Object.create(null);\n\n  for (const name of 
Object.getOwnPropertyNames(_doc.Doc.prototype)) {\n    if (name === "constructor" || name.startsWith("_")) 
{\n      continue;\n    }\n\n    const descriptor = Object.getOwnPropertyDescriptor(_doc.Doc.prototype, 
name);\n\n    if (descriptor.get) {\n      properties[name] = {\n        get: descriptor.get.bind(doc),\n     
   set: descriptor.set.bind(doc)\n      };\n    } else {\n      properties[name] = {\n        value: 
_doc.Doc.prototype[name].bind(doc)\n      };\n    }\n  }\n\n  Object.defineProperties(globalThis, 
properties);\n  const functions = {\n    dispatchEvent: app._dispatchEvent.bind(app),\
 n    timeoutCb: app._evalCallback.bind(app)\n  };\n  return (name, args) => {\n    try {\n      
functions[name](args);\n    } catch (error) {\n      const value = `${error.toString()}\\n${error.stack}`;\n  
    send({\n        command: "error",\n        value\n      });\n    }\n  };\n}\n\n/***/ }),\n/* 2 */\n/***/ 
((__unused_webpack_module, exports) => {\n\n\n\nObject.defineProperty(exports, "__esModule", ({\n  value: 
true\n}));\nexports.ZoomType = exports.Trans = exports.Style = exports.ScaleWhen = exports.ScaleHow = 
exports.Position = exports.Highlight = exports.GlobalConstants = exports.Font = exports.Display = 
exports.Cursor = exports.Border = void 0;\nconst Border = Object.freeze({\n  s: "solid",\n  d: "dashed",\n  
b: "beveled",\n  i: "inset",\n  u: "underline"\n});\nexports.Border = Border;\nconst Cursor = 
Object.freeze({\n  visible: 0,\n  hidden: 1,\n  delay: 2\n});\nexports.Cursor = Cursor;\nconst Display = 
Object.freeze({\n  visible: 0,\n  hidden: 1,\n  noPrint: 2,\n  noView
 : 3\n});\nexports.Display = Display;\nconst Font = Object.freeze({\n  Times: "Times-Roman",\n  TimesB: 
"Times-Bold",\n  TimesI: "Times-Italic",\n  TimesBI: "Times-BoldItalic",\n  Helv: "Helvetica",\n  HelvB: 
"Helvetica-Bold",\n  HelvI: "Helvetica-Oblique",\n  HelvBI: "Helvetica-BoldOblique",\n  Cour: "Courier",\n  
CourB: "Courier-Bold",\n  CourI: "Courier-Oblique",\n  CourBI: "Courier-BoldOblique",\n  Symbol: "Symbol",\n  
ZapfD: "ZapfDingbats",\n  KaGo: "HeiseiKakuGo-W5-UniJIS-UCS2-H",\n  KaMi: 
"HeiseiMin-W3-UniJIS-UCS2-H"\n});\nexports.Font = Font;\nconst Highlight = Object.freeze({\n  n: "none",\n  
i: "invert",\n  p: "push",\n  o: "outline"\n});\nexports.Highlight = Highlight;\nconst Position = 
Object.freeze({\n  textOnly: 0,\n  iconOnly: 1,\n  iconTextV: 2,\n  textIconV: 3,\n  iconTextH: 4,\n  
textIconH: 5,\n  overlay: 6\n});\nexports.Position = Position;\nconst ScaleHow = Object.freeze({\n  
proportional: 0,\n  anamorphic: 1\n});\nexports.ScaleHow = ScaleHow;\nconst ScaleWhen = O
 bject.freeze({\n  always: 0,\n  never: 1,\n  tooBig: 2,\n  tooSmall: 3\n});\nexports.ScaleWhen = 
ScaleWhen;\nconst Style = Object.freeze({\n  ch: "check",\n  cr: "cross",\n  di: "diamond",\n  ci: 
"circle",\n  st: "star",\n  sq: "square"\n});\nexports.Style = Style;\nconst Trans = Object.freeze({\n  
blindsH: "BlindsHorizontal",\n  blindsV: "BlindsVertical",\n  boxI: "BoxIn",\n  boxO: "BoxOut",\n  dissolve: 
"Dissolve",\n  glitterD: "GlitterDown",\n  glitterR: "GlitterRight",\n  glitterRD: "GlitterRightDown",\n  
random: "Random",\n  replace: "Replace",\n  splitHI: "SplitHorizontalIn",\n  splitHO: "SplitHorizontalOut",\n 
 splitVI: "SplitVerticalIn",\n  splitVO: "SplitVerticalOut",\n  wipeD: "WipeDown",\n  wipeL: "WipeLeft",\n  
wipeR: "WipeRight",\n  wipeU: "WipeUp"\n});\nexports.Trans = Trans;\nconst ZoomType = Object.freeze({\n  
none: "NoVary",\n  fitP: "FitPage",\n  fitW: "FitWidth",\n  fitH: "FitHeight",\n  fitV: "FitVisibleWidth",\n  
pref: "Preferred",\n  refW: "ReflowWidth"\n});\ne
 xports.ZoomType = ZoomType;\nconst GlobalConstants = Object.freeze({\n  IDS_GREATER_THAN: "Invalid value: 
must be greater than or equal to % s.",\n  IDS_GT_AND_LT: "Invalid value: must be greater than or equal to % 
s " + "and less than or equal to % s.",\n  IDS_LESS_THAN: "Invalid value: must be less than or equal to % 
s.",\n  IDS_INVALID_MONTH: "** Invalid **",\n  IDS_INVALID_DATE: "Invalid date / time: please ensure that the 
date / time exists.Field",\n  IDS_INVALID_DATE2: " should match format ",\n  IDS_INVALID_VALUE: "The value 
entered does not match the format of the field",\n  IDS_AM: "am",\n  IDS_PM: "pm",\n  IDS_MONTH_INFO: 
"January[1] February[2] March[3] April[4] May[5] " + "June[6] July[7] August[8] September[9] October[10] " + 
"November[11] December[12] Sept[9] Jan[1] Feb[2] Mar[3] " + "Apr[4] Jun[6] Jul[7] Aug[8] Sep[9] Oct[10] 
Nov[11] Dec[12]",\n  IDS_STARTUP_CONSOLE_MSG: "** ^ _ ^ **",\n  RE_NUMBER_ENTRY_DOT_SEP: 
["[+-]?\\\\d*\\\\.?\\\\d*"],\n  RE_NUMBER_COMMIT_DOT_SE
 P: ["[+-]?\\\\d+(\\\\.\\\\d+)?", "[+-]?\\\\.\\\\d+", "[+-]?\\\\d+\\\\."],\n  RE_NUMBER_ENTRY_COMMA_SEP: 
["[+-]?\\\\d*,?\\\\d*"],\n  RE_NUMBER_COMMIT_COMMA_SEP: ["[+-]?\\\\d+([.,]\\\\d+)?", "[+-]?[.,]\\\\d+", 
"[+-]?\\\\d+[.,]"],\n  RE_ZIP_ENTRY: ["\\\\d{0,5}"],\n  RE_ZIP_COMMIT: ["\\\\d{5}"],\n  RE_ZIP4_ENTRY: 
["\\\\d{0,5}(\\\\.|[- ])?\\\\d{0,4}"],\n  RE_ZIP4_COMMIT: ["\\\\d{5}(\\\\.|[- ])?\\\\d{4}"],\n  
RE_PHONE_ENTRY: ["\\\\d{0,3}(\\\\.|[- ])?\\\\d{0,3}(\\\\.|[- ])?\\\\d{0,4}", "\\\\(\\\\d{0,3}", 
"\\\\(\\\\d{0,3}\\\\)(\\\\.|[- ])?\\\\d{0,3}(\\\\.|[- ])?\\\\d{0,4}", "\\\\(\\\\d{0,3}(\\\\.|[- 
])?\\\\d{0,3}(\\\\.|[- ])?\\\\d{0,4}", "\\\\d{0,3}\\\\)(\\\\.|[- ])?\\\\d{0,3}(\\\\.|[- ])?\\\\d{0,4}", 
"011(\\\\.|[- \\\\d])*"],\n  RE_PHONE_COMMIT: ["\\\\d{3}(\\\\.|[- ])?\\\\d{4}", "\\\\d{3}(\\\\.|[- 
])?\\\\d{3}(\\\\.|[- ])?\\\\d{4}", "\\\\(\\\\d{3}\\\\)(\\\\.|[- ])?\\\\d{3}(\\\\.|[- ])?\\\\d{4}", 
"011(\\\\.|[- \\\\d])*"],\n  RE_SSN_ENTRY: ["\\\\d{0,3}(\\\\.|[- ])?\\\\d{0,2}(\\\\.|[- ])?\\\\d
 {0,4}"],\n  RE_SSN_COMMIT: ["\\\\d{3}(\\\\.|[- ])?\\\\d{2}(\\\\.|[- 
])?\\\\d{4}"]\n});\nexports.GlobalConstants = GlobalConstants;\n\n/***/ }),\n/* 3 */\n/***/ 
((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, 
"__esModule", ({\n  value: true\n}));\nexports.RadioButtonField = exports.Field = exports.CheckboxField = 
void 0;\n\nvar _common = __w_pdfjs_require__(4);\n\nvar _color = __w_pdfjs_require__(5);\n\nvar _pdf_object = 
__w_pdfjs_require__(7);\n\nclass Field extends _pdf_object.PDFObject {\n  constructor(data) {\n    
super(data);\n    this.alignment = data.alignment || "left";\n    this.borderStyle = data.borderStyle || 
"";\n    this.buttonAlignX = data.buttonAlignX || 50;\n    this.buttonAlignY = data.buttonAlignY || 50;\n    
this.buttonFitBounds = data.buttonFitBounds;\n    this.buttonPosition = data.buttonPosition;\n    
this.buttonScaleHow = data.buttonScaleHow;\n    this.ButtonScaleWhen = data.buttonScaleWhen;\n    this.calcOrd
 erIndex = data.calcOrderIndex;\n    this.charLimit = data.charLimit;\n    this.comb = data.comb;\n    
this.commitOnSelChange = data.commitOnSelChange;\n    this.currentValueIndices = data.currentValueIndices;\n  
  this.defaultStyle = data.defaultStyle;\n    this.defaultValue = data.defaultValue;\n    this.doNotScroll = 
data.doNotScroll;\n    this.doNotSpellCheck = data.doNotSpellCheck;\n    this.delay = data.delay;\n    
this.display = data.display;\n    this.doc = data.doc.wrapped;\n    this.editable = data.editable;\n    
this.exportValues = data.exportValues;\n    this.fileSelect = data.fileSelect;\n    this.hidden = 
data.hidden;\n    this.highlight = data.highlight;\n    this.lineWidth = data.lineWidth;\n    this.multiline 
= data.multiline;\n    this.multipleSelection = !!data.multipleSelection;\n    this.name = data.name;\n    
this.password = data.password;\n    this.print = data.print;\n    this.radiosInUnison = 
data.radiosInUnison;\n    this.readonly = data.readonly;\n    this.
 rect = data.rect;\n    this.required = data.required;\n    this.richText = data.richText;\n    
this.richValue = data.richValue;\n    this.rotation = data.rotation;\n    this.style = data.style;\n    
this.submitName = data.submitName;\n    this.textFont = data.textFont;\n    this.textSize = data.textSize;\n  
  this.type = data.type;\n    this.userName = data.userName;\n    this._actions = (0, 
_common.createActionsMap)(data.actions);\n    this._browseForFileToSubmit = data.browseForFileToSubmit || 
null;\n    this._buttonCaption = null;\n    this._buttonIcon = null;\n    this._children = null;\n    
this._currentValueIndices = data.currentValueIndices || 0;\n    this._document = data.doc;\n    
this._fieldPath = data.fieldPath;\n    this._fillColor = data.fillColor || ["T"];\n    this._isChoice = 
Array.isArray(data.items);\n    this._items = data.items || [];\n    this._page = data.page || 0;\n    
this._strokeColor = data.strokeColor || ["G", 0];\n    this._textColor = data.textColor || 
 ["G", 0];\n    this._value = data.value || "";\n    this._kidIds = data.kidIds || null;\n    this._fieldType 
= (0, _common.getFieldType)(this._actions);\n    this._siblings = data.siblings || null;\n    
this._globalEval = data.globalEval;\n    this._appObjects = data.appObjects;\n    this.valueAsString = 
data.valueAsString || this._value;\n  }\n\n  get currentValueIndices() {\n    if (!this._isChoice) {\n      
return 0;\n    }\n\n    return this._currentValueIndices;\n  }\n\n  set currentValueIndices(indices) {\n    
if (!this._isChoice) {\n      return;\n    }\n\n    if (!Array.isArray(indices)) {\n      indices = 
[indices];\n    }\n\n    if (!indices.every(i => typeof i === "number" && Number.isInteger(i) && i >= 0 && i 
< this.numItems)) {\n      return;\n    }\n\n    indices.sort();\n\n    if (this.multipleSelection) {\n      
this._currentValueIndices = indices;\n      this._value = [];\n      indices.forEach(i => {\n        
this._value.push(this._items[i].displayValue);\n      })
 ;\n    } else {\n      if (indices.length > 0) {\n        indices = indices.splice(1, indices.length - 1);\n 
       this._currentValueIndices = indices[0];\n        this._value = 
this._items[this._currentValueIndices];\n      }\n    }\n\n    this._send({\n      id: this._id,\n      
indices\n    });\n  }\n\n  get fillColor() {\n    return this._fillColor;\n  }\n\n  set fillColor(color) {\n  
  if (_color.Color._isValidColor(color)) {\n      this._fillColor = color;\n    }\n  }\n\n  get bgColor() {\n 
   return this.fillColor;\n  }\n\n  set bgColor(color) {\n    this.fillColor = color;\n  }\n\n  get 
numItems() {\n    if (!this._isChoice) {\n      throw new Error("Not a choice widget");\n    }\n\n    return 
this._items.length;\n  }\n\n  set numItems(_) {\n    throw new Error("field.numItems is read-only");\n  }\n\n 
 get strokeColor() {\n    return this._strokeColor;\n  }\n\n  set strokeColor(color) {\n    if 
(_color.Color._isValidColor(color)) {\n      this._strokeColor = color;\n    }\n
   }\n\n  get borderColor() {\n    return this.strokeColor;\n  }\n\n  set borderColor(color) {\n    
this.strokeColor = color;\n  }\n\n  get page() {\n    return this._page;\n  }\n\n  set page(_) {\n    throw 
new Error("field.page is read-only");\n  }\n\n  get textColor() {\n    return this._textColor;\n  }\n\n  set 
textColor(color) {\n    if (_color.Color._isValidColor(color)) {\n      this._textColor = color;\n    }\n  
}\n\n  get fgColor() {\n    return this.textColor;\n  }\n\n  set fgColor(color) {\n    this.textColor = 
color;\n  }\n\n  get value() {\n    return this._value;\n  }\n\n  set value(value) {\n    if (value === "") 
{\n      this._value = "";\n    } else if (typeof value === "string") {\n      switch (this._fieldType) {\n   
     case _common.FieldType.number:\n        case _common.FieldType.percent:\n          value = 
parseFloat(value);\n\n          if (!isNaN(value)) {\n            this._value = value;\n          }\n\n       
   break;\n\n        default:\n          this.
 _value = value;\n      }\n    } else {\n      this._value = value;\n    }\n\n    if (this._isChoice) {\n     
 if (this.multipleSelection) {\n        const values = new Set(value);\n        
this._currentValueIndices.length = 0;\n\n        this._items.forEach(({\n          displayValue\n        }, 
i) => {\n          if (values.has(displayValue)) {\n            this._currentValueIndices.push(i);\n          
}\n        });\n      } else {\n        this._currentValueIndices = this._items.findIndex(({\n          
displayValue\n        }) => value === displayValue);\n      }\n    }\n  }\n\n  get valueAsString() {\n    if 
(this._valueAsString === undefined) {\n      this._valueAsString = this._value ? this._value.toString() : 
"";\n    }\n\n    return this._valueAsString;\n  }\n\n  set valueAsString(val) {\n    this._valueAsString = 
val ? val.toString() : "";\n  }\n\n  browseForFileToSubmit() {\n    if (this._browseForFileToSubmit) {\n      
this._browseForFileToSubmit();\n    }\n  }\n\n  butto
 nGetCaption(nFace = 0) {\n    if (this._buttonCaption) {\n      return this._buttonCaption[nFace];\n    
}\n\n    return "";\n  }\n\n  buttonGetIcon(nFace = 0) {\n    if (this._buttonIcon) {\n      return 
this._buttonIcon[nFace];\n    }\n\n    return null;\n  }\n\n  buttonImportIcon(cPath = null, nPave = 0) 
{}\n\n  buttonSetCaption(cCaption, nFace = 0) {\n    if (!this._buttonCaption) {\n      this._buttonCaption = 
["", "", ""];\n    }\n\n    this._buttonCaption[nFace] = cCaption;\n  }\n\n  buttonSetIcon(oIcon, nFace = 0) 
{\n    if (!this._buttonIcon) {\n      this._buttonIcon = [null, null, null];\n    }\n\n    
this._buttonIcon[nFace] = oIcon;\n  }\n\n  checkThisBox(nWidget, bCheckIt = true) {}\n\n  clearItems() {\n    
if (!this._isChoice) {\n      throw new Error("Not a choice widget");\n    }\n\n    this._items = [];\n\n    
this._send({\n      id: this._id,\n      clear: null\n    });\n  }\n\n  deleteItemAt(nIdx = null) {\n    if 
(!this._isChoice) {\n      throw new Error("Not a c
 hoice widget");\n    }\n\n    if (!this.numItems) {\n      return;\n    }\n\n    if (nIdx === null) {\n      
nIdx = Array.isArray(this._currentValueIndices) ? this._currentValueIndices[0] : this._currentValueIndices;\n 
     nIdx = nIdx || 0;\n    }\n\n    if (nIdx < 0 || nIdx >= this.numItems) {\n      nIdx = this.numItems - 
1;\n    }\n\n    this._items.splice(nIdx, 1);\n\n    if (Array.isArray(this._currentValueIndices)) {\n      
let index = this._currentValueIndices.findIndex(i => i >= nIdx);\n\n      if (index !== -1) {\n        if 
(this._currentValueIndices[index] === nIdx) {\n          this._currentValueIndices.splice(index, 1);\n        
}\n\n        for (const ii = this._currentValueIndices.length; index < ii; index++) {\n          
--this._currentValueIndices[index];\n        }\n      }\n    } else {\n      if (this._currentValueIndices 
=== nIdx) {\n        this._currentValueIndices = this.numItems > 0 ? 0 : -1;\n      } else if 
(this._currentValueIndices > nIdx) {\n        --
 this._currentValueIndices;\n      }\n    }\n\n    this._send({\n      id: this._id,\n      remove: nIdx\n    
});\n  }\n\n  getItemAt(nIdx = -1, bExportValue = false) {\n    if (!this._isChoice) {\n      throw new 
Error("Not a choice widget");\n    }\n\n    if (nIdx < 0 || nIdx >= this.numItems) {\n      nIdx = 
this.numItems - 1;\n    }\n\n    const item = this._items[nIdx];\n    return bExportValue ? item.exportValue 
: item.displayValue;\n  }\n\n  getArray() {\n    if (this._kidIds) {\n      return this._kidIds.map(id => 
this._appObjects[id].wrapped);\n    }\n\n    if (this._children === null) {\n      this._children = 
this._document.obj._getChildren(this._fieldPath);\n    }\n\n    return this._children;\n  }\n\n  getLock() 
{\n    return undefined;\n  }\n\n  isBoxChecked(nWidget) {\n    return false;\n  }\n\n  
isDefaultChecked(nWidget) {\n    return false;\n  }\n\n  insertItemAt(cName, cExport = undefined, nIdx = 0) 
{\n    if (!this._isChoice) {\n      throw new Error("Not a choice 
 widget");\n    }\n\n    if (!cName) {\n      return;\n    }\n\n    if (nIdx < 0 || nIdx > this.numItems) {\n 
     nIdx = this.numItems;\n    }\n\n    if (this._items.some(({\n      displayValue\n    }) => displayValue 
=== cName)) {\n      return;\n    }\n\n    if (cExport === undefined) {\n      cExport = cName;\n    }\n\n    
const data = {\n      displayValue: cName,\n      exportValue: cExport\n    };\n\n    
this._items.splice(nIdx, 0, data);\n\n    if (Array.isArray(this._currentValueIndices)) {\n      let index = 
this._currentValueIndices.findIndex(i => i >= nIdx);\n\n      if (index !== -1) {\n        for (const ii = 
this._currentValueIndices.length; index < ii; index++) {\n          ++this._currentValueIndices[index];\n     
   }\n      }\n    } else if (this._currentValueIndices >= nIdx) {\n      ++this._currentValueIndices;\n    
}\n\n    this._send({\n      id: this._id,\n      insert: {\n        index: nIdx,\n        ...data\n      }\n 
   });\n  }\n\n  setAction(cTrigger, cS
 cript) {\n    if (typeof cTrigger !== "string" || typeof cScript !== "string") {\n      return;\n    }\n\n   
 if (!(cTrigger in this._actions)) {\n      this._actions[cTrigger] = [];\n    }\n\n    
this._actions[cTrigger].push(cScript);\n  }\n\n  setFocus() {\n    this._send({\n      id: this._id,\n      
focus: true\n    });\n  }\n\n  setItems(oArray) {\n    if (!this._isChoice) {\n      throw new Error("Not a 
choice widget");\n    }\n\n    this._items.length = 0;\n\n    for (const element of oArray) {\n      let 
displayValue, exportValue;\n\n      if (Array.isArray(element)) {\n        displayValue = 
element[0]?.toString() || "";\n        exportValue = element[1]?.toString() || "";\n      } else {\n        
displayValue = exportValue = element?.toString() || "";\n      }\n\n      this._items.push({\n        
displayValue,\n        exportValue\n      });\n    }\n\n    this._currentValueIndices = 0;\n\n    
this._send({\n      id: this._id,\n      items: this._items\n    });\n  }\n\n  se
 tLock() {}\n\n  signatureGetModifications() {}\n\n  signatureGetSeedValue() {}\n\n  signatureInfo() {}\n\n  
signatureSetSeedValue() {}\n\n  signatureSign() {}\n\n  signatureValidate() {}\n\n  _isButton() {\n    return 
false;\n  }\n\n  _runActions(event) {\n    const eventName = event.name;\n\n    if 
(!this._actions.has(eventName)) {\n      return false;\n    }\n\n    const actions = 
this._actions.get(eventName);\n\n    try {\n      for (const action of actions) {\n        
this._globalEval(action);\n      }\n    } catch (error) {\n      event.rc = false;\n      throw error;\n    
}\n\n    return true;\n  }\n\n}\n\nexports.Field = Field;\n\nclass RadioButtonField extends Field {\n  
constructor(otherButtons, data) {\n    super(data);\n    this.exportValues = [this.exportValues];\n    
this._radioIds = [this._id];\n    this._radioActions = [this._actions];\n\n    for (const radioData of 
otherButtons) {\n      this.exportValues.push(radioData.exportValues);\n\n      this._radioIds.push(rad
 ioData.id);\n\n      this._radioActions.push((0, _common.createActionsMap)(radioData.actions));\n\n      if 
(this._value === radioData.exportValues) {\n        this._id = radioData.id;\n      }\n    }\n  }\n\n  get 
value() {\n    return this._value;\n  }\n\n  set value(value) {\n    if (value === null || value === 
undefined) {\n      this._value = "";\n    }\n\n    const i = this.exportValues.indexOf(value);\n\n    if (0 
<= i && i < this._radioIds.length) {\n      this._id = this._radioIds[i];\n      this._value = value;\n    } 
else if (value === "Off" && this._radioIds.length === 2) {\n      const nextI = (1 + 
this._radioIds.indexOf(this._id)) % 2;\n      this._id = this._radioIds[nextI];\n      this._value = 
this.exportValues[nextI];\n    }\n  }\n\n  checkThisBox(nWidget, bCheckIt = true) {\n    if (nWidget < 0 || 
nWidget >= this._radioIds.length || !bCheckIt) {\n      return;\n    }\n\n    this._id = 
this._radioIds[nWidget];\n    this._value = this.exportValues[nWidget];\n\n    t
 his._send({\n      id: this._id,\n      value: this._value\n    });\n  }\n\n  isBoxChecked(nWidget) {\n    
return nWidget >= 0 && nWidget < this._radioIds.length && this._id === this._radioIds[nWidget];\n  }\n\n  
isDefaultChecked(nWidget) {\n    return nWidget >= 0 && nWidget < this.exportValues.length && 
this.defaultValue === this.exportValues[nWidget];\n  }\n\n  _getExportValue(state) {\n    const i = 
this._radioIds.indexOf(this._id);\n\n    return this.exportValues[i];\n  }\n\n  _runActions(event) {\n    
const i = this._radioIds.indexOf(this._id);\n\n    this._actions = this._radioActions[i];\n    return 
super._runActions(event);\n  }\n\n  _isButton() {\n    return true;\n  }\n\n}\n\nexports.RadioButtonField = 
RadioButtonField;\n\nclass CheckboxField extends RadioButtonField {\n  get value() {\n    return 
this._value;\n  }\n\n  set value(value) {\n    if (!value || value === "Off") {\n      this._value = "Off";\n 
   } else {\n      super.value = value;\n    }\n  }\n\n  _getExport
 Value(state) {\n    return state ? super._getExportValue(state) : "Off";\n  }\n\n  isBoxChecked(nWidget) {\n 
   if (this._value === "Off") {\n      return false;\n    }\n\n    return super.isBoxChecked(nWidget);\n  
}\n\n  isDefaultChecked(nWidget) {\n    if (this.defaultValue === "Off") {\n      return this._value === 
"Off";\n    }\n\n    return super.isDefaultChecked(nWidget);\n  }\n\n  checkThisBox(nWidget, bCheckIt = true) 
{\n    if (nWidget < 0 || nWidget >= this._radioIds.length) {\n      return;\n    }\n\n    this._id = 
this._radioIds[nWidget];\n    this._value = bCheckIt ? this.exportValues[nWidget] : "Off";\n\n    
this._send({\n      id: this._id,\n      value: this._value\n    });\n  }\n\n}\n\nexports.CheckboxField = 
CheckboxField;\n\n/***/ }),\n/* 4 */\n/***/ ((__unused_webpack_module, exports) => 
{\n\n\n\nObject.defineProperty(exports, "__esModule", ({\n  value: true\n}));\nexports.createActionsMap = 
createActionsMap;\nexports.getFieldType = getFieldType;\nexports.FieldTy
 pe = void 0;\nconst FieldType = {\n  none: 0,\n  number: 1,\n  percent: 2,\n  date: 3,\n  time: 
4\n};\nexports.FieldType = FieldType;\n\nfunction createActionsMap(actions) {\n  const actionsMap = new 
Map();\n\n  if (actions) {\n    for (const [eventType, actionsForEvent] of Object.entries(actions)) {\n      
actionsMap.set(eventType, actionsForEvent);\n    }\n  }\n\n  return actionsMap;\n}\n\nfunction 
getFieldType(actions) {\n  let format = actions.get("Format");\n\n  if (!format) {\n    return 
FieldType.none;\n  }\n\n  format = format[0];\n  format = format.trim();\n\n  if 
(format.startsWith("AFNumber_")) {\n    return FieldType.number;\n  }\n\n  if 
(format.startsWith("AFPercent_")) {\n    return FieldType.percent;\n  }\n\n  if 
(format.startsWith("AFDate_")) {\n    return FieldType.date;\n  }\n\n  if (format.startsWith("AFTime__")) {\n 
   return FieldType.time;\n  }\n\n  return FieldType.none;\n}\n\n/***/ }),\n/* 5 */\n/***/ 
((__unused_webpack_module, exports, __w_pdfjs_require__) =
{\n\n\n\nObject.defineProperty(exports, "__esModule", ({\n  value: true\n}));\nexports.Color = void 
0;\n\nvar _scripting_utils = __w_pdfjs_require__(6);\n\nvar _pdf_object = __w_pdfjs_require__(7);\n\nclass 
Color extends _pdf_object.PDFObject {\n  constructor() {\n    super({});\n    this.transparent = ["T"];\n  
  this.black = ["G", 0];\n    this.white = ["G", 1];\n    this.red = ["RGB", 1, 0, 0];\n    this.green = 
["RGB", 0, 1, 0];\n    this.blue = ["RGB", 0, 0, 1];\n    this.cyan = ["CMYK", 1, 0, 0, 0];\n    
this.magenta = ["CMYK", 0, 1, 0, 0];\n    this.yellow = ["CMYK", 0, 0, 1, 0];\n    this.dkGray = ["G", 
0.25];\n    this.gray = ["G", 0.5];\n    this.ltGray = ["G", 0.75];\n  }\n\n  static 
_isValidSpace(cColorSpace) {\n    return typeof cColorSpace === "string" && (cColorSpace === "T" || 
cColorSpace === "G" || cColorSpace === "RGB" || cColorSpace === "CMYK");\n  }\n\n  static 
_isValidColor(colorArray) {\n    if (!Array.isArray(colorArray) || colorArray.length === 0) {\n      
 return false;\n    }\n\n    const space = colorArray[0];\n\n    if (!Color._isValidSpace(space)) {\n      
return false;\n    }\n\n    switch (space) {\n      case "T":\n        if (colorArray.length !== 1) {\n       
   return false;\n        }\n\n        break;\n\n      case "G":\n        if (colorArray.length !== 2) {\n    
      return false;\n        }\n\n        break;\n\n      case "RGB":\n        if (colorArray.length !== 4) 
{\n          return false;\n        }\n\n        break;\n\n      case "CMYK":\n        if (colorArray.length 
!== 5) {\n          return false;\n        }\n\n        break;\n\n      default:\n        return false;\n    
}\n\n    return colorArray.slice(1).every(c => typeof c === "number" && c >= 0 && c <= 1);\n  }\n\n  static 
_getCorrectColor(colorArray) {\n    return Color._isValidColor(colorArray) ? colorArray : ["G", 0];\n  }\n\n  
convert(colorArray, cColorSpace) {\n    if (!Color._isValidSpace(cColorSpace)) {\n      return this.black;\n  
  }\n\n    if (cC
 olorSpace === "T") {\n      return ["T"];\n    }\n\n    colorArray = Color._getCorrectColor(colorArray);\n\n 
   if (colorArray[0] === cColorSpace) {\n      return colorArray;\n    }\n\n    if (colorArray[0] === "T") 
{\n      return this.convert(this.black, cColorSpace);\n    }\n\n    return 
_scripting_utils.ColorConverters[`${colorArray[0]}_${cColorSpace}`](colorArray.slice(1));\n  }\n\n  
equal(colorArray1, colorArray2) {\n    colorArray1 = Color._getCorrectColor(colorArray1);\n    colorArray2 = 
Color._getCorrectColor(colorArray2);\n\n    if (colorArray1[0] === "T" || colorArray2[0] === "T") {\n      
return colorArray1[0] === "T" && colorArray2[0] === "T";\n    }\n\n    if (colorArray1[0] !== colorArray2[0]) 
{\n      colorArray2 = this.convert(colorArray2, colorArray1[0]);\n    }\n\n    return 
colorArray1.slice(1).every((c, i) => c === colorArray2[i + 1]);\n  }\n\n}\n\nexports.Color = Color;\n\n/***/ 
}),\n/* 6 */\n/***/ ((__unused_webpack_module, exports) => {\n\n\n\nObject.definePr
 operty(exports, "__esModule", ({\n  value: true\n}));\nexports.ColorConverters = void 0;\n\nfunction 
makeColorComp(n) {\n  return Math.floor(Math.max(0, Math.min(1, n)) * 255).toString(16).padStart(2, 
"0");\n}\n\nclass ColorConverters {\n  static CMYK_G([c, y, m, k]) {\n    return ["G", 1 - Math.min(1, 0.3 * 
c + 0.59 * m + 0.11 * y + k)];\n  }\n\n  static G_CMYK([g]) {\n    return ["CMYK", 0, 0, 0, 1 - g];\n  }\n\n  
static G_RGB([g]) {\n    return ["RGB", g, g, g];\n  }\n\n  static G_HTML([g]) {\n    const G = 
makeColorComp(g);\n    return `#${G}${G}${G}`;\n  }\n\n  static RGB_G([r, g, b]) {\n    return ["G", 0.3 * r 
+ 0.59 * g + 0.11 * b];\n  }\n\n  static RGB_HTML([r, g, b]) {\n    const R = makeColorComp(r);\n    const G 
= makeColorComp(g);\n    const B = makeColorComp(b);\n    return `#${R}${G}${B}`;\n  }\n\n  static T_HTML() 
{\n    return "#00000000";\n  }\n\n  static CMYK_RGB([c, y, m, k]) {\n    return ["RGB", 1 - Math.min(1, c + 
k), 1 - Math.min(1, m + k), 1 - Math.min(1, y 
 + k)];\n  }\n\n  static CMYK_HTML(components) {\n    return this.RGB_HTML(this.CMYK_RGB(components));\n  
}\n\n  static RGB_CMYK([r, g, b]) {\n    const c = 1 - r;\n    const m = 1 - g;\n    const y = 1 - b;\n    
const k = Math.min(c, m, y);\n    return ["CMYK", c, m, y, k];\n  }\n\n}\n\nexports.ColorConverters = 
ColorConverters;\n\n/***/ }),\n/* 7 */\n/***/ ((__unused_webpack_module, exports) => 
{\n\n\n\nObject.defineProperty(exports, "__esModule", ({\n  value: true\n}));\nexports.PDFObject = void 
0;\n\nclass PDFObject {\n  constructor(data) {\n    this._expandos = Object.create(null);\n    this._send = 
data.send || null;\n    this._id = data.id || null;\n  }\n\n}\n\nexports.PDFObject = PDFObject;\n\n/***/ 
}),\n/* 8 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => 
{\n\n\n\nObject.defineProperty(exports, "__esModule", ({\n  value: true\n}));\nexports.AForm = void 0;\n\nvar 
_constants = __w_pdfjs_require__(2);\n\nclass AForm {\n  constructor(document, app, util, c
 olor) {\n    this._document = document;\n    this._app = app;\n    this._util = util;\n    this._color = 
color;\n    this._dateFormats = ["m/d", "m/d/yy", "mm/dd/yy", "mm/yy", "d-mmm", "d-mmm-yy", "dd-mmm-yy", 
"yy-mm-dd", "mmm-yy", "mmmm-yy", "mmm d, yyyy", "mmmm d, yyyy", "m/d/yy h:MM tt", "m/d/yy HH:MM"];\n    
this._timeFormats = ["HH:MM", "h:MM tt", "HH:MM:ss", "h:MM:ss tt"];\n    this._emailRegex = new 
RegExp("^[a-zA-Z0-9.!#$%&\'*+\\\\/=?^_`{|}~-]+" + "@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?" + 
"(?:\\\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$");\n  }\n\n  _mkTargetName(event) {\n    return 
event.target ? `[ ${event.target.name} ]` : "";\n  }\n\n  _parseDate(cFormat, cDate) {\n    const ddate = 
Date.parse(cDate);\n\n    if (isNaN(ddate)) {\n      try {\n        return this._util.scand(cFormat, 
cDate);\n      } catch (error) {\n        return null;\n      }\n    } else {\n      return new 
Date(ddate);\n    }\n  }\n\n  AFMergeChange(event = globalThis.event) {\n    
 if (event.willCommit) {\n      return event.value.toString();\n    }\n\n    return 
this._app._eventDispatcher.mergeChange(event);\n  }\n\n  AFParseDateEx(cString, cOrder) {\n    return 
this._parseDate(cOrder, cString);\n  }\n\n  AFExtractNums(str) {\n    if (typeof str === "number") {\n      
return [str];\n    }\n\n    if (!str || typeof str !== "string") {\n      return null;\n    }\n\n    const 
first = str.charAt(0);\n\n    if (first === "." || first === ",") {\n      str = `0${str}`;\n    }\n\n    
const numbers = str.match(/([0-9]+)/g);\n\n    if (numbers.length === 0) {\n      return null;\n    }\n\n    
return numbers;\n  }\n\n  AFMakeNumber(str) {\n    if (typeof str === "number") {\n      return str;\n    
}\n\n    if (typeof str !== "string") {\n      return null;\n    }\n\n    str = str.trim().replace(",", 
".");\n    const number = parseFloat(str);\n\n    if (isNaN(number) || !isFinite(number)) {\n      return 
null;\n    }\n\n    return number;\n  }\n\n  AFMakeArrayFromList(s
 tring) {\n    if (typeof string === "string") {\n      return string.split(/, ?/g);\n    }\n\n    return 
string;\n  }\n\n  AFNumber_Format(nDec, sepStyle, negStyle, currStyle, strCurrency, bCurrencyPrepend) {\n    
const event = globalThis.event;\n\n    if (!event.value) {\n      return;\n    }\n\n    let value = 
this.AFMakeNumber(event.value);\n\n    if (value === null) {\n      event.value = "";\n      return;\n    
}\n\n    const sign = Math.sign(value);\n    const buf = [];\n    let hasParen = false;\n\n    if (sign === 
-1 && bCurrencyPrepend && negStyle === 0) {\n      buf.push("-");\n    }\n\n    if ((negStyle === 2 || 
negStyle === 3) && sign === -1) {\n      buf.push("(");\n      hasParen = true;\n    }\n\n    if 
(bCurrencyPrepend) {\n      buf.push(strCurrency);\n    }\n\n    sepStyle = Math.min(Math.max(0, 
Math.floor(sepStyle)), 4);\n    buf.push("%,", sepStyle, ".", nDec.toString(), "f");\n\n    if 
(!bCurrencyPrepend) {\n      buf.push(strCurrency);\n    }\n\n    if (hasPare
 n) {\n      buf.push(")");\n    }\n\n    if (negStyle === 1 || negStyle === 3) {\n      
event.target.textColor = sign === 1 ? this._color.black : this._color.red;\n    }\n\n    if ((negStyle !== 0 
|| bCurrencyPrepend) && sign === -1) {\n      value = -value;\n    }\n\n    const formatStr = buf.join("");\n 
   event.value = this._util.printf(formatStr, value);\n  }\n\n  AFNumber_Keystroke(nDec, sepStyle, negStyle, 
currStyle, strCurrency, bCurrencyPrepend) {\n    const event = globalThis.event;\n    let value = 
this.AFMergeChange(event);\n\n    if (!value) {\n      return;\n    }\n\n    value = value.trim();\n    let 
pattern;\n\n    if (sepStyle > 1) {\n      pattern = event.willCommit ? /^[+-]?([0-9]+(,[0-9]*)?|,[0-9]+)$/ : 
/^[+-]?[0-9]*,?[0-9]*$/;\n    } else {\n      pattern = event.willCommit ? 
/^[+-]?([0-9]+(\\.[0-9]*)?|\\.[0-9]+)$/ : /^[+-]?[0-9]*\\.?[0-9]*$/;\n    }\n\n    if (!pattern.test(value)) 
{\n      if (event.willCommit) {\n        const err = `${_constants.GlobalConstan
 ts.IDS_INVALID_VALUE} ${this._mkTargetName(event)}`;\n\n        this._app.alert(err);\n      }\n\n      
event.rc = false;\n    }\n\n    if (event.willCommit && sepStyle > 1) {\n      event.value = 
parseFloat(value.replace(",", "."));\n    }\n  }\n\n  AFPercent_Format(nDec, sepStyle, percentPrepend = 
false) {\n    if (typeof nDec !== "number") {\n      return;\n    }\n\n    if (typeof sepStyle !== "number") 
{\n      return;\n    }\n\n    if (nDec < 0) {\n      throw new Error("Invalid nDec value in 
AFPercent_Format");\n    }\n\n    const event = globalThis.event;\n\n    if (nDec > 512) {\n      event.value 
= "%";\n      return;\n    }\n\n    nDec = Math.floor(nDec);\n    sepStyle = Math.min(Math.max(0, 
Math.floor(sepStyle)), 4);\n    let value = this.AFMakeNumber(event.value);\n\n    if (value === null) {\n    
  event.value = "%";\n      return;\n    }\n\n    const formatStr = `%,${sepStyle}.${nDec}f`;\n    value = 
this._util.printf(formatStr, value * 100);\n\n    if (percentPrepend)
  {\n      event.value = `%${value}`;\n    } else {\n      event.value = `${value}%`;\n    }\n  }\n\n  
AFPercent_Keystroke(nDec, sepStyle) {\n    this.AFNumber_Keystroke(nDec, sepStyle, 0, 0, "", true);\n  }\n\n  
AFDate_FormatEx(cFormat) {\n    const event = globalThis.event;\n    const value = event.value;\n\n    if 
(!value) {\n      return;\n    }\n\n    const date = this._parseDate(cFormat, value);\n\n    if (date !== 
null) {\n      event.value = this._util.printd(cFormat, date);\n    }\n  }\n\n  AFDate_Format(pdf) {\n    if 
(pdf >= 0 && pdf < this._dateFormats.length) {\n      this.AFDate_FormatEx(this._dateFormats[pdf]);\n    }\n  
}\n\n  AFDate_KeystrokeEx(cFormat) {\n    const event = globalThis.event;\n\n    if (!event.willCommit) {\n   
   return;\n    }\n\n    const value = this.AFMergeChange(event);\n\n    if (!value) {\n      return;\n    
}\n\n    if (this._parseDate(cFormat, value) === null) {\n      const invalid = 
_constants.GlobalConstants.IDS_INVALID_DATE;\n      const
  invalid2 = _constants.GlobalConstants.IDS_INVALID_DATE2;\n      const err = `${invalid} 
${this._mkTargetName(event)}${invalid2}${cFormat}`;\n\n      this._app.alert(err);\n\n      event.rc = 
false;\n    }\n  }\n\n  AFDate_Keystroke(pdf) {\n    if (pdf >= 0 && pdf < this._dateFormats.length) {\n      
this.AFDate_KeystrokeEx(this._dateFormats[pdf]);\n    }\n  }\n\n  AFRange_Validate(bGreaterThan, 
nGreaterThan, bLessThan, nLessThan) {\n    const event = globalThis.event;\n\n    if (!event.value) {\n      
return;\n    }\n\n    const value = this.AFMakeNumber(event.value);\n\n    if (value === null) {\n      
return;\n    }\n\n    bGreaterThan = !!bGreaterThan;\n    bLessThan = !!bLessThan;\n\n    if (bGreaterThan) 
{\n      nGreaterThan = this.AFMakeNumber(nGreaterThan);\n\n      if (nGreaterThan === null) {\n        
return;\n      }\n    }\n\n    if (bLessThan) {\n      nLessThan = this.AFMakeNumber(nLessThan);\n\n      if 
(nLessThan === null) {\n        return;\n      }\n    }\n\n    l
 et err = "";\n\n    if (bGreaterThan && bLessThan) {\n      if (value < nGreaterThan || value > nLessThan) 
{\n        err = this._util.printf(_constants.GlobalConstants.IDS_GT_AND_LT, nGreaterThan, nLessThan);\n      
}\n    } else if (bGreaterThan) {\n      if (value < nGreaterThan) {\n        err = 
this._util.printf(_constants.GlobalConstants.IDS_GREATER_THAN, nGreaterThan);\n      }\n    } else if (value 
nLessThan) {\n      err = this._util.printf(_constants.GlobalConstants.IDS_LESS_THAN, nLessThan);\n    
}\n\n    if (err) {\n      this._app.alert(err);\n\n      event.rc = false;\n    }\n  }\n\n  
AFSimple(cFunction, nValue1, nValue2) {\n    const value1 = this.AFMakeNumber(nValue1);\n\n    if (value1 === 
null) {\n      throw new Error("Invalid nValue1 in AFSimple");\n    }\n\n    const value2 = 
this.AFMakeNumber(nValue2);\n\n    if (value2 === null) {\n      throw new Error("Invalid nValue2 in 
AFSimple");\n    }\n\n    switch (cFunction) {\n      case "AVG":\n        return (val
 ue1 + value2) / 2;\n\n      case "SUM":\n        return value1 + value2;\n\n      case "PRD":\n        
return value1 * value2;\n\n      case "MIN":\n        return Math.min(value1, value2);\n\n      case "MAX":\n 
       return Math.max(value1, value2);\n    }\n\n    throw new Error("Invalid cFunction in AFSimple");\n  
}\n\n  AFSimple_Calculate(cFunction, cFields) {\n    const actions = {\n      AVG: args => args.reduce((acc, 
value) => acc + value, 0) / args.length,\n      SUM: args => args.reduce((acc, value) => acc + value, 0),\n   
   PRD: args => args.reduce((acc, value) => acc * value, 1),\n      MIN: args => args.reduce((acc, value) => 
Math.min(acc, value), Number.MAX_VALUE),\n      MAX: args => args.reduce((acc, value) => Math.max(acc, 
value), Number.MIN_VALUE)\n    };\n\n    if (!(cFunction in actions)) {\n      throw new TypeError("Invalid 
function in AFSimple_Calculate");\n    }\n\n    const event = globalThis.event;\n    const values = [];\n\n   
 for (const cField of cField
 s) {\n      const field = this._document.getField(cField);\n\n      const number = 
this.AFMakeNumber(field.value);\n\n      if (number !== null) {\n        values.push(number);\n      }\n    
}\n\n    if (values.length === 0) {\n      event.value = cFunction === "PRD" ? 1 : 0;\n      return;\n    
}\n\n    const res = actions[cFunction](values);\n    event.value = Math.round(1e6 * res) / 1e6;\n  }\n\n  
AFSpecial_Format(psf) {\n    const event = globalThis.event;\n\n    if (!event.value) {\n      return;\n    
}\n\n    psf = this.AFMakeNumber(psf);\n\n    if (psf === null) {\n      throw new Error("Invalid psf in 
AFSpecial_Format");\n    }\n\n    let formatStr = "";\n\n    switch (psf) {\n      case 0:\n        formatStr 
= "99999";\n        break;\n\n      case 1:\n        formatStr = "99999-9999";\n        break;\n\n      case 
2:\n        if (this._util.printx("9999999999", event.value).length >= 10) {\n          formatStr = "(999) 
999-9999";\n        } else {\n          formatStr = "9
 99-9999";\n        }\n\n        break;\n\n      case 3:\n        formatStr = "999-99-9999";\n        
break;\n\n      default:\n        throw new Error("Invalid psf in AFSpecial_Format");\n    }\n\n    
event.value = this._util.printx(formatStr, event.value);\n  }\n\n  AFSpecial_KeystrokeEx(cMask) {\n    if 
(!cMask) {\n      return;\n    }\n\n    const event = globalThis.event;\n    const value = 
this.AFMergeChange(event);\n    const checkers = new Map([["9", char => char >= "0" && char <= "9"], ["A", 
char => "a" <= char && char <= "z" || "A" <= char && char <= "Z"], ["O", char => "a" <= char && char <= "z" 
|| "A" <= char && char <= "Z" || "0" <= char && char <= "9"], ["X", char => true]]);\n\n    function 
_checkValidity(_value, _cMask) {\n      for (let i = 0, ii = value.length; i < ii; i++) {\n        const mask 
= _cMask.charAt(i);\n\n        const char = _value.charAt(i);\n\n        const checker = 
checkers.get(mask);\n\n        if (checker) {\n          if (!checker(char)) {\n    
         return false;\n          }\n        } else if (mask !== char) {\n          return false;\n        
}\n      }\n\n      return true;\n    }\n\n    if (!value) {\n      return;\n    }\n\n    const err = 
`${_constants.GlobalConstants.IDS_INVALID_VALUE} = "${cMask}"`;\n\n    if (value.length > cMask.length) {\n   
   this._app.alert(err);\n\n      event.rc = false;\n      return;\n    }\n\n    if (event.willCommit) {\n    
  if (value.length < cMask.length) {\n        this._app.alert(err);\n\n        event.rc = false;\n        
return;\n      }\n\n      if (!_checkValidity(value, cMask)) {\n        this._app.alert(err);\n\n        
event.rc = false;\n        return;\n      }\n\n      event.value += cMask.substring(value.length);\n      
return;\n    }\n\n    if (value.length < cMask.length) {\n      cMask = cMask.substring(0, value.length);\n   
 }\n\n    if (!_checkValidity(value, cMask)) {\n      this._app.alert(err);\n\n      event.rc = false;\n    
}\n  }\n\n  AFSpecial_Keystroke(ps
 f) {\n    const event = globalThis.event;\n\n    if (!event.value) {\n      return;\n    }\n\n    psf = 
this.AFMakeNumber(psf);\n\n    if (psf === null) {\n      throw new Error("Invalid psf in 
AFSpecial_Keystroke");\n    }\n\n    let formatStr;\n\n    switch (psf) {\n      case 0:\n        formatStr = 
"99999";\n        break;\n\n      case 1:\n        formatStr = "99999-9999";\n        break;\n\n      case 
2:\n        const finalLen = event.value.length + event.change.length + event.selStart - event.selEnd;\n\n    
    if (finalLen >= 8) {\n          formatStr = "(999) 999-9999";\n        } else {\n          formatStr = 
"999-9999";\n        }\n\n        break;\n\n      case 3:\n        formatStr = "999-99-9999";\n        
break;\n\n      default:\n        throw new Error("Invalid psf in AFSpecial_Keystroke");\n    }\n\n    
this.AFSpecial_KeystrokeEx(formatStr);\n  }\n\n  AFTime_FormatEx(cFormat) {\n    
this.AFDate_FormatEx(cFormat);\n  }\n\n  AFTime_Format(pdf) {\n    if (pdf >= 0 &&
  pdf < this._timeFormats.length) {\n      this.AFDate_FormatEx(this._timeFormats[pdf]);\n    }\n  }\n\n  
AFTime_KeystrokeEx(cFormat) {\n    this.AFDate_KeystrokeEx(cFormat);\n  }\n\n  AFTime_Keystroke(pdf) {\n    
if (pdf >= 0 && pdf < this._timeFormats.length) {\n      this.AFDate_KeystrokeEx(this._timeFormats[pdf]);\n   
 }\n  }\n\n  eMailValidate(str) {\n    return this._emailRegex.test(str);\n  }\n\n}\n\nexports.AForm = 
AForm;\n\n/***/ }),\n/* 9 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => 
{\n\n\n\nObject.defineProperty(exports, "__esModule", ({\n  value: true\n}));\nexports.App = void 0;\n\nvar 
_color = __w_pdfjs_require__(5);\n\nvar _event = __w_pdfjs_require__(10);\n\nvar _fullscreen = 
__w_pdfjs_require__(11);\n\nvar _pdf_object = __w_pdfjs_require__(7);\n\nvar _thermometer = 
__w_pdfjs_require__(12);\n\nconst VIEWER_TYPE = "PDF.js";\nconst VIEWER_VARIATION = "Full";\nconst 
VIEWER_VERSION = "10.0";\nconst FORMS_VERSION = undefined;\n\nclass App extends _
 pdf_object.PDFObject {\n  constructor(data) {\n    super(data);\n    this._constants = null;\n    
this._focusRect = true;\n    this._fs = null;\n    this._language = App._getLanguage(data.language);\n    
this._openInPlace = false;\n    this._platform = App._getPlatform(data.platform);\n    this._runtimeHighlight 
= false;\n    this._runtimeHighlightColor = ["T"];\n    this._thermometer = null;\n    this._toolbar = 
false;\n    this._document = data._document;\n    this._proxyHandler = data.proxyHandler;\n    this._objects 
= Object.create(null);\n    this._eventDispatcher = new _event.EventDispatcher(this._document, 
data.calculationOrder, this._objects);\n    this._timeoutIds = new WeakMap();\n\n    if (typeof 
FinalizationRegistry !== "undefined") {\n      this._timeoutIdsRegistry = new 
FinalizationRegistry(this._cleanTimeout.bind(this));\n    } else {\n      this._timeoutIdsRegistry = null;\n  
  }\n\n    this._timeoutCallbackIds = new Map();\n    this._timeoutCallbackId = 0;\n    this
 ._globalEval = data.globalEval;\n    this._externalCall = data.externalCall;\n    this._document = 
data._document;\n  }\n\n  _dispatchEvent(pdfEvent) {\n    this._eventDispatcher.dispatch(pdfEvent);\n  }\n\n  
_registerTimeoutCallback(cExpr) {\n    const id = this._timeoutCallbackId++;\n\n    
this._timeoutCallbackIds.set(id, cExpr);\n\n    return id;\n  }\n\n  _unregisterTimeoutCallback(id) {\n    
this._timeoutCallbackIds.delete(id);\n  }\n\n  _evalCallback({\n    callbackId,\n    interval\n  }) {\n    
const expr = this._timeoutCallbackIds.get(callbackId);\n\n    if (!interval) {\n      
this._unregisterTimeoutCallback(callbackId);\n    }\n\n    if (expr) {\n      this._globalEval(expr);\n    
}\n  }\n\n  _registerTimeout(callbackId, interval) {\n    const timeout = Object.create(null);\n    const id 
= {\n      callbackId,\n      interval\n    };\n\n    this._timeoutIds.set(timeout, id);\n\n    if 
(this._timeoutIdsRegistry) {\n      this._timeoutIdsRegistry.register(timeout, id);\n    
 }\n\n    return timeout;\n  }\n\n  _unregisterTimeout(timeout) {\n    if (this._timeoutIdsRegistry) {\n      
this._timeoutIdsRegistry.unregister(timeout);\n    }\n\n    const data = this._timeoutIds.get(timeout);\n\n   
 if (!data) {\n      return;\n    }\n\n    this._timeoutIds.delete(timeout);\n\n    
this._cleanTimeout(data);\n  }\n\n  _cleanTimeout({\n    callbackId,\n    interval\n  }) {\n    
this._unregisterTimeoutCallback(callbackId);\n\n    if (interval) {\n      
this._externalCall("clearInterval", [callbackId]);\n    } else {\n      this._externalCall("clearTimeout", 
[callbackId]);\n    }\n  }\n\n  static _getPlatform(platform) {\n    if (typeof platform === "string") {\n    
  platform = platform.toLowerCase();\n\n      if (platform.includes("win")) {\n        return "WIN";\n      } 
else if (platform.includes("mac")) {\n        return "MAC";\n      }\n    }\n\n    return "UNIX";\n  }\n\n  
static _getLanguage(language) {\n    const [main, sub] = language.toLowerCase().split(/[
 -_]/);\n\n    switch (main) {\n      case "zh":\n        if (sub === "cn" || sub === "sg") {\n          
return "CHS";\n        }\n\n        return "CHT";\n\n      case "da":\n        return "DAN";\n\n      case 
"de":\n        return "DEU";\n\n      case "es":\n        return "ESP";\n\n      case "fr":\n        return 
"FRA";\n\n      case "it":\n        return "ITA";\n\n      case "ko":\n        return "KOR";\n\n      case 
"ja":\n        return "JPN";\n\n      case "nl":\n        return "NLD";\n\n      case "no":\n        return 
"NOR";\n\n      case "pt":\n        if (sub === "br") {\n          return "PTB";\n        }\n\n        return 
"ENU";\n\n      case "fi":\n        return "SUO";\n\n      case "SV":\n        return "SVE";\n\n      
default:\n        return "ENU";\n    }\n  }\n\n  get activeDocs() {\n    return [this._document.wrapped];\n  
}\n\n  set activeDocs(_) {\n    throw new Error("app.activeDocs is read-only");\n  }\n\n  get calculate() {\n 
   return this._document.obj.cal
 culate;\n  }\n\n  set calculate(calculate) {\n    this._document.obj.calculate = calculate;\n  }\n\n  get 
constants() {\n    if (!this._constants) {\n      this._constants = Object.freeze({\n        align: 
Object.freeze({\n          left: 0,\n          center: 1,\n          right: 2,\n          top: 3,\n          
bottom: 4\n        })\n      });\n    }\n\n    return this._constants;\n  }\n\n  set constants(_) {\n    
throw new Error("app.constants is read-only");\n  }\n\n  get focusRect() {\n    return this._focusRect;\n  
}\n\n  set focusRect(val) {\n    this._focusRect = val;\n  }\n\n  get formsVersion() {\n    return 
FORMS_VERSION;\n  }\n\n  set formsVersion(_) {\n    throw new Error("app.formsVersion is read-only");\n  
}\n\n  get fromPDFConverters() {\n    return [];\n  }\n\n  set fromPDFConverters(_) {\n    throw new 
Error("app.fromPDFConverters is read-only");\n  }\n\n  get fs() {\n    if (this._fs === null) {\n      
this._fs = new Proxy(new _fullscreen.FullScreen({\n        sen
 d: this._send\n      }), this._proxyHandler);\n    }\n\n    return this._fs;\n  }\n\n  set fs(_) {\n    
throw new Error("app.fs is read-only");\n  }\n\n  get language() {\n    return this._language;\n  }\n\n  set 
language(_) {\n    throw new Error("app.language is read-only");\n  }\n\n  get media() {\n    return 
undefined;\n  }\n\n  set media(_) {\n    throw new Error("app.media is read-only");\n  }\n\n  get monitors() 
{\n    return [];\n  }\n\n  set monitors(_) {\n    throw new Error("app.monitors is read-only");\n  }\n\n  
get numPlugins() {\n    return 0;\n  }\n\n  set numPlugins(_) {\n    throw new Error("app.numPlugins is 
read-only");\n  }\n\n  get openInPlace() {\n    return this._openInPlace;\n  }\n\n  set openInPlace(val) {\n  
  this._openInPlace = val;\n  }\n\n  get platform() {\n    return this._platform;\n  }\n\n  set platform(_) 
{\n    throw new Error("app.platform is read-only");\n  }\n\n  get plugins() {\n    return [];\n  }\n\n  set 
plugins(_) {\n    throw new Error("a
 pp.plugins is read-only");\n  }\n\n  get printColorProfiles() {\n    return [];\n  }\n\n  set 
printColorProfiles(_) {\n    throw new Error("app.printColorProfiles is read-only");\n  }\n\n  get 
printerNames() {\n    return [];\n  }\n\n  set printerNames(_) {\n    throw new Error("app.printerNames is 
read-only");\n  }\n\n  get runtimeHighlight() {\n    return this._runtimeHighlight;\n  }\n\n  set 
runtimeHighlight(val) {\n    this._runtimeHighlight = val;\n  }\n\n  get runtimeHighlightColor() {\n    
return this._runtimeHighlightColor;\n  }\n\n  set runtimeHighlightColor(val) {\n    if 
(_color.Color._isValidColor(val)) {\n      this._runtimeHighlightColor = val;\n    }\n  }\n\n  get 
thermometer() {\n    if (this._thermometer === null) {\n      this._thermometer = new Proxy(new 
_thermometer.Thermometer({\n        send: this._send\n      }), this._proxyHandler);\n    }\n\n    return 
this._thermometer;\n  }\n\n  set thermometer(_) {\n    throw new Error("app.thermometer is read-only");\n  
 }\n\n  get toolbar() {\n    return this._toolbar;\n  }\n\n  set toolbar(val) {\n    this._toolbar = val;\n  
}\n\n  get toolbarHorizontal() {\n    return this.toolbar;\n  }\n\n  set toolbarHorizontal(value) {\n    
this.toolbar = value;\n  }\n\n  get toolbarVertical() {\n    return this.toolbar;\n  }\n\n  set 
toolbarVertical(value) {\n    this.toolbar = value;\n  }\n\n  get viewerType() {\n    return VIEWER_TYPE;\n  
}\n\n  set viewerType(_) {\n    throw new Error("app.viewerType is read-only");\n  }\n\n  get 
viewerVariation() {\n    return VIEWER_VARIATION;\n  }\n\n  set viewerVariation(_) {\n    throw new 
Error("app.viewerVariation is read-only");\n  }\n\n  get viewerVersion() {\n    return VIEWER_VERSION;\n  
}\n\n  set viewerVersion(_) {\n    throw new Error("app.viewerVersion is read-only");\n  }\n\n  addMenuItem() 
{}\n\n  addSubMenu() {}\n\n  addToolButton() {}\n\n  alert(cMsg, nIcon = 0, nType = 0, cTitle = "PDF.js", 
oDoc = null, oCheckbox = null) {\n    if (typeof cMsg === "obje
 ct") {\n      nType = cMsg.nType;\n      cMsg = cMsg.cMsg;\n    }\n\n    cMsg = (cMsg || "").toString();\n   
 nType = typeof nType !== "number" || isNaN(nType) || nType < 0 || nType > 3 ? 0 : nType;\n\n    if (nType >= 
2) {\n      return this._externalCall("confirm", [cMsg]) ? 4 : 3;\n    }\n\n    this._externalCall("alert", 
[cMsg]);\n\n    return 1;\n  }\n\n  beep() {}\n\n  beginPriv() {}\n\n  browseForDoc() {}\n\n  
clearInterval(oInterval) {\n    this._unregisterTimeout(oInterval);\n  }\n\n  clearTimeOut(oTime) {\n    
this._unregisterTimeout(oTime);\n  }\n\n  endPriv() {}\n\n  execDialog() {}\n\n  execMenuItem() {}\n\n  
getNthPlugInName() {}\n\n  getPath() {}\n\n  goBack() {}\n\n  goForward() {}\n\n  hideMenuItem() {}\n\n  
hideToolbarButton() {}\n\n  launchURL() {}\n\n  listMenuItems() {}\n\n  listToolbarButtons() {}\n\n  
loadPolicyFile() {}\n\n  mailGetAddrs() {}\n\n  mailMsg() {}\n\n  newDoc() {}\n\n  newCollection() {}\n\n  
newFDF() {}\n\n  openDoc() {}\n\n  openFDF() {}\n\n  p
 opUpMenu() {}\n\n  popUpMenuEx() {}\n\n  removeToolButton() {}\n\n  response(cQuestion, cTitle = "", 
cDefault = "", bPassword = "", cLabel = "") {\n    if (typeof cQuestion === "object") {\n      cDefault = 
cQuestion.cDefault;\n      cQuestion = cQuestion.cQuestion;\n    }\n\n    cQuestion = (cQuestion || 
"").toString();\n    cDefault = (cDefault || "").toString();\n    return this._externalCall("prompt", 
[cQuestion, cDefault || ""]);\n  }\n\n  setInterval(cExpr, nMilliseconds = 0) {\n    if (typeof cExpr === 
"object") {\n      nMilliseconds = cExpr.nMilliseconds || 0;\n      cExpr = cExpr.cExpr;\n    }\n\n    if 
(typeof cExpr !== "string") {\n      throw new TypeError("First argument of app.setInterval must be a 
string");\n    }\n\n    if (typeof nMilliseconds !== "number") {\n      throw new TypeError("Second argument 
of app.setInterval must be a number");\n    }\n\n    const callbackId = 
this._registerTimeoutCallback(cExpr);\n\n    this._externalCall("setInterval", [callbackId, n
 Milliseconds]);\n\n    return this._registerTimeout(callbackId, true);\n  }\n\n  setTimeOut(cExpr, 
nMilliseconds = 0) {\n    if (typeof cExpr === "object") {\n      nMilliseconds = cExpr.nMilliseconds || 0;\n 
     cExpr = cExpr.cExpr;\n    }\n\n    if (typeof cExpr !== "string") {\n      throw new TypeError("First 
argument of app.setTimeOut must be a string");\n    }\n\n    if (typeof nMilliseconds !== "number") {\n      
throw new TypeError("Second argument of app.setTimeOut must be a number");\n    }\n\n    const callbackId = 
this._registerTimeoutCallback(cExpr);\n\n    this._externalCall("setTimeout", [callbackId, 
nMilliseconds]);\n\n    return this._registerTimeout(callbackId, false);\n  }\n\n  trustedFunction() {}\n\n  
trustPropagatorFunction() {}\n\n}\n\nexports.App = App;\n\n/***/ }),\n/* 10 */\n/***/ 
((__unused_webpack_module, exports) => {\n\n\n\nObject.defineProperty(exports, "__esModule", ({\n  value: 
true\n}));\nexports.EventDispatcher = exports.Event = void 0;\n\nclass E
 vent {\n  constructor(data) {\n    this.change = data.change || "";\n    this.changeEx = data.changeEx || 
null;\n    this.commitKey = data.commitKey || 0;\n    this.fieldFull = data.fieldFull || false;\n    
this.keyDown = data.keyDown || false;\n    this.modifier = data.modifier || false;\n    this.name = 
data.name;\n    this.rc = true;\n    this.richChange = data.richChange || [];\n    this.richChangeEx = 
data.richChangeEx || [];\n    this.richValue = data.richValue || [];\n    this.selEnd = data.selEnd || -1;\n  
  this.selStart = data.selStart || -1;\n    this.shift = data.shift || false;\n    this.source = data.source 
|| null;\n    this.target = data.target || null;\n    this.targetName = "";\n    this.type = "Field";\n    
this.value = data.value || "";\n    this.willCommit = data.willCommit || false;\n  }\n\n}\n\nexports.Event = 
Event;\n\nclass EventDispatcher {\n  constructor(document, calculationOrder, objects) {\n    this._document = 
document;\n    this._calculationOrder = ca
 lculationOrder;\n    this._objects = objects;\n    this._document.obj._eventDispatcher = this;\n  }\n\n  
mergeChange(event) {\n    let value = event.value;\n\n    if (typeof value !== "string") {\n      value = 
value.toString();\n    }\n\n    const prefix = event.selStart >= 0 ? value.substring(0, event.selStart) : 
"";\n    const postfix = event.selEnd >= 0 && event.selEnd <= value.length ? value.substring(event.selEnd) : 
"";\n    return `${prefix}${event.change}${postfix}`;\n  }\n\n  dispatch(baseEvent) {\n    const id = 
baseEvent.id;\n\n    if (!(id in this._objects)) {\n      let event;\n\n      if (id === "doc" || id === 
"page") {\n        event = globalThis.event = new Event(baseEvent);\n        event.source = event.target = 
this._document.wrapped;\n        event.name = baseEvent.name;\n      }\n\n      if (id === "doc") {\n        
this._document.obj._dispatchDocEvent(event.name);\n      } else if (id === "page") {\n        
this._document.obj._dispatchPageEvent(event.name, base
 Event.actions, baseEvent.pageNumber);\n      }\n\n      return;\n    }\n\n    const name = baseEvent.name;\n 
   const source = this._objects[id];\n    const event = globalThis.event = new Event(baseEvent);\n    let 
savedChange;\n\n    if (source.obj._isButton()) {\n      source.obj._id = id;\n      event.value = 
source.obj._getExportValue(event.value);\n\n      if (name === "Action") {\n        source.obj._value = 
event.value;\n      }\n    }\n\n    switch (name) {\n      case "Keystroke":\n        savedChange = {\n       
   value: event.value,\n          change: event.change,\n          selStart: event.selStart,\n          
selEnd: event.selEnd\n        };\n        break;\n\n      case "Blur":\n      case "Focus":\n        
Object.defineProperty(event, "value", {\n          configurable: false,\n          writable: false,\n         
 enumerable: true,\n          value: event.value\n        });\n        break;\n\n      case "Validate":\n     
   this.runValidation(source, event);\n     
    return;\n\n      case "Action":\n        this.runActions(source, source, event, name);\n\n        if 
(this._document.obj.calculate) {\n          this.runCalculate(source, event);\n        }\n\n        return;\n 
   }\n\n    this.runActions(source, source, event, name);\n\n    if (name === "Keystroke") {\n      if 
(event.rc) {\n        if (event.willCommit) {\n          this.runValidation(source, event);\n        } else 
if (event.change !== savedChange.change || event.selStart !== savedChange.selStart || event.selEnd !== 
savedChange.selEnd) {\n          source.wrapped.value = this.mergeChange(event);\n        }\n      } else if 
(!event.willCommit) {\n        source.obj._send({\n          id: source.obj._id,\n          value: 
savedChange.value,\n          selRange: [savedChange.selStart, savedChange.selEnd]\n        });\n      }\n    
}\n  }\n\n  runValidation(source, event) {\n    const hasRan = this.runActions(source, source, event, 
"Validate");\n\n    if (event.rc) {\n      if (ha
 sRan) {\n        source.wrapped.value = event.value;\n        source.wrapped.valueAsString = event.value;\n  
    } else {\n        source.obj.value = event.value;\n        source.obj.valueAsString = event.value;\n      
}\n\n      if (this._document.obj.calculate) {\n        this.runCalculate(source, event);\n      }\n\n      
event.value = source.obj.value;\n      this.runActions(source, source, event, "Format");\n      
source.wrapped.valueAsString = event.value;\n    }\n  }\n\n  runActions(source, target, event, eventName) {\n 
   event.source = source.wrapped;\n    event.target = target.wrapped;\n    event.name = eventName;\n    
event.targetName = target.obj.name;\n    event.rc = true;\n    return target.obj._runActions(event);\n  }\n\n 
 calculateNow() {\n    if (!this._calculationOrder) {\n      return;\n    }\n\n    const first = 
this._calculationOrder[0];\n    const source = this._objects[first];\n    globalThis.event = new Event({});\n 
   this.runCalculate(source, globalThis.eve
 nt);\n  }\n\n  runCalculate(source, event) {\n    if (!this._calculationOrder) {\n      return;\n    }\n\n   
 for (const targetId of this._calculationOrder) {\n      if (!(targetId in this._objects)) {\n        
continue;\n      }\n\n      if (!this._document.obj.calculate) {\n        continue;\n      }\n\n      
event.value = null;\n      const target = this._objects[targetId];\n      this.runActions(source, target, 
event, "Calculate");\n\n      if (!event.rc) {\n        continue;\n      }\n\n      if (event.value !== null) 
{\n        target.wrapped.value = event.value;\n      }\n\n      event.value = target.obj.value;\n      
this.runActions(target, target, event, "Validate");\n\n      if (!event.rc) {\n        continue;\n      }\n\n 
     event.value = target.obj.value;\n      this.runActions(target, target, event, "Format");\n\n      if 
(event.value !== null) {\n        target.wrapped.valueAsString = event.value;\n      }\n    }\n  
}\n\n}\n\nexports.EventDispatcher = EventDispatcher
 ;\n\n/***/ }),\n/* 11 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => 
{\n\n\n\nObject.defineProperty(exports, "__esModule", ({\n  value: true\n}));\nexports.FullScreen = void 
0;\n\nvar _constants = __w_pdfjs_require__(2);\n\nvar _pdf_object = __w_pdfjs_require__(7);\n\nclass 
FullScreen extends _pdf_object.PDFObject {\n  constructor(data) {\n    super(data);\n    
this._backgroundColor = [];\n    this._clickAdvances = true;\n    this._cursor = _constants.Cursor.hidden;\n  
  this._defaultTransition = "";\n    this._escapeExits = true;\n    this._isFullScreen = true;\n    
this._loop = false;\n    this._timeDelay = 3600;\n    this._usePageTiming = false;\n    this._useTimer = 
false;\n  }\n\n  get backgroundColor() {\n    return this._backgroundColor;\n  }\n\n  set backgroundColor(_) 
{}\n\n  get clickAdvances() {\n    return this._clickAdvances;\n  }\n\n  set clickAdvances(_) {}\n\n  get 
cursor() {\n    return this._cursor;\n  }\n\n  set cursor(_) {}\n\n  get default
 Transition() {\n    return this._defaultTransition;\n  }\n\n  set defaultTransition(_) {}\n\n  get 
escapeExits() {\n    return this._escapeExits;\n  }\n\n  set escapeExits(_) {}\n\n  get isFullScreen() {\n    
return this._isFullScreen;\n  }\n\n  set isFullScreen(_) {}\n\n  get loop() {\n    return this._loop;\n  
}\n\n  set loop(_) {}\n\n  get timeDelay() {\n    return this._timeDelay;\n  }\n\n  set timeDelay(_) {}\n\n  
get transitions() {\n    return ["Replace", "WipeRight", "WipeLeft", "WipeDown", "WipeUp", 
"SplitHorizontalIn", "SplitHorizontalOut", "SplitVerticalIn", "SplitVerticalOut", "BlindsHorizontal", 
"BlindsVertical", "BoxIn", "BoxOut", "GlitterRight", "GlitterDown", "GlitterRightDown", "Dissolve", 
"Random"];\n  }\n\n  set transitions(_) {\n    throw new Error("fullscreen.transitions is read-only");\n  
}\n\n  get usePageTiming() {\n    return this._usePageTiming;\n  }\n\n  set usePageTiming(_) {}\n\n  get 
useTimer() {\n    return this._useTimer;\n  }\n\n  set useTimer(_) {}\
 n\n}\n\nexports.FullScreen = FullScreen;\n\n/***/ }),\n/* 12 */\n/***/ ((__unused_webpack_module, exports, 
__w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, "__esModule", ({\n  value: 
true\n}));\nexports.Thermometer = void 0;\n\nvar _pdf_object = __w_pdfjs_require__(7);\n\nclass Thermometer 
extends _pdf_object.PDFObject {\n  constructor(data) {\n    super(data);\n    this._cancelled = false;\n    
this._duration = 100;\n    this._text = "";\n    this._value = 0;\n  }\n\n  get cancelled() {\n    return 
this._cancelled;\n  }\n\n  set cancelled(_) {\n    throw new Error("thermometer.cancelled is read-only");\n  
}\n\n  get duration() {\n    return this._duration;\n  }\n\n  set duration(val) {\n    this._duration = 
val;\n  }\n\n  get text() {\n    return this._text;\n  }\n\n  set text(val) {\n    this._text = val;\n  }\n\n 
 get value() {\n    return this._value;\n  }\n\n  set value(val) {\n    this._value = val;\n  }\n\n  begin() 
{}\n\n  end() {}\n\n}\n\nexports.Thermometer 
 = Thermometer;\n\n/***/ }),\n/* 13 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => 
{\n\n\n\nObject.defineProperty(exports, "__esModule", ({\n  value: true\n}));\nexports.Console = void 
0;\n\nvar _pdf_object = __w_pdfjs_require__(7);\n\nclass Console extends _pdf_object.PDFObject {\n  clear() 
{\n    this._send({\n      id: "clear"\n    });\n  }\n\n  hide() {}\n\n  println(msg) {\n    if (typeof msg 
=== "string") {\n      this._send({\n        command: "println",\n        value: "PDF.js Console:: " + msg\n  
    });\n    }\n  }\n\n  show() {}\n\n}\n\nexports.Console = Console;\n\n/***/ }),\n/* 14 */\n/***/ 
((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, 
"__esModule", ({\n  value: true\n}));\nexports.Doc = void 0;\n\nvar _common = __w_pdfjs_require__(4);\n\nvar 
_pdf_object = __w_pdfjs_require__(7);\n\nvar _print_params = __w_pdfjs_require__(15);\n\nvar _constants = 
__w_pdfjs_require__(2);\n\nclass InfoProxyHandler
  {\n  static get(obj, prop) {\n    return obj[prop.toLowerCase()];\n  }\n\n  static set(obj, prop, value) 
{\n    throw new Error(`doc.info.${prop} is read-only`);\n  }\n\n}\n\nclass Doc extends _pdf_object.PDFObject 
{\n  constructor(data) {\n    super(data);\n    this._expandos = globalThis;\n    this._baseURL = 
data.baseURL || "";\n    this._calculate = true;\n    this._delay = false;\n    this._dirty = false;\n    
this._disclosed = false;\n    this._media = undefined;\n    this._metadata = data.metadata || "";\n    
this._noautocomplete = undefined;\n    this._nocache = undefined;\n    this._spellDictionaryOrder = [];\n    
this._spellLanguageOrder = [];\n    this._printParams = null;\n    this._fields = new Map();\n    
this._fieldNames = [];\n    this._event = null;\n    this._author = data.Author || "";\n    this._creator = 
data.Creator || "";\n    this._creationDate = this._getDate(data.CreationDate) || null;\n    this._docID = 
data.docID || ["", ""];\n    this._documentFileName 
 = data.filename || "";\n    this._filesize = data.filesize || 0;\n    this._keywords = data.Keywords || 
"";\n    this._layout = data.layout || "";\n    this._modDate = this._getDate(data.ModDate) || null;\n    
this._numFields = 0;\n    this._numPages = data.numPages || 1;\n    this._pageNum = data.pageNum || 0;\n    
this._producer = data.Producer || "";\n    this._subject = data.Subject || "";\n    this._title = data.Title 
|| "";\n    this._URL = data.URL || "";\n    this._info = new Proxy({\n      title: this._title,\n      
author: this._author,\n      authors: data.authors || [this._author],\n      subject: this._subject,\n      
keywords: this._keywords,\n      creator: this._creator,\n      producer: this._producer,\n      
creationdate: this._creationDate,\n      moddate: this._modDate,\n      trapped: data.Trapped || "Unknown"\n  
  }, InfoProxyHandler);\n    this._zoomType = _constants.ZoomType.none;\n    this._zoom = data.zoom || 100;\n 
   this._actions = (0, _common.createActi
 onsMap)(data.actions);\n    this._globalEval = data.globalEval;\n    this._pageActions = new Map();\n  }\n\n 
 _dispatchDocEvent(name) {\n    if (name === "Open") {\n      const dontRun = new Set(["WillClose", 
"WillSave", "DidSave", "WillPrint", "DidPrint", "OpenAction"]);\n\n      for (const actionName of 
this._actions.keys()) {\n        if (!dontRun.has(actionName)) {\n          this._runActions(actionName);\n   
     }\n      }\n\n      this._runActions("OpenAction");\n    } else {\n      this._runActions(name);\n    
}\n  }\n\n  _dispatchPageEvent(name, actions, pageNumber) {\n    if (name === "PageOpen") {\n      if 
(!this._pageActions.has(pageNumber)) {\n        this._pageActions.set(pageNumber, (0, 
_common.createActionsMap)(actions));\n      }\n\n      this._pageNum = pageNumber - 1;\n    }\n\n    actions 
= this._pageActions.get(pageNumber)?.get(name);\n\n    if (actions) {\n      for (const action of actions) 
{\n        this._globalEval(action);\n      }\n    }\n  }\n\n  _runAc
 tions(name) {\n    const actions = this._actions.get(name);\n\n    if (actions) {\n      for (const action 
of actions) {\n        this._globalEval(action);\n      }\n    }\n  }\n\n  _addField(name, field) {\n    
this._fields.set(name, field);\n\n    this._fieldNames.push(name);\n\n    this._numFields++;\n  }\n\n  
_getDate(date) {\n    if (!date || date.length < 15 || !date.startsWith("D:")) {\n      return date;\n    
}\n\n    date = date.substring(2);\n    const year = date.substring(0, 4);\n    const month = 
date.substring(4, 6);\n    const day = date.substring(6, 8);\n    const hour = date.substring(8, 10);\n    
const minute = date.substring(10, 12);\n    const o = date.charAt(12);\n    let second, offsetPos;\n\n    if 
(o === "Z" || o === "+" || o === "-") {\n      second = "00";\n      offsetPos = 12;\n    } else {\n      
second = date.substring(12, 14);\n      offsetPos = 14;\n    }\n\n    const offset = 
date.substring(offsetPos).replaceAll("\'", "");\n    return new Date(`${yea
 r}-${month}-${day}T${hour}:${minute}:${second}${offset}`);\n  }\n\n  get author() {\n    return 
this._author;\n  }\n\n  set author(_) {\n    throw new Error("doc.author is read-only");\n  }\n\n  get 
baseURL() {\n    return this._baseURL;\n  }\n\n  set baseURL(baseURL) {\n    this._baseURL = baseURL;\n  
}\n\n  get bookmarkRoot() {\n    return undefined;\n  }\n\n  set bookmarkRoot(_) {\n    throw new 
Error("doc.bookmarkRoot is read-only");\n  }\n\n  get calculate() {\n    return this._calculate;\n  }\n\n  
set calculate(calculate) {\n    this._calculate = calculate;\n  }\n\n  get creator() {\n    return 
this._creator;\n  }\n\n  set creator(_) {\n    throw new Error("doc.creator is read-only");\n  }\n\n  get 
dataObjects() {\n    return [];\n  }\n\n  set dataObjects(_) {\n    throw new Error("doc.dataObjects is 
read-only");\n  }\n\n  get delay() {\n    return this._delay;\n  }\n\n  set delay(delay) {\n    this._delay = 
delay;\n  }\n\n  get dirty() {\n    return this._dirty;\n  }\n\n  set
  dirty(dirty) {\n    this._dirty = dirty;\n  }\n\n  get disclosed() {\n    return this._disclosed;\n  }\n\n  
set disclosed(disclosed) {\n    this._disclosed = disclosed;\n  }\n\n  get docID() {\n    return 
this._docID;\n  }\n\n  set docID(_) {\n    throw new Error("doc.docID is read-only");\n  }\n\n  get 
documentFileName() {\n    return this._documentFileName;\n  }\n\n  set documentFileName(_) {\n    throw new 
Error("doc.documentFileName is read-only");\n  }\n\n  get dynamicXFAForm() {\n    return false;\n  }\n\n  set 
dynamicXFAForm(_) {\n    throw new Error("doc.dynamicXFAForm is read-only");\n  }\n\n  get external() {\n    
return true;\n  }\n\n  set external(_) {\n    throw new Error("doc.external is read-only");\n  }\n\n  get 
filesize() {\n    return this._filesize;\n  }\n\n  set filesize(_) {\n    throw new Error("doc.filesize is 
read-only");\n  }\n\n  get hidden() {\n    return false;\n  }\n\n  set hidden(_) {\n    throw new 
Error("doc.hidden is read-only");\n  }\n\n  get hostC
 ontainer() {\n    return undefined;\n  }\n\n  set hostContainer(_) {\n    throw new Error("doc.hostContainer 
is read-only");\n  }\n\n  get icons() {\n    return undefined;\n  }\n\n  set icons(_) {\n    throw new 
Error("doc.icons is read-only");\n  }\n\n  get info() {\n    return this._info;\n  }\n\n  set info(_) {\n    
throw new Error("doc.info is read-only");\n  }\n\n  get innerAppWindowRect() {\n    return [0, 0, 0, 0];\n  
}\n\n  set innerAppWindowRect(_) {\n    throw new Error("doc.innerAppWindowRect is read-only");\n  }\n\n  get 
innerDocWindowRect() {\n    return [0, 0, 0, 0];\n  }\n\n  set innerDocWindowRect(_) {\n    throw new 
Error("doc.innerDocWindowRect is read-only");\n  }\n\n  get isModal() {\n    return false;\n  }\n\n  set 
isModal(_) {\n    throw new Error("doc.isModal is read-only");\n  }\n\n  get keywords() {\n    return 
this._keywords;\n  }\n\n  set keywords(_) {\n    throw new Error("doc.keywords is read-only");\n  }\n\n  get 
layout() {\n    return this._layout;\n  
 }\n\n  set layout(value) {\n    if (typeof value !== "string") {\n      return;\n    }\n\n    if (value !== 
"SinglePage" && value !== "OneColumn" && value !== "TwoColumnLeft" && value !== "TwoPageLeft" && value !== 
"TwoColumnRight" && value !== "TwoPageRight") {\n      value = "SinglePage";\n    }\n\n    this._send({\n     
 command: "layout",\n      value\n    });\n\n    this._layout = value;\n  }\n\n  get media() {\n    return 
this._media;\n  }\n\n  set media(media) {\n    this._media = media;\n  }\n\n  get metadata() {\n    return 
this._metadata;\n  }\n\n  set metadata(metadata) {\n    this._metadata = metadata;\n  }\n\n  get modDate() 
{\n    return this._modDate;\n  }\n\n  set modDate(_) {\n    throw new Error("doc.modDate is read-only");\n  
}\n\n  get mouseX() {\n    return 0;\n  }\n\n  set mouseX(_) {\n    throw new Error("doc.mouseX is 
read-only");\n  }\n\n  get mouseY() {\n    return 0;\n  }\n\n  set mouseY(_) {\n    throw new 
Error("doc.mouseY is read-only");\n  }\n\n  get n
 oautocomplete() {\n    return this._noautocomplete;\n  }\n\n  set noautocomplete(noautocomplete) {\n    
this._noautocomplete = noautocomplete;\n  }\n\n  get nocache() {\n    return this._nocache;\n  }\n\n  set 
nocache(nocache) {\n    this._nocache = nocache;\n  }\n\n  get numFields() {\n    return this._numFields;\n  
}\n\n  set numFields(_) {\n    throw new Error("doc.numFields is read-only");\n  }\n\n  get numPages() {\n    
return this._numPages;\n  }\n\n  set numPages(_) {\n    throw new Error("doc.numPages is read-only");\n  
}\n\n  get numTemplates() {\n    return 0;\n  }\n\n  set numTemplates(_) {\n    throw new 
Error("doc.numTemplates is read-only");\n  }\n\n  get outerAppWindowRect() {\n    return [0, 0, 0, 0];\n  
}\n\n  set outerAppWindowRect(_) {\n    throw new Error("doc.outerAppWindowRect is read-only");\n  }\n\n  get 
outerDocWindowRect() {\n    return [0, 0, 0, 0];\n  }\n\n  set outerDocWindowRect(_) {\n    throw new 
Error("doc.outerDocWindowRect is read-only");\n  }\n\n 
  get pageNum() {\n    return this._pageNum;\n  }\n\n  set pageNum(value) {\n    if (typeof value !== 
"number" || value < 0 || value >= this._numPages) {\n      return;\n    }\n\n    this._send({\n      command: 
"page-num",\n      value\n    });\n\n    this._pageNum = value;\n  }\n\n  get pageWindowRect() {\n    return 
[0, 0, 0, 0];\n  }\n\n  set pageWindowRect(_) {\n    throw new Error("doc.pageWindowRect is read-only");\n  
}\n\n  get path() {\n    return "";\n  }\n\n  set path(_) {\n    throw new Error("doc.path is read-only");\n  
}\n\n  get permStatusReady() {\n    return true;\n  }\n\n  set permStatusReady(_) {\n    throw new 
Error("doc.permStatusReady is read-only");\n  }\n\n  get producer() {\n    return this._producer;\n  }\n\n  
set producer(_) {\n    throw new Error("doc.producer is read-only");\n  }\n\n  get requiresFullSave() {\n    
return false;\n  }\n\n  set requiresFullSave(_) {\n    throw new Error("doc.requiresFullSave is 
read-only");\n  }\n\n  get securityHandler() {\
 n    return null;\n  }\n\n  set securityHandler(_) {\n    throw new Error("doc.securityHandler is 
read-only");\n  }\n\n  get selectedAnnots() {\n    return [];\n  }\n\n  set selectedAnnots(_) {\n    throw 
new Error("doc.selectedAnnots is read-only");\n  }\n\n  get sounds() {\n    return [];\n  }\n\n  set 
sounds(_) {\n    throw new Error("doc.sounds is read-only");\n  }\n\n  get spellDictionaryOrder() {\n    
return this._spellDictionaryOrder;\n  }\n\n  set spellDictionaryOrder(spellDictionaryOrder) {\n    
this._spellDictionaryOrder = spellDictionaryOrder;\n  }\n\n  get spellLanguageOrder() {\n    return 
this._spellLanguageOrder;\n  }\n\n  set spellLanguageOrder(spellLanguageOrder) {\n    
this._spellLanguageOrder = spellLanguageOrder;\n  }\n\n  get subject() {\n    return this._subject;\n  }\n\n  
set subject(_) {\n    throw new Error("doc.subject is read-only");\n  }\n\n  get templates() {\n    return 
[];\n  }\n\n  set templates(_) {\n    throw new Error("doc.templates is read-only");
 \n  }\n\n  get title() {\n    return this._title;\n  }\n\n  set title(_) {\n    throw new Error("doc.title 
is read-only");\n  }\n\n  get URL() {\n    return this._URL;\n  }\n\n  set URL(_) {\n    throw new 
Error("doc.URL is read-only");\n  }\n\n  get viewState() {\n    return undefined;\n  }\n\n  set viewState(_) 
{\n    throw new Error("doc.viewState is read-only");\n  }\n\n  get xfa() {\n    return this._xfa;\n  }\n\n  
set xfa(_) {\n    throw new Error("doc.xfa is read-only");\n  }\n\n  get XFAForeground() {\n    return 
false;\n  }\n\n  set XFAForeground(_) {\n    throw new Error("doc.XFAForeground is read-only");\n  }\n\n  get 
zoomType() {\n    return this._zoomType;\n  }\n\n  set zoomType(type) {\n    if (typeof type !== "string") 
{\n      return;\n    }\n\n    switch (type) {\n      case _constants.ZoomType.none:\n        this._send({\n  
        command: "zoom",\n          value: 1\n        });\n\n        break;\n\n      case 
_constants.ZoomType.fitP:\n        this._send({\n    
       command: "zoom",\n          value: "page-fit"\n        });\n\n        break;\n\n      case 
_constants.ZoomType.fitW:\n        this._send({\n          command: "zoom",\n          value: "page-width"\n  
      });\n\n        break;\n\n      case _constants.ZoomType.fitH:\n        this._send({\n          command: 
"zoom",\n          value: "page-height"\n        });\n\n        break;\n\n      case 
_constants.ZoomType.fitV:\n        this._send({\n          command: "zoom",\n          value: "auto"\n        
});\n\n        break;\n\n      case _constants.ZoomType.pref:\n      case _constants.ZoomType.refW:\n        
break;\n\n      default:\n        return;\n    }\n\n    this._zoomType = type;\n  }\n\n  get zoom() {\n    
return this._zoom;\n  }\n\n  set zoom(value) {\n    if (typeof value !== "number" || value < 8.33 || value > 
6400) {\n      return;\n    }\n\n    this._send({\n      command: "zoom",\n      value: value / 100\n    
});\n  }\n\n  addAnnot() {}\n\n  addField() {}\n\n  add
 Icon() {}\n\n  addLink() {}\n\n  addRecipientListCryptFilter() {}\n\n  addRequirement() {}\n\n  addScript() 
{}\n\n  addThumbnails() {}\n\n  addWatermarkFromFile() {}\n\n  addWatermarkFromText() {}\n\n  addWeblinks() 
{}\n\n  bringToFront() {}\n\n  calculateNow() {\n    this._eventDispatcher.calculateNow();\n  }\n\n  
closeDoc() {}\n\n  colorConvertPage() {}\n\n  createDataObject() {}\n\n  createTemplate() {}\n\n  
deletePages() {}\n\n  deleteSound() {}\n\n  embedDocAsDataObject() {}\n\n  embedOutputIntent() {}\n\n  
encryptForRecipients() {}\n\n  encryptUsingPolicy() {}\n\n  exportAsFDF() {}\n\n  exportAsFDFStr() {}\n\n  
exportAsText() {}\n\n  exportAsXFDF() {}\n\n  exportAsXFDFStr() {}\n\n  exportDataObject() {}\n\n  
exportXFAData() {}\n\n  extractPages() {}\n\n  flattenPages() {}\n\n  getAnnot() {}\n\n  getAnnots() {}\n\n  
getAnnot3D() {}\n\n  getAnnots3D() {}\n\n  getColorConvertAction() {}\n\n  getDataObject() {}\n\n  
getDataObjectContents() {}\n\n  getField(cName) {\n    if (typeof
  cName === "object") {\n      cName = cName.cName;\n    }\n\n    if (typeof cName !== "string") {\n      
throw new TypeError("Invalid field name: must be a string");\n    }\n\n    const searchedField = 
this._fields.get(cName);\n\n    if (searchedField) {\n      return searchedField;\n    }\n\n    const parts = 
cName.split("#");\n    let childIndex = NaN;\n\n    if (parts.length === 2) {\n      childIndex = 
Math.floor(parseFloat(parts[1]));\n      cName = parts[0];\n    }\n\n    for (const [name, field] of 
this._fields.entries()) {\n      if (name.endsWith(cName)) {\n        if (!isNaN(childIndex)) {\n          
const children = this._getChildren(name);\n\n          if (childIndex < 0 || childIndex >= children.length) 
{\n            childIndex = 0;\n          }\n\n          if (childIndex < children.length) {\n            
this._fields.set(cName, children[childIndex]);\n\n            return children[childIndex];\n          }\n     
   }\n\n        this._fields.set(cName, field);\n\n    
     return field;\n      }\n    }\n\n    return null;\n  }\n\n  _getChildren(fieldName) {\n    const len = 
fieldName.length;\n    const children = [];\n    const pattern = /^\\.[^.]+$/;\n\n    for (const [name, 
field] of this._fields.entries()) {\n      if (name.startsWith(fieldName)) {\n        const finalPart = 
name.slice(len);\n\n        if (finalPart.match(pattern)) {\n          children.push(field);\n        }\n     
 }\n    }\n\n    return children;\n  }\n\n  getIcon() {}\n\n  getLegalWarnings() {}\n\n  getLinks() {}\n\n  
getNthFieldName(nIndex) {\n    if (typeof nIndex === "object") {\n      nIndex = nIndex.nIndex;\n    }\n\n    
if (typeof nIndex !== "number") {\n      throw new TypeError("Invalid field index: must be a number");\n    
}\n\n    if (0 <= nIndex && nIndex < this.numFields) {\n      return this._fieldNames[Math.trunc(nIndex)];\n  
  }\n\n    return null;\n  }\n\n  getNthTemplate() {\n    return null;\n  }\n\n  getOCGs() {}\n\n  
getOCGOrder() {}\n\n  getPageBox() {}
 \n\n  getPageLabel() {}\n\n  getPageNthWord() {}\n\n  getPageNthWordQuads() {}\n\n  getPageNumWords() {}\n\n 
 getPageRotation() {}\n\n  getPageTransition() {}\n\n  getPrintParams() {\n    if (!this._printParams) {\n    
  this._printParams = new _print_params.PrintParams({\n        lastPage: this._numPages - 1\n      });\n    
}\n\n    return this._printParams;\n  }\n\n  getSound() {}\n\n  getTemplate() {}\n\n  getURL() {}\n\n  
gotoNamedDest() {}\n\n  importAnFDF() {}\n\n  importAnXFDF() {}\n\n  importDataObject() {}\n\n  importIcon() 
{}\n\n  importSound() {}\n\n  importTextData() {}\n\n  importXFAData() {}\n\n  insertPages() {}\n\n  
mailDoc() {}\n\n  mailForm() {}\n\n  movePage() {}\n\n  newPage() {}\n\n  openDataObject() {}\n\n  print(bUI 
= true, nStart = 0, nEnd = -1, bSilent = false, bShrinkToFit = false, bPrintAsImage = false, bReverse = 
false, bAnnotations = true, printParams = null) {\n    if (typeof bUI === "object") {\n      nStart = 
bUI.nStart;\n      nEnd = bUI.nEnd;\n     
  bSilent = bUI.bSilent;\n      bShrinkToFit = bUI.bShrinkToFit;\n      bPrintAsImage = bUI.bPrintAsImage;\n  
    bReverse = bUI.bReverse;\n      bAnnotations = bUI.bAnnotations;\n      printParams = bUI.printParams;\n  
    bUI = bUI.bUI;\n    }\n\n    if (printParams) {\n      nStart = printParams.firstPage;\n      nEnd = 
printParams.lastPage;\n    }\n\n    if (typeof nStart === "number") {\n      nStart = Math.max(0, 
Math.trunc(nStart));\n    } else {\n      nStart = 0;\n    }\n\n    if (typeof nEnd === "number") {\n      
nEnd = Math.max(0, Math.trunc(nEnd));\n    } else {\n      nEnd = -1;\n    }\n\n    this._send({\n      
command: "print",\n      start: nStart,\n      end: nEnd\n    });\n  }\n\n  removeDataObject() {}\n\n  
removeField() {}\n\n  removeIcon() {}\n\n  removeLinks() {}\n\n  removeRequirement() {}\n\n  removeScript() 
{}\n\n  removeTemplate() {}\n\n  removeThumbnails() {}\n\n  removeWeblinks() {}\n\n  replacePages() {}\n\n  
resetForm(aFields = null) {\n    if (aFields 
 && !Array.isArray(aFields) && typeof aFields === "object") {\n      aFields = aFields.aFields;\n    }\n\n    
let mustCalculate = false;\n\n    if (aFields) {\n      for (const fieldName of aFields) {\n        if 
(!fieldName) {\n          continue;\n        }\n\n        const field = this.getField(fieldName);\n\n        
if (!field) {\n          continue;\n        }\n\n        field.value = field.defaultValue;\n        
field.valueAsString = field.value;\n        mustCalculate = true;\n      }\n    } else {\n      mustCalculate 
= this._fields.size !== 0;\n\n      for (const field of this._fields.values()) {\n        field.value = 
field.defaultValue;\n        field.valueAsString = field.value;\n      }\n    }\n\n    if (mustCalculate) {\n 
     this.calculateNow();\n    }\n  }\n\n  saveAs() {}\n\n  scroll() {}\n\n  selectPageNthWord() {}\n\n  
setAction() {}\n\n  setDataObjectContents() {}\n\n  setOCGOrder() {}\n\n  setPageAction() {}\n\n  
setPageBoxes() {}\n\n  setPageLabels() {}\n\n  se
 tPageRotations() {}\n\n  setPageTabOrder() {}\n\n  setPageTransitions() {}\n\n  spawnPageFromTemplate() 
{}\n\n  submitForm() {}\n\n  syncAnnotScan() {}\n\n}\n\nexports.Doc = Doc;\n\n/***/ }),\n/* 15 */\n/***/ 
((__unused_webpack_module, exports) => {\n\n\n\nObject.defineProperty(exports, "__esModule", ({\n  value: 
true\n}));\nexports.PrintParams = void 0;\n\nclass PrintParams {\n  constructor(data) {\n    this.binaryOk = 
true;\n    this.bitmapDPI = 150;\n    this.booklet = {\n      binding: 0,\n      duplexMode: 0,\n      
subsetFrom: 0,\n      subsetTo: -1\n    };\n    this.colorOverride = 0;\n    this.colorProfile = "";\n    
this.constants = Object.freeze({\n      bookletBindings: Object.freeze({\n        Left: 0,\n        Right: 
1,\n        LeftTall: 2,\n        RightTall: 3\n      }),\n      bookletDuplexMode: Object.freeze({\n        
BothSides: 0,\n        FrontSideOnly: 1,\n        BasicSideOnly: 2\n      }),\n      colorOverrides: 
Object.freeze({\n        auto: 0,\n        gray
 : 1,\n        mono: 2\n      }),\n      fontPolicies: Object.freeze({\n        everyPage: 0,\n        
jobStart: 1,\n        pageRange: 2\n      }),\n      handling: Object.freeze({\n        none: 0,\n        
fit: 1,\n        shrink: 2,\n        tileAll: 3,\n        tileLarge: 4,\n        nUp: 5,\n        booklet: 
6\n      }),\n      interactionLevel: Object.freeze({\n        automatic: 0,\n        full: 1,\n        
silent: 2\n      }),\n      nUpPageOrders: Object.freeze({\n        Horizontal: 0,\n        
HorizontalReversed: 1,\n        Vertical: 2\n      }),\n      printContents: Object.freeze({\n        doc: 
0,\n        docAndComments: 1,\n        formFieldsOnly: 2\n      }),\n      flagValues: Object.freeze({\n     
   applyOverPrint: 1,\n        applySoftProofSettings: 1 << 1,\n        applyWorkingColorSpaces: 1 << 2,\n    
    emitHalftones: 1 << 3,\n        emitPostScriptXObjects: 1 << 4,\n        emitFormsAsPSForms: 1 << 5,\n    
    maxJP2KRes: 1 << 6,\n        setPageSize: 1 <
 < 7,\n        suppressBG: 1 << 8,\n        suppressCenter: 1 << 9,\n        suppressCJKFontSubst: 1 << 10,\n 
       suppressCropClip: 1 << 1,\n        suppressRotate: 1 << 12,\n        suppressTransfer: 1 << 13,\n      
  suppressUCR: 1 << 14,\n        useTrapAnnots: 1 << 15,\n        usePrintersMarks: 1 << 16\n      }),\n      
rasterFlagValues: Object.freeze({\n        textToOutline: 1,\n        strokesToOutline: 1 << 1,\n        
allowComplexClip: 1 << 2,\n        preserveOverprint: 1 << 3\n      }),\n      subsets: Object.freeze({\n     
   all: 0,\n        even: 1,\n        odd: 2\n      }),\n      tileMarks: Object.freeze({\n        none: 0,\n 
       west: 1,\n        east: 2\n      }),\n      usages: Object.freeze({\n        auto: 0,\n        use: 
1,\n        noUse: 2\n      })\n    });\n    this.downloadFarEastFonts = false;\n    this.fileName = "";\n    
this.firstPage = 0;\n    this.flags = 0;\n    this.fontPolicy = 0;\n    this.gradientDPI = 150;\n    
this.interactive = 1;\n  
   this.lastPage = data.lastPage;\n    this.npUpAutoRotate = false;\n    this.npUpNumPagesH = 2;\n    
this.npUpNumPagesV = 2;\n    this.npUpPageBorder = false;\n    this.npUpPageOrder = 0;\n    this.pageHandling 
= 0;\n    this.pageSubset = 0;\n    this.printAsImage = false;\n    this.printContent = 0;\n    
this.printerName = "";\n    this.psLevel = 0;\n    this.rasterFlags = 0;\n    this.reversePages = false;\n    
this.tileLabel = false;\n    this.tileMark = 0;\n    this.tileOverlap = 0;\n    this.tileScale = 1.0;\n    
this.transparencyLevel = 75;\n    this.usePrinterCRD = 0;\n    this.useT1Conversion = 0;\n  
}\n\n}\n\nexports.PrintParams = PrintParams;\n\n/***/ }),\n/* 16 */\n/***/ ((__unused_webpack_module, 
exports) => {\n\n\n\nObject.defineProperty(exports, "__esModule", ({\n  value: 
true\n}));\nexports.ProxyHandler = void 0;\n\nclass ProxyHandler {\n  constructor() {\n    this.nosend = new 
Set(["delay"]);\n  }\n\n  get(obj, prop) {\n    if (prop in obj._expandos) {\n      const v
 al = obj._expandos[prop];\n\n      if (typeof val === "function") {\n        return val.bind(obj);\n      
}\n\n      return val;\n    }\n\n    if (typeof prop === "string" && !prop.startsWith("_") && prop in obj) 
{\n      const val = obj[prop];\n\n      if (typeof val === "function") {\n        return val.bind(obj);\n    
  }\n\n      return val;\n    }\n\n    return undefined;\n  }\n\n  set(obj, prop, value) {\n    if 
(obj._kidIds) {\n      obj._kidIds.forEach(id => {\n        obj._appObjects[id].wrapped[prop] = value;\n      
});\n    }\n\n    if (typeof prop === "string" && !prop.startsWith("_") && prop in obj) {\n      const old = 
obj[prop];\n      obj[prop] = value;\n\n      if (!this.nosend.has(prop) && obj._send && obj._id !== null && 
typeof old !== "function") {\n        const data = {\n          id: obj._id\n        };\n        data[prop] = 
obj[prop];\n\n        if (!obj._siblings) {\n          obj._send(data);\n        } else {\n          
data.siblings = obj._siblings;\n\n  
         obj._send(data);\n        }\n      }\n    } else {\n      obj._expandos[prop] = value;\n    }\n\n    
return true;\n  }\n\n  has(obj, prop) {\n    return prop in obj._expandos || typeof prop === "string" && 
!prop.startsWith("_") && prop in obj;\n  }\n\n  getPrototypeOf(obj) {\n    return null;\n  }\n\n  
setPrototypeOf(obj, proto) {\n    return false;\n  }\n\n  isExtensible(obj) {\n    return true;\n  }\n\n  
preventExtensions(obj) {\n    return false;\n  }\n\n  getOwnPropertyDescriptor(obj, prop) {\n    if (prop in 
obj._expandos) {\n      return {\n        configurable: true,\n        enumerable: true,\n        value: 
obj._expandos[prop]\n      };\n    }\n\n    if (typeof prop === "string" && !prop.startsWith("_") && prop in 
obj) {\n      return {\n        configurable: true,\n        enumerable: true,\n        value: obj[prop]\n    
  };\n    }\n\n    return undefined;\n  }\n\n  defineProperty(obj, key, descriptor) {\n    
Object.defineProperty(obj._expandos, key, descriptor);\
 n    return true;\n  }\n\n  deleteProperty(obj, prop) {\n    if (prop in obj._expandos) {\n      delete 
obj._expandos[prop];\n    }\n  }\n\n  ownKeys(obj) {\n    const fromExpandos = 
Reflect.ownKeys(obj._expandos);\n    const fromObj = Reflect.ownKeys(obj).filter(k => !k.startsWith("_"));\n  
  return fromExpandos.concat(fromObj);\n  }\n\n}\n\nexports.ProxyHandler = ProxyHandler;\n\n/***/ }),\n/* 17 
*/\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, 
"__esModule", ({\n  value: true\n}));\nexports.Util = void 0;\n\nvar _pdf_object = 
__w_pdfjs_require__(7);\n\nclass Util extends _pdf_object.PDFObject {\n  constructor(data) {\n    
super(data);\n    this._scandCache = new Map();\n    this._months = ["January", "February", "March", "April", 
"May", "June", "July", "August", "September", "October", "November", "December"];\n    this._days = 
["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"];\n    this.MILL
 ISECONDS_IN_DAY = 86400000;\n    this.MILLISECONDS_IN_WEEK = 604800000;\n    this._externalCall = 
data.externalCall;\n  }\n\n  printf(...args) {\n    if (args.length === 0) {\n      throw new Error("Invalid 
number of params in printf");\n    }\n\n    if (typeof args[0] !== "string") {\n      throw new 
TypeError("First argument of printf must be a string");\n    }\n\n    const pattern = /%(,[0-4])?([+ 
0#]+)?([0-9]+)?(\\.[0-9]+)?(.)/g;\n    const PLUS = 1;\n    const SPACE = 2;\n    const ZERO = 4;\n    const 
HASH = 8;\n    let i = 0;\n    return args[0].replace(pattern, function (match, nDecSep, cFlags, nWidth, 
nPrecision, cConvChar) {\n      if (cConvChar !== "d" && cConvChar !== "f" && cConvChar !== "s" && cConvChar 
!== "x") {\n        const buf = ["%"];\n\n        for (const str of [nDecSep, cFlags, nWidth, nPrecision, 
cConvChar]) {\n          if (str) {\n            buf.push(str);\n          }\n        }\n\n        return 
buf.join("");\n      }\n\n      i++;\n\n      if (i === ar
 gs.length) {\n        throw new Error("Not enough arguments in printf");\n      }\n\n      const arg = 
args[i];\n\n      if (cConvChar === "s") {\n        return arg.toString();\n      }\n\n      let flags = 
0;\n\n      if (cFlags) {\n        for (const flag of cFlags) {\n          switch (flag) {\n            case 
"+":\n              flags |= PLUS;\n              break;\n\n            case " ":\n              flags |= 
SPACE;\n              break;\n\n            case "0":\n              flags |= ZERO;\n              break;\n\n 
           case "#":\n              flags |= HASH;\n              break;\n          }\n        }\n      }\n\n 
     cFlags = flags;\n\n      if (nWidth) {\n        nWidth = parseInt(nWidth);\n      }\n\n      let intPart 
= Math.trunc(arg);\n\n      if (cConvChar === "x") {\n        let hex = 
Math.abs(intPart).toString(16).toUpperCase();\n\n        if (nWidth !== undefined) {\n          hex = 
hex.padStart(nWidth, cFlags & ZERO ? "0" : " ");\n        }\n\n       
  if (cFlags & HASH) {\n          hex = `0x${hex}`;\n        }\n\n        return hex;\n      }\n\n      if 
(nPrecision) {\n        nPrecision = parseInt(nPrecision.substring(1));\n      }\n\n      nDecSep = nDecSep ? 
nDecSep.substring(1) : "0";\n      const separators = {\n        0: [",", "."],\n        1: ["", "."],\n      
  2: [".", ","],\n        3: ["", ","],\n        4: ["\'", "."]\n      };\n      const [thousandSep, 
decimalSep] = separators[nDecSep];\n      let decPart = "";\n\n      if (cConvChar === "f") {\n        if 
(nPrecision !== undefined) {\n          decPart = Math.abs(arg - intPart).toFixed(nPrecision);\n        } 
else {\n          decPart = Math.abs(arg - intPart).toString();\n        }\n\n        if (decPart.length > 2) 
{\n          decPart = `${decimalSep}${decPart.substring(2)}`;\n        } else if (cFlags & HASH) {\n         
 decPart = ".";\n        } else {\n          decPart = "";\n        }\n      }\n\n      let sign = "";\n\n    
  if (intPart < 0) {\n      
   sign = "-";\n        intPart = -intPart;\n      } else if (cFlags & PLUS) {\n        sign = "+";\n      } 
else if (cFlags & SPACE) {\n        sign = " ";\n      }\n\n      if (thousandSep && intPart >= 1000) {\n     
   const buf = [];\n\n        while (true) {\n          buf.push((intPart % 1000).toString().padStart(3, 
"0"));\n          intPart = Math.trunc(intPart / 1000);\n\n          if (intPart < 1000) {\n            
buf.push(intPart.toString());\n            break;\n          }\n        }\n\n        intPart = 
buf.reverse().join(thousandSep);\n      } else {\n        intPart = intPart.toString();\n      }\n\n      let 
n = `${intPart}${decPart}`;\n\n      if (nWidth !== undefined) {\n        n = n.padStart(nWidth - 
sign.length, cFlags & ZERO ? "0" : " ");\n      }\n\n      return `${sign}${n}`;\n    });\n  }\n\n  
iconStreamFromIcon() {}\n\n  printd(cFormat, oDate) {\n    switch (cFormat) {\n      case 0:\n        return 
this.printd("D:yyyymmddHHMMss", oDate);\n\n      case 1:\n
         return this.printd("yyyy.mm.dd HH:MM:ss", oDate);\n\n      case 2:\n        return 
this.printd("m/d/yy h:MM:ss tt", oDate);\n    }\n\n    const handlers = {\n      mmmm: data => {\n        
return this._months[data.month];\n      },\n      mmm: data => {\n        return 
this._months[data.month].substring(0, 3);\n      },\n      mm: data => {\n        return (data.month + 
1).toString().padStart(2, "0");\n      },\n      m: data => {\n        return (data.month + 1).toString();\n  
    },\n      dddd: data => {\n        return this._days[data.dayOfWeek];\n      },\n      ddd: data => {\n   
     return this._days[data.dayOfWeek].substring(0, 3);\n      },\n      dd: data => {\n        return 
data.day.toString().padStart(2, "0");\n      },\n      d: data => {\n        return data.day.toString();\n    
  },\n      yyyy: data => {\n        return data.year.toString();\n      },\n      yy: data => {\n        
return (data.year % 100).toString().padStart(2, "0");\n      },\n      HH: da
 ta => {\n        return data.hours.toString().padStart(2, "0");\n      },\n      H: data => {\n        
return data.hours.toString();\n      },\n      hh: data => {\n        return (1 + (data.hours + 11) % 
12).toString().padStart(2, "0");\n      },\n      h: data => {\n        return (1 + (data.hours + 11) % 
12).toString();\n      },\n      MM: data => {\n        return data.minutes.toString().padStart(2, "0");\n    
  },\n      M: data => {\n        return data.minutes.toString();\n      },\n      ss: data => {\n        
return data.seconds.toString().padStart(2, "0");\n      },\n      s: data => {\n        return 
data.seconds.toString();\n      },\n      tt: data => {\n        return data.hours < 12 ? "am" : "pm";\n      
},\n      t: data => {\n        return data.hours < 12 ? "a" : "p";\n      }\n    };\n    const data = {\n    
  year: oDate.getFullYear(),\n      month: oDate.getMonth(),\n      day: oDate.getDate(),\n      dayOfWeek: 
oDate.getDay(),\n      hours: oDate.getHours(),\n
       minutes: oDate.getMinutes(),\n      seconds: oDate.getSeconds()\n    };\n    const patterns = 
/(mmmm|mmm|mm|m|dddd|ddd|dd|d|yyyy|yy|HH|H|hh|h|MM|M|ss|s|tt|t|\\\\.)/g;\n    return 
cFormat.replace(patterns, function (match, pattern) {\n      if (pattern in handlers) {\n        return 
handlers[pattern](data);\n      }\n\n      return pattern.charCodeAt(1);\n    });\n  }\n\n  printx(cFormat, 
cSource) {\n    const handlers = [x => x, x => x.toUpperCase(), x => x.toLowerCase()];\n    const buf = [];\n 
   let i = 0;\n    const ii = cSource.length;\n    let currCase = handlers[0];\n    let escaped = false;\n\n  
  for (const command of cFormat) {\n      if (escaped) {\n        buf.push(command);\n        escaped = 
false;\n        continue;\n      }\n\n      if (i >= ii) {\n        break;\n      }\n\n      switch (command) 
{\n        case "?":\n          buf.push(currCase(cSource.charAt(i++)));\n          break;\n\n        case 
"X":\n          while (i < ii) {\n            const char = 
 cSource.charAt(i++);\n\n            if ("a" <= char && char <= "z" || "A" <= char && char <= "Z" || "0" <= 
char && char <= "9") {\n              buf.push(currCase(char));\n              break;\n            }\n        
  }\n\n          break;\n\n        case "A":\n          while (i < ii) {\n            const char = 
cSource.charAt(i++);\n\n            if ("a" <= char && char <= "z" || "A" <= char && char <= "Z") {\n         
     buf.push(currCase(char));\n              break;\n            }\n          }\n\n          break;\n\n      
  case "9":\n          while (i < ii) {\n            const char = cSource.charAt(i++);\n\n            if ("0" 
<= char && char <= "9") {\n              buf.push(char);\n              break;\n            }\n          
}\n\n          break;\n\n        case "*":\n          while (i < ii) {\n            
buf.push(currCase(cSource.charAt(i++)));\n          }\n\n          break;\n\n        case "\\\\":\n          
escaped = true;\n          break;\n\n        case ">"
 :\n          currCase = handlers[1];\n          break;\n\n        case "<":\n          currCase = 
handlers[2];\n          break;\n\n        case "=":\n          currCase = handlers[0];\n          break;\n\n  
      default:\n          buf.push(command);\n      }\n    }\n\n    return buf.join("");\n  }\n\n  
scand(cFormat, cDate) {\n    if (cDate === "") {\n      return new Date();\n    }\n\n    switch (cFormat) {\n 
     case 0:\n        return this.scand("D:yyyymmddHHMMss", cDate);\n\n      case 1:\n        return 
this.scand("yyyy.mm.dd HH:MM:ss", cDate);\n\n      case 2:\n        return this.scand("m/d/yy h:MM:ss tt", 
cDate);\n    }\n\n    if (!this._scandCache.has(cFormat)) {\n      const months = this._months;\n      const 
days = this._days;\n      const handlers = {\n        mmmm: {\n          pattern: `(${months.join("|")})`,\n  
        action: (value, data) => {\n            data.month = months.indexOf(value);\n          }\n        
},\n        mmm: {\n          pattern: `(${mont
 hs.map(month => month.substring(0, 3)).join("|")})`,\n          action: (value, data) => {\n            
data.month = months.findIndex(month => month.substring(0, 3) === value);\n          }\n        },\n        
mm: {\n          pattern: `([0-9]{2})`,\n          action: (value, data) => {\n            data.month = 
parseInt(value) - 1;\n          }\n        },\n        m: {\n          pattern: `([0-9]{1,2})`,\n          
action: (value, data) => {\n            data.month = parseInt(value) - 1;\n          }\n        },\n        
dddd: {\n          pattern: `(${days.join("|")})`,\n          action: (value, data) => {\n            
data.day = days.indexOf(value);\n          }\n        },\n        ddd: {\n          pattern: `(${days.map(day 
=> day.substring(0, 3)).join("|")})`,\n          action: (value, data) => {\n            data.day = 
days.findIndex(day => day.substring(0, 3) === value);\n          }\n        },\n        dd: {\n          
pattern: "([0-9]{2})",\n          action: (value, 
 data) => {\n            data.day = parseInt(value);\n          }\n        },\n        d: {\n          
pattern: "([0-9]{1,2})",\n          action: (value, data) => {\n            data.day = parseInt(value);\n     
     }\n        },\n        yyyy: {\n          pattern: "([0-9]{4})",\n          action: (value, data) => {\n 
           data.year = parseInt(value);\n          }\n        },\n        yy: {\n          pattern: 
"([0-9]{2})",\n          action: (value, data) => {\n            data.year = 2000 + parseInt(value);\n        
  }\n        },\n        HH: {\n          pattern: "([0-9]{2})",\n          action: (value, data) => {\n      
      data.hours = parseInt(value);\n          }\n        },\n        H: {\n          pattern: 
"([0-9]{1,2})",\n          action: (value, data) => {\n            data.hours = parseInt(value);\n          
}\n        },\n        hh: {\n          pattern: "([0-9]{2})",\n          action: (value, data) => {\n        
    data.hours = parseInt(value);\n       
    }\n        },\n        h: {\n          pattern: "([0-9]{1,2})",\n          action: (value, data) => {\n   
         data.hours = parseInt(value);\n          }\n        },\n        MM: {\n          pattern: 
"([0-9]{2})",\n          action: (value, data) => {\n            data.minutes = parseInt(value);\n          
}\n        },\n        M: {\n          pattern: "([0-9]{1,2})",\n          action: (value, data) => {\n       
     data.minutes = parseInt(value);\n          }\n        },\n        ss: {\n          pattern: 
"([0-9]{2})",\n          action: (value, data) => {\n            data.seconds = parseInt(value);\n          
}\n        },\n        s: {\n          pattern: "([0-9]{1,2})",\n          action: (value, data) => {\n       
     data.seconds = parseInt(value);\n          }\n        },\n        tt: {\n          pattern: 
"([aApP][mM])",\n          action: (value, data) => {\n            const char = value.charAt(0);\n            
data.am = char === "a" || char === "A";\n        
   }\n        },\n        t: {\n          pattern: "([aApP])",\n          action: (value, data) => {\n        
    data.am = value === "a" || value === "A";\n          }\n        }\n      };\n      const escapedFormat = 
cFormat.replace(/[.*+\\-?^${}()|[\\]\\\\]/g, "\\\\$&");\n      const patterns = 
/(mmmm|mmm|mm|m|dddd|ddd|dd|d|yyyy|yy|HH|H|hh|h|MM|M|ss|s|tt|t)/g;\n      const actions = [];\n      const re 
= escapedFormat.replace(patterns, function (match, patternElement) {\n        const {\n          pattern,\n   
       action\n        } = handlers[patternElement];\n        actions.push(action);\n        return 
pattern;\n      });\n\n      this._scandCache.set(cFormat, [re, actions]);\n    }\n\n    const [re, actions] 
= this._scandCache.get(cFormat);\n\n    const matches = new RegExp(re, "g").exec(cDate);\n\n    if (!matches 
|| matches.length !== actions.length + 1) {\n      return null;\n    }\n\n    const data = {\n      year: 
0,\n      month: 0,\n      day: 0,\n      hours: 0,\n  
     minutes: 0,\n      seconds: 0,\n      am: null\n    };\n    actions.forEach((action, i) => 
action(matches[i + 1], data));\n\n    if (data.am !== null) {\n      data.hours = data.hours % 12 + (data.am 
? 0 : 12);\n    }\n\n    return new Date(data.year, data.month, data.day, data.hours, data.minutes, 
data.seconds);\n  }\n\n  spansToXML() {}\n\n  stringFromStream() {}\n\n  xmlToSpans() {}\n\n}\n\nexports.Util 
= Util;\n\n/***/ })\n/******/ 
\t]);\n/************************************************************************/\n/******/ \t// The module 
cache\n/******/ \tvar __webpack_module_cache__ = {};\n/******/ \t\n/******/ \t// The require 
function\n/******/ \tfunction __w_pdfjs_require__(moduleId) {\n/******/ \t\t// Check if module is in 
cache\n/******/ \t\tvar cachedModule = __webpack_module_cache__[moduleId];\n/******/ \t\tif (cachedModule !== 
undefined) {\n/******/ \t\t\treturn cachedModule.exports;\n/******/ \t\t}\n/******/ \t\t// Create a new 
module (and put it into the cache)\n/
 ******/ \t\tvar module = __webpack_module_cache__[moduleId] = {\n/******/ \t\t\t// no module.id 
needed\n/******/ \t\t\t// no module.loaded needed\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/ 
\t\n/******/ \t\t// Execute the module function\n/******/ \t\t__webpack_modules__[moduleId](module, 
module.exports, __w_pdfjs_require__);\n/******/ \t\n/******/ \t\t// Return the exports of the 
module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/ 
\t\n/************************************************************************/\nvar __webpack_exports__ = 
{};\n// This entry need to be wrapped in an IIFE because it need to be isolated against other modules in the 
chunk.\n(() => {\nvar exports = __webpack_exports__;\n\n\nObject.defineProperty(exports, "__esModule", ({\n  
value: true\n}));\nObject.defineProperty(exports, "initSandbox", ({\n  enumerable: true,\n  get: function () 
{\n    return _initialization.initSandbox;\n  }\n}));\n\nvar _initialization = __w_pdfjs_require__(1)
 ;\n\nconst pdfjsVersion = \'2.10.377\';\nconst pdfjsBuild = \'156762c48\';\n})();\n\n/******/ \treturn 
__webpack_exports__;\n/******/ })()\n;\n});'];
+    const code = ['(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 
\'object\' && typeof module === \'object\')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 
\'function\' && define.amd)\n\t\tdefine("pdfjs-dist/build/pdf.scripting", [], factory);\n\telse if(typeof 
exports === \'object\')\n\t\texports["pdfjs-dist/build/pdf.scripting"] = 
factory();\n\telse\n\t\troot.pdfjsScripting = factory();\n})(this, function() {\nreturn /******/ (() => { // 
webpackBootstrap\n/******/ \t"use strict";\n/******/ \tvar __webpack_modules__ = ([\n/* 0 */,\n/* 1 */\n/***/ 
((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, 
"__esModule", ({\n  value: true\n}));\nexports.initSandbox = initSandbox;\n\nvar _constants = 
__w_pdfjs_require__(2);\n\nvar _field = __w_pdfjs_require__(3);\n\nvar _aform = 
__w_pdfjs_require__(8);\n\nvar _app = __w_pdfjs_require__(9);\n\nvar _color = __w_pdfjs_require__(5);\n\nvar 
_conso
 le = __w_pdfjs_require__(13);\n\nvar _doc = __w_pdfjs_require__(14);\n\nvar _proxy = 
__w_pdfjs_require__(16);\n\nvar _util = __w_pdfjs_require__(17);\n\nfunction initSandbox(params) {\n  delete 
globalThis.pdfjsScripting;\n  const externalCall = globalThis.callExternalFunction;\n  delete 
globalThis.callExternalFunction;\n\n  const globalEval = code => globalThis.eval(code);\n\n  const send = 
data => externalCall("send", [data]);\n\n  const proxyHandler = new _proxy.ProxyHandler();\n  const {\n    
data\n  } = params;\n  const doc = new _doc.Doc({\n    send,\n    globalEval,\n    ...data.docInfo\n  });\n  
const _document = {\n    obj: doc,\n    wrapped: new Proxy(doc, proxyHandler)\n  };\n  const app = new 
_app.App({\n    send,\n    globalEval,\n    externalCall,\n    _document,\n    calculationOrder: 
data.calculationOrder,\n    proxyHandler,\n    ...data.appInfo\n  });\n  const util = new _util.Util({\n    
externalCall\n  });\n  const appObjects = app._objects;\n\n  if (data.objects) 
 {\n    const annotations = [];\n\n    for (const [name, objs] of Object.entries(data.objects)) {\n      
annotations.length = 0;\n      let container = null;\n\n      for (const obj of objs) {\n        if (obj.type 
!== "") {\n          annotations.push(obj);\n        } else {\n          container = obj;\n        }\n      
}\n\n      let obj = container;\n\n      if (annotations.length > 0) {\n        obj = annotations[0];\n       
 obj.send = send;\n      }\n\n      obj.globalEval = globalEval;\n      obj.doc = _document;\n      
obj.fieldPath = name;\n      obj.appObjects = appObjects;\n      let field;\n\n      switch (obj.type) {\n    
    case "radiobutton":\n          {\n            const otherButtons = annotations.slice(1);\n            
field = new _field.RadioButtonField(otherButtons, obj);\n            break;\n          }\n\n        case 
"checkbox":\n          {\n            const otherButtons = annotations.slice(1);\n            field = new 
_field.CheckboxField(otherButtons, obj
 );\n            break;\n          }\n\n        case "text":\n          if (annotations.length <= 1) {\n      
      field = new _field.Field(obj);\n            break;\n          }\n\n          obj.siblings = 
annotations.map(x => x.id).slice(1);\n          field = new _field.Field(obj);\n          break;\n\n        
default:\n          field = new _field.Field(obj);\n      }\n\n      const wrapped = new Proxy(field, 
proxyHandler);\n\n      doc._addField(name, wrapped);\n\n      const _object = {\n        obj: field,\n       
 wrapped\n      };\n\n      for (const object of objs) {\n        appObjects[object.id] = _object;\n      
}\n\n      if (container) {\n        appObjects[container.id] = _object;\n      }\n    }\n  }\n\n  const 
color = new _color.Color();\n  globalThis.event = null;\n  globalThis.global = Object.create(null);\n  
globalThis.app = new Proxy(app, proxyHandler);\n  globalThis.color = new Proxy(color, proxyHandler);\n  
globalThis.console = new Proxy(new _console.Console(
 {\n    send\n  }), proxyHandler);\n  globalThis.util = new Proxy(util, proxyHandler);\n  globalThis.border = 
_constants.Border;\n  globalThis.cursor = _constants.Cursor;\n  globalThis.display = _constants.Display;\n  
globalThis.font = _constants.Font;\n  globalThis.highlight = _constants.Highlight;\n  globalThis.position = 
_constants.Position;\n  globalThis.scaleHow = _constants.ScaleHow;\n  globalThis.scaleWhen = 
_constants.ScaleWhen;\n  globalThis.style = _constants.Style;\n  globalThis.trans = _constants.Trans;\n  
globalThis.zoomtype = _constants.ZoomType;\n  globalThis.ADBE = {\n    Reader_Value_Asked: true,\n    
Viewer_Value_Asked: true\n  };\n  const aform = new _aform.AForm(doc, app, util, color);\n\n  for (const name 
of Object.getOwnPropertyNames(_aform.AForm.prototype)) {\n    if (name !== "constructor" && 
!name.startsWith("_")) {\n      globalThis[name] = aform[name].bind(aform);\n    }\n  }\n\n  for (const 
[name, value] of Object.entries(_constants.GlobalConstants)) {\n  
   Object.defineProperty(globalThis, name, {\n      value,\n      writable: false\n    });\n  }\n\n  
Object.defineProperties(globalThis, {\n    ColorConvert: {\n      value: color.convert.bind(color),\n      
writable: true\n    },\n    ColorEqual: {\n      value: color.equal.bind(color),\n      writable: true\n    
}\n  });\n  const properties = Object.create(null);\n\n  for (const name of 
Object.getOwnPropertyNames(_doc.Doc.prototype)) {\n    if (name === "constructor" || name.startsWith("_")) 
{\n      continue;\n    }\n\n    const descriptor = Object.getOwnPropertyDescriptor(_doc.Doc.prototype, 
name);\n\n    if (descriptor.get) {\n      properties[name] = {\n        get: descriptor.get.bind(doc),\n     
   set: descriptor.set.bind(doc)\n      };\n    } else {\n      properties[name] = {\n        value: 
_doc.Doc.prototype[name].bind(doc)\n      };\n    }\n  }\n\n  Object.defineProperties(globalThis, 
properties);\n  const functions = {\n    dispatchEvent: app._dispatchEvent.bind(app),\
 n    timeoutCb: app._evalCallback.bind(app)\n  };\n  return (name, args) => {\n    try {\n      
functions[name](args);\n    } catch (error) {\n      const value = `${error.toString()}\\n${error.stack}`;\n  
    send({\n        command: "error",\n        value\n      });\n    }\n  };\n}\n\n/***/ }),\n/* 2 */\n/***/ 
((__unused_webpack_module, exports) => {\n\n\n\nObject.defineProperty(exports, "__esModule", ({\n  value: 
true\n}));\nexports.ZoomType = exports.Trans = exports.Style = exports.ScaleWhen = exports.ScaleHow = 
exports.Position = exports.Highlight = exports.GlobalConstants = exports.Font = exports.Display = 
exports.Cursor = exports.Border = void 0;\nconst Border = Object.freeze({\n  s: "solid",\n  d: "dashed",\n  
b: "beveled",\n  i: "inset",\n  u: "underline"\n});\nexports.Border = Border;\nconst Cursor = 
Object.freeze({\n  visible: 0,\n  hidden: 1,\n  delay: 2\n});\nexports.Cursor = Cursor;\nconst Display = 
Object.freeze({\n  visible: 0,\n  hidden: 1,\n  noPrint: 2,\n  noView
 : 3\n});\nexports.Display = Display;\nconst Font = Object.freeze({\n  Times: "Times-Roman",\n  TimesB: 
"Times-Bold",\n  TimesI: "Times-Italic",\n  TimesBI: "Times-BoldItalic",\n  Helv: "Helvetica",\n  HelvB: 
"Helvetica-Bold",\n  HelvI: "Helvetica-Oblique",\n  HelvBI: "Helvetica-BoldOblique",\n  Cour: "Courier",\n  
CourB: "Courier-Bold",\n  CourI: "Courier-Oblique",\n  CourBI: "Courier-BoldOblique",\n  Symbol: "Symbol",\n  
ZapfD: "ZapfDingbats",\n  KaGo: "HeiseiKakuGo-W5-UniJIS-UCS2-H",\n  KaMi: 
"HeiseiMin-W3-UniJIS-UCS2-H"\n});\nexports.Font = Font;\nconst Highlight = Object.freeze({\n  n: "none",\n  
i: "invert",\n  p: "push",\n  o: "outline"\n});\nexports.Highlight = Highlight;\nconst Position = 
Object.freeze({\n  textOnly: 0,\n  iconOnly: 1,\n  iconTextV: 2,\n  textIconV: 3,\n  iconTextH: 4,\n  
textIconH: 5,\n  overlay: 6\n});\nexports.Position = Position;\nconst ScaleHow = Object.freeze({\n  
proportional: 0,\n  anamorphic: 1\n});\nexports.ScaleHow = ScaleHow;\nconst ScaleWhen = O
 bject.freeze({\n  always: 0,\n  never: 1,\n  tooBig: 2,\n  tooSmall: 3\n});\nexports.ScaleWhen = 
ScaleWhen;\nconst Style = Object.freeze({\n  ch: "check",\n  cr: "cross",\n  di: "diamond",\n  ci: 
"circle",\n  st: "star",\n  sq: "square"\n});\nexports.Style = Style;\nconst Trans = Object.freeze({\n  
blindsH: "BlindsHorizontal",\n  blindsV: "BlindsVertical",\n  boxI: "BoxIn",\n  boxO: "BoxOut",\n  dissolve: 
"Dissolve",\n  glitterD: "GlitterDown",\n  glitterR: "GlitterRight",\n  glitterRD: "GlitterRightDown",\n  
random: "Random",\n  replace: "Replace",\n  splitHI: "SplitHorizontalIn",\n  splitHO: "SplitHorizontalOut",\n 
 splitVI: "SplitVerticalIn",\n  splitVO: "SplitVerticalOut",\n  wipeD: "WipeDown",\n  wipeL: "WipeLeft",\n  
wipeR: "WipeRight",\n  wipeU: "WipeUp"\n});\nexports.Trans = Trans;\nconst ZoomType = Object.freeze({\n  
none: "NoVary",\n  fitP: "FitPage",\n  fitW: "FitWidth",\n  fitH: "FitHeight",\n  fitV: "FitVisibleWidth",\n  
pref: "Preferred",\n  refW: "ReflowWidth"\n});\ne
 xports.ZoomType = ZoomType;\nconst GlobalConstants = Object.freeze({\n  IDS_GREATER_THAN: "Invalid value: 
must be greater than or equal to % s.",\n  IDS_GT_AND_LT: "Invalid value: must be greater than or equal to % 
s " + "and less than or equal to % s.",\n  IDS_LESS_THAN: "Invalid value: must be less than or equal to % 
s.",\n  IDS_INVALID_MONTH: "** Invalid **",\n  IDS_INVALID_DATE: "Invalid date / time: please ensure that the 
date / time exists.Field",\n  IDS_INVALID_DATE2: " should match format ",\n  IDS_INVALID_VALUE: "The value 
entered does not match the format of the field",\n  IDS_AM: "am",\n  IDS_PM: "pm",\n  IDS_MONTH_INFO: 
"January[1] February[2] March[3] April[4] May[5] " + "June[6] July[7] August[8] September[9] October[10] " + 
"November[11] December[12] Sept[9] Jan[1] Feb[2] Mar[3] " + "Apr[4] Jun[6] Jul[7] Aug[8] Sep[9] Oct[10] 
Nov[11] Dec[12]",\n  IDS_STARTUP_CONSOLE_MSG: "** ^ _ ^ **",\n  RE_NUMBER_ENTRY_DOT_SEP: 
["[+-]?\\\\d*\\\\.?\\\\d*"],\n  RE_NUMBER_COMMIT_DOT_SE
 P: ["[+-]?\\\\d+(\\\\.\\\\d+)?", "[+-]?\\\\.\\\\d+", "[+-]?\\\\d+\\\\."],\n  RE_NUMBER_ENTRY_COMMA_SEP: 
["[+-]?\\\\d*,?\\\\d*"],\n  RE_NUMBER_COMMIT_COMMA_SEP: ["[+-]?\\\\d+([.,]\\\\d+)?", "[+-]?[.,]\\\\d+", 
"[+-]?\\\\d+[.,]"],\n  RE_ZIP_ENTRY: ["\\\\d{0,5}"],\n  RE_ZIP_COMMIT: ["\\\\d{5}"],\n  RE_ZIP4_ENTRY: 
["\\\\d{0,5}(\\\\.|[- ])?\\\\d{0,4}"],\n  RE_ZIP4_COMMIT: ["\\\\d{5}(\\\\.|[- ])?\\\\d{4}"],\n  
RE_PHONE_ENTRY: ["\\\\d{0,3}(\\\\.|[- ])?\\\\d{0,3}(\\\\.|[- ])?\\\\d{0,4}", "\\\\(\\\\d{0,3}", 
"\\\\(\\\\d{0,3}\\\\)(\\\\.|[- ])?\\\\d{0,3}(\\\\.|[- ])?\\\\d{0,4}", "\\\\(\\\\d{0,3}(\\\\.|[- 
])?\\\\d{0,3}(\\\\.|[- ])?\\\\d{0,4}", "\\\\d{0,3}\\\\)(\\\\.|[- ])?\\\\d{0,3}(\\\\.|[- ])?\\\\d{0,4}", 
"011(\\\\.|[- \\\\d])*"],\n  RE_PHONE_COMMIT: ["\\\\d{3}(\\\\.|[- ])?\\\\d{4}", "\\\\d{3}(\\\\.|[- 
])?\\\\d{3}(\\\\.|[- ])?\\\\d{4}", "\\\\(\\\\d{3}\\\\)(\\\\.|[- ])?\\\\d{3}(\\\\.|[- ])?\\\\d{4}", 
"011(\\\\.|[- \\\\d])*"],\n  RE_SSN_ENTRY: ["\\\\d{0,3}(\\\\.|[- ])?\\\\d{0,2}(\\\\.|[- ])?\\\\d
 {0,4}"],\n  RE_SSN_COMMIT: ["\\\\d{3}(\\\\.|[- ])?\\\\d{2}(\\\\.|[- 
])?\\\\d{4}"]\n});\nexports.GlobalConstants = GlobalConstants;\n\n/***/ }),\n/* 3 */\n/***/ 
((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, 
"__esModule", ({\n  value: true\n}));\nexports.RadioButtonField = exports.Field = exports.CheckboxField = 
void 0;\n\nvar _common = __w_pdfjs_require__(4);\n\nvar _color = __w_pdfjs_require__(5);\n\nvar _pdf_object = 
__w_pdfjs_require__(7);\n\nclass Field extends _pdf_object.PDFObject {\n  constructor(data) {\n    
super(data);\n    this.alignment = data.alignment || "left";\n    this.borderStyle = data.borderStyle || 
"";\n    this.buttonAlignX = data.buttonAlignX || 50;\n    this.buttonAlignY = data.buttonAlignY || 50;\n    
this.buttonFitBounds = data.buttonFitBounds;\n    this.buttonPosition = data.buttonPosition;\n    
this.buttonScaleHow = data.buttonScaleHow;\n    this.ButtonScaleWhen = data.buttonScaleWhen;\n    this.calcOrd
 erIndex = data.calcOrderIndex;\n    this.charLimit = data.charLimit;\n    this.comb = data.comb;\n    
this.commitOnSelChange = data.commitOnSelChange;\n    this.currentValueIndices = data.currentValueIndices;\n  
  this.defaultStyle = data.defaultStyle;\n    this.defaultValue = data.defaultValue;\n    this.doNotScroll = 
data.doNotScroll;\n    this.doNotSpellCheck = data.doNotSpellCheck;\n    this.delay = data.delay;\n    
this.display = data.display;\n    this.doc = data.doc.wrapped;\n    this.editable = data.editable;\n    
this.exportValues = data.exportValues;\n    this.fileSelect = data.fileSelect;\n    this.hidden = 
data.hidden;\n    this.highlight = data.highlight;\n    this.lineWidth = data.lineWidth;\n    this.multiline 
= data.multiline;\n    this.multipleSelection = !!data.multipleSelection;\n    this.name = data.name;\n    
this.password = data.password;\n    this.print = data.print;\n    this.radiosInUnison = 
data.radiosInUnison;\n    this.readonly = data.readonly;\n    this.
 rect = data.rect;\n    this.required = data.required;\n    this.richText = data.richText;\n    
this.richValue = data.richValue;\n    this.rotation = data.rotation;\n    this.style = data.style;\n    
this.submitName = data.submitName;\n    this.textFont = data.textFont;\n    this.textSize = data.textSize;\n  
  this.type = data.type;\n    this.userName = data.userName;\n    this._actions = (0, 
_common.createActionsMap)(data.actions);\n    this._browseForFileToSubmit = data.browseForFileToSubmit || 
null;\n    this._buttonCaption = null;\n    this._buttonIcon = null;\n    this._children = null;\n    
this._currentValueIndices = data.currentValueIndices || 0;\n    this._document = data.doc;\n    
this._fieldPath = data.fieldPath;\n    this._fillColor = data.fillColor || ["T"];\n    this._isChoice = 
Array.isArray(data.items);\n    this._items = data.items || [];\n    this._page = data.page || 0;\n    
this._strokeColor = data.strokeColor || ["G", 0];\n    this._textColor = data.textColor || 
 ["G", 0];\n    this._value = data.value || "";\n    this._kidIds = data.kidIds || null;\n    this._fieldType 
= (0, _common.getFieldType)(this._actions);\n    this._siblings = data.siblings || null;\n    
this._globalEval = data.globalEval;\n    this._appObjects = data.appObjects;\n    this.valueAsString = 
data.valueAsString || this._value;\n  }\n\n  get currentValueIndices() {\n    if (!this._isChoice) {\n      
return 0;\n    }\n\n    return this._currentValueIndices;\n  }\n\n  set currentValueIndices(indices) {\n    
if (!this._isChoice) {\n      return;\n    }\n\n    if (!Array.isArray(indices)) {\n      indices = 
[indices];\n    }\n\n    if (!indices.every(i => typeof i === "number" && Number.isInteger(i) && i >= 0 && i 
< this.numItems)) {\n      return;\n    }\n\n    indices.sort();\n\n    if (this.multipleSelection) {\n      
this._currentValueIndices = indices;\n      this._value = [];\n      indices.forEach(i => {\n        
this._value.push(this._items[i].displayValue);\n      })
 ;\n    } else {\n      if (indices.length > 0) {\n        indices = indices.splice(1, indices.length - 1);\n 
       this._currentValueIndices = indices[0];\n        this._value = 
this._items[this._currentValueIndices];\n      }\n    }\n\n    this._send({\n      id: this._id,\n      
indices\n    });\n  }\n\n  get fillColor() {\n    return this._fillColor;\n  }\n\n  set fillColor(color) {\n  
  if (_color.Color._isValidColor(color)) {\n      this._fillColor = color;\n    }\n  }\n\n  get bgColor() {\n 
   return this.fillColor;\n  }\n\n  set bgColor(color) {\n    this.fillColor = color;\n  }\n\n  get 
numItems() {\n    if (!this._isChoice) {\n      throw new Error("Not a choice widget");\n    }\n\n    return 
this._items.length;\n  }\n\n  set numItems(_) {\n    throw new Error("field.numItems is read-only");\n  }\n\n 
 get strokeColor() {\n    return this._strokeColor;\n  }\n\n  set strokeColor(color) {\n    if 
(_color.Color._isValidColor(color)) {\n      this._strokeColor = color;\n    }\n
   }\n\n  get borderColor() {\n    return this.strokeColor;\n  }\n\n  set borderColor(color) {\n    
this.strokeColor = color;\n  }\n\n  get page() {\n    return this._page;\n  }\n\n  set page(_) {\n    throw 
new Error("field.page is read-only");\n  }\n\n  get textColor() {\n    return this._textColor;\n  }\n\n  set 
textColor(color) {\n    if (_color.Color._isValidColor(color)) {\n      this._textColor = color;\n    }\n  
}\n\n  get fgColor() {\n    return this.textColor;\n  }\n\n  set fgColor(color) {\n    this.textColor = 
color;\n  }\n\n  get value() {\n    return this._value;\n  }\n\n  set value(value) {\n    if (value === "") 
{\n      this._value = "";\n    } else if (typeof value === "string") {\n      switch (this._fieldType) {\n   
     case _common.FieldType.number:\n        case _common.FieldType.percent:\n          value = 
parseFloat(value);\n\n          if (!isNaN(value)) {\n            this._value = value;\n          }\n\n       
   break;\n\n        default:\n          this.
 _value = value;\n      }\n    } else {\n      this._value = value;\n    }\n\n    if (this._isChoice) {\n     
 if (this.multipleSelection) {\n        const values = new Set(value);\n        
this._currentValueIndices.length = 0;\n\n        this._items.forEach(({\n          displayValue\n        }, 
i) => {\n          if (values.has(displayValue)) {\n            this._currentValueIndices.push(i);\n          
}\n        });\n      } else {\n        this._currentValueIndices = this._items.findIndex(({\n          
displayValue\n        }) => value === displayValue);\n      }\n    }\n  }\n\n  get valueAsString() {\n    if 
(this._valueAsString === undefined) {\n      this._valueAsString = this._value ? this._value.toString() : 
"";\n    }\n\n    return this._valueAsString;\n  }\n\n  set valueAsString(val) {\n    this._valueAsString = 
val ? val.toString() : "";\n  }\n\n  browseForFileToSubmit() {\n    if (this._browseForFileToSubmit) {\n      
this._browseForFileToSubmit();\n    }\n  }\n\n  butto
 nGetCaption(nFace = 0) {\n    if (this._buttonCaption) {\n      return this._buttonCaption[nFace];\n    
}\n\n    return "";\n  }\n\n  buttonGetIcon(nFace = 0) {\n    if (this._buttonIcon) {\n      return 
this._buttonIcon[nFace];\n    }\n\n    return null;\n  }\n\n  buttonImportIcon(cPath = null, nPave = 0) 
{}\n\n  buttonSetCaption(cCaption, nFace = 0) {\n    if (!this._buttonCaption) {\n      this._buttonCaption = 
["", "", ""];\n    }\n\n    this._buttonCaption[nFace] = cCaption;\n  }\n\n  buttonSetIcon(oIcon, nFace = 0) 
{\n    if (!this._buttonIcon) {\n      this._buttonIcon = [null, null, null];\n    }\n\n    
this._buttonIcon[nFace] = oIcon;\n  }\n\n  checkThisBox(nWidget, bCheckIt = true) {}\n\n  clearItems() {\n    
if (!this._isChoice) {\n      throw new Error("Not a choice widget");\n    }\n\n    this._items = [];\n\n    
this._send({\n      id: this._id,\n      clear: null\n    });\n  }\n\n  deleteItemAt(nIdx = null) {\n    if 
(!this._isChoice) {\n      throw new Error("Not a c
 hoice widget");\n    }\n\n    if (!this.numItems) {\n      return;\n    }\n\n    if (nIdx === null) {\n      
nIdx = Array.isArray(this._currentValueIndices) ? this._currentValueIndices[0] : this._currentValueIndices;\n 
     nIdx = nIdx || 0;\n    }\n\n    if (nIdx < 0 || nIdx >= this.numItems) {\n      nIdx = this.numItems - 
1;\n    }\n\n    this._items.splice(nIdx, 1);\n\n    if (Array.isArray(this._currentValueIndices)) {\n      
let index = this._currentValueIndices.findIndex(i => i >= nIdx);\n\n      if (index !== -1) {\n        if 
(this._currentValueIndices[index] === nIdx) {\n          this._currentValueIndices.splice(index, 1);\n        
}\n\n        for (const ii = this._currentValueIndices.length; index < ii; index++) {\n          
--this._currentValueIndices[index];\n        }\n      }\n    } else {\n      if (this._currentValueIndices 
=== nIdx) {\n        this._currentValueIndices = this.numItems > 0 ? 0 : -1;\n      } else if 
(this._currentValueIndices > nIdx) {\n        --
 this._currentValueIndices;\n      }\n    }\n\n    this._send({\n      id: this._id,\n      remove: nIdx\n    
});\n  }\n\n  getItemAt(nIdx = -1, bExportValue = false) {\n    if (!this._isChoice) {\n      throw new 
Error("Not a choice widget");\n    }\n\n    if (nIdx < 0 || nIdx >= this.numItems) {\n      nIdx = 
this.numItems - 1;\n    }\n\n    const item = this._items[nIdx];\n    return bExportValue ? item.exportValue 
: item.displayValue;\n  }\n\n  getArray() {\n    if (this._kidIds) {\n      return this._kidIds.map(id => 
this._appObjects[id].wrapped);\n    }\n\n    if (this._children === null) {\n      this._children = 
this._document.obj._getChildren(this._fieldPath);\n    }\n\n    return this._children;\n  }\n\n  getLock() 
{\n    return undefined;\n  }\n\n  isBoxChecked(nWidget) {\n    return false;\n  }\n\n  
isDefaultChecked(nWidget) {\n    return false;\n  }\n\n  insertItemAt(cName, cExport = undefined, nIdx = 0) 
{\n    if (!this._isChoice) {\n      throw new Error("Not a choice 
 widget");\n    }\n\n    if (!cName) {\n      return;\n    }\n\n    if (nIdx < 0 || nIdx > this.numItems) {\n 
     nIdx = this.numItems;\n    }\n\n    if (this._items.some(({\n      displayValue\n    }) => displayValue 
=== cName)) {\n      return;\n    }\n\n    if (cExport === undefined) {\n      cExport = cName;\n    }\n\n    
const data = {\n      displayValue: cName,\n      exportValue: cExport\n    };\n\n    
this._items.splice(nIdx, 0, data);\n\n    if (Array.isArray(this._currentValueIndices)) {\n      let index = 
this._currentValueIndices.findIndex(i => i >= nIdx);\n\n      if (index !== -1) {\n        for (const ii = 
this._currentValueIndices.length; index < ii; index++) {\n          ++this._currentValueIndices[index];\n     
   }\n      }\n    } else if (this._currentValueIndices >= nIdx) {\n      ++this._currentValueIndices;\n    
}\n\n    this._send({\n      id: this._id,\n      insert: {\n        index: nIdx,\n        ...data\n      }\n 
   });\n  }\n\n  setAction(cTrigger, cS
 cript) {\n    if (typeof cTrigger !== "string" || typeof cScript !== "string") {\n      return;\n    }\n\n   
 if (!(cTrigger in this._actions)) {\n      this._actions[cTrigger] = [];\n    }\n\n    
this._actions[cTrigger].push(cScript);\n  }\n\n  setFocus() {\n    this._send({\n      id: this._id,\n      
focus: true\n    });\n  }\n\n  setItems(oArray) {\n    if (!this._isChoice) {\n      throw new Error("Not a 
choice widget");\n    }\n\n    this._items.length = 0;\n\n    for (const element of oArray) {\n      let 
displayValue, exportValue;\n\n      if (Array.isArray(element)) {\n        displayValue = 
element[0]?.toString() || "";\n        exportValue = element[1]?.toString() || "";\n      } else {\n        
displayValue = exportValue = element?.toString() || "";\n      }\n\n      this._items.push({\n        
displayValue,\n        exportValue\n      });\n    }\n\n    this._currentValueIndices = 0;\n\n    
this._send({\n      id: this._id,\n      items: this._items\n    });\n  }\n\n  se
 tLock() {}\n\n  signatureGetModifications() {}\n\n  signatureGetSeedValue() {}\n\n  signatureInfo() {}\n\n  
signatureSetSeedValue() {}\n\n  signatureSign() {}\n\n  signatureValidate() {}\n\n  _isButton() {\n    return 
false;\n  }\n\n  _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      t
 his.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 = t
 his._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.createAction
 sMap = createActionsMap;\nexports.getFieldType = getFieldType;\nexports.FieldType = void 0;\nconst FieldType 
= {\n  none: 0,\n  number: 1,\n  percent: 2,\n  date: 3,\n  time: 4\n};\nexports.FieldType = 
FieldType;\n\nfunction createActionsMap(actions) {\n  const actionsMap = new Map();\n\n  if (actions) {\n    
for (const [eventType, actionsForEvent] of Object.entries(actions)) {\n      actionsMap.set(eventType, 
actionsForEvent);\n    }\n  }\n\n  return actionsMap;\n}\n\nfunction getFieldType(actions) {\n  let format = 
actions.get("Format");\n\n  if (!format) {\n    return FieldType.none;\n  }\n\n  format = format[0];\n  
format = format.trim();\n\n  if (format.startsWith("AFNumber_")) {\n    return FieldType.number;\n  }\n\n  if 
(format.startsWith("AFPercent_")) {\n    return FieldType.percent;\n  }\n\n  if 
(format.startsWith("AFDate_")) {\n    return FieldType.date;\n  }\n\n  if (format.startsWith("AFTime__")) {\n 
   return FieldType.time;\n  }\n\n  return FieldType.none;\n}\n\n/***/
  }),\n/* 5 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => 
{\n\n\n\nObject.defineProperty(exports, "__esModule", ({\n  value: true\n}));\nexports.Color = void 0;\n\nvar 
_scripting_utils = __w_pdfjs_require__(6);\n\nvar _pdf_object = __w_pdfjs_require__(7);\n\nclass Color 
extends _pdf_object.PDFObject {\n  constructor() {\n    super({});\n    this.transparent = ["T"];\n    
this.black = ["G", 0];\n    this.white = ["G", 1];\n    this.red = ["RGB", 1, 0, 0];\n    this.green = 
["RGB", 0, 1, 0];\n    this.blue = ["RGB", 0, 0, 1];\n    this.cyan = ["CMYK", 1, 0, 0, 0];\n    this.magenta 
= ["CMYK", 0, 1, 0, 0];\n    this.yellow = ["CMYK", 0, 0, 1, 0];\n    this.dkGray = ["G", 0.25];\n    
this.gray = ["G", 0.5];\n    this.ltGray = ["G", 0.75];\n  }\n\n  static _isValidSpace(cColorSpace) {\n    
return typeof cColorSpace === "string" && (cColorSpace === "T" || cColorSpace === "G" || cColorSpace === 
"RGB" || cColorSpace === "CMYK");\n  }\n\n  static _isValidColor(colorArr
 ay) {\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 (!Col
 or._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    re
 turn ["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 ne
 w 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.willC
 ommit) {\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.p
 rintf(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 
(nLessT
 han === 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    swi
 tch (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\n    if (psf === null) {\n      throw new Error("Invalid psf in 
AFSpecial_Format");\n    }\n\n    let formatStr = "";\n\n    switch (psf) {\n      case 0:\n        formatStr 
= "99999";\n        break;\n\n      case 1:\n        formatStr = "99999-9999";\n        break;\n\n      case 
2:\n        if (this._util.printx("9999999999", event.value).length >= 10) {\n          formatStr = "(99
 9) 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    const checkers = new Map([["9", 
char => char >= "0" && char <= "9"], ["A", char => "a" <= char && char <= "z" || "A" <= char && char <= "Z"], 
["O", char => "a" <= char && char <= "z" || "A" <= char && char <= "Z" || "0" <= char && char <= "9"], ["X", 
char => true]]);\n\n    function _checkValidity(_value, _cMask) {\n      for (let i = 0, ii = value.length; i 
< ii; i++) {\n        const mask = _cMask.charAt(i);\n\n        const char = _value.charAt(i);\n\n        
const checker = checkers.get(mask);\n\n    
     if (checker) {\n          if (!checker(char)) {\n            return false;\n          }\n        } else 
if (mask !== char) {\n          return false;\n        }\n      }\n\n      return true;\n    }\n\n    if 
(!value) {\n      return;\n    }\n\n    const err = `${_constants.GlobalConstants.IDS_INVALID_VALUE} = 
"${cMask}"`;\n\n    if (value.length > cMask.length) {\n      this._app.alert(err);\n\n      event.rc = 
false;\n      return;\n    }\n\n    if (event.willCommit) {\n      if (value.length < cMask.length) {\n       
 this._app.alert(err);\n\n        event.rc = false;\n        return;\n      }\n\n      if 
(!_checkValidity(value, cMask)) {\n        this._app.alert(err);\n\n        event.rc = false;\n        
return;\n      }\n\n      event.value += cMask.substring(value.length);\n      return;\n    }\n\n    if 
(value.length < cMask.length) {\n      cMask = cMask.substring(0, value.length);\n    }\n\n    if 
(!_checkValidity(value, cMask)) {\n      this._app.alert(err);\n\n      
 event.rc = false;\n    }\n  }\n\n  AFSpecial_Keystroke(psf) {\n    const event = globalThis.event;\n\n    if 
(!event.value) {\n      return;\n    }\n\n    psf = this.AFMakeNumber(psf);\n\n    if (psf === null) {\n      
throw new Error("Invalid psf in AFSpecial_Keystroke");\n    }\n\n    let formatStr;\n\n    switch (psf) {\n   
   case 0:\n        formatStr = "99999";\n        break;\n\n      case 1:\n        formatStr = 
"99999-9999";\n        break;\n\n      case 2:\n        const finalLen = event.value.length + 
event.change.length + event.selStart - event.selEnd;\n\n        if (finalLen >= 8) {\n          formatStr = 
"(999) 999-9999";\n        } else {\n          formatStr = "999-9999";\n        }\n\n        break;\n\n      
case 3:\n        formatStr = "999-99-9999";\n        break;\n\n      default:\n        throw new 
Error("Invalid psf in AFSpecial_Keystroke");\n    }\n\n    this.AFSpecial_KeystrokeEx(formatStr);\n  }\n\n  
AFTime_FormatEx(cFormat) {\n    this.AFDate_FormatEx(cFor
 mat);\n  }\n\n  AFTime_Format(pdf) {\n    if (pdf >= 0 && pdf < this._timeFormats.length) {\n      
this.AFDate_FormatEx(this._timeFormats[pdf]);\n    }\n  }\n\n  AFTime_KeystrokeEx(cFormat) {\n    
this.AFDate_KeystrokeEx(cFormat);\n  }\n\n  AFTime_Keystroke(pdf) {\n    if (pdf >= 0 && pdf < 
this._timeFormats.length) {\n      this.AFDate_KeystrokeEx(this._timeFormats[pdf]);\n    }\n  }\n\n  
eMailValidate(str) {\n    return this._emailRegex.test(str);\n  }\n\n}\n\nexports.AForm = AForm;\n\n/***/ 
}),\n/* 9 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => 
{\n\n\n\nObject.defineProperty(exports, "__esModule", ({\n  value: true\n}));\nexports.App = void 0;\n\nvar 
_color = __w_pdfjs_require__(5);\n\nvar _event = __w_pdfjs_require__(10);\n\nvar _fullscreen = 
__w_pdfjs_require__(11);\n\nvar _pdf_object = __w_pdfjs_require__(7);\n\nvar _thermometer = 
__w_pdfjs_require__(12);\n\nconst VIEWER_TYPE = "PDF.js";\nconst VIEWER_VARIATION = "Full";\nconst 
VIEWER_VERSION = "10.0";
 \nconst FORMS_VERSION = undefined;\n\nclass App extends _pdf_object.PDFObject {\n  constructor(data) {\n    
super(data);\n    this._constants = null;\n    this._focusRect = true;\n    this._fs = null;\n    
this._language = App._getLanguage(data.language);\n    this._openInPlace = false;\n    this._platform = 
App._getPlatform(data.platform);\n    this._runtimeHighlight = false;\n    this._runtimeHighlightColor = 
["T"];\n    this._thermometer = null;\n    this._toolbar = false;\n    this._document = data._document;\n    
this._proxyHandler = data.proxyHandler;\n    this._objects = Object.create(null);\n    this._eventDispatcher 
= new _event.EventDispatcher(this._document, data.calculationOrder, this._objects);\n    this._timeoutIds = 
new WeakMap();\n\n    if (typeof FinalizationRegistry !== "undefined") {\n      this._timeoutIdsRegistry = 
new FinalizationRegistry(this._cleanTimeout.bind(this));\n    } else {\n      this._timeoutIdsRegistry = 
null;\n    }\n\n    this._timeoutCallbackIds
  = new Map();\n    this._timeoutCallbackId = 0;\n    this._globalEval = data.globalEval;\n    
this._externalCall = data.externalCall;\n    this._document = data._document;\n  }\n\n  
_dispatchEvent(pdfEvent) {\n    this._eventDispatcher.dispatch(pdfEvent);\n  }\n\n  
_registerTimeoutCallback(cExpr) {\n    const id = this._timeoutCallbackId++;\n\n    
this._timeoutCallbackIds.set(id, cExpr);\n\n    return id;\n  }\n\n  _unregisterTimeoutCallback(id) {\n    
this._timeoutCallbackIds.delete(id);\n  }\n\n  _evalCallback({\n    callbackId,\n    interval\n  }) {\n    
const expr = this._timeoutCallbackIds.get(callbackId);\n\n    if (!interval) {\n      
this._unregisterTimeoutCallback(callbackId);\n    }\n\n    if (expr) {\n      this._globalEval(expr);\n    
}\n  }\n\n  _registerTimeout(callbackId, interval) {\n    const timeout = Object.create(null);\n    const id 
= {\n      callbackId,\n      interval\n    };\n\n    this._timeoutIds.set(timeout, id);\n\n    if 
(this._timeoutIdsRegistry) {\n  
     this._timeoutIdsRegistry.register(timeout, id);\n    }\n\n    return timeout;\n  }\n\n  
_unregisterTimeout(timeout) {\n    if (this._timeoutIdsRegistry) {\n      
this._timeoutIdsRegistry.unregister(timeout);\n    }\n\n    const data = this._timeoutIds.get(timeout);\n\n   
 if (!data) {\n      return;\n    }\n\n    this._timeoutIds.delete(timeout);\n\n    
this._cleanTimeout(data);\n  }\n\n  _cleanTimeout({\n    callbackId,\n    interval\n  }) {\n    
this._unregisterTimeoutCallback(callbackId);\n\n    if (interval) {\n      
this._externalCall("clearInterval", [callbackId]);\n    } else {\n      this._externalCall("clearTimeout", 
[callbackId]);\n    }\n  }\n\n  static _getPlatform(platform) {\n    if (typeof platform === "string") {\n    
  platform = platform.toLowerCase();\n\n      if (platform.includes("win")) {\n        return "WIN";\n      } 
else if (platform.includes("mac")) {\n        return "MAC";\n      }\n    }\n\n    return "UNIX";\n  }\n\n  
static _getLanguage(language) {
 \n    const [main, sub] = language.toLowerCase().split(/[-_]/);\n\n    switch (main) {\n      case "zh":\n   
     if (sub === "cn" || sub === "sg") {\n          return "CHS";\n        }\n\n        return "CHT";\n\n     
 case "da":\n        return "DAN";\n\n      case "de":\n        return "DEU";\n\n      case "es":\n        
return "ESP";\n\n      case "fr":\n        return "FRA";\n\n      case "it":\n        return "ITA";\n\n      
case "ko":\n        return "KOR";\n\n      case "ja":\n        return "JPN";\n\n      case "nl":\n        
return "NLD";\n\n      case "no":\n        return "NOR";\n\n      case "pt":\n        if (sub === "br") {\n   
       return "PTB";\n        }\n\n        return "ENU";\n\n      case "fi":\n        return "SUO";\n\n      
case "SV":\n        return "SVE";\n\n      default:\n        return "ENU";\n    }\n  }\n\n  get activeDocs() 
{\n    return [this._document.wrapped];\n  }\n\n  set activeDocs(_) {\n    throw new Error("app.activeDocs is 
read-only");\n  }\
 n\n  get calculate() {\n    return this._document.obj.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    retu
 rn [];\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._s
 end({\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", [cQues
 tion, 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 = globalTh
 is.event = new Event(baseEvent);\n    let savedChange;\n\n    if (source.obj._isButton()) {\n      
source.obj._id = id;\n      event.value = source.obj._getExportValue(event.value);\n\n      if (name === 
"Action") {\n        source.obj._value = event.value;\n      }\n    }\n\n    switch (name) {\n      case 
"Keystroke":\n        savedChange = {\n          value: event.value,\n          change: event.change,\n       
   selStart: event.selStart,\n          selEnd: event.selEnd\n        };\n        break;\n\n      case 
"Blur":\n      case "Focus":\n        Object.defineProperty(event, "value", {\n          configurable: 
false,\n          writable: false,\n          enumerable: true,\n          value: event.value\n        });\n  
      break;\n\n      case "Validate":\n        this.runValidation(source, event);\n        return;\n\n      
case "Action":\n        this.runActions(source, source, event, name);\n\n        if 
(this._document.obj.calculate) {\n          this.runCalculate(source,
  event);\n        }\n\n        return;\n    }\n\n    this.runActions(source, source, event, name);\n\n    if 
(name === "Keystroke") {\n      if (event.rc) {\n        if (event.willCommit) {\n          
this.runValidation(source, event);\n        } else if (event.change !== savedChange.change || event.selStart 
!== savedChange.selStart || event.selEnd !== savedChange.selEnd) {\n          source.wrapped.value = 
this.mergeChange(event);\n        }\n      } else if (!event.willCommit) {\n        source.obj._send({\n      
    id: source.obj._id,\n          value: savedChange.value,\n          selRange: [savedChange.selStart, 
savedChange.selEnd]\n        });\n      }\n    }\n  }\n\n  runValidation(source, event) {\n    const hasRan = 
this.runActions(source, source, event, "Validate");\n\n    if (event.rc) {\n      if (hasRan) {\n        
source.wrapped.value = event.value;\n        source.wrapped.valueAsString = event.value;\n      } else {\n    
    source.obj.value = event.value;\n        s
 ource.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 (!(t
 argetId 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}));\nex
 ports.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: t
 rue\n}));\nexports.Console = void 0;\n\nvar _pdf_object = __w_pdfjs_require__(7);\n\nclass Console extends 
_pdf_object.PDFObject {\n  clear() {\n    this._send({\n      id: "clear"\n    });\n  }\n\n  hide() {}\n\n  
println(msg) {\n    if (typeof msg === "string") {\n      this._send({\n        command: "println",\n        
value: "PDF.js Console:: " + msg\n      });\n    }\n  }\n\n  show() {}\n\n}\n\nexports.Console = 
Console;\n\n/***/ }),\n/* 14 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => 
{\n\n\n\nObject.defineProperty(exports, "__esModule", ({\n  value: true\n}));\nexports.Doc = void 0;\n\nvar 
_common = __w_pdfjs_require__(4);\n\nvar _pdf_object = __w_pdfjs_require__(7);\n\nvar _print_params = 
__w_pdfjs_require__(15);\n\nvar _constants = __w_pdfjs_require__(2);\n\nclass InfoProxyHandler {\n  static 
get(obj, prop) {\n    return obj[prop.toLowerCase()];\n  }\n\n  static set(obj, prop, value) {\n    throw new 
Error(`doc.info.${prop} is read-only`);\n  }\n\n}\
 n\nclass Doc extends _pdf_object.PDFObject {\n  constructor(data) {\n    super(data);\n    this._expandos = 
globalThis;\n    this._baseURL = data.baseURL || "";\n    this._calculate = true;\n    this._delay = false;\n 
   this._dirty = false;\n    this._disclosed = false;\n    this._media = undefined;\n    this._metadata = 
data.metadata || "";\n    this._noautocomplete = undefined;\n    this._nocache = undefined;\n    
this._spellDictionaryOrder = [];\n    this._spellLanguageOrder = [];\n    this._printParams = null;\n    
this._fields = new Map();\n    this._fieldNames = [];\n    this._event = null;\n    this._author = 
data.Author || "";\n    this._creator = data.Creator || "";\n    this._creationDate = 
this._getDate(data.CreationDate) || null;\n    this._docID = data.docID || ["", ""];\n    
this._documentFileName = data.filename || "";\n    this._filesize = data.filesize || 0;\n    this._keywords = 
data.Keywords || "";\n    this._layout = data.layout || "";\n    this._modDate = this.
 _getDate(data.ModDate) || null;\n    this._numFields = 0;\n    this._numPages = data.numPages || 1;\n    
this._pageNum = data.pageNum || 0;\n    this._producer = data.Producer || "";\n    this._subject = 
data.Subject || "";\n    this._title = data.Title || "";\n    this._URL = data.URL || "";\n    this._info = 
new Proxy({\n      title: this._title,\n      author: this._author,\n      authors: data.authors || 
[this._author],\n      subject: this._subject,\n      keywords: this._keywords,\n      creator: 
this._creator,\n      producer: this._producer,\n      creationdate: this._creationDate,\n      moddate: 
this._modDate,\n      trapped: data.Trapped || "Unknown"\n    }, InfoProxyHandler);\n    this._zoomType = 
_constants.ZoomType.none;\n    this._zoom = data.zoom || 100;\n    this._actions = (0, 
_common.createActionsMap)(data.actions);\n    this._globalEval = data.globalEval;\n    this._pageActions = 
new Map();\n  }\n\n  _dispatchDocEvent(name) {\n    if (name === "Open") {\n      co
 nst 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 r
 ead-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 null;\n  }\n\n  set 
securityHandler(_) {\n    throw new Error("doc.securityHandler is read-only");\n  }\n\n  get selectedAnnots() 
{\n    return [];\n  }\n\n  set
  selectedAnnots(_) {\n    throw new Error("doc.selectedAnnots is read-only");\n  }\n\n  get sounds() {\n    
return [];\n  }\n\n  set sounds(_) {\n    throw new Error("doc.sounds is read-only");\n  }\n\n  get 
spellDictionaryOrder() {\n    return this._spellDictionaryOrder;\n  }\n\n  set 
spellDictionaryOrder(spellDictionaryOrder) {\n    this._spellDictionaryOrder = spellDictionaryOrder;\n  }\n\n 
 get spellLanguageOrder() {\n    return this._spellLanguageOrder;\n  }\n\n  set 
spellLanguageOrder(spellLanguageOrder) {\n    this._spellLanguageOrder = spellLanguageOrder;\n  }\n\n  get 
subject() {\n    return this._subject;\n  }\n\n  set subject(_) {\n    throw new Error("doc.subject is 
read-only");\n  }\n\n  get templates() {\n    return [];\n  }\n\n  set templates(_) {\n    throw new 
Error("doc.templates is read-only");\n  }\n\n  get title() {\n    return this._title;\n  }\n\n  set title(_) 
{\n    throw new Error("doc.title is read-only");\n  }\n\n  get URL() {\n    return this._URL;\n  }\
 n\n  set URL(_) {\n    throw new Error("doc.URL is read-only");\n  }\n\n  get viewState() {\n    return 
undefined;\n  }\n\n  set viewState(_) {\n    throw new Error("doc.viewState is read-only");\n  }\n\n  get 
xfa() {\n    return this._xfa;\n  }\n\n  set xfa(_) {\n    throw new Error("doc.xfa is read-only");\n  }\n\n  
get XFAForeground() {\n    return false;\n  }\n\n  set XFAForeground(_) {\n    throw new 
Error("doc.XFAForeground is read-only");\n  }\n\n  get zoomType() {\n    return this._zoomType;\n  }\n\n  set 
zoomType(type) {\n    if (typeof type !== "string") {\n      return;\n    }\n\n    switch (type) {\n      
case _constants.ZoomType.none:\n        this._send({\n          command: "zoom",\n          value: 1\n        
});\n\n        break;\n\n      case _constants.ZoomType.fitP:\n        this._send({\n          command: 
"zoom",\n          value: "page-fit"\n        });\n\n        break;\n\n      case _constants.ZoomType.fitW:\n 
       this._send({\n          command: "zoom",\
 n          value: "page-width"\n        });\n\n        break;\n\n      case _constants.ZoomType.fitH:\n      
  this._send({\n          command: "zoom",\n          value: "page-height"\n        });\n\n        break;\n\n 
     case _constants.ZoomType.fitV:\n        this._send({\n          command: "zoom",\n          value: 
"auto"\n        });\n\n        break;\n\n      case _constants.ZoomType.pref:\n      case 
_constants.ZoomType.refW:\n        break;\n\n      default:\n        return;\n    }\n\n    this._zoomType = 
type;\n  }\n\n  get zoom() {\n    return this._zoom;\n  }\n\n  set zoom(value) {\n    if (typeof value !== 
"number" || value < 8.33 || value > 6400) {\n      return;\n    }\n\n    this._send({\n      command: 
"zoom",\n      value: value / 100\n    });\n  }\n\n  addAnnot() {}\n\n  addField() {}\n\n  addIcon() {}\n\n  
addLink() {}\n\n  addRecipientListCryptFilter() {}\n\n  addRequirement() {}\n\n  addScript() {}\n\n  
addThumbnails() {}\n\n  addWatermarkFromFile() {}\n\n  ad
 dWatermarkFromText() {}\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  getPrintP
 arams() {\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.bAnnotati
 ons;\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 (con
 st 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.f
 reeze({\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 << 1
 2,\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.npUp
 PageOrder = 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 fromE
 xpandos = 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        retu
 rn (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 = handl
 ers[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.11.338\';\nconst pdfjsBuild = 
\'dedff3c98\';\n})();\n\n/******/ \treturn __webpack_exports__;\n/******/ })()\n;\n});'];
     code.push("delete dump;");
     let success = false;
     let buf = 0;
diff --git a/third-party/pdfjs/build/pdf.worker.js b/third-party/pdfjs/build/pdf.worker.js
index f8e32abd7..f0f620cc9 100644
--- a/third-party/pdfjs/build/pdf.worker.js
+++ b/third-party/pdfjs/build/pdf.worker.js
@@ -125,7 +125,7 @@ class WorkerMessageHandler {
     const WorkerTasks = [];
     const verbosity = (0, _util.getVerbosityLevel)();
     const apiVersion = docParams.apiVersion;
-    const workerVersion = '2.10.377';
+    const workerVersion = '2.11.338';
 
     if (apiVersion !== workerVersion) {
       throw new Error(`The API version "${apiVersion}" does not match ` + `the Worker version 
"${workerVersion}".`);
@@ -495,7 +495,7 @@ class WorkerMessageHandler {
       filename
     }) {
       pdfManager.requestLoadedStream();
-      const promises = [pdfManager.onLoadedStream(), pdfManager.ensureCatalog("acroForm"), 
pdfManager.ensureDoc("xref"), pdfManager.ensureDoc("startXRef")];
+      const promises = [pdfManager.onLoadedStream(), pdfManager.ensureCatalog("acroForm"), 
pdfManager.ensureCatalog("acroFormRef"), pdfManager.ensureDoc("xref"), pdfManager.ensureDoc("startXRef")];
 
       if (isPureXfa) {
         promises.push(pdfManager.serializeXfaData(annotationStorage));
@@ -510,7 +510,7 @@ class WorkerMessageHandler {
         }
       }
 
-      return Promise.all(promises).then(function ([stream, acroForm, xref, startXRef, ...refs]) {
+      return Promise.all(promises).then(function ([stream, acroForm, acroFormRef, xref, startXRef, ...refs]) 
{
         let newRefs = [];
         let xfaData = null;
 
@@ -530,16 +530,24 @@ class WorkerMessageHandler {
           }
         }
 
-        const xfa = acroForm instanceof _primitives.Dict && acroForm.get("XFA") || [];
-        let xfaDatasets = null;
+        const xfa = acroForm instanceof _primitives.Dict && acroForm.get("XFA") || null;
+        let xfaDatasetsRef = null;
+        let hasXfaDatasetsEntry = false;
 
         if (Array.isArray(xfa)) {
           for (let i = 0, ii = xfa.length; i < ii; i += 2) {
             if (xfa[i] === "datasets") {
-              xfaDatasets = xfa[i + 1];
+              xfaDatasetsRef = xfa[i + 1];
+              acroFormRef = null;
+              hasXfaDatasetsEntry = true;
             }
           }
-        } else {
+
+          if (xfaDatasetsRef === null) {
+            xfaDatasetsRef = xref.getNewRef();
+          }
+        } else if (xfa) {
+          acroFormRef = null;
           (0, _util.warn)("Unsupported XFA type.");
         }
 
@@ -575,7 +583,11 @@ class WorkerMessageHandler {
           xrefInfo: newXrefInfo,
           newRefs,
           xref,
-          datasetsRef: xfaDatasets,
+          hasXfa: !!xfa,
+          xfaDatasetsRef,
+          hasXfaDatasetsEntry,
+          acroFormRef,
+          acroForm,
           xfaData
         });
       });
@@ -591,7 +603,7 @@ class WorkerMessageHandler {
           sink,
           task,
           intent: data.intent,
-          renderInteractiveForms: data.renderInteractiveForms,
+          cacheKey: data.cacheKey,
           annotationStorage: data.annotationStorage
         }).then(function (operatorListInfo) {
           finishWorkerTask(task);
@@ -617,11 +629,6 @@ class WorkerMessageHandler {
     });
     handler.on("GetTextContent", function wphExtractText(data, sink) {
       const pageIndex = data.pageIndex;
-
-      sink.onPull = function (desiredSize) {};
-
-      sink.onCancel = function (reason) {};
-
       pdfManager.getPage(pageIndex).then(function (page) {
         const task = new WorkerTask("GetTextContent: page " + pageIndex);
         startWorkerTask(task);
@@ -755,7 +762,7 @@ exports.stringToUTF8String = stringToUTF8String;
 exports.unreachable = unreachable;
 exports.utf8StringToString = utf8StringToString;
 exports.warn = warn;
-exports.VerbosityLevel = exports.Util = exports.UNSUPPORTED_FEATURES = exports.UnknownErrorException = 
exports.UnexpectedResponseException = exports.TextRenderingMode = exports.StreamType = 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.AnnotationMarkedState = exports.AnnotationFlag = exports.AnnotationFieldFlag = 
exports.AnnotationBorderStyleType = exports.AnnotationActionEventType = exports.AbortException = void 0;
+exports.VerbosityLevel = exports.Util = exports.UNSUPPORTED_FEATURES = exports.UnknownErrorException = 
exports.UnexpectedResponseException = 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.AbortExce
 ption = void 0;
 
 __w_pdfjs_require__(3);
 
@@ -763,6 +770,23 @@ const IDENTITY_MATRIX = [1, 0, 0, 1, 0, 0];
 exports.IDENTITY_MATRIX = IDENTITY_MATRIX;
 const FONT_IDENTITY_MATRIX = [0.001, 0, 0, 0.001, 0, 0];
 exports.FONT_IDENTITY_MATRIX = FONT_IDENTITY_MATRIX;
+const RenderingIntentFlag = {
+  ANY: 0x01,
+  DISPLAY: 0x02,
+  PRINT: 0x04,
+  ANNOTATIONS_FORMS: 0x10,
+  ANNOTATIONS_STORAGE: 0x20,
+  ANNOTATIONS_DISABLE: 0x40,
+  OPLIST: 0x100
+};
+exports.RenderingIntentFlag = RenderingIntentFlag;
+const AnnotationMode = {
+  DISABLE: 0,
+  ENABLE: 1,
+  ENABLE_FORMS: 2,
+  ENABLE_STORAGE: 3
+};
+exports.AnnotationMode = AnnotationMode;
 const PermissionFlag = {
   PRINT: 0x04,
   MODIFY_CONTENTS: 0x08,
@@ -1073,7 +1097,8 @@ const UNSUPPORTED_FEATURES = {
   errorFontLoadNative: "errorFontLoadNative",
   errorFontBuildPath: "errorFontBuildPath",
   errorFontGetPath: "errorFontGetPath",
-  errorMarkedContent: "errorMarkedContent"
+  errorMarkedContent: "errorMarkedContent",
+  errorContentSubStream: "errorContentSubStream"
 };
 exports.UNSUPPORTED_FEATURES = UNSUPPORTED_FEATURES;
 const PasswordResponses = {
@@ -1150,12 +1175,28 @@ function _isValidProtocol(url) {
   }
 }
 
-function createValidAbsoluteUrl(url, baseUrl) {
+function createValidAbsoluteUrl(url, baseUrl = null, options = null) {
   if (!url) {
     return null;
   }
 
   try {
+    if (options && typeof url === "string") {
+      if (options.addDefaultProtocol && url.startsWith("www.")) {
+        const dots = url.match(/\./g);
+
+        if (dots && dots.length >= 2) {
+          url = `http://${url}`;
+        }
+      }
+
+      if (options.tryConvertEncoding) {
+        try {
+          url = stringToUTF8String(url);
+        } catch (ex) {}
+      }
+    }
+
     const absoluteUrl = baseUrl ? new URL(url, baseUrl) : new URL(url);
 
     if (_isValidProtocol(absoluteUrl)) {
@@ -1177,13 +1218,13 @@ function shadow(obj, prop, value) {
 }
 
 const BaseException = function BaseExceptionClosure() {
-  function BaseException(message) {
+  function BaseException(message, name) {
     if (this.constructor === BaseException) {
       unreachable("Cannot initialize BaseException.");
     }
 
     this.message = message;
-    this.name = this.constructor.name;
+    this.name = name;
   }
 
   BaseException.prototype = new Error();
@@ -1195,7 +1236,7 @@ exports.BaseException = BaseException;
 
 class PasswordException extends BaseException {
   constructor(msg, code) {
-    super(msg);
+    super(msg, "PasswordException");
     this.code = code;
   }
 
@@ -1205,7 +1246,7 @@ exports.PasswordException = PasswordException;
 
 class UnknownErrorException extends BaseException {
   constructor(msg, details) {
-    super(msg);
+    super(msg, "UnknownErrorException");
     this.details = details;
   }
 
@@ -1213,17 +1254,27 @@ class UnknownErrorException extends BaseException {
 
 exports.UnknownErrorException = UnknownErrorException;
 
-class InvalidPDFException extends BaseException {}
+class InvalidPDFException extends BaseException {
+  constructor(msg) {
+    super(msg, "InvalidPDFException");
+  }
+
+}
 
 exports.InvalidPDFException = InvalidPDFException;
 
-class MissingPDFException extends BaseException {}
+class MissingPDFException extends BaseException {
+  constructor(msg) {
+    super(msg, "MissingPDFException");
+  }
+
+}
 
 exports.MissingPDFException = MissingPDFException;
 
 class UnexpectedResponseException extends BaseException {
   constructor(msg, status) {
-    super(msg);
+    super(msg, "UnexpectedResponseException");
     this.status = status;
   }
 
@@ -1231,11 +1282,21 @@ class UnexpectedResponseException extends BaseException {
 
 exports.UnexpectedResponseException = UnexpectedResponseException;
 
-class FormatError extends BaseException {}
+class FormatError extends BaseException {
+  constructor(msg) {
+    super(msg, "FormatError");
+  }
+
+}
 
 exports.FormatError = FormatError;
 
-class AbortException extends BaseException {}
+class AbortException extends BaseException {
+  constructor(msg) {
+    super(msg, "AbortException");
+  }
+
+}
 
 exports.AbortException = AbortException;
 const NullCharactersRegExp = /\x00/g;
@@ -1651,7 +1712,6 @@ Object.defineProperty(exports, "__esModule", ({
 exports.clearPrimitiveCaches = clearPrimitiveCaches;
 exports.isCmd = isCmd;
 exports.isDict = isDict;
-exports.isEOF = isEOF;
 exports.isName = isName;
 exports.isRef = isRef;
 exports.isRefsEqual = isRefsEqual;
@@ -1662,7 +1722,7 @@ var _util = __w_pdfjs_require__(2);
 
 var _base_stream = __w_pdfjs_require__(6);
 
-const EOF = {};
+const EOF = Symbol("EOF");
 exports.EOF = EOF;
 
 const Name = function NameClosure() {
@@ -1853,7 +1913,7 @@ class Dict {
         if (property === undefined) {
           property = [];
           properties.set(key, property);
-        } else if (!mergeSubDicts) {
+        } else if (!mergeSubDicts || !(value instanceof Dict)) {
           continue;
         }
 
@@ -1870,10 +1930,6 @@ class Dict {
       const subDict = new Dict(xref);
 
       for (const dict of values) {
-        if (!(dict instanceof Dict)) {
-          continue;
-        }
-
         for (const [key, value] of Object.entries(dict._map)) {
           if (subDict._map[key] === undefined) {
             subDict._map[key] = value;
@@ -1998,10 +2054,6 @@ class RefSetCache {
 
 exports.RefSetCache = RefSetCache;
 
-function isEOF(v) {
-  return v === EOF;
-}
-
 function isName(v, name) {
   return v instanceof Name && (name === undefined || v.name === name);
 }
@@ -2647,7 +2699,7 @@ class ChunkedStreamManager {
 
     let chunks = [],
         loaded = 0;
-    const promise = new Promise((resolve, reject) => {
+    return new Promise((resolve, reject) => {
       const readChunk = chunk => {
         try {
           if (!chunk.done) {
@@ -2674,8 +2726,7 @@ class ChunkedStreamManager {
       };
 
       rangeReader.read().then(readChunk, reject);
-    });
-    promise.then(data => {
+    }).then(data => {
       if (this.aborted) {
         return;
       }
@@ -2737,7 +2788,7 @@ class ChunkedStreamManager {
       for (const groupedChunk of groupedChunksToRequest) {
         const begin = groupedChunk.beginChunk * this.chunkSize;
         const end = Math.min(groupedChunk.endChunk * this.chunkSize, this.length);
-        this.sendRequest(begin, end);
+        this.sendRequest(begin, end).catch(capability.reject);
       }
     }
 
@@ -2953,6 +3004,7 @@ exports.parseXFAPath = parseXFAPath;
 exports.readInt8 = readInt8;
 exports.readUint16 = readUint16;
 exports.readUint32 = readUint32;
+exports.recoverJsURL = recoverJsURL;
 exports.toRomanNumerals = toRomanNumerals;
 exports.validateCSSFont = validateCSSFont;
 exports.XRefParseException = exports.XRefEntryException = exports.ParserEOFException = 
exports.MissingDataException = void 0;
@@ -2995,7 +3047,7 @@ function getArrayLookupTableFactory(initializer) {
 
 class MissingDataException extends _util.BaseException {
   constructor(begin, end) {
-    super(`Missing data [${begin}, ${end})`);
+    super(`Missing data [${begin}, ${end})`, "MissingDataException");
     this.begin = begin;
     this.end = end;
   }
@@ -3004,15 +3056,30 @@ class MissingDataException extends _util.BaseException {
 
 exports.MissingDataException = MissingDataException;
 
-class ParserEOFException extends _util.BaseException {}
+class ParserEOFException extends _util.BaseException {
+  constructor(msg) {
+    super(msg, "ParserEOFException");
+  }
+
+}
 
 exports.ParserEOFException = ParserEOFException;
 
-class XRefEntryException extends _util.BaseException {}
+class XRefEntryException extends _util.BaseException {
+  constructor(msg) {
+    super(msg, "XRefEntryException");
+  }
+
+}
 
 exports.XRefEntryException = XRefEntryException;
 
-class XRefParseException extends _util.BaseException {}
+class XRefParseException extends _util.BaseException {
+  constructor(msg) {
+    super(msg, "XRefParseException");
+  }
+
+}
 
 exports.XRefParseException = XRefParseException;
 
@@ -3098,7 +3165,7 @@ function isWhiteSpace(ch) {
 }
 
 function parseXFAPath(path) {
-  const positionPattern = /(.+)\[([0-9]+)\]$/;
+  const positionPattern = /(.+)\[(\d+)\]$/;
   return path.split(".").map(component => {
     const m = component.match(positionPattern);
 
@@ -3316,7 +3383,7 @@ function validateCSSFont(cssFontInfo) {
     }
   } else {
     for (const ident of fontFamily.split(/[ \t]+/)) {
-      if (/^([0-9]|(-([0-9]|-)))/.test(ident) || !/^[a-zA-Z0-9\-_\\]+$/.test(ident)) {
+      if (/^(\d|(-(\d|-)))/.test(ident) || !/^[\w-\\]+$/.test(ident)) {
         (0, _util.warn)(`XFA - FontFamily contains some invalid <custom-ident>: ${fontFamily}.`);
         return false;
       }
@@ -3330,6 +3397,28 @@ function validateCSSFont(cssFontInfo) {
   return true;
 }
 
+function recoverJsURL(str) {
+  const URL_OPEN_METHODS = ["app.launchURL", "window.open", "xfa.host.gotoURL"];
+  const regex = new RegExp("^\\s*(" + URL_OPEN_METHODS.join("|").split(".").join("\\.") + 
")\\((?:'|\")([^'\"]*)(?:'|\")(?:,\\s*(\\w+)\\)|\\))", "i");
+  const jsUrl = regex.exec(str);
+
+  if (jsUrl && jsUrl[2]) {
+    const url = jsUrl[2];
+    let newWindow = false;
+
+    if (jsUrl[3] === "true" && jsUrl[1] === "app.launchURL") {
+      newWindow = true;
+    }
+
+    return {
+      url,
+      newWindow
+    };
+  }
+
+  return null;
+}
+
 /***/ }),
 /* 10 */
 /***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
@@ -3455,9 +3544,11 @@ var _primitives = __w_pdfjs_require__(5);
 
 var _core_utils = __w_pdfjs_require__(9);
 
+var _xfa_fonts = __w_pdfjs_require__(12);
+
 var _stream = __w_pdfjs_require__(10);
 
-var _annotation = __w_pdfjs_require__(12);
+var _annotation = __w_pdfjs_require__(22);
 
 var _base_stream = __w_pdfjs_require__(6);
 
@@ -3465,17 +3556,15 @@ var _crypto = __w_pdfjs_require__(72);
 
 var _catalog = __w_pdfjs_require__(64);
 
-var _xfa_fonts = __w_pdfjs_require__(55);
-
-var _parser = __w_pdfjs_require__(17);
+var _parser = __w_pdfjs_require__(27);
 
 var _object_loader = __w_pdfjs_require__(70);
 
 var _operator_list = __w_pdfjs_require__(62);
 
-var _evaluator = __w_pdfjs_require__(15);
+var _evaluator = __w_pdfjs_require__(25);
 
-var _decode_stream = __w_pdfjs_require__(19);
+var _decode_stream = __w_pdfjs_require__(29);
 
 var _struct_tree = __w_pdfjs_require__(69);
 
@@ -3631,14 +3720,26 @@ class Page {
     return (0, _util.shadow)(this, "rotate", rotate);
   }
 
-  getContentStream() {
+  _onSubStreamError(handler, reason, objId) {
+    if (this.evaluatorOptions.ignoreErrors) {
+      handler.send("UnsupportedFeature", {
+        featureId: _util.UNSUPPORTED_FEATURES.errorContentSubStream
+      });
+      (0, _util.warn)(`getContentStream - ignoring sub-stream (${objId}): "${reason}".`);
+      return;
+    }
+
+    throw reason;
+  }
+
+  getContentStream(handler) {
     return this.pdfManager.ensure(this, "content").then(content => {
       if (content instanceof _base_stream.BaseStream) {
         return content;
       }
 
       if (Array.isArray(content)) {
-        return new _decode_stream.StreamsSequenceStream(content);
+        return new _decode_stream.StreamsSequenceStream(content, this._onSubStreamError.bind(this, handler));
       }
 
       return new _stream.NullStream();
@@ -3701,10 +3802,10 @@ class Page {
     sink,
     task,
     intent,
-    renderInteractiveForms,
-    annotationStorage
+    cacheKey,
+    annotationStorage = null
   }) {
-    const contentStreamPromise = this.getContentStream();
+    const contentStreamPromise = this.getContentStream(handler);
     const resourcesPromise = this.loadResources(["ColorSpace", "ExtGState", "Font", "Pattern", "Properties", 
"Shading", "XObject"]);
     const partialEvaluator = new _evaluator.PartialEvaluator({
       xref: this.xref,
@@ -3723,7 +3824,7 @@ class Page {
       handler.send("StartRenderPage", {
         transparency: partialEvaluator.hasBlendModes(this.resources, this.nonBlendModesSet),
         pageIndex: this.pageIndex,
-        intent
+        cacheKey
       });
       return partialEvaluator.getOperatorList({
         stream: contentStream,
@@ -3735,19 +3836,22 @@ class Page {
       });
     });
     return Promise.all([pageListPromise, this._parsedAnnotations]).then(function ([pageOpList, annotations]) 
{
-      if (annotations.length === 0) {
+      if (annotations.length === 0 || intent & _util.RenderingIntentFlag.ANNOTATIONS_DISABLE) {
         pageOpList.flush(true);
         return {
           length: pageOpList.totalLength
         };
       }
 
-      const annotationIntent = intent.startsWith("oplist-") ? intent.split("-")[1] : intent;
+      const renderForms = !!(intent & _util.RenderingIntentFlag.ANNOTATIONS_FORMS),
+            intentAny = !!(intent & _util.RenderingIntentFlag.ANY),
+            intentDisplay = !!(intent & _util.RenderingIntentFlag.DISPLAY),
+            intentPrint = !!(intent & _util.RenderingIntentFlag.PRINT);
       const opListPromises = [];
 
       for (const annotation of annotations) {
-        if (annotationIntent === "display" && annotation.mustBeViewed(annotationStorage) || annotationIntent 
=== "print" && annotation.mustBePrinted(annotationStorage)) {
-          opListPromises.push(annotation.getOperatorList(partialEvaluator, task, renderInteractiveForms, 
annotationStorage).catch(function (reason) {
+        if (intentAny || intentDisplay && annotation.mustBeViewed(annotationStorage) || intentPrint && 
annotation.mustBePrinted(annotationStorage)) {
+          opListPromises.push(annotation.getOperatorList(partialEvaluator, task, renderForms, 
annotationStorage).catch(function (reason) {
             (0, _util.warn)("getOperatorList - ignoring annotation data during " + `"${task.name}" task: 
"${reason}".`);
             return null;
           }));
@@ -3778,7 +3882,7 @@ class Page {
     sink,
     combineTextItems
   }) {
-    const contentStreamPromise = this.getContentStream();
+    const contentStreamPromise = this.getContentStream(handler);
     const resourcesPromise = this.loadResources(["ExtGState", "Font", "Properties", "XObject"]);
     const dataPromises = Promise.all([contentStreamPromise, resourcesPromise]);
     return dataPromises.then(([contentStream]) => {
@@ -3826,9 +3930,17 @@ class Page {
     return this._parsedAnnotations.then(function (annotations) {
       const annotationsData = [];
 
-      for (let i = 0, ii = annotations.length; i < ii; i++) {
-        if (!intent || intent === "display" && annotations[i].viewable || intent === "print" && 
annotations[i].printable) {
-          annotationsData.push(annotations[i].data);
+      if (annotations.length === 0) {
+        return annotationsData;
+      }
+
+      const intentAny = !!(intent & _util.RenderingIntentFlag.ANY),
+            intentDisplay = !!(intent & _util.RenderingIntentFlag.DISPLAY),
+            intentPrint = !!(intent & _util.RenderingIntentFlag.PRINT);
+
+      for (const annotation of annotations) {
+        if (intentAny || intentDisplay && annotation.viewable || intentPrint && annotation.printable) {
+          annotationsData.push(annotation.data);
         }
       }
 
@@ -3873,7 +3985,7 @@ const STARTXREF_SIGNATURE = new Uint8Array([0x73, 0x74, 0x61, 0x72, 0x74, 0x78,
 const ENDOBJ_SIGNATURE = new Uint8Array([0x65, 0x6e, 0x64, 0x6f, 0x62, 0x6a]);
 const FINGERPRINT_FIRST_BYTES = 1024;
 const EMPTY_FINGERPRINT = "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00";
-const PDF_HEADER_VERSION_REGEXP = /^[1-9]\.[0-9]$/;
+const PDF_HEADER_VERSION_REGEXP = /^[1-9]\.\d$/;
 
 function find(stream, signature, limit = 1024, backwards = false) {
   const signatureLength = signature.length;
@@ -4182,7 +4294,7 @@ class PDFDocument {
   }
 
   get xfaFactory() {
-    if (this.pdfManager.enableXfa && this.formInfo.hasXfa && !this.formInfo.hasAcroForm) {
+    if (this.pdfManager.enableXfa && this.catalog.needsRendering && this.formInfo.hasXfa && 
!this.formInfo.hasAcroForm) {
       const data = this.xfaData;
       return (0, _util.shadow)(this, "xfaFactory", data ? new _factory.XFAFactory(data) : null);
     }
@@ -4290,7 +4402,7 @@ class PDFDocument {
       }
 
       let fontFamily = descriptor.get("FontFamily");
-      fontFamily = fontFamily.replace(/[ ]+([0-9])/g, "$1");
+      fontFamily = fontFamily.replace(/[ ]+(\d)/g, "$1");
       const fontWeight = descriptor.get("FontWeight");
       const italicAngle = -descriptor.get("ItalicAngle");
       const cssFontInfo = {
@@ -4322,7 +4434,7 @@ class PDFDocument {
     const reallyMissingFonts = new Set();
 
     for (const missing of missingFonts) {
-      if (!(0, _xfa_fonts.getXfaFontWidths)(`${missing}-Regular`)) {
+      if (!(0, _xfa_fonts.getXfaFontName)(`${missing}-Regular`)) {
         reallyMissingFonts.add(missing);
       }
     }
@@ -4354,15 +4466,7 @@ class PDFDocument {
         italicAngle: 12
       }]) {
         const name = `${missing}-${fontInfo.name}`;
-        const widths = (0, _xfa_fonts.getXfaFontWidths)(name);
-        const dict = new _primitives.Dict(null);
-        dict.set("BaseFont", _primitives.Name.get(name));
-        dict.set("Type", _primitives.Name.get("Font"));
-        dict.set("Subtype", _primitives.Name.get("TrueType"));
-        dict.set("Encoding", _primitives.Name.get("WinAnsiEncoding"));
-        const descriptor = new _primitives.Dict(null);
-        descriptor.set("Widths", widths);
-        dict.set("FontDescriptor", descriptor);
+        const dict = (0, _xfa_fonts.getXfaFontDict)(name);
         promises.push(partialEvaluator.handleSetFont(resources, [_primitives.Name.get(name), 1], null, 
operatorList, task, initialState, dict, {
           fontFamily: missing,
           fontWeight: fontInfo.fontWeight,
@@ -4728,23257 +4832,648 @@ exports.PDFDocument = PDFDocument;
 Object.defineProperty(exports, "__esModule", ({
   value: true
 }));
-exports.getQuadPoints = getQuadPoints;
-exports.MarkupAnnotation = exports.AnnotationFactory = exports.AnnotationBorderStyle = exports.Annotation = 
void 0;
+exports.getXfaFontDict = getXfaFontDict;
+exports.getXfaFontName = getXfaFontName;
 
-var _util = __w_pdfjs_require__(2);
+var _calibri_factors = __w_pdfjs_require__(13);
 
-var _core_utils = __w_pdfjs_require__(9);
+var _primitives = __w_pdfjs_require__(5);
 
-var _default_appearance = __w_pdfjs_require__(13);
+var _helvetica_factors = __w_pdfjs_require__(14);
 
-var _primitives = __w_pdfjs_require__(5);
+var _liberationsans_widths = __w_pdfjs_require__(15);
 
-var _catalog = __w_pdfjs_require__(64);
+var _myriadpro_factors = __w_pdfjs_require__(16);
 
-var _colorspace = __w_pdfjs_require__(14);
+var _segoeui_factors = __w_pdfjs_require__(17);
 
-var _file_spec = __w_pdfjs_require__(66);
+var _core_utils = __w_pdfjs_require__(9);
 
-var _object_loader = __w_pdfjs_require__(70);
+var _fonts_utils = __w_pdfjs_require__(18);
 
-var _operator_list = __w_pdfjs_require__(62);
+const getXFAFontMap = (0, _core_utils.getLookupTableFactory)(function (t) {
+  t["MyriadPro-Regular"] = t["PdfJS-Fallback-Regular"] = {
+    name: "LiberationSans-Regular",
+    factors: _myriadpro_factors.MyriadProRegularFactors,
+    baseWidths: _liberationsans_widths.LiberationSansRegularWidths,
+    baseMapping: _liberationsans_widths.LiberationSansRegularMapping,
+    metrics: _myriadpro_factors.MyriadProRegularMetrics
+  };
+  t["MyriadPro-Bold"] = t["PdfJS-Fallback-Bold"] = {
+    name: "LiberationSans-Bold",
+    factors: _myriadpro_factors.MyriadProBoldFactors,
+    baseWidths: _liberationsans_widths.LiberationSansBoldWidths,
+    baseMapping: _liberationsans_widths.LiberationSansBoldMapping,
+    metrics: _myriadpro_factors.MyriadProBoldMetrics
+  };
+  t["MyriadPro-It"] = t["MyriadPro-Italic"] = t["PdfJS-Fallback-Italic"] = {
+    name: "LiberationSans-Italic",
+    factors: _myriadpro_factors.MyriadProItalicFactors,
+    baseWidths: _liberationsans_widths.LiberationSansItalicWidths,
+    baseMapping: _liberationsans_widths.LiberationSansItalicMapping,
+    metrics: _myriadpro_factors.MyriadProItalicMetrics
+  };
+  t["MyriadPro-BoldIt"] = t["MyriadPro-BoldItalic"] = t["PdfJS-Fallback-BoldItalic"] = {
+    name: "LiberationSans-BoldItalic",
+    factors: _myriadpro_factors.MyriadProBoldItalicFactors,
+    baseWidths: _liberationsans_widths.LiberationSansBoldItalicWidths,
+    baseMapping: _liberationsans_widths.LiberationSansBoldItalicMapping,
+    metrics: _myriadpro_factors.MyriadProBoldItalicMetrics
+  };
+  t.ArialMT = t.Arial = t["Arial-Regular"] = {
+    name: "LiberationSans-Regular",
+    baseWidths: _liberationsans_widths.LiberationSansRegularWidths,
+    baseMapping: _liberationsans_widths.LiberationSansRegularMapping
+  };
+  t["Arial-BoldMT"] = t["Arial-Bold"] = {
+    name: "LiberationSans-Bold",
+    baseWidths: _liberationsans_widths.LiberationSansBoldWidths,
+    baseMapping: _liberationsans_widths.LiberationSansBoldMapping
+  };
+  t["Arial-ItalicMT"] = t["Arial-Italic"] = {
+    name: "LiberationSans-Italic",
+    baseWidths: _liberationsans_widths.LiberationSansItalicWidths,
+    baseMapping: _liberationsans_widths.LiberationSansItalicMapping
+  };
+  t["Arial-BoldItalicMT"] = t["Arial-BoldItalic"] = {
+    name: "LiberationSans-BoldItalic",
+    baseWidths: _liberationsans_widths.LiberationSansBoldItalicWidths,
+    baseMapping: _liberationsans_widths.LiberationSansBoldItalicMapping
+  };
+  t["Calibri-Regular"] = {
+    name: "LiberationSans-Regular",
+    factors: _calibri_factors.CalibriRegularFactors,
+    baseWidths: _liberationsans_widths.LiberationSansRegularWidths,
+    baseMapping: _liberationsans_widths.LiberationSansRegularMapping,
+    metrics: _calibri_factors.CalibriRegularMetrics
+  };
+  t["Calibri-Bold"] = {
+    name: "LiberationSans-Bold",
+    factors: _calibri_factors.CalibriBoldFactors,
+    baseWidths: _liberationsans_widths.LiberationSansBoldWidths,
+    baseMapping: _liberationsans_widths.LiberationSansBoldMapping,
+    metrics: _calibri_factors.CalibriBoldMetrics
+  };
+  t["Calibri-Italic"] = {
+    name: "LiberationSans-Italic",
+    factors: _calibri_factors.CalibriItalicFactors,
+    baseWidths: _liberationsans_widths.LiberationSansItalicWidths,
+    baseMapping: _liberationsans_widths.LiberationSansItalicMapping,
+    metrics: _calibri_factors.CalibriItalicMetrics
+  };
+  t["Calibri-BoldItalic"] = {
+    name: "LiberationSans-BoldItalic",
+    factors: _calibri_factors.CalibriBoldItalicFactors,
+    baseWidths: _liberationsans_widths.LiberationSansBoldItalicWidths,
+    baseMapping: _liberationsans_widths.LiberationSansBoldItalicMapping,
+    metrics: _calibri_factors.CalibriBoldItalicMetrics
+  };
+  t["Segoeui-Regular"] = {
+    name: "LiberationSans-Regular",
+    factors: _segoeui_factors.SegoeuiRegularFactors,
+    baseWidths: _liberationsans_widths.LiberationSansRegularWidths,
+    baseMapping: _liberationsans_widths.LiberationSansRegularMapping,
+    metrics: _segoeui_factors.SegoeuiRegularMetrics
+  };
+  t["Segoeui-Bold"] = {
+    name: "LiberationSans-Bold",
+    factors: _segoeui_factors.SegoeuiBoldFactors,
+    baseWidths: _liberationsans_widths.LiberationSansBoldWidths,
+    baseMapping: _liberationsans_widths.LiberationSansBoldMapping,
+    metrics: _segoeui_factors.SegoeuiBoldMetrics
+  };
+  t["Segoeui-Italic"] = {
+    name: "LiberationSans-Italic",
+    factors: _segoeui_factors.SegoeuiItalicFactors,
+    baseWidths: _liberationsans_widths.LiberationSansItalicWidths,
+    baseMapping: _liberationsans_widths.LiberationSansItalicMapping,
+    metrics: _segoeui_factors.SegoeuiItalicMetrics
+  };
+  t["Segoeui-BoldItalic"] = {
+    name: "LiberationSans-BoldItalic",
+    factors: _segoeui_factors.SegoeuiBoldItalicFactors,
+    baseWidths: _liberationsans_widths.LiberationSansBoldItalicWidths,
+    baseMapping: _liberationsans_widths.LiberationSansBoldItalicMapping,
+    metrics: _segoeui_factors.SegoeuiBoldItalicMetrics
+  };
+  t["Helvetica-Regular"] = t.Helvetica = {
+    name: "LiberationSans-Regular",
+    factors: _helvetica_factors.HelveticaRegularFactors,
+    baseWidths: _liberationsans_widths.LiberationSansRegularWidths,
+    baseMapping: _liberationsans_widths.LiberationSansRegularMapping,
+    metrics: _helvetica_factors.HelveticaRegularMetrics
+  };
+  t["Helvetica-Bold"] = {
+    name: "LiberationSans-Bold",
+    factors: _helvetica_factors.HelveticaBoldFactors,
+    baseWidths: _liberationsans_widths.LiberationSansBoldWidths,
+    baseMapping: _liberationsans_widths.LiberationSansBoldMapping,
+    metrics: _helvetica_factors.HelveticaBoldMetrics
+  };
+  t["Helvetica-Italic"] = {
+    name: "LiberationSans-Italic",
+    factors: _helvetica_factors.HelveticaItalicFactors,
+    baseWidths: _liberationsans_widths.LiberationSansItalicWidths,
+    baseMapping: _liberationsans_widths.LiberationSansItalicMapping,
+    metrics: _helvetica_factors.HelveticaItalicMetrics
+  };
+  t["Helvetica-BoldItalic"] = {
+    name: "LiberationSans-BoldItalic",
+    factors: _helvetica_factors.HelveticaBoldItalicFactors,
+    baseWidths: _liberationsans_widths.LiberationSansBoldItalicWidths,
+    baseMapping: _liberationsans_widths.LiberationSansBoldItalicMapping,
+    metrics: _helvetica_factors.HelveticaBoldItalicMetrics
+  };
+});
 
-var _stream = __w_pdfjs_require__(10);
+function getXfaFontName(name) {
+  const fontName = (0, _fonts_utils.normalizeFontName)(name);
+  const fontMap = getXFAFontMap();
+  return fontMap[fontName];
+}
 
-var _writer = __w_pdfjs_require__(71);
+function getXfaFontWidths(name) {
+  const info = getXfaFontName(name);
 
-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]));
+  if (!info) {
+    return null;
   }
 
-  static _create(xref, ref, pdfManager, idFactory, acroForm, collectFields, pageIndex = -1) {
-    const dict = xref.fetchIfRef(ref);
+  const {
+    baseWidths,
+    baseMapping,
+    factors
+  } = info;
+  let rescaledBaseWidths;
 
-    if (!(0, _primitives.isDict)(dict)) {
-      return undefined;
-    }
+  if (!factors) {
+    rescaledBaseWidths = baseWidths;
+  } else {
+    rescaledBaseWidths = baseWidths.map((w, i) => w * factors[i]);
+  }
 
-    const id = (0, _primitives.isRef)(ref) ? ref.toString() : `annot_${idFactory.createObjId()}`;
-    let subtype = dict.get("Subtype");
-    subtype = (0, _primitives.isName)(subtype) ? subtype.name : null;
-    const parameters = {
-      xref,
-      ref,
-      dict,
-      subtype,
-      id,
-      pdfManager,
-      acroForm: acroForm instanceof _primitives.Dict ? acroForm : _primitives.Dict.empty,
-      collectFields,
-      pageIndex
-    };
+  let currentCode = -2;
+  let currentArray;
+  const newWidths = [];
 
-    switch (subtype) {
-      case "Link":
-        return new LinkAnnotation(parameters);
+  for (const [unicode, glyphIndex] of baseMapping.map((charUnicode, index) => [charUnicode, 
index]).sort(([unicode1], [unicode2]) => unicode1 - unicode2)) {
+    if (unicode === -1) {
+      continue;
+    }
 
-      case "Text":
-        return new TextAnnotation(parameters);
+    if (unicode === currentCode + 1) {
+      currentArray.push(rescaledBaseWidths[glyphIndex]);
+      currentCode += 1;
+    } else {
+      currentCode = unicode;
+      currentArray = [rescaledBaseWidths[glyphIndex]];
+      newWidths.push(unicode, currentArray);
+    }
+  }
 
-      case "Widget":
-        let fieldType = (0, _core_utils.getInheritableProperty)({
-          dict,
-          key: "FT"
-        });
-        fieldType = (0, _primitives.isName)(fieldType) ? fieldType.name : null;
+  return newWidths;
+}
 
-        switch (fieldType) {
-          case "Tx":
-            return new TextWidgetAnnotation(parameters);
+function getXfaFontDict(name) {
+  const widths = getXfaFontWidths(name);
+  const dict = new _primitives.Dict(null);
+  dict.set("BaseFont", _primitives.Name.get(name));
+  dict.set("Type", _primitives.Name.get("Font"));
+  dict.set("Subtype", _primitives.Name.get("CIDFontType2"));
+  dict.set("Encoding", _primitives.Name.get("Identity-H"));
+  dict.set("CIDToGIDMap", _primitives.Name.get("Identity"));
+  dict.set("W", widths);
+  dict.set("FirstChar", widths[0]);
+  dict.set("LastChar", widths[widths.length - 2] + widths[widths.length - 1].length - 1);
+  const descriptor = new _primitives.Dict(null);
+  dict.set("FontDescriptor", descriptor);
+  const systemInfo = new _primitives.Dict(null);
+  systemInfo.set("Ordering", "Identity");
+  systemInfo.set("Registry", "Adobe");
+  systemInfo.set("Supplement", 0);
+  dict.set("CIDSystemInfo", systemInfo);
+  return dict;
+}
 
-          case "Btn":
-            return new ButtonWidgetAnnotation(parameters);
+/***/ }),
+/* 13 */
+/***/ ((__unused_webpack_module, exports) => {
 
-          case "Ch":
-            return new ChoiceWidgetAnnotation(parameters);
 
-          case "Sig":
-            return new SignatureWidgetAnnotation(parameters);
-        }
 
-        (0, _util.warn)(`Unimplemented widget field type "${fieldType}", ` + "falling back to base field 
type.");
-        return new WidgetAnnotation(parameters);
+Object.defineProperty(exports, "__esModule", ({
+  value: true
+}));
+exports.CalibriRegularMetrics = exports.CalibriRegularFactors = exports.CalibriItalicMetrics = 
exports.CalibriItalicFactors = exports.CalibriBoldMetrics = exports.CalibriBoldItalicMetrics = 
exports.CalibriBoldItalicFactors = exports.CalibriBoldFactors = void 0;
+const CalibriBoldFactors = [1.3877, 1, 1, 1, 0.97801, 0.92482, 0.89552, 0.91133, 0.81988, 0.97566, 0.98152, 
0.93548, 0.93548, 1.2798, 0.85284, 0.92794, 1, 0.96134, 1.54657, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 
0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.82845, 0.82845, 0.85284, 0.85284, 0.85284, 0.75859, 0.92138, 
0.83908, 0.7762, 0.73293, 0.87289, 0.73133, 0.7514, 0.81921, 0.87356, 0.95958, 0.59526, 0.75727, 0.69225, 
1.04924, 0.9121, 0.86943, 0.79795, 0.88198, 0.77958, 0.70864, 0.81055, 0.90399, 0.88653, 0.96017, 0.82577, 
0.77892, 0.78257, 0.97507, 1.54657, 0.97507, 0.85284, 0.89552, 0.90176, 0.88762, 0.8785, 0.75241, 0.8785, 
0.90518, 0.95015, 0.77618, 0.8785, 0.88401, 0.91916, 0.86304, 0.88401, 0.91488, 0.8785, 0.8801, 0.8785, 
0.8785, 0.91343, 0.7173, 1.04106, 0.8785, 0.85075, 0.95794, 0.82616, 0.85162, 0.79492, 0.88331, 1.69808, 
0.88331, 0.85284, 0.97801, 0.89552, 0.91133, 0.89552, 0.91133, 1.7801, 0.89552, 1.24487, 1.13254, 1.12401, 
0.96839, 0.85284, 0.68787, 0.70645, 
 0.85592, 0.90747, 1.01466, 1.0088, 0.90323, 1, 1.07463, 1, 0.91056, 0.75806, 1.19118, 0.96839, 0.78864, 
0.82845, 0.84133, 0.75859, 0.83908, 0.83908, 0.83908, 0.83908, 0.83908, 0.83908, 0.77539, 0.73293, 0.73133, 
0.73133, 0.73133, 0.73133, 0.95958, 0.95958, 0.95958, 0.95958, 0.88506, 0.9121, 0.86943, 0.86943, 0.86943, 
0.86943, 0.86943, 0.85284, 0.87508, 0.90399, 0.90399, 0.90399, 0.90399, 0.77892, 0.79795, 0.90807, 0.88762, 
0.88762, 0.88762, 0.88762, 0.88762, 0.88762, 0.8715, 0.75241, 0.90518, 0.90518, 0.90518, 0.90518, 0.88401, 
0.88401, 0.88401, 0.88401, 0.8785, 0.8785, 0.8801, 0.8801, 0.8801, 0.8801, 0.8801, 0.90747, 0.89049, 0.8785, 
0.8785, 0.8785, 0.8785, 0.85162, 0.8785, 0.85162, 0.83908, 0.88762, 0.83908, 0.88762, 0.83908, 0.88762, 
0.73293, 0.75241, 0.73293, 0.75241, 0.73293, 0.75241, 0.73293, 0.75241, 0.87289, 0.83016, 0.88506, 0.93125, 
0.73133, 0.90518, 0.73133, 0.90518, 0.73133, 0.90518, 0.73133, 0.90518, 0.73133, 0.90518, 0.81921, 0.77618, 
0.81921, 0.77618, 0.81921, 0.77618
 , 1, 1, 0.87356, 0.8785, 0.91075, 0.89608, 0.95958, 0.88401, 0.95958, 0.88401, 0.95958, 0.88401, 0.95958, 
0.88401, 0.95958, 0.88401, 0.76229, 0.90167, 0.59526, 0.91916, 1, 1, 0.86304, 0.69225, 0.88401, 1, 1, 
0.70424, 0.79468, 0.91926, 0.88175, 0.70823, 0.94903, 0.9121, 0.8785, 1, 1, 0.9121, 0.8785, 0.87802, 0.88656, 
0.8785, 0.86943, 0.8801, 0.86943, 0.8801, 0.86943, 0.8801, 0.87402, 0.89291, 0.77958, 0.91343, 1, 1, 0.77958, 
0.91343, 0.70864, 0.7173, 0.70864, 0.7173, 0.70864, 0.7173, 0.70864, 0.7173, 1, 1, 0.81055, 0.75841, 0.81055, 
1.06452, 0.90399, 0.8785, 0.90399, 0.8785, 0.90399, 0.8785, 0.90399, 0.8785, 0.90399, 0.8785, 0.90399, 
0.8785, 0.96017, 0.95794, 0.77892, 0.85162, 0.77892, 0.78257, 0.79492, 0.78257, 0.79492, 0.78257, 0.79492, 
0.9297, 0.56892, 0.83908, 0.88762, 0.77539, 0.8715, 0.87508, 0.89049, 1, 1, 0.81055, 1.04106, 1.20528, 
1.20528, 1, 1.15543, 0.70674, 0.98387, 0.94721, 1.33431, 1.45894, 0.95161, 1.06303, 0.83908, 0.80352, 
0.57184, 0.6965, 0.56289, 0.82001, 0.56029, 
 0.81235, 1.02988, 0.83908, 0.7762, 0.68156, 0.80367, 0.73133, 0.78257, 0.87356, 0.86943, 0.95958, 0.75727, 
0.89019, 1.04924, 0.9121, 0.7648, 0.86943, 0.87356, 0.79795, 0.78275, 0.81055, 0.77892, 0.9762, 0.82577, 
0.99819, 0.84896, 0.95958, 0.77892, 0.96108, 1.01407, 0.89049, 1.02988, 0.94211, 0.96108, 0.8936, 0.84021, 
0.87842, 0.96399, 0.79109, 0.89049, 1.00813, 1.02988, 0.86077, 0.87445, 0.92099, 0.84723, 0.86513, 0.8801, 
0.75638, 0.85714, 0.78216, 0.79586, 0.87965, 0.94211, 0.97747, 0.78287, 0.97926, 0.84971, 1.02988, 0.94211, 
0.8801, 0.94211, 0.84971, 0.73133, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.90264, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.90518, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
0.90548, 1, 1, 1, 1, 1, 1, 0.96017, 0.95794, 0.96017, 0.95794, 0.96017, 0.95794, 0.77892, 0.85162, 1, 1, 
0.89552, 0.90527, 1, 0.90363, 0.927
 94, 0.92794, 0.92794, 0.92794, 0.87012, 0.87012, 0.87012, 0.89552, 0.89552, 1.42259, 0.71143, 1.06152, 1, 1, 
1.03372, 1.03372, 0.97171, 1.4956, 2.2807, 0.93835, 0.83406, 0.91133, 0.84107, 0.91133, 1, 1, 1, 0.72021, 1, 
1.23108, 0.83489, 0.88525, 0.88525, 0.81499, 0.90527, 1.81055, 0.90527, 1.81055, 1.31006, 1.53711, 0.94434, 
1.08696, 1, 0.95018, 0.77192, 0.85284, 0.90747, 1.17534, 0.69825, 0.9716, 1.37077, 0.90747, 0.90747, 0.85356, 
0.90747, 0.90747, 1.44947, 0.85284, 0.8941, 0.8941, 0.70572, 0.8, 0.70572, 0.70572, 0.70572, 0.70572, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 0.99862, 0.99862, 1, 1, 1, 1, 1, 1.08004, 0.91027, 1, 1, 1, 0.99862, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 0.90727, 0.90727, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1];
+exports.CalibriBoldFactors = CalibriBoldFactors;
+const CalibriBoldMetrics = {
+  lineHeight: 1.2207,
+  lineGap: 0.2207
+};
+exports.CalibriBoldMetrics = CalibriBoldMetrics;
+const CalibriBoldItalicFactors = [1.3877, 1, 1, 1, 0.97801, 0.92482, 0.89552, 0.91133, 0.81988, 0.97566, 
0.98152, 0.93548, 0.93548, 1.2798, 0.85284, 0.92794, 1, 0.96134, 1.56239, 0.91133, 0.91133, 0.91133, 0.91133, 
0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.82845, 0.82845, 0.85284, 0.85284, 0.85284, 0.75859, 
0.92138, 0.83908, 0.7762, 0.71805, 0.87289, 0.73133, 0.7514, 0.81921, 0.87356, 0.95958, 0.59526, 0.75727, 
0.69225, 1.04924, 0.90872, 0.85938, 0.79795, 0.87068, 0.77958, 0.69766, 0.81055, 0.90399, 0.88653, 0.96068, 
0.82577, 0.77892, 0.78257, 0.97507, 1.529, 0.97507, 0.85284, 0.89552, 0.90176, 0.94908, 0.86411, 0.74012, 
0.86411, 0.88323, 0.95015, 0.86411, 0.86331, 0.88401, 0.91916, 0.86304, 0.88401, 0.9039, 0.86331, 0.86331, 
0.86411, 0.86411, 0.90464, 0.70852, 1.04106, 0.86331, 0.84372, 0.95794, 0.82616, 0.84548, 0.79492, 0.88331, 
1.69808, 0.88331, 0.85284, 0.97801, 0.89552, 0.91133, 0.89552, 0.91133, 1.7801, 0.89552, 1.24487, 1.13254, 
1.19129, 0.96839, 0.85284, 0.687
 87, 0.70645, 0.85592, 0.90747, 1.01466, 1.0088, 0.90323, 1, 1.07463, 1, 0.91056, 0.75806, 1.19118, 0.96839, 
0.78864, 0.82845, 0.84133, 0.75859, 0.83908, 0.83908, 0.83908, 0.83908, 0.83908, 0.83908, 0.77539, 0.71805, 
0.73133, 0.73133, 0.73133, 0.73133, 0.95958, 0.95958, 0.95958, 0.95958, 0.88506, 0.90872, 0.85938, 0.85938, 
0.85938, 0.85938, 0.85938, 0.85284, 0.87068, 0.90399, 0.90399, 0.90399, 0.90399, 0.77892, 0.79795, 0.90807, 
0.94908, 0.94908, 0.94908, 0.94908, 0.94908, 0.94908, 0.85887, 0.74012, 0.88323, 0.88323, 0.88323, 0.88323, 
0.88401, 0.88401, 0.88401, 0.88401, 0.8785, 0.86331, 0.86331, 0.86331, 0.86331, 0.86331, 0.86331, 0.90747, 
0.89049, 0.86331, 0.86331, 0.86331, 0.86331, 0.84548, 0.86411, 0.84548, 0.83908, 0.94908, 0.83908, 0.94908, 
0.83908, 0.94908, 0.71805, 0.74012, 0.71805, 0.74012, 0.71805, 0.74012, 0.71805, 0.74012, 0.87289, 0.79538, 
0.88506, 0.92726, 0.73133, 0.88323, 0.73133, 0.88323, 0.73133, 0.88323, 0.73133, 0.88323, 0.73133, 0.88323, 
0.81921, 0.86411, 0.81921,
  0.86411, 0.81921, 0.86411, 1, 1, 0.87356, 0.86331, 0.91075, 0.8777, 0.95958, 0.88401, 0.95958, 0.88401, 
0.95958, 0.88401, 0.95958, 0.88401, 0.95958, 0.88401, 0.76467, 0.90167, 0.59526, 0.91916, 1, 1, 0.86304, 
0.69225, 0.88401, 1, 1, 0.70424, 0.77312, 0.91926, 0.88175, 0.70823, 0.94903, 0.90872, 0.86331, 1, 1, 
0.90872, 0.86331, 0.86906, 0.88116, 0.86331, 0.85938, 0.86331, 0.85938, 0.86331, 0.85938, 0.86331, 0.87402, 
0.86549, 0.77958, 0.90464, 1, 1, 0.77958, 0.90464, 0.69766, 0.70852, 0.69766, 0.70852, 0.69766, 0.70852, 
0.69766, 0.70852, 1, 1, 0.81055, 0.75841, 0.81055, 1.06452, 0.90399, 0.86331, 0.90399, 0.86331, 0.90399, 
0.86331, 0.90399, 0.86331, 0.90399, 0.86331, 0.90399, 0.86331, 0.96068, 0.95794, 0.77892, 0.84548, 0.77892, 
0.78257, 0.79492, 0.78257, 0.79492, 0.78257, 0.79492, 0.9297, 0.56892, 0.83908, 0.94908, 0.77539, 0.85887, 
0.87068, 0.89049, 1, 1, 0.81055, 1.04106, 1.20528, 1.20528, 1, 1.15543, 0.70088, 0.98387, 0.94721, 1.33431, 
1.45894, 0.95161, 1.48387, 0.83908, 0.80352,
  0.57118, 0.6965, 0.56347, 0.79179, 0.55853, 0.80346, 1.02988, 0.83908, 0.7762, 0.67174, 0.86036, 0.73133, 
0.78257, 0.87356, 0.86441, 0.95958, 0.75727, 0.89019, 1.04924, 0.90872, 0.74889, 0.85938, 0.87891, 0.79795, 
0.7957, 0.81055, 0.77892, 0.97447, 0.82577, 0.97466, 0.87179, 0.95958, 0.77892, 0.94252, 0.95612, 0.8753, 
1.02988, 0.92733, 0.94252, 0.87411, 0.84021, 0.8728, 0.95612, 0.74081, 0.8753, 1.02189, 1.02988, 0.84814, 
0.87445, 0.91822, 0.84723, 0.85668, 0.86331, 0.81344, 0.87581, 0.76422, 0.82046, 0.96057, 0.92733, 0.99375, 
0.78022, 0.95452, 0.86015, 1.02988, 0.92733, 0.86331, 0.92733, 0.86015, 0.73133, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 0.90631, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
0.88323, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.85174, 1, 1, 1, 1, 1, 1, 0.96068, 0.95794, 0.96068, 0.95794, 
0.96068, 0.95794, 0.77892, 0.8
 4548, 1, 1, 0.89552, 0.90527, 1, 0.90363, 0.92794, 0.92794, 0.92794, 0.89807, 0.87012, 0.87012, 0.87012, 
0.89552, 0.89552, 1.42259, 0.71094, 1.06152, 1, 1, 1.03372, 1.03372, 0.97171, 1.4956, 2.2807, 0.92972, 
0.83406, 0.91133, 0.83326, 0.91133, 1, 1, 1, 0.72021, 1, 1.23108, 0.83489, 0.88525, 0.88525, 0.81499, 
0.90616, 1.81055, 0.90527, 1.81055, 1.3107, 1.53711, 0.94434, 1.08696, 1, 0.95018, 0.77192, 0.85284, 0.90747, 
1.17534, 0.69825, 0.9716, 1.37077, 0.90747, 0.90747, 0.85356, 0.90747, 0.90747, 1.44947, 0.85284, 0.8941, 
0.8941, 0.70572, 0.8, 0.70572, 0.70572, 0.70572, 0.70572, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.99862, 0.99862, 1, 1, 1, 
1, 1, 1.08004, 0.91027, 1, 1, 1, 0.99862, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.90727, 0.90727, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1];
+exports.CalibriBoldItalicFactors = CalibriBoldItalicFactors;
+const CalibriBoldItalicMetrics = {
+  lineHeight: 1.2207,
+  lineGap: 0.2207
+};
+exports.CalibriBoldItalicMetrics = CalibriBoldItalicMetrics;
+const CalibriItalicFactors = [1.3877, 1, 1, 1, 1.17223, 1.1293, 0.89552, 0.91133, 0.80395, 1.02269, 1.15601, 
0.91056, 0.91056, 1.2798, 0.85284, 0.89807, 1, 0.90861, 1.39543, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 
0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.96309, 0.96309, 0.85284, 0.85284, 0.85284, 0.83319, 0.88071, 
0.8675, 0.81552, 0.72346, 0.85193, 0.73206, 0.7522, 0.81105, 0.86275, 0.90685, 0.6377, 0.77892, 0.75593, 
1.02638, 0.89249, 0.84118, 0.77452, 0.85374, 0.75186, 0.67789, 0.79776, 0.88844, 0.85066, 0.94309, 0.77818, 
0.7306, 0.76659, 1.10369, 1.38313, 1.10369, 1.06139, 0.89552, 0.8739, 0.9245, 0.9245, 0.83203, 0.9245, 
0.85865, 1.09842, 0.9245, 0.9245, 1.03297, 1.07692, 0.90918, 1.03297, 0.94959, 0.9245, 0.92274, 0.9245, 
0.9245, 1.02933, 0.77832, 1.20562, 0.9245, 0.8916, 0.98986, 0.86621, 0.89453, 0.79004, 0.94152, 1.77256, 
0.94152, 0.85284, 0.97801, 0.89552, 0.91133, 0.89552, 0.91133, 1.91729, 0.89552, 1.17889, 1.13254, 1.16359, 
0.92098, 0.85284, 0.68787, 0.71353, 0
 .84737, 0.90747, 1.0088, 1.0044, 0.87683, 1, 1.09091, 1, 0.92229, 0.739, 1.15642, 0.92098, 0.76288, 0.80504, 
0.80972, 0.75859, 0.8675, 0.8675, 0.8675, 0.8675, 0.8675, 0.8675, 0.76318, 0.72346, 0.73206, 0.73206, 
0.73206, 0.73206, 0.90685, 0.90685, 0.90685, 0.90685, 0.86477, 0.89249, 0.84118, 0.84118, 0.84118, 0.84118, 
0.84118, 0.85284, 0.84557, 0.88844, 0.88844, 0.88844, 0.88844, 0.7306, 0.77452, 0.86331, 0.9245, 0.9245, 
0.9245, 0.9245, 0.9245, 0.9245, 0.84843, 0.83203, 0.85865, 0.85865, 0.85865, 0.85865, 0.82601, 0.82601, 
0.82601, 0.82601, 0.94469, 0.9245, 0.92274, 0.92274, 0.92274, 0.92274, 0.92274, 0.90747, 0.86651, 0.9245, 
0.9245, 0.9245, 0.9245, 0.89453, 0.9245, 0.89453, 0.8675, 0.9245, 0.8675, 0.9245, 0.8675, 0.9245, 0.72346, 
0.83203, 0.72346, 0.83203, 0.72346, 0.83203, 0.72346, 0.83203, 0.85193, 0.8875, 0.86477, 0.99034, 0.73206, 
0.85865, 0.73206, 0.85865, 0.73206, 0.85865, 0.73206, 0.85865, 0.73206, 0.85865, 0.81105, 0.9245, 0.81105, 
0.9245, 0.81105, 0.9245, 1, 1, 0.86275, 0.
 9245, 0.90872, 0.93591, 0.90685, 0.82601, 0.90685, 0.82601, 0.90685, 0.82601, 0.90685, 1.03297, 0.90685, 
0.82601, 0.77896, 1.05611, 0.6377, 1.07692, 1, 1, 0.90918, 0.75593, 1.03297, 1, 1, 0.76032, 0.9375, 0.98156, 
0.93407, 0.77261, 1.11429, 0.89249, 0.9245, 1, 1, 0.89249, 0.9245, 0.92534, 0.86698, 0.9245, 0.84118, 
0.92274, 0.84118, 0.92274, 0.84118, 0.92274, 0.8667, 0.86291, 0.75186, 1.02933, 1, 1, 0.75186, 1.02933, 
0.67789, 0.77832, 0.67789, 0.77832, 0.67789, 0.77832, 0.67789, 0.77832, 1, 1, 0.79776, 0.97655, 0.79776, 
1.23023, 0.88844, 0.9245, 0.88844, 0.9245, 0.88844, 0.9245, 0.88844, 0.9245, 0.88844, 0.9245, 0.88844, 
0.9245, 0.94309, 0.98986, 0.7306, 0.89453, 0.7306, 0.76659, 0.79004, 0.76659, 0.79004, 0.76659, 0.79004, 
1.09231, 0.54873, 0.8675, 0.9245, 0.76318, 0.84843, 0.84557, 0.86651, 1, 1, 0.79776, 1.20562, 1.18622, 
1.18622, 1, 1.1437, 0.67009, 0.96334, 0.93695, 1.35191, 1.40909, 0.95161, 1.48387, 0.8675, 0.90861, 0.6192, 
0.7363, 0.64824, 0.82411, 0.56321, 0.85696, 1.23516, 
 0.8675, 0.81552, 0.7286, 0.84134, 0.73206, 0.76659, 0.86275, 0.84369, 0.90685, 0.77892, 0.85871, 1.02638, 
0.89249, 0.75828, 0.84118, 0.85984, 0.77452, 0.76466, 0.79776, 0.7306, 0.90782, 0.77818, 0.903, 0.87291, 
0.90685, 0.7306, 0.99058, 1.03667, 0.94635, 1.23516, 0.9849, 0.99058, 0.92393, 0.8916, 0.942, 1.03667, 
0.75026, 0.94635, 1.0297, 1.23516, 0.90918, 0.94048, 0.98217, 0.89746, 0.84153, 0.92274, 0.82507, 0.88832, 
0.84438, 0.88178, 1.03525, 0.9849, 1.00225, 0.78086, 0.97248, 0.89404, 1.23516, 0.9849, 0.92274, 0.9849, 
0.89404, 0.73206, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.89693, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.85865, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.90933, 1, 1, 1, 
1, 1, 1, 0.94309, 0.98986, 0.94309, 0.98986, 0.94309, 0.98986, 0.7306, 0.89453, 1, 1, 0.89552, 0.90527, 1, 
0.90186, 1.12308, 1.12308, 1.12308, 1.12
 308, 1.2566, 1.2566, 1.2566, 0.89552, 0.89552, 1.42259, 0.68994, 1.03809, 1, 1, 1.0176, 1.0176, 1.11523, 
1.4956, 2.01462, 0.97858, 0.82616, 0.91133, 0.83437, 0.91133, 1, 1, 1, 0.70508, 1, 1.23108, 0.79801, 0.84426, 
0.84426, 0.774, 0.90572, 1.81055, 0.90749, 1.81055, 1.28809, 1.55469, 0.94434, 1.07806, 1, 0.97094, 0.7589, 
0.85284, 0.90747, 1.19658, 0.69825, 0.97622, 1.33512, 0.90747, 0.90747, 0.85284, 0.90747, 0.90747, 1.44947, 
0.85284, 0.8941, 0.8941, 0.70572, 0.8, 0.70572, 0.70572, 0.70572, 0.70572, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.99862, 
0.99862, 1, 1, 1, 1, 1, 1.0336, 0.91027, 1, 1, 1, 0.99862, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.05859, 
1.05859, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1];
+exports.CalibriItalicFactors = CalibriItalicFactors;
+const CalibriItalicMetrics = {
+  lineHeight: 1.2207,
+  lineGap: 0.2207
+};
+exports.CalibriItalicMetrics = CalibriItalicMetrics;
+const CalibriRegularFactors = [1.3877, 1, 1, 1, 1.17223, 1.1293, 0.89552, 0.91133, 0.80395, 1.02269, 
1.15601, 0.91056, 0.91056, 1.2798, 0.85284, 0.89807, 1, 0.90861, 1.39016, 0.91133, 0.91133, 0.91133, 0.91133, 
0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.96309, 0.96309, 0.85284, 0.85284, 0.85284, 0.83319, 
0.88071, 0.8675, 0.81552, 0.73834, 0.85193, 0.73206, 0.7522, 0.81105, 0.86275, 0.90685, 0.6377, 0.77892, 
0.75593, 1.02638, 0.89385, 0.85122, 0.77452, 0.86503, 0.75186, 0.68887, 0.79776, 0.88844, 0.85066, 0.94258, 
0.77818, 0.7306, 0.76659, 1.10369, 1.39016, 1.10369, 1.06139, 0.89552, 0.8739, 0.86128, 0.94469, 0.8457, 
0.94469, 0.89464, 1.09842, 0.84636, 0.94469, 1.03297, 1.07692, 0.90918, 1.03297, 0.95897, 0.94469, 0.9482, 
0.94469, 0.94469, 1.04692, 0.78223, 1.20562, 0.94469, 0.90332, 0.98986, 0.86621, 0.90527, 0.79004, 0.94152, 
1.77256, 0.94152, 0.85284, 0.97801, 0.89552, 0.91133, 0.89552, 0.91133, 1.91729, 0.89552, 1.17889, 1.13254, 
1.08707, 0.92098, 0.85284, 0.68787, 0
 .71353, 0.84737, 0.90747, 1.0088, 1.0044, 0.87683, 1, 1.09091, 1, 0.92229, 0.739, 1.15642, 0.92098, 0.76288, 
0.80504, 0.80972, 0.75859, 0.8675, 0.8675, 0.8675, 0.8675, 0.8675, 0.8675, 0.76318, 0.73834, 0.73206, 
0.73206, 0.73206, 0.73206, 0.90685, 0.90685, 0.90685, 0.90685, 0.86477, 0.89385, 0.85122, 0.85122, 0.85122, 
0.85122, 0.85122, 0.85284, 0.85311, 0.88844, 0.88844, 0.88844, 0.88844, 0.7306, 0.77452, 0.86331, 0.86128, 
0.86128, 0.86128, 0.86128, 0.86128, 0.86128, 0.8693, 0.8457, 0.89464, 0.89464, 0.89464, 0.89464, 0.82601, 
0.82601, 0.82601, 0.82601, 0.94469, 0.94469, 0.9482, 0.9482, 0.9482, 0.9482, 0.9482, 0.90747, 0.86651, 
0.94469, 0.94469, 0.94469, 0.94469, 0.90527, 0.94469, 0.90527, 0.8675, 0.86128, 0.8675, 0.86128, 0.8675, 
0.86128, 0.73834, 0.8457, 0.73834, 0.8457, 0.73834, 0.8457, 0.73834, 0.8457, 0.85193, 0.92454, 0.86477, 
0.9921, 0.73206, 0.89464, 0.73206, 0.89464, 0.73206, 0.89464, 0.73206, 0.89464, 0.73206, 0.89464, 0.81105, 
0.84636, 0.81105, 0.84636, 0.81105, 0.84636, 1
 , 1, 0.86275, 0.94469, 0.90872, 0.95786, 0.90685, 0.82601, 0.90685, 0.82601, 0.90685, 0.82601, 0.90685, 
1.03297, 0.90685, 0.82601, 0.77741, 1.05611, 0.6377, 1.07692, 1, 1, 0.90918, 0.75593, 1.03297, 1, 1, 0.76032, 
0.90452, 0.98156, 1.11842, 0.77261, 1.11429, 0.89385, 0.94469, 1, 1, 0.89385, 0.94469, 0.95877, 0.86901, 
0.94469, 0.85122, 0.9482, 0.85122, 0.9482, 0.85122, 0.9482, 0.8667, 0.90016, 0.75186, 1.04692, 1, 1, 0.75186, 
1.04692, 0.68887, 0.78223, 0.68887, 0.78223, 0.68887, 0.78223, 0.68887, 0.78223, 1, 1, 0.79776, 0.92188, 
0.79776, 1.23023, 0.88844, 0.94469, 0.88844, 0.94469, 0.88844, 0.94469, 0.88844, 0.94469, 0.88844, 0.94469, 
0.88844, 0.94469, 0.94258, 0.98986, 0.7306, 0.90527, 0.7306, 0.76659, 0.79004, 0.76659, 0.79004, 0.76659, 
0.79004, 1.09231, 0.54873, 0.8675, 0.86128, 0.76318, 0.8693, 0.85311, 0.86651, 1, 1, 0.79776, 1.20562, 
1.18622, 1.18622, 1, 1.1437, 0.67742, 0.96334, 0.93695, 1.35191, 1.40909, 0.95161, 1.48387, 0.86686, 0.90861, 
0.62267, 0.74359, 0.65649, 0.85498, 
 0.56963, 0.88254, 1.23516, 0.8675, 0.81552, 0.75443, 0.84503, 0.73206, 0.76659, 0.86275, 0.85122, 0.90685, 
0.77892, 0.85746, 1.02638, 0.89385, 0.75657, 0.85122, 0.86275, 0.77452, 0.74171, 0.79776, 0.7306, 0.95165, 
0.77818, 0.89772, 0.88831, 0.90685, 0.7306, 0.98142, 1.02191, 0.96576, 1.23516, 0.99018, 0.98142, 0.9236, 
0.89258, 0.94035, 1.02191, 0.78848, 0.96576, 0.9561, 1.23516, 0.90918, 0.92578, 0.95424, 0.89746, 0.83969, 
0.9482, 0.80113, 0.89442, 0.85208, 0.86155, 0.98022, 0.99018, 1.00452, 0.81209, 0.99247, 0.89181, 1.23516, 
0.99018, 0.9482, 0.99018, 0.89181, 0.73206, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.88844, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.89464, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 0.96766, 1, 1, 1, 1, 1, 1, 0.94258, 0.98986, 0.94258, 0.98986, 0.94258, 0.98986, 0.7306, 0.90527, 1, 1, 
0.89552, 0.90527, 1, 0.9018
 6, 1.12308, 1.12308, 1.12308, 1.12308, 1.2566, 1.2566, 1.2566, 0.89552, 0.89552, 1.42259, 0.69043, 1.03809, 
1, 1, 1.0176, 1.0176, 1.11523, 1.4956, 2.01462, 0.99331, 0.82616, 0.91133, 0.84286, 0.91133, 1, 1, 1, 
0.70508, 1, 1.23108, 0.79801, 0.84426, 0.84426, 0.774, 0.90527, 1.81055, 0.90527, 1.81055, 1.28809, 1.55469, 
0.94434, 1.07806, 1, 0.97094, 0.7589, 0.85284, 0.90747, 1.19658, 0.69825, 0.97622, 1.33512, 0.90747, 0.90747, 
0.85356, 0.90747, 0.90747, 1.44947, 0.85284, 0.8941, 0.8941, 0.70572, 0.8, 0.70572, 0.70572, 0.70572, 
0.70572, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.99862, 0.99862, 1, 1, 1, 1, 1, 1.0336, 0.91027, 1, 1, 1, 0.99862, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1.05859, 1.05859, 1, 1, 1, 1.07185, 0.99413, 0.96334, 1.08065, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 1];
+exports.CalibriRegularFactors = CalibriRegularFactors;
+const CalibriRegularMetrics = {
+  lineHeight: 1.2207,
+  lineGap: 0.2207
+};
+exports.CalibriRegularMetrics = CalibriRegularMetrics;
 
-      case "Popup":
-        return new PopupAnnotation(parameters);
+/***/ }),
+/* 14 */
+/***/ ((__unused_webpack_module, exports) => {
 
-      case "FreeText":
-        return new FreeTextAnnotation(parameters);
 
-      case "Line":
-        return new LineAnnotation(parameters);
 
-      case "Square":
-        return new SquareAnnotation(parameters);
+Object.defineProperty(exports, "__esModule", ({
+  value: true
+}));
+exports.HelveticaRegularMetrics = exports.HelveticaRegularFactors = exports.HelveticaItalicMetrics = 
exports.HelveticaItalicFactors = exports.HelveticaBoldMetrics = exports.HelveticaBoldItalicMetrics = 
exports.HelveticaBoldItalicFactors = exports.HelveticaBoldFactors = void 0;
+const HelveticaBoldFactors = [0.76116, 1, 1, 1.0006, 0.99998, 0.99974, 0.99973, 0.99973, 0.99982, 0.99977, 
1.00087, 0.99998, 0.99998, 0.99959, 1.00003, 1.0006, 0.99998, 1.0006, 1.0006, 0.99973, 0.99973, 0.99973, 
0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99998, 1, 1.00003, 1.00003, 1.00003, 
1.00026, 0.9999, 0.99977, 0.99977, 0.99977, 0.99977, 1.00001, 1.00026, 1.00022, 0.99977, 1.0006, 0.99973, 
0.99977, 1.00026, 0.99999, 0.99977, 1.00022, 1.00001, 1.00022, 0.99977, 1.00001, 1.00026, 0.99977, 1.00001, 
1.00016, 1.00001, 1.00001, 1.00026, 0.99998, 1.0006, 0.99998, 1.00003, 0.99973, 0.99998, 0.99973, 1.00026, 
0.99973, 1.00026, 0.99973, 0.99998, 1.00026, 1.00026, 1.0006, 1.0006, 0.99973, 1.0006, 0.99982, 1.00026, 
1.00026, 1.00026, 1.00026, 0.99959, 0.99973, 0.99998, 1.00026, 0.99973, 1.00022, 0.99973, 0.99973, 1, 
0.99959, 1.00077, 0.99959, 1.00003, 0.99998, 0.99973, 0.99973, 0.99973, 0.99973, 1.00077, 0.99973, 0.99998, 
1.00025, 0.99968, 0.99973, 1.00003, 1.00025, 0.
 60299, 1.00024, 1.06409, 1, 1, 0.99998, 1, 0.99973, 1.0006, 0.99998, 1, 0.99936, 0.99973, 1.00002, 1.00002, 
1.00002, 1.00026, 0.99977, 0.99977, 0.99977, 0.99977, 0.99977, 0.99977, 1, 0.99977, 1.00001, 1.00001, 
1.00001, 1.00001, 1.0006, 1.0006, 1.0006, 1.0006, 0.99977, 0.99977, 1.00022, 1.00022, 1.00022, 1.00022, 
1.00022, 1.00003, 1.00022, 0.99977, 0.99977, 0.99977, 0.99977, 1.00001, 1.00001, 1.00026, 0.99973, 0.99973, 
0.99973, 0.99973, 0.99973, 0.99973, 0.99982, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 1.0006, 1.0006, 
1.0006, 1.0006, 1.00026, 1.00026, 1.00026, 1.00026, 1.00026, 1.00026, 1.00026, 1.06409, 1.00026, 1.00026, 
1.00026, 1.00026, 1.00026, 0.99973, 1.00026, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 
0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 1.03374, 0.99977, 1.00026, 
1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00022, 1.00026, 
1.00022, 1.00026, 1.00022, 1.00026, 1.0
 0022, 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 
1.0006, 1.0006, 1.0006, 1.00042, 0.99973, 0.99973, 1.0006, 0.99977, 0.99973, 0.99973, 1.00026, 1.0006, 
1.00026, 1.0006, 1.00026, 1.03828, 1.00026, 0.99999, 1.00026, 1.0006, 0.99977, 1.00026, 0.99977, 1.00026, 
0.99977, 1.00026, 0.9993, 0.9998, 1.00026, 1.00022, 1.00026, 1.00022, 1.00026, 1.00022, 1.00026, 1, 1.00016, 
0.99977, 0.99959, 0.99977, 0.99959, 0.99977, 0.99959, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 
1.00001, 0.99973, 1.00026, 0.99998, 1.00026, 0.8121, 1.00026, 0.99998, 0.99977, 1.00026, 0.99977, 1.00026, 
0.99977, 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 1.00016, 1.00022, 1.00001, 0.99973, 
1.00001, 1.00026, 1, 1.00026, 1, 1.00026, 1, 1.0006, 0.99973, 0.99977, 0.99973, 1, 0.99982, 1.00022, 1.00026, 
1.00001, 0.99973, 1.00026, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 
0.99998, 0.99998, 1.00034, 0.99
 977, 1, 0.99997, 1.00026, 1.00078, 1.00036, 0.99973, 1.00013, 1.0006, 0.99977, 0.99977, 0.99988, 0.85148, 
1.00001, 1.00026, 0.99977, 1.00022, 1.0006, 0.99977, 1.00001, 0.99999, 0.99977, 1.00069, 1.00022, 0.99977, 
1.00001, 0.99984, 1.00026, 1.00001, 1.00024, 1.00001, 0.9999, 1, 1.0006, 1.00001, 1.00041, 0.99962, 1.00026, 
1.0006, 0.99995, 1.00041, 0.99942, 0.99973, 0.99927, 1.00082, 0.99902, 1.00026, 1.00087, 1.0006, 1.00069, 
0.99973, 0.99867, 0.99973, 0.9993, 1.00026, 1.00049, 1.00056, 1, 0.99988, 0.99935, 0.99995, 0.99954, 1.00055, 
0.99945, 1.00032, 1.0006, 0.99995, 1.00026, 0.99995, 1.00032, 1.00001, 1.00008, 0.99971, 1.00019, 0.9994, 
1.00001, 1.0006, 1.00044, 0.99973, 1.00023, 1.00047, 1, 0.99942, 0.99561, 0.99989, 1.00035, 0.99977, 1.00035, 
0.99977, 1.00019, 0.99944, 1.00001, 1.00021, 0.99926, 1.00035, 1.00035, 0.99942, 1.00048, 0.99999, 0.99977, 
1.00022, 1.00035, 1.00001, 0.99977, 1.00026, 0.99989, 1.00057, 1.00001, 0.99936, 1.00052, 1.00012, 0.99996, 
1.00043, 1, 1.00035, 0.9994
 , 0.99976, 1.00035, 0.99973, 1.00052, 1.00041, 1.00119, 1.00037, 0.99973, 1.00002, 0.99986, 1.00041, 
1.00041, 0.99902, 0.9996, 1.00034, 0.99999, 1.00026, 0.99999, 1.00026, 0.99973, 1.00052, 0.99973, 1, 0.99973, 
1.00041, 1.00075, 0.9994, 1.0003, 0.99999, 1, 1.00041, 0.99955, 1, 0.99915, 0.99973, 0.99973, 1.00026, 
1.00119, 0.99955, 0.99973, 1.0006, 0.99911, 1.0006, 1.00026, 0.99972, 1.00026, 0.99902, 1.00041, 0.99973, 
0.99999, 1, 1, 1.00038, 1.0005, 1.00016, 1.00022, 1.00016, 1.00022, 1.00016, 1.00022, 1.00001, 0.99973, 1, 1, 
0.99973, 1, 1, 0.99955, 1.0006, 1.0006, 1.0006, 1.0006, 1, 1, 1, 0.99973, 0.99973, 0.99972, 1, 1, 1.00106, 
0.99999, 0.99998, 0.99998, 0.99999, 0.99998, 1.66475, 1, 0.99973, 0.99973, 1.00023, 0.99973, 0.99971, 
1.00047, 1.00023, 1, 0.99991, 0.99984, 1.00002, 1.00002, 1.00002, 1.00002, 1, 1, 1, 1, 1, 1, 1, 0.99972, 1, 
1.20985, 1.39713, 1.00003, 1.00031, 1.00015, 1, 0.99561, 1.00027, 1.00031, 1.00031, 0.99915, 1.00031, 
1.00031, 0.99999, 1.00003, 0.99999, 0.99999, 1.4
 1144, 1.6, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 
1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 
1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 
1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.40579, 1.40579, 1.36625, 
0.99999, 1, 0.99861, 0.99861, 1, 1.00026, 1.00026, 1.00026, 1.00026, 0.99972, 0.99999, 0.99999, 0.99999, 
0.99999, 1.40483, 1, 0.99977, 1.00054, 1, 1, 0.99953, 0.99962, 1.00042, 0.9995, 1, 1, 1, 1, 1, 1, 1, 1, 
0.99998, 0.99998, 0.99998, 0.99998, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1];
+exports.HelveticaBoldFactors = HelveticaBoldFactors;
+const HelveticaBoldMetrics = {
+  lineHeight: 1.2,
+  lineGap: 0.2
+};
+exports.HelveticaBoldMetrics = HelveticaBoldMetrics;
+const HelveticaBoldItalicFactors = [0.76116, 1, 1, 1.0006, 0.99998, 0.99974, 0.99973, 0.99973, 0.99982, 
0.99977, 1.00087, 0.99998, 0.99998, 0.99959, 1.00003, 1.0006, 0.99998, 1.0006, 1.0006, 0.99973, 0.99973, 
0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99998, 1, 1.00003, 1.00003, 
1.00003, 1.00026, 0.9999, 0.99977, 0.99977, 0.99977, 0.99977, 1.00001, 1.00026, 1.00022, 0.99977, 1.0006, 
0.99973, 0.99977, 1.00026, 0.99999, 0.99977, 1.00022, 1.00001, 1.00022, 0.99977, 1.00001, 1.00026, 0.99977, 
1.00001, 1.00016, 1.00001, 1.00001, 1.00026, 0.99998, 1.0006, 0.99998, 1.00003, 0.99973, 0.99998, 0.99973, 
1.00026, 0.99973, 1.00026, 0.99973, 0.99998, 1.00026, 1.00026, 1.0006, 1.0006, 0.99973, 1.0006, 0.99982, 
1.00026, 1.00026, 1.00026, 1.00026, 0.99959, 0.99973, 0.99998, 1.00026, 0.99973, 1.00022, 0.99973, 0.99973, 
1, 0.99959, 1.00077, 0.99959, 1.00003, 0.99998, 0.99973, 0.99973, 0.99973, 0.99973, 1.00077, 0.99973, 
0.99998, 1.00025, 0.99968, 0.99973, 1.00003, 1.000
 25, 0.60299, 1.00024, 1.06409, 1, 1, 0.99998, 1, 0.99973, 1.0006, 0.99998, 1, 0.99936, 0.99973, 1.00002, 
1.00002, 1.00002, 1.00026, 0.99977, 0.99977, 0.99977, 0.99977, 0.99977, 0.99977, 1, 0.99977, 1.00001, 
1.00001, 1.00001, 1.00001, 1.0006, 1.0006, 1.0006, 1.0006, 0.99977, 0.99977, 1.00022, 1.00022, 1.00022, 
1.00022, 1.00022, 1.00003, 1.00022, 0.99977, 0.99977, 0.99977, 0.99977, 1.00001, 1.00001, 1.00026, 0.99973, 
0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99982, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 1.0006, 
1.0006, 1.0006, 1.0006, 1.00026, 1.00026, 1.00026, 1.00026, 1.00026, 1.00026, 1.00026, 1.06409, 1.00026, 
1.00026, 1.00026, 1.00026, 1.00026, 0.99973, 1.00026, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 
0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 1.0044, 0.99977, 
1.00026, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00022, 
1.00026, 1.00022, 1.00026, 1.00022, 1.00026
 , 1.00022, 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 
1.0006, 1.0006, 1.0006, 1.0006, 0.99971, 0.99973, 0.99973, 1.0006, 0.99977, 0.99973, 0.99973, 1.00026, 
1.0006, 1.00026, 1.0006, 1.00026, 1.01011, 1.00026, 0.99999, 1.00026, 1.0006, 0.99977, 1.00026, 0.99977, 
1.00026, 0.99977, 1.00026, 0.9993, 0.9998, 1.00026, 1.00022, 1.00026, 1.00022, 1.00026, 1.00022, 1.00026, 1, 
1.00016, 0.99977, 0.99959, 0.99977, 0.99959, 0.99977, 0.99959, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 
0.99973, 1.00001, 0.99973, 1.00026, 0.99998, 1.00026, 0.8121, 1.00026, 0.99998, 0.99977, 1.00026, 0.99977, 
1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 1.00016, 1.00022, 1.00001, 
0.99973, 1.00001, 1.00026, 1, 1.00026, 1, 1.00026, 1, 1.0006, 0.99973, 0.99977, 0.99973, 1, 0.99982, 1.00022, 
1.00026, 1.00001, 0.99973, 1.00026, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 
0.99998, 0.99998, 0.99998, 0.99998,
  0.99977, 1, 1, 1.00026, 0.99969, 0.99972, 0.99981, 0.9998, 1.0006, 0.99977, 0.99977, 1.00022, 0.91155, 
1.00001, 1.00026, 0.99977, 1.00022, 1.0006, 0.99977, 1.00001, 0.99999, 0.99977, 0.99966, 1.00022, 1.00032, 
1.00001, 0.99944, 1.00026, 1.00001, 0.99968, 1.00001, 1.00047, 1, 1.0006, 1.00001, 0.99981, 1.00101, 1.00026, 
1.0006, 0.99948, 0.99981, 1.00064, 0.99973, 0.99942, 1.00101, 1.00061, 1.00026, 1.00069, 1.0006, 1.00014, 
0.99973, 1.01322, 0.99973, 1.00065, 1.00026, 1.00012, 0.99923, 1, 1.00064, 1.00076, 0.99948, 1.00055, 
1.00063, 1.00007, 0.99943, 1.0006, 0.99948, 1.00026, 0.99948, 0.99943, 1.00001, 1.00001, 1.00029, 1.00038, 
1.00035, 1.00001, 1.0006, 1.0006, 0.99973, 0.99978, 1.00001, 1.00057, 0.99989, 0.99967, 0.99964, 0.99967, 
0.99977, 0.99999, 0.99977, 1.00038, 0.99977, 1.00001, 0.99973, 1.00066, 0.99967, 0.99967, 1.00041, 0.99998, 
0.99999, 0.99977, 1.00022, 0.99967, 1.00001, 0.99977, 1.00026, 0.99964, 1.00031, 1.00001, 0.99999, 0.99999, 
1, 1.00023, 1, 1, 0.99999, 1.00035, 1.0
 0001, 0.99999, 0.99973, 0.99977, 0.99999, 1.00058, 0.99973, 0.99973, 0.99955, 0.9995, 1.00026, 1.00026, 
1.00032, 0.99989, 1.00034, 0.99999, 1.00026, 1.00026, 1.00026, 0.99973, 0.45998, 0.99973, 1.00026, 0.99973, 
1.00001, 0.99999, 0.99982, 0.99994, 0.99996, 1, 1.00042, 1.00044, 1.00029, 1.00023, 0.99973, 0.99973, 
1.00026, 0.99949, 1.00002, 0.99973, 1.0006, 1.0006, 1.0006, 0.99975, 1.00026, 1.00026, 1.00032, 0.98685, 
0.99973, 1.00026, 1, 1, 0.99966, 1.00044, 1.00016, 1.00022, 1.00016, 1.00022, 1.00016, 1.00022, 1.00001, 
0.99973, 1, 1, 0.99973, 1, 1, 0.99955, 1.0006, 1.0006, 1.0006, 1.0006, 1, 1, 1, 0.99973, 0.99973, 0.99972, 1, 
1, 1.00106, 0.99999, 0.99998, 0.99998, 0.99999, 0.99998, 1.66475, 1, 0.99973, 0.99973, 1, 0.99973, 0.99971, 
0.99978, 1, 1, 0.99991, 0.99984, 1.00002, 1.00002, 1.00002, 1.00002, 1.00098, 1, 1, 1, 1.00049, 1, 1, 
0.99972, 1, 1.20985, 1.39713, 1.00003, 1.00031, 1.00015, 1, 0.99561, 1.00027, 1.00031, 1.00031, 0.99915, 
1.00031, 1.00031, 0.99999, 1.00003, 0.99999, 0.9
 9999, 1.41144, 1.6, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 
1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 
1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 
1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.40579, 1.40579, 
1.36625, 0.99999, 1, 0.99861, 0.99861, 1, 1.00026, 1.00026, 1.00026, 1.00026, 0.99972, 0.99999, 0.99999, 
0.99999, 0.99999, 1.40483, 1, 0.99977, 1.00054, 1, 1, 0.99953, 0.99962, 1.00042, 0.9995, 1, 1, 1, 1, 1, 1, 1, 
1, 0.99998, 0.99998, 0.99998, 0.99998, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1];
+exports.HelveticaBoldItalicFactors = HelveticaBoldItalicFactors;
+const HelveticaBoldItalicMetrics = {
+  lineHeight: 1.35,
+  lineGap: 0.2
+};
+exports.HelveticaBoldItalicMetrics = HelveticaBoldItalicMetrics;
+const HelveticaItalicFactors = [0.76116, 1, 1, 1.0006, 1.0006, 1.00006, 0.99973, 0.99973, 0.99982, 1.00001, 
1.00043, 0.99998, 0.99998, 0.99959, 1.00003, 1.0006, 0.99998, 1.0006, 1.0006, 0.99973, 0.99973, 0.99973, 
0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 1.0006, 1, 1.00003, 1.00003, 1.00003, 0.99973, 
0.99987, 1.00001, 1.00001, 0.99977, 0.99977, 1.00001, 1.00026, 1.00022, 0.99977, 1.0006, 1, 1.00001, 0.99973, 
0.99999, 0.99977, 1.00022, 1.00001, 1.00022, 0.99977, 1.00001, 1.00026, 0.99977, 1.00001, 1.00016, 1.00001, 
1.00001, 1.00026, 1.0006, 1.0006, 1.0006, 0.99949, 0.99973, 0.99998, 0.99973, 0.99973, 1, 0.99973, 0.99973, 
1.0006, 0.99973, 0.99973, 0.99924, 0.99924, 1, 0.99924, 0.99999, 0.99973, 0.99973, 0.99973, 0.99973, 0.99998, 
1, 1.0006, 0.99973, 1, 0.99977, 1, 1, 1, 1.00005, 1.0009, 1.00005, 1.00003, 0.99998, 0.99973, 0.99973, 
0.99973, 0.99973, 1.0009, 0.99973, 0.99998, 1.00025, 0.99968, 0.99973, 1.00003, 1.00025, 0.60299, 1.00024, 
1.06409, 1, 1, 0.99998, 1, 0
 .9998, 1.0006, 0.99998, 1, 0.99936, 0.99973, 1.00002, 1.00002, 1.00002, 1.00026, 1.00001, 1.00001, 1.00001, 
1.00001, 1.00001, 1.00001, 1, 0.99977, 1.00001, 1.00001, 1.00001, 1.00001, 1.0006, 1.0006, 1.0006, 1.0006, 
0.99977, 0.99977, 1.00022, 1.00022, 1.00022, 1.00022, 1.00022, 1.00003, 1.00022, 0.99977, 0.99977, 0.99977, 
0.99977, 1.00001, 1.00001, 1.00026, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99982, 1, 
0.99973, 0.99973, 0.99973, 0.99973, 1.0006, 1.0006, 1.0006, 1.0006, 0.99973, 0.99973, 0.99973, 0.99973, 
0.99973, 0.99973, 0.99973, 1.06409, 1.00026, 0.99973, 0.99973, 0.99973, 0.99973, 1, 0.99973, 1, 1.00001, 
0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 0.99977, 1, 0.99977, 1, 0.99977, 1, 0.99977, 1, 0.99977, 1.0288, 
0.99977, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 
1.00022, 0.99973, 1.00022, 0.99973, 1.00022, 0.99973, 1.00022, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 
1.0006, 1.0006, 1.0006, 1.0006, 1.000
 6, 1.0006, 1.0006, 0.99924, 1.0006, 1.0006, 0.99946, 1.00034, 1, 0.99924, 1.00001, 1, 1, 0.99973, 0.99924, 
0.99973, 0.99924, 0.99973, 1.06311, 0.99973, 1.00024, 0.99973, 0.99924, 0.99977, 0.99973, 0.99977, 0.99973, 
0.99977, 0.99973, 1.00041, 0.9998, 0.99973, 1.00022, 0.99973, 1.00022, 0.99973, 1.00022, 0.99973, 1, 1.00016, 
0.99977, 0.99998, 0.99977, 0.99998, 0.99977, 0.99998, 1.00001, 1, 1.00001, 1, 1.00001, 1, 1.00001, 1, 
1.00026, 1.0006, 1.00026, 0.89547, 1.00026, 1.0006, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 
0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 1.00016, 0.99977, 1.00001, 1, 1.00001, 1.00026, 1, 
1.00026, 1, 1.00026, 1, 0.99924, 0.99973, 1.00001, 0.99973, 1, 0.99982, 1.00022, 1.00026, 1.00001, 1, 
1.00026, 1.0006, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 
0.99998, 1.00001, 1, 1.00054, 0.99977, 1.00084, 1.00007, 0.99973, 1.00013, 0.99924, 1.00001, 1.00001, 
0.99945, 0.91221, 1.00001, 1.00026, 0.99977, 1.0
 0022, 1.0006, 1.00001, 1.00001, 0.99999, 0.99977, 0.99933, 1.00022, 1.00054, 1.00001, 1.00065, 1.00026, 
1.00001, 1.0001, 1.00001, 1.00052, 1, 1.0006, 1.00001, 0.99945, 0.99897, 0.99968, 0.99924, 1.00036, 0.99945, 
0.99949, 1, 1.0006, 0.99897, 0.99918, 0.99968, 0.99911, 0.99924, 1, 0.99962, 1.01487, 1, 1.0005, 0.99973, 
1.00012, 1.00043, 1, 0.99995, 0.99994, 1.00036, 0.99947, 1.00019, 1.00063, 1.00025, 0.99924, 1.00036, 
0.99973, 1.00036, 1.00025, 1.00001, 1.00001, 1.00027, 1.0001, 1.00068, 1.00001, 1.0006, 1.0006, 1, 1.00008, 
0.99957, 0.99972, 0.9994, 0.99954, 0.99975, 1.00051, 1.00001, 1.00019, 1.00001, 1.0001, 0.99986, 1.00001, 
1.00001, 1.00038, 0.99954, 0.99954, 0.9994, 1.00066, 0.99999, 0.99977, 1.00022, 1.00054, 1.00001, 0.99977, 
1.00026, 0.99975, 1.0001, 1.00001, 0.99993, 0.9995, 0.99955, 1.00016, 0.99978, 0.99974, 1.00019, 1.00022, 
0.99955, 1.00053, 0.99973, 1.00089, 1.00005, 0.99967, 1.00048, 0.99973, 1.00002, 1.00034, 0.99973, 0.99973, 
0.99964, 1.00006, 1.00066, 0.99947, 0.999
 73, 0.98894, 0.99973, 1, 0.44898, 1, 0.99946, 1, 1.00039, 1.00082, 0.99991, 0.99991, 0.99985, 1.00022, 
1.00023, 1.00061, 1.00006, 0.99966, 0.99973, 0.99973, 0.99973, 1.00019, 1.0008, 1, 0.99924, 0.99924, 0.99924, 
0.99983, 1.00044, 0.99973, 0.99964, 0.98332, 1, 0.99973, 1, 1, 0.99962, 0.99895, 1.00016, 0.99977, 1.00016, 
0.99977, 1.00016, 0.99977, 1.00001, 1, 1, 1, 0.99973, 1, 1, 0.99955, 0.99924, 0.99924, 0.99924, 0.99924, 
0.99998, 0.99998, 0.99998, 0.99973, 0.99973, 0.99972, 1, 1, 1.00267, 0.99999, 0.99998, 0.99998, 1, 0.99998, 
1.66475, 1, 0.99973, 0.99973, 1.00023, 0.99973, 1.00423, 0.99925, 0.99999, 1, 0.99991, 0.99984, 1.00002, 
1.00002, 1.00002, 1.00002, 1.00049, 1, 1.00245, 1, 1, 1, 1, 0.96329, 1, 1.20985, 1.39713, 1.00003, 0.8254, 
1.00015, 1, 1.00035, 1.00027, 1.00031, 1.00031, 1.00003, 1.00031, 1.00031, 0.99999, 1.00003, 0.99999, 
0.99999, 1.41144, 1.6, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 
1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 
 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 
1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 
1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.40579, 1.40579, 1.36625, 0.99999, 1, 0.99861, 0.99861, 1, 
1.00026, 1.00026, 1.00026, 1.00026, 0.95317, 0.99999, 0.99999, 0.99999, 0.99999, 1.40483, 1, 0.99977, 
1.00054, 1, 1, 0.99953, 0.99962, 1.00042, 0.9995, 1, 1, 1, 1, 1, 1, 1, 1, 0.99998, 0.99998, 0.99998, 0.99998, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1];
+exports.HelveticaItalicFactors = HelveticaItalicFactors;
+const HelveticaItalicMetrics = {
+  lineHeight: 1.35,
+  lineGap: 0.2
+};
+exports.HelveticaItalicMetrics = HelveticaItalicMetrics;
+const HelveticaRegularFactors = [0.76116, 1, 1, 1.0006, 1.0006, 1.00006, 0.99973, 0.99973, 0.99982, 1.00001, 
1.00043, 0.99998, 0.99998, 0.99959, 1.00003, 1.0006, 0.99998, 1.0006, 1.0006, 0.99973, 0.99973, 0.99973, 
0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 1.0006, 1, 1.00003, 1.00003, 1.00003, 0.99973, 
0.99987, 1.00001, 1.00001, 0.99977, 0.99977, 1.00001, 1.00026, 1.00022, 0.99977, 1.0006, 1, 1.00001, 0.99973, 
0.99999, 0.99977, 1.00022, 1.00001, 1.00022, 0.99977, 1.00001, 1.00026, 0.99977, 1.00001, 1.00016, 1.00001, 
1.00001, 1.00026, 1.0006, 1.0006, 1.0006, 0.99949, 0.99973, 0.99998, 0.99973, 0.99973, 1, 0.99973, 0.99973, 
1.0006, 0.99973, 0.99973, 0.99924, 0.99924, 1, 0.99924, 0.99999, 0.99973, 0.99973, 0.99973, 0.99973, 0.99998, 
1, 1.0006, 0.99973, 1, 0.99977, 1, 1, 1, 1.00005, 1.0009, 1.00005, 1.00003, 0.99998, 0.99973, 0.99973, 
0.99973, 0.99973, 1.0009, 0.99973, 0.99998, 1.00025, 0.99968, 0.99973, 1.00003, 1.00025, 0.60299, 1.00024, 
1.06409, 1, 1, 0.99998, 1, 
 0.9998, 1.0006, 0.99998, 1, 0.99936, 0.99973, 1.00002, 1.00002, 1.00002, 1.00026, 1.00001, 1.00001, 1.00001, 
1.00001, 1.00001, 1.00001, 1, 0.99977, 1.00001, 1.00001, 1.00001, 1.00001, 1.0006, 1.0006, 1.0006, 1.0006, 
0.99977, 0.99977, 1.00022, 1.00022, 1.00022, 1.00022, 1.00022, 1.00003, 1.00022, 0.99977, 0.99977, 0.99977, 
0.99977, 1.00001, 1.00001, 1.00026, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99982, 1, 
0.99973, 0.99973, 0.99973, 0.99973, 1.0006, 1.0006, 1.0006, 1.0006, 0.99973, 0.99973, 0.99973, 0.99973, 
0.99973, 0.99973, 0.99973, 1.06409, 1.00026, 0.99973, 0.99973, 0.99973, 0.99973, 1, 0.99973, 1, 1.00001, 
0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 0.99977, 1, 0.99977, 1, 0.99977, 1, 0.99977, 1, 0.99977, 
1.04596, 0.99977, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 
0.99973, 1.00022, 0.99973, 1.00022, 0.99973, 1.00022, 0.99973, 1.00022, 0.99973, 0.99977, 0.99973, 0.99977, 
0.99973, 1.0006, 1.0006, 1.0006, 1.0006, 1.0
 006, 1.0006, 1.0006, 0.99924, 1.0006, 1.0006, 1.00019, 1.00034, 1, 0.99924, 1.00001, 1, 1, 0.99973, 0.99924, 
0.99973, 0.99924, 0.99973, 1.02572, 0.99973, 1.00005, 0.99973, 0.99924, 0.99977, 0.99973, 0.99977, 0.99973, 
0.99977, 0.99973, 0.99999, 0.9998, 0.99973, 1.00022, 0.99973, 1.00022, 0.99973, 1.00022, 0.99973, 1, 1.00016, 
0.99977, 0.99998, 0.99977, 0.99998, 0.99977, 0.99998, 1.00001, 1, 1.00001, 1, 1.00001, 1, 1.00001, 1, 
1.00026, 1.0006, 1.00026, 0.84533, 1.00026, 1.0006, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 
0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 1.00016, 0.99977, 1.00001, 1, 1.00001, 1.00026, 1, 
1.00026, 1, 1.00026, 1, 0.99924, 0.99973, 1.00001, 0.99973, 1, 0.99982, 1.00022, 1.00026, 1.00001, 1, 
1.00026, 1.0006, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 
0.99998, 0.99928, 1, 0.99977, 1.00013, 1.00055, 0.99947, 0.99945, 0.99941, 0.99924, 1.00001, 1.00001, 1.0004, 
0.91621, 1.00001, 1.00026, 0.99977, 1.
 00022, 1.0006, 1.00001, 1.00005, 0.99999, 0.99977, 1.00015, 1.00022, 0.99977, 1.00001, 0.99973, 1.00026, 
1.00001, 1.00019, 1.00001, 0.99946, 1, 1.0006, 1.00001, 0.99978, 1.00045, 0.99973, 0.99924, 1.00023, 0.99978, 
0.99966, 1, 1.00065, 1.00045, 1.00019, 0.99973, 0.99973, 0.99924, 1, 1, 0.96499, 1, 1.00055, 0.99973, 
1.00008, 1.00027, 1, 0.9997, 0.99995, 1.00023, 0.99933, 1.00019, 1.00015, 1.00031, 0.99924, 1.00023, 0.99973, 
1.00023, 1.00031, 1.00001, 0.99928, 1.00029, 1.00092, 1.00035, 1.00001, 1.0006, 1.0006, 1, 0.99988, 0.99975, 
1, 1.00082, 0.99561, 0.9996, 1.00035, 1.00001, 0.99962, 1.00001, 1.00092, 0.99964, 1.00001, 0.99963, 0.99999, 
1.00035, 1.00035, 1.00082, 0.99962, 0.99999, 0.99977, 1.00022, 1.00035, 1.00001, 0.99977, 1.00026, 0.9996, 
0.99967, 1.00001, 1.00034, 1.00074, 1.00054, 1.00053, 1.00063, 0.99971, 0.99962, 1.00035, 0.99975, 0.99977, 
0.99973, 1.00043, 0.99953, 1.0007, 0.99915, 0.99973, 1.00008, 0.99892, 1.00073, 1.00073, 1.00114, 0.99915, 
1.00073, 0.99955, 0.99973, 1.
 00092, 0.99973, 1, 0.99998, 1, 1.0003, 1, 1.00043, 1.00001, 0.99969, 1.0003, 1, 1.00035, 1.00001, 0.9995, 1, 
1.00092, 0.99973, 0.99973, 0.99973, 1.0007, 0.9995, 1, 0.99924, 1.0006, 0.99924, 0.99972, 1.00062, 0.99973, 
1.00114, 1.00073, 1, 0.99955, 1, 1, 1.00047, 0.99968, 1.00016, 0.99977, 1.00016, 0.99977, 1.00016, 0.99977, 
1.00001, 1, 1, 1, 0.99973, 1, 1, 0.99955, 0.99924, 0.99924, 0.99924, 0.99924, 0.99998, 0.99998, 0.99998, 
0.99973, 0.99973, 0.99972, 1, 1, 1.00267, 0.99999, 0.99998, 0.99998, 1, 0.99998, 1.66475, 1, 0.99973, 
0.99973, 1.00023, 0.99973, 0.99971, 0.99925, 1.00023, 1, 0.99991, 0.99984, 1.00002, 1.00002, 1.00002, 
1.00002, 1, 1, 1, 1, 1, 1, 1, 0.96329, 1, 1.20985, 1.39713, 1.00003, 0.8254, 1.00015, 1, 1.00035, 1.00027, 
1.00031, 1.00031, 0.99915, 1.00031, 1.00031, 0.99999, 1.00003, 0.99999, 0.99999, 1.41144, 1.6, 1.41144, 
1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 
1.41144, 1.41144, 1.41144, 1.41144, 1.41144,
  1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 
1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 
1.41144, 1.40579, 1.40579, 1.36625, 0.99999, 1, 0.99861, 0.99861, 1, 1.00026, 1.00026, 1.00026, 1.00026, 
0.95317, 0.99999, 0.99999, 0.99999, 0.99999, 1.40483, 1, 0.99977, 1.00054, 1, 1, 0.99953, 0.99962, 1.00042, 
0.9995, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1];
+exports.HelveticaRegularFactors = HelveticaRegularFactors;
+const HelveticaRegularMetrics = {
+  lineHeight: 1.2,
+  lineGap: 0.2
+};
+exports.HelveticaRegularMetrics = HelveticaRegularMetrics;
 
-      case "Circle":
-        return new CircleAnnotation(parameters);
+/***/ }),
+/* 15 */
+/***/ ((__unused_webpack_module, exports) => {
 
-      case "PolyLine":
-        return new PolylineAnnotation(parameters);
 
-      case "Polygon":
-        return new PolygonAnnotation(parameters);
 
-      case "Caret":
-        return new CaretAnnotation(parameters);
+Object.defineProperty(exports, "__esModule", ({
+  value: true
+}));
+exports.LiberationSansRegularWidths = exports.LiberationSansRegularMapping = 
exports.LiberationSansItalicWidths = exports.LiberationSansItalicMapping = exports.LiberationSansBoldWidths = 
exports.LiberationSansBoldMapping = exports.LiberationSansBoldItalicWidths = 
exports.LiberationSansBoldItalicMapping = void 0;
+const LiberationSansBoldWidths = [365, 0, 333, 278, 333, 474, 556, 556, 889, 722, 238, 333, 333, 389, 584, 
278, 333, 278, 278, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 333, 333, 584, 584, 584, 611, 975, 722, 
722, 722, 722, 667, 611, 778, 722, 278, 556, 722, 611, 833, 722, 778, 667, 778, 722, 667, 611, 722, 667, 944, 
667, 667, 611, 333, 278, 333, 584, 556, 333, 556, 611, 556, 611, 556, 333, 611, 611, 278, 278, 556, 278, 889, 
611, 611, 611, 611, 389, 556, 333, 611, 556, 778, 556, 556, 500, 389, 280, 389, 584, 333, 556, 556, 556, 556, 
280, 556, 333, 737, 370, 556, 584, 737, 552, 400, 549, 333, 333, 333, 576, 556, 278, 333, 333, 365, 556, 834, 
834, 834, 611, 722, 722, 722, 722, 722, 722, 1000, 722, 667, 667, 667, 667, 278, 278, 278, 278, 722, 722, 
778, 778, 778, 778, 778, 584, 778, 722, 722, 722, 722, 667, 667, 611, 556, 556, 556, 556, 556, 556, 889, 556, 
556, 556, 556, 556, 278, 278, 278, 278, 611, 611, 611, 611, 611, 611, 611, 549, 611, 611, 611, 611, 611, 556, 
611, 556, 722,
  556, 722, 556, 722, 556, 722, 556, 722, 556, 722, 556, 722, 556, 722, 719, 722, 611, 667, 556, 667, 556, 
667, 556, 667, 556, 667, 556, 778, 611, 778, 611, 778, 611, 778, 611, 722, 611, 722, 611, 278, 278, 278, 278, 
278, 278, 278, 278, 278, 278, 785, 556, 556, 278, 722, 556, 556, 611, 278, 611, 278, 611, 385, 611, 479, 611, 
278, 722, 611, 722, 611, 722, 611, 708, 723, 611, 778, 611, 778, 611, 778, 611, 1000, 944, 722, 389, 722, 
389, 722, 389, 667, 556, 667, 556, 667, 556, 667, 556, 611, 333, 611, 479, 611, 333, 722, 611, 722, 611, 722, 
611, 722, 611, 722, 611, 722, 611, 944, 778, 667, 556, 667, 611, 500, 611, 500, 611, 500, 278, 556, 722, 556, 
1000, 889, 778, 611, 667, 556, 611, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 465, 722, 333, 
853, 906, 474, 825, 927, 838, 278, 722, 722, 601, 719, 667, 611, 722, 778, 278, 722, 667, 833, 722, 644, 778, 
722, 667, 600, 611, 667, 821, 667, 809, 802, 278, 667, 615, 451, 611, 278, 582, 615, 610, 556, 606, 475, 460, 
611, 541, 278, 558,
  556, 612, 556, 445, 611, 766, 619, 520, 684, 446, 582, 715, 576, 753, 845, 278, 582, 611, 582, 845, 667, 
669, 885, 567, 711, 667, 278, 276, 556, 1094, 1062, 875, 610, 722, 622, 719, 722, 719, 722, 567, 712, 667, 
904, 626, 719, 719, 610, 702, 833, 722, 778, 719, 667, 722, 611, 622, 854, 667, 730, 703, 1005, 1019, 870, 
979, 719, 711, 1031, 719, 556, 618, 615, 417, 635, 556, 709, 497, 615, 615, 500, 635, 740, 604, 611, 604, 
611, 556, 490, 556, 875, 556, 615, 581, 833, 844, 729, 854, 615, 552, 854, 583, 556, 556, 611, 417, 552, 556, 
278, 281, 278, 969, 906, 611, 500, 615, 556, 604, 778, 611, 487, 447, 944, 778, 944, 778, 944, 778, 667, 556, 
333, 333, 556, 1000, 1000, 552, 278, 278, 278, 278, 500, 500, 500, 556, 556, 350, 1000, 1000, 240, 479, 333, 
333, 604, 333, 167, 396, 556, 556, 1094, 556, 885, 489, 1115, 1000, 768, 600, 834, 834, 834, 834, 1000, 500, 
1000, 500, 1000, 500, 500, 494, 612, 823, 713, 584, 549, 713, 979, 722, 274, 549, 549, 583, 549, 549, 604, 
584, 604, 604, 708, 625, 7
 08, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 
708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 
708, 729, 604, 604, 354, 354, 1000, 990, 990, 990, 990, 494, 604, 604, 604, 604, 354, 1021, 1052, 917, 750, 
750, 531, 656, 594, 510, 500, 750, 750, 611, 611, 333, 333, 333, 333, 333, 333, 333, 333, 222, 222, 333, 333, 
333, 333, 333, 333, 333, 333];
+exports.LiberationSansBoldWidths = LiberationSansBoldWidths;
+const LiberationSansBoldMapping = [-1, -1, -1, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 
47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 
74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 
101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 
123, 124, 125, 126, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 174, 175, 176, 177, 178, 179, 
180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 
202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 
224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 
246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 
268, 269, 270
 , 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 
292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 
314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 
336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 
358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 
380, 381, 382, 383, 402, 506, 507, 508, 509, 510, 511, 536, 537, 538, 539, 710, 711, 713, 728, 729, 730, 731, 
732, 733, 900, 901, 902, 903, 904, 905, 906, 908, 910, 911, 912, 913, 914, 915, 916, 917, 918, 919, 920, 921, 
922, 923, 924, 925, 926, 927, 928, 929, 931, 932, 933, 934, 935, 936, 937, 938, 939, 940, 941, 942, 943, 944, 
945, 946, 947, 948, 949, 950, 951, 952, 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 966, 
967, 968, 
 969, 970, 971, 972, 973, 974, 1024, 1025, 1026, 1027, 1028, 1029, 1030, 1031, 1032, 1033, 1034, 1035, 1036, 
1037, 1038, 1039, 1040, 1041, 1042, 1043, 1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 
1055, 1056, 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069, 1070, 1071, 1072, 
1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 
1091, 1092, 1093, 1094, 1095, 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107, 1108, 
1109, 1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1118, 1119, 1138, 1139, 1168, 1169, 7808, 7809, 7810, 
7811, 7812, 7813, 7922, 7923, 8208, 8209, 8211, 8212, 8213, 8215, 8216, 8217, 8218, 8219, 8220, 8221, 8222, 
8224, 8225, 8226, 8230, 8240, 8242, 8243, 8249, 8250, 8252, 8254, 8260, 8319, 8355, 8356, 8359, 8364, 8453, 
8467, 8470, 8482, 8486, 8494, 8539, 8540, 8541, 8542, 8592, 8593, 8594, 8595, 8596, 8597, 8616, 8706, 8710, 
8719, 8721, 8722, 8730, 8
 734, 8735, 8745, 8747, 8776, 8800, 8801, 8804, 8805, 8962, 8976, 8992, 8993, 9472, 9474, 9484, 9488, 9492, 
9496, 9500, 9508, 9516, 9524, 9532, 9552, 9553, 9554, 9555, 9556, 9557, 9558, 9559, 9560, 9561, 9562, 9563, 
9564, 9565, 9566, 9567, 9568, 9569, 9570, 9571, 9572, 9573, 9574, 9575, 9576, 9577, 9578, 9579, 9580, 9600, 
9604, 9608, 9612, 9616, 9617, 9618, 9619, 9632, 9633, 9642, 9643, 9644, 9650, 9658, 9660, 9668, 9674, 9675, 
9679, 9688, 9689, 9702, 9786, 9787, 9788, 9792, 9794, 9824, 9827, 9829, 9830, 9834, 9835, 9836, 61441, 61442, 
61445, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1];
+exports.LiberationSansBoldMapping = LiberationSansBoldMapping;
+const LiberationSansBoldItalicWidths = [365, 0, 333, 278, 333, 474, 556, 556, 889, 722, 238, 333, 333, 389, 
584, 278, 333, 278, 278, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 333, 333, 584, 584, 584, 611, 975, 
722, 722, 722, 722, 667, 611, 778, 722, 278, 556, 722, 611, 833, 722, 778, 667, 778, 722, 667, 611, 722, 667, 
944, 667, 667, 611, 333, 278, 333, 584, 556, 333, 556, 611, 556, 611, 556, 333, 611, 611, 278, 278, 556, 278, 
889, 611, 611, 611, 611, 389, 556, 333, 611, 556, 778, 556, 556, 500, 389, 280, 389, 584, 333, 556, 556, 556, 
556, 280, 556, 333, 737, 370, 556, 584, 737, 552, 400, 549, 333, 333, 333, 576, 556, 278, 333, 333, 365, 556, 
834, 834, 834, 611, 722, 722, 722, 722, 722, 722, 1000, 722, 667, 667, 667, 667, 278, 278, 278, 278, 722, 
722, 778, 778, 778, 778, 778, 584, 778, 722, 722, 722, 722, 667, 667, 611, 556, 556, 556, 556, 556, 556, 889, 
556, 556, 556, 556, 556, 278, 278, 278, 278, 611, 611, 611, 611, 611, 611, 611, 549, 611, 611, 611, 611, 611, 
556, 611, 556
 , 722, 556, 722, 556, 722, 556, 722, 556, 722, 556, 722, 556, 722, 556, 722, 740, 722, 611, 667, 556, 667, 
556, 667, 556, 667, 556, 667, 556, 778, 611, 778, 611, 778, 611, 778, 611, 722, 611, 722, 611, 278, 278, 278, 
278, 278, 278, 278, 278, 278, 278, 782, 556, 556, 278, 722, 556, 556, 611, 278, 611, 278, 611, 396, 611, 479, 
611, 278, 722, 611, 722, 611, 722, 611, 708, 723, 611, 778, 611, 778, 611, 778, 611, 1000, 944, 722, 389, 
722, 389, 722, 389, 667, 556, 667, 556, 667, 556, 667, 556, 611, 333, 611, 479, 611, 333, 722, 611, 722, 611, 
722, 611, 722, 611, 722, 611, 722, 611, 944, 778, 667, 556, 667, 611, 500, 611, 500, 611, 500, 278, 556, 722, 
556, 1000, 889, 778, 611, 667, 556, 611, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 722, 
333, 854, 906, 473, 844, 930, 847, 278, 722, 722, 610, 671, 667, 611, 722, 778, 278, 722, 667, 833, 722, 657, 
778, 718, 667, 590, 611, 667, 822, 667, 829, 781, 278, 667, 620, 479, 611, 278, 591, 620, 621, 556, 610, 479, 
492, 611, 558, 278
 , 566, 556, 603, 556, 450, 611, 712, 605, 532, 664, 409, 591, 704, 578, 773, 834, 278, 591, 611, 591, 834, 
667, 667, 886, 614, 719, 667, 278, 278, 556, 1094, 1042, 854, 622, 719, 677, 719, 722, 708, 722, 614, 722, 
667, 927, 643, 719, 719, 615, 687, 833, 722, 778, 719, 667, 722, 611, 677, 781, 667, 729, 708, 979, 989, 854, 
1000, 708, 719, 1042, 729, 556, 619, 604, 534, 618, 556, 736, 510, 611, 611, 507, 622, 740, 604, 611, 611, 
611, 556, 889, 556, 885, 556, 646, 583, 889, 935, 707, 854, 594, 552, 865, 589, 556, 556, 611, 469, 563, 556, 
278, 278, 278, 969, 906, 611, 507, 619, 556, 611, 778, 611, 575, 467, 944, 778, 944, 778, 944, 778, 667, 556, 
333, 333, 556, 1000, 1000, 552, 278, 278, 278, 278, 500, 500, 500, 556, 556, 350, 1000, 1000, 240, 479, 333, 
333, 604, 333, 167, 396, 556, 556, 1104, 556, 885, 516, 1146, 1000, 768, 600, 834, 834, 834, 834, 999, 500, 
1000, 500, 1000, 500, 500, 494, 612, 823, 713, 584, 549, 713, 979, 722, 274, 549, 549, 583, 549, 549, 604, 
584, 604, 604, 708, 62
 5, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 
708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 
708, 708, 729, 604, 604, 354, 354, 1000, 990, 990, 990, 990, 494, 604, 604, 604, 604, 354, 1021, 1052, 917, 
750, 750, 531, 656, 594, 510, 500, 750, 750, 611, 611, 333, 333, 333, 333, 333, 333, 333, 333, 222, 222, 333, 
333, 333, 333, 333, 333, 333, 333];
+exports.LiberationSansBoldItalicWidths = LiberationSansBoldItalicWidths;
+const LiberationSansBoldItalicMapping = [-1, -1, -1, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 
46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 
73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 
100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 
122, 123, 124, 125, 126, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 174, 175, 176, 177, 178, 
179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 
201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 
223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 
245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 
267, 268, 26
 9, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 
291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 
313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 
335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 
357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 
379, 380, 381, 382, 383, 402, 506, 507, 508, 509, 510, 511, 536, 537, 538, 539, 710, 711, 713, 728, 729, 730, 
731, 732, 733, 900, 901, 902, 903, 904, 905, 906, 908, 910, 911, 912, 913, 914, 915, 916, 917, 918, 919, 920, 
921, 922, 923, 924, 925, 926, 927, 928, 929, 931, 932, 933, 934, 935, 936, 937, 938, 939, 940, 941, 942, 943, 
944, 945, 946, 947, 948, 949, 950, 951, 952, 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 
966, 967,
  968, 969, 970, 971, 972, 973, 974, 1024, 1025, 1026, 1027, 1028, 1029, 1030, 1031, 1032, 1033, 1034, 1035, 
1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043, 1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 
1054, 1055, 1056, 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069, 1070, 1071, 
1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1088, 1089, 
1090, 1091, 1092, 1093, 1094, 1095, 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107, 
1108, 1109, 1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1118, 1119, 1138, 1139, 1168, 1169, 7808, 7809, 
7810, 7811, 7812, 7813, 7922, 7923, 8208, 8209, 8211, 8212, 8213, 8215, 8216, 8217, 8218, 8219, 8220, 8221, 
8222, 8224, 8225, 8226, 8230, 8240, 8242, 8243, 8249, 8250, 8252, 8254, 8260, 8319, 8355, 8356, 8359, 8364, 
8453, 8467, 8470, 8482, 8486, 8494, 8539, 8540, 8541, 8542, 8592, 8593, 8594, 8595, 8596, 8597, 8616, 8706, 
8710, 8719, 8721, 8722, 8
 730, 8734, 8735, 8745, 8747, 8776, 8800, 8801, 8804, 8805, 8962, 8976, 8992, 8993, 9472, 9474, 9484, 9488, 
9492, 9496, 9500, 9508, 9516, 9524, 9532, 9552, 9553, 9554, 9555, 9556, 9557, 9558, 9559, 9560, 9561, 9562, 
9563, 9564, 9565, 9566, 9567, 9568, 9569, 9570, 9571, 9572, 9573, 9574, 9575, 9576, 9577, 9578, 9579, 9580, 
9600, 9604, 9608, 9612, 9616, 9617, 9618, 9619, 9632, 9633, 9642, 9643, 9644, 9650, 9658, 9660, 9668, 9674, 
9675, 9679, 9688, 9689, 9702, 9786, 9787, 9788, 9792, 9794, 9824, 9827, 9829, 9830, 9834, 9835, 9836, 61441, 
61442, 61445, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1];
+exports.LiberationSansBoldItalicMapping = LiberationSansBoldItalicMapping;
+const LiberationSansItalicWidths = [365, 0, 333, 278, 278, 355, 556, 556, 889, 667, 191, 333, 333, 389, 584, 
278, 333, 278, 278, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 278, 278, 584, 584, 584, 556, 1015, 
667, 667, 722, 722, 667, 611, 778, 722, 278, 500, 667, 556, 833, 722, 778, 667, 778, 722, 667, 611, 722, 667, 
944, 667, 667, 611, 278, 278, 278, 469, 556, 333, 556, 556, 500, 556, 556, 278, 556, 556, 222, 222, 500, 222, 
833, 556, 556, 556, 556, 333, 500, 278, 556, 500, 722, 500, 500, 500, 334, 260, 334, 584, 333, 556, 556, 556, 
556, 260, 556, 333, 737, 370, 556, 584, 737, 552, 400, 549, 333, 333, 333, 576, 537, 278, 333, 333, 365, 556, 
834, 834, 834, 611, 667, 667, 667, 667, 667, 667, 1000, 722, 667, 667, 667, 667, 278, 278, 278, 278, 722, 
722, 778, 778, 778, 778, 778, 584, 778, 722, 722, 722, 722, 667, 667, 611, 556, 556, 556, 556, 556, 556, 889, 
500, 556, 556, 556, 556, 278, 278, 278, 278, 556, 556, 556, 556, 556, 556, 556, 549, 611, 556, 556, 556, 556, 
500, 556, 500, 6
 67, 556, 667, 556, 667, 556, 722, 500, 722, 500, 722, 500, 722, 500, 722, 625, 722, 556, 667, 556, 667, 556, 
667, 556, 667, 556, 667, 556, 778, 556, 778, 556, 778, 556, 778, 556, 722, 556, 722, 556, 278, 278, 278, 278, 
278, 278, 278, 222, 278, 278, 733, 444, 500, 222, 667, 500, 500, 556, 222, 556, 222, 556, 281, 556, 400, 556, 
222, 722, 556, 722, 556, 722, 556, 615, 723, 556, 778, 556, 778, 556, 778, 556, 1000, 944, 722, 333, 722, 
333, 722, 333, 667, 500, 667, 500, 667, 500, 667, 500, 611, 278, 611, 354, 611, 278, 722, 556, 722, 556, 722, 
556, 722, 556, 722, 556, 722, 556, 944, 722, 667, 500, 667, 611, 500, 611, 500, 611, 500, 222, 556, 667, 556, 
1000, 889, 778, 611, 667, 500, 611, 278, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 667, 278, 
789, 846, 389, 794, 865, 775, 222, 667, 667, 570, 671, 667, 611, 722, 778, 278, 667, 667, 833, 722, 648, 778, 
725, 667, 600, 611, 667, 837, 667, 831, 761, 278, 667, 570, 439, 555, 222, 550, 570, 571, 500, 556, 439, 463, 
555, 542, 222, 5
 00, 492, 548, 500, 447, 556, 670, 573, 486, 603, 374, 550, 652, 546, 728, 779, 222, 550, 556, 550, 779, 667, 
667, 843, 544, 708, 667, 278, 278, 500, 1066, 982, 844, 589, 715, 639, 724, 667, 651, 667, 544, 704, 667, 
917, 614, 715, 715, 589, 686, 833, 722, 778, 725, 667, 722, 611, 639, 795, 667, 727, 673, 920, 923, 805, 886, 
651, 694, 1022, 682, 556, 562, 522, 493, 553, 556, 688, 465, 556, 556, 472, 564, 686, 550, 556, 556, 556, 
500, 833, 500, 835, 500, 572, 518, 830, 851, 621, 736, 526, 492, 752, 534, 556, 556, 556, 378, 496, 500, 222, 
222, 222, 910, 828, 556, 472, 565, 500, 556, 778, 556, 492, 339, 944, 722, 944, 722, 944, 722, 667, 500, 333, 
333, 556, 1000, 1000, 552, 222, 222, 222, 222, 333, 333, 333, 556, 556, 350, 1000, 1000, 188, 354, 333, 333, 
500, 333, 167, 365, 556, 556, 1094, 556, 885, 323, 1083, 1000, 768, 600, 834, 834, 834, 834, 1000, 500, 998, 
500, 1000, 500, 500, 494, 612, 823, 713, 584, 549, 713, 979, 719, 274, 549, 549, 584, 549, 549, 604, 584, 
604, 604, 708, 625, 70
 8, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 
708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 
708, 729, 604, 604, 354, 354, 1000, 990, 990, 990, 990, 494, 604, 604, 604, 604, 354, 1021, 1052, 917, 750, 
750, 531, 656, 594, 510, 500, 750, 750, 500, 500, 333, 333, 333, 333, 333, 333, 333, 333, 222, 222, 294, 294, 
324, 324, 316, 328, 398, 285];
+exports.LiberationSansItalicWidths = LiberationSansItalicWidths;
+const LiberationSansItalicMapping = [-1, -1, -1, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 
47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 
74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 
101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 
123, 124, 125, 126, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 174, 175, 176, 177, 178, 179, 
180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 
202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 
224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 
246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 
268, 269, 2
 70, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 
292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 
314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 
336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 
358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 
380, 381, 382, 383, 402, 506, 507, 508, 509, 510, 511, 536, 537, 538, 539, 710, 711, 713, 728, 729, 730, 731, 
732, 733, 900, 901, 902, 903, 904, 905, 906, 908, 910, 911, 912, 913, 914, 915, 916, 917, 918, 919, 920, 921, 
922, 923, 924, 925, 926, 927, 928, 929, 931, 932, 933, 934, 935, 936, 937, 938, 939, 940, 941, 942, 943, 944, 
945, 946, 947, 948, 949, 950, 951, 952, 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 966, 
967, 968
 , 969, 970, 971, 972, 973, 974, 1024, 1025, 1026, 1027, 1028, 1029, 1030, 1031, 1032, 1033, 1034, 1035, 
1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043, 1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 
1054, 1055, 1056, 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069, 1070, 1071, 
1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1088, 1089, 
1090, 1091, 1092, 1093, 1094, 1095, 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107, 
1108, 1109, 1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1118, 1119, 1138, 1139, 1168, 1169, 7808, 7809, 
7810, 7811, 7812, 7813, 7922, 7923, 8208, 8209, 8211, 8212, 8213, 8215, 8216, 8217, 8218, 8219, 8220, 8221, 
8222, 8224, 8225, 8226, 8230, 8240, 8242, 8243, 8249, 8250, 8252, 8254, 8260, 8319, 8355, 8356, 8359, 8364, 
8453, 8467, 8470, 8482, 8486, 8494, 8539, 8540, 8541, 8542, 8592, 8593, 8594, 8595, 8596, 8597, 8616, 8706, 
8710, 8719, 8721, 8722, 8730,
  8734, 8735, 8745, 8747, 8776, 8800, 8801, 8804, 8805, 8962, 8976, 8992, 8993, 9472, 9474, 9484, 9488, 9492, 
9496, 9500, 9508, 9516, 9524, 9532, 9552, 9553, 9554, 9555, 9556, 9557, 9558, 9559, 9560, 9561, 9562, 9563, 
9564, 9565, 9566, 9567, 9568, 9569, 9570, 9571, 9572, 9573, 9574, 9575, 9576, 9577, 9578, 9579, 9580, 9600, 
9604, 9608, 9612, 9616, 9617, 9618, 9619, 9632, 9633, 9642, 9643, 9644, 9650, 9658, 9660, 9668, 9674, 9675, 
9679, 9688, 9689, 9702, 9786, 9787, 9788, 9792, 9794, 9824, 9827, 9829, 9830, 9834, 9835, 9836, 61441, 61442, 
61445, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1];
+exports.LiberationSansItalicMapping = LiberationSansItalicMapping;
+const LiberationSansRegularWidths = [365, 0, 333, 278, 278, 355, 556, 556, 889, 667, 191, 333, 333, 389, 
584, 278, 333, 278, 278, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 278, 278, 584, 584, 584, 556, 
1015, 667, 667, 722, 722, 667, 611, 778, 722, 278, 500, 667, 556, 833, 722, 778, 667, 778, 722, 667, 611, 
722, 667, 944, 667, 667, 611, 278, 278, 278, 469, 556, 333, 556, 556, 500, 556, 556, 278, 556, 556, 222, 222, 
500, 222, 833, 556, 556, 556, 556, 333, 500, 278, 556, 500, 722, 500, 500, 500, 334, 260, 334, 584, 333, 556, 
556, 556, 556, 260, 556, 333, 737, 370, 556, 584, 737, 552, 400, 549, 333, 333, 333, 576, 537, 278, 333, 333, 
365, 556, 834, 834, 834, 611, 667, 667, 667, 667, 667, 667, 1000, 722, 667, 667, 667, 667, 278, 278, 278, 
278, 722, 722, 778, 778, 778, 778, 778, 584, 778, 722, 722, 722, 722, 667, 667, 611, 556, 556, 556, 556, 556, 
556, 889, 500, 556, 556, 556, 556, 278, 278, 278, 278, 556, 556, 556, 556, 556, 556, 556, 549, 611, 556, 556, 
556, 556, 500, 556, 500, 
 667, 556, 667, 556, 667, 556, 722, 500, 722, 500, 722, 500, 722, 500, 722, 615, 722, 556, 667, 556, 667, 
556, 667, 556, 667, 556, 667, 556, 778, 556, 778, 556, 778, 556, 778, 556, 722, 556, 722, 556, 278, 278, 278, 
278, 278, 278, 278, 222, 278, 278, 735, 444, 500, 222, 667, 500, 500, 556, 222, 556, 222, 556, 292, 556, 334, 
556, 222, 722, 556, 722, 556, 722, 556, 604, 723, 556, 778, 556, 778, 556, 778, 556, 1000, 944, 722, 333, 
722, 333, 722, 333, 667, 500, 667, 500, 667, 500, 667, 500, 611, 278, 611, 375, 611, 278, 722, 556, 722, 556, 
722, 556, 722, 556, 722, 556, 722, 556, 944, 722, 667, 500, 667, 611, 500, 611, 500, 611, 500, 222, 556, 667, 
556, 1000, 889, 778, 611, 667, 500, 611, 278, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 667, 
278, 784, 838, 384, 774, 855, 752, 222, 667, 667, 551, 668, 667, 611, 722, 778, 278, 667, 668, 833, 722, 650, 
778, 722, 667, 618, 611, 667, 798, 667, 835, 748, 278, 667, 578, 446, 556, 222, 547, 578, 575, 500, 557, 446, 
441, 556, 556, 222, 
 500, 500, 576, 500, 448, 556, 690, 569, 482, 617, 395, 547, 648, 525, 713, 781, 222, 547, 556, 547, 781, 
667, 667, 865, 542, 719, 667, 278, 278, 500, 1057, 1010, 854, 583, 722, 635, 719, 667, 656, 667, 542, 677, 
667, 923, 604, 719, 719, 583, 656, 833, 722, 778, 719, 667, 722, 611, 635, 760, 667, 740, 667, 917, 938, 792, 
885, 656, 719, 1010, 722, 556, 573, 531, 365, 583, 556, 669, 458, 559, 559, 438, 583, 688, 552, 556, 542, 
556, 500, 458, 500, 823, 500, 573, 521, 802, 823, 625, 719, 521, 510, 750, 542, 556, 556, 556, 365, 510, 500, 
222, 278, 222, 906, 812, 556, 438, 559, 500, 552, 778, 556, 489, 411, 944, 722, 944, 722, 944, 722, 667, 500, 
333, 333, 556, 1000, 1000, 552, 222, 222, 222, 222, 333, 333, 333, 556, 556, 350, 1000, 1000, 188, 354, 333, 
333, 500, 333, 167, 365, 556, 556, 1094, 556, 885, 323, 1073, 1000, 768, 600, 834, 834, 834, 834, 1000, 500, 
1000, 500, 1000, 500, 500, 494, 612, 823, 713, 584, 549, 713, 979, 719, 274, 549, 549, 583, 549, 549, 604, 
584, 604, 604, 708, 625,
  708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 
708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 
708, 708, 729, 604, 604, 354, 354, 1000, 990, 990, 990, 990, 494, 604, 604, 604, 604, 354, 1021, 1052, 917, 
750, 750, 531, 656, 594, 510, 500, 750, 750, 500, 500, 333, 333, 333, 333, 333, 333, 333, 333, 222, 222, 294, 
294, 324, 324, 316, 328, 398, 285];
+exports.LiberationSansRegularWidths = LiberationSansRegularWidths;
+const LiberationSansRegularMapping = [-1, -1, -1, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 
46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 
73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 
100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 
122, 123, 124, 125, 126, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 174, 175, 176, 177, 178, 
179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 
201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 
223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 
245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 
267, 268, 269, 
 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 
291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 
313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 
335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 
357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 
379, 380, 381, 382, 383, 402, 506, 507, 508, 509, 510, 511, 536, 537, 538, 539, 710, 711, 713, 728, 729, 730, 
731, 732, 733, 900, 901, 902, 903, 904, 905, 906, 908, 910, 911, 912, 913, 914, 915, 916, 917, 918, 919, 920, 
921, 922, 923, 924, 925, 926, 927, 928, 929, 931, 932, 933, 934, 935, 936, 937, 938, 939, 940, 941, 942, 943, 
944, 945, 946, 947, 948, 949, 950, 951, 952, 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 
966, 967, 96
 8, 969, 970, 971, 972, 973, 974, 1024, 1025, 1026, 1027, 1028, 1029, 1030, 1031, 1032, 1033, 1034, 1035, 
1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043, 1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 
1054, 1055, 1056, 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069, 1070, 1071, 
1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1088, 1089, 
1090, 1091, 1092, 1093, 1094, 1095, 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107, 
1108, 1109, 1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1118, 1119, 1138, 1139, 1168, 1169, 7808, 7809, 
7810, 7811, 7812, 7813, 7922, 7923, 8208, 8209, 8211, 8212, 8213, 8215, 8216, 8217, 8218, 8219, 8220, 8221, 
8222, 8224, 8225, 8226, 8230, 8240, 8242, 8243, 8249, 8250, 8252, 8254, 8260, 8319, 8355, 8356, 8359, 8364, 
8453, 8467, 8470, 8482, 8486, 8494, 8539, 8540, 8541, 8542, 8592, 8593, 8594, 8595, 8596, 8597, 8616, 8706, 
8710, 8719, 8721, 8722, 8730
 , 8734, 8735, 8745, 8747, 8776, 8800, 8801, 8804, 8805, 8962, 8976, 8992, 8993, 9472, 9474, 9484, 9488, 
9492, 9496, 9500, 9508, 9516, 9524, 9532, 9552, 9553, 9554, 9555, 9556, 9557, 9558, 9559, 9560, 9561, 9562, 
9563, 9564, 9565, 9566, 9567, 9568, 9569, 9570, 9571, 9572, 9573, 9574, 9575, 9576, 9577, 9578, 9579, 9580, 
9600, 9604, 9608, 9612, 9616, 9617, 9618, 9619, 9632, 9633, 9642, 9643, 9644, 9650, 9658, 9660, 9668, 9674, 
9675, 9679, 9688, 9689, 9702, 9786, 9787, 9788, 9792, 9794, 9824, 9827, 9829, 9830, 9834, 9835, 9836, 61441, 
61442, 61445, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1];
+exports.LiberationSansRegularMapping = LiberationSansRegularMapping;
 
-      case "Ink":
-        return new InkAnnotation(parameters);
+/***/ }),
+/* 16 */
+/***/ ((__unused_webpack_module, exports) => {
 
-      case "Highlight":
-        return new HighlightAnnotation(parameters);
 
-      case "Underline":
-        return new UnderlineAnnotation(parameters);
 
-      case "Squiggly":
-        return new SquigglyAnnotation(parameters);
+Object.defineProperty(exports, "__esModule", ({
+  value: true
+}));
+exports.MyriadProRegularMetrics = exports.MyriadProRegularFactors = exports.MyriadProItalicMetrics = 
exports.MyriadProItalicFactors = exports.MyriadProBoldMetrics = exports.MyriadProBoldItalicMetrics = 
exports.MyriadProBoldItalicFactors = exports.MyriadProBoldFactors = void 0;
+const MyriadProBoldFactors = [1.36898, 1, 1, 0.72706, 0.80479, 0.83734, 0.98894, 0.99793, 0.9897, 0.93884, 
0.86209, 0.94292, 0.94292, 1.16661, 1.02058, 0.93582, 0.96694, 0.93582, 1.19137, 0.99793, 0.99793, 0.99793, 
0.99793, 0.99793, 0.99793, 0.99793, 0.99793, 0.99793, 0.99793, 0.78076, 0.78076, 1.02058, 1.02058, 1.02058, 
0.72851, 0.78966, 0.90838, 0.83637, 0.82391, 0.96376, 0.80061, 0.86275, 0.8768, 0.95407, 1.0258, 0.73901, 
0.85022, 0.83655, 1.0156, 0.95546, 0.92179, 0.87107, 0.92179, 0.82114, 0.8096, 0.89713, 0.94438, 0.95353, 
0.94083, 0.91905, 0.90406, 0.9446, 0.94292, 1.18777, 0.94292, 1.02058, 0.89903, 0.90088, 0.94938, 0.97898, 
0.81093, 0.97571, 0.94938, 1.024, 0.9577, 0.95933, 0.98621, 1.0474, 0.97455, 0.98981, 0.9672, 0.95933, 
0.9446, 0.97898, 0.97407, 0.97646, 0.78036, 1.10208, 0.95442, 0.95298, 0.97579, 0.9332, 0.94039, 0.938, 
0.80687, 1.01149, 0.80687, 1.02058, 0.80479, 0.99793, 0.99793, 0.99793, 0.99793, 1.01149, 1.00872, 0.90088, 
0.91882, 1.0213, 0.8361, 1.02058, 0.6229
 5, 0.54324, 0.89022, 1.08595, 1, 1, 0.90088, 1, 0.97455, 0.93582, 0.90088, 1, 1.05686, 0.8361, 0.99642, 
0.99642, 0.99642, 0.72851, 0.90838, 0.90838, 0.90838, 0.90838, 0.90838, 0.90838, 0.868, 0.82391, 0.80061, 
0.80061, 0.80061, 0.80061, 1.0258, 1.0258, 1.0258, 1.0258, 0.97484, 0.95546, 0.92179, 0.92179, 0.92179, 
0.92179, 0.92179, 1.02058, 0.92179, 0.94438, 0.94438, 0.94438, 0.94438, 0.90406, 0.86958, 0.98225, 0.94938, 
0.94938, 0.94938, 0.94938, 0.94938, 0.94938, 0.9031, 0.81093, 0.94938, 0.94938, 0.94938, 0.94938, 0.98621, 
0.98621, 0.98621, 0.98621, 0.93969, 0.95933, 0.9446, 0.9446, 0.9446, 0.9446, 0.9446, 1.08595, 0.9446, 
0.95442, 0.95442, 0.95442, 0.95442, 0.94039, 0.97898, 0.94039, 0.90838, 0.94938, 0.90838, 0.94938, 0.90838, 
0.94938, 0.82391, 0.81093, 0.82391, 0.81093, 0.82391, 0.81093, 0.82391, 0.81093, 0.96376, 0.84313, 0.97484, 
0.97571, 0.80061, 0.94938, 0.80061, 0.94938, 0.80061, 0.94938, 0.80061, 0.94938, 0.80061, 0.94938, 0.8768, 
0.9577, 0.8768, 0.9577, 0.8768, 0.9577, 1, 
 1, 0.95407, 0.95933, 0.97069, 0.95933, 1.0258, 0.98621, 1.0258, 0.98621, 1.0258, 0.98621, 1.0258, 0.98621, 
1.0258, 0.98621, 0.887, 1.01591, 0.73901, 1.0474, 1, 1, 0.97455, 0.83655, 0.98981, 1, 1, 0.83655, 0.73977, 
0.83655, 0.73903, 0.84638, 1.033, 0.95546, 0.95933, 1, 1, 0.95546, 0.95933, 0.8271, 0.95417, 0.95933, 
0.92179, 0.9446, 0.92179, 0.9446, 0.92179, 0.9446, 0.936, 0.91964, 0.82114, 0.97646, 1, 1, 0.82114, 0.97646, 
0.8096, 0.78036, 0.8096, 0.78036, 1, 1, 0.8096, 0.78036, 1, 1, 0.89713, 0.77452, 0.89713, 1.10208, 0.94438, 
0.95442, 0.94438, 0.95442, 0.94438, 0.95442, 0.94438, 0.95442, 0.94438, 0.95442, 0.94438, 0.95442, 0.94083, 
0.97579, 0.90406, 0.94039, 0.90406, 0.9446, 0.938, 0.9446, 0.938, 0.9446, 0.938, 1, 0.99793, 0.90838, 
0.94938, 0.868, 0.9031, 0.92179, 0.9446, 1, 1, 0.89713, 1.10208, 0.90088, 0.90088, 0.90088, 0.90088, 0.90088, 
0.90088, 0.90088, 0.90088, 0.90088, 0.90989, 0.9358, 0.91945, 0.83181, 0.75261, 0.87992, 0.82976, 0.96034, 
0.83689, 0.97268, 1.0078, 0.90838, 0.
 83637, 0.8019, 0.90157, 0.80061, 0.9446, 0.95407, 0.92436, 1.0258, 0.85022, 0.97153, 1.0156, 0.95546, 
0.89192, 0.92179, 0.92361, 0.87107, 0.96318, 0.89713, 0.93704, 0.95638, 0.91905, 0.91709, 0.92796, 1.0258, 
0.93704, 0.94836, 1.0373, 0.95933, 1.0078, 0.95871, 0.94836, 0.96174, 0.92601, 0.9498, 0.98607, 0.95776, 
0.95933, 1.05453, 1.0078, 0.98275, 0.9314, 0.95617, 0.91701, 1.05993, 0.9446, 0.78367, 0.9553, 1, 0.86832, 
1.0128, 0.95871, 0.99394, 0.87548, 0.96361, 0.86774, 1.0078, 0.95871, 0.9446, 0.95871, 0.86774, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.94083, 0.97579, 0.94083, 0.97579, 
0.94083, 0.97579, 0.90406, 0.94039, 0.96694, 1, 0.89903, 1, 1, 1, 0.93582, 0.93582, 0.93582, 1, 0.908, 0.908, 
0.918, 0.94219, 0.94219, 0.96544, 
 1, 1.285, 1, 1, 0.81079, 0.81079, 1, 1, 0.74854, 1, 1, 1, 1, 0.99793, 1, 1, 1, 0.65, 1, 1.36145, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1.17173, 1, 0.80535, 0.76169, 1.02058, 1.0732, 1.05486, 1, 1, 1.30692, 1.08595, 1.08595, 
1, 1.08595, 1.08595, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.16161, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1];
+exports.MyriadProBoldFactors = MyriadProBoldFactors;
+const MyriadProBoldMetrics = {
+  lineHeight: 1.2,
+  lineGap: 0.2
+};
+exports.MyriadProBoldMetrics = MyriadProBoldMetrics;
+const MyriadProBoldItalicFactors = [1.36898, 1, 1, 0.66227, 0.80779, 0.81625, 0.97276, 0.97276, 0.97733, 
0.92222, 0.83266, 0.94292, 0.94292, 1.16148, 1.02058, 0.93582, 0.96694, 0.93582, 1.17337, 0.97276, 0.97276, 
0.97276, 0.97276, 0.97276, 0.97276, 0.97276, 0.97276, 0.97276, 0.97276, 0.78076, 0.78076, 1.02058, 1.02058, 
1.02058, 0.71541, 0.76813, 0.85576, 0.80591, 0.80729, 0.94299, 0.77512, 0.83655, 0.86523, 0.92222, 0.98621, 
0.71743, 0.81698, 0.79726, 0.98558, 0.92222, 0.90637, 0.83809, 0.90637, 0.80729, 0.76463, 0.86275, 0.90699, 
0.91605, 0.9154, 0.85308, 0.85458, 0.90531, 0.94292, 1.21296, 0.94292, 1.02058, 0.89903, 1.18616, 0.99613, 
0.91677, 0.78216, 0.91677, 0.90083, 0.98796, 0.9135, 0.92168, 0.95381, 0.98981, 0.95298, 0.95381, 0.93459, 
0.92168, 0.91513, 0.92004, 0.91677, 0.95077, 0.748, 1.04502, 0.91677, 0.92061, 0.94236, 0.89544, 0.89364, 
0.9, 0.80687, 0.8578, 0.80687, 1.02058, 0.80779, 0.97276, 0.97276, 0.97276, 0.97276, 0.8578, 0.99973, 
1.18616, 0.91339, 1.08074, 0.82891, 1.
 02058, 0.55509, 0.71526, 0.89022, 1.08595, 1, 1, 1.18616, 1, 0.96736, 0.93582, 1.18616, 1, 1.04864, 0.82711, 
0.99043, 0.99043, 0.99043, 0.71541, 0.85576, 0.85576, 0.85576, 0.85576, 0.85576, 0.85576, 0.845, 0.80729, 
0.77512, 0.77512, 0.77512, 0.77512, 0.98621, 0.98621, 0.98621, 0.98621, 0.95961, 0.92222, 0.90637, 0.90637, 
0.90637, 0.90637, 0.90637, 1.02058, 0.90251, 0.90699, 0.90699, 0.90699, 0.90699, 0.85458, 0.83659, 0.94951, 
0.99613, 0.99613, 0.99613, 0.99613, 0.99613, 0.99613, 0.85811, 0.78216, 0.90083, 0.90083, 0.90083, 0.90083, 
0.95381, 0.95381, 0.95381, 0.95381, 0.9135, 0.92168, 0.91513, 0.91513, 0.91513, 0.91513, 0.91513, 1.08595, 
0.91677, 0.91677, 0.91677, 0.91677, 0.91677, 0.89364, 0.92332, 0.89364, 0.85576, 0.99613, 0.85576, 0.99613, 
0.85576, 0.99613, 0.80729, 0.78216, 0.80729, 0.78216, 0.80729, 0.78216, 0.80729, 0.78216, 0.94299, 0.76783, 
0.95961, 0.91677, 0.77512, 0.90083, 0.77512, 0.90083, 0.77512, 0.90083, 0.77512, 0.90083, 0.77512, 0.90083, 
0.86523, 0.9135, 0.86523, 0
 .9135, 0.86523, 0.9135, 1, 1, 0.92222, 0.92168, 0.92222, 0.92168, 0.98621, 0.95381, 0.98621, 0.95381, 
0.98621, 0.95381, 0.98621, 0.95381, 0.98621, 0.95381, 0.86036, 0.97096, 0.71743, 0.98981, 1, 1, 0.95298, 
0.79726, 0.95381, 1, 1, 0.79726, 0.6894, 0.79726, 0.74321, 0.81691, 1.0006, 0.92222, 0.92168, 1, 1, 0.92222, 
0.92168, 0.79464, 0.92098, 0.92168, 0.90637, 0.91513, 0.90637, 0.91513, 0.90637, 0.91513, 0.909, 0.87514, 
0.80729, 0.95077, 1, 1, 0.80729, 0.95077, 0.76463, 0.748, 0.76463, 0.748, 1, 1, 0.76463, 0.748, 1, 1, 
0.86275, 0.72651, 0.86275, 1.04502, 0.90699, 0.91677, 0.90699, 0.91677, 0.90699, 0.91677, 0.90699, 0.91677, 
0.90699, 0.91677, 0.90699, 0.91677, 0.9154, 0.94236, 0.85458, 0.89364, 0.85458, 0.90531, 0.9, 0.90531, 0.9, 
0.90531, 0.9, 1, 0.97276, 0.85576, 0.99613, 0.845, 0.85811, 0.90251, 0.91677, 1, 1, 0.86275, 1.04502, 
1.18616, 1.18616, 1.18616, 1.18616, 1.18616, 1.18616, 1.18616, 1.18616, 1.18616, 1.00899, 1.30628, 0.85576, 
0.80178, 0.66862, 0.7927, 0.69323, 0.88127, 0.7
 2459, 0.89711, 0.95381, 0.85576, 0.80591, 0.7805, 0.94729, 0.77512, 0.90531, 0.92222, 0.90637, 0.98621, 
0.81698, 0.92655, 0.98558, 0.92222, 0.85359, 0.90637, 0.90976, 0.83809, 0.94523, 0.86275, 0.83509, 0.93157, 
0.85308, 0.83392, 0.92346, 0.98621, 0.83509, 0.92886, 0.91324, 0.92168, 0.95381, 0.90646, 0.92886, 0.90557, 
0.86847, 0.90276, 0.91324, 0.86842, 0.92168, 0.99531, 0.95381, 0.9224, 0.85408, 0.92699, 0.86847, 1.0051, 
0.91513, 0.80487, 0.93481, 1, 0.88159, 1.05214, 0.90646, 0.97355, 0.81539, 0.89398, 0.85923, 0.95381, 
0.90646, 0.91513, 0.90646, 0.85923, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 0.9154, 0.94236, 0.9154, 0.94236, 0.9154, 0.94236, 0.85458, 0.89364, 0.96694, 1, 0.89903, 1, 1, 
1, 0.91782, 0.91782, 0.91782, 1, 0.89
 6, 0.896, 0.896, 0.9332, 0.9332, 0.95973, 1, 1.26, 1, 1, 0.80479, 0.80178, 1, 1, 0.85633, 1, 1, 1, 1, 
0.97276, 1, 1, 1, 0.698, 1, 1.36145, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.14542, 1, 0.79199, 0.78694, 1.02058, 
1.03493, 1.05486, 1, 1, 1.23026, 1.08595, 1.08595, 1, 1.08595, 1.08595, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.20006, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1];
+exports.MyriadProBoldItalicFactors = MyriadProBoldItalicFactors;
+const MyriadProBoldItalicMetrics = {
+  lineHeight: 1.2,
+  lineGap: 0.2
+};
+exports.MyriadProBoldItalicMetrics = MyriadProBoldItalicMetrics;
+const MyriadProItalicFactors = [1.36898, 1, 1, 0.65507, 0.84943, 0.85639, 0.88465, 0.88465, 0.86936, 
0.88307, 0.86948, 0.85283, 0.85283, 1.06383, 1.02058, 0.75945, 0.9219, 0.75945, 1.17337, 0.88465, 0.88465, 
0.88465, 0.88465, 0.88465, 0.88465, 0.88465, 0.88465, 0.88465, 0.88465, 0.75945, 0.75945, 1.02058, 1.02058, 
1.02058, 0.69046, 0.70926, 0.85158, 0.77812, 0.76852, 0.89591, 0.70466, 0.76125, 0.80094, 0.86822, 0.83864, 
0.728, 0.77212, 0.79475, 0.93637, 0.87514, 0.8588, 0.76013, 0.8588, 0.72421, 0.69866, 0.77598, 0.85991, 
0.80811, 0.87832, 0.78112, 0.77512, 0.8562, 1.0222, 1.18417, 1.0222, 1.27014, 0.89903, 1.15012, 0.93859, 
0.94399, 0.846, 0.94399, 0.81453, 1.0186, 0.94219, 0.96017, 1.03075, 1.02175, 0.912, 1.03075, 0.96998, 
0.96017, 0.93859, 0.94399, 0.94399, 0.95493, 0.746, 1.12658, 0.94578, 0.91, 0.979, 0.882, 0.882, 0.83, 
0.85034, 0.83537, 0.85034, 1.02058, 0.70869, 0.88465, 0.88465, 0.88465, 0.88465, 0.83537, 0.90083, 1.15012, 
0.9161, 0.94565, 0.73541, 1.02058, 0.53609, 0.6935
 3, 0.79519, 1.08595, 1, 1, 1.15012, 1, 0.91974, 0.75945, 1.15012, 1, 0.9446, 0.73361, 0.9005, 0.9005, 
0.9005, 0.62864, 0.85158, 0.85158, 0.85158, 0.85158, 0.85158, 0.85158, 0.773, 0.76852, 0.70466, 0.70466, 
0.70466, 0.70466, 0.83864, 0.83864, 0.83864, 0.83864, 0.90561, 0.87514, 0.8588, 0.8588, 0.8588, 0.8588, 
0.8588, 1.02058, 0.85751, 0.85991, 0.85991, 0.85991, 0.85991, 0.77512, 0.76013, 0.88075, 0.93859, 0.93859, 
0.93859, 0.93859, 0.93859, 0.93859, 0.8075, 0.846, 0.81453, 0.81453, 0.81453, 0.81453, 0.82424, 0.82424, 
0.82424, 0.82424, 0.9278, 0.96017, 0.93859, 0.93859, 0.93859, 0.93859, 0.93859, 1.08595, 0.8562, 0.94578, 
0.94578, 0.94578, 0.94578, 0.882, 0.94578, 0.882, 0.85158, 0.93859, 0.85158, 0.93859, 0.85158, 0.93859, 
0.76852, 0.846, 0.76852, 0.846, 0.76852, 0.846, 0.76852, 0.846, 0.89591, 0.8544, 0.90561, 0.94399, 0.70466, 
0.81453, 0.70466, 0.81453, 0.70466, 0.81453, 0.70466, 0.81453, 0.70466, 0.81453, 0.80094, 0.94219, 0.80094, 
0.94219, 0.80094, 0.94219, 1, 1, 0.86822, 0.9601
 7, 0.86822, 0.96017, 0.83864, 0.82424, 0.83864, 0.82424, 0.83864, 0.82424, 0.83864, 1.03075, 0.83864, 
0.82424, 0.81402, 1.02738, 0.728, 1.02175, 1, 1, 0.912, 0.79475, 1.03075, 1, 1, 0.79475, 0.83911, 0.79475, 
0.66266, 0.80553, 1.06676, 0.87514, 0.96017, 1, 1, 0.87514, 0.96017, 0.86865, 0.87396, 0.96017, 0.8588, 
0.93859, 0.8588, 0.93859, 0.8588, 0.93859, 0.867, 0.84759, 0.72421, 0.95493, 1, 1, 0.72421, 0.95493, 0.69866, 
0.746, 0.69866, 0.746, 1, 1, 0.69866, 0.746, 1, 1, 0.77598, 0.88417, 0.77598, 1.12658, 0.85991, 0.94578, 
0.85991, 0.94578, 0.85991, 0.94578, 0.85991, 0.94578, 0.85991, 0.94578, 0.85991, 0.94578, 0.87832, 0.979, 
0.77512, 0.882, 0.77512, 0.8562, 0.83, 0.8562, 0.83, 0.8562, 0.83, 1, 0.88465, 0.85158, 0.93859, 0.773, 
0.8075, 0.85751, 0.8562, 1, 1, 0.77598, 1.12658, 1.15012, 1.15012, 1.15012, 1.15012, 1.15012, 1.15313, 
1.15012, 1.15012, 1.15012, 1.08106, 1.03901, 0.85158, 0.77025, 0.62264, 0.7646, 0.65351, 0.86026, 0.69461, 
0.89947, 1.03075, 0.85158, 0.77812, 0.76449, 0.88
 836, 0.70466, 0.8562, 0.86822, 0.8588, 0.83864, 0.77212, 0.85308, 0.93637, 0.87514, 0.82352, 0.8588, 
0.85701, 0.76013, 0.89058, 0.77598, 0.8156, 0.82565, 0.78112, 0.77899, 0.89386, 0.83864, 0.8156, 0.9486, 
0.92388, 0.96186, 1.03075, 0.91123, 0.9486, 0.93298, 0.878, 0.93942, 0.92388, 0.84596, 0.96186, 0.95119, 
1.03075, 0.922, 0.88787, 0.95829, 0.88, 0.93559, 0.93859, 0.78815, 0.93758, 1, 0.89217, 1.03737, 0.91123, 
0.93969, 0.77487, 0.85769, 0.86799, 1.03075, 0.91123, 0.93859, 0.91123, 0.86799, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.87832, 0.979, 0.87832, 0.979, 0.87832, 0.979, 
0.77512, 0.882, 0.9219, 1, 0.89903, 1, 1, 1, 0.87321, 0.87321, 0.87321, 1, 1.027, 1.027, 1.027, 0.86847, 
0.86847, 0.79121, 1, 1.124, 1, 1, 0.73572, 0.7
 3572, 1, 1, 0.85034, 1, 1, 1, 1, 0.88465, 1, 1, 1, 0.669, 1, 1.36145, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1.04828, 1, 0.74948, 0.75187, 1.02058, 0.98391, 1.02119, 1, 1, 1.06233, 1.08595, 1.08595, 1, 1.08595, 
1.08595, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.05233, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1];
+exports.MyriadProItalicFactors = MyriadProItalicFactors;
+const MyriadProItalicMetrics = {
+  lineHeight: 1.2,
+  lineGap: 0.2
+};
+exports.MyriadProItalicMetrics = MyriadProItalicMetrics;
+const MyriadProRegularFactors = [1.36898, 1, 1, 0.76305, 0.82784, 0.94935, 0.89364, 0.92241, 0.89073, 
0.90706, 0.98472, 0.85283, 0.85283, 1.0664, 1.02058, 0.74505, 0.9219, 0.74505, 1.23456, 0.92241, 0.92241, 
0.92241, 0.92241, 0.92241, 0.92241, 0.92241, 0.92241, 0.92241, 0.92241, 0.74505, 0.74505, 1.02058, 1.02058, 
1.02058, 0.73002, 0.72601, 0.91755, 0.8126, 0.80314, 0.92222, 0.73764, 0.79726, 0.83051, 0.90284, 0.86023, 
0.74, 0.8126, 0.84869, 0.96518, 0.91115, 0.8858, 0.79761, 0.8858, 0.74498, 0.73914, 0.81363, 0.89591, 
0.83659, 0.89633, 0.85608, 0.8111, 0.90531, 1.0222, 1.22736, 1.0222, 1.27014, 0.89903, 0.90088, 0.86667, 
1.0231, 0.896, 1.01411, 0.90083, 1.05099, 1.00512, 0.99793, 1.05326, 1.09377, 0.938, 1.06226, 1.00119, 
0.99793, 0.98714, 1.0231, 1.01231, 0.98196, 0.792, 1.19137, 0.99074, 0.962, 1.01915, 0.926, 0.942, 0.856, 
0.85034, 0.92006, 0.85034, 1.02058, 0.69067, 0.92241, 0.92241, 0.92241, 0.92241, 0.92006, 0.9332, 0.90088, 
0.91882, 0.93484, 0.75339, 1.02058, 0.56866, 0.5432
 4, 0.79519, 1.08595, 1, 1, 0.90088, 1, 0.95325, 0.74505, 0.90088, 1, 0.97198, 0.75339, 0.91009, 0.91009, 
0.91009, 0.66466, 0.91755, 0.91755, 0.91755, 0.91755, 0.91755, 0.91755, 0.788, 0.80314, 0.73764, 0.73764, 
0.73764, 0.73764, 0.86023, 0.86023, 0.86023, 0.86023, 0.92915, 0.91115, 0.8858, 0.8858, 0.8858, 0.8858, 
0.8858, 1.02058, 0.8858, 0.89591, 0.89591, 0.89591, 0.89591, 0.8111, 0.79611, 0.89713, 0.86667, 0.86667, 
0.86667, 0.86667, 0.86667, 0.86667, 0.86936, 0.896, 0.90083, 0.90083, 0.90083, 0.90083, 0.84224, 0.84224, 
0.84224, 0.84224, 0.97276, 0.99793, 0.98714, 0.98714, 0.98714, 0.98714, 0.98714, 1.08595, 0.89876, 0.99074, 
0.99074, 0.99074, 0.99074, 0.942, 1.0231, 0.942, 0.91755, 0.86667, 0.91755, 0.86667, 0.91755, 0.86667, 
0.80314, 0.896, 0.80314, 0.896, 0.80314, 0.896, 0.80314, 0.896, 0.92222, 0.93372, 0.92915, 1.01411, 0.73764, 
0.90083, 0.73764, 0.90083, 0.73764, 0.90083, 0.73764, 0.90083, 0.73764, 0.90083, 0.83051, 1.00512, 0.83051, 
1.00512, 0.83051, 1.00512, 1, 1, 0.90284, 0
 .99793, 0.90976, 0.99793, 0.86023, 0.84224, 0.86023, 0.84224, 0.86023, 0.84224, 0.86023, 1.05326, 0.86023, 
0.84224, 0.82873, 1.07469, 0.74, 1.09377, 1, 1, 0.938, 0.84869, 1.06226, 1, 1, 0.84869, 0.83704, 0.84869, 
0.81441, 0.85588, 1.08927, 0.91115, 0.99793, 1, 1, 0.91115, 0.99793, 0.91887, 0.90991, 0.99793, 0.8858, 
0.98714, 0.8858, 0.98714, 0.8858, 0.98714, 0.894, 0.91434, 0.74498, 0.98196, 1, 1, 0.74498, 0.98196, 0.73914, 
0.792, 0.73914, 0.792, 1, 1, 0.73914, 0.792, 1, 1, 0.81363, 0.904, 0.81363, 1.19137, 0.89591, 0.99074, 
0.89591, 0.99074, 0.89591, 0.99074, 0.89591, 0.99074, 0.89591, 0.99074, 0.89591, 0.99074, 0.89633, 1.01915, 
0.8111, 0.942, 0.8111, 0.90531, 0.856, 0.90531, 0.856, 0.90531, 0.856, 1, 0.92241, 0.91755, 0.86667, 0.788, 
0.86936, 0.8858, 0.89876, 1, 1, 0.81363, 1.19137, 0.90088, 0.90088, 0.90088, 0.90088, 0.90088, 0.90088, 
0.90088, 0.90088, 0.90088, 0.90388, 1.03901, 0.92138, 0.78105, 0.7154, 0.86169, 0.80513, 0.94007, 0.82528, 
0.98612, 1.06226, 0.91755, 0.8126, 0.818
 84, 0.92819, 0.73764, 0.90531, 0.90284, 0.8858, 0.86023, 0.8126, 0.91172, 0.96518, 0.91115, 0.83089, 0.8858, 
0.87791, 0.79761, 0.89297, 0.81363, 0.88157, 0.89992, 0.85608, 0.81992, 0.94307, 0.86023, 0.88157, 0.95308, 
0.98699, 0.99793, 1.06226, 0.95817, 0.95308, 0.97358, 0.928, 0.98088, 0.98699, 0.92761, 0.99793, 0.96017, 
1.06226, 0.986, 0.944, 0.95978, 0.938, 0.96705, 0.98714, 0.80442, 0.98972, 1, 0.89762, 1.04552, 0.95817, 
0.99007, 0.87064, 0.91879, 0.88888, 1.06226, 0.95817, 0.98714, 0.95817, 0.88888, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.89633, 1.01915, 0.89633, 1.01915, 0.89633, 
1.01915, 0.8111, 0.942, 0.9219, 1, 0.89903, 1, 1, 1, 0.93173, 0.93173, 0.93173, 1, 1.06304, 1.06304, 1.06904, 
0.89903, 0.89903, 0.80549, 1, 1.1
 56, 1, 1, 0.76575, 0.76575, 1, 1, 0.72458, 1, 1, 1, 1, 0.92241, 1, 1, 1, 0.619, 1, 1.36145, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1.07257, 1, 0.74705, 0.71119, 1.02058, 1.024, 1.02119, 1, 1, 1.1536, 1.08595, 1.08595, 1, 
1.08595, 1.08595, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.05638, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1];
+exports.MyriadProRegularFactors = MyriadProRegularFactors;
+const MyriadProRegularMetrics = {
+  lineHeight: 1.2,
+  lineGap: 0.2
+};
+exports.MyriadProRegularMetrics = MyriadProRegularMetrics;
 
-      case "StrikeOut":
-        return new StrikeOutAnnotation(parameters);
+/***/ }),
+/* 17 */
+/***/ ((__unused_webpack_module, exports) => {
 
-      case "Stamp":
-        return new StampAnnotation(parameters);
 
-      case "FileAttachment":
-        return new FileAttachmentAnnotation(parameters);
 
-      default:
-        if (!collectFields) {
-          if (!subtype) {
-            (0, _util.warn)("Annotation is missing the required /Subtype.");
-          } else {
-            (0, _util.warn)(`Unimplemented annotation type "${subtype}", ` + "falling back to base 
annotation.");
-          }
-        }
+Object.defineProperty(exports, "__esModule", ({
+  value: true
+}));
+exports.SegoeuiRegularMetrics = exports.SegoeuiRegularFactors = exports.SegoeuiItalicMetrics = 
exports.SegoeuiItalicFactors = exports.SegoeuiBoldMetrics = exports.SegoeuiBoldItalicMetrics = 
exports.SegoeuiBoldItalicFactors = exports.SegoeuiBoldFactors = void 0;
+const SegoeuiBoldFactors = [1.76738, 1, 1, 0.99297, 0.9824, 1.04016, 1.06497, 1.03424, 0.97529, 1.17647, 
1.23203, 1.1085, 1.1085, 1.16939, 1.2107, 0.9754, 1.21408, 0.9754, 1.59578, 1.03424, 1.03424, 1.03424, 
1.03424, 1.03424, 1.03424, 1.03424, 1.03424, 1.03424, 1.03424, 0.81378, 0.81378, 1.2107, 1.2107, 1.2107, 
0.71703, 0.97847, 0.97363, 0.88776, 0.8641, 1.02096, 0.79795, 0.85132, 0.914, 1.06085, 1.1406, 0.8007, 
0.89858, 0.83693, 1.14889, 1.09398, 0.97489, 0.92094, 0.97489, 0.90399, 0.84041, 0.95923, 1.00135, 1, 
1.06467, 0.98243, 0.90996, 0.99361, 1.1085, 1.56942, 1.1085, 1.2107, 0.74627, 0.94282, 0.96752, 1.01519, 
0.86304, 1.01359, 0.97278, 1.15103, 1.01359, 0.98561, 1.02285, 1.02285, 1.00527, 1.02285, 1.0302, 0.99041, 
1.0008, 1.01519, 1.01359, 1.02258, 0.79104, 1.16862, 0.99041, 0.97454, 1.02511, 0.99298, 0.96752, 0.95801, 
0.94856, 1.16579, 0.94856, 1.2107, 0.9824, 1.03424, 1.03424, 1, 1.03424, 1.16579, 0.8727, 1.3871, 1.18622, 
1.10818, 1.04478, 1.2107, 1.18622, 0.75155, 0.94994, 
 1.28826, 1.21408, 1.21408, 0.91056, 1, 0.91572, 0.9754, 0.64663, 1.18328, 1.24866, 1.04478, 1.14169, 
1.15749, 1.17389, 0.71703, 0.97363, 0.97363, 0.97363, 0.97363, 0.97363, 0.97363, 0.93506, 0.8641, 0.79795, 
0.79795, 0.79795, 0.79795, 1.1406, 1.1406, 1.1406, 1.1406, 1.02096, 1.09398, 0.97426, 0.97426, 0.97426, 
0.97426, 0.97426, 1.2107, 0.97489, 1.00135, 1.00135, 1.00135, 1.00135, 0.90996, 0.92094, 1.02798, 0.96752, 
0.96752, 0.96752, 0.96752, 0.96752, 0.96752, 0.93136, 0.86304, 0.97278, 0.97278, 0.97278, 0.97278, 1.02285, 
1.02285, 1.02285, 1.02285, 0.97122, 0.99041, 1, 1, 1, 1, 1, 1.28826, 1.0008, 0.99041, 0.99041, 0.99041, 
0.99041, 0.96752, 1.01519, 0.96752, 0.97363, 0.96752, 0.97363, 0.96752, 0.97363, 0.96752, 0.8641, 0.86304, 
0.8641, 0.86304, 0.8641, 0.86304, 0.8641, 0.86304, 1.02096, 1.03057, 1.02096, 1.03517, 0.79795, 0.97278, 
0.79795, 0.97278, 0.79795, 0.97278, 0.79795, 0.97278, 0.79795, 0.97278, 0.914, 1.01359, 0.914, 1.01359, 
0.914, 1.01359, 1, 1, 1.06085, 0.98561, 1.06085, 1
 .00879, 1.1406, 1.02285, 1.1406, 1.02285, 1.1406, 1.02285, 1.1406, 1.02285, 1.1406, 1.02285, 0.97138, 
1.08692, 0.8007, 1.02285, 1, 1, 1.00527, 0.83693, 1.02285, 1, 1, 0.83693, 0.9455, 0.83693, 0.90418, 0.83693, 
1.13005, 1.09398, 0.99041, 1, 1, 1.09398, 0.99041, 0.96692, 1.09251, 0.99041, 0.97489, 1.0008, 0.97489, 
1.0008, 0.97489, 1.0008, 0.93994, 0.97931, 0.90399, 1.02258, 1, 1, 0.90399, 1.02258, 0.84041, 0.79104, 
0.84041, 0.79104, 0.84041, 0.79104, 0.84041, 0.79104, 1, 1, 0.95923, 1.07034, 0.95923, 1.16862, 1.00135, 
0.99041, 1.00135, 0.99041, 1.00135, 0.99041, 1.00135, 0.99041, 1.00135, 0.99041, 1.00135, 0.99041, 1.06467, 
1.02511, 0.90996, 0.96752, 0.90996, 0.99361, 0.95801, 0.99361, 0.95801, 0.99361, 0.95801, 1.07733, 1.03424, 
0.97363, 0.96752, 0.93506, 0.93136, 0.97489, 1.0008, 1, 1, 0.95923, 1.16862, 1.15103, 1.15103, 1.01173, 
1.03959, 0.75953, 0.81378, 0.79912, 1.15103, 1.21994, 0.95161, 0.87815, 1.01149, 0.81525, 0.7676, 0.98167, 
1.01134, 1.02546, 0.84097, 1.03089, 1.18102, 0.
 97363, 0.88776, 0.85134, 0.97826, 0.79795, 0.99361, 1.06085, 0.97489, 1.1406, 0.89858, 1.0388, 1.14889, 
1.09398, 0.86039, 0.97489, 1.0595, 0.92094, 0.94793, 0.95923, 0.90996, 0.99346, 0.98243, 1.02112, 0.95493, 
1.1406, 0.90996, 1.03574, 1.02597, 1.0008, 1.18102, 1.06628, 1.03574, 1.0192, 1.01932, 1.00886, 0.97531, 
1.0106, 1.0008, 1.13189, 1.18102, 1.02277, 0.98683, 1.0016, 0.99561, 1.07237, 1.0008, 0.90434, 0.99921, 
0.93803, 0.8965, 1.23085, 1.06628, 1.04983, 0.96268, 1.0499, 0.98439, 1.18102, 1.06628, 1.0008, 1.06628, 
0.98439, 0.79795, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.09466, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.97278, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.02065, 1, 1, 1, 
1, 1, 1, 1.06467, 1.02511, 1.06467, 1.02511, 1.06467, 1.02511, 0.90996, 0.96752, 1, 1.21408, 0.89903, 1, 1, 
0.75155, 1.04394, 1.04394, 1.04394, 1.04
 394, 0.98633, 0.98633, 0.98633, 0.73047, 0.73047, 1.20642, 0.91211, 1.25635, 1.222, 1.02956, 1.03372, 
1.03372, 0.96039, 1.24633, 1, 1.12454, 0.93503, 1.03424, 1.19687, 1.03424, 1, 1, 1, 0.771, 1, 1, 1.15749, 
1.15749, 1.15749, 1.10948, 0.86279, 0.94434, 0.86279, 0.94434, 0.86182, 1, 1, 1.16897, 1, 0.96085, 0.90137, 
1.2107, 1.18416, 1.13973, 0.69825, 0.9716, 2.10339, 1.29004, 1.29004, 1.21172, 1.29004, 1.29004, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.42603, 1, 0.99862, 0.99862, 1, 0.87025, 0.87025, 0.87025, 0.87025, 
1.18874, 1.42603, 1, 1.42603, 1.42603, 0.99862, 1, 1, 1, 1, 1, 1.2886, 1.04315, 1.15296, 1.34163, 1, 1, 1, 
1.09193, 1.09193, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1];
+exports.SegoeuiBoldFactors = SegoeuiBoldFactors;
+const SegoeuiBoldMetrics = {
+  lineHeight: 1.33008,
+  lineGap: 0
+};
+exports.SegoeuiBoldMetrics = SegoeuiBoldMetrics;
+const SegoeuiBoldItalicFactors = [1.76738, 1, 1, 0.98946, 1.03959, 1.04016, 1.02809, 1.036, 0.97639, 
1.10953, 1.23203, 1.11144, 1.11144, 1.16939, 1.21237, 0.9754, 1.21261, 0.9754, 1.59754, 1.036, 1.036, 1.036, 
1.036, 1.036, 1.036, 1.036, 1.036, 1.036, 1.036, 0.81378, 0.81378, 1.21237, 1.21237, 1.21237, 0.73541, 
0.97847, 0.97363, 0.89723, 0.87897, 1.0426, 0.79429, 0.85292, 0.91149, 1.05815, 1.1406, 0.79631, 0.90128, 
0.83853, 1.04396, 1.10615, 0.97552, 0.94436, 0.97552, 0.88641, 0.80527, 0.96083, 1.00135, 1, 1.06777, 0.9817, 
0.91142, 0.99361, 1.11144, 1.57293, 1.11144, 1.21237, 0.74627, 1.31818, 1.06585, 0.97042, 0.83055, 0.97042, 
0.93503, 1.1261, 0.97042, 0.97922, 1.14236, 0.94552, 1.01054, 1.14236, 1.02471, 0.97922, 0.94165, 0.97042, 
0.97042, 1.0276, 0.78929, 1.1261, 0.97922, 0.95874, 1.02197, 0.98507, 0.96752, 0.97168, 0.95107, 1.16579, 
0.95107, 1.21237, 1.03959, 1.036, 1.036, 1, 1.036, 1.16579, 0.87357, 1.31818, 1.18754, 1.26781, 1.05356, 
1.21237, 1.18622, 0.79487, 0.94994, 1.2900
 4, 1.24047, 1.24047, 1.31818, 1, 0.91484, 0.9754, 1.31818, 1.1349, 1.24866, 1.05356, 1.13934, 1.15574, 
1.17389, 0.73541, 0.97363, 0.97363, 0.97363, 0.97363, 0.97363, 0.97363, 0.94385, 0.87897, 0.79429, 0.79429, 
0.79429, 0.79429, 1.1406, 1.1406, 1.1406, 1.1406, 1.0426, 1.10615, 0.97552, 0.97552, 0.97552, 0.97552, 
0.97552, 1.21237, 0.97552, 1.00135, 1.00135, 1.00135, 1.00135, 0.91142, 0.94436, 0.98721, 1.06585, 1.06585, 
1.06585, 1.06585, 1.06585, 1.06585, 0.96705, 0.83055, 0.93503, 0.93503, 0.93503, 0.93503, 1.14236, 1.14236, 
1.14236, 1.14236, 0.93125, 0.97922, 0.94165, 0.94165, 0.94165, 0.94165, 0.94165, 1.29004, 0.94165, 0.97922, 
0.97922, 0.97922, 0.97922, 0.96752, 0.97042, 0.96752, 0.97363, 1.06585, 0.97363, 1.06585, 0.97363, 1.06585, 
0.87897, 0.83055, 0.87897, 0.83055, 0.87897, 0.83055, 0.87897, 0.83055, 1.0426, 1.0033, 1.0426, 0.97042, 
0.79429, 0.93503, 0.79429, 0.93503, 0.79429, 0.93503, 0.79429, 0.93503, 0.79429, 0.93503, 0.91149, 0.97042, 
0.91149, 0.97042, 0.91149, 0.97042, 1,
  1, 1.05815, 0.97922, 1.05815, 0.97922, 1.1406, 1.14236, 1.1406, 1.14236, 1.1406, 1.14236, 1.1406, 1.14236, 
1.1406, 1.14236, 0.97441, 1.04302, 0.79631, 1.01582, 1, 1, 1.01054, 0.83853, 1.14236, 1, 1, 0.83853, 1.09125, 
0.83853, 0.90418, 0.83853, 1.19508, 1.10615, 0.97922, 1, 1, 1.10615, 0.97922, 1.01034, 1.10466, 0.97922, 
0.97552, 0.94165, 0.97552, 0.94165, 0.97552, 0.94165, 0.91602, 0.91981, 0.88641, 1.0276, 1, 1, 0.88641, 
1.0276, 0.80527, 0.78929, 0.80527, 0.78929, 0.80527, 0.78929, 0.80527, 0.78929, 1, 1, 0.96083, 1.05403, 
0.95923, 1.16862, 1.00135, 0.97922, 1.00135, 0.97922, 1.00135, 0.97922, 1.00135, 0.97922, 1.00135, 0.97922, 
1.00135, 0.97922, 1.06777, 1.02197, 0.91142, 0.96752, 0.91142, 0.99361, 0.97168, 0.99361, 0.97168, 0.99361, 
0.97168, 1.23199, 1.036, 0.97363, 1.06585, 0.94385, 0.96705, 0.97552, 0.94165, 1, 1, 0.96083, 1.1261, 
1.31818, 1.31818, 1.31818, 1.31818, 1.31818, 1.31818, 1.31818, 1.31818, 1.31818, 0.95161, 1.27126, 1.00811, 
0.83284, 0.77702, 0.99137, 0.95253, 1.03
 47, 0.86142, 1.07205, 1.14236, 0.97363, 0.89723, 0.86869, 1.09818, 0.79429, 0.99361, 1.05815, 0.97552, 
1.1406, 0.90128, 1.06662, 1.04396, 1.10615, 0.84918, 0.97552, 1.04694, 0.94436, 0.98015, 0.96083, 0.91142, 
1.00356, 0.9817, 1.01945, 0.98999, 1.1406, 0.91142, 1.04961, 0.9898, 1.00639, 1.14236, 1.07514, 1.04961, 
0.99607, 1.02897, 1.008, 0.9898, 0.95134, 1.00639, 1.11121, 1.14236, 1.00518, 0.97981, 1.02186, 1, 1.08578, 
0.94165, 0.99314, 0.98387, 0.93028, 0.93377, 1.35125, 1.07514, 1.10687, 0.93491, 1.04232, 1.00351, 1.14236, 
1.07514, 0.94165, 1.07514, 1.00351, 0.79429, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.09097, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.93503, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 0.96609, 1, 1, 1, 1, 1, 1, 1.06777, 1.02197, 1.06777, 1.02197, 1.06777, 1.02197, 0.91142, 0.96752, 
1, 1.21261, 0.89903, 1, 1, 0.75155
 , 1.04745, 1.04745, 1.04745, 1.04394, 0.98633, 0.98633, 0.98633, 0.72959, 0.72959, 1.20502, 0.91406, 
1.26514, 1.222, 1.02956, 1.03372, 1.03372, 0.96039, 1.24633, 1, 1.09125, 0.93327, 1.03336, 1.16541, 1.036, 1, 
1, 1, 0.771, 1, 1, 1.15574, 1.15574, 1.15574, 1.15574, 0.86364, 0.94434, 0.86279, 0.94434, 0.86224, 1, 1, 
1.16798, 1, 0.96085, 0.90068, 1.21237, 1.18416, 1.13904, 0.69825, 0.9716, 2.10339, 1.29004, 1.29004, 1.21339, 
1.29004, 1.29004, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.42603, 1, 0.99862, 0.99862, 1, 0.87025, 
0.87025, 0.87025, 0.87025, 1.18775, 1.42603, 1, 1.42603, 1.42603, 0.99862, 1, 1, 1, 1, 1, 1.2886, 1.04315, 
1.15296, 1.34163, 1, 1, 1, 1.13269, 1.13269, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1];
+exports.SegoeuiBoldItalicFactors = SegoeuiBoldItalicFactors;
+const SegoeuiBoldItalicMetrics = {
+  lineHeight: 1.33008,
+  lineGap: 0
+};
+exports.SegoeuiBoldItalicMetrics = SegoeuiBoldItalicMetrics;
+const SegoeuiItalicFactors = [1.76738, 1, 1, 0.98946, 1.14763, 1.05365, 1.06234, 0.96927, 0.92586, 1.15373, 
1.18414, 0.91349, 0.91349, 1.07403, 1.17308, 0.78383, 1.20088, 0.78383, 1.42531, 0.96927, 0.96927, 0.96927, 
0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.78383, 0.78383, 1.17308, 1.17308, 1.17308, 
0.77349, 0.94565, 0.94729, 0.85944, 0.88506, 0.9858, 0.74817, 0.80016, 0.88449, 0.98039, 0.95782, 0.69238, 
0.89898, 0.83231, 0.98183, 1.03989, 0.96924, 0.86237, 0.96924, 0.80595, 0.74524, 0.86091, 0.95402, 0.94143, 
0.98448, 0.8858, 0.83089, 0.93285, 1.0949, 1.39016, 1.0949, 1.45994, 0.74627, 1.04839, 0.97454, 0.97454, 
0.87207, 0.97454, 0.87533, 1.06151, 0.97454, 1.00176, 1.16484, 1.08132, 0.98047, 1.16484, 1.02989, 1.01054, 
0.96225, 0.97454, 0.97454, 1.06598, 0.79004, 1.16344, 1.00351, 0.94629, 0.9973, 0.91016, 0.96777, 0.9043, 
0.91082, 0.92481, 0.91082, 1.17308, 0.95748, 0.96927, 0.96927, 1, 0.96927, 0.92481, 0.80597, 1.04839, 
1.23393, 1.1781, 0.9245, 1.17308, 1.2
 0808, 0.63218, 0.94261, 1.24822, 1.09971, 1.09971, 1.04839, 1, 0.85273, 0.78032, 1.04839, 1.09971, 1.22326, 
0.9245, 1.09836, 1.13525, 1.15222, 0.70424, 0.94729, 0.94729, 0.94729, 0.94729, 0.94729, 0.94729, 0.85498, 
0.88506, 0.74817, 0.74817, 0.74817, 0.74817, 0.95782, 0.95782, 0.95782, 0.95782, 0.9858, 1.03989, 0.96924, 
0.96924, 0.96924, 0.96924, 0.96924, 1.17308, 0.96924, 0.95402, 0.95402, 0.95402, 0.95402, 0.83089, 0.86237, 
0.88409, 0.97454, 0.97454, 0.97454, 0.97454, 0.97454, 0.97454, 0.92916, 0.87207, 0.87533, 0.87533, 0.87533, 
0.87533, 0.93146, 0.93146, 0.93146, 0.93146, 0.93854, 1.01054, 0.96225, 0.96225, 0.96225, 0.96225, 0.96225, 
1.24822, 0.8761, 1.00351, 1.00351, 1.00351, 1.00351, 0.96777, 0.97454, 0.96777, 0.94729, 0.97454, 0.94729, 
0.97454, 0.94729, 0.97454, 0.88506, 0.87207, 0.88506, 0.87207, 0.88506, 0.87207, 0.88506, 0.87207, 0.9858, 
0.95391, 0.9858, 0.97454, 0.74817, 0.87533, 0.74817, 0.87533, 0.74817, 0.87533, 0.74817, 0.87533, 0.74817, 
0.87533, 0.88449, 0.97454, 0.8
 8449, 0.97454, 0.88449, 0.97454, 1, 1, 0.98039, 1.00176, 0.98039, 1.00176, 0.95782, 0.93146, 0.95782, 
0.93146, 0.95782, 0.93146, 0.95782, 1.16484, 0.95782, 0.93146, 0.84421, 1.12761, 0.69238, 1.08132, 1, 1, 
0.98047, 0.83231, 1.16484, 1, 1, 0.84723, 1.04861, 0.84723, 0.78755, 0.83231, 1.23736, 1.03989, 1.01054, 1, 
1, 1.03989, 1.01054, 0.9857, 1.03849, 1.01054, 0.96924, 0.96225, 0.96924, 0.96225, 0.96924, 0.96225, 0.92383, 
0.90171, 0.80595, 1.06598, 1, 1, 0.80595, 1.06598, 0.74524, 0.79004, 0.74524, 0.79004, 0.74524, 0.79004, 
0.74524, 0.79004, 1, 1, 0.86091, 1.02759, 0.85771, 1.16344, 0.95402, 1.00351, 0.95402, 1.00351, 0.95402, 
1.00351, 0.95402, 1.00351, 0.95402, 1.00351, 0.95402, 1.00351, 0.98448, 0.9973, 0.83089, 0.96777, 0.83089, 
0.93285, 0.9043, 0.93285, 0.9043, 0.93285, 0.9043, 1.31868, 0.96927, 0.94729, 0.97454, 0.85498, 0.92916, 
0.96924, 0.8761, 1, 1, 0.86091, 1.16344, 1.04839, 1.04839, 1.04839, 1.04839, 1.04839, 1.04839, 1.04839, 
1.04839, 1.04839, 0.81965, 0.81965, 0.94729, 0
 .78032, 0.71022, 0.90883, 0.84171, 0.99877, 0.77596, 1.05734, 1.2, 0.94729, 0.85944, 0.82791, 0.9607, 
0.74817, 0.93285, 0.98039, 0.96924, 0.95782, 0.89898, 0.98316, 0.98183, 1.03989, 0.78614, 0.96924, 0.97642, 
0.86237, 0.86075, 0.86091, 0.83089, 0.90082, 0.8858, 0.97296, 1.01284, 0.95782, 0.83089, 1.0976, 1.04, 
1.03342, 1.2, 1.0675, 1.0976, 0.98205, 1.03809, 1.05097, 1.04, 0.95364, 1.03342, 1.05401, 1.2, 1.02148, 
1.0119, 1.04724, 1.0127, 1.02732, 0.96225, 0.8965, 0.97783, 0.93574, 0.94818, 1.30679, 1.0675, 1.11826, 
0.99821, 1.0557, 1.0326, 1.2, 1.0675, 0.96225, 1.0675, 1.0326, 0.74817, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1.03754, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.87533, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.98705, 1, 1, 1, 1, 1, 1, 0.98448, 0.9973, 0.98448, 0.9973, 0.98448, 
0.9973, 0.83089, 0.96777, 1, 1.20088, 0.89903,
  1, 1, 0.75155, 0.94945, 0.94945, 0.94945, 0.94945, 1.12317, 1.12317, 1.12317, 0.67603, 0.67603, 1.15621, 
0.73584, 1.21191, 1.22135, 1.06483, 0.94868, 0.94868, 0.95996, 1.24633, 1, 1.07497, 0.87709, 0.96927, 
1.01473, 0.96927, 1, 1, 1, 0.77295, 1, 1, 1.09836, 1.09836, 1.09836, 1.01522, 0.86321, 0.94434, 0.8649, 
0.94434, 0.86182, 1, 1, 1.083, 1, 0.91578, 0.86438, 1.17308, 1.18416, 1.14589, 0.69825, 0.97622, 1.96791, 
1.24822, 1.24822, 1.17308, 1.24822, 1.24822, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.42603, 1, 
0.99862, 0.99862, 1, 0.87025, 0.87025, 0.87025, 0.87025, 1.17984, 1.42603, 1, 1.42603, 1.42603, 0.99862, 1, 
1, 1, 1, 1, 1.2886, 1.04315, 1.15296, 1.34163, 1, 1, 1, 1.10742, 1.10742, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1];
+exports.SegoeuiItalicFactors = SegoeuiItalicFactors;
+const SegoeuiItalicMetrics = {
+  lineHeight: 1.33008,
+  lineGap: 0
+};
+exports.SegoeuiItalicMetrics = SegoeuiItalicMetrics;
+const SegoeuiRegularFactors = [1.76738, 1, 1, 0.98594, 1.02285, 1.10454, 1.06234, 0.96927, 0.92037, 1.19985, 
1.2046, 0.90616, 0.90616, 1.07152, 1.1714, 0.78032, 1.20088, 0.78032, 1.40246, 0.96927, 0.96927, 0.96927, 
0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.78032, 0.78032, 1.1714, 1.1714, 1.1714, 
0.80597, 0.94084, 0.96706, 0.85944, 0.85734, 0.97093, 0.75842, 0.79936, 0.88198, 0.9831, 0.95782, 0.71387, 
0.86969, 0.84636, 1.07796, 1.03584, 0.96924, 0.83968, 0.96924, 0.82826, 0.79649, 0.85771, 0.95132, 0.93119, 
0.98965, 0.88433, 0.8287, 0.93365, 1.08612, 1.3638, 1.08612, 1.45786, 0.74627, 0.80499, 0.91484, 1.05707, 
0.92383, 1.05882, 0.9403, 1.12654, 1.05882, 1.01756, 1.09011, 1.09011, 0.99414, 1.09011, 1.034, 1.01756, 
1.05356, 1.05707, 1.05882, 1.04399, 0.84863, 1.21968, 1.01756, 0.95801, 1.00068, 0.91797, 0.96777, 0.9043, 
0.90351, 0.92105, 0.90351, 1.1714, 0.85337, 0.96927, 0.96927, 0.99912, 0.96927, 0.92105, 0.80597, 1.2434, 
1.20808, 1.05937, 0.90957, 1.1714, 1.2
 0808, 0.75155, 0.94261, 1.24644, 1.09971, 1.09971, 0.84751, 1, 0.85273, 0.78032, 0.61584, 1.05425, 1.17914, 
0.90957, 1.08665, 1.11593, 1.14169, 0.73381, 0.96706, 0.96706, 0.96706, 0.96706, 0.96706, 0.96706, 0.86035, 
0.85734, 0.75842, 0.75842, 0.75842, 0.75842, 0.95782, 0.95782, 0.95782, 0.95782, 0.97093, 1.03584, 0.96924, 
0.96924, 0.96924, 0.96924, 0.96924, 1.1714, 0.96924, 0.95132, 0.95132, 0.95132, 0.95132, 0.8287, 0.83968, 
0.89049, 0.91484, 0.91484, 0.91484, 0.91484, 0.91484, 0.91484, 0.93575, 0.92383, 0.9403, 0.9403, 0.9403, 
0.9403, 0.8717, 0.8717, 0.8717, 0.8717, 1.00527, 1.01756, 1.05356, 1.05356, 1.05356, 1.05356, 1.05356, 
1.24644, 0.95923, 1.01756, 1.01756, 1.01756, 1.01756, 0.96777, 1.05707, 0.96777, 0.96706, 0.91484, 0.96706, 
0.91484, 0.96706, 0.91484, 0.85734, 0.92383, 0.85734, 0.92383, 0.85734, 0.92383, 0.85734, 0.92383, 0.97093, 
1.0969, 0.97093, 1.05882, 0.75842, 0.9403, 0.75842, 0.9403, 0.75842, 0.9403, 0.75842, 0.9403, 0.75842, 
0.9403, 0.88198, 1.05882, 0.88198, 1.058
 82, 0.88198, 1.05882, 1, 1, 0.9831, 1.01756, 0.9831, 1.01756, 0.95782, 0.8717, 0.95782, 0.8717, 0.95782, 
0.8717, 0.95782, 1.09011, 0.95782, 0.8717, 0.84784, 1.11551, 0.71387, 1.09011, 1, 1, 0.99414, 0.84636, 
1.09011, 1, 1, 0.84636, 1.0536, 0.84636, 0.94298, 0.84636, 1.23297, 1.03584, 1.01756, 1, 1, 1.03584, 1.01756, 
1.00323, 1.03444, 1.01756, 0.96924, 1.05356, 0.96924, 1.05356, 0.96924, 1.05356, 0.93066, 0.98293, 0.82826, 
1.04399, 1, 1, 0.82826, 1.04399, 0.79649, 0.84863, 0.79649, 0.84863, 0.79649, 0.84863, 0.79649, 0.84863, 1, 
1, 0.85771, 1.17318, 0.85771, 1.21968, 0.95132, 1.01756, 0.95132, 1.01756, 0.95132, 1.01756, 0.95132, 
1.01756, 0.95132, 1.01756, 0.95132, 1.01756, 0.98965, 1.00068, 0.8287, 0.96777, 0.8287, 0.93365, 0.9043, 
0.93365, 0.9043, 0.93365, 0.9043, 1.08571, 0.96927, 0.96706, 0.91484, 0.86035, 0.93575, 0.96924, 0.95923, 1, 
1, 0.85771, 1.21968, 1.11437, 1.11437, 0.93109, 0.91202, 0.60411, 0.84164, 0.55572, 1.01173, 0.97361, 
0.81818, 0.81818, 0.96635, 0.78032, 0.72727, 
 0.92366, 0.98601, 1.03405, 0.77968, 1.09799, 1.2, 0.96706, 0.85944, 0.85638, 0.96491, 0.75842, 0.93365, 
0.9831, 0.96924, 0.95782, 0.86969, 0.94152, 1.07796, 1.03584, 0.78437, 0.96924, 0.98715, 0.83968, 0.83491, 
0.85771, 0.8287, 0.94492, 0.88433, 0.9287, 1.0098, 0.95782, 0.8287, 1.0625, 0.98248, 1.03424, 1.2, 1.01071, 
1.0625, 0.95246, 1.03809, 1.04912, 0.98248, 1.00221, 1.03424, 1.05443, 1.2, 1.04785, 0.99609, 1.00169, 
1.05176, 0.99346, 1.05356, 0.9087, 1.03004, 0.95542, 0.93117, 1.23362, 1.01071, 1.07831, 1.02512, 1.05205, 
1.03502, 1.2, 1.01071, 1.05356, 1.01071, 1.03502, 0.75842, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.03719, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.9403, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1.04021, 1, 1, 1, 1, 1, 1, 0.98965, 1.00068, 0.98965, 1.00068, 0.98965, 1.00068, 0.8287, 
0.96777, 1, 1.20088, 0.89903, 1, 
 1, 0.75155, 1.03077, 1.03077, 1.03077, 1.03077, 1.13196, 1.13196, 1.13196, 0.67428, 0.67428, 1.16039, 
0.73291, 1.20996, 1.22135, 1.06483, 0.94868, 0.94868, 0.95996, 1.24633, 1, 1.07497, 0.87796, 0.96927, 
1.01518, 0.96927, 1, 1, 1, 0.77295, 1, 1, 1.10539, 1.10539, 1.11358, 1.06967, 0.86279, 0.94434, 0.86279, 
0.94434, 0.86182, 1, 1, 1.083, 1, 0.91578, 0.86507, 1.1714, 1.18416, 1.14589, 0.69825, 0.97622, 1.9697, 
1.24822, 1.24822, 1.17238, 1.24822, 1.24822, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.42603, 1, 
0.99862, 0.99862, 1, 0.87025, 0.87025, 0.87025, 0.87025, 1.18083, 1.42603, 1, 1.42603, 1.42603, 0.99862, 1, 
1, 1, 1, 1, 1.2886, 1.04315, 1.15296, 1.34163, 1, 1, 1, 1.10938, 1.10938, 1, 1, 1, 1.05425, 1.09971, 1.09971, 
1.09971, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1];
+exports.SegoeuiRegularFactors = SegoeuiRegularFactors;
+const SegoeuiRegularMetrics = {
+  lineHeight: 1.33008,
+  lineGap: 0
+};
+exports.SegoeuiRegularMetrics = SegoeuiRegularMetrics;
 
-        return new Annotation(parameters);
-    }
-  }
+/***/ }),
+/* 18 */
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
 
-  static async _getPageIndex(xref, ref, pdfManager) {
-    try {
-      const annotDict = await xref.fetchIfRefAsync(ref);
 
-      if (!(0, _primitives.isDict)(annotDict)) {
-        return -1;
-      }
 
-      const pageRef = annotDict.getRaw("P");
+Object.defineProperty(exports, "__esModule", ({
+  value: true
+}));
+exports.getFontType = getFontType;
+exports.normalizeFontName = normalizeFontName;
+exports.recoverGlyphName = recoverGlyphName;
+exports.type1FontGlyphMapping = type1FontGlyphMapping;
+exports.SEAC_ANALYSIS_ENABLED = exports.MacStandardGlyphOrdering = exports.FontFlags = void 0;
 
-      if (!(0, _primitives.isRef)(pageRef)) {
-        return -1;
-      }
+var _util = __w_pdfjs_require__(2);
 
-      const pageIndex = await pdfManager.ensureCatalog("getPageIndex", [pageRef]);
-      return pageIndex;
-    } catch (ex) {
-      (0, _util.warn)(`_getPageIndex: "${ex}".`);
-      return -1;
-    }
-  }
+var _encodings = __w_pdfjs_require__(19);
 
-}
+var _glyphlist = __w_pdfjs_require__(20);
 
-exports.AnnotationFactory = AnnotationFactory;
+var _unicode = __w_pdfjs_require__(21);
 
-function getRgbColor(color) {
-  const rgbColor = new Uint8ClampedArray(3);
+const SEAC_ANALYSIS_ENABLED = true;
+exports.SEAC_ANALYSIS_ENABLED = SEAC_ANALYSIS_ENABLED;
+const FontFlags = {
+  FixedPitch: 1,
+  Serif: 2,
+  Symbolic: 4,
+  Script: 8,
+  Nonsymbolic: 32,
+  Italic: 64,
+  AllCap: 65536,
+  SmallCap: 131072,
+  ForceBold: 262144
+};
+exports.FontFlags = FontFlags;
+const MacStandardGlyphOrdering = [".notdef", ".null", "nonmarkingreturn", "space", "exclam", "quotedbl", 
"numbersign", "dollar", "percent", "ampersand", "quotesingle", "parenleft", "parenright", "asterisk", "plus", 
"comma", "hyphen", "period", "slash", "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", 
"nine", "colon", "semicolon", "less", "equal", "greater", "question", "at", "A", "B", "C", "D", "E", "F", 
"G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", 
"bracketleft", "backslash", "bracketright", "asciicircum", "underscore", "grave", "a", "b", "c", "d", "e", 
"f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", 
"braceleft", "bar", "braceright", "asciitilde", "Adieresis", "Aring", "Ccedilla", "Eacute", "Ntilde", 
"Odieresis", "Udieresis", "aacute", "agrave", "acircumflex", "adieresis", "atilde", "aring", "ccedilla", 
"eacute", "egrave", "ecircumflex", "edieresis",
  "iacute", "igrave", "icircumflex", "idieresis", "ntilde", "oacute", "ograve", "ocircumflex", "odieresis", 
"otilde", "uacute", "ugrave", "ucircumflex", "udieresis", "dagger", "degree", "cent", "sterling", "section", 
"bullet", "paragraph", "germandbls", "registered", "copyright", "trademark", "acute", "dieresis", "notequal", 
"AE", "Oslash", "infinity", "plusminus", "lessequal", "greaterequal", "yen", "mu", "partialdiff", 
"summation", "product", "pi", "integral", "ordfeminine", "ordmasculine", "Omega", "ae", "oslash", 
"questiondown", "exclamdown", "logicalnot", "radical", "florin", "approxequal", "Delta", "guillemotleft", 
"guillemotright", "ellipsis", "nonbreakingspace", "Agrave", "Atilde", "Otilde", "OE", "oe", "endash", 
"emdash", "quotedblleft", "quotedblright", "quoteleft", "quoteright", "divide", "lozenge", "ydieresis", 
"Ydieresis", "fraction", "currency", "guilsinglleft", "guilsinglright", "fi", "fl", "daggerdbl", 
"periodcentered", "quotesinglbase", "quotedblbase", "perthousand",
  "Acircumflex", "Ecircumflex", "Aacute", "Edieresis", "Egrave", "Iacute", "Icircumflex", "Idieresis", 
"Igrave", "Oacute", "Ocircumflex", "apple", "Ograve", "Uacute", "Ucircumflex", "Ugrave", "dotlessi", 
"circumflex", "tilde", "macron", "breve", "dotaccent", "ring", "cedilla", "hungarumlaut", "ogonek", "caron", 
"Lslash", "lslash", "Scaron", "scaron", "Zcaron", "zcaron", "brokenbar", "Eth", "eth", "Yacute", "yacute", 
"Thorn", "thorn", "minus", "multiply", "onesuperior", "twosuperior", "threesuperior", "onehalf", 
"onequarter", "threequarters", "franc", "Gbreve", "gbreve", "Idotaccent", "Scedilla", "scedilla", "Cacute", 
"cacute", "Ccaron", "ccaron", "dcroat"];
+exports.MacStandardGlyphOrdering = MacStandardGlyphOrdering;
 
-  if (!Array.isArray(color)) {
-    return rgbColor;
-  }
+function getFontType(type, subtype, isStandardFont = false) {
+  switch (type) {
+    case "Type1":
+      if (isStandardFont) {
+        return _util.FontType.TYPE1STANDARD;
+      }
 
-  switch (color.length) {
-    case 0:
-      return null;
+      return subtype === "Type1C" ? _util.FontType.TYPE1C : _util.FontType.TYPE1;
 
-    case 1:
-      _colorspace.ColorSpace.singletons.gray.getRgbItem(color, 0, rgbColor, 0);
+    case "CIDFontType0":
+      return subtype === "CIDFontType0C" ? _util.FontType.CIDFONTTYPE0C : _util.FontType.CIDFONTTYPE0;
 
-      return rgbColor;
+    case "OpenType":
+      return _util.FontType.OPENTYPE;
 
-    case 3:
-      _colorspace.ColorSpace.singletons.rgb.getRgbItem(color, 0, rgbColor, 0);
+    case "TrueType":
+      return _util.FontType.TRUETYPE;
 
-      return rgbColor;
+    case "CIDFontType2":
+      return _util.FontType.CIDFONTTYPE2;
 
-    case 4:
-      _colorspace.ColorSpace.singletons.cmyk.getRgbItem(color, 0, rgbColor, 0);
+    case "MMType1":
+      return _util.FontType.MMTYPE1;
 
-      return rgbColor;
+    case "Type0":
+      return _util.FontType.TYPE0;
 
     default:
-      return rgbColor;
+      return _util.FontType.UNKNOWN;
   }
 }
 
-function getQuadPoints(dict, rect) {
-  if (!dict.has("QuadPoints")) {
-    return null;
+function recoverGlyphName(name, glyphsUnicodeMap) {
+  if (glyphsUnicodeMap[name] !== undefined) {
+    return name;
   }
 
-  const quadPoints = dict.getArray("QuadPoints");
+  const unicode = (0, _unicode.getUnicodeForGlyph)(name, glyphsUnicodeMap);
 
-  if (!Array.isArray(quadPoints) || quadPoints.length === 0 || quadPoints.length % 8 > 0) {
-    return null;
+  if (unicode !== -1) {
+    for (const key in glyphsUnicodeMap) {
+      if (glyphsUnicodeMap[key] === unicode) {
+        return key;
+      }
+    }
   }
 
-  const quadPointsLists = [];
+  (0, _util.info)("Unable to recover a standard glyph name for: " + name);
+  return name;
+}
 
-  for (let i = 0, ii = quadPoints.length / 8; i < ii; i++) {
-    quadPointsLists.push([]);
+function type1FontGlyphMapping(properties, builtInEncoding, glyphNames) {
+  const charCodeToGlyphId = Object.create(null);
+  let glyphId, charCode, baseEncoding;
+  const isSymbolicFont = !!(properties.flags & FontFlags.Symbolic);
 
-    for (let j = i * 8, jj = i * 8 + 8; j < jj; j += 2) {
-      const x = quadPoints[j];
-      const y = quadPoints[j + 1];
+  if (properties.isInternalFont) {
+    baseEncoding = builtInEncoding;
 
-      if (rect !== null && (x < rect[0] || x > rect[2] || y < rect[1] || y > rect[3])) {
-        return null;
+    for (charCode = 0; charCode < baseEncoding.length; charCode++) {
+      glyphId = glyphNames.indexOf(baseEncoding[charCode]);
+
+      if (glyphId >= 0) {
+        charCodeToGlyphId[charCode] = glyphId;
+      } else {
+        charCodeToGlyphId[charCode] = 0;
       }
+    }
+  } else if (properties.baseEncodingName) {
+    baseEncoding = (0, _encodings.getEncoding)(properties.baseEncodingName);
 
-      quadPointsLists[i].push({
-        x,
-        y
-      });
+    for (charCode = 0; charCode < baseEncoding.length; charCode++) {
+      glyphId = glyphNames.indexOf(baseEncoding[charCode]);
+
+      if (glyphId >= 0) {
+        charCodeToGlyphId[charCode] = glyphId;
+      } else {
+        charCodeToGlyphId[charCode] = 0;
+      }
     }
-  }
+  } else if (isSymbolicFont) {
+    for (charCode in builtInEncoding) {
+      charCodeToGlyphId[charCode] = builtInEncoding[charCode];
+    }
+  } else {
+    baseEncoding = _encodings.StandardEncoding;
 
-  return quadPointsLists.map(quadPointsList => {
-    const [minX, maxX, minY, maxY] = quadPointsList.reduce(([mX, MX, mY, MY], quadPoint) => [Math.min(mX, 
quadPoint.x), Math.max(MX, quadPoint.x), Math.min(mY, quadPoint.y), Math.max(MY, quadPoint.y)], 
[Number.MAX_VALUE, Number.MIN_VALUE, Number.MAX_VALUE, Number.MIN_VALUE]);
-    return [{
-      x: minX,
-      y: maxY
-    }, {
-      x: maxX,
-      y: maxY
-    }, {
-      x: minX,
-      y: minY
-    }, {
-      x: maxX,
-      y: minY
-    }];
-  });
-}
-
-function getTransformMatrix(rect, bbox, matrix) {
-  const [minX, minY, maxX, maxY] = _util.Util.getAxialAlignedBoundingBox(bbox, matrix);
-
-  if (minX === maxX || minY === maxY) {
-    return [1, 0, 0, 1, rect[0], rect[1]];
-  }
-
-  const xRatio = (rect[2] - rect[0]) / (maxX - minX);
-  const yRatio = (rect[3] - rect[1]) / (maxY - minY);
-  return [xRatio, 0, 0, yRatio, rect[0] - minX * xRatio, rect[1] - minY * yRatio];
-}
-
-class Annotation {
-  constructor(params) {
-    const dict = params.dict;
-    this.setContents(dict.get("Contents"));
-    this.setModificationDate(dict.get("M"));
-    this.setFlags(dict.get("F"));
-    this.setRectangle(dict.getArray("Rect"));
-    this.setColor(dict.getArray("C"));
-    this.setBorderStyle(dict);
-    this.setAppearance(dict);
-    this._streams = [];
-
-    if (this.appearance) {
-      this._streams.push(this.appearance);
-    }
-
-    this.data = {
-      annotationFlags: this.flags,
-      borderStyle: this.borderStyle,
-      color: this.color,
-      contents: this.contents,
-      hasAppearance: !!this.appearance,
-      id: params.id,
-      modificationDate: this.modificationDate,
-      rect: this.rectangle,
-      subtype: params.subtype
-    };
-
-    if (params.collectFields) {
-      const kids = dict.get("Kids");
-
-      if (Array.isArray(kids)) {
-        const kidIds = [];
-
-        for (const kid of kids) {
-          if ((0, _primitives.isRef)(kid)) {
-            kidIds.push(kid.toString());
-          }
-        }
+    for (charCode = 0; charCode < baseEncoding.length; charCode++) {
+      glyphId = glyphNames.indexOf(baseEncoding[charCode]);
 
-        if (kidIds.length !== 0) {
-          this.data.kidIds = kidIds;
-        }
+      if (glyphId >= 0) {
+        charCodeToGlyphId[charCode] = glyphId;
+      } else {
+        charCodeToGlyphId[charCode] = 0;
       }
-
-      this.data.actions = (0, _core_utils.collectActions)(params.xref, dict, 
_util.AnnotationActionEventType);
-      this.data.fieldName = this._constructFieldName(dict);
-      this.data.pageIndex = params.pageIndex;
-    }
-
-    this._fallbackFontDict = null;
-  }
-
-  _hasFlag(flags, flag) {
-    return !!(flags & flag);
-  }
-
-  _isViewable(flags) {
-    return !this._hasFlag(flags, _util.AnnotationFlag.INVISIBLE) && !this._hasFlag(flags, 
_util.AnnotationFlag.NOVIEW);
-  }
-
-  _isPrintable(flags) {
-    return this._hasFlag(flags, _util.AnnotationFlag.PRINT) && !this._hasFlag(flags, 
_util.AnnotationFlag.INVISIBLE);
-  }
-
-  mustBeViewed(annotationStorage) {
-    const storageEntry = annotationStorage && annotationStorage.get(this.data.id);
-
-    if (storageEntry && storageEntry.hidden !== undefined) {
-      return !storageEntry.hidden;
-    }
-
-    return this.viewable && !this._hasFlag(this.flags, _util.AnnotationFlag.HIDDEN);
-  }
-
-  mustBePrinted(annotationStorage) {
-    const storageEntry = annotationStorage && annotationStorage.get(this.data.id);
-
-    if (storageEntry && storageEntry.print !== undefined) {
-      return storageEntry.print;
-    }
-
-    return this.printable;
-  }
-
-  get viewable() {
-    if (this.data.quadPoints === null) {
-      return false;
-    }
-
-    if (this.flags === 0) {
-      return true;
-    }
-
-    return this._isViewable(this.flags);
-  }
-
-  get printable() {
-    if (this.data.quadPoints === null) {
-      return false;
-    }
-
-    if (this.flags === 0) {
-      return false;
-    }
-
-    return this._isPrintable(this.flags);
-  }
-
-  setContents(contents) {
-    this.contents = (0, _util.stringToPDFString)(contents || "");
-  }
-
-  setModificationDate(modificationDate) {
-    this.modificationDate = (0, _util.isString)(modificationDate) ? modificationDate : null;
-  }
-
-  setFlags(flags) {
-    this.flags = Number.isInteger(flags) && flags > 0 ? flags : 0;
-  }
-
-  hasFlag(flag) {
-    return this._hasFlag(this.flags, flag);
-  }
-
-  setRectangle(rectangle) {
-    if (Array.isArray(rectangle) && rectangle.length === 4) {
-      this.rectangle = _util.Util.normalizeRect(rectangle);
-    } else {
-      this.rectangle = [0, 0, 0, 0];
     }
   }
 
-  setColor(color) {
-    this.color = getRgbColor(color);
-  }
-
-  setBorderStyle(borderStyle) {
-    this.borderStyle = new AnnotationBorderStyle();
-
-    if (!(0, _primitives.isDict)(borderStyle)) {
-      return;
-    }
-
-    if (borderStyle.has("BS")) {
-      const dict = borderStyle.get("BS");
-      const dictType = dict.get("Type");
-
-      if (!dictType || (0, _primitives.isName)(dictType, "Border")) {
-        this.borderStyle.setWidth(dict.get("W"), this.rectangle);
-        this.borderStyle.setStyle(dict.get("S"));
-        this.borderStyle.setDashArray(dict.getArray("D"));
-      }
-    } else if (borderStyle.has("Border")) {
-      const array = borderStyle.getArray("Border");
+  const differences = properties.differences;
+  let glyphsUnicodeMap;
 
-      if (Array.isArray(array) && array.length >= 3) {
-        this.borderStyle.setHorizontalCornerRadius(array[0]);
-        this.borderStyle.setVerticalCornerRadius(array[1]);
-        this.borderStyle.setWidth(array[2], this.rectangle);
+  if (differences) {
+    for (charCode in differences) {
+      const glyphName = differences[charCode];
+      glyphId = glyphNames.indexOf(glyphName);
 
-        if (array.length === 4) {
-          this.borderStyle.setDashArray(array[3]);
+      if (glyphId === -1) {
+        if (!glyphsUnicodeMap) {
+          glyphsUnicodeMap = (0, _glyphlist.getGlyphsUnicode)();
         }
-      }
-    } else {
-      this.borderStyle.setWidth(0);
-    }
-  }
-
-  setAppearance(dict) {
-    this.appearance = null;
-    const appearanceStates = dict.get("AP");
-
-    if (!(0, _primitives.isDict)(appearanceStates)) {
-      return;
-    }
-
-    const normalAppearanceState = appearanceStates.get("N");
-
-    if ((0, _primitives.isStream)(normalAppearanceState)) {
-      this.appearance = normalAppearanceState;
-      return;
-    }
-
-    if (!(0, _primitives.isDict)(normalAppearanceState)) {
-      return;
-    }
-
-    const as = dict.get("AS");
-
-    if (!(0, _primitives.isName)(as) || !normalAppearanceState.has(as.name)) {
-      return;
-    }
-
-    this.appearance = normalAppearanceState.get(as.name);
-  }
-
-  loadResources(keys) {
-    return this.appearance.dict.getAsync("Resources").then(resources => {
-      if (!resources) {
-        return undefined;
-      }
-
-      const objectLoader = new _object_loader.ObjectLoader(resources, keys, resources.xref);
-      return objectLoader.load().then(function () {
-        return resources;
-      });
-    });
-  }
-
-  getOperatorList(evaluator, task, renderForms, annotationStorage) {
-    if (!this.appearance) {
-      return Promise.resolve(new _operator_list.OperatorList());
-    }
-
-    const appearance = this.appearance;
-    const data = this.data;
-    const appearanceDict = appearance.dict;
-    const resourcesPromise = this.loadResources(["ExtGState", "ColorSpace", "Pattern", "Shading", "XObject", 
"Font"]);
-    const bbox = appearanceDict.getArray("BBox") || [0, 0, 1, 1];
-    const matrix = appearanceDict.getArray("Matrix") || [1, 0, 0, 1, 0, 0];
-    const transform = getTransformMatrix(data.rect, bbox, matrix);
-    return resourcesPromise.then(resources => {
-      const opList = new _operator_list.OperatorList();
-      opList.addOp(_util.OPS.beginAnnotation, [data.id, data.rect, transform, matrix]);
-      return evaluator.getOperatorList({
-        stream: appearance,
-        task,
-        resources,
-        operatorList: opList,
-        fallbackFontDict: this._fallbackFontDict
-      }).then(() => {
-        opList.addOp(_util.OPS.endAnnotation, []);
-        this.reset();
-        return opList;
-      });
-    });
-  }
-
-  async save(evaluator, task, annotationStorage) {
-    return null;
-  }
-
-  getFieldObject() {
-    if (this.data.kidIds) {
-      return {
-        id: this.data.id,
-        actions: this.data.actions,
-        name: this.data.fieldName,
-        type: "",
-        kidIds: this.data.kidIds,
-        page: this.data.pageIndex
-      };
-    }
-
-    return null;
-  }
-
-  reset() {
-    for (const stream of this._streams) {
-      stream.reset();
-    }
-  }
-
-  _constructFieldName(dict) {
-    if (!dict.has("T") && !dict.has("Parent")) {
-      (0, _util.warn)("Unknown field name, falling back to empty field name.");
-      return "";
-    }
-
-    if (!dict.has("Parent")) {
-      return (0, _util.stringToPDFString)(dict.get("T"));
-    }
-
-    const fieldName = [];
-
-    if (dict.has("T")) {
-      fieldName.unshift((0, _util.stringToPDFString)(dict.get("T")));
-    }
-
-    let loopDict = dict;
-    const visited = new _primitives.RefSet();
-
-    if (dict.objId) {
-      visited.put(dict.objId);
-    }
-
-    while (loopDict.has("Parent")) {
-      loopDict = loopDict.get("Parent");
 
-      if (!(loopDict instanceof _primitives.Dict) || loopDict.objId && visited.has(loopDict.objId)) {
-        break;
-      }
+        const standardGlyphName = recoverGlyphName(glyphName, glyphsUnicodeMap);
 
-      if (loopDict.objId) {
-        visited.put(loopDict.objId);
+        if (standardGlyphName !== glyphName) {
+          glyphId = glyphNames.indexOf(standardGlyphName);
+        }
       }
 
-      if (loopDict.has("T")) {
-        fieldName.unshift((0, _util.stringToPDFString)(loopDict.get("T")));
+      if (glyphId >= 0) {
+        charCodeToGlyphId[charCode] = glyphId;
+      } else {
+        charCodeToGlyphId[charCode] = 0;
       }
     }
-
-    return fieldName.join(".");
   }
 
+  return charCodeToGlyphId;
 }
 
-exports.Annotation = Annotation;
-
-class AnnotationBorderStyle {
-  constructor() {
-    this.width = 1;
-    this.style = _util.AnnotationBorderStyleType.SOLID;
-    this.dashArray = [3];
-    this.horizontalCornerRadius = 0;
-    this.verticalCornerRadius = 0;
-  }
-
-  setWidth(width, rect = [0, 0, 0, 0]) {
-    if ((0, _primitives.isName)(width)) {
-      this.width = 0;
-      return;
-    }
-
-    if (Number.isInteger(width)) {
-      if (width > 0) {
-        const maxWidth = (rect[2] - rect[0]) / 2;
-        const maxHeight = (rect[3] - rect[1]) / 2;
-
-        if (maxWidth > 0 && maxHeight > 0 && (width > maxWidth || width > maxHeight)) {
-          (0, _util.warn)(`AnnotationBorderStyle.setWidth - ignoring width: ${width}`);
-          width = 1;
-        }
-      }
-
-      this.width = width;
-    }
-  }
-
-  setStyle(style) {
-    if (!(0, _primitives.isName)(style)) {
-      return;
-    }
+function normalizeFontName(name) {
+  return name.replace(/[,_]/g, "-").replace(/\s/g, "");
+}
 
-    switch (style.name) {
-      case "S":
-        this.style = _util.AnnotationBorderStyleType.SOLID;
-        break;
+/***/ }),
+/* 19 */
+/***/ ((__unused_webpack_module, exports) => {
 
-      case "D":
-        this.style = _util.AnnotationBorderStyleType.DASHED;
-        break;
 
-      case "B":
-        this.style = _util.AnnotationBorderStyleType.BEVELED;
-        break;
 
-      case "I":
-        this.style = _util.AnnotationBorderStyleType.INSET;
-        break;
+Object.defineProperty(exports, "__esModule", ({
+  value: true
+}));
+exports.getEncoding = getEncoding;
+exports.ZapfDingbatsEncoding = exports.WinAnsiEncoding = exports.SymbolSetEncoding = 
exports.StandardEncoding = exports.MacRomanEncoding = exports.ExpertEncoding = void 0;
+const ExpertEncoding = ["", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", 
"", "", "", "", "", "", "", "", "", "", "", "space", "exclamsmall", "Hungarumlautsmall", "", 
"dollaroldstyle", "dollarsuperior", "ampersandsmall", "Acutesmall", "parenleftsuperior", 
"parenrightsuperior", "twodotenleader", "onedotenleader", "comma", "hyphen", "period", "fraction", 
"zerooldstyle", "oneoldstyle", "twooldstyle", "threeoldstyle", "fouroldstyle", "fiveoldstyle", "sixoldstyle", 
"sevenoldstyle", "eightoldstyle", "nineoldstyle", "colon", "semicolon", "commasuperior", 
"threequartersemdash", "periodsuperior", "questionsmall", "", "asuperior", "bsuperior", "centsuperior", 
"dsuperior", "esuperior", "", "", "", "isuperior", "", "", "lsuperior", "msuperior", "nsuperior", 
"osuperior", "", "", "rsuperior", "ssuperior", "tsuperior", "", "ff", "fi", "fl", "ffi", "ffl", 
"parenleftinferior", "", "parenrightinferior", "Circumflexsmall", "hyphensuperior", "Gravesmall", "Asmall", 
"Bs
 mall", "Csmall", "Dsmall", "Esmall", "Fsmall", "Gsmall", "Hsmall", "Ismall", "Jsmall", "Ksmall", "Lsmall", 
"Msmall", "Nsmall", "Osmall", "Psmall", "Qsmall", "Rsmall", "Ssmall", "Tsmall", "Usmall", "Vsmall", "Wsmall", 
"Xsmall", "Ysmall", "Zsmall", "colonmonetary", "onefitted", "rupiah", "Tildesmall", "", "", "", "", "", "", 
"", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", 
"", "exclamdownsmall", "centoldstyle", "Lslashsmall", "", "", "Scaronsmall", "Zcaronsmall", "Dieresissmall", 
"Brevesmall", "Caronsmall", "", "Dotaccentsmall", "", "", "Macronsmall", "", "", "figuredash", 
"hypheninferior", "", "", "Ogoneksmall", "Ringsmall", "Cedillasmall", "", "", "", "onequarter", "onehalf", 
"threequarters", "questiondownsmall", "oneeighth", "threeeighths", "fiveeighths", "seveneighths", "onethird", 
"twothirds", "", "", "zerosuperior", "onesuperior", "twosuperior", "threesuperior", "foursuperior", 
"fivesuperior", "sixsuperior", "sevensuperi
 or", "eightsuperior", "ninesuperior", "zeroinferior", "oneinferior", "twoinferior", "threeinferior", 
"fourinferior", "fiveinferior", "sixinferior", "seveninferior", "eightinferior", "nineinferior", 
"centinferior", "dollarinferior", "periodinferior", "commainferior", "Agravesmall", "Aacutesmall", 
"Acircumflexsmall", "Atildesmall", "Adieresissmall", "Aringsmall", "AEsmall", "Ccedillasmall", "Egravesmall", 
"Eacutesmall", "Ecircumflexsmall", "Edieresissmall", "Igravesmall", "Iacutesmall", "Icircumflexsmall", 
"Idieresissmall", "Ethsmall", "Ntildesmall", "Ogravesmall", "Oacutesmall", "Ocircumflexsmall", "Otildesmall", 
"Odieresissmall", "OEsmall", "Oslashsmall", "Ugravesmall", "Uacutesmall", "Ucircumflexsmall", 
"Udieresissmall", "Yacutesmall", "Thornsmall", "Ydieresissmall"];
+exports.ExpertEncoding = ExpertEncoding;
+const MacExpertEncoding = ["", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", 
"", "", "", "", "", "", "", "", "", "", "", "", "space", "exclamsmall", "Hungarumlautsmall", "centoldstyle", 
"dollaroldstyle", "dollarsuperior", "ampersandsmall", "Acutesmall", "parenleftsuperior", 
"parenrightsuperior", "twodotenleader", "onedotenleader", "comma", "hyphen", "period", "fraction", 
"zerooldstyle", "oneoldstyle", "twooldstyle", "threeoldstyle", "fouroldstyle", "fiveoldstyle", "sixoldstyle", 
"sevenoldstyle", "eightoldstyle", "nineoldstyle", "colon", "semicolon", "", "threequartersemdash", "", 
"questionsmall", "", "", "", "", "Ethsmall", "", "", "onequarter", "onehalf", "threequarters", "oneeighth", 
"threeeighths", "fiveeighths", "seveneighths", "onethird", "twothirds", "", "", "", "", "", "", "ff", "fi", 
"fl", "ffi", "ffl", "parenleftinferior", "", "parenrightinferior", "Circumflexsmall", "hypheninferior", 
"Gravesmall", "Asmall", "Bsmall", "Csmall", "Dsmall", "Esmal
 l", "Fsmall", "Gsmall", "Hsmall", "Ismall", "Jsmall", "Ksmall", "Lsmall", "Msmall", "Nsmall", "Osmall", 
"Psmall", "Qsmall", "Rsmall", "Ssmall", "Tsmall", "Usmall", "Vsmall", "Wsmall", "Xsmall", "Ysmall", "Zsmall", 
"colonmonetary", "onefitted", "rupiah", "Tildesmall", "", "", "asuperior", "centsuperior", "", "", "", "", 
"Aacutesmall", "Agravesmall", "Acircumflexsmall", "Adieresissmall", "Atildesmall", "Aringsmall", 
"Ccedillasmall", "Eacutesmall", "Egravesmall", "Ecircumflexsmall", "Edieresissmall", "Iacutesmall", 
"Igravesmall", "Icircumflexsmall", "Idieresissmall", "Ntildesmall", "Oacutesmall", "Ogravesmall", 
"Ocircumflexsmall", "Odieresissmall", "Otildesmall", "Uacutesmall", "Ugravesmall", "Ucircumflexsmall", 
"Udieresissmall", "", "eightsuperior", "fourinferior", "threeinferior", "sixinferior", "eightinferior", 
"seveninferior", "Scaronsmall", "", "centinferior", "twoinferior", "", "Dieresissmall", "", "Caronsmall", 
"osuperior", "fiveinferior", "", "commainferior", "periodinferior", 
 "Yacutesmall", "", "dollarinferior", "", "", "Thornsmall", "", "nineinferior", "zeroinferior", 
"Zcaronsmall", "AEsmall", "Oslashsmall", "questiondownsmall", "oneinferior", "Lslashsmall", "", "", "", "", 
"", "", "Cedillasmall", "", "", "", "", "", "OEsmall", "figuredash", "hyphensuperior", "", "", "", "", 
"exclamdownsmall", "", "Ydieresissmall", "", "onesuperior", "twosuperior", "threesuperior", "foursuperior", 
"fivesuperior", "sixsuperior", "sevensuperior", "ninesuperior", "zerosuperior", "", "esuperior", "rsuperior", 
"tsuperior", "", "", "isuperior", "ssuperior", "dsuperior", "", "", "", "", "", "lsuperior", "Ogoneksmall", 
"Brevesmall", "Macronsmall", "bsuperior", "nsuperior", "msuperior", "commasuperior", "periodsuperior", 
"Dotaccentsmall", "Ringsmall", "", "", "", ""];
+const MacRomanEncoding = ["", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", 
"", "", "", "", "", "", "", "", "", "", "", "", "space", "exclam", "quotedbl", "numbersign", "dollar", 
"percent", "ampersand", "quotesingle", "parenleft", "parenright", "asterisk", "plus", "comma", "hyphen", 
"period", "slash", "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "colon", 
"semicolon", "less", "equal", "greater", "question", "at", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", 
"K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "bracketleft", "backslash", 
"bracketright", "asciicircum", "underscore", "grave", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", 
"l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "braceleft", "bar", "braceright", 
"asciitilde", "", "Adieresis", "Aring", "Ccedilla", "Eacute", "Ntilde", "Odieresis", "Udieresis", "aacute", 
"agrave", "acircumflex", "adiere
 sis", "atilde", "aring", "ccedilla", "eacute", "egrave", "ecircumflex", "edieresis", "iacute", "igrave", 
"icircumflex", "idieresis", "ntilde", "oacute", "ograve", "ocircumflex", "odieresis", "otilde", "uacute", 
"ugrave", "ucircumflex", "udieresis", "dagger", "degree", "cent", "sterling", "section", "bullet", 
"paragraph", "germandbls", "registered", "copyright", "trademark", "acute", "dieresis", "notequal", "AE", 
"Oslash", "infinity", "plusminus", "lessequal", "greaterequal", "yen", "mu", "partialdiff", "summation", 
"product", "pi", "integral", "ordfeminine", "ordmasculine", "Omega", "ae", "oslash", "questiondown", 
"exclamdown", "logicalnot", "radical", "florin", "approxequal", "Delta", "guillemotleft", "guillemotright", 
"ellipsis", "space", "Agrave", "Atilde", "Otilde", "OE", "oe", "endash", "emdash", "quotedblleft", 
"quotedblright", "quoteleft", "quoteright", "divide", "lozenge", "ydieresis", "Ydieresis", "fraction", 
"currency", "guilsinglleft", "guilsinglright", "fi", "fl", "dagge
 rdbl", "periodcentered", "quotesinglbase", "quotedblbase", "perthousand", "Acircumflex", "Ecircumflex", 
"Aacute", "Edieresis", "Egrave", "Iacute", "Icircumflex", "Idieresis", "Igrave", "Oacute", "Ocircumflex", 
"apple", "Ograve", "Uacute", "Ucircumflex", "Ugrave", "dotlessi", "circumflex", "tilde", "macron", "breve", 
"dotaccent", "ring", "cedilla", "hungarumlaut", "ogonek", "caron"];
+exports.MacRomanEncoding = MacRomanEncoding;
+const StandardEncoding = ["", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", 
"", "", "", "", "", "", "", "", "", "", "", "", "space", "exclam", "quotedbl", "numbersign", "dollar", 
"percent", "ampersand", "quoteright", "parenleft", "parenright", "asterisk", "plus", "comma", "hyphen", 
"period", "slash", "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "colon", 
"semicolon", "less", "equal", "greater", "question", "at", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", 
"K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "bracketleft", "backslash", 
"bracketright", "asciicircum", "underscore", "quoteleft", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", 
"k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "braceleft", "bar", 
"braceright", "asciitilde", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", 
"", "", "", "", "", "", "", "", "", "", "",
  "", "", "", "exclamdown", "cent", "sterling", "fraction", "yen", "florin", "section", "currency", 
"quotesingle", "quotedblleft", "guillemotleft", "guilsinglleft", "guilsinglright", "fi", "fl", "", "endash", 
"dagger", "daggerdbl", "periodcentered", "", "paragraph", "bullet", "quotesinglbase", "quotedblbase", 
"quotedblright", "guillemotright", "ellipsis", "perthousand", "", "questiondown", "", "grave", "acute", 
"circumflex", "tilde", "macron", "breve", "dotaccent", "dieresis", "", "ring", "cedilla", "", "hungarumlaut", 
"ogonek", "caron", "emdash", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "AE", "", 
"ordfeminine", "", "", "", "", "Lslash", "Oslash", "OE", "ordmasculine", "", "", "", "", "", "ae", "", "", 
"", "dotlessi", "", "", "lslash", "oslash", "oe", "germandbls", "", "", "", ""];
+exports.StandardEncoding = StandardEncoding;
+const WinAnsiEncoding = ["", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", 
"", "", "", "", "", "", "", "", "", "", "", "space", "exclam", "quotedbl", "numbersign", "dollar", "percent", 
"ampersand", "quotesingle", "parenleft", "parenright", "asterisk", "plus", "comma", "hyphen", "period", 
"slash", "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "colon", 
"semicolon", "less", "equal", "greater", "question", "at", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", 
"K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "bracketleft", "backslash", 
"bracketright", "asciicircum", "underscore", "grave", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", 
"l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "braceleft", "bar", "braceright", 
"asciitilde", "bullet", "Euro", "bullet", "quotesinglbase", "florin", "quotedblbase", "ellipsis", "dagger", 
"daggerdbl", "circumflex", "perth
 ousand", "Scaron", "guilsinglleft", "OE", "bullet", "Zcaron", "bullet", "bullet", "quoteleft", "quoteright", 
"quotedblleft", "quotedblright", "bullet", "endash", "emdash", "tilde", "trademark", "scaron", 
"guilsinglright", "oe", "bullet", "zcaron", "Ydieresis", "space", "exclamdown", "cent", "sterling", 
"currency", "yen", "brokenbar", "section", "dieresis", "copyright", "ordfeminine", "guillemotleft", 
"logicalnot", "hyphen", "registered", "macron", "degree", "plusminus", "twosuperior", "threesuperior", 
"acute", "mu", "paragraph", "periodcentered", "cedilla", "onesuperior", "ordmasculine", "guillemotright", 
"onequarter", "onehalf", "threequarters", "questiondown", "Agrave", "Aacute", "Acircumflex", "Atilde", 
"Adieresis", "Aring", "AE", "Ccedilla", "Egrave", "Eacute", "Ecircumflex", "Edieresis", "Igrave", "Iacute", 
"Icircumflex", "Idieresis", "Eth", "Ntilde", "Ograve", "Oacute", "Ocircumflex", "Otilde", "Odieresis", 
"multiply", "Oslash", "Ugrave", "Uacute", "Ucircumflex", "Udieresis", 
 "Yacute", "Thorn", "germandbls", "agrave", "aacute", "acircumflex", "atilde", "adieresis", "aring", "ae", 
"ccedilla", "egrave", "eacute", "ecircumflex", "edieresis", "igrave", "iacute", "icircumflex", "idieresis", 
"eth", "ntilde", "ograve", "oacute", "ocircumflex", "otilde", "odieresis", "divide", "oslash", "ugrave", 
"uacute", "ucircumflex", "udieresis", "yacute", "thorn", "ydieresis"];
+exports.WinAnsiEncoding = WinAnsiEncoding;
+const SymbolSetEncoding = ["", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", 
"", "", "", "", "", "", "", "", "", "", "", "", "space", "exclam", "universal", "numbersign", "existential", 
"percent", "ampersand", "suchthat", "parenleft", "parenright", "asteriskmath", "plus", "comma", "minus", 
"period", "slash", "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "colon", 
"semicolon", "less", "equal", "greater", "question", "congruent", "Alpha", "Beta", "Chi", "Delta", "Epsilon", 
"Phi", "Gamma", "Eta", "Iota", "theta1", "Kappa", "Lambda", "Mu", "Nu", "Omicron", "Pi", "Theta", "Rho", 
"Sigma", "Tau", "Upsilon", "sigma1", "Omega", "Xi", "Psi", "Zeta", "bracketleft", "therefore", 
"bracketright", "perpendicular", "underscore", "radicalex", "alpha", "beta", "chi", "delta", "epsilon", 
"phi", "gamma", "eta", "iota", "phi1", "kappa", "lambda", "mu", "nu", "omicron", "pi", "theta", "rho", 
"sigma", "tau", "upsilon", "omega1", "omega", "xi",
  "psi", "zeta", "braceleft", "bar", "braceright", "similar", "", "", "", "", "", "", "", "", "", "", "", "", 
"", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "Euro", "Upsilon1", 
"minute", "lessequal", "fraction", "infinity", "florin", "club", "diamond", "heart", "spade", "arrowboth", 
"arrowleft", "arrowup", "arrowright", "arrowdown", "degree", "plusminus", "second", "greaterequal", 
"multiply", "proportional", "partialdiff", "bullet", "divide", "notequal", "equivalence", "approxequal", 
"ellipsis", "arrowvertex", "arrowhorizex", "carriagereturn", "aleph", "Ifraktur", "Rfraktur", "weierstrass", 
"circlemultiply", "circleplus", "emptyset", "intersection", "union", "propersuperset", "reflexsuperset", 
"notsubset", "propersubset", "reflexsubset", "element", "notelement", "angle", "gradient", "registerserif", 
"copyrightserif", "trademarkserif", "product", "radical", "dotmath", "logicalnot", "logicaland", "logicalor", 
"arrowdblboth", "arrowdblleft", "arrowdb
 lup", "arrowdblright", "arrowdbldown", "lozenge", "angleleft", "registersans", "copyrightsans", 
"trademarksans", "summation", "parenlefttp", "parenleftex", "parenleftbt", "bracketlefttp", "bracketleftex", 
"bracketleftbt", "bracelefttp", "braceleftmid", "braceleftbt", "braceex", "", "angleright", "integral", 
"integraltp", "integralex", "integralbt", "parenrighttp", "parenrightex", "parenrightbt", "bracketrighttp", 
"bracketrightex", "bracketrightbt", "bracerighttp", "bracerightmid", "bracerightbt", ""];
+exports.SymbolSetEncoding = SymbolSetEncoding;
+const ZapfDingbatsEncoding = ["", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", 
"", "", "", "", "", "", "", "", "", "", "", "", "", "space", "a1", "a2", "a202", "a3", "a4", "a5", "a119", 
"a118", "a117", "a11", "a12", "a13", "a14", "a15", "a16", "a105", "a17", "a18", "a19", "a20", "a21", "a22", 
"a23", "a24", "a25", "a26", "a27", "a28", "a6", "a7", "a8", "a9", "a10", "a29", "a30", "a31", "a32", "a33", 
"a34", "a35", "a36", "a37", "a38", "a39", "a40", "a41", "a42", "a43", "a44", "a45", "a46", "a47", "a48", 
"a49", "a50", "a51", "a52", "a53", "a54", "a55", "a56", "a57", "a58", "a59", "a60", "a61", "a62", "a63", 
"a64", "a65", "a66", "a67", "a68", "a69", "a70", "a71", "a72", "a73", "a74", "a203", "a75", "a204", "a76", 
"a77", "a78", "a79", "a81", "a82", "a83", "a84", "a97", "a98", "a99", "a100", "", "a89", "a90", "a93", "a94", 
"a91", "a92", "a205", "a85", "a206", "a86", "a87", "a88", "a95", "a96", "", "", "", "", "", "", "", "", "", 
"", "", "", "", "", "", "", "", "
 ", "", "a101", "a102", "a103", "a104", "a106", "a107", "a108", "a112", "a111", "a110", "a109", "a120", 
"a121", "a122", "a123", "a124", "a125", "a126", "a127", "a128", "a129", "a130", "a131", "a132", "a133", 
"a134", "a135", "a136", "a137", "a138", "a139", "a140", "a141", "a142", "a143", "a144", "a145", "a146", 
"a147", "a148", "a149", "a150", "a151", "a152", "a153", "a154", "a155", "a156", "a157", "a158", "a159", 
"a160", "a161", "a163", "a164", "a196", "a165", "a192", "a166", "a167", "a168", "a169", "a170", "a171", 
"a172", "a173", "a162", "a174", "a175", "a176", "a177", "a178", "a179", "a193", "a180", "a199", "a181", 
"a200", "a182", "", "a201", "a183", "a184", "a197", "a185", "a194", "a198", "a186", "a195", "a187", "a188", 
"a189", "a190", "a191", ""];
+exports.ZapfDingbatsEncoding = ZapfDingbatsEncoding;
 
-      case "U":
-        this.style = _util.AnnotationBorderStyleType.UNDERLINE;
-        break;
+function getEncoding(encodingName) {
+  switch (encodingName) {
+    case "WinAnsiEncoding":
+      return WinAnsiEncoding;
 
-      default:
-        break;
-    }
-  }
+    case "StandardEncoding":
+      return StandardEncoding;
 
-  setDashArray(dashArray) {
-    if (Array.isArray(dashArray) && dashArray.length > 0) {
-      let isValid = true;
-      let allZeros = true;
+    case "MacRomanEncoding":
+      return MacRomanEncoding;
 
-      for (const element of dashArray) {
-        const validNumber = +element >= 0;
+    case "SymbolSetEncoding":
+      return SymbolSetEncoding;
 
-        if (!validNumber) {
-          isValid = false;
-          break;
-        } else if (element > 0) {
-          allZeros = false;
-        }
-      }
+    case "ZapfDingbatsEncoding":
+      return ZapfDingbatsEncoding;
 
-      if (isValid && !allZeros) {
-        this.dashArray = dashArray;
-      } else {
-        this.width = 0;
-      }
-    } else if (dashArray) {
-      this.width = 0;
-    }
-  }
+    case "ExpertEncoding":
+      return ExpertEncoding;
 
-  setHorizontalCornerRadius(radius) {
-    if (Number.isInteger(radius)) {
-      this.horizontalCornerRadius = radius;
-    }
-  }
+    case "MacExpertEncoding":
+      return MacExpertEncoding;
 
-  setVerticalCornerRadius(radius) {
-    if (Number.isInteger(radius)) {
-      this.verticalCornerRadius = radius;
-    }
+    default:
+      return null;
   }
-
 }
 
-exports.AnnotationBorderStyle = AnnotationBorderStyle;
-
-class MarkupAnnotation extends Annotation {
-  constructor(parameters) {
-    super(parameters);
-    const dict = parameters.dict;
-
-    if (dict.has("IRT")) {
-      const rawIRT = dict.getRaw("IRT");
-      this.data.inReplyTo = (0, _primitives.isRef)(rawIRT) ? rawIRT.toString() : null;
-      const rt = dict.get("RT");
-      this.data.replyType = (0, _primitives.isName)(rt) ? rt.name : _util.AnnotationReplyType.REPLY;
-    }
-
-    if (this.data.replyType === _util.AnnotationReplyType.GROUP) {
-      const parent = dict.get("IRT");
-      this.data.title = (0, _util.stringToPDFString)(parent.get("T") || "");
-      this.setContents(parent.get("Contents"));
-      this.data.contents = this.contents;
-
-      if (!parent.has("CreationDate")) {
-        this.data.creationDate = null;
-      } else {
-        this.setCreationDate(parent.get("CreationDate"));
-        this.data.creationDate = this.creationDate;
-      }
+/***/ }),
+/* 20 */
+/***/ ((__unused_webpack_module, __webpack_exports__, __w_pdfjs_require__) => {
 
-      if (!parent.has("M")) {
-        this.data.modificationDate = null;
-      } else {
-        this.setModificationDate(parent.get("M"));
-        this.data.modificationDate = this.modificationDate;
-      }
-
-      this.data.hasPopup = parent.has("Popup");
-
-      if (!parent.has("C")) {
-        this.data.color = null;
-      } else {
-        this.setColor(parent.getArray("C"));
-        this.data.color = this.color;
-      }
-    } else {
-      this.data.title = (0, _util.stringToPDFString)(dict.get("T") || "");
-      this.setCreationDate(dict.get("CreationDate"));
-      this.data.creationDate = this.creationDate;
-      this.data.hasPopup = dict.has("Popup");
-
-      if (!dict.has("C")) {
-        this.data.color = null;
-      }
-    }
-  }
-
-  setCreationDate(creationDate) {
-    this.creationDate = (0, _util.isString)(creationDate) ? creationDate : null;
-  }
-
-  _setDefaultAppearance({
-    xref,
-    extra,
-    strokeColor,
-    fillColor,
-    blendMode,
-    strokeAlpha,
-    fillAlpha,
-    pointsCallback
-  }) {
-    let minX = Number.MAX_VALUE;
-    let minY = Number.MAX_VALUE;
-    let maxX = Number.MIN_VALUE;
-    let maxY = Number.MIN_VALUE;
-    const buffer = ["q"];
-
-    if (extra) {
-      buffer.push(extra);
-    }
-
-    if (strokeColor) {
-      buffer.push(`${strokeColor[0]} ${strokeColor[1]} ${strokeColor[2]} RG`);
-    }
-
-    if (fillColor) {
-      buffer.push(`${fillColor[0]} ${fillColor[1]} ${fillColor[2]} rg`);
-    }
-
-    let pointsArray = this.data.quadPoints;
-
-    if (!pointsArray) {
-      pointsArray = [[{
-        x: this.rectangle[0],
-        y: this.rectangle[3]
-      }, {
-        x: this.rectangle[2],
-        y: this.rectangle[3]
-      }, {
-        x: this.rectangle[0],
-        y: this.rectangle[1]
-      }, {
-        x: this.rectangle[2],
-        y: this.rectangle[1]
-      }]];
-    }
-
-    for (const points of pointsArray) {
-      const [mX, MX, mY, MY] = pointsCallback(buffer, points);
-      minX = Math.min(minX, mX);
-      maxX = Math.max(maxX, MX);
-      minY = Math.min(minY, mY);
-      maxY = Math.max(maxY, MY);
-    }
-
-    buffer.push("Q");
-    const formDict = new _primitives.Dict(xref);
-    const appearanceStreamDict = new _primitives.Dict(xref);
-    appearanceStreamDict.set("Subtype", _primitives.Name.get("Form"));
-    const appearanceStream = new _stream.StringStream(buffer.join(" "));
-    appearanceStream.dict = appearanceStreamDict;
-    formDict.set("Fm0", appearanceStream);
-    const gsDict = new _primitives.Dict(xref);
-
-    if (blendMode) {
-      gsDict.set("BM", _primitives.Name.get(blendMode));
-    }
-
-    if (typeof strokeAlpha === "number") {
-      gsDict.set("CA", strokeAlpha);
-    }
-
-    if (typeof fillAlpha === "number") {
-      gsDict.set("ca", fillAlpha);
-    }
-
-    const stateDict = new _primitives.Dict(xref);
-    stateDict.set("GS0", gsDict);
-    const resources = new _primitives.Dict(xref);
-    resources.set("ExtGState", stateDict);
-    resources.set("XObject", formDict);
-    const appearanceDict = new _primitives.Dict(xref);
-    appearanceDict.set("Resources", resources);
-    const bbox = this.data.rect = [minX, minY, maxX, maxY];
-    appearanceDict.set("BBox", bbox);
-    this.appearance = new _stream.StringStream("/GS0 gs /Fm0 Do");
-    this.appearance.dict = appearanceDict;
-
-    this._streams.push(this.appearance, appearanceStream);
-  }
-
-}
-
-exports.MarkupAnnotation = MarkupAnnotation;
-
-class WidgetAnnotation extends Annotation {
-  constructor(params) {
-    super(params);
-    const dict = params.dict;
-    const data = this.data;
-    this.ref = params.ref;
-    data.annotationType = _util.AnnotationType.WIDGET;
-
-    if (data.fieldName === undefined) {
-      data.fieldName = this._constructFieldName(dict);
-    }
-
-    if (data.actions === undefined) {
-      data.actions = (0, _core_utils.collectActions)(params.xref, dict, _util.AnnotationActionEventType);
-    }
-
-    const fieldValue = (0, _core_utils.getInheritableProperty)({
-      dict,
-      key: "V",
-      getArray: true
-    });
-    data.fieldValue = this._decodeFormValue(fieldValue);
-    const defaultFieldValue = (0, _core_utils.getInheritableProperty)({
-      dict,
-      key: "DV",
-      getArray: true
-    });
-    data.defaultFieldValue = this._decodeFormValue(defaultFieldValue);
-    data.alternativeText = (0, _util.stringToPDFString)(dict.get("TU") || "");
-    const defaultAppearance = (0, _core_utils.getInheritableProperty)({
-      dict,
-      key: "DA"
-    }) || params.acroForm.get("DA");
-    this._defaultAppearance = (0, _util.isString)(defaultAppearance) ? defaultAppearance : "";
-    data.defaultAppearanceData = (0, _default_appearance.parseDefaultAppearance)(this._defaultAppearance);
-    const fieldType = (0, _core_utils.getInheritableProperty)({
-      dict,
-      key: "FT"
-    });
-    data.fieldType = (0, _primitives.isName)(fieldType) ? fieldType.name : null;
-    const localResources = (0, _core_utils.getInheritableProperty)({
-      dict,
-      key: "DR"
-    });
-    const acroFormResources = params.acroForm.get("DR");
-    const appearanceResources = this.appearance && this.appearance.dict.get("Resources");
-    this._fieldResources = {
-      localResources,
-      acroFormResources,
-      appearanceResources,
-      mergedResources: _primitives.Dict.merge({
-        xref: params.xref,
-        dictArray: [localResources, appearanceResources, acroFormResources],
-        mergeSubDicts: true
-      })
-    };
-    data.fieldFlags = (0, _core_utils.getInheritableProperty)({
-      dict,
-      key: "Ff"
-    });
-
-    if (!Number.isInteger(data.fieldFlags) || data.fieldFlags < 0) {
-      data.fieldFlags = 0;
-    }
-
-    data.readOnly = this.hasFieldFlag(_util.AnnotationFieldFlag.READONLY);
-    data.hidden = this._hasFlag(data.annotationFlags, _util.AnnotationFlag.HIDDEN);
-  }
-
-  _decodeFormValue(formValue) {
-    if (Array.isArray(formValue)) {
-      return formValue.filter(item => (0, _util.isString)(item)).map(item => (0, 
_util.stringToPDFString)(item));
-    } else if ((0, _primitives.isName)(formValue)) {
-      return (0, _util.stringToPDFString)(formValue.name);
-    } else if ((0, _util.isString)(formValue)) {
-      return (0, _util.stringToPDFString)(formValue);
-    }
-
-    return null;
-  }
-
-  hasFieldFlag(flag) {
-    return !!(this.data.fieldFlags & flag);
-  }
-
-  getOperatorList(evaluator, task, renderForms, annotationStorage) {
-    if (renderForms && !(this instanceof SignatureWidgetAnnotation)) {
-      return Promise.resolve(new _operator_list.OperatorList());
-    }
-
-    if (!this._hasText) {
-      return super.getOperatorList(evaluator, task, renderForms, annotationStorage);
-    }
-
-    return this._getAppearance(evaluator, task, annotationStorage).then(content => {
-      if (this.appearance && content === null) {
-        return super.getOperatorList(evaluator, task, renderForms, annotationStorage);
-      }
-
-      const operatorList = new _operator_list.OperatorList();
-
-      if (!this._defaultAppearance || content === null) {
-        return operatorList;
-      }
-
-      const matrix = [1, 0, 0, 1, 0, 0];
-      const bbox = [0, 0, this.data.rect[2] - this.data.rect[0], this.data.rect[3] - this.data.rect[1]];
-      const transform = getTransformMatrix(this.data.rect, bbox, matrix);
-      operatorList.addOp(_util.OPS.beginAnnotation, [this.data.id, this.data.rect, transform, matrix]);
-      const stream = new _stream.StringStream(content);
-      return evaluator.getOperatorList({
-        stream,
-        task,
-        resources: this._fieldResources.mergedResources,
-        operatorList
-      }).then(function () {
-        operatorList.addOp(_util.OPS.endAnnotation, []);
-        return operatorList;
-      });
-    });
-  }
-
-  async save(evaluator, task, annotationStorage) {
-    if (!annotationStorage) {
-      return null;
-    }
-
-    const storageEntry = annotationStorage.get(this.data.id);
-    const value = storageEntry && storageEntry.value;
-
-    if (value === this.data.fieldValue || value === undefined) {
-      return null;
-    }
-
-    let appearance = await this._getAppearance(evaluator, task, annotationStorage);
-
-    if (appearance === null) {
-      return null;
-    }
-
-    const {
-      xref
-    } = evaluator;
-    const dict = xref.fetchIfRef(this.ref);
-
-    if (!(0, _primitives.isDict)(dict)) {
-      return null;
-    }
-
-    const bbox = [0, 0, this.data.rect[2] - this.data.rect[0], this.data.rect[3] - this.data.rect[1]];
-    const xfa = {
-      path: (0, _util.stringToPDFString)(dict.get("T") || ""),
-      value
-    };
-    const newRef = xref.getNewRef();
-    const AP = new _primitives.Dict(xref);
-    AP.set("N", newRef);
-    const encrypt = xref.encrypt;
-    let originalTransform = null;
-    let newTransform = null;
-
-    if (encrypt) {
-      originalTransform = encrypt.createCipherTransform(this.ref.num, this.ref.gen);
-      newTransform = encrypt.createCipherTransform(newRef.num, newRef.gen);
-      appearance = newTransform.encryptString(appearance);
-    }
-
-    dict.set("V", (0, _util.isAscii)(value) ? value : (0, _util.stringToUTF16BEString)(value));
-    dict.set("AP", AP);
-    dict.set("M", `D:${(0, _util.getModificationDate)()}`);
-    const appearanceDict = new _primitives.Dict(xref);
-    appearanceDict.set("Length", appearance.length);
-    appearanceDict.set("Subtype", _primitives.Name.get("Form"));
-    appearanceDict.set("Resources", this._getSaveFieldResources(xref));
-    appearanceDict.set("BBox", bbox);
-    const bufferOriginal = [`${this.ref.num} ${this.ref.gen} obj\n`];
-    (0, _writer.writeDict)(dict, bufferOriginal, originalTransform);
-    bufferOriginal.push("\nendobj\n");
-    const bufferNew = [`${newRef.num} ${newRef.gen} obj\n`];
-    (0, _writer.writeDict)(appearanceDict, bufferNew, newTransform);
-    bufferNew.push(" stream\n", appearance, "\nendstream\nendobj\n");
-    return [{
-      ref: this.ref,
-      data: bufferOriginal.join(""),
-      xfa
-    }, {
-      ref: newRef,
-      data: bufferNew.join(""),
-      xfa: null
-    }];
-  }
-
-  async _getAppearance(evaluator, task, annotationStorage) {
-    const isPassword = this.hasFieldFlag(_util.AnnotationFieldFlag.PASSWORD);
-
-    if (!annotationStorage || isPassword) {
-      return null;
-    }
-
-    const storageEntry = annotationStorage.get(this.data.id);
-    let value = storageEntry && storageEntry.value;
-
-    if (value === undefined) {
-      return null;
-    }
-
-    value = value.trim();
-
-    if (value === "") {
-      return "";
-    }
-
-    let lineCount = -1;
-
-    if (this.data.multiLine) {
-      lineCount = value.split(/\r\n|\r|\n/).length;
-    }
-
-    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];
-
-    if (!this._defaultAppearance) {
-      this.data.defaultAppearanceData = (0, 
_default_appearance.parseDefaultAppearance)(this._defaultAppearance = "/Helvetica 0 Tf 0 g");
-    }
-
-    const [defaultAppearance, fontSize] = this._computeFontSize(totalHeight, lineCount);
-
-    const font = await this._getFontData(evaluator, task);
-    let descent = font.descent;
-
-    if (isNaN(descent)) {
-      descent = 0;
-    }
-
-    const vPadding = defaultPadding + Math.abs(descent) * fontSize;
-    const alignment = this.data.textAlignment;
-
-    if (this.data.multiLine) {
-      return this._getMultilineAppearance(defaultAppearance, value, font, fontSize, totalWidth, totalHeight, 
alignment, hPadding, vPadding);
-    }
-
-    const encodedString = font.encodeString(value).join("");
-
-    if (this.data.comb) {
-      return this._getCombAppearance(defaultAppearance, font, encodedString, totalWidth, hPadding, vPadding);
-    }
-
-    if (alignment === 0 || alignment > 2) {
-      return "/Tx BMC q BT " + defaultAppearance + ` 1 0 0 1 ${hPadding} ${vPadding} Tm (${(0, 
_util.escapeString)(encodedString)}) Tj` + " ET Q EMC";
-    }
-
-    const renderedText = this._renderText(encodedString, font, fontSize, totalWidth, alignment, hPadding, 
vPadding);
-
-    return "/Tx BMC q BT " + defaultAppearance + ` 1 0 0 1 0 0 Tm ${renderedText}` + " ET Q EMC";
-  }
-
-  async _getFontData(evaluator, task) {
-    const operatorList = new _operator_list.OperatorList();
-    const initialState = {
-      font: null,
-
-      clone() {
-        return this;
-      }
-
-    };
-    const {
-      fontName,
-      fontSize
-    } = this.data.defaultAppearanceData;
-    await evaluator.handleSetFont(this._fieldResources.mergedResources, [fontName && 
_primitives.Name.get(fontName), fontSize], null, operatorList, task, initialState, null);
-    return initialState.font;
-  }
-
-  _computeFontSize(height, lineCount) {
-    let {
-      fontSize
-    } = this.data.defaultAppearanceData;
-
-    if (!fontSize) {
-      const roundWithOneDigit = x => Math.round(x * 10) / 10;
-
-      const FONT_FACTOR = 0.8;
-
-      if (lineCount === -1) {
-        fontSize = roundWithOneDigit(FONT_FACTOR * height);
-      } else {
-        fontSize = 10;
-        let lineHeight = fontSize / FONT_FACTOR;
-        let numberOfLines = Math.round(height / lineHeight);
-        numberOfLines = Math.max(numberOfLines, lineCount);
-        lineHeight = height / numberOfLines;
-        fontSize = roundWithOneDigit(FONT_FACTOR * lineHeight);
-      }
-
-      const {
-        fontName,
-        fontColor
-      } = this.data.defaultAppearanceData;
-      this._defaultAppearance = (0, _default_appearance.createDefaultAppearance)({
-        fontSize,
-        fontName,
-        fontColor
-      });
-    }
-
-    return [this._defaultAppearance, fontSize];
-  }
-
-  _renderText(text, font, fontSize, totalWidth, alignment, hPadding, vPadding) {
-    const glyphs = font.charsToGlyphs(text);
-    const scale = fontSize / 1000;
-    let width = 0;
-
-    for (const glyph of glyphs) {
-      width += glyph.width * scale;
-    }
-
-    let shift;
-
-    if (alignment === 1) {
-      shift = (totalWidth - width) / 2;
-    } else if (alignment === 2) {
-      shift = totalWidth - width - hPadding;
-    } else {
-      shift = hPadding;
-    }
-
-    shift = shift.toFixed(2);
-    vPadding = vPadding.toFixed(2);
-    return `${shift} ${vPadding} Td (${(0, _util.escapeString)(text)}) Tj`;
-  }
-
-  _getSaveFieldResources(xref) {
-    const {
-      localResources,
-      appearanceResources,
-      acroFormResources
-    } = this._fieldResources;
-    const fontName = this.data.defaultAppearanceData && this.data.defaultAppearanceData.fontName;
-
-    if (!fontName) {
-      return localResources || _primitives.Dict.empty;
-    }
-
-    for (const resources of [localResources, appearanceResources]) {
-      if (resources instanceof _primitives.Dict) {
-        const localFont = resources.get("Font");
-
-        if (localFont instanceof _primitives.Dict && localFont.has(fontName)) {
-          return resources;
-        }
-      }
-    }
-
-    if (acroFormResources instanceof _primitives.Dict) {
-      const acroFormFont = acroFormResources.get("Font");
-
-      if (acroFormFont instanceof _primitives.Dict && acroFormFont.has(fontName)) {
-        const subFontDict = new _primitives.Dict(xref);
-        subFontDict.set(fontName, acroFormFont.getRaw(fontName));
-        const subResourcesDict = new _primitives.Dict(xref);
-        subResourcesDict.set("Font", subFontDict);
-        return _primitives.Dict.merge({
-          xref,
-          dictArray: [subResourcesDict, localResources],
-          mergeSubDicts: true
-        });
-      }
-    }
-
-    return localResources || _primitives.Dict.empty;
-  }
-
-  getFieldObject() {
-    return null;
-  }
-
-}
-
-class TextWidgetAnnotation extends WidgetAnnotation {
-  constructor(params) {
-    super(params);
-    this._hasText = true;
-    const dict = params.dict;
-
-    if (!(0, _util.isString)(this.data.fieldValue)) {
-      this.data.fieldValue = "";
-    }
-
-    let alignment = (0, _core_utils.getInheritableProperty)({
-      dict,
-      key: "Q"
-    });
-
-    if (!Number.isInteger(alignment) || alignment < 0 || alignment > 2) {
-      alignment = null;
-    }
-
-    this.data.textAlignment = alignment;
-    let maximumLength = (0, _core_utils.getInheritableProperty)({
-      dict,
-      key: "MaxLen"
-    });
-
-    if (!Number.isInteger(maximumLength) || maximumLength < 0) {
-      maximumLength = null;
-    }
-
-    this.data.maxLen = maximumLength;
-    this.data.multiLine = this.hasFieldFlag(_util.AnnotationFieldFlag.MULTILINE);
-    this.data.comb = this.hasFieldFlag(_util.AnnotationFieldFlag.COMB) && 
!this.hasFieldFlag(_util.AnnotationFieldFlag.MULTILINE) && 
!this.hasFieldFlag(_util.AnnotationFieldFlag.PASSWORD) && 
!this.hasFieldFlag(_util.AnnotationFieldFlag.FILESELECT) && this.data.maxLen !== null;
-  }
-
-  _getCombAppearance(defaultAppearance, font, text, width, hPadding, vPadding) {
-    const combWidth = (width / this.data.maxLen).toFixed(2);
-    const buf = [];
-    const positions = font.getCharPositions(text);
-
-    for (const [start, end] of positions) {
-      buf.push(`(${(0, _util.escapeString)(text.substring(start, end))}) Tj`);
-    }
-
-    const renderedComb = buf.join(` ${combWidth} 0 Td `);
-    return "/Tx BMC q BT " + defaultAppearance + ` 1 0 0 1 ${hPadding} ${vPadding} Tm ${renderedComb}` + " 
ET Q EMC";
-  }
-
-  _getMultilineAppearance(defaultAppearance, text, font, fontSize, width, height, alignment, hPadding, 
vPadding) {
-    const lines = text.split(/\r\n|\r|\n/);
-    const buf = [];
-    const totalWidth = width - 2 * hPadding;
-
-    for (const line of lines) {
-      const chunks = this._splitLine(line, font, fontSize, totalWidth);
-
-      for (const chunk of chunks) {
-        const padding = buf.length === 0 ? hPadding : 0;
-        buf.push(this._renderText(chunk, font, fontSize, width, alignment, padding, -fontSize));
-      }
-    }
-
-    const renderedText = buf.join("\n");
-    return "/Tx BMC q BT " + defaultAppearance + ` 1 0 0 1 0 ${height} Tm ${renderedText}` + " ET Q EMC";
-  }
-
-  _splitLine(line, font, fontSize, width) {
-    line = font.encodeString(line).join("");
-    const glyphs = font.charsToGlyphs(line);
-
-    if (glyphs.length <= 1) {
-      return [line];
-    }
-
-    const positions = font.getCharPositions(line);
-    const scale = fontSize / 1000;
-    const chunks = [];
-    let lastSpacePosInStringStart = -1,
-        lastSpacePosInStringEnd = -1,
-        lastSpacePos = -1,
-        startChunk = 0,
-        currentWidth = 0;
-
-    for (let i = 0, ii = glyphs.length; i < ii; i++) {
-      const [start, end] = positions[i];
-      const glyph = glyphs[i];
-      const glyphWidth = glyph.width * scale;
-
-      if (glyph.unicode === " ") {
-        if (currentWidth + glyphWidth > width) {
-          chunks.push(line.substring(startChunk, start));
-          startChunk = start;
-          currentWidth = glyphWidth;
-          lastSpacePosInStringStart = -1;
-          lastSpacePos = -1;
-        } else {
-          currentWidth += glyphWidth;
-          lastSpacePosInStringStart = start;
-          lastSpacePosInStringEnd = end;
-          lastSpacePos = i;
-        }
-      } else {
-        if (currentWidth + glyphWidth > width) {
-          if (lastSpacePosInStringStart !== -1) {
-            chunks.push(line.substring(startChunk, lastSpacePosInStringEnd));
-            startChunk = lastSpacePosInStringEnd;
-            i = lastSpacePos + 1;
-            lastSpacePosInStringStart = -1;
-            currentWidth = 0;
-          } else {
-            chunks.push(line.substring(startChunk, start));
-            startChunk = start;
-            currentWidth = glyphWidth;
-          }
-        } else {
-          currentWidth += glyphWidth;
-        }
-      }
-    }
-
-    if (startChunk < line.length) {
-      chunks.push(line.substring(startChunk, line.length));
-    }
-
-    return chunks;
-  }
-
-  getFieldObject() {
-    return {
-      id: this.data.id,
-      value: this.data.fieldValue,
-      defaultValue: this.data.defaultFieldValue,
-      multiline: this.data.multiLine,
-      password: this.hasFieldFlag(_util.AnnotationFieldFlag.PASSWORD),
-      charLimit: this.data.maxLen,
-      comb: this.data.comb,
-      editable: !this.data.readOnly,
-      hidden: this.data.hidden,
-      name: this.data.fieldName,
-      rect: this.data.rect,
-      actions: this.data.actions,
-      page: this.data.pageIndex,
-      type: "text"
-    };
-  }
-
-}
-
-class ButtonWidgetAnnotation extends WidgetAnnotation {
-  constructor(params) {
-    super(params);
-    this.checkedAppearance = null;
-    this.uncheckedAppearance = null;
-    this.data.checkBox = !this.hasFieldFlag(_util.AnnotationFieldFlag.RADIO) && 
!this.hasFieldFlag(_util.AnnotationFieldFlag.PUSHBUTTON);
-    this.data.radioButton = this.hasFieldFlag(_util.AnnotationFieldFlag.RADIO) && 
!this.hasFieldFlag(_util.AnnotationFieldFlag.PUSHBUTTON);
-    this.data.pushButton = this.hasFieldFlag(_util.AnnotationFieldFlag.PUSHBUTTON);
-    this.data.isTooltipOnly = false;
-
-    if (this.data.checkBox) {
-      this._processCheckBox(params);
-    } else if (this.data.radioButton) {
-      this._processRadioButton(params);
-    } else if (this.data.pushButton) {
-      this._processPushButton(params);
-    } else {
-      (0, _util.warn)("Invalid field flags for button widget annotation");
-    }
-  }
-
-  getOperatorList(evaluator, task, renderForms, annotationStorage) {
-    if (this.data.pushButton) {
-      return super.getOperatorList(evaluator, task, false, annotationStorage);
-    }
-
-    if (annotationStorage) {
-      const storageEntry = annotationStorage.get(this.data.id);
-      const value = storageEntry && storageEntry.value;
-
-      if (value === undefined) {
-        return super.getOperatorList(evaluator, task, renderForms, annotationStorage);
-      }
-
-      let appearance;
-
-      if (value) {
-        appearance = this.checkedAppearance;
-      } else {
-        appearance = this.uncheckedAppearance;
-      }
-
-      if (appearance) {
-        const savedAppearance = this.appearance;
-        this.appearance = appearance;
-        const operatorList = super.getOperatorList(evaluator, task, renderForms, annotationStorage);
-        this.appearance = savedAppearance;
-        return operatorList;
-      }
-
-      return Promise.resolve(new _operator_list.OperatorList());
-    }
-
-    return super.getOperatorList(evaluator, task, renderForms, annotationStorage);
-  }
-
-  async save(evaluator, task, annotationStorage) {
-    if (this.data.checkBox) {
-      return this._saveCheckbox(evaluator, task, annotationStorage);
-    }
-
-    if (this.data.radioButton) {
-      return this._saveRadioButton(evaluator, task, annotationStorage);
-    }
-
-    return null;
-  }
-
-  async _saveCheckbox(evaluator, task, annotationStorage) {
-    if (!annotationStorage) {
-      return null;
-    }
-
-    const storageEntry = annotationStorage.get(this.data.id);
-    const value = storageEntry && storageEntry.value;
-
-    if (value === undefined) {
-      return null;
-    }
-
-    const defaultValue = this.data.fieldValue && this.data.fieldValue !== "Off";
-
-    if (defaultValue === value) {
-      return null;
-    }
-
-    const dict = evaluator.xref.fetchIfRef(this.ref);
-
-    if (!(0, _primitives.isDict)(dict)) {
-      return null;
-    }
-
-    const xfa = {
-      path: (0, _util.stringToPDFString)(dict.get("T") || ""),
-      value: value ? this.data.exportValue : ""
-    };
-
-    const name = _primitives.Name.get(value ? this.data.exportValue : "Off");
-
-    dict.set("V", name);
-    dict.set("AS", name);
-    dict.set("M", `D:${(0, _util.getModificationDate)()}`);
-    const encrypt = evaluator.xref.encrypt;
-    let originalTransform = null;
-
-    if (encrypt) {
-      originalTransform = encrypt.createCipherTransform(this.ref.num, this.ref.gen);
-    }
-
-    const buffer = [`${this.ref.num} ${this.ref.gen} obj\n`];
-    (0, _writer.writeDict)(dict, buffer, originalTransform);
-    buffer.push("\nendobj\n");
-    return [{
-      ref: this.ref,
-      data: buffer.join(""),
-      xfa
-    }];
-  }
-
-  async _saveRadioButton(evaluator, task, annotationStorage) {
-    if (!annotationStorage) {
-      return null;
-    }
-
-    const storageEntry = annotationStorage.get(this.data.id);
-    const value = storageEntry && storageEntry.value;
-
-    if (value === undefined) {
-      return null;
-    }
-
-    const defaultValue = this.data.fieldValue === this.data.buttonValue;
-
-    if (defaultValue === value) {
-      return null;
-    }
-
-    const dict = evaluator.xref.fetchIfRef(this.ref);
-
-    if (!(0, _primitives.isDict)(dict)) {
-      return null;
-    }
-
-    const xfa = {
-      path: (0, _util.stringToPDFString)(dict.get("T") || ""),
-      value: value ? this.data.buttonValue : ""
-    };
-
-    const name = _primitives.Name.get(value ? this.data.buttonValue : "Off");
-
-    let parentBuffer = null;
-    const encrypt = evaluator.xref.encrypt;
-
-    if (value) {
-      if ((0, _primitives.isRef)(this.parent)) {
-        const parent = evaluator.xref.fetch(this.parent);
-        let parentTransform = null;
-
-        if (encrypt) {
-          parentTransform = encrypt.createCipherTransform(this.parent.num, this.parent.gen);
-        }
-
-        parent.set("V", name);
-        parentBuffer = [`${this.parent.num} ${this.parent.gen} obj\n`];
-        (0, _writer.writeDict)(parent, parentBuffer, parentTransform);
-        parentBuffer.push("\nendobj\n");
-      } else if ((0, _primitives.isDict)(this.parent)) {
-        this.parent.set("V", name);
-      }
-    }
-
-    dict.set("AS", name);
-    dict.set("M", `D:${(0, _util.getModificationDate)()}`);
-    let originalTransform = null;
-
-    if (encrypt) {
-      originalTransform = encrypt.createCipherTransform(this.ref.num, this.ref.gen);
-    }
-
-    const buffer = [`${this.ref.num} ${this.ref.gen} obj\n`];
-    (0, _writer.writeDict)(dict, buffer, originalTransform);
-    buffer.push("\nendobj\n");
-    const newRefs = [{
-      ref: this.ref,
-      data: buffer.join(""),
-      xfa
-    }];
-
-    if (parentBuffer !== null) {
-      newRefs.push({
-        ref: this.parent,
-        data: parentBuffer.join(""),
-        xfa: null
-      });
-    }
-
-    return newRefs;
-  }
-
-  _processCheckBox(params) {
-    const customAppearance = params.dict.get("AP");
-
-    if (!(0, _primitives.isDict)(customAppearance)) {
-      return;
-    }
-
-    const normalAppearance = customAppearance.get("N");
-
-    if (!(0, _primitives.isDict)(normalAppearance)) {
-      return;
-    }
-
-    const exportValues = normalAppearance.getKeys();
-
-    if (!exportValues.includes("Off")) {
-      exportValues.push("Off");
-    }
-
-    if (!exportValues.includes(this.data.fieldValue)) {
-      this.data.fieldValue = null;
-    }
-
-    if (exportValues.length !== 2) {
-      return;
-    }
-
-    this.data.exportValue = exportValues[0] === "Off" ? exportValues[1] : exportValues[0];
-    this.checkedAppearance = normalAppearance.get(this.data.exportValue);
-    this.uncheckedAppearance = normalAppearance.get("Off") || null;
-
-    this._streams.push(this.checkedAppearance);
-
-    if (this.uncheckedAppearance) {
-      this._streams.push(this.uncheckedAppearance);
-    }
-
-    this._fallbackFontDict = this.fallbackFontDict;
-  }
-
-  _processRadioButton(params) {
-    this.data.fieldValue = this.data.buttonValue = null;
-    const fieldParent = params.dict.get("Parent");
-
-    if ((0, _primitives.isDict)(fieldParent)) {
-      this.parent = params.dict.getRaw("Parent");
-      const fieldParentValue = fieldParent.get("V");
-
-      if ((0, _primitives.isName)(fieldParentValue)) {
-        this.data.fieldValue = this._decodeFormValue(fieldParentValue);
-      }
-    }
-
-    const appearanceStates = params.dict.get("AP");
-
-    if (!(0, _primitives.isDict)(appearanceStates)) {
-      return;
-    }
-
-    const normalAppearance = appearanceStates.get("N");
-
-    if (!(0, _primitives.isDict)(normalAppearance)) {
-      return;
-    }
-
-    for (const key of normalAppearance.getKeys()) {
-      if (key !== "Off") {
-        this.data.buttonValue = this._decodeFormValue(key);
-        break;
-      }
-    }
-
-    this.checkedAppearance = normalAppearance.get(this.data.buttonValue);
-    this.uncheckedAppearance = normalAppearance.get("Off") || null;
-
-    this._streams.push(this.checkedAppearance);
-
-    if (this.uncheckedAppearance) {
-      this._streams.push(this.uncheckedAppearance);
-    }
-
-    this._fallbackFontDict = this.fallbackFontDict;
-  }
-
-  _processPushButton(params) {
-    if (!params.dict.has("A") && !params.dict.has("AA") && !this.data.alternativeText) {
-      (0, _util.warn)("Push buttons without action dictionaries are not supported");
-      return;
-    }
-
-    this.data.isTooltipOnly = !params.dict.has("A") && !params.dict.has("AA");
-
-    _catalog.Catalog.parseDestDictionary({
-      destDict: params.dict,
-      resultObj: this.data,
-      docBaseUrl: params.pdfManager.docBaseUrl
-    });
-  }
-
-  getFieldObject() {
-    let type = "button";
-    let exportValues;
-
-    if (this.data.checkBox) {
-      type = "checkbox";
-      exportValues = this.data.exportValue;
-    } else if (this.data.radioButton) {
-      type = "radiobutton";
-      exportValues = this.data.buttonValue;
-    }
-
-    return {
-      id: this.data.id,
-      value: this.data.fieldValue || "Off",
-      defaultValue: this.data.defaultFieldValue,
-      exportValues,
-      editable: !this.data.readOnly,
-      name: this.data.fieldName,
-      rect: this.data.rect,
-      hidden: this.data.hidden,
-      actions: this.data.actions,
-      page: this.data.pageIndex,
-      type
-    };
-  }
-
-  get fallbackFontDict() {
-    const dict = new _primitives.Dict();
-    dict.set("BaseFont", _primitives.Name.get("ZapfDingbats"));
-    dict.set("Type", _primitives.Name.get("FallbackType"));
-    dict.set("Subtype", _primitives.Name.get("FallbackType"));
-    dict.set("Encoding", _primitives.Name.get("ZapfDingbatsEncoding"));
-    return (0, _util.shadow)(this, "fallbackFontDict", dict);
-  }
-
-}
-
-class ChoiceWidgetAnnotation extends WidgetAnnotation {
-  constructor(params) {
-    super(params);
-    this.data.options = [];
-    const options = (0, _core_utils.getInheritableProperty)({
-      dict: params.dict,
-      key: "Opt"
-    });
-
-    if (Array.isArray(options)) {
-      const xref = params.xref;
-
-      for (let i = 0, ii = options.length; i < ii; i++) {
-        const option = xref.fetchIfRef(options[i]);
-        const isOptionArray = Array.isArray(option);
-        this.data.options[i] = {
-          exportValue: this._decodeFormValue(isOptionArray ? xref.fetchIfRef(option[0]) : option),
-          displayValue: this._decodeFormValue(isOptionArray ? xref.fetchIfRef(option[1]) : option)
-        };
-      }
-    }
-
-    if ((0, _util.isString)(this.data.fieldValue)) {
-      this.data.fieldValue = [this.data.fieldValue];
-    } else if (!this.data.fieldValue) {
-      this.data.fieldValue = [];
-    }
-
-    this.data.combo = this.hasFieldFlag(_util.AnnotationFieldFlag.COMBO);
-    this.data.multiSelect = this.hasFieldFlag(_util.AnnotationFieldFlag.MULTISELECT);
-    this._hasText = true;
-  }
-
-  getFieldObject() {
-    const type = this.data.combo ? "combobox" : "listbox";
-    const value = this.data.fieldValue.length > 0 ? this.data.fieldValue[0] : null;
-    return {
-      id: this.data.id,
-      value,
-      defaultValue: this.data.defaultFieldValue,
-      editable: !this.data.readOnly,
-      name: this.data.fieldName,
-      rect: this.data.rect,
-      numItems: this.data.fieldValue.length,
-      multipleSelection: this.data.multiSelect,
-      hidden: this.data.hidden,
-      actions: this.data.actions,
-      items: this.data.options,
-      page: this.data.pageIndex,
-      type
-    };
-  }
-
-}
-
-class SignatureWidgetAnnotation extends WidgetAnnotation {
-  constructor(params) {
-    super(params);
-    this.data.fieldValue = null;
-  }
-
-  getFieldObject() {
-    return {
-      id: this.data.id,
-      value: null,
-      page: this.data.pageIndex,
-      type: "signature"
-    };
-  }
-
-}
-
-class TextAnnotation extends MarkupAnnotation {
-  constructor(parameters) {
-    const DEFAULT_ICON_SIZE = 22;
-    super(parameters);
-    const dict = parameters.dict;
-    this.data.annotationType = _util.AnnotationType.TEXT;
-
-    if (this.data.hasAppearance) {
-      this.data.name = "NoIcon";
-    } else {
-      this.data.rect[1] = this.data.rect[3] - DEFAULT_ICON_SIZE;
-      this.data.rect[2] = this.data.rect[0] + DEFAULT_ICON_SIZE;
-      this.data.name = dict.has("Name") ? dict.get("Name").name : "Note";
-    }
-
-    if (dict.has("State")) {
-      this.data.state = dict.get("State") || null;
-      this.data.stateModel = dict.get("StateModel") || null;
-    } else {
-      this.data.state = null;
-      this.data.stateModel = null;
-    }
-  }
-
-}
-
-class LinkAnnotation extends Annotation {
-  constructor(params) {
-    super(params);
-    this.data.annotationType = _util.AnnotationType.LINK;
-    const quadPoints = getQuadPoints(params.dict, this.rectangle);
-
-    if (quadPoints) {
-      this.data.quadPoints = quadPoints;
-    }
-
-    _catalog.Catalog.parseDestDictionary({
-      destDict: params.dict,
-      resultObj: this.data,
-      docBaseUrl: params.pdfManager.docBaseUrl
-    });
-  }
-
-}
-
-class PopupAnnotation extends Annotation {
-  constructor(parameters) {
-    super(parameters);
-    this.data.annotationType = _util.AnnotationType.POPUP;
-    let parentItem = parameters.dict.get("Parent");
-
-    if (!parentItem) {
-      (0, _util.warn)("Popup annotation has a missing or invalid parent annotation.");
-      return;
-    }
-
-    const parentSubtype = parentItem.get("Subtype");
-    this.data.parentType = (0, _primitives.isName)(parentSubtype) ? parentSubtype.name : null;
-    const rawParent = parameters.dict.getRaw("Parent");
-    this.data.parentId = (0, _primitives.isRef)(rawParent) ? rawParent.toString() : null;
-    const parentRect = parentItem.getArray("Rect");
-
-    if (Array.isArray(parentRect) && parentRect.length === 4) {
-      this.data.parentRect = _util.Util.normalizeRect(parentRect);
-    } else {
-      this.data.parentRect = [0, 0, 0, 0];
-    }
-
-    const rt = parentItem.get("RT");
-
-    if ((0, _primitives.isName)(rt, _util.AnnotationReplyType.GROUP)) {
-      parentItem = parentItem.get("IRT");
-    }
-
-    if (!parentItem.has("M")) {
-      this.data.modificationDate = null;
-    } else {
-      this.setModificationDate(parentItem.get("M"));
-      this.data.modificationDate = this.modificationDate;
-    }
-
-    if (!parentItem.has("C")) {
-      this.data.color = null;
-    } else {
-      this.setColor(parentItem.getArray("C"));
-      this.data.color = this.color;
-    }
-
-    if (!this.viewable) {
-      const parentFlags = parentItem.get("F");
-
-      if (this._isViewable(parentFlags)) {
-        this.setFlags(parentFlags);
-      }
-    }
-
-    this.data.title = (0, _util.stringToPDFString)(parentItem.get("T") || "");
-    this.data.contents = (0, _util.stringToPDFString)(parentItem.get("Contents") || "");
-  }
-
-}
-
-class FreeTextAnnotation extends MarkupAnnotation {
-  constructor(parameters) {
-    super(parameters);
-    this.data.annotationType = _util.AnnotationType.FREETEXT;
-  }
-
-}
-
-class LineAnnotation extends MarkupAnnotation {
-  constructor(parameters) {
-    super(parameters);
-    this.data.annotationType = _util.AnnotationType.LINE;
-    const lineCoordinates = parameters.dict.getArray("L");
-    this.data.lineCoordinates = _util.Util.normalizeRect(lineCoordinates);
-
-    if (!this.appearance) {
-      const strokeColor = this.color ? Array.from(this.color).map(c => c / 255) : [0, 0, 0];
-      const strokeAlpha = parameters.dict.get("CA");
-      let fillColor = null,
-          interiorColor = parameters.dict.getArray("IC");
-
-      if (interiorColor) {
-        interiorColor = getRgbColor(interiorColor);
-        fillColor = interiorColor ? Array.from(interiorColor).map(c => c / 255) : null;
-      }
-
-      const fillAlpha = fillColor ? strokeAlpha : null;
-      const borderWidth = this.borderStyle.width || 1,
-            borderAdjust = 2 * borderWidth;
-      const bbox = [this.data.lineCoordinates[0] - borderAdjust, this.data.lineCoordinates[1] - 
borderAdjust, this.data.lineCoordinates[2] + borderAdjust, this.data.lineCoordinates[3] + borderAdjust];
-
-      if (!_util.Util.intersect(this.rectangle, bbox)) {
-        this.rectangle = bbox;
-      }
-
-      this._setDefaultAppearance({
-        xref: parameters.xref,
-        extra: `${borderWidth} w`,
-        strokeColor,
-        fillColor,
-        strokeAlpha,
-        fillAlpha,
-        pointsCallback: (buffer, points) => {
-          buffer.push(`${lineCoordinates[0]} ${lineCoordinates[1]} m`, `${lineCoordinates[2]} 
${lineCoordinates[3]} l`, "S");
-          return [points[0].x - borderWidth, points[1].x + borderWidth, points[3].y - borderWidth, 
points[1].y + borderWidth];
-        }
-      });
-    }
-  }
-
-}
-
-class SquareAnnotation extends MarkupAnnotation {
-  constructor(parameters) {
-    super(parameters);
-    this.data.annotationType = _util.AnnotationType.SQUARE;
-
-    if (!this.appearance) {
-      const strokeColor = this.color ? Array.from(this.color).map(c => c / 255) : [0, 0, 0];
-      const strokeAlpha = parameters.dict.get("CA");
-      let fillColor = null,
-          interiorColor = parameters.dict.getArray("IC");
-
-      if (interiorColor) {
-        interiorColor = getRgbColor(interiorColor);
-        fillColor = interiorColor ? Array.from(interiorColor).map(c => c / 255) : null;
-      }
-
-      const fillAlpha = fillColor ? strokeAlpha : null;
-
-      this._setDefaultAppearance({
-        xref: parameters.xref,
-        extra: `${this.borderStyle.width} w`,
-        strokeColor,
-        fillColor,
-        strokeAlpha,
-        fillAlpha,
-        pointsCallback: (buffer, points) => {
-          const x = points[2].x + this.borderStyle.width / 2;
-          const y = points[2].y + this.borderStyle.width / 2;
-          const width = points[3].x - points[2].x - this.borderStyle.width;
-          const height = points[1].y - points[3].y - this.borderStyle.width;
-          buffer.push(`${x} ${y} ${width} ${height} re`);
-
-          if (fillColor) {
-            buffer.push("B");
-          } else {
-            buffer.push("S");
-          }
-
-          return [points[0].x, points[1].x, points[3].y, points[1].y];
-        }
-      });
-    }
-  }
-
-}
-
-class CircleAnnotation extends MarkupAnnotation {
-  constructor(parameters) {
-    super(parameters);
-    this.data.annotationType = _util.AnnotationType.CIRCLE;
-
-    if (!this.appearance) {
-      const strokeColor = this.color ? Array.from(this.color).map(c => c / 255) : [0, 0, 0];
-      const strokeAlpha = parameters.dict.get("CA");
-      let fillColor = null;
-      let interiorColor = parameters.dict.getArray("IC");
-
-      if (interiorColor) {
-        interiorColor = getRgbColor(interiorColor);
-        fillColor = interiorColor ? Array.from(interiorColor).map(c => c / 255) : null;
-      }
-
-      const fillAlpha = fillColor ? strokeAlpha : null;
-      const controlPointsDistance = 4 / 3 * Math.tan(Math.PI / (2 * 4));
-
-      this._setDefaultAppearance({
-        xref: parameters.xref,
-        extra: `${this.borderStyle.width} w`,
-        strokeColor,
-        fillColor,
-        strokeAlpha,
-        fillAlpha,
-        pointsCallback: (buffer, points) => {
-          const x0 = points[0].x + this.borderStyle.width / 2;
-          const y0 = points[0].y - this.borderStyle.width / 2;
-          const x1 = points[3].x - this.borderStyle.width / 2;
-          const y1 = points[3].y + this.borderStyle.width / 2;
-          const xMid = x0 + (x1 - x0) / 2;
-          const yMid = y0 + (y1 - y0) / 2;
-          const xOffset = (x1 - x0) / 2 * controlPointsDistance;
-          const yOffset = (y1 - y0) / 2 * controlPointsDistance;
-          buffer.push(`${xMid} ${y1} m`, `${xMid + xOffset} ${y1} ${x1} ${yMid + yOffset} ${x1} ${yMid} c`, 
`${x1} ${yMid - yOffset} ${xMid + xOffset} ${y0} ${xMid} ${y0} c`, `${xMid - xOffset} ${y0} ${x0} ${yMid - 
yOffset} ${x0} ${yMid} c`, `${x0} ${yMid + yOffset} ${xMid - xOffset} ${y1} ${xMid} ${y1} c`, "h");
-
-          if (fillColor) {
-            buffer.push("B");
-          } else {
-            buffer.push("S");
-          }
-
-          return [points[0].x, points[1].x, points[3].y, points[1].y];
-        }
-      });
-    }
-  }
-
-}
-
-class PolylineAnnotation extends MarkupAnnotation {
-  constructor(parameters) {
-    super(parameters);
-    this.data.annotationType = _util.AnnotationType.POLYLINE;
-    this.data.vertices = [];
-    const rawVertices = parameters.dict.getArray("Vertices");
-
-    if (!Array.isArray(rawVertices)) {
-      return;
-    }
-
-    for (let i = 0, ii = rawVertices.length; i < ii; i += 2) {
-      this.data.vertices.push({
-        x: rawVertices[i],
-        y: rawVertices[i + 1]
-      });
-    }
-
-    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 borderWidth = this.borderStyle.width || 1,
-            borderAdjust = 2 * borderWidth;
-      const bbox = [Infinity, Infinity, -Infinity, -Infinity];
-
-      for (const vertex of this.data.vertices) {
-        bbox[0] = Math.min(bbox[0], vertex.x - borderAdjust);
-        bbox[1] = Math.min(bbox[1], vertex.y - borderAdjust);
-        bbox[2] = Math.max(bbox[2], vertex.x + borderAdjust);
-        bbox[3] = Math.max(bbox[3], vertex.y + borderAdjust);
-      }
-
-      if (!_util.Util.intersect(this.rectangle, bbox)) {
-        this.rectangle = bbox;
-      }
-
-      this._setDefaultAppearance({
-        xref: parameters.xref,
-        extra: `${borderWidth} w`,
-        strokeColor,
-        strokeAlpha,
-        pointsCallback: (buffer, points) => {
-          const vertices = this.data.vertices;
-
-          for (let i = 0, ii = vertices.length; i < ii; i++) {
-            buffer.push(`${vertices[i].x} ${vertices[i].y} ${i === 0 ? "m" : "l"}`);
-          }
-
-          buffer.push("S");
-          return [points[0].x, points[1].x, points[3].y, points[1].y];
-        }
-      });
-    }
-  }
-
-}
-
-class PolygonAnnotation extends PolylineAnnotation {
-  constructor(parameters) {
-    super(parameters);
-    this.data.annotationType = _util.AnnotationType.POLYGON;
-  }
-
-}
-
-class CaretAnnotation extends MarkupAnnotation {
-  constructor(parameters) {
-    super(parameters);
-    this.data.annotationType = _util.AnnotationType.CARET;
-  }
-
-}
-
-class InkAnnotation extends MarkupAnnotation {
-  constructor(parameters) {
-    super(parameters);
-    this.data.annotationType = _util.AnnotationType.INK;
-    this.data.inkLists = [];
-    const rawInkLists = parameters.dict.getArray("InkList");
-
-    if (!Array.isArray(rawInkLists)) {
-      return;
-    }
-
-    const xref = parameters.xref;
-
-    for (let i = 0, ii = rawInkLists.length; i < ii; ++i) {
-      this.data.inkLists.push([]);
-
-      for (let j = 0, jj = rawInkLists[i].length; j < jj; j += 2) {
-        this.data.inkLists[i].push({
-          x: xref.fetchIfRef(rawInkLists[i][j]),
-          y: xref.fetchIfRef(rawInkLists[i][j + 1])
-        });
-      }
-    }
-
-    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 borderWidth = this.borderStyle.width || 1,
-            borderAdjust = 2 * borderWidth;
-      const bbox = [Infinity, Infinity, -Infinity, -Infinity];
-
-      for (const inkLists of this.data.inkLists) {
-        for (const vertex of inkLists) {
-          bbox[0] = Math.min(bbox[0], vertex.x - borderAdjust);
-          bbox[1] = Math.min(bbox[1], vertex.y - borderAdjust);
-          bbox[2] = Math.max(bbox[2], vertex.x + borderAdjust);
-          bbox[3] = Math.max(bbox[3], vertex.y + borderAdjust);
-        }
-      }
-
-      if (!_util.Util.intersect(this.rectangle, bbox)) {
-        this.rectangle = bbox;
-      }
-
-      this._setDefaultAppearance({
-        xref: parameters.xref,
-        extra: `${borderWidth} w`,
-        strokeColor,
-        strokeAlpha,
-        pointsCallback: (buffer, points) => {
-          for (const inkList of this.data.inkLists) {
-            for (let i = 0, ii = inkList.length; i < ii; i++) {
-              buffer.push(`${inkList[i].x} ${inkList[i].y} ${i === 0 ? "m" : "l"}`);
-            }
-
-            buffer.push("S");
-          }
-
-          return [points[0].x, points[1].x, points[3].y, points[1].y];
-        }
-      });
-    }
-  }
-
-}
-
-class HighlightAnnotation extends MarkupAnnotation {
-  constructor(parameters) {
-    super(parameters);
-    this.data.annotationType = _util.AnnotationType.HIGHLIGHT;
-    const quadPoints = this.data.quadPoints = getQuadPoints(parameters.dict, null);
-
-    if (quadPoints) {
-      const resources = this.appearance && this.appearance.dict.get("Resources");
-
-      if (!this.appearance || !(resources && resources.has("ExtGState"))) {
-        if (this.appearance) {
-          (0, _util.warn)("HighlightAnnotation - ignoring built-in appearance stream.");
-        }
-
-        const fillColor = this.color ? Array.from(this.color).map(c => c / 255) : [1, 1, 0];
-        const fillAlpha = parameters.dict.get("CA");
-
-        this._setDefaultAppearance({
-          xref: parameters.xref,
-          fillColor,
-          blendMode: "Multiply",
-          fillAlpha,
-          pointsCallback: (buffer, points) => {
-            buffer.push(`${points[0].x} ${points[0].y} m`, `${points[1].x} ${points[1].y} l`, 
`${points[3].x} ${points[3].y} l`, `${points[2].x} ${points[2].y} l`, "f");
-            return [points[0].x, points[1].x, points[3].y, points[1].y];
-          }
-        });
-      }
-    } else {
-      this.data.hasPopup = false;
-    }
-  }
-
-}
-
-class UnderlineAnnotation extends MarkupAnnotation {
-  constructor(parameters) {
-    super(parameters);
-    this.data.annotationType = _util.AnnotationType.UNDERLINE;
-    const quadPoints = this.data.quadPoints = getQuadPoints(parameters.dict, null);
-
-    if (quadPoints) {
-      if (!this.appearance) {
-        const strokeColor = this.color ? Array.from(this.color).map(c => c / 255) : [0, 0, 0];
-        const strokeAlpha = parameters.dict.get("CA");
-
-        this._setDefaultAppearance({
-          xref: parameters.xref,
-          extra: "[] 0 d 1 w",
-          strokeColor,
-          strokeAlpha,
-          pointsCallback: (buffer, points) => {
-            buffer.push(`${points[2].x} ${points[2].y} m`, `${points[3].x} ${points[3].y} l`, "S");
-            return [points[0].x, points[1].x, points[3].y, points[1].y];
-          }
-        });
-      }
-    } else {
-      this.data.hasPopup = false;
-    }
-  }
-
-}
-
-class SquigglyAnnotation extends MarkupAnnotation {
-  constructor(parameters) {
-    super(parameters);
-    this.data.annotationType = _util.AnnotationType.SQUIGGLY;
-    const quadPoints = this.data.quadPoints = getQuadPoints(parameters.dict, null);
-
-    if (quadPoints) {
-      if (!this.appearance) {
-        const strokeColor = this.color ? Array.from(this.color).map(c => c / 255) : [0, 0, 0];
-        const strokeAlpha = parameters.dict.get("CA");
-
-        this._setDefaultAppearance({
-          xref: parameters.xref,
-          extra: "[] 0 d 1 w",
-          strokeColor,
-          strokeAlpha,
-          pointsCallback: (buffer, points) => {
-            const dy = (points[0].y - points[2].y) / 6;
-            let shift = dy;
-            let x = points[2].x;
-            const y = points[2].y;
-            const xEnd = points[3].x;
-            buffer.push(`${x} ${y + shift} m`);
-
-            do {
-              x += 2;
-              shift = shift === 0 ? dy : 0;
-              buffer.push(`${x} ${y + shift} l`);
-            } while (x < xEnd);
-
-            buffer.push("S");
-            return [points[2].x, xEnd, y - 2 * dy, y + 2 * dy];
-          }
-        });
-      }
-    } else {
-      this.data.hasPopup = false;
-    }
-  }
-
-}
-
-class StrikeOutAnnotation extends MarkupAnnotation {
-  constructor(parameters) {
-    super(parameters);
-    this.data.annotationType = _util.AnnotationType.STRIKEOUT;
-    const quadPoints = this.data.quadPoints = getQuadPoints(parameters.dict, null);
-
-    if (quadPoints) {
-      if (!this.appearance) {
-        const strokeColor = this.color ? Array.from(this.color).map(c => c / 255) : [0, 0, 0];
-        const strokeAlpha = parameters.dict.get("CA");
-
-        this._setDefaultAppearance({
-          xref: parameters.xref,
-          extra: "[] 0 d 1 w",
-          strokeColor,
-          strokeAlpha,
-          pointsCallback: (buffer, points) => {
-            buffer.push(`${(points[0].x + points[2].x) / 2} ` + `${(points[0].y + points[2].y) / 2} m`, 
`${(points[1].x + points[3].x) / 2} ` + `${(points[1].y + points[3].y) / 2} l`, "S");
-            return [points[0].x, points[1].x, points[3].y, points[1].y];
-          }
-        });
-      }
-    } else {
-      this.data.hasPopup = false;
-    }
-  }
-
-}
-
-class StampAnnotation extends MarkupAnnotation {
-  constructor(parameters) {
-    super(parameters);
-    this.data.annotationType = _util.AnnotationType.STAMP;
-  }
-
-}
-
-class FileAttachmentAnnotation extends MarkupAnnotation {
-  constructor(parameters) {
-    super(parameters);
-    const file = new _file_spec.FileSpec(parameters.dict.get("FS"), parameters.xref);
-    this.data.annotationType = _util.AnnotationType.FILEATTACHMENT;
-    this.data.file = file.serializable;
-  }
-
-}
-
-/***/ }),
-/* 13 */
-/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
-
-
-
-Object.defineProperty(exports, "__esModule", ({
-  value: true
-}));
-exports.createDefaultAppearance = createDefaultAppearance;
-exports.parseDefaultAppearance = parseDefaultAppearance;
-
-var _util = __w_pdfjs_require__(2);
-
-var _colorspace = __w_pdfjs_require__(14);
-
-var _core_utils = __w_pdfjs_require__(9);
-
-var _evaluator = __w_pdfjs_require__(15);
-
-var _primitives = __w_pdfjs_require__(5);
-
-var _stream = __w_pdfjs_require__(10);
-
-class DefaultAppearanceEvaluator extends _evaluator.EvaluatorPreprocessor {
-  constructor(str) {
-    super(new _stream.StringStream(str));
-  }
-
-  parse() {
-    const operation = {
-      fn: 0,
-      args: []
-    };
-    const result = {
-      fontSize: 0,
-      fontName: "",
-      fontColor: new Uint8ClampedArray(3)
-    };
-
-    try {
-      while (true) {
-        operation.args.length = 0;
-
-        if (!this.read(operation)) {
-          break;
-        }
-
-        if (this.savedStatesDepth !== 0) {
-          continue;
-        }
-
-        const {
-          fn,
-          args
-        } = operation;
-
-        switch (fn | 0) {
-          case _util.OPS.setFont:
-            const [fontName, fontSize] = args;
-
-            if (fontName instanceof _primitives.Name) {
-              result.fontName = fontName.name;
-            }
-
-            if (typeof fontSize === "number" && fontSize > 0) {
-              result.fontSize = fontSize;
-            }
-
-            break;
-
-          case _util.OPS.setFillRGBColor:
-            _colorspace.ColorSpace.singletons.rgb.getRgbItem(args, 0, result.fontColor, 0);
-
-            break;
-
-          case _util.OPS.setFillGray:
-            _colorspace.ColorSpace.singletons.gray.getRgbItem(args, 0, result.fontColor, 0);
-
-            break;
-
-          case _util.OPS.setFillColorSpace:
-            _colorspace.ColorSpace.singletons.cmyk.getRgbItem(args, 0, result.fontColor, 0);
-
-            break;
-        }
-      }
-    } catch (reason) {
-      (0, _util.warn)(`parseDefaultAppearance - ignoring errors: "${reason}".`);
-    }
-
-    return result;
-  }
-
-}
-
-function parseDefaultAppearance(str) {
-  return new DefaultAppearanceEvaluator(str).parse();
-}
-
-function createDefaultAppearance({
-  fontSize,
-  fontName,
-  fontColor
-}) {
-  let colorCmd;
-
-  if (fontColor.every(c => c === 0)) {
-    colorCmd = "0 g";
-  } else {
-    colorCmd = Array.from(fontColor).map(c => (c / 255).toFixed(2)).join(" ") + " rg";
-  }
-
-  return `/${(0, _core_utils.escapePDFName)(fontName)} ${fontSize} Tf ${colorCmd}`;
-}
-
-/***/ }),
-/* 14 */
-/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
-
-
-
-Object.defineProperty(exports, "__esModule", ({
-  value: true
-}));
-exports.ColorSpace = void 0;
-
-var _util = __w_pdfjs_require__(2);
-
-var _primitives = __w_pdfjs_require__(5);
-
-var _core_utils = __w_pdfjs_require__(9);
-
-function resizeRgbImage(src, dest, w1, h1, w2, h2, alpha01) {
-  const COMPONENTS = 3;
-  alpha01 = alpha01 !== 1 ? 0 : alpha01;
-  const xRatio = w1 / w2;
-  const yRatio = h1 / h2;
-  let newIndex = 0,
-      oldIndex;
-  const xScaled = new Uint16Array(w2);
-  const w1Scanline = w1 * COMPONENTS;
-
-  for (let i = 0; i < w2; i++) {
-    xScaled[i] = Math.floor(i * xRatio) * COMPONENTS;
-  }
-
-  for (let i = 0; i < h2; i++) {
-    const py = Math.floor(i * yRatio) * w1Scanline;
-
-    for (let j = 0; j < w2; j++) {
-      oldIndex = py + xScaled[j];
-      dest[newIndex++] = src[oldIndex++];
-      dest[newIndex++] = src[oldIndex++];
-      dest[newIndex++] = src[oldIndex++];
-      newIndex += alpha01;
-    }
-  }
-}
-
-class ColorSpace {
-  constructor(name, numComps) {
-    if (this.constructor === ColorSpace) {
-      (0, _util.unreachable)("Cannot initialize ColorSpace.");
-    }
-
-    this.name = name;
-    this.numComps = numComps;
-  }
-
-  getRgb(src, srcOffset) {
-    const rgb = new Uint8ClampedArray(3);
-    this.getRgbItem(src, srcOffset, rgb, 0);
-    return rgb;
-  }
-
-  getRgbItem(src, srcOffset, dest, destOffset) {
-    (0, _util.unreachable)("Should not call ColorSpace.getRgbItem");
-  }
-
-  getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {
-    (0, _util.unreachable)("Should not call ColorSpace.getRgbBuffer");
-  }
-
-  getOutputLength(inputLength, alpha01) {
-    (0, _util.unreachable)("Should not call ColorSpace.getOutputLength");
-  }
-
-  isPassthrough(bits) {
-    return false;
-  }
-
-  isDefaultDecode(decodeMap, bpc) {
-    return ColorSpace.isDefaultDecode(decodeMap, this.numComps);
-  }
-
-  fillRgb(dest, originalWidth, originalHeight, width, height, actualHeight, bpc, comps, alpha01) {
-    const count = originalWidth * originalHeight;
-    let rgbBuf = null;
-    const numComponentColors = 1 << bpc;
-    const needsResizing = originalHeight !== height || originalWidth !== width;
-
-    if (this.isPassthrough(bpc)) {
-      rgbBuf = comps;
-    } else if (this.numComps === 1 && count > numComponentColors && this.name !== "DeviceGray" && this.name 
!== "DeviceRGB") {
-      const allColors = bpc <= 8 ? new Uint8Array(numComponentColors) : new Uint16Array(numComponentColors);
-
-      for (let i = 0; i < numComponentColors; i++) {
-        allColors[i] = i;
-      }
-
-      const colorMap = new Uint8ClampedArray(numComponentColors * 3);
-      this.getRgbBuffer(allColors, 0, numComponentColors, colorMap, 0, bpc, 0);
-
-      if (!needsResizing) {
-        let destPos = 0;
-
-        for (let i = 0; i < count; ++i) {
-          const key = comps[i] * 3;
-          dest[destPos++] = colorMap[key];
-          dest[destPos++] = colorMap[key + 1];
-          dest[destPos++] = colorMap[key + 2];
-          destPos += alpha01;
-        }
-      } else {
-        rgbBuf = new Uint8Array(count * 3);
-        let rgbPos = 0;
-
-        for (let i = 0; i < count; ++i) {
-          const key = comps[i] * 3;
-          rgbBuf[rgbPos++] = colorMap[key];
-          rgbBuf[rgbPos++] = colorMap[key + 1];
-          rgbBuf[rgbPos++] = colorMap[key + 2];
-        }
-      }
-    } else {
-      if (!needsResizing) {
-        this.getRgbBuffer(comps, 0, width * actualHeight, dest, 0, bpc, alpha01);
-      } else {
-        rgbBuf = new Uint8ClampedArray(count * 3);
-        this.getRgbBuffer(comps, 0, count, rgbBuf, 0, bpc, 0);
-      }
-    }
-
-    if (rgbBuf) {
-      if (needsResizing) {
-        resizeRgbImage(rgbBuf, dest, originalWidth, originalHeight, width, height, alpha01);
-      } else {
-        let destPos = 0,
-            rgbPos = 0;
-
-        for (let i = 0, ii = width * actualHeight; i < ii; i++) {
-          dest[destPos++] = rgbBuf[rgbPos++];
-          dest[destPos++] = rgbBuf[rgbPos++];
-          dest[destPos++] = rgbBuf[rgbPos++];
-          destPos += alpha01;
-        }
-      }
-    }
-  }
-
-  get usesZeroToOneRange() {
-    return (0, _util.shadow)(this, "usesZeroToOneRange", true);
-  }
-
-  static _cache(cacheKey, xref, localColorSpaceCache, parsedColorSpace) {
-    if (!localColorSpaceCache) {
-      throw new Error('ColorSpace._cache - expected "localColorSpaceCache" argument.');
-    }
-
-    if (!parsedColorSpace) {
-      throw new Error('ColorSpace._cache - expected "parsedColorSpace" argument.');
-    }
-
-    let csName, csRef;
-
-    if (cacheKey instanceof _primitives.Ref) {
-      csRef = cacheKey;
-      cacheKey = xref.fetch(cacheKey);
-    }
-
-    if (cacheKey instanceof _primitives.Name) {
-      csName = cacheKey.name;
-    }
-
-    if (csName || csRef) {
-      localColorSpaceCache.set(csName, csRef, parsedColorSpace);
-    }
-  }
-
-  static getCached(cacheKey, xref, localColorSpaceCache) {
-    if (!localColorSpaceCache) {
-      throw new Error('ColorSpace.getCached - expected "localColorSpaceCache" argument.');
-    }
-
-    if (cacheKey instanceof _primitives.Ref) {
-      const localColorSpace = localColorSpaceCache.getByRef(cacheKey);
-
-      if (localColorSpace) {
-        return localColorSpace;
-      }
-
-      try {
-        cacheKey = xref.fetch(cacheKey);
-      } catch (ex) {
-        if (ex instanceof _core_utils.MissingDataException) {
-          throw ex;
-        }
-      }
-    }
-
-    if (cacheKey instanceof _primitives.Name) {
-      const localColorSpace = localColorSpaceCache.getByName(cacheKey.name);
-
-      if (localColorSpace) {
-        return localColorSpace;
-      }
-    }
-
-    return null;
-  }
-
-  static async parseAsync({
-    cs,
-    xref,
-    resources = null,
-    pdfFunctionFactory,
-    localColorSpaceCache
-  }) {
-    const parsedColorSpace = this._parse(cs, xref, resources, pdfFunctionFactory);
-
-    this._cache(cs, xref, localColorSpaceCache, parsedColorSpace);
-
-    return parsedColorSpace;
-  }
-
-  static parse({
-    cs,
-    xref,
-    resources = null,
-    pdfFunctionFactory,
-    localColorSpaceCache
-  }) {
-    const cachedColorSpace = this.getCached(cs, xref, localColorSpaceCache);
-
-    if (cachedColorSpace) {
-      return cachedColorSpace;
-    }
-
-    const parsedColorSpace = this._parse(cs, xref, resources, pdfFunctionFactory);
-
-    this._cache(cs, xref, localColorSpaceCache, parsedColorSpace);
-
-    return parsedColorSpace;
-  }
-
-  static _parse(cs, xref, resources = null, pdfFunctionFactory) {
-    cs = xref.fetchIfRef(cs);
-
-    if ((0, _primitives.isName)(cs)) {
-      switch (cs.name) {
-        case "DeviceGray":
-        case "G":
-          return this.singletons.gray;
-
-        case "DeviceRGB":
-        case "RGB":
-          return this.singletons.rgb;
-
-        case "DeviceCMYK":
-        case "CMYK":
-          return this.singletons.cmyk;
-
-        case "Pattern":
-          return new PatternCS(null);
-
-        default:
-          if ((0, _primitives.isDict)(resources)) {
-            const colorSpaces = resources.get("ColorSpace");
-
-            if ((0, _primitives.isDict)(colorSpaces)) {
-              const resourcesCS = colorSpaces.get(cs.name);
-
-              if (resourcesCS) {
-                if ((0, _primitives.isName)(resourcesCS)) {
-                  return this._parse(resourcesCS, xref, resources, pdfFunctionFactory);
-                }
-
-                cs = resourcesCS;
-                break;
-              }
-            }
-          }
-
-          throw new _util.FormatError(`Unrecognized ColorSpace: ${cs.name}`);
-      }
-    }
-
-    if (Array.isArray(cs)) {
-      const mode = xref.fetchIfRef(cs[0]).name;
-      let params, numComps, baseCS, whitePoint, blackPoint, gamma;
-
-      switch (mode) {
-        case "DeviceGray":
-        case "G":
-          return this.singletons.gray;
-
-        case "DeviceRGB":
-        case "RGB":
-          return this.singletons.rgb;
-
-        case "DeviceCMYK":
-        case "CMYK":
-          return this.singletons.cmyk;
-
-        case "CalGray":
-          params = xref.fetchIfRef(cs[1]);
-          whitePoint = params.getArray("WhitePoint");
-          blackPoint = params.getArray("BlackPoint");
-          gamma = params.get("Gamma");
-          return new CalGrayCS(whitePoint, blackPoint, gamma);
-
-        case "CalRGB":
-          params = xref.fetchIfRef(cs[1]);
-          whitePoint = params.getArray("WhitePoint");
-          blackPoint = params.getArray("BlackPoint");
-          gamma = params.getArray("Gamma");
-          const matrix = params.getArray("Matrix");
-          return new CalRGBCS(whitePoint, blackPoint, gamma, matrix);
-
-        case "ICCBased":
-          const stream = xref.fetchIfRef(cs[1]);
-          const dict = stream.dict;
-          numComps = dict.get("N");
-          const alt = dict.get("Alternate");
-
-          if (alt) {
-            const altCS = this._parse(alt, xref, resources, pdfFunctionFactory);
-
-            if (altCS.numComps === numComps) {
-              return altCS;
-            }
-
-            (0, _util.warn)("ICCBased color space: Ignoring incorrect /Alternate entry.");
-          }
-
-          if (numComps === 1) {
-            return this.singletons.gray;
-          } else if (numComps === 3) {
-            return this.singletons.rgb;
-          } else if (numComps === 4) {
-            return this.singletons.cmyk;
-          }
-
-          break;
-
-        case "Pattern":
-          baseCS = cs[1] || null;
-
-          if (baseCS) {
-            baseCS = this._parse(baseCS, xref, resources, pdfFunctionFactory);
-          }
-
-          return new PatternCS(baseCS);
-
-        case "Indexed":
-        case "I":
-          baseCS = this._parse(cs[1], xref, resources, pdfFunctionFactory);
-          const hiVal = xref.fetchIfRef(cs[2]) + 1;
-          const lookup = xref.fetchIfRef(cs[3]);
-          return new IndexedCS(baseCS, hiVal, lookup);
-
-        case "Separation":
-        case "DeviceN":
-          const name = xref.fetchIfRef(cs[1]);
-          numComps = Array.isArray(name) ? name.length : 1;
-          baseCS = this._parse(cs[2], xref, resources, pdfFunctionFactory);
-          const tintFn = pdfFunctionFactory.create(cs[3]);
-          return new AlternateCS(numComps, baseCS, tintFn);
-
-        case "Lab":
-          params = xref.fetchIfRef(cs[1]);
-          whitePoint = params.getArray("WhitePoint");
-          blackPoint = params.getArray("BlackPoint");
-          const range = params.getArray("Range");
-          return new LabCS(whitePoint, blackPoint, range);
-
-        default:
-          throw new _util.FormatError(`Unimplemented ColorSpace object: ${mode}`);
-      }
-    }
-
-    throw new _util.FormatError(`Unrecognized ColorSpace object: ${cs}`);
-  }
-
-  static isDefaultDecode(decode, numComps) {
-    if (!Array.isArray(decode)) {
-      return true;
-    }
-
-    if (numComps * 2 !== decode.length) {
-      (0, _util.warn)("The decode map is not the correct length");
-      return true;
-    }
-
-    for (let i = 0, ii = decode.length; i < ii; i += 2) {
-      if (decode[i] !== 0 || decode[i + 1] !== 1) {
-        return false;
-      }
-    }
-
-    return true;
-  }
-
-  static get singletons() {
-    return (0, _util.shadow)(this, "singletons", {
-      get gray() {
-        return (0, _util.shadow)(this, "gray", new DeviceGrayCS());
-      },
-
-      get rgb() {
-        return (0, _util.shadow)(this, "rgb", new DeviceRgbCS());
-      },
-
-      get cmyk() {
-        return (0, _util.shadow)(this, "cmyk", new DeviceCmykCS());
-      }
-
-    });
-  }
-
-}
-
-exports.ColorSpace = ColorSpace;
-
-class AlternateCS extends ColorSpace {
-  constructor(numComps, base, tintFn) {
-    super("Alternate", numComps);
-    this.base = base;
-    this.tintFn = tintFn;
-    this.tmpBuf = new Float32Array(base.numComps);
-  }
-
-  getRgbItem(src, srcOffset, dest, destOffset) {
-    const tmpBuf = this.tmpBuf;
-    this.tintFn(src, srcOffset, tmpBuf, 0);
-    this.base.getRgbItem(tmpBuf, 0, dest, destOffset);
-  }
-
-  getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {
-    const tintFn = this.tintFn;
-    const base = this.base;
-    const scale = 1 / ((1 << bits) - 1);
-    const baseNumComps = base.numComps;
-    const usesZeroToOneRange = base.usesZeroToOneRange;
-    const isPassthrough = (base.isPassthrough(8) || !usesZeroToOneRange) && alpha01 === 0;
-    let pos = isPassthrough ? destOffset : 0;
-    const baseBuf = isPassthrough ? dest : new Uint8ClampedArray(baseNumComps * count);
-    const numComps = this.numComps;
-    const scaled = new Float32Array(numComps);
-    const tinted = new Float32Array(baseNumComps);
-    let i, j;
-
-    for (i = 0; i < count; i++) {
-      for (j = 0; j < numComps; j++) {
-        scaled[j] = src[srcOffset++] * scale;
-      }
-
-      tintFn(scaled, 0, tinted, 0);
-
-      if (usesZeroToOneRange) {
-        for (j = 0; j < baseNumComps; j++) {
-          baseBuf[pos++] = tinted[j] * 255;
-        }
-      } else {
-        base.getRgbItem(tinted, 0, baseBuf, pos);
-        pos += baseNumComps;
-      }
-    }
-
-    if (!isPassthrough) {
-      base.getRgbBuffer(baseBuf, 0, count, dest, destOffset, 8, alpha01);
-    }
-  }
-
-  getOutputLength(inputLength, alpha01) {
-    return this.base.getOutputLength(inputLength * this.base.numComps / this.numComps, alpha01);
-  }
-
-}
-
-class PatternCS extends ColorSpace {
-  constructor(baseCS) {
-    super("Pattern", null);
-    this.base = baseCS;
-  }
-
-  isDefaultDecode(decodeMap, bpc) {
-    (0, _util.unreachable)("Should not call PatternCS.isDefaultDecode");
-  }
-
-}
-
-class IndexedCS extends ColorSpace {
-  constructor(base, highVal, lookup) {
-    super("Indexed", 1);
-    this.base = base;
-    this.highVal = highVal;
-    const length = base.numComps * highVal;
-    this.lookup = new Uint8Array(length);
-
-    if ((0, _primitives.isStream)(lookup)) {
-      const bytes = lookup.getBytes(length);
-      this.lookup.set(bytes);
-    } else if (typeof lookup === "string") {
-      for (let i = 0; i < length; ++i) {
-        this.lookup[i] = lookup.charCodeAt(i) & 0xff;
-      }
-    } else {
-      throw new _util.FormatError(`IndexedCS - unrecognized lookup table: ${lookup}`);
-    }
-  }
-
-  getRgbItem(src, srcOffset, dest, destOffset) {
-    const numComps = this.base.numComps;
-    const start = src[srcOffset] * numComps;
-    this.base.getRgbBuffer(this.lookup, start, 1, dest, destOffset, 8, 0);
-  }
-
-  getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {
-    const base = this.base;
-    const numComps = base.numComps;
-    const outputDelta = base.getOutputLength(numComps, alpha01);
-    const lookup = this.lookup;
-
-    for (let i = 0; i < count; ++i) {
-      const lookupPos = src[srcOffset++] * numComps;
-      base.getRgbBuffer(lookup, lookupPos, 1, dest, destOffset, 8, alpha01);
-      destOffset += outputDelta;
-    }
-  }
-
-  getOutputLength(inputLength, alpha01) {
-    return this.base.getOutputLength(inputLength * this.base.numComps, alpha01);
-  }
-
-  isDefaultDecode(decodeMap, bpc) {
-    if (!Array.isArray(decodeMap)) {
-      return true;
-    }
-
-    if (decodeMap.length !== 2) {
-      (0, _util.warn)("Decode map length is not correct");
-      return true;
-    }
-
-    if (!Number.isInteger(bpc) || bpc < 1) {
-      (0, _util.warn)("Bits per component is not correct");
-      return true;
-    }
-
-    return decodeMap[0] === 0 && decodeMap[1] === (1 << bpc) - 1;
-  }
-
-}
-
-class DeviceGrayCS extends ColorSpace {
-  constructor() {
-    super("DeviceGray", 1);
-  }
-
-  getRgbItem(src, srcOffset, dest, destOffset) {
-    const c = src[srcOffset] * 255;
-    dest[destOffset] = dest[destOffset + 1] = dest[destOffset + 2] = c;
-  }
-
-  getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {
-    const scale = 255 / ((1 << bits) - 1);
-    let j = srcOffset,
-        q = destOffset;
-
-    for (let i = 0; i < count; ++i) {
-      const c = scale * src[j++];
-      dest[q++] = c;
-      dest[q++] = c;
-      dest[q++] = c;
-      q += alpha01;
-    }
-  }
-
-  getOutputLength(inputLength, alpha01) {
-    return inputLength * (3 + alpha01);
-  }
-
-}
-
-class DeviceRgbCS extends ColorSpace {
-  constructor() {
-    super("DeviceRGB", 3);
-  }
-
-  getRgbItem(src, srcOffset, dest, destOffset) {
-    dest[destOffset] = src[srcOffset] * 255;
-    dest[destOffset + 1] = src[srcOffset + 1] * 255;
-    dest[destOffset + 2] = src[srcOffset + 2] * 255;
-  }
-
-  getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {
-    if (bits === 8 && alpha01 === 0) {
-      dest.set(src.subarray(srcOffset, srcOffset + count * 3), destOffset);
-      return;
-    }
-
-    const scale = 255 / ((1 << bits) - 1);
-    let j = srcOffset,
-        q = destOffset;
-
-    for (let i = 0; i < count; ++i) {
-      dest[q++] = scale * src[j++];
-      dest[q++] = scale * src[j++];
-      dest[q++] = scale * src[j++];
-      q += alpha01;
-    }
-  }
-
-  getOutputLength(inputLength, alpha01) {
-    return inputLength * (3 + alpha01) / 3 | 0;
-  }
-
-  isPassthrough(bits) {
-    return bits === 8;
-  }
-
-}
-
-const DeviceCmykCS = function DeviceCmykCSClosure() {
-  function convertToRgb(src, srcOffset, srcScale, dest, destOffset) {
-    const c = src[srcOffset] * srcScale;
-    const m = src[srcOffset + 1] * srcScale;
-    const y = src[srcOffset + 2] * srcScale;
-    const k = src[srcOffset + 3] * srcScale;
-    dest[destOffset] = 255 + c * (-4.387332384609988 * c + 54.48615194189176 * m + 18.82290502165302 * y + 
212.25662451639585 * k + -285.2331026137004) + m * (1.7149763477362134 * m - 5.6096736904047315 * y + 
-17.873870861415444 * k - 5.497006427196366) + y * (-2.5217340131683033 * y - 21.248923337353073 * k + 
17.5119270841813) + k * (-21.86122147463605 * k - 189.48180835922747);
-    dest[destOffset + 1] = 255 + c * (8.841041422036149 * c + 60.118027045597366 * m + 6.871425592049007 * y 
+ 31.159100130055922 * k + -79.2970844816548) + m * (-15.310361306967817 * m + 17.575251261109482 * y + 
131.35250912493976 * k - 190.9453302588951) + y * (4.444339102852739 * y + 9.8632861493405 * k - 
24.86741582555878) + k * (-20.737325471181034 * k - 187.80453709719578);
-    dest[destOffset + 2] = 255 + c * (0.8842522430003296 * c + 8.078677503112928 * m + 30.89978309703729 * y 
- 0.23883238689178934 * k + -14.183576799673286) + m * (10.49593273432072 * m + 63.02378494754052 * y + 
50.606957656360734 * k - 112.23884253719248) + y * (0.03296041114873217 * y + 115.60384449646641 * k + 
-193.58209356861505) + k * (-22.33816807309886 * k - 180.12613974708367);
-  }
-
-  class DeviceCmykCS extends ColorSpace {
-    constructor() {
-      super("DeviceCMYK", 4);
-    }
-
-    getRgbItem(src, srcOffset, dest, destOffset) {
-      convertToRgb(src, srcOffset, 1, dest, destOffset);
-    }
-
-    getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {
-      const scale = 1 / ((1 << bits) - 1);
-
-      for (let i = 0; i < count; i++) {
-        convertToRgb(src, srcOffset, scale, dest, destOffset);
-        srcOffset += 4;
-        destOffset += 3 + alpha01;
-      }
-    }
-
-    getOutputLength(inputLength, alpha01) {
-      return inputLength / 4 * (3 + alpha01) | 0;
-    }
-
-  }
-
-  return DeviceCmykCS;
-}();
-
-const CalGrayCS = function CalGrayCSClosure() {
-  function convertToRgb(cs, src, srcOffset, dest, destOffset, scale) {
-    const A = src[srcOffset] * scale;
-    const AG = A ** cs.G;
-    const L = cs.YW * AG;
-    const val = Math.max(295.8 * L ** 0.333333333333333333 - 40.8, 0);
-    dest[destOffset] = val;
-    dest[destOffset + 1] = val;
-    dest[destOffset + 2] = val;
-  }
-
-  class CalGrayCS extends ColorSpace {
-    constructor(whitePoint, blackPoint, gamma) {
-      super("CalGray", 1);
-
-      if (!whitePoint) {
-        throw new _util.FormatError("WhitePoint missing - required for color space CalGray");
-      }
-
-      blackPoint = blackPoint || [0, 0, 0];
-      gamma = gamma || 1;
-      this.XW = whitePoint[0];
-      this.YW = whitePoint[1];
-      this.ZW = whitePoint[2];
-      this.XB = blackPoint[0];
-      this.YB = blackPoint[1];
-      this.ZB = blackPoint[2];
-      this.G = gamma;
-
-      if (this.XW < 0 || this.ZW < 0 || this.YW !== 1) {
-        throw new _util.FormatError(`Invalid WhitePoint components for ${this.name}` + ", no fallback 
available");
-      }
-
-      if (this.XB < 0 || this.YB < 0 || this.ZB < 0) {
-        (0, _util.info)(`Invalid BlackPoint for ${this.name}, falling back to default.`);
-        this.XB = this.YB = this.ZB = 0;
-      }
-
-      if (this.XB !== 0 || this.YB !== 0 || this.ZB !== 0) {
-        (0, _util.warn)(`${this.name}, BlackPoint: XB: ${this.XB}, YB: ${this.YB}, ` + `ZB: ${this.ZB}, only 
default values are supported.`);
-      }
-
-      if (this.G < 1) {
-        (0, _util.info)(`Invalid Gamma: ${this.G} for ${this.name}, ` + "falling back to default.");
-        this.G = 1;
-      }
-    }
-
-    getRgbItem(src, srcOffset, dest, destOffset) {
-      convertToRgb(this, src, srcOffset, dest, destOffset, 1);
-    }
-
-    getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {
-      const scale = 1 / ((1 << bits) - 1);
-
-      for (let i = 0; i < count; ++i) {
-        convertToRgb(this, src, srcOffset, dest, destOffset, scale);
-        srcOffset += 1;
-        destOffset += 3 + alpha01;
-      }
-    }
-
-    getOutputLength(inputLength, alpha01) {
-      return inputLength * (3 + alpha01);
-    }
-
-  }
-
-  return CalGrayCS;
-}();
-
-const CalRGBCS = function CalRGBCSClosure() {
-  const BRADFORD_SCALE_MATRIX = new Float32Array([0.8951, 0.2664, -0.1614, -0.7502, 1.7135, 0.0367, 0.0389, 
-0.0685, 1.0296]);
-  const BRADFORD_SCALE_INVERSE_MATRIX = new Float32Array([0.9869929, -0.1470543, 0.1599627, 0.4323053, 
0.5183603, 0.0492912, -0.0085287, 0.0400428, 0.9684867]);
-  const SRGB_D65_XYZ_TO_RGB_MATRIX = new Float32Array([3.2404542, -1.5371385, -0.4985314, -0.9692660, 
1.8760108, 0.0415560, 0.0556434, -0.2040259, 1.0572252]);
-  const FLAT_WHITEPOINT_MATRIX = new Float32Array([1, 1, 1]);
-  const tempNormalizeMatrix = new Float32Array(3);
-  const tempConvertMatrix1 = new Float32Array(3);
-  const tempConvertMatrix2 = new Float32Array(3);
-  const DECODE_L_CONSTANT = ((8 + 16) / 116) ** 3 / 8.0;
-
-  function matrixProduct(a, b, result) {
-    result[0] = a[0] * b[0] + a[1] * b[1] + a[2] * b[2];
-    result[1] = a[3] * b[0] + a[4] * b[1] + a[5] * b[2];
-    result[2] = a[6] * b[0] + a[7] * b[1] + a[8] * b[2];
-  }
-
-  function convertToFlat(sourceWhitePoint, LMS, result) {
-    result[0] = LMS[0] * 1 / sourceWhitePoint[0];
-    result[1] = LMS[1] * 1 / sourceWhitePoint[1];
-    result[2] = LMS[2] * 1 / sourceWhitePoint[2];
-  }
-
-  function convertToD65(sourceWhitePoint, LMS, result) {
-    const D65X = 0.95047;
-    const D65Y = 1;
-    const D65Z = 1.08883;
-    result[0] = LMS[0] * D65X / sourceWhitePoint[0];
-    result[1] = LMS[1] * D65Y / sourceWhitePoint[1];
-    result[2] = LMS[2] * D65Z / sourceWhitePoint[2];
-  }
-
-  function sRGBTransferFunction(color) {
-    if (color <= 0.0031308) {
-      return adjustToRange(0, 1, 12.92 * color);
-    }
-
-    if (color >= 0.99554525) {
-      return 1;
-    }
-
-    return adjustToRange(0, 1, (1 + 0.055) * color ** (1 / 2.4) - 0.055);
-  }
-
-  function adjustToRange(min, max, value) {
-    return Math.max(min, Math.min(max, value));
-  }
-
-  function decodeL(L) {
-    if (L < 0) {
-      return -decodeL(-L);
-    }
-
-    if (L > 8.0) {
-      return ((L + 16) / 116) ** 3;
-    }
-
-    return L * DECODE_L_CONSTANT;
-  }
-
-  function compensateBlackPoint(sourceBlackPoint, XYZ_Flat, result) {
-    if (sourceBlackPoint[0] === 0 && sourceBlackPoint[1] === 0 && sourceBlackPoint[2] === 0) {
-      result[0] = XYZ_Flat[0];
-      result[1] = XYZ_Flat[1];
-      result[2] = XYZ_Flat[2];
-      return;
-    }
-
-    const zeroDecodeL = decodeL(0);
-    const X_DST = zeroDecodeL;
-    const X_SRC = decodeL(sourceBlackPoint[0]);
-    const Y_DST = zeroDecodeL;
-    const Y_SRC = decodeL(sourceBlackPoint[1]);
-    const Z_DST = zeroDecodeL;
-    const Z_SRC = decodeL(sourceBlackPoint[2]);
-    const X_Scale = (1 - X_DST) / (1 - X_SRC);
-    const X_Offset = 1 - X_Scale;
-    const Y_Scale = (1 - Y_DST) / (1 - Y_SRC);
-    const Y_Offset = 1 - Y_Scale;
-    const Z_Scale = (1 - Z_DST) / (1 - Z_SRC);
-    const Z_Offset = 1 - Z_Scale;
-    result[0] = XYZ_Flat[0] * X_Scale + X_Offset;
-    result[1] = XYZ_Flat[1] * Y_Scale + Y_Offset;
-    result[2] = XYZ_Flat[2] * Z_Scale + Z_Offset;
-  }
-
-  function normalizeWhitePointToFlat(sourceWhitePoint, XYZ_In, result) {
-    if (sourceWhitePoint[0] === 1 && sourceWhitePoint[2] === 1) {
-      result[0] = XYZ_In[0];
-      result[1] = XYZ_In[1];
-      result[2] = XYZ_In[2];
-      return;
-    }
-
-    const LMS = result;
-    matrixProduct(BRADFORD_SCALE_MATRIX, XYZ_In, LMS);
-    const LMS_Flat = tempNormalizeMatrix;
-    convertToFlat(sourceWhitePoint, LMS, LMS_Flat);
-    matrixProduct(BRADFORD_SCALE_INVERSE_MATRIX, LMS_Flat, result);
-  }
-
-  function normalizeWhitePointToD65(sourceWhitePoint, XYZ_In, result) {
-    const LMS = result;
-    matrixProduct(BRADFORD_SCALE_MATRIX, XYZ_In, LMS);
-    const LMS_D65 = tempNormalizeMatrix;
-    convertToD65(sourceWhitePoint, LMS, LMS_D65);
-    matrixProduct(BRADFORD_SCALE_INVERSE_MATRIX, LMS_D65, result);
-  }
-
-  function convertToRgb(cs, src, srcOffset, dest, destOffset, scale) {
-    const A = adjustToRange(0, 1, src[srcOffset] * scale);
-    const B = adjustToRange(0, 1, src[srcOffset + 1] * scale);
-    const C = adjustToRange(0, 1, src[srcOffset + 2] * scale);
-    const AGR = A === 1 ? 1 : A ** cs.GR;
-    const BGG = B === 1 ? 1 : B ** cs.GG;
-    const CGB = C === 1 ? 1 : C ** cs.GB;
-    const X = cs.MXA * AGR + cs.MXB * BGG + cs.MXC * CGB;
-    const Y = cs.MYA * AGR + cs.MYB * BGG + cs.MYC * CGB;
-    const Z = cs.MZA * AGR + cs.MZB * BGG + cs.MZC * CGB;
-    const XYZ = tempConvertMatrix1;
-    XYZ[0] = X;
-    XYZ[1] = Y;
-    XYZ[2] = Z;
-    const XYZ_Flat = tempConvertMatrix2;
-    normalizeWhitePointToFlat(cs.whitePoint, XYZ, XYZ_Flat);
-    const XYZ_Black = tempConvertMatrix1;
-    compensateBlackPoint(cs.blackPoint, XYZ_Flat, XYZ_Black);
-    const XYZ_D65 = tempConvertMatrix2;
-    normalizeWhitePointToD65(FLAT_WHITEPOINT_MATRIX, XYZ_Black, XYZ_D65);
-    const SRGB = tempConvertMatrix1;
-    matrixProduct(SRGB_D65_XYZ_TO_RGB_MATRIX, XYZ_D65, SRGB);
-    dest[destOffset] = sRGBTransferFunction(SRGB[0]) * 255;
-    dest[destOffset + 1] = sRGBTransferFunction(SRGB[1]) * 255;
-    dest[destOffset + 2] = sRGBTransferFunction(SRGB[2]) * 255;
-  }
-
-  class CalRGBCS extends ColorSpace {
-    constructor(whitePoint, blackPoint, gamma, matrix) {
-      super("CalRGB", 3);
-
-      if (!whitePoint) {
-        throw new _util.FormatError("WhitePoint missing - required for color space CalRGB");
-      }
-
-      blackPoint = blackPoint || new Float32Array(3);
-      gamma = gamma || new Float32Array([1, 1, 1]);
-      matrix = matrix || new Float32Array([1, 0, 0, 0, 1, 0, 0, 0, 1]);
-      const XW = whitePoint[0];
-      const YW = whitePoint[1];
-      const ZW = whitePoint[2];
-      this.whitePoint = whitePoint;
-      const XB = blackPoint[0];
-      const YB = blackPoint[1];
-      const ZB = blackPoint[2];
-      this.blackPoint = blackPoint;
-      this.GR = gamma[0];
-      this.GG = gamma[1];
-      this.GB = gamma[2];
-      this.MXA = matrix[0];
-      this.MYA = matrix[1];
-      this.MZA = matrix[2];
-      this.MXB = matrix[3];
-      this.MYB = matrix[4];
-      this.MZB = matrix[5];
-      this.MXC = matrix[6];
-      this.MYC = matrix[7];
-      this.MZC = matrix[8];
-
-      if (XW < 0 || ZW < 0 || YW !== 1) {
-        throw new _util.FormatError(`Invalid WhitePoint components for ${this.name}` + ", no fallback 
available");
-      }
-
-      if (XB < 0 || YB < 0 || ZB < 0) {
-        (0, _util.info)(`Invalid BlackPoint for ${this.name} [${XB}, ${YB}, ${ZB}], ` + "falling back to 
default.");
-        this.blackPoint = new Float32Array(3);
-      }
-
-      if (this.GR < 0 || this.GG < 0 || this.GB < 0) {
-        (0, _util.info)(`Invalid Gamma [${this.GR}, ${this.GG}, ${this.GB}] for ` + `${this.name}, falling 
back to default.`);
-        this.GR = this.GG = this.GB = 1;
-      }
-    }
-
-    getRgbItem(src, srcOffset, dest, destOffset) {
-      convertToRgb(this, src, srcOffset, dest, destOffset, 1);
-    }
-
-    getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {
-      const scale = 1 / ((1 << bits) - 1);
-
-      for (let i = 0; i < count; ++i) {
-        convertToRgb(this, src, srcOffset, dest, destOffset, scale);
-        srcOffset += 3;
-        destOffset += 3 + alpha01;
-      }
-    }
-
-    getOutputLength(inputLength, alpha01) {
-      return inputLength * (3 + alpha01) / 3 | 0;
-    }
-
-  }
-
-  return CalRGBCS;
-}();
-
-const LabCS = function LabCSClosure() {
-  function fn_g(x) {
-    let result;
-
-    if (x >= 6 / 29) {
-      result = x ** 3;
-    } else {
-      result = 108 / 841 * (x - 4 / 29);
-    }
-
-    return result;
-  }
-
-  function decode(value, high1, low2, high2) {
-    return low2 + value * (high2 - low2) / high1;
-  }
-
-  function convertToRgb(cs, src, srcOffset, maxVal, dest, destOffset) {
-    let Ls = src[srcOffset];
-    let as = src[srcOffset + 1];
-    let bs = src[srcOffset + 2];
-
-    if (maxVal !== false) {
-      Ls = decode(Ls, maxVal, 0, 100);
-      as = decode(as, maxVal, cs.amin, cs.amax);
-      bs = decode(bs, maxVal, cs.bmin, cs.bmax);
-    }
-
-    if (as > cs.amax) {
-      as = cs.amax;
-    } else if (as < cs.amin) {
-      as = cs.amin;
-    }
-
-    if (bs > cs.bmax) {
-      bs = cs.bmax;
-    } else if (bs < cs.bmin) {
-      bs = cs.bmin;
-    }
-
-    const M = (Ls + 16) / 116;
-    const L = M + as / 500;
-    const N = M - bs / 200;
-    const X = cs.XW * fn_g(L);
-    const Y = cs.YW * fn_g(M);
-    const Z = cs.ZW * fn_g(N);
-    let r, g, b;
-
-    if (cs.ZW < 1) {
-      r = X * 3.1339 + Y * -1.617 + Z * -0.4906;
-      g = X * -0.9785 + Y * 1.916 + Z * 0.0333;
-      b = X * 0.072 + Y * -0.229 + Z * 1.4057;
-    } else {
-      r = X * 3.2406 + Y * -1.5372 + Z * -0.4986;
-      g = X * -0.9689 + Y * 1.8758 + Z * 0.0415;
-      b = X * 0.0557 + Y * -0.204 + Z * 1.057;
-    }
-
-    dest[destOffset] = Math.sqrt(r) * 255;
-    dest[destOffset + 1] = Math.sqrt(g) * 255;
-    dest[destOffset + 2] = Math.sqrt(b) * 255;
-  }
-
-  class LabCS extends ColorSpace {
-    constructor(whitePoint, blackPoint, range) {
-      super("Lab", 3);
-
-      if (!whitePoint) {
-        throw new _util.FormatError("WhitePoint missing - required for color space Lab");
-      }
-
-      blackPoint = blackPoint || [0, 0, 0];
-      range = range || [-100, 100, -100, 100];
-      this.XW = whitePoint[0];
-      this.YW = whitePoint[1];
-      this.ZW = whitePoint[2];
-      this.amin = range[0];
-      this.amax = range[1];
-      this.bmin = range[2];
-      this.bmax = range[3];
-      this.XB = blackPoint[0];
-      this.YB = blackPoint[1];
-      this.ZB = blackPoint[2];
-
-      if (this.XW < 0 || this.ZW < 0 || this.YW !== 1) {
-        throw new _util.FormatError("Invalid WhitePoint components, no fallback available");
-      }
-
-      if (this.XB < 0 || this.YB < 0 || this.ZB < 0) {
-        (0, _util.info)("Invalid BlackPoint, falling back to default");
-        this.XB = this.YB = this.ZB = 0;
-      }
-
-      if (this.amin > this.amax || this.bmin > this.bmax) {
-        (0, _util.info)("Invalid Range, falling back to defaults");
-        this.amin = -100;
-        this.amax = 100;
-        this.bmin = -100;
-        this.bmax = 100;
-      }
-    }
-
-    getRgbItem(src, srcOffset, dest, destOffset) {
-      convertToRgb(this, src, srcOffset, false, dest, destOffset);
-    }
-
-    getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {
-      const maxVal = (1 << bits) - 1;
-
-      for (let i = 0; i < count; i++) {
-        convertToRgb(this, src, srcOffset, maxVal, dest, destOffset);
-        srcOffset += 3;
-        destOffset += 3 + alpha01;
-      }
-    }
-
-    getOutputLength(inputLength, alpha01) {
-      return inputLength * (3 + alpha01) / 3 | 0;
-    }
-
-    isDefaultDecode(decodeMap, bpc) {
-      return true;
-    }
-
-    get usesZeroToOneRange() {
-      return (0, _util.shadow)(this, "usesZeroToOneRange", false);
-    }
-
-  }
-
-  return LabCS;
-}();
-
-/***/ }),
-/* 15 */
-/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
-
-
-
-Object.defineProperty(exports, "__esModule", ({
-  value: true
-}));
-exports.PartialEvaluator = exports.EvaluatorPreprocessor = void 0;
-
-var _util = __w_pdfjs_require__(2);
-
-var _cmap = __w_pdfjs_require__(16);
-
-var _primitives = __w_pdfjs_require__(5);
-
-var _fonts = __w_pdfjs_require__(34);
-
-var _fonts_utils = __w_pdfjs_require__(38);
-
-var _encodings = __w_pdfjs_require__(37);
-
-var _standard_fonts = __w_pdfjs_require__(41);
-
-var _unicode = __w_pdfjs_require__(40);
-
-var _pattern = __w_pdfjs_require__(49);
-
-var _to_unicode_map = __w_pdfjs_require__(42);
-
-var _function = __w_pdfjs_require__(50);
-
-var _parser = __w_pdfjs_require__(17);
-
-var _image_utils = __w_pdfjs_require__(52);
-
-var _stream = __w_pdfjs_require__(10);
-
-var _bidi = __w_pdfjs_require__(53);
-
-var _colorspace = __w_pdfjs_require__(14);
-
-var _decode_stream = __w_pdfjs_require__(19);
-
-var _glyphlist = __w_pdfjs_require__(39);
-
-var _core_utils = __w_pdfjs_require__(9);
-
-var _metrics = __w_pdfjs_require__(54);
-
-var _xfa_fonts = __w_pdfjs_require__(55);
-
-var _murmurhash = __w_pdfjs_require__(61);
-
-var _operator_list = __w_pdfjs_require__(62);
-
-var _image = __w_pdfjs_require__(63);
-
-const DefaultPartialEvaluatorOptions = Object.freeze({
-  maxImageSize: -1,
-  disableFontFace: false,
-  ignoreErrors: false,
-  isEvalSupported: true,
-  fontExtraProperties: false,
-  useSystemFonts: true,
-  cMapUrl: null,
-  standardFontDataUrl: null
-});
-const PatternType = {
-  TILING: 1,
-  SHADING: 2
-};
-const deferred = Promise.resolve();
-
-function normalizeBlendMode(value, parsingArray = false) {
-  if (Array.isArray(value)) {
-    for (let i = 0, ii = value.length; i < ii; i++) {
-      const maybeBM = normalizeBlendMode(value[i], true);
-
-      if (maybeBM) {
-        return maybeBM;
-      }
-    }
-
-    (0, _util.warn)(`Unsupported blend mode Array: ${value}`);
-    return "source-over";
-  }
-
-  if (!(0, _primitives.isName)(value)) {
-    if (parsingArray) {
-      return null;
-    }
-
-    return "source-over";
-  }
-
-  switch (value.name) {
-    case "Normal":
-    case "Compatible":
-      return "source-over";
-
-    case "Multiply":
-      return "multiply";
-
-    case "Screen":
-      return "screen";
-
-    case "Overlay":
-      return "overlay";
-
-    case "Darken":
-      return "darken";
-
-    case "Lighten":
-      return "lighten";
-
-    case "ColorDodge":
-      return "color-dodge";
-
-    case "ColorBurn":
-      return "color-burn";
-
-    case "HardLight":
-      return "hard-light";
-
-    case "SoftLight":
-      return "soft-light";
-
-    case "Difference":
-      return "difference";
-
-    case "Exclusion":
-      return "exclusion";
-
-    case "Hue":
-      return "hue";
-
-    case "Saturation":
-      return "saturation";
-
-    case "Color":
-      return "color";
-
-    case "Luminosity":
-      return "luminosity";
-  }
-
-  if (parsingArray) {
-    return null;
-  }
-
-  (0, _util.warn)(`Unsupported blend mode: ${value.name}`);
-  return "source-over";
-}
-
-class TimeSlotManager {
-  static get TIME_SLOT_DURATION_MS() {
-    return (0, _util.shadow)(this, "TIME_SLOT_DURATION_MS", 20);
-  }
-
-  static get CHECK_TIME_EVERY() {
-    return (0, _util.shadow)(this, "CHECK_TIME_EVERY", 100);
-  }
-
-  constructor() {
-    this.reset();
-  }
-
-  check() {
-    if (++this.checked < TimeSlotManager.CHECK_TIME_EVERY) {
-      return false;
-    }
-
-    this.checked = 0;
-    return this.endTime <= Date.now();
-  }
-
-  reset() {
-    this.endTime = Date.now() + TimeSlotManager.TIME_SLOT_DURATION_MS;
-    this.checked = 0;
-  }
-
-}
-
-class PartialEvaluator {
-  constructor({
-    xref,
-    handler,
-    pageIndex,
-    idFactory,
-    fontCache,
-    builtInCMapCache,
-    standardFontDataCache,
-    globalImageCache,
-    options = null
-  }) {
-    this.xref = xref;
-    this.handler = handler;
-    this.pageIndex = pageIndex;
-    this.idFactory = idFactory;
-    this.fontCache = fontCache;
-    this.builtInCMapCache = builtInCMapCache;
-    this.standardFontDataCache = standardFontDataCache;
-    this.globalImageCache = globalImageCache;
-    this.options = options || DefaultPartialEvaluatorOptions;
-    this.parsingType3Font = false;
-    this._fetchBuiltInCMapBound = this.fetchBuiltInCMap.bind(this);
-  }
-
-  get _pdfFunctionFactory() {
-    const pdfFunctionFactory = new _function.PDFFunctionFactory({
-      xref: this.xref,
-      isEvalSupported: this.options.isEvalSupported
-    });
-    return (0, _util.shadow)(this, "_pdfFunctionFactory", pdfFunctionFactory);
-  }
-
-  clone(newOptions = null) {
-    const newEvaluator = Object.create(this);
-    newEvaluator.options = Object.assign(Object.create(null), this.options, newOptions);
-    return newEvaluator;
-  }
-
-  hasBlendModes(resources, nonBlendModesSet) {
-    if (!(resources instanceof _primitives.Dict)) {
-      return false;
-    }
-
-    if (resources.objId && nonBlendModesSet.has(resources.objId)) {
-      return false;
-    }
-
-    const processed = new _primitives.RefSet(nonBlendModesSet);
-
-    if (resources.objId) {
-      processed.put(resources.objId);
-    }
-
-    const nodes = [resources],
-          xref = this.xref;
-
-    while (nodes.length) {
-      const node = nodes.shift();
-      const graphicStates = node.get("ExtGState");
-
-      if (graphicStates instanceof _primitives.Dict) {
-        for (let graphicState of graphicStates.getRawValues()) {
-          if (graphicState instanceof _primitives.Ref) {
-            if (processed.has(graphicState)) {
-              continue;
-            }
-
-            try {
-              graphicState = xref.fetch(graphicState);
-            } catch (ex) {
-              processed.put(graphicState);
-              (0, _util.info)(`hasBlendModes - ignoring ExtGState: "${ex}".`);
-              continue;
-            }
-          }
-
-          if (!(graphicState instanceof _primitives.Dict)) {
-            continue;
-          }
-
-          if (graphicState.objId) {
-            processed.put(graphicState.objId);
-          }
-
-          const bm = graphicState.get("BM");
-
-          if (bm instanceof _primitives.Name) {
-            if (bm.name !== "Normal") {
-              return true;
-            }
-
-            continue;
-          }
-
-          if (bm !== undefined && Array.isArray(bm)) {
-            for (const element of bm) {
-              if (element instanceof _primitives.Name && element.name !== "Normal") {
-                return true;
-              }
-            }
-          }
-        }
-      }
-
-      const xObjects = node.get("XObject");
-
-      if (!(xObjects instanceof _primitives.Dict)) {
-        continue;
-      }
-
-      for (let xObject of xObjects.getRawValues()) {
-        if (xObject instanceof _primitives.Ref) {
-          if (processed.has(xObject)) {
-            continue;
-          }
-
-          try {
-            xObject = xref.fetch(xObject);
-          } catch (ex) {
-            processed.put(xObject);
-            (0, _util.info)(`hasBlendModes - ignoring XObject: "${ex}".`);
-            continue;
-          }
-        }
-
-        if (!(0, _primitives.isStream)(xObject)) {
-          continue;
-        }
-
-        if (xObject.dict.objId) {
-          processed.put(xObject.dict.objId);
-        }
-
-        const xResources = xObject.dict.get("Resources");
-
-        if (!(xResources instanceof _primitives.Dict)) {
-          continue;
-        }
-
-        if (xResources.objId && processed.has(xResources.objId)) {
-          continue;
-        }
-
-        nodes.push(xResources);
-
-        if (xResources.objId) {
-          processed.put(xResources.objId);
-        }
-      }
-    }
-
-    processed.forEach(ref => {
-      nonBlendModesSet.put(ref);
-    });
-    return false;
-  }
-
-  async fetchBuiltInCMap(name) {
-    const cachedData = this.builtInCMapCache.get(name);
-
-    if (cachedData) {
-      return cachedData;
-    }
-
-    let data;
-
-    if (this.options.cMapUrl !== null) {
-      const url = `${this.options.cMapUrl}${name}.bcmap`;
-      const response = await fetch(url);
-
-      if (!response.ok) {
-        throw new Error(`fetchBuiltInCMap: failed to fetch file "${url}" with "${response.statusText}".`);
-      }
-
-      data = {
-        cMapData: new Uint8Array(await response.arrayBuffer()),
-        compressionType: _util.CMapCompressionType.BINARY
-      };
-    } else {
-      data = await this.handler.sendWithPromise("FetchBuiltInCMap", {
-        name
-      });
-    }
-
-    if (data.compressionType !== _util.CMapCompressionType.NONE) {
-      this.builtInCMapCache.set(name, data);
-    }
-
-    return data;
-  }
-
-  async fetchStandardFontData(name) {
-    const cachedData = this.standardFontDataCache.get(name);
-
-    if (cachedData) {
-      return new _stream.Stream(cachedData);
-    }
-
-    if (this.options.useSystemFonts && name !== "Symbol" && name !== "ZapfDingbats") {
-      return null;
-    }
-
-    const standardFontNameToFileName = (0, _standard_fonts.getFontNameToFileMap)(),
-          filename = standardFontNameToFileName[name];
-    let data;
-
-    if (this.options.standardFontDataUrl !== null) {
-      const url = `${this.options.standardFontDataUrl}${filename}`;
-      const response = await fetch(url);
-
-      if (!response.ok) {
-        (0, _util.warn)(`fetchStandardFontData: failed to fetch file "${url}" with 
"${response.statusText}".`);
-      } else {
-        data = await response.arrayBuffer();
-      }
-    } else {
-      try {
-        data = await this.handler.sendWithPromise("FetchStandardFontData", {
-          filename
-        });
-      } catch (e) {
-        (0, _util.warn)(`fetchStandardFontData: failed to fetch file "${filename}" with "${e}".`);
-      }
-    }
-
-    if (!data) {
-      return null;
-    }
-
-    this.standardFontDataCache.set(name, data);
-    return new _stream.Stream(data);
-  }
-
-  async buildFormXObject(resources, xobj, smask, operatorList, task, initialState, localColorSpaceCache) {
-    const dict = xobj.dict;
-    const matrix = dict.getArray("Matrix");
-    let bbox = dict.getArray("BBox");
-
-    if (Array.isArray(bbox) && bbox.length === 4) {
-      bbox = _util.Util.normalizeRect(bbox);
-    } else {
-      bbox = null;
-    }
-
-    let optionalContent = null,
-        groupOptions;
-
-    if (dict.has("OC")) {
-      optionalContent = await this.parseMarkedContentProps(dict.get("OC"), resources);
-      operatorList.addOp(_util.OPS.beginMarkedContentProps, ["OC", optionalContent]);
-    }
-
-    const group = dict.get("Group");
-
-    if (group) {
-      groupOptions = {
-        matrix,
-        bbox,
-        smask,
-        isolated: false,
-        knockout: false
-      };
-      const groupSubtype = group.get("S");
-      let colorSpace = null;
-
-      if ((0, _primitives.isName)(groupSubtype, "Transparency")) {
-        groupOptions.isolated = group.get("I") || false;
-        groupOptions.knockout = group.get("K") || false;
-
-        if (group.has("CS")) {
-          const cs = group.getRaw("CS");
-
-          const cachedColorSpace = _colorspace.ColorSpace.getCached(cs, this.xref, localColorSpaceCache);
-
-          if (cachedColorSpace) {
-            colorSpace = cachedColorSpace;
-          } else {
-            colorSpace = await this.parseColorSpace({
-              cs,
-              resources,
-              localColorSpaceCache
-            });
-          }
-        }
-      }
-
-      if (smask && smask.backdrop) {
-        colorSpace = colorSpace || _colorspace.ColorSpace.singletons.rgb;
-        smask.backdrop = colorSpace.getRgb(smask.backdrop, 0);
-      }
-
-      operatorList.addOp(_util.OPS.beginGroup, [groupOptions]);
-    }
-
-    operatorList.addOp(_util.OPS.paintFormXObjectBegin, [matrix, bbox]);
-    return this.getOperatorList({
-      stream: xobj,
-      task,
-      resources: dict.get("Resources") || resources,
-      operatorList,
-      initialState
-    }).then(function () {
-      operatorList.addOp(_util.OPS.paintFormXObjectEnd, []);
-
-      if (group) {
-        operatorList.addOp(_util.OPS.endGroup, [groupOptions]);
-      }
-
-      if (optionalContent) {
-        operatorList.addOp(_util.OPS.endMarkedContent, []);
-      }
-    });
-  }
-
-  _sendImgData(objId, imgData, cacheGlobally = false) {
-    const transfers = imgData ? [imgData.data.buffer] : null;
-
-    if (this.parsingType3Font || cacheGlobally) {
-      return this.handler.send("commonobj", [objId, "Image", imgData], transfers);
-    }
-
-    return this.handler.send("obj", [objId, this.pageIndex, "Image", imgData], transfers);
-  }
-
-  async buildPaintImageXObject({
-    resources,
-    image,
-    isInline = false,
-    operatorList,
-    cacheKey,
-    localImageCache,
-    localColorSpaceCache
-  }) {
-    const dict = image.dict;
-    const imageRef = dict.objId;
-    const w = dict.get("Width", "W");
-    const h = dict.get("Height", "H");
-
-    if (!(w && (0, _util.isNum)(w)) || !(h && (0, _util.isNum)(h))) {
-      (0, _util.warn)("Image dimensions are missing, or not numbers.");
-      return undefined;
-    }
-
-    const maxImageSize = this.options.maxImageSize;
-
-    if (maxImageSize !== -1 && w * h > maxImageSize) {
-      (0, _util.warn)("Image exceeded maximum allowed size and was removed.");
-      return undefined;
-    }
-
-    const imageMask = dict.get("ImageMask", "IM") || false;
-    let imgData, args;
-
-    if (imageMask) {
-      const width = dict.get("Width", "W");
-      const height = dict.get("Height", "H");
-      const bitStrideLength = width + 7 >> 3;
-      const imgArray = image.getBytes(bitStrideLength * height, true);
-      const decode = dict.getArray("Decode", "D");
-      imgData = _image.PDFImage.createMask({
-        imgArray,
-        width,
-        height,
-        imageIsFromDecodeStream: image instanceof _decode_stream.DecodeStream,
-        inverseDecode: !!decode && decode[0] > 0
-      });
-      imgData.cached = !!cacheKey;
-      args = [imgData];
-      operatorList.addOp(_util.OPS.paintImageMaskXObject, args);
-
-      if (cacheKey) {
-        localImageCache.set(cacheKey, imageRef, {
-          fn: _util.OPS.paintImageMaskXObject,
-          args
-        });
-      }
-
-      return undefined;
-    }
-
-    const softMask = dict.get("SMask", "SM") || false;
-    const mask = dict.get("Mask") || false;
-    const SMALL_IMAGE_DIMENSIONS = 200;
-
-    if (isInline && !softMask && !mask && w + h < SMALL_IMAGE_DIMENSIONS) {
-      const imageObj = new _image.PDFImage({
-        xref: this.xref,
-        res: resources,
-        image,
-        isInline,
-        pdfFunctionFactory: this._pdfFunctionFactory,
-        localColorSpaceCache
-      });
-      imgData = imageObj.createImageData(true);
-      operatorList.addOp(_util.OPS.paintInlineImageXObject, [imgData]);
-      return undefined;
-    }
-
-    let objId = `img_${this.idFactory.createObjId()}`,
-        cacheGlobally = false;
-
-    if (this.parsingType3Font) {
-      objId = `${this.idFactory.getDocId()}_type3_${objId}`;
-    } else if (imageRef) {
-      cacheGlobally = this.globalImageCache.shouldCache(imageRef, this.pageIndex);
-
-      if (cacheGlobally) {
-        objId = `${this.idFactory.getDocId()}_${objId}`;
-      }
-    }
-
-    operatorList.addDependency(objId);
-    args = [objId, w, h];
-
-    _image.PDFImage.buildImage({
-      xref: this.xref,
-      res: resources,
-      image,
-      isInline,
-      pdfFunctionFactory: this._pdfFunctionFactory,
-      localColorSpaceCache
-    }).then(imageObj => {
-      imgData = imageObj.createImageData(false);
-
-      if (cacheKey && imageRef && cacheGlobally) {
-        this.globalImageCache.addByteSize(imageRef, imgData.data.length);
-      }
-
-      return this._sendImgData(objId, imgData, cacheGlobally);
-    }).catch(reason => {
-      (0, _util.warn)(`Unable to decode image "${objId}": "${reason}".`);
-      return this._sendImgData(objId, null, cacheGlobally);
-    });
-
-    operatorList.addOp(_util.OPS.paintImageXObject, args);
-
-    if (cacheKey) {
-      localImageCache.set(cacheKey, imageRef, {
-        fn: _util.OPS.paintImageXObject,
-        args
-      });
-
-      if (imageRef) {
-        (0, _util.assert)(!isInline, "Cannot cache an inline image globally.");
-        this.globalImageCache.addPageIndex(imageRef, this.pageIndex);
-
-        if (cacheGlobally) {
-          this.globalImageCache.setData(imageRef, {
-            objId,
-            fn: _util.OPS.paintImageXObject,
-            args,
-            byteSize: 0
-          });
-        }
-      }
-    }
-
-    return undefined;
-  }
-
-  handleSMask(smask, resources, operatorList, task, stateManager, localColorSpaceCache) {
-    const smaskContent = smask.get("G");
-    const smaskOptions = {
-      subtype: smask.get("S").name,
-      backdrop: smask.get("BC")
-    };
-    const transferObj = smask.get("TR");
-
-    if ((0, _function.isPDFFunction)(transferObj)) {
-      const transferFn = this._pdfFunctionFactory.create(transferObj);
-
-      const transferMap = new Uint8Array(256);
-      const tmp = new Float32Array(1);
-
-      for (let i = 0; i < 256; i++) {
-        tmp[0] = i / 255;
-        transferFn(tmp, 0, tmp, 0);
-        transferMap[i] = tmp[0] * 255 | 0;
-      }
-
-      smaskOptions.transferMap = transferMap;
-    }
-
-    return this.buildFormXObject(resources, smaskContent, smaskOptions, operatorList, task, 
stateManager.state.clone(), localColorSpaceCache);
-  }
-
-  handleTransferFunction(tr) {
-    let transferArray;
-
-    if (Array.isArray(tr)) {
-      transferArray = tr;
-    } else if ((0, _function.isPDFFunction)(tr)) {
-      transferArray = [tr];
-    } else {
-      return null;
-    }
-
-    const transferMaps = [];
-    let numFns = 0,
-        numEffectfulFns = 0;
-
-    for (const entry of transferArray) {
-      const transferObj = this.xref.fetchIfRef(entry);
-      numFns++;
-
-      if ((0, _primitives.isName)(transferObj, "Identity")) {
-        transferMaps.push(null);
-        continue;
-      } else if (!(0, _function.isPDFFunction)(transferObj)) {
-        return null;
-      }
-
-      const transferFn = this._pdfFunctionFactory.create(transferObj);
-
-      const transferMap = new Uint8Array(256),
-            tmp = new Float32Array(1);
-
-      for (let j = 0; j < 256; j++) {
-        tmp[0] = j / 255;
-        transferFn(tmp, 0, tmp, 0);
-        transferMap[j] = tmp[0] * 255 | 0;
-      }
-
-      transferMaps.push(transferMap);
-      numEffectfulFns++;
-    }
-
-    if (!(numFns === 1 || numFns === 4)) {
-      return null;
-    }
-
-    if (numEffectfulFns === 0) {
-      return null;
-    }
-
-    return transferMaps;
-  }
-
-  handleTilingType(fn, color, resources, pattern, patternDict, operatorList, task, cacheKey, 
localTilingPatternCache) {
-    const tilingOpList = new _operator_list.OperatorList();
-
-    const patternResources = _primitives.Dict.merge({
-      xref: this.xref,
-      dictArray: [patternDict.get("Resources"), resources]
-    });
-
-    return this.getOperatorList({
-      stream: pattern,
-      task,
-      resources: patternResources,
-      operatorList: tilingOpList
-    }).then(function () {
-      const operatorListIR = tilingOpList.getIR();
-      const tilingPatternIR = (0, _pattern.getTilingPatternIR)(operatorListIR, patternDict, color);
-      operatorList.addDependencies(tilingOpList.dependencies);
-      operatorList.addOp(fn, tilingPatternIR);
-
-      if (cacheKey) {
-        localTilingPatternCache.set(cacheKey, patternDict.objId, {
-          operatorListIR,
-          dict: patternDict
-        });
-      }
-    }).catch(reason => {
-      if (reason instanceof _util.AbortException) {
-        return;
-      }
-
-      if (this.options.ignoreErrors) {
-        this.handler.send("UnsupportedFeature", {
-          featureId: _util.UNSUPPORTED_FEATURES.errorTilingPattern
-        });
-        (0, _util.warn)(`handleTilingType - ignoring pattern: "${reason}".`);
-        return;
-      }
-
-      throw reason;
-    });
-  }
-
-  handleSetFont(resources, fontArgs, fontRef, operatorList, task, state, fallbackFontDict = null, 
cssFontInfo = null) {
-    const fontName = fontArgs && fontArgs[0] instanceof _primitives.Name ? fontArgs[0].name : null;
-    return this.loadFont(fontName, fontRef, resources, fallbackFontDict, cssFontInfo).then(translated => {
-      if (!translated.font.isType3Font) {
-        return translated;
-      }
-
-      return translated.loadType3Data(this, resources, task).then(function () {
-        operatorList.addDependencies(translated.type3Dependencies);
-        return translated;
-      }).catch(reason => {
-        this.handler.send("UnsupportedFeature", {
-          featureId: _util.UNSUPPORTED_FEATURES.errorFontLoadType3
-        });
-        return new TranslatedFont({
-          loadedName: "g_font_error",
-          font: new _fonts.ErrorFont(`Type3 font load error: ${reason}`),
-          dict: translated.font,
-          evaluatorOptions: this.options
-        });
-      });
-    }).then(translated => {
-      state.font = translated.font;
-      translated.send(this.handler);
-      return translated.loadedName;
-    });
-  }
-
-  handleText(chars, state) {
-    const font = state.font;
-    const glyphs = font.charsToGlyphs(chars);
-
-    if (font.data) {
-      const isAddToPathSet = !!(state.textRenderingMode & _util.TextRenderingMode.ADD_TO_PATH_FLAG);
-
-      if (isAddToPathSet || state.fillColorSpace.name === "Pattern" || font.disableFontFace || 
this.options.disableFontFace) {
-        PartialEvaluator.buildFontPaths(font, glyphs, this.handler, this.options);
-      }
-    }
-
-    return glyphs;
-  }
-
-  ensureStateFont(state) {
-    if (state.font) {
-      return;
-    }
-
-    const reason = new _util.FormatError("Missing setFont (Tf) operator before text rendering operator.");
-
-    if (this.options.ignoreErrors) {
-      this.handler.send("UnsupportedFeature", {
-        featureId: _util.UNSUPPORTED_FEATURES.errorFontState
-      });
-      (0, _util.warn)(`ensureStateFont: "${reason}".`);
-      return;
-    }
-
-    throw reason;
-  }
-
-  async setGState({
-    resources,
-    gState,
-    operatorList,
-    cacheKey,
-    task,
-    stateManager,
-    localGStateCache,
-    localColorSpaceCache
-  }) {
-    const gStateRef = gState.objId;
-    let isSimpleGState = true;
-    const gStateObj = [];
-    const gStateKeys = gState.getKeys();
-    let promise = Promise.resolve();
-
-    for (let i = 0, ii = gStateKeys.length; i < ii; i++) {
-      const key = gStateKeys[i];
-      const value = gState.get(key);
-
-      switch (key) {
-        case "Type":
-          break;
-
-        case "LW":
-        case "LC":
-        case "LJ":
-        case "ML":
-        case "D":
-        case "RI":
-        case "FL":
-        case "CA":
-        case "ca":
-          gStateObj.push([key, value]);
-          break;
-
-        case "Font":
-          isSimpleGState = false;
-          promise = promise.then(() => {
-            return this.handleSetFont(resources, null, value[0], operatorList, task, 
stateManager.state).then(function (loadedName) {
-              operatorList.addDependency(loadedName);
-              gStateObj.push([key, [loadedName, value[1]]]);
-            });
-          });
-          break;
-
-        case "BM":
-          gStateObj.push([key, normalizeBlendMode(value)]);
-          break;
-
-        case "SMask":
-          if ((0, _primitives.isName)(value, "None")) {
-            gStateObj.push([key, false]);
-            break;
-          }
-
-          if ((0, _primitives.isDict)(value)) {
-            isSimpleGState = false;
-            promise = promise.then(() => {
-              return this.handleSMask(value, resources, operatorList, task, stateManager, 
localColorSpaceCache);
-            });
-            gStateObj.push([key, true]);
-          } else {
-            (0, _util.warn)("Unsupported SMask type");
-          }
-
-          break;
-
-        case "TR":
-          const transferMaps = this.handleTransferFunction(value);
-          gStateObj.push([key, transferMaps]);
-          break;
-
-        case "OP":
-        case "op":
-        case "OPM":
-        case "BG":
-        case "BG2":
-        case "UCR":
-        case "UCR2":
-        case "TR2":
-        case "HT":
-        case "SM":
-        case "SA":
-        case "AIS":
-        case "TK":
-          (0, _util.info)("graphic state operator " + key);
-          break;
-
-        default:
-          (0, _util.info)("Unknown graphic state operator " + key);
-          break;
-      }
-    }
-
-    return promise.then(function () {
-      if (gStateObj.length > 0) {
-        operatorList.addOp(_util.OPS.setGState, [gStateObj]);
-      }
-
-      if (isSimpleGState) {
-        localGStateCache.set(cacheKey, gStateRef, gStateObj);
-      }
-    });
-  }
-
-  loadFont(fontName, font, resources, fallbackFontDict = null, cssFontInfo = null) {
-    const errorFont = async () => {
-      return new TranslatedFont({
-        loadedName: "g_font_error",
-        font: new _fonts.ErrorFont(`Font "${fontName}" is not available.`),
-        dict: font,
-        evaluatorOptions: this.options
-      });
-    };
-
-    const xref = this.xref;
-    let fontRef;
-
-    if (font) {
-      if (!(0, _primitives.isRef)(font)) {
-        throw new _util.FormatError('The "font" object should be a reference.');
-      }
-
-      fontRef = font;
-    } else {
-      const fontRes = resources.get("Font");
-
-      if (fontRes) {
-        fontRef = fontRes.getRaw(fontName);
-      }
-    }
-
-    if (!fontRef) {
-      const partialMsg = `Font "${fontName || font && font.toString()}" is not available`;
-
-      if (!this.options.ignoreErrors && !this.parsingType3Font) {
-        (0, _util.warn)(`${partialMsg}.`);
-        return errorFont();
-      }
-
-      this.handler.send("UnsupportedFeature", {
-        featureId: _util.UNSUPPORTED_FEATURES.errorFontMissing
-      });
-      (0, _util.warn)(`${partialMsg} -- attempting to fallback to a default font.`);
-
-      if (fallbackFontDict) {
-        fontRef = fallbackFontDict;
-      } else {
-        fontRef = PartialEvaluator.fallbackFontDict;
-      }
-    }
-
-    if (this.fontCache.has(fontRef)) {
-      return this.fontCache.get(fontRef);
-    }
-
-    font = xref.fetchIfRef(fontRef);
-
-    if (!(0, _primitives.isDict)(font)) {
-      return errorFont();
-    }
-
-    if (font.cacheKey && this.fontCache.has(font.cacheKey)) {
-      return this.fontCache.get(font.cacheKey);
-    }
-
-    const fontCapability = (0, _util.createPromiseCapability)();
-    let preEvaluatedFont;
-
-    try {
-      preEvaluatedFont = this.preEvaluateFont(font);
-      preEvaluatedFont.cssFontInfo = cssFontInfo;
-    } catch (reason) {
-      (0, _util.warn)(`loadFont - preEvaluateFont failed: "${reason}".`);
-      return errorFont();
-    }
-
-    const {
-      descriptor,
-      hash
-    } = preEvaluatedFont;
-    const fontRefIsRef = (0, _primitives.isRef)(fontRef);
-    let fontID;
-
-    if (fontRefIsRef) {
-      fontID = `f${fontRef.toString()}`;
-    }
-
-    if (hash && (0, _primitives.isDict)(descriptor)) {
-      if (!descriptor.fontAliases) {
-        descriptor.fontAliases = Object.create(null);
-      }
-
-      const fontAliases = descriptor.fontAliases;
-
-      if (fontAliases[hash]) {
-        const aliasFontRef = fontAliases[hash].aliasRef;
-
-        if (fontRefIsRef && aliasFontRef && this.fontCache.has(aliasFontRef)) {
-          this.fontCache.putAlias(fontRef, aliasFontRef);
-          return this.fontCache.get(fontRef);
-        }
-      } else {
-        fontAliases[hash] = {
-          fontID: this.idFactory.createFontId()
-        };
-      }
-
-      if (fontRefIsRef) {
-        fontAliases[hash].aliasRef = fontRef;
-      }
-
-      fontID = fontAliases[hash].fontID;
-    }
-
-    if (fontRefIsRef) {
-      this.fontCache.put(fontRef, fontCapability.promise);
-    } else {
-      if (!fontID) {
-        fontID = this.idFactory.createFontId();
-      }
-
-      font.cacheKey = `cacheKey_${fontID}`;
-      this.fontCache.put(font.cacheKey, fontCapability.promise);
-    }
-
-    (0, _util.assert)(fontID && fontID.startsWith("f"), 'The "fontID" must be (correctly) defined.');
-    font.loadedName = `${this.idFactory.getDocId()}_${fontID}`;
-    this.translateFont(preEvaluatedFont).then(translatedFont => {
-      if (translatedFont.fontType !== undefined) {
-        const xrefFontStats = xref.stats.fontTypes;
-        xrefFontStats[translatedFont.fontType] = true;
-      }
-
-      fontCapability.resolve(new TranslatedFont({
-        loadedName: font.loadedName,
-        font: translatedFont,
-        dict: font,
-        evaluatorOptions: this.options
-      }));
-    }).catch(reason => {
-      this.handler.send("UnsupportedFeature", {
-        featureId: _util.UNSUPPORTED_FEATURES.errorFontTranslate
-      });
-      (0, _util.warn)(`loadFont - translateFont failed: "${reason}".`);
-
-      try {
-        const fontFile3 = descriptor && descriptor.get("FontFile3");
-        const subtype = fontFile3 && fontFile3.get("Subtype");
-        const fontType = (0, _fonts_utils.getFontType)(preEvaluatedFont.type, subtype && subtype.name);
-        const xrefFontStats = xref.stats.fontTypes;
-        xrefFontStats[fontType] = true;
-      } catch (ex) {}
-
-      fontCapability.resolve(new TranslatedFont({
-        loadedName: font.loadedName,
-        font: new _fonts.ErrorFont(reason instanceof Error ? reason.message : reason),
-        dict: font,
-        evaluatorOptions: this.options
-      }));
-    });
-    return fontCapability.promise;
-  }
-
-  buildPath(operatorList, fn, args, parsingText = false) {
-    const lastIndex = operatorList.length - 1;
-
-    if (!args) {
-      args = [];
-    }
-
-    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]);
-
-      if (parsingText) {
-        operatorList.addOp(_util.OPS.restore, null);
-      }
-    } else {
-      const opArgs = operatorList.argsArray[lastIndex];
-      opArgs[0].push(fn);
-      Array.prototype.push.apply(opArgs[1], args);
-    }
-  }
-
-  parseColorSpace({
-    cs,
-    resources,
-    localColorSpaceCache
-  }) {
-    return _colorspace.ColorSpace.parseAsync({
-      cs,
-      xref: this.xref,
-      resources,
-      pdfFunctionFactory: this._pdfFunctionFactory,
-      localColorSpaceCache
-    }).catch(reason => {
-      if (reason instanceof _util.AbortException) {
-        return null;
-      }
-
-      if (this.options.ignoreErrors) {
-        this.handler.send("UnsupportedFeature", {
-          featureId: _util.UNSUPPORTED_FEATURES.errorColorSpace
-        });
-        (0, _util.warn)(`parseColorSpace - ignoring ColorSpace: "${reason}".`);
-        return null;
-      }
-
-      throw reason;
-    });
-  }
-
-  parseShading({
-    keyObj,
-    shading,
-    resources,
-    localColorSpaceCache,
-    localShadingPatternCache,
-    matrix = null
-  }) {
-    let id = localShadingPatternCache.get(keyObj);
-
-    if (!id) {
-      var shadingFill = _pattern.Pattern.parseShading(shading, matrix, this.xref, resources, this.handler, 
this._pdfFunctionFactory, localColorSpaceCache);
-
-      const patternIR = shadingFill.getIR();
-      id = `pattern_${this.idFactory.createObjId()}`;
-      localShadingPatternCache.set(keyObj, id);
-      this.handler.send("obj", [id, this.pageIndex, "Pattern", patternIR]);
-    }
-
-    return id;
-  }
-
-  handleColorN(operatorList, fn, args, cs, patterns, resources, task, localColorSpaceCache, 
localTilingPatternCache, localShadingPatternCache) {
-    const patternName = args.pop();
-
-    if (patternName instanceof _primitives.Name) {
-      const name = patternName.name;
-      const localTilingPattern = localTilingPatternCache.getByName(name);
-
-      if (localTilingPattern) {
-        try {
-          const color = cs.base ? cs.base.getRgb(args, 0) : null;
-          const tilingPatternIR = (0, _pattern.getTilingPatternIR)(localTilingPattern.operatorListIR, 
localTilingPattern.dict, color);
-          operatorList.addOp(fn, tilingPatternIR);
-          return undefined;
-        } catch (ex) {}
-      }
-
-      const pattern = patterns.get(name);
-
-      if (pattern) {
-        const dict = (0, _primitives.isStream)(pattern) ? pattern.dict : pattern;
-        const typeNum = dict.get("PatternType");
-
-        if (typeNum === PatternType.TILING) {
-          const color = cs.base ? cs.base.getRgb(args, 0) : null;
-          return this.handleTilingType(fn, color, resources, pattern, dict, operatorList, task, name, 
localTilingPatternCache);
-        } else if (typeNum === PatternType.SHADING) {
-          const shading = dict.get("Shading");
-          const matrix = dict.getArray("Matrix");
-          const objId = this.parseShading({
-            keyObj: pattern,
-            shading,
-            matrix,
-            resources,
-            localColorSpaceCache,
-            localShadingPatternCache
-          });
-          operatorList.addOp(fn, ["Shading", objId]);
-          return undefined;
-        }
-
-        throw new _util.FormatError(`Unknown PatternType: ${typeNum}`);
-      }
-    }
-
-    throw new _util.FormatError(`Unknown PatternName: ${patternName}`);
-  }
-
-  _parseVisibilityExpression(array, nestingCounter, currentResult) {
-    const MAX_NESTING = 10;
-
-    if (++nestingCounter > MAX_NESTING) {
-      (0, _util.warn)("Visibility expression is too deeply nested");
-      return;
-    }
-
-    const length = array.length;
-    const operator = this.xref.fetchIfRef(array[0]);
-
-    if (length < 2 || !(0, _primitives.isName)(operator)) {
-      (0, _util.warn)("Invalid visibility expression");
-      return;
-    }
-
-    switch (operator.name) {
-      case "And":
-      case "Or":
-      case "Not":
-        currentResult.push(operator.name);
-        break;
-
-      default:
-        (0, _util.warn)(`Invalid operator ${operator.name} in visibility expression`);
-        return;
-    }
-
-    for (let i = 1; i < length; i++) {
-      const raw = array[i];
-      const object = this.xref.fetchIfRef(raw);
-
-      if (Array.isArray(object)) {
-        const nestedResult = [];
-        currentResult.push(nestedResult);
-
-        this._parseVisibilityExpression(object, nestingCounter, nestedResult);
-      } else if ((0, _primitives.isRef)(raw)) {
-        currentResult.push(raw.toString());
-      }
-    }
-  }
-
-  async parseMarkedContentProps(contentProperties, resources) {
-    let optionalContent;
-
-    if ((0, _primitives.isName)(contentProperties)) {
-      const properties = resources.get("Properties");
-      optionalContent = properties.get(contentProperties.name);
-    } else if ((0, _primitives.isDict)(contentProperties)) {
-      optionalContent = contentProperties;
-    } else {
-      throw new _util.FormatError("Optional content properties malformed.");
-    }
-
-    const optionalContentType = optionalContent.get("Type").name;
-
-    if (optionalContentType === "OCG") {
-      return {
-        type: optionalContentType,
-        id: optionalContent.objId
-      };
-    } else if (optionalContentType === "OCMD") {
-      const expression = optionalContent.get("VE");
-
-      if (Array.isArray(expression)) {
-        const result = [];
-
-        this._parseVisibilityExpression(expression, 0, result);
-
-        if (result.length > 0) {
-          return {
-            type: "OCMD",
-            expression: result
-          };
-        }
-      }
-
-      const optionalContentGroups = optionalContent.get("OCGs");
-
-      if (Array.isArray(optionalContentGroups) || (0, _primitives.isDict)(optionalContentGroups)) {
-        const groupIds = [];
-
-        if (Array.isArray(optionalContentGroups)) {
-          for (const ocg of optionalContentGroups) {
-            groupIds.push(ocg.toString());
-          }
-        } else {
-          groupIds.push(optionalContentGroups.objId);
-        }
-
-        return {
-          type: optionalContentType,
-          ids: groupIds,
-          policy: (0, _primitives.isName)(optionalContent.get("P")) ? optionalContent.get("P").name : null,
-          expression: null
-        };
-      } else if ((0, _primitives.isRef)(optionalContentGroups)) {
-        return {
-          type: optionalContentType,
-          id: optionalContentGroups.toString()
-        };
-      }
-    }
-
-    return null;
-  }
-
-  getOperatorList({
-    stream,
-    task,
-    resources,
-    operatorList,
-    initialState = null,
-    fallbackFontDict = null
-  }) {
-    resources = resources || _primitives.Dict.empty;
-    initialState = initialState || new EvalState();
-
-    if (!operatorList) {
-      throw new Error('getOperatorList: missing "operatorList" parameter');
-    }
-
-    const self = this;
-    const xref = this.xref;
-    let parsingText = false;
-    const localImageCache = new _image_utils.LocalImageCache();
-    const localColorSpaceCache = new _image_utils.LocalColorSpaceCache();
-    const localGStateCache = new _image_utils.LocalGStateCache();
-    const localTilingPatternCache = new _image_utils.LocalTilingPatternCache();
-    const localShadingPatternCache = new Map();
-
-    const xobjs = resources.get("XObject") || _primitives.Dict.empty;
-
-    const patterns = resources.get("Pattern") || _primitives.Dict.empty;
-
-    const stateManager = new StateManager(initialState);
-    const preprocessor = new EvaluatorPreprocessor(stream, xref, stateManager);
-    const timeSlotManager = new TimeSlotManager();
-
-    function closePendingRestoreOPS(argument) {
-      for (let i = 0, ii = preprocessor.savedStatesDepth; i < ii; i++) {
-        operatorList.addOp(_util.OPS.restore, []);
-      }
-    }
-
-    return new Promise(function promiseBody(resolve, reject) {
-      const next = function (promise) {
-        Promise.all([promise, operatorList.ready]).then(function () {
-          try {
-            promiseBody(resolve, reject);
-          } catch (ex) {
-            reject(ex);
-          }
-        }, reject);
-      };
-
-      task.ensureNotTerminated();
-      timeSlotManager.reset();
-      const operation = {};
-      let stop, i, ii, cs, name, isValidName;
-
-      while (!(stop = timeSlotManager.check())) {
-        operation.args = null;
-
-        if (!preprocessor.read(operation)) {
-          break;
-        }
-
-        let args = operation.args;
-        let fn = operation.fn;
-
-        switch (fn | 0) {
-          case _util.OPS.paintXObject:
-            isValidName = args[0] instanceof _primitives.Name;
-            name = args[0].name;
-
-            if (isValidName) {
-              const localImage = localImageCache.getByName(name);
-
-              if (localImage) {
-                operatorList.addOp(localImage.fn, localImage.args);
-                args = null;
-                continue;
-              }
-            }
-
-            next(new Promise(function (resolveXObject, rejectXObject) {
-              if (!isValidName) {
-                throw new _util.FormatError("XObject must be referred to by name.");
-              }
-
-              let xobj = xobjs.getRaw(name);
-
-              if (xobj instanceof _primitives.Ref) {
-                const localImage = localImageCache.getByRef(xobj);
-
-                if (localImage) {
-                  operatorList.addOp(localImage.fn, localImage.args);
-                  resolveXObject();
-                  return;
-                }
-
-                const globalImage = self.globalImageCache.getData(xobj, self.pageIndex);
-
-                if (globalImage) {
-                  operatorList.addDependency(globalImage.objId);
-                  operatorList.addOp(globalImage.fn, globalImage.args);
-                  resolveXObject();
-                  return;
-                }
-
-                xobj = xref.fetch(xobj);
-              }
-
-              if (!(0, _primitives.isStream)(xobj)) {
-                throw new _util.FormatError("XObject should be a stream");
-              }
-
-              const type = xobj.dict.get("Subtype");
-
-              if (!(0, _primitives.isName)(type)) {
-                throw new _util.FormatError("XObject should have a Name subtype");
-              }
-
-              if (type.name === "Form") {
-                stateManager.save();
-                self.buildFormXObject(resources, xobj, null, operatorList, task, stateManager.state.clone(), 
localColorSpaceCache).then(function () {
-                  stateManager.restore();
-                  resolveXObject();
-                }, rejectXObject);
-                return;
-              } else if (type.name === "Image") {
-                self.buildPaintImageXObject({
-                  resources,
-                  image: xobj,
-                  operatorList,
-                  cacheKey: name,
-                  localImageCache,
-                  localColorSpaceCache
-                }).then(resolveXObject, rejectXObject);
-                return;
-              } else if (type.name === "PS") {
-                (0, _util.info)("Ignored XObject subtype PS");
-              } else {
-                throw new _util.FormatError(`Unhandled XObject subtype ${type.name}`);
-              }
-
-              resolveXObject();
-            }).catch(function (reason) {
-              if (reason instanceof _util.AbortException) {
-                return;
-              }
-
-              if (self.options.ignoreErrors) {
-                self.handler.send("UnsupportedFeature", {
-                  featureId: _util.UNSUPPORTED_FEATURES.errorXObject
-                });
-                (0, _util.warn)(`getOperatorList - ignoring XObject: "${reason}".`);
-                return;
-              }
-
-              throw reason;
-            }));
-            return;
-
-          case _util.OPS.setFont:
-            var fontSize = args[1];
-            next(self.handleSetFont(resources, args, null, operatorList, task, stateManager.state, 
fallbackFontDict).then(function (loadedName) {
-              operatorList.addDependency(loadedName);
-              operatorList.addOp(_util.OPS.setFont, [loadedName, fontSize]);
-            }));
-            return;
-
-          case _util.OPS.beginText:
-            parsingText = true;
-            break;
-
-          case _util.OPS.endText:
-            parsingText = false;
-            break;
-
-          case _util.OPS.endInlineImage:
-            var cacheKey = args[0].cacheKey;
-
-            if (cacheKey) {
-              const localImage = localImageCache.getByName(cacheKey);
-
-              if (localImage) {
-                operatorList.addOp(localImage.fn, localImage.args);
-                args = null;
-                continue;
-              }
-            }
-
-            next(self.buildPaintImageXObject({
-              resources,
-              image: args[0],
-              isInline: true,
-              operatorList,
-              cacheKey,
-              localImageCache,
-              localColorSpaceCache
-            }));
-            return;
-
-          case _util.OPS.showText:
-            if (!stateManager.state.font) {
-              self.ensureStateFont(stateManager.state);
-              continue;
-            }
-
-            args[0] = self.handleText(args[0], stateManager.state);
-            break;
-
-          case _util.OPS.showSpacedText:
-            if (!stateManager.state.font) {
-              self.ensureStateFont(stateManager.state);
-              continue;
-            }
-
-            var arr = args[0];
-            var combinedGlyphs = [];
-            var arrLength = arr.length;
-            var state = stateManager.state;
-
-            for (i = 0; i < arrLength; ++i) {
-              const arrItem = arr[i];
-
-              if ((0, _util.isString)(arrItem)) {
-                Array.prototype.push.apply(combinedGlyphs, self.handleText(arrItem, state));
-              } else if ((0, _util.isNum)(arrItem)) {
-                combinedGlyphs.push(arrItem);
-              }
-            }
-
-            args[0] = combinedGlyphs;
-            fn = _util.OPS.showText;
-            break;
-
-          case _util.OPS.nextLineShowText:
-            if (!stateManager.state.font) {
-              self.ensureStateFont(stateManager.state);
-              continue;
-            }
-
-            operatorList.addOp(_util.OPS.nextLine);
-            args[0] = self.handleText(args[0], stateManager.state);
-            fn = _util.OPS.showText;
-            break;
-
-          case _util.OPS.nextLineSetSpacingShowText:
-            if (!stateManager.state.font) {
-              self.ensureStateFont(stateManager.state);
-              continue;
-            }
-
-            operatorList.addOp(_util.OPS.nextLine);
-            operatorList.addOp(_util.OPS.setWordSpacing, [args.shift()]);
-            operatorList.addOp(_util.OPS.setCharSpacing, [args.shift()]);
-            args[0] = self.handleText(args[0], stateManager.state);
-            fn = _util.OPS.showText;
-            break;
-
-          case _util.OPS.setTextRenderingMode:
-            stateManager.state.textRenderingMode = args[0];
-            break;
-
-          case _util.OPS.setFillColorSpace:
-            {
-              const cachedColorSpace = _colorspace.ColorSpace.getCached(args[0], xref, localColorSpaceCache);
-
-              if (cachedColorSpace) {
-                stateManager.state.fillColorSpace = cachedColorSpace;
-                continue;
-              }
-
-              next(self.parseColorSpace({
-                cs: args[0],
-                resources,
-                localColorSpaceCache
-              }).then(function (colorSpace) {
-                if (colorSpace) {
-                  stateManager.state.fillColorSpace = colorSpace;
-                }
-              }));
-              return;
-            }
-
-          case _util.OPS.setStrokeColorSpace:
-            {
-              const cachedColorSpace = _colorspace.ColorSpace.getCached(args[0], xref, localColorSpaceCache);
-
-              if (cachedColorSpace) {
-                stateManager.state.strokeColorSpace = cachedColorSpace;
-                continue;
-              }
-
-              next(self.parseColorSpace({
-                cs: args[0],
-                resources,
-                localColorSpaceCache
-              }).then(function (colorSpace) {
-                if (colorSpace) {
-                  stateManager.state.strokeColorSpace = colorSpace;
-                }
-              }));
-              return;
-            }
-
-          case _util.OPS.setFillColor:
-            cs = stateManager.state.fillColorSpace;
-            args = cs.getRgb(args, 0);
-            fn = _util.OPS.setFillRGBColor;
-            break;
-
-          case _util.OPS.setStrokeColor:
-            cs = stateManager.state.strokeColorSpace;
-            args = cs.getRgb(args, 0);
-            fn = _util.OPS.setStrokeRGBColor;
-            break;
-
-          case _util.OPS.setFillGray:
-            stateManager.state.fillColorSpace = _colorspace.ColorSpace.singletons.gray;
-            args = _colorspace.ColorSpace.singletons.gray.getRgb(args, 0);
-            fn = _util.OPS.setFillRGBColor;
-            break;
-
-          case _util.OPS.setStrokeGray:
-            stateManager.state.strokeColorSpace = _colorspace.ColorSpace.singletons.gray;
-            args = _colorspace.ColorSpace.singletons.gray.getRgb(args, 0);
-            fn = _util.OPS.setStrokeRGBColor;
-            break;
-
-          case _util.OPS.setFillCMYKColor:
-            stateManager.state.fillColorSpace = _colorspace.ColorSpace.singletons.cmyk;
-            args = _colorspace.ColorSpace.singletons.cmyk.getRgb(args, 0);
-            fn = _util.OPS.setFillRGBColor;
-            break;
-
-          case _util.OPS.setStrokeCMYKColor:
-            stateManager.state.strokeColorSpace = _colorspace.ColorSpace.singletons.cmyk;
-            args = _colorspace.ColorSpace.singletons.cmyk.getRgb(args, 0);
-            fn = _util.OPS.setStrokeRGBColor;
-            break;
-
-          case _util.OPS.setFillRGBColor:
-            stateManager.state.fillColorSpace = _colorspace.ColorSpace.singletons.rgb;
-            args = _colorspace.ColorSpace.singletons.rgb.getRgb(args, 0);
-            break;
-
-          case _util.OPS.setStrokeRGBColor:
-            stateManager.state.strokeColorSpace = _colorspace.ColorSpace.singletons.rgb;
-            args = _colorspace.ColorSpace.singletons.rgb.getRgb(args, 0);
-            break;
-
-          case _util.OPS.setFillColorN:
-            cs = stateManager.state.fillColorSpace;
-
-            if (cs.name === "Pattern") {
-              next(self.handleColorN(operatorList, _util.OPS.setFillColorN, args, cs, patterns, resources, 
task, localColorSpaceCache, localTilingPatternCache, localShadingPatternCache));
-              return;
-            }
-
-            args = cs.getRgb(args, 0);
-            fn = _util.OPS.setFillRGBColor;
-            break;
-
-          case _util.OPS.setStrokeColorN:
-            cs = stateManager.state.strokeColorSpace;
-
-            if (cs.name === "Pattern") {
-              next(self.handleColorN(operatorList, _util.OPS.setStrokeColorN, args, cs, patterns, resources, 
task, localColorSpaceCache, localTilingPatternCache, localShadingPatternCache));
-              return;
-            }
-
-            args = cs.getRgb(args, 0);
-            fn = _util.OPS.setStrokeRGBColor;
-            break;
-
-          case _util.OPS.shadingFill:
-            var shadingRes = resources.get("Shading");
-
-            if (!shadingRes) {
-              throw new _util.FormatError("No shading resource found");
-            }
-
-            var shading = shadingRes.get(args[0].name);
-
-            if (!shading) {
-              throw new _util.FormatError("No shading object found");
-            }
-
-            const patternId = self.parseShading({
-              keyObj: shading,
-              shading,
-              resources,
-              localColorSpaceCache,
-              localShadingPatternCache
-            });
-            args = [patternId];
-            fn = _util.OPS.shadingFill;
-            break;
-
-          case _util.OPS.setGState:
-            isValidName = args[0] instanceof _primitives.Name;
-            name = args[0].name;
-
-            if (isValidName) {
-              const localGStateObj = localGStateCache.getByName(name);
-
-              if (localGStateObj) {
-                if (localGStateObj.length > 0) {
-                  operatorList.addOp(_util.OPS.setGState, [localGStateObj]);
-                }
-
-                args = null;
-                continue;
-              }
-            }
-
-            next(new Promise(function (resolveGState, rejectGState) {
-              if (!isValidName) {
-                throw new _util.FormatError("GState must be referred to by name.");
-              }
-
-              const extGState = resources.get("ExtGState");
-
-              if (!(extGState instanceof _primitives.Dict)) {
-                throw new _util.FormatError("ExtGState should be a dictionary.");
-              }
-
-              const gState = extGState.get(name);
-
-              if (!(gState instanceof _primitives.Dict)) {
-                throw new _util.FormatError("GState should be a dictionary.");
-              }
-
-              self.setGState({
-                resources,
-                gState,
-                operatorList,
-                cacheKey: name,
-                task,
-                stateManager,
-                localGStateCache,
-                localColorSpaceCache
-              }).then(resolveGState, rejectGState);
-            }).catch(function (reason) {
-              if (reason instanceof _util.AbortException) {
-                return;
-              }
-
-              if (self.options.ignoreErrors) {
-                self.handler.send("UnsupportedFeature", {
-                  featureId: _util.UNSUPPORTED_FEATURES.errorExtGState
-                });
-                (0, _util.warn)(`getOperatorList - ignoring ExtGState: "${reason}".`);
-                return;
-              }
-
-              throw reason;
-            }));
-            return;
-
-          case _util.OPS.moveTo:
-          case _util.OPS.lineTo:
-          case _util.OPS.curveTo:
-          case _util.OPS.curveTo2:
-          case _util.OPS.curveTo3:
-          case _util.OPS.closePath:
-          case _util.OPS.rectangle:
-            self.buildPath(operatorList, fn, args, parsingText);
-            continue;
-
-          case _util.OPS.markPoint:
-          case _util.OPS.markPointProps:
-          case _util.OPS.beginCompat:
-          case _util.OPS.endCompat:
-            continue;
-
-          case _util.OPS.beginMarkedContentProps:
-            if (!(0, _primitives.isName)(args[0])) {
-              (0, _util.warn)(`Expected name for beginMarkedContentProps arg0=${args[0]}`);
-              continue;
-            }
-
-            if (args[0].name === "OC") {
-              next(self.parseMarkedContentProps(args[1], resources).then(data => {
-                operatorList.addOp(_util.OPS.beginMarkedContentProps, ["OC", data]);
-              }).catch(reason => {
-                if (reason instanceof _util.AbortException) {
-                  return;
-                }
-
-                if (self.options.ignoreErrors) {
-                  self.handler.send("UnsupportedFeature", {
-                    featureId: _util.UNSUPPORTED_FEATURES.errorMarkedContent
-                  });
-                  (0, _util.warn)(`getOperatorList - ignoring beginMarkedContentProps: "${reason}".`);
-                  return;
-                }
-
-                throw reason;
-              }));
-              return;
-            }
-
-            args = [args[0].name, args[1] instanceof _primitives.Dict ? args[1].get("MCID") : null];
-            break;
-
-          case _util.OPS.beginMarkedContent:
-          case _util.OPS.endMarkedContent:
-          default:
-            if (args !== null) {
-              for (i = 0, ii = args.length; i < ii; i++) {
-                if (args[i] instanceof _primitives.Dict) {
-                  break;
-                }
-              }
-
-              if (i < ii) {
-                (0, _util.warn)("getOperatorList - ignoring operator: " + fn);
-                continue;
-              }
-            }
-
-        }
-
-        operatorList.addOp(fn, args);
-      }
-
-      if (stop) {
-        next(deferred);
-        return;
-      }
-
-      closePendingRestoreOPS();
-      resolve();
-    }).catch(reason => {
-      if (reason instanceof _util.AbortException) {
-        return;
-      }
-
-      if (this.options.ignoreErrors) {
-        this.handler.send("UnsupportedFeature", {
-          featureId: _util.UNSUPPORTED_FEATURES.errorOperatorList
-        });
-        (0, _util.warn)(`getOperatorList - ignoring errors during "${task.name}" ` + `task: "${reason}".`);
-        closePendingRestoreOPS();
-        return;
-      }
-
-      throw reason;
-    });
-  }
-
-  getTextContent({
-    stream,
-    task,
-    resources,
-    stateManager = null,
-    normalizeWhitespace = false,
-    combineTextItems = false,
-    includeMarkedContent = false,
-    sink,
-    seenStyles = new Set()
-  }) {
-    resources = resources || _primitives.Dict.empty;
-    stateManager = stateManager || new StateManager(new TextState());
-    const WhitespaceRegexp = /\s/g;
-    const textContent = {
-      items: [],
-      styles: Object.create(null)
-    };
-    const textContentItem = {
-      initialized: false,
-      str: [],
-      totalWidth: 0,
-      totalHeight: 0,
-      width: 0,
-      height: 0,
-      vertical: false,
-      lastCharSize: 0,
-      prevTransform: null,
-      textAdvanceScale: 0,
-      spaceWidth: 0,
-      spaceInFlowMin: 0,
-      spaceInFlowMax: 0,
-      trackingSpaceMin: Infinity,
-      transform: null,
-      fontName: null,
-      hasEOL: false,
-      isLastCharWhiteSpace: false
-    };
-    const TRACKING_SPACE_FACTOR = 0.3;
-    const SPACE_IN_FLOW_MIN_FACTOR = 0.3;
-    const SPACE_IN_FLOW_MAX_FACTOR = 1.3;
-    const self = this;
-    const xref = this.xref;
-    const showSpacedTextBuffer = [];
-    let xobjs = null;
-    const emptyXObjectCache = new _image_utils.LocalImageCache();
-    const emptyGStateCache = new _image_utils.LocalGStateCache();
-    const preprocessor = new EvaluatorPreprocessor(stream, xref, stateManager);
-    let textState;
-
-    function getCurrentTextTransform() {
-      const font = textState.font;
-      const tsm = [textState.fontSize * textState.textHScale, 0, 0, textState.fontSize, 0, 
textState.textRise];
-
-      if (font.isType3Font && (textState.fontSize <= 1 || font.isCharBBox) && !(0, 
_util.isArrayEqual)(textState.fontMatrix, _util.FONT_IDENTITY_MATRIX)) {
-        const glyphHeight = font.bbox[3] - font.bbox[1];
-
-        if (glyphHeight > 0) {
-          tsm[3] *= glyphHeight * textState.fontMatrix[3];
-        }
-      }
-
-      return _util.Util.transform(textState.ctm, _util.Util.transform(textState.textMatrix, tsm));
-    }
-
-    function ensureTextContentItem() {
-      if (textContentItem.initialized) {
-        return textContentItem;
-      }
-
-      const font = textState.font,
-            loadedName = font.loadedName;
-
-      if (!seenStyles.has(loadedName)) {
-        seenStyles.add(loadedName);
-        textContent.styles[loadedName] = {
-          fontFamily: font.fallbackName,
-          ascent: font.ascent,
-          descent: font.descent,
-          vertical: font.vertical
-        };
-      }
-
-      textContentItem.fontName = loadedName;
-      const trm = textContentItem.transform = getCurrentTextTransform();
-
-      if (!font.vertical) {
-        textContentItem.width = textContentItem.totalWidth = 0;
-        textContentItem.height = textContentItem.totalHeight = Math.hypot(trm[2], trm[3]);
-        textContentItem.vertical = false;
-      } else {
-        textContentItem.width = textContentItem.totalWidth = Math.hypot(trm[0], trm[1]);
-        textContentItem.height = textContentItem.totalHeight = 0;
-        textContentItem.vertical = true;
-      }
-
-      const scaleLineX = Math.hypot(textState.textLineMatrix[0], textState.textLineMatrix[1]);
-      const scaleCtmX = Math.hypot(textState.ctm[0], textState.ctm[1]);
-      textContentItem.textAdvanceScale = scaleCtmX * scaleLineX;
-      textContentItem.lastCharSize = textContentItem.lastCharSize || 0;
-      const spaceWidth = font.spaceWidth / 1000 * textState.fontSize;
-
-      if (spaceWidth) {
-        textContentItem.spaceWidth = spaceWidth;
-        textContentItem.trackingSpaceMin = spaceWidth * TRACKING_SPACE_FACTOR;
-        textContentItem.spaceInFlowMin = spaceWidth * SPACE_IN_FLOW_MIN_FACTOR;
-        textContentItem.spaceInFlowMax = spaceWidth * SPACE_IN_FLOW_MAX_FACTOR;
-      } else {
-        textContentItem.spaceWidth = 0;
-        textContentItem.trackingSpaceMin = Infinity;
-      }
-
-      textContentItem.hasEOL = false;
-      textContentItem.initialized = true;
-      return textContentItem;
-    }
-
-    function updateAdvanceScale() {
-      if (!textContentItem.initialized) {
-        return;
-      }
-
-      const scaleLineX = Math.hypot(textState.textLineMatrix[0], textState.textLineMatrix[1]);
-      const scaleCtmX = Math.hypot(textState.ctm[0], textState.ctm[1]);
-      const scaleFactor = scaleCtmX * scaleLineX;
-
-      if (scaleFactor === textContentItem.textAdvanceScale) {
-        return;
-      }
-
-      if (!textContentItem.vertical) {
-        textContentItem.totalWidth += textContentItem.width * textContentItem.textAdvanceScale;
-        textContentItem.width = 0;
-      } else {
-        textContentItem.totalHeight += textContentItem.height * textContentItem.textAdvanceScale;
-        textContentItem.height = 0;
-      }
-
-      textContentItem.textAdvanceScale = scaleFactor;
-    }
-
-    function replaceWhitespace(str) {
-      const ii = str.length;
-      let i = 0,
-          code;
-
-      while (i < ii && (code = str.charCodeAt(i)) >= 0x20 && code <= 0x7f) {
-        i++;
-      }
-
-      return i < ii ? str.replace(WhitespaceRegexp, " ") : str;
-    }
-
-    function runBidiTransform(textChunk) {
-      const text = textChunk.str.join("");
-      const bidiResult = (0, _bidi.bidi)(text, -1, textChunk.vertical);
-      const str = normalizeWhitespace ? replaceWhitespace(bidiResult.str) : bidiResult.str;
-      return {
-        str,
-        dir: bidiResult.dir,
-        width: textChunk.totalWidth,
-        height: textChunk.totalHeight,
-        transform: textChunk.transform,
-        fontName: textChunk.fontName,
-        hasEOL: textChunk.hasEOL
-      };
-    }
-
-    function handleSetFont(fontName, fontRef) {
-      return self.loadFont(fontName, fontRef, resources).then(function (translated) {
-        if (!translated.font.isType3Font) {
-          return translated;
-        }
-
-        return translated.loadType3Data(self, resources, task).catch(function () {}).then(function () {
-          return translated;
-        });
-      }).then(function (translated) {
-        textState.font = translated.font;
-        textState.fontMatrix = translated.font.fontMatrix || _util.FONT_IDENTITY_MATRIX;
-      });
-    }
-
-    function compareWithLastPosition(fontSize) {
-      if (!combineTextItems || !textState.font || !textContentItem.prevTransform) {
-        return;
-      }
-
-      const currentTransform = getCurrentTextTransform();
-      const posX = currentTransform[4];
-      const posY = currentTransform[5];
-      const lastPosX = textContentItem.prevTransform[4];
-      const lastPosY = textContentItem.prevTransform[5];
-
-      if (lastPosX === posX && lastPosY === posY) {
-        return;
-      }
-
-      const advanceX = (posX - lastPosX) / textContentItem.textAdvanceScale;
-      const advanceY = (posY - lastPosY) / textContentItem.textAdvanceScale;
-      const HALF_LAST_CHAR = -0.5 * textContentItem.lastCharSize;
-
-      if (textState.font.vertical) {
-        if (Math.abs(advanceX) > textContentItem.width / textContentItem.textAdvanceScale) {
-          appendEOL();
-          return;
-        }
-
-        if (HALF_LAST_CHAR > advanceY) {
-          return;
-        }
-
-        if (advanceY > textContentItem.trackingSpaceMin) {
-          textContentItem.height += advanceY;
-        } else if (!addFakeSpaces(advanceY, 0, textContentItem.prevTransform)) {
-          if (textContentItem.str.length === 0) {
-            textContent.items.push({
-              str: " ",
-              dir: "ltr",
-              width: 0,
-              height: advanceY,
-              transform: textContentItem.prevTransform,
-              fontName: textContentItem.fontName,
-              hasEOL: false
-            });
-            textContentItem.isLastCharWhiteSpace = true;
-          } else {
-            textContentItem.height += advanceY;
-          }
-        }
-
-        return;
-      }
-
-      if (Math.abs(advanceY) > textContentItem.height / textContentItem.textAdvanceScale) {
-        appendEOL();
-        return;
-      }
-
-      if (HALF_LAST_CHAR > advanceX) {
-        return;
-      }
-
-      if (advanceX <= textContentItem.trackingSpaceMin) {
-        textContentItem.width += advanceX;
-      } else if (!addFakeSpaces(advanceX, 0, textContentItem.prevTransform)) {
-        if (textContentItem.str.length === 0) {
-          textContent.items.push({
-            str: " ",
-            dir: "ltr",
-            width: advanceX,
-            height: 0,
-            transform: textContentItem.prevTransform,
-            fontName: textContentItem.fontName,
-            hasEOL: false
-          });
-          textContentItem.isLastCharWhiteSpace = true;
-        } else {
-          textContentItem.width += advanceX;
-        }
-      }
-    }
-
-    function buildTextContentItem({
-      chars,
-      extraSpacing,
-      isFirstChunk
-    }) {
-      const font = textState.font;
-
-      if (!chars) {
-        const charSpacing = textState.charSpacing + extraSpacing;
-
-        if (charSpacing) {
-          if (!font.vertical) {
-            textState.translateTextMatrix(charSpacing * textState.textHScale, 0);
-          } else {
-            textState.translateTextMatrix(0, charSpacing);
-          }
-        }
-
-        return;
-      }
-
-      const NormalizedUnicodes = (0, _unicode.getNormalizedUnicodes)();
-      const glyphs = font.charsToGlyphs(chars);
-      const scale = textState.fontMatrix[0] * textState.fontSize;
-
-      if (isFirstChunk) {
-        compareWithLastPosition(scale);
-      }
-
-      let textChunk = ensureTextContentItem();
-      let size = 0;
-      let lastCharSize = 0;
-
-      for (let i = 0, ii = glyphs.length; i < ii; i++) {
-        const glyph = glyphs[i];
-        let charSpacing = textState.charSpacing + (i === ii - 1 ? extraSpacing : 0);
-        let glyphUnicode = glyph.unicode;
-
-        if (glyph.isSpace) {
-          charSpacing += textState.wordSpacing;
-          textChunk.isLastCharWhiteSpace = true;
-        } else {
-          glyphUnicode = NormalizedUnicodes[glyphUnicode] || glyphUnicode;
-          glyphUnicode = (0, _unicode.reverseIfRtl)(glyphUnicode);
-          textChunk.isLastCharWhiteSpace = false;
-        }
-
-        textChunk.str.push(glyphUnicode);
-        const glyphWidth = font.vertical && glyph.vmetric ? glyph.vmetric[0] : glyph.width;
-        let scaledDim = glyphWidth * scale;
-
-        if (!font.vertical) {
-          scaledDim *= textState.textHScale;
-          textState.translateTextMatrix(scaledDim, 0);
-        } else {
-          textState.translateTextMatrix(0, scaledDim);
-          scaledDim = Math.abs(scaledDim);
-        }
-
-        size += scaledDim;
-
-        if (charSpacing) {
-          if (!font.vertical) {
-            charSpacing *= textState.textHScale;
-          }
-
-          scaledDim += charSpacing;
-          const wasSplit = charSpacing > textContentItem.trackingSpaceMin && addFakeSpaces(charSpacing, 
size);
-
-          if (!font.vertical) {
-            textState.translateTextMatrix(charSpacing, 0);
-          } else {
-            textState.translateTextMatrix(0, charSpacing);
-          }
-
-          if (wasSplit) {
-            textChunk = ensureTextContentItem();
-            size = 0;
-          } else {
-            size += charSpacing;
-          }
-        }
-
-        lastCharSize = scaledDim;
-      }
-
-      textChunk.lastCharSize = lastCharSize;
-
-      if (!font.vertical) {
-        textChunk.width += size;
-      } else {
-        textChunk.height += size;
-      }
-
-      textChunk.prevTransform = getCurrentTextTransform();
-    }
-
-    function appendEOL() {
-      if (textContentItem.initialized) {
-        textContentItem.hasEOL = true;
-        flushTextContentItem();
-      } else if (textContent.items.length > 0) {
-        textContent.items[textContent.items.length - 1].hasEOL = true;
-      } else {
-        textContent.items.push({
-          str: "",
-          dir: "ltr",
-          width: 0,
-          height: 0,
-          transform: getCurrentTextTransform(),
-          fontName: textState.font.loadedName,
-          hasEOL: true
-        });
-      }
-
-      textContentItem.isLastCharWhiteSpace = false;
-      textContentItem.lastCharSize = 0;
-    }
-
-    function addFakeSpaces(width, size, transf = null) {
-      if (textContentItem.spaceInFlowMin <= width && width <= textContentItem.spaceInFlowMax) {
-        if (textContentItem.initialized) {
-          textContentItem.str.push(" ");
-          textContentItem.isLastCharWhiteSpace = true;
-        }
-
-        return false;
-      }
-
-      const fontName = textContentItem.fontName;
-      let height = 0;
-      width *= textContentItem.textAdvanceScale;
-
-      if (!textContentItem.vertical) {
-        textContentItem.width += size;
-      } else {
-        textContentItem.height += size;
-        height = width;
-        width = 0;
-      }
-
-      flushTextContentItem();
-
-      if (textContentItem.isLastCharWhiteSpace) {
-        return true;
-      }
-
-      textContentItem.isLastCharWhiteSpace = true;
-      textContent.items.push({
-        str: " ",
-        dir: "ltr",
-        width,
-        height,
-        transform: transf ? transf : getCurrentTextTransform(),
-        fontName,
-        hasEOL: false
-      });
-      return true;
-    }
-
-    function flushTextContentItem() {
-      if (!textContentItem.initialized || !textContentItem.str) {
-        return;
-      }
-
-      if (!textContentItem.vertical) {
-        textContentItem.totalWidth += textContentItem.width * textContentItem.textAdvanceScale;
-      } else {
-        textContentItem.totalHeight += textContentItem.height * textContentItem.textAdvanceScale;
-      }
-
-      textContent.items.push(runBidiTransform(textContentItem));
-      textContentItem.initialized = false;
-      textContentItem.str.length = 0;
-    }
-
-    function enqueueChunk() {
-      const length = textContent.items.length;
-
-      if (length > 0) {
-        sink.enqueue(textContent, length);
-        textContent.items = [];
-        textContent.styles = Object.create(null);
-      }
-    }
-
-    const timeSlotManager = new TimeSlotManager();
-    return new Promise(function promiseBody(resolve, reject) {
-      const next = function (promise) {
-        enqueueChunk();
-        Promise.all([promise, sink.ready]).then(function () {
-          try {
-            promiseBody(resolve, reject);
-          } catch (ex) {
-            reject(ex);
-          }
-        }, reject);
-      };
-
-      task.ensureNotTerminated();
-      timeSlotManager.reset();
-      const operation = {};
-      let stop,
-          args = [];
-
-      while (!(stop = timeSlotManager.check())) {
-        args.length = 0;
-        operation.args = args;
-
-        if (!preprocessor.read(operation)) {
-          break;
-        }
-
-        textState = stateManager.state;
-        const fn = operation.fn;
-        args = operation.args;
-
-        switch (fn | 0) {
-          case _util.OPS.setFont:
-            var fontNameArg = args[0].name,
-                fontSizeArg = args[1];
-
-            if (textState.font && fontNameArg === textState.fontName && fontSizeArg === textState.fontSize) {
-              break;
-            }
-
-            flushTextContentItem();
-            textState.fontName = fontNameArg;
-            textState.fontSize = fontSizeArg;
-            next(handleSetFont(fontNameArg, null));
-            return;
-
-          case _util.OPS.setTextRise:
-            flushTextContentItem();
-            textState.textRise = args[0];
-            break;
-
-          case _util.OPS.setHScale:
-            flushTextContentItem();
-            textState.textHScale = args[0] / 100;
-            break;
-
-          case _util.OPS.setLeading:
-            flushTextContentItem();
-            textState.leading = args[0];
-            break;
-
-          case _util.OPS.moveText:
-            textState.translateTextLineMatrix(args[0], args[1]);
-            textState.textMatrix = textState.textLineMatrix.slice();
-            break;
-
-          case _util.OPS.setLeadingMoveText:
-            flushTextContentItem();
-            textState.leading = -args[1];
-            textState.translateTextLineMatrix(args[0], args[1]);
-            textState.textMatrix = textState.textLineMatrix.slice();
-            break;
-
-          case _util.OPS.nextLine:
-            appendEOL();
-            textState.carriageReturn();
-            break;
-
-          case _util.OPS.setTextMatrix:
-            textState.setTextMatrix(args[0], args[1], args[2], args[3], args[4], args[5]);
-            textState.setTextLineMatrix(args[0], args[1], args[2], args[3], args[4], args[5]);
-            updateAdvanceScale();
-            break;
-
-          case _util.OPS.setCharSpacing:
-            textState.charSpacing = args[0];
-            break;
-
-          case _util.OPS.setWordSpacing:
-            textState.wordSpacing = args[0];
-            break;
-
-          case _util.OPS.beginText:
-            flushTextContentItem();
-            textState.textMatrix = _util.IDENTITY_MATRIX.slice();
-            textState.textLineMatrix = _util.IDENTITY_MATRIX.slice();
-            break;
-
-          case _util.OPS.showSpacedText:
-            if (!stateManager.state.font) {
-              self.ensureStateFont(stateManager.state);
-              continue;
-            }
-
-            const spaceFactor = (textState.font.vertical ? 1 : -1) * textState.fontSize / 1000;
-            const elements = args[0];
-            let isFirstChunk = true;
-
-            for (let i = 0, ii = elements.length; i < ii - 1; i++) {
-              const item = elements[i];
-
-              if (typeof item === "string") {
-                showSpacedTextBuffer.push(item);
-              } else if (typeof item === "number" && item !== 0) {
-                const str = showSpacedTextBuffer.join("");
-                showSpacedTextBuffer.length = 0;
-                buildTextContentItem({
-                  chars: str,
-                  extraSpacing: item * spaceFactor,
-                  isFirstChunk
-                });
-
-                if (str && isFirstChunk) {
-                  isFirstChunk = false;
-                }
-              }
-            }
-
-            const item = elements[elements.length - 1];
-
-            if (typeof item === "string") {
-              showSpacedTextBuffer.push(item);
-            }
-
-            if (showSpacedTextBuffer.length > 0) {
-              const str = showSpacedTextBuffer.join("");
-              showSpacedTextBuffer.length = 0;
-              buildTextContentItem({
-                chars: str,
-                extraSpacing: 0,
-                isFirstChunk
-              });
-            }
-
-            break;
-
-          case _util.OPS.showText:
-            if (!stateManager.state.font) {
-              self.ensureStateFont(stateManager.state);
-              continue;
-            }
-
-            buildTextContentItem({
-              chars: args[0],
-              extraSpacing: 0,
-              isFirstChunk: true
-            });
-            break;
-
-          case _util.OPS.nextLineShowText:
-            if (!stateManager.state.font) {
-              self.ensureStateFont(stateManager.state);
-              continue;
-            }
-
-            textContentItem.hasEOL = true;
-            flushTextContentItem();
-            textState.carriageReturn();
-            buildTextContentItem({
-              chars: args[0],
-              extraSpacing: 0,
-              isFirstChunk: true
-            });
-            break;
-
-          case _util.OPS.nextLineSetSpacingShowText:
-            if (!stateManager.state.font) {
-              self.ensureStateFont(stateManager.state);
-              continue;
-            }
-
-            textContentItem.hasEOL = true;
-            flushTextContentItem();
-            textState.wordSpacing = args[0];
-            textState.charSpacing = args[1];
-            textState.carriageReturn();
-            buildTextContentItem({
-              chars: args[2],
-              extraSpacing: 0,
-              isFirstChunk: true
-            });
-            break;
-
-          case _util.OPS.paintXObject:
-            flushTextContentItem();
-
-            if (!xobjs) {
-              xobjs = resources.get("XObject") || _primitives.Dict.empty;
-            }
-
-            var isValidName = args[0] instanceof _primitives.Name;
-            var name = args[0].name;
-
-            if (isValidName && emptyXObjectCache.getByName(name)) {
-              break;
-            }
-
-            next(new Promise(function (resolveXObject, rejectXObject) {
-              if (!isValidName) {
-                throw new _util.FormatError("XObject must be referred to by name.");
-              }
-
-              let xobj = xobjs.getRaw(name);
-
-              if (xobj instanceof _primitives.Ref) {
-                if (emptyXObjectCache.getByRef(xobj)) {
-                  resolveXObject();
-                  return;
-                }
-
-                const globalImage = self.globalImageCache.getData(xobj, self.pageIndex);
-
-                if (globalImage) {
-                  resolveXObject();
-                  return;
-                }
-
-                xobj = xref.fetch(xobj);
-              }
-
-              if (!(0, _primitives.isStream)(xobj)) {
-                throw new _util.FormatError("XObject should be a stream");
-              }
-
-              const type = xobj.dict.get("Subtype");
-
-              if (!(0, _primitives.isName)(type)) {
-                throw new _util.FormatError("XObject should have a Name subtype");
-              }
-
-              if (type.name !== "Form") {
-                emptyXObjectCache.set(name, xobj.dict.objId, true);
-                resolveXObject();
-                return;
-              }
-
-              const currentState = stateManager.state.clone();
-              const xObjStateManager = new StateManager(currentState);
-              const matrix = xobj.dict.getArray("Matrix");
-
-              if (Array.isArray(matrix) && matrix.length === 6) {
-                xObjStateManager.transform(matrix);
-              }
-
-              enqueueChunk();
-              const sinkWrapper = {
-                enqueueInvoked: false,
-
-                enqueue(chunk, size) {
-                  this.enqueueInvoked = true;
-                  sink.enqueue(chunk, size);
-                },
-
-                get desiredSize() {
-                  return sink.desiredSize;
-                },
-
-                get ready() {
-                  return sink.ready;
-                }
-
-              };
-              self.getTextContent({
-                stream: xobj,
-                task,
-                resources: xobj.dict.get("Resources") || resources,
-                stateManager: xObjStateManager,
-                normalizeWhitespace,
-                combineTextItems,
-                includeMarkedContent,
-                sink: sinkWrapper,
-                seenStyles
-              }).then(function () {
-                if (!sinkWrapper.enqueueInvoked) {
-                  emptyXObjectCache.set(name, xobj.dict.objId, true);
-                }
-
-                resolveXObject();
-              }, rejectXObject);
-            }).catch(function (reason) {
-              if (reason instanceof _util.AbortException) {
-                return;
-              }
-
-              if (self.options.ignoreErrors) {
-                (0, _util.warn)(`getTextContent - ignoring XObject: "${reason}".`);
-                return;
-              }
-
-              throw reason;
-            }));
-            return;
-
-          case _util.OPS.setGState:
-            isValidName = args[0] instanceof _primitives.Name;
-            name = args[0].name;
-
-            if (isValidName && emptyGStateCache.getByName(name)) {
-              break;
-            }
-
-            next(new Promise(function (resolveGState, rejectGState) {
-              if (!isValidName) {
-                throw new _util.FormatError("GState must be referred to by name.");
-              }
-
-              const extGState = resources.get("ExtGState");
-
-              if (!(extGState instanceof _primitives.Dict)) {
-                throw new _util.FormatError("ExtGState should be a dictionary.");
-              }
-
-              const gState = extGState.get(name);
-
-              if (!(gState instanceof _primitives.Dict)) {
-                throw new _util.FormatError("GState should be a dictionary.");
-              }
-
-              const gStateFont = gState.get("Font");
-
-              if (!gStateFont) {
-                emptyGStateCache.set(name, gState.objId, true);
-                resolveGState();
-                return;
-              }
-
-              flushTextContentItem();
-              textState.fontName = null;
-              textState.fontSize = gStateFont[1];
-              handleSetFont(null, gStateFont[0]).then(resolveGState, rejectGState);
-            }).catch(function (reason) {
-              if (reason instanceof _util.AbortException) {
-                return;
-              }
-
-              if (self.options.ignoreErrors) {
-                (0, _util.warn)(`getTextContent - ignoring ExtGState: "${reason}".`);
-                return;
-              }
-
-              throw reason;
-            }));
-            return;
-
-          case _util.OPS.beginMarkedContent:
-            if (includeMarkedContent) {
-              textContent.items.push({
-                type: "beginMarkedContent",
-                tag: (0, _primitives.isName)(args[0]) ? args[0].name : null
-              });
-            }
-
-            break;
-
-          case _util.OPS.beginMarkedContentProps:
-            if (includeMarkedContent) {
-              flushTextContentItem();
-              let mcid = null;
-
-              if ((0, _primitives.isDict)(args[1])) {
-                mcid = args[1].get("MCID");
-              }
-
-              textContent.items.push({
-                type: "beginMarkedContentProps",
-                id: Number.isInteger(mcid) ? `${self.idFactory.getPageObjId()}_mcid${mcid}` : null,
-                tag: (0, _primitives.isName)(args[0]) ? args[0].name : null
-              });
-            }
-
-            break;
-
-          case _util.OPS.endMarkedContent:
-            if (includeMarkedContent) {
-              flushTextContentItem();
-              textContent.items.push({
-                type: "endMarkedContent"
-              });
-            }
-
-            break;
-        }
-
-        if (textContent.items.length >= sink.desiredSize) {
-          stop = true;
-          break;
-        }
-      }
-
-      if (stop) {
-        next(deferred);
-        return;
-      }
-
-      flushTextContentItem();
-      enqueueChunk();
-      resolve();
-    }).catch(reason => {
-      if (reason instanceof _util.AbortException) {
-        return;
-      }
-
-      if (this.options.ignoreErrors) {
-        (0, _util.warn)(`getTextContent - ignoring errors during "${task.name}" ` + `task: "${reason}".`);
-        flushTextContentItem();
-        enqueueChunk();
-        return;
-      }
-
-      throw reason;
-    });
-  }
-
-  extractDataStructures(dict, baseDict, properties) {
-    const xref = this.xref;
-    let cidToGidBytes;
-    const toUnicodePromise = this.readToUnicode(properties.toUnicode || dict.get("ToUnicode") || 
baseDict.get("ToUnicode"));
-
-    if (properties.composite) {
-      const cidSystemInfo = dict.get("CIDSystemInfo");
-
-      if ((0, _primitives.isDict)(cidSystemInfo)) {
-        properties.cidSystemInfo = {
-          registry: (0, _util.stringToPDFString)(cidSystemInfo.get("Registry")),
-          ordering: (0, _util.stringToPDFString)(cidSystemInfo.get("Ordering")),
-          supplement: cidSystemInfo.get("Supplement")
-        };
-      }
-
-      const cidToGidMap = dict.get("CIDToGIDMap");
-
-      if ((0, _primitives.isStream)(cidToGidMap)) {
-        cidToGidBytes = cidToGidMap.getBytes();
-      }
-    }
-
-    const differences = [];
-    let baseEncodingName = null;
-    let encoding;
-
-    if (dict.has("Encoding")) {
-      encoding = dict.get("Encoding");
-
-      if ((0, _primitives.isDict)(encoding)) {
-        baseEncodingName = encoding.get("BaseEncoding");
-        baseEncodingName = (0, _primitives.isName)(baseEncodingName) ? baseEncodingName.name : null;
-
-        if (encoding.has("Differences")) {
-          const diffEncoding = encoding.get("Differences");
-          let index = 0;
-
-          for (let j = 0, jj = diffEncoding.length; j < jj; j++) {
-            const data = xref.fetchIfRef(diffEncoding[j]);
-
-            if ((0, _util.isNum)(data)) {
-              index = data;
-            } else if ((0, _primitives.isName)(data)) {
-              differences[index++] = data.name;
-            } else {
-              throw new _util.FormatError(`Invalid entry in 'Differences' array: ${data}`);
-            }
-          }
-        }
-      } else if ((0, _primitives.isName)(encoding)) {
-        baseEncodingName = encoding.name;
-      } else {
-        throw new _util.FormatError("Encoding is not a Name nor a Dict");
-      }
-
-      if (baseEncodingName !== "MacRomanEncoding" && baseEncodingName !== "MacExpertEncoding" && 
baseEncodingName !== "WinAnsiEncoding") {
-        baseEncodingName = null;
-      }
-    }
-
-    if (baseEncodingName) {
-      properties.defaultEncoding = (0, _encodings.getEncoding)(baseEncodingName);
-    } else {
-      const isSymbolicFont = !!(properties.flags & _fonts_utils.FontFlags.Symbolic);
-      const isNonsymbolicFont = !!(properties.flags & _fonts_utils.FontFlags.Nonsymbolic);
-      encoding = _encodings.StandardEncoding;
-
-      if (properties.type === "TrueType" && !isNonsymbolicFont) {
-        encoding = _encodings.WinAnsiEncoding;
-      }
-
-      if (isSymbolicFont) {
-        encoding = _encodings.MacRomanEncoding;
-
-        if (!properties.file || properties.isInternalFont) {
-          if (/Symbol/i.test(properties.name)) {
-            encoding = _encodings.SymbolSetEncoding;
-          } else if (/Dingbats|Wingdings/i.test(properties.name)) {
-            encoding = _encodings.ZapfDingbatsEncoding;
-          }
-        }
-      }
-
-      properties.defaultEncoding = encoding;
-    }
-
-    properties.differences = differences;
-    properties.baseEncodingName = baseEncodingName;
-    properties.hasEncoding = !!baseEncodingName || differences.length > 0;
-    properties.dict = dict;
-    return toUnicodePromise.then(readToUnicode => {
-      properties.toUnicode = readToUnicode;
-      return this.buildToUnicode(properties);
-    }).then(builtToUnicode => {
-      properties.toUnicode = builtToUnicode;
-
-      if (cidToGidBytes) {
-        properties.cidToGidMap = this.readCidToGidMap(cidToGidBytes, builtToUnicode);
-      }
-
-      return properties;
-    });
-  }
-
-  _simpleFontToUnicode(properties, forceGlyphs = false) {
-    (0, _util.assert)(!properties.composite, "Must be a simple font.");
-    const toUnicode = [];
-    const encoding = properties.defaultEncoding.slice();
-    const baseEncodingName = properties.baseEncodingName;
-    const differences = properties.differences;
-
-    for (const charcode in differences) {
-      const glyphName = differences[charcode];
-
-      if (glyphName === ".notdef") {
-        continue;
-      }
-
-      encoding[charcode] = glyphName;
-    }
-
-    const glyphsUnicodeMap = (0, _glyphlist.getGlyphsUnicode)();
-
-    for (const charcode in encoding) {
-      let glyphName = encoding[charcode];
-
-      if (glyphName === "") {
-        continue;
-      } else if (glyphsUnicodeMap[glyphName] === undefined) {
-        let code = 0;
-
-        switch (glyphName[0]) {
-          case "G":
-            if (glyphName.length === 3) {
-              code = parseInt(glyphName.substring(1), 16);
-            }
-
-            break;
-
-          case "g":
-            if (glyphName.length === 5) {
-              code = parseInt(glyphName.substring(1), 16);
-            }
-
-            break;
-
-          case "C":
-          case "c":
-            if (glyphName.length >= 3 && glyphName.length <= 4) {
-              const codeStr = glyphName.substring(1);
-
-              if (forceGlyphs) {
-                code = parseInt(codeStr, 16);
-                break;
-              }
-
-              code = +codeStr;
-
-              if (Number.isNaN(code) && Number.isInteger(parseInt(codeStr, 16))) {
-                return this._simpleFontToUnicode(properties, true);
-              }
-            }
-
-            break;
-
-          default:
-            const unicode = (0, _unicode.getUnicodeForGlyph)(glyphName, glyphsUnicodeMap);
-
-            if (unicode !== -1) {
-              code = unicode;
-            }
-
-        }
-
-        if (code > 0 && code <= 0x10ffff && Number.isInteger(code)) {
-          if (baseEncodingName && code === +charcode) {
-            const baseEncoding = (0, _encodings.getEncoding)(baseEncodingName);
-
-            if (baseEncoding && (glyphName = baseEncoding[charcode])) {
-              toUnicode[charcode] = String.fromCharCode(glyphsUnicodeMap[glyphName]);
-              continue;
-            }
-          }
-
-          toUnicode[charcode] = String.fromCodePoint(code);
-        }
-
-        continue;
-      }
-
-      toUnicode[charcode] = String.fromCharCode(glyphsUnicodeMap[glyphName]);
-    }
-
-    return toUnicode;
-  }
-
-  async buildToUnicode(properties) {
-    properties.hasIncludedToUnicodeMap = !!properties.toUnicode && properties.toUnicode.length > 0;
-
-    if (properties.hasIncludedToUnicodeMap) {
-      if (!properties.composite && properties.hasEncoding) {
-        properties.fallbackToUnicode = this._simpleFontToUnicode(properties);
-      }
-
-      return properties.toUnicode;
-    }
-
-    if (!properties.composite) {
-      return new _to_unicode_map.ToUnicodeMap(this._simpleFontToUnicode(properties));
-    }
-
-    if (properties.composite && (properties.cMap.builtInCMap && !(properties.cMap instanceof 
_cmap.IdentityCMap) || properties.cidSystemInfo.registry === "Adobe" && (properties.cidSystemInfo.ordering 
=== "GB1" || properties.cidSystemInfo.ordering === "CNS1" || properties.cidSystemInfo.ordering === "Japan1" 
|| properties.cidSystemInfo.ordering === "Korea1"))) {
-      const {
-        registry,
-        ordering
-      } = properties.cidSystemInfo;
-
-      const ucs2CMapName = _primitives.Name.get(`${registry}-${ordering}-UCS2`);
-
-      const ucs2CMap = await _cmap.CMapFactory.create({
-        encoding: ucs2CMapName,
-        fetchBuiltInCMap: this._fetchBuiltInCMapBound,
-        useCMap: null
-      });
-      const toUnicode = [];
-      properties.cMap.forEach(function (charcode, cid) {
-        if (cid > 0xffff) {
-          throw new _util.FormatError("Max size of CID is 65,535");
-        }
-
-        const ucs2 = ucs2CMap.lookup(cid);
-
-        if (ucs2) {
-          toUnicode[charcode] = String.fromCharCode((ucs2.charCodeAt(0) << 8) + ucs2.charCodeAt(1));
-        }
-      });
-      return new _to_unicode_map.ToUnicodeMap(toUnicode);
-    }
-
-    return new _to_unicode_map.IdentityToUnicodeMap(properties.firstChar, properties.lastChar);
-  }
-
-  readToUnicode(cmapObj) {
-    if (!cmapObj) {
-      return Promise.resolve(null);
-    }
-
-    if ((0, _primitives.isName)(cmapObj)) {
-      return _cmap.CMapFactory.create({
-        encoding: cmapObj,
-        fetchBuiltInCMap: this._fetchBuiltInCMapBound,
-        useCMap: null
-      }).then(function (cmap) {
-        if (cmap instanceof _cmap.IdentityCMap) {
-          return new _to_unicode_map.IdentityToUnicodeMap(0, 0xffff);
-        }
-
-        return new _to_unicode_map.ToUnicodeMap(cmap.getMap());
-      });
-    } else if ((0, _primitives.isStream)(cmapObj)) {
-      return _cmap.CMapFactory.create({
-        encoding: cmapObj,
-        fetchBuiltInCMap: this._fetchBuiltInCMapBound,
-        useCMap: null
-      }).then(function (cmap) {
-        if (cmap instanceof _cmap.IdentityCMap) {
-          return new _to_unicode_map.IdentityToUnicodeMap(0, 0xffff);
-        }
-
-        const map = new Array(cmap.length);
-        cmap.forEach(function (charCode, token) {
-          const str = [];
-
-          for (let k = 0; k < token.length; k += 2) {
-            const w1 = token.charCodeAt(k) << 8 | token.charCodeAt(k + 1);
-
-            if ((w1 & 0xf800) !== 0xd800) {
-              str.push(w1);
-              continue;
-            }
-
-            k += 2;
-            const w2 = token.charCodeAt(k) << 8 | token.charCodeAt(k + 1);
-            str.push(((w1 & 0x3ff) << 10) + (w2 & 0x3ff) + 0x10000);
-          }
-
-          map[charCode] = String.fromCodePoint.apply(String, str);
-        });
-        return new _to_unicode_map.ToUnicodeMap(map);
-      }, reason => {
-        if (reason instanceof _util.AbortException) {
-          return null;
-        }
-
-        if (this.options.ignoreErrors) {
-          this.handler.send("UnsupportedFeature", {
-            featureId: _util.UNSUPPORTED_FEATURES.errorFontToUnicode
-          });
-          (0, _util.warn)(`readToUnicode - ignoring ToUnicode data: "${reason}".`);
-          return null;
-        }
-
-        throw reason;
-      });
-    }
-
-    return Promise.resolve(null);
-  }
-
-  readCidToGidMap(glyphsData, toUnicode) {
-    const result = [];
-
-    for (let j = 0, jj = glyphsData.length; j < jj; j++) {
-      const glyphID = glyphsData[j++] << 8 | glyphsData[j];
-      const code = j >> 1;
-
-      if (glyphID === 0 && !toUnicode.has(code)) {
-        continue;
-      }
-
-      result[code] = glyphID;
-    }
-
-    return result;
-  }
-
-  extractWidths(dict, descriptor, properties) {
-    const xref = this.xref;
-    let glyphsWidths = [];
-    let defaultWidth = 0;
-    const glyphsVMetrics = [];
-    let defaultVMetrics;
-    let i, ii, j, jj, start, code, widths;
-
-    if (properties.composite) {
-      defaultWidth = dict.has("DW") ? dict.get("DW") : 1000;
-      widths = dict.get("W");
-
-      if (widths) {
-        for (i = 0, ii = widths.length; i < ii; i++) {
-          start = xref.fetchIfRef(widths[i++]);
-          code = xref.fetchIfRef(widths[i]);
-
-          if (Array.isArray(code)) {
-            for (j = 0, jj = code.length; j < jj; j++) {
-              glyphsWidths[start++] = xref.fetchIfRef(code[j]);
-            }
-          } else {
-            const width = xref.fetchIfRef(widths[++i]);
-
-            for (j = start; j <= code; j++) {
-              glyphsWidths[j] = width;
-            }
-          }
-        }
-      }
-
-      if (properties.vertical) {
-        let vmetrics = dict.getArray("DW2") || [880, -1000];
-        defaultVMetrics = [vmetrics[1], defaultWidth * 0.5, vmetrics[0]];
-        vmetrics = dict.get("W2");
-
-        if (vmetrics) {
-          for (i = 0, ii = vmetrics.length; i < ii; i++) {
-            start = xref.fetchIfRef(vmetrics[i++]);
-            code = xref.fetchIfRef(vmetrics[i]);
-
-            if (Array.isArray(code)) {
-              for (j = 0, jj = code.length; j < jj; j++) {
-                glyphsVMetrics[start++] = [xref.fetchIfRef(code[j++]), xref.fetchIfRef(code[j++]), 
xref.fetchIfRef(code[j])];
-              }
-            } else {
-              const vmetric = [xref.fetchIfRef(vmetrics[++i]), xref.fetchIfRef(vmetrics[++i]), 
xref.fetchIfRef(vmetrics[++i])];
-
-              for (j = start; j <= code; j++) {
-                glyphsVMetrics[j] = vmetric;
-              }
-            }
-          }
-        }
-      }
-    } else {
-      const firstChar = properties.firstChar;
-      widths = dict.get("Widths");
-
-      if (widths) {
-        j = firstChar;
-
-        for (i = 0, ii = widths.length; i < ii; i++) {
-          glyphsWidths[j++] = xref.fetchIfRef(widths[i]);
-        }
-
-        defaultWidth = parseFloat(descriptor.get("MissingWidth")) || 0;
-      } else {
-        const baseFontName = dict.get("BaseFont");
-
-        if ((0, _primitives.isName)(baseFontName)) {
-          const metrics = this.getBaseFontMetrics(baseFontName.name);
-          glyphsWidths = this.buildCharCodeToWidth(metrics.widths, properties);
-          defaultWidth = metrics.defaultWidth;
-        }
-      }
-    }
-
-    let isMonospace = true;
-    let firstWidth = defaultWidth;
-
-    for (const glyph in glyphsWidths) {
-      const glyphWidth = glyphsWidths[glyph];
-
-      if (!glyphWidth) {
-        continue;
-      }
-
-      if (!firstWidth) {
-        firstWidth = glyphWidth;
-        continue;
-      }
-
-      if (firstWidth !== glyphWidth) {
-        isMonospace = false;
-        break;
-      }
-    }
-
-    if (isMonospace) {
-      properties.flags |= _fonts_utils.FontFlags.FixedPitch;
-    }
-
-    properties.defaultWidth = defaultWidth;
-    properties.widths = glyphsWidths;
-    properties.defaultVMetrics = defaultVMetrics;
-    properties.vmetrics = glyphsVMetrics;
-  }
-
-  isSerifFont(baseFontName) {
-    const fontNameWoStyle = baseFontName.split("-")[0];
-    return fontNameWoStyle in (0, _standard_fonts.getSerifFonts)() || fontNameWoStyle.search(/serif/gi) !== 
-1;
-  }
-
-  getBaseFontMetrics(name) {
-    let defaultWidth = 0;
-    let widths = Object.create(null);
-    let monospace = false;
-    const stdFontMap = (0, _standard_fonts.getStdFontMap)();
-    let lookupName = stdFontMap[name] || name;
-    const Metrics = (0, _metrics.getMetrics)();
-
-    if (!(lookupName in Metrics)) {
-      if (this.isSerifFont(name)) {
-        lookupName = "Times-Roman";
-      } else {
-        lookupName = "Helvetica";
-      }
-    }
-
-    const glyphWidths = Metrics[lookupName];
-
-    if ((0, _util.isNum)(glyphWidths)) {
-      defaultWidth = glyphWidths;
-      monospace = true;
-    } else {
-      widths = glyphWidths();
-    }
-
-    return {
-      defaultWidth,
-      monospace,
-      widths
-    };
-  }
-
-  buildCharCodeToWidth(widthsByGlyphName, properties) {
-    const widths = Object.create(null);
-    const differences = properties.differences;
-    const encoding = properties.defaultEncoding;
-
-    for (let charCode = 0; charCode < 256; charCode++) {
-      if (charCode in differences && widthsByGlyphName[differences[charCode]]) {
-        widths[charCode] = widthsByGlyphName[differences[charCode]];
-        continue;
-      }
-
-      if (charCode in encoding && widthsByGlyphName[encoding[charCode]]) {
-        widths[charCode] = widthsByGlyphName[encoding[charCode]];
-        continue;
-      }
-    }
-
-    return widths;
-  }
-
-  preEvaluateFont(dict) {
-    const baseDict = dict;
-    let type = dict.get("Subtype");
-
-    if (!(0, _primitives.isName)(type)) {
-      throw new _util.FormatError("invalid font Subtype");
-    }
-
-    let composite = false;
-    let hash, toUnicode;
-
-    if (type.name === "Type0") {
-      const df = dict.get("DescendantFonts");
-
-      if (!df) {
-        throw new _util.FormatError("Descendant fonts are not specified");
-      }
-
-      dict = Array.isArray(df) ? this.xref.fetchIfRef(df[0]) : df;
-
-      if (!(dict instanceof _primitives.Dict)) {
-        throw new _util.FormatError("Descendant font is not a dictionary.");
-      }
-
-      type = dict.get("Subtype");
-
-      if (!(0, _primitives.isName)(type)) {
-        throw new _util.FormatError("invalid font Subtype");
-      }
-
-      composite = true;
-    }
-
-    const firstChar = dict.get("FirstChar") || 0,
-          lastChar = dict.get("LastChar") || (composite ? 0xffff : 0xff);
-    const descriptor = dict.get("FontDescriptor");
-
-    if (descriptor) {
-      hash = new _murmurhash.MurmurHash3_64();
-      const encoding = baseDict.getRaw("Encoding");
-
-      if ((0, _primitives.isName)(encoding)) {
-        hash.update(encoding.name);
-      } else if ((0, _primitives.isRef)(encoding)) {
-        hash.update(encoding.toString());
-      } else if ((0, _primitives.isDict)(encoding)) {
-        for (const entry of encoding.getRawValues()) {
-          if ((0, _primitives.isName)(entry)) {
-            hash.update(entry.name);
-          } else if ((0, _primitives.isRef)(entry)) {
-            hash.update(entry.toString());
-          } else if (Array.isArray(entry)) {
-            const diffLength = entry.length,
-                  diffBuf = new Array(diffLength);
-
-            for (let j = 0; j < diffLength; j++) {
-              const diffEntry = entry[j];
-
-              if ((0, _primitives.isName)(diffEntry)) {
-                diffBuf[j] = diffEntry.name;
-              } else if ((0, _util.isNum)(diffEntry) || (0, _primitives.isRef)(diffEntry)) {
-                diffBuf[j] = diffEntry.toString();
-              }
-            }
-
-            hash.update(diffBuf.join());
-          }
-        }
-      }
-
-      hash.update(`${firstChar}-${lastChar}`);
-      toUnicode = dict.get("ToUnicode") || baseDict.get("ToUnicode");
-
-      if ((0, _primitives.isStream)(toUnicode)) {
-        const stream = toUnicode.str || toUnicode;
-        const uint8array = stream.buffer ? new Uint8Array(stream.buffer.buffer, 0, stream.bufferLength) : 
new Uint8Array(stream.bytes.buffer, stream.start, stream.end - stream.start);
-        hash.update(uint8array);
-      } else if ((0, _primitives.isName)(toUnicode)) {
-        hash.update(toUnicode.name);
-      }
-
-      const widths = dict.get("Widths") || baseDict.get("Widths");
-
-      if (Array.isArray(widths)) {
-        const widthsBuf = [];
-
-        for (const entry of widths) {
-          if ((0, _util.isNum)(entry) || (0, _primitives.isRef)(entry)) {
-            widthsBuf.push(entry.toString());
-          }
-        }
-
-        hash.update(widthsBuf.join());
-      }
-
-      if (composite) {
-        hash.update("compositeFont");
-        const compositeWidths = dict.get("W") || baseDict.get("W");
-
-        if (Array.isArray(compositeWidths)) {
-          const widthsBuf = [];
-
-          for (const entry of compositeWidths) {
-            if ((0, _util.isNum)(entry) || (0, _primitives.isRef)(entry)) {
-              widthsBuf.push(entry.toString());
-            } else if (Array.isArray(entry)) {
-              const subWidthsBuf = [];
-
-              for (const element of entry) {
-                if ((0, _util.isNum)(element) || (0, _primitives.isRef)(element)) {
-                  subWidthsBuf.push(element.toString());
-                }
-              }
-
-              widthsBuf.push(`[${subWidthsBuf.join()}]`);
-            }
-          }
-
-          hash.update(widthsBuf.join());
-        }
-      }
-    }
-
-    return {
-      descriptor,
-      dict,
-      baseDict,
-      composite,
-      type: type.name,
-      firstChar,
-      lastChar,
-      toUnicode,
-      hash: hash ? hash.hexdigest() : ""
-    };
-  }
-
-  async translateFont({
-    descriptor,
-    dict,
-    baseDict,
-    composite,
-    type,
-    firstChar,
-    lastChar,
-    toUnicode,
-    cssFontInfo
-  }) {
-    const isType3Font = type === "Type3";
-    let properties;
-
-    if (!descriptor) {
-      if (isType3Font) {
-        descriptor = new _primitives.Dict(null);
-        descriptor.set("FontName", _primitives.Name.get(type));
-        descriptor.set("FontBBox", dict.getArray("FontBBox") || [0, 0, 0, 0]);
-      } else {
-        let baseFontName = dict.get("BaseFont");
-
-        if (!(0, _primitives.isName)(baseFontName)) {
-          throw new _util.FormatError("Base font is not specified");
-        }
-
-        baseFontName = baseFontName.name.replace(/[,_]/g, "-");
-        const metrics = this.getBaseFontMetrics(baseFontName);
-        const fontNameWoStyle = baseFontName.split("-")[0];
-        const flags = (this.isSerifFont(fontNameWoStyle) ? _fonts_utils.FontFlags.Serif : 0) | 
(metrics.monospace ? _fonts_utils.FontFlags.FixedPitch : 0) | ((0, 
_standard_fonts.getSymbolsFonts)()[fontNameWoStyle] ? _fonts_utils.FontFlags.Symbolic : 
_fonts_utils.FontFlags.Nonsymbolic);
-        properties = {
-          type,
-          name: baseFontName,
-          loadedName: baseDict.loadedName,
-          widths: metrics.widths,
-          defaultWidth: metrics.defaultWidth,
-          flags,
-          firstChar,
-          lastChar,
-          toUnicode,
-          xHeight: 0,
-          capHeight: 0,
-          italicAngle: 0,
-          isType3Font
-        };
-        const widths = dict.get("Widths");
-        const standardFontName = (0, _standard_fonts.getStandardFontName)(baseFontName);
-        let file = null;
-
-        if (standardFontName) {
-          properties.isStandardFont = true;
-          file = await this.fetchStandardFontData(standardFontName);
-          properties.isInternalFont = !!file;
-        }
-
-        return this.extractDataStructures(dict, dict, properties).then(newProperties => {
-          if (widths) {
-            const glyphWidths = [];
-            let j = firstChar;
-
-            for (let i = 0, ii = widths.length; i < ii; i++) {
-              glyphWidths[j++] = this.xref.fetchIfRef(widths[i]);
-            }
-
-            newProperties.widths = glyphWidths;
-          } else {
-            newProperties.widths = this.buildCharCodeToWidth(metrics.widths, newProperties);
-          }
-
-          return new _fonts.Font(baseFontName, file, newProperties);
-        });
-      }
-    }
-
-    let fontName = descriptor.get("FontName");
-    let baseFont = dict.get("BaseFont");
-
-    if ((0, _util.isString)(fontName)) {
-      fontName = _primitives.Name.get(fontName);
-    }
-
-    if ((0, _util.isString)(baseFont)) {
-      baseFont = _primitives.Name.get(baseFont);
-    }
-
-    if (!isType3Font) {
-      const fontNameStr = fontName && fontName.name;
-      const baseFontStr = baseFont && baseFont.name;
-
-      if (fontNameStr !== baseFontStr) {
-        (0, _util.info)(`The FontDescriptor's FontName is "${fontNameStr}" but ` + `should be the same as 
the Font's BaseFont "${baseFontStr}".`);
-
-        if (fontNameStr && baseFontStr && baseFontStr.startsWith(fontNameStr)) {
-          fontName = baseFont;
-        }
-      }
-    }
-
-    fontName = fontName || baseFont;
-
-    if (!(0, _primitives.isName)(fontName)) {
-      throw new _util.FormatError("invalid font name");
-    }
-
-    let fontFile, subtype, length1, length2, length3;
-
-    try {
-      fontFile = descriptor.get("FontFile", "FontFile2", "FontFile3");
-    } catch (ex) {
-      if (!this.options.ignoreErrors) {
-        throw ex;
-      }
-
-      (0, _util.warn)(`translateFont - fetching "${fontName.name}" font file: "${ex}".`);
-      fontFile = new _stream.NullStream();
-    }
-
-    let isStandardFont = false;
-    let isInternalFont = false;
-    let glyphScaleFactors = null;
-
-    if (fontFile) {
-      if (fontFile.dict) {
-        const subtypeEntry = fontFile.dict.get("Subtype");
-
-        if (subtypeEntry instanceof _primitives.Name) {
-          subtype = subtypeEntry.name;
-        }
-
-        length1 = fontFile.dict.get("Length1");
-        length2 = fontFile.dict.get("Length2");
-        length3 = fontFile.dict.get("Length3");
-      }
-    } else if (cssFontInfo) {
-      const standardFontName = (0, _xfa_fonts.getXfaFontName)(fontName.name);
-
-      if (standardFontName) {
-        cssFontInfo.fontFamily = `${cssFontInfo.fontFamily}-PdfJS-XFA`;
-        cssFontInfo.lineHeight = standardFontName.lineHeight || null;
-        glyphScaleFactors = standardFontName.factors || null;
-        fontFile = await this.fetchStandardFontData(standardFontName.name);
-        isInternalFont = !!fontFile;
-        type = "TrueType";
-      }
-    } else if (!isType3Font) {
-      const standardFontName = (0, _standard_fonts.getStandardFontName)(fontName.name);
-
-      if (standardFontName) {
-        isStandardFont = true;
-        fontFile = await this.fetchStandardFontData(standardFontName);
-        isInternalFont = !!fontFile;
-      }
-    }
-
-    properties = {
-      type,
-      name: fontName.name,
-      subtype,
-      file: fontFile,
-      length1,
-      length2,
-      length3,
-      isStandardFont,
-      isInternalFont,
-      loadedName: baseDict.loadedName,
-      composite,
-      fixedPitch: false,
-      fontMatrix: dict.getArray("FontMatrix") || _util.FONT_IDENTITY_MATRIX,
-      firstChar,
-      lastChar,
-      toUnicode,
-      bbox: descriptor.getArray("FontBBox") || dict.getArray("FontBBox"),
-      ascent: descriptor.get("Ascent"),
-      descent: descriptor.get("Descent"),
-      xHeight: descriptor.get("XHeight") || 0,
-      capHeight: descriptor.get("CapHeight") || 0,
-      flags: descriptor.get("Flags"),
-      italicAngle: descriptor.get("ItalicAngle") || 0,
-      isType3Font,
-      cssFontInfo,
-      scaleFactors: glyphScaleFactors
-    };
-
-    if (composite) {
-      const cidEncoding = baseDict.get("Encoding");
-
-      if ((0, _primitives.isName)(cidEncoding)) {
-        properties.cidEncoding = cidEncoding.name;
-      }
-
-      const cMap = await _cmap.CMapFactory.create({
-        encoding: cidEncoding,
-        fetchBuiltInCMap: this._fetchBuiltInCMapBound,
-        useCMap: null
-      });
-      properties.cMap = cMap;
-      properties.vertical = properties.cMap.vertical;
-    }
-
-    return this.extractDataStructures(dict, baseDict, properties).then(newProperties => {
-      this.extractWidths(dict, descriptor, newProperties);
-      return new _fonts.Font(fontName.name, fontFile, newProperties);
-    });
-  }
-
-  static buildFontPaths(font, glyphs, handler, evaluatorOptions) {
-    function buildPath(fontChar) {
-      const glyphName = `${font.loadedName}_path_${fontChar}`;
-
-      try {
-        if (font.renderer.hasBuiltPath(fontChar)) {
-          return;
-        }
-
-        handler.send("commonobj", [glyphName, "FontPath", font.renderer.getPathJs(fontChar)]);
-      } catch (reason) {
-        if (evaluatorOptions.ignoreErrors) {
-          handler.send("UnsupportedFeature", {
-            featureId: _util.UNSUPPORTED_FEATURES.errorFontBuildPath
-          });
-          (0, _util.warn)(`buildFontPaths - ignoring ${glyphName} glyph: "${reason}".`);
-          return;
-        }
-
-        throw reason;
-      }
-    }
-
-    for (const glyph of glyphs) {
-      buildPath(glyph.fontChar);
-      const accent = glyph.accent;
-
-      if (accent && accent.fontChar) {
-        buildPath(accent.fontChar);
-      }
-    }
-  }
-
-  static get fallbackFontDict() {
-    const dict = new _primitives.Dict();
-    dict.set("BaseFont", _primitives.Name.get("PDFJS-FallbackFont"));
-    dict.set("Type", _primitives.Name.get("FallbackType"));
-    dict.set("Subtype", _primitives.Name.get("FallbackType"));
-    dict.set("Encoding", _primitives.Name.get("WinAnsiEncoding"));
-    return (0, _util.shadow)(this, "fallbackFontDict", dict);
-  }
-
-}
-
-exports.PartialEvaluator = PartialEvaluator;
-
-class TranslatedFont {
-  constructor({
-    loadedName,
-    font,
-    dict,
-    evaluatorOptions
-  }) {
-    this.loadedName = loadedName;
-    this.font = font;
-    this.dict = dict;
-    this._evaluatorOptions = evaluatorOptions || DefaultPartialEvaluatorOptions;
-    this.type3Loaded = null;
-    this.type3Dependencies = font.isType3Font ? new Set() : null;
-    this.sent = false;
-  }
-
-  send(handler) {
-    if (this.sent) {
-      return;
-    }
-
-    this.sent = true;
-    handler.send("commonobj", [this.loadedName, "Font", 
this.font.exportData(this._evaluatorOptions.fontExtraProperties)]);
-  }
-
-  fallback(handler) {
-    if (!this.font.data) {
-      return;
-    }
-
-    this.font.disableFontFace = true;
-    PartialEvaluator.buildFontPaths(this.font, this.font.glyphCacheValues, handler, this._evaluatorOptions);
-  }
-
-  loadType3Data(evaluator, resources, task) {
-    if (this.type3Loaded) {
-      return this.type3Loaded;
-    }
-
-    if (!this.font.isType3Font) {
-      throw new Error("Must be a Type3 font.");
-    }
-
-    const type3Evaluator = evaluator.clone({
-      ignoreErrors: false
-    });
-    type3Evaluator.parsingType3Font = true;
-    const translatedFont = this.font,
-          type3Dependencies = this.type3Dependencies;
-    let loadCharProcsPromise = Promise.resolve();
-    const charProcs = this.dict.get("CharProcs");
-    const fontResources = this.dict.get("Resources") || resources;
-    const charProcOperatorList = Object.create(null);
-    const isEmptyBBox = !translatedFont.bbox || (0, _util.isArrayEqual)(translatedFont.bbox, [0, 0, 0, 0]);
-
-    for (const key of charProcs.getKeys()) {
-      loadCharProcsPromise = loadCharProcsPromise.then(() => {
-        const glyphStream = charProcs.get(key);
-        const operatorList = new _operator_list.OperatorList();
-        return type3Evaluator.getOperatorList({
-          stream: glyphStream,
-          task,
-          resources: fontResources,
-          operatorList
-        }).then(() => {
-          if (operatorList.fnArray[0] === _util.OPS.setCharWidthAndBounds) {
-            this._removeType3ColorOperators(operatorList, isEmptyBBox);
-          }
-
-          charProcOperatorList[key] = operatorList.getIR();
-
-          for (const dependency of operatorList.dependencies) {
-            type3Dependencies.add(dependency);
-          }
-        }).catch(function (reason) {
-          (0, _util.warn)(`Type3 font resource "${key}" is not available.`);
-          const dummyOperatorList = new _operator_list.OperatorList();
-          charProcOperatorList[key] = dummyOperatorList.getIR();
-        });
-      });
-    }
-
-    this.type3Loaded = loadCharProcsPromise.then(() => {
-      translatedFont.charProcOperatorList = charProcOperatorList;
-
-      if (this._bbox) {
-        translatedFont.isCharBBox = true;
-        translatedFont.bbox = this._bbox;
-      }
-    });
-    return this.type3Loaded;
-  }
-
-  _removeType3ColorOperators(operatorList, isEmptyBBox = false) {
-    if (isEmptyBBox) {
-      if (!this._bbox) {
-        this._bbox = [Infinity, Infinity, -Infinity, -Infinity];
-      }
-
-      const charBBox = _util.Util.normalizeRect(operatorList.argsArray[0].slice(2));
-
-      this._bbox[0] = Math.min(this._bbox[0], charBBox[0]);
-      this._bbox[1] = Math.min(this._bbox[1], charBBox[1]);
-      this._bbox[2] = Math.max(this._bbox[2], charBBox[2]);
-      this._bbox[3] = Math.max(this._bbox[3], charBBox[3]);
-    }
-
-    let i = 1,
-        ii = operatorList.length;
-
-    while (i < ii) {
-      switch (operatorList.fnArray[i]) {
-        case _util.OPS.setStrokeColorSpace:
-        case _util.OPS.setFillColorSpace:
-        case _util.OPS.setStrokeColor:
-        case _util.OPS.setStrokeColorN:
-        case _util.OPS.setFillColor:
-        case _util.OPS.setFillColorN:
-        case _util.OPS.setStrokeGray:
-        case _util.OPS.setFillGray:
-        case _util.OPS.setStrokeRGBColor:
-        case _util.OPS.setFillRGBColor:
-        case _util.OPS.setStrokeCMYKColor:
-        case _util.OPS.setFillCMYKColor:
-        case _util.OPS.shadingFill:
-        case _util.OPS.setRenderingIntent:
-          operatorList.fnArray.splice(i, 1);
-          operatorList.argsArray.splice(i, 1);
-          ii--;
-          continue;
-
-        case _util.OPS.setGState:
-          const [gStateObj] = operatorList.argsArray[i];
-          let j = 0,
-              jj = gStateObj.length;
-
-          while (j < jj) {
-            const [gStateKey] = gStateObj[j];
-
-            switch (gStateKey) {
-              case "TR":
-              case "TR2":
-              case "HT":
-              case "BG":
-              case "BG2":
-              case "UCR":
-              case "UCR2":
-                gStateObj.splice(j, 1);
-                jj--;
-                continue;
-            }
-
-            j++;
-          }
-
-          break;
-      }
-
-      i++;
-    }
-  }
-
-}
-
-class StateManager {
-  constructor(initialState = new EvalState()) {
-    this.state = initialState;
-    this.stateStack = [];
-  }
-
-  save() {
-    const old = this.state;
-    this.stateStack.push(this.state);
-    this.state = old.clone();
-  }
-
-  restore() {
-    const prev = this.stateStack.pop();
-
-    if (prev) {
-      this.state = prev;
-    }
-  }
-
-  transform(args) {
-    this.state.ctm = _util.Util.transform(this.state.ctm, args);
-  }
-
-}
-
-class TextState {
-  constructor() {
-    this.ctm = new Float32Array(_util.IDENTITY_MATRIX);
-    this.fontName = null;
-    this.fontSize = 0;
-    this.font = null;
-    this.fontMatrix = _util.FONT_IDENTITY_MATRIX;
-    this.textMatrix = _util.IDENTITY_MATRIX.slice();
-    this.textLineMatrix = _util.IDENTITY_MATRIX.slice();
-    this.charSpacing = 0;
-    this.wordSpacing = 0;
-    this.leading = 0;
-    this.textHScale = 1;
-    this.textRise = 0;
-  }
-
-  setTextMatrix(a, b, c, d, e, f) {
-    const m = this.textMatrix;
-    m[0] = a;
-    m[1] = b;
-    m[2] = c;
-    m[3] = d;
-    m[4] = e;
-    m[5] = f;
-  }
-
-  setTextLineMatrix(a, b, c, d, e, f) {
-    const m = this.textLineMatrix;
-    m[0] = a;
-    m[1] = b;
-    m[2] = c;
-    m[3] = d;
-    m[4] = e;
-    m[5] = f;
-  }
-
-  translateTextMatrix(x, y) {
-    const m = this.textMatrix;
-    m[4] = m[0] * x + m[2] * y + m[4];
-    m[5] = m[1] * x + m[3] * y + m[5];
-  }
-
-  translateTextLineMatrix(x, y) {
-    const m = this.textLineMatrix;
-    m[4] = m[0] * x + m[2] * y + m[4];
-    m[5] = m[1] * x + m[3] * y + m[5];
-  }
-
-  carriageReturn() {
-    this.translateTextLineMatrix(0, -this.leading);
-    this.textMatrix = this.textLineMatrix.slice();
-  }
-
-  clone() {
-    const clone = Object.create(this);
-    clone.textMatrix = this.textMatrix.slice();
-    clone.textLineMatrix = this.textLineMatrix.slice();
-    clone.fontMatrix = this.fontMatrix.slice();
-    return clone;
-  }
-
-}
-
-class EvalState {
-  constructor() {
-    this.ctm = new Float32Array(_util.IDENTITY_MATRIX);
-    this.font = null;
-    this.textRenderingMode = _util.TextRenderingMode.FILL;
-    this.fillColorSpace = _colorspace.ColorSpace.singletons.gray;
-    this.strokeColorSpace = _colorspace.ColorSpace.singletons.gray;
-  }
-
-  clone() {
-    return Object.create(this);
-  }
-
-}
-
-class EvaluatorPreprocessor {
-  static get opMap() {
-    const getOPMap = (0, _core_utils.getLookupTableFactory)(function (t) {
-      t.w = {
-        id: _util.OPS.setLineWidth,
-        numArgs: 1,
-        variableArgs: false
-      };
-      t.J = {
-        id: _util.OPS.setLineCap,
-        numArgs: 1,
-        variableArgs: false
-      };
-      t.j = {
-        id: _util.OPS.setLineJoin,
-        numArgs: 1,
-        variableArgs: false
-      };
-      t.M = {
-        id: _util.OPS.setMiterLimit,
-        numArgs: 1,
-        variableArgs: false
-      };
-      t.d = {
-        id: _util.OPS.setDash,
-        numArgs: 2,
-        variableArgs: false
-      };
-      t.ri = {
-        id: _util.OPS.setRenderingIntent,
-        numArgs: 1,
-        variableArgs: false
-      };
-      t.i = {
-        id: _util.OPS.setFlatness,
-        numArgs: 1,
-        variableArgs: false
-      };
-      t.gs = {
-        id: _util.OPS.setGState,
-        numArgs: 1,
-        variableArgs: false
-      };
-      t.q = {
-        id: _util.OPS.save,
-        numArgs: 0,
-        variableArgs: false
-      };
-      t.Q = {
-        id: _util.OPS.restore,
-        numArgs: 0,
-        variableArgs: false
-      };
-      t.cm = {
-        id: _util.OPS.transform,
-        numArgs: 6,
-        variableArgs: false
-      };
-      t.m = {
-        id: _util.OPS.moveTo,
-        numArgs: 2,
-        variableArgs: false
-      };
-      t.l = {
-        id: _util.OPS.lineTo,
-        numArgs: 2,
-        variableArgs: false
-      };
-      t.c = {
-        id: _util.OPS.curveTo,
-        numArgs: 6,
-        variableArgs: false
-      };
-      t.v = {
-        id: _util.OPS.curveTo2,
-        numArgs: 4,
-        variableArgs: false
-      };
-      t.y = {
-        id: _util.OPS.curveTo3,
-        numArgs: 4,
-        variableArgs: false
-      };
-      t.h = {
-        id: _util.OPS.closePath,
-        numArgs: 0,
-        variableArgs: false
-      };
-      t.re = {
-        id: _util.OPS.rectangle,
-        numArgs: 4,
-        variableArgs: false
-      };
-      t.S = {
-        id: _util.OPS.stroke,
-        numArgs: 0,
-        variableArgs: false
-      };
-      t.s = {
-        id: _util.OPS.closeStroke,
-        numArgs: 0,
-        variableArgs: false
-      };
-      t.f = {
-        id: _util.OPS.fill,
-        numArgs: 0,
-        variableArgs: false
-      };
-      t.F = {
-        id: _util.OPS.fill,
-        numArgs: 0,
-        variableArgs: false
-      };
-      t["f*"] = {
-        id: _util.OPS.eoFill,
-        numArgs: 0,
-        variableArgs: false
-      };
-      t.B = {
-        id: _util.OPS.fillStroke,
-        numArgs: 0,
-        variableArgs: false
-      };
-      t["B*"] = {
-        id: _util.OPS.eoFillStroke,
-        numArgs: 0,
-        variableArgs: false
-      };
-      t.b = {
-        id: _util.OPS.closeFillStroke,
-        numArgs: 0,
-        variableArgs: false
-      };
-      t["b*"] = {
-        id: _util.OPS.closeEOFillStroke,
-        numArgs: 0,
-        variableArgs: false
-      };
-      t.n = {
-        id: _util.OPS.endPath,
-        numArgs: 0,
-        variableArgs: false
-      };
-      t.W = {
-        id: _util.OPS.clip,
-        numArgs: 0,
-        variableArgs: false
-      };
-      t["W*"] = {
-        id: _util.OPS.eoClip,
-        numArgs: 0,
-        variableArgs: false
-      };
-      t.BT = {
-        id: _util.OPS.beginText,
-        numArgs: 0,
-        variableArgs: false
-      };
-      t.ET = {
-        id: _util.OPS.endText,
-        numArgs: 0,
-        variableArgs: false
-      };
-      t.Tc = {
-        id: _util.OPS.setCharSpacing,
-        numArgs: 1,
-        variableArgs: false
-      };
-      t.Tw = {
-        id: _util.OPS.setWordSpacing,
-        numArgs: 1,
-        variableArgs: false
-      };
-      t.Tz = {
-        id: _util.OPS.setHScale,
-        numArgs: 1,
-        variableArgs: false
-      };
-      t.TL = {
-        id: _util.OPS.setLeading,
-        numArgs: 1,
-        variableArgs: false
-      };
-      t.Tf = {
-        id: _util.OPS.setFont,
-        numArgs: 2,
-        variableArgs: false
-      };
-      t.Tr = {
-        id: _util.OPS.setTextRenderingMode,
-        numArgs: 1,
-        variableArgs: false
-      };
-      t.Ts = {
-        id: _util.OPS.setTextRise,
-        numArgs: 1,
-        variableArgs: false
-      };
-      t.Td = {
-        id: _util.OPS.moveText,
-        numArgs: 2,
-        variableArgs: false
-      };
-      t.TD = {
-        id: _util.OPS.setLeadingMoveText,
-        numArgs: 2,
-        variableArgs: false
-      };
-      t.Tm = {
-        id: _util.OPS.setTextMatrix,
-        numArgs: 6,
-        variableArgs: false
-      };
-      t["T*"] = {
-        id: _util.OPS.nextLine,
-        numArgs: 0,
-        variableArgs: false
-      };
-      t.Tj = {
-        id: _util.OPS.showText,
-        numArgs: 1,
-        variableArgs: false
-      };
-      t.TJ = {
-        id: _util.OPS.showSpacedText,
-        numArgs: 1,
-        variableArgs: false
-      };
-      t["'"] = {
-        id: _util.OPS.nextLineShowText,
-        numArgs: 1,
-        variableArgs: false
-      };
-      t['"'] = {
-        id: _util.OPS.nextLineSetSpacingShowText,
-        numArgs: 3,
-        variableArgs: false
-      };
-      t.d0 = {
-        id: _util.OPS.setCharWidth,
-        numArgs: 2,
-        variableArgs: false
-      };
-      t.d1 = {
-        id: _util.OPS.setCharWidthAndBounds,
-        numArgs: 6,
-        variableArgs: false
-      };
-      t.CS = {
-        id: _util.OPS.setStrokeColorSpace,
-        numArgs: 1,
-        variableArgs: false
-      };
-      t.cs = {
-        id: _util.OPS.setFillColorSpace,
-        numArgs: 1,
-        variableArgs: false
-      };
-      t.SC = {
-        id: _util.OPS.setStrokeColor,
-        numArgs: 4,
-        variableArgs: true
-      };
-      t.SCN = {
-        id: _util.OPS.setStrokeColorN,
-        numArgs: 33,
-        variableArgs: true
-      };
-      t.sc = {
-        id: _util.OPS.setFillColor,
-        numArgs: 4,
-        variableArgs: true
-      };
-      t.scn = {
-        id: _util.OPS.setFillColorN,
-        numArgs: 33,
-        variableArgs: true
-      };
-      t.G = {
-        id: _util.OPS.setStrokeGray,
-        numArgs: 1,
-        variableArgs: false
-      };
-      t.g = {
-        id: _util.OPS.setFillGray,
-        numArgs: 1,
-        variableArgs: false
-      };
-      t.RG = {
-        id: _util.OPS.setStrokeRGBColor,
-        numArgs: 3,
-        variableArgs: false
-      };
-      t.rg = {
-        id: _util.OPS.setFillRGBColor,
-        numArgs: 3,
-        variableArgs: false
-      };
-      t.K = {
-        id: _util.OPS.setStrokeCMYKColor,
-        numArgs: 4,
-        variableArgs: false
-      };
-      t.k = {
-        id: _util.OPS.setFillCMYKColor,
-        numArgs: 4,
-        variableArgs: false
-      };
-      t.sh = {
-        id: _util.OPS.shadingFill,
-        numArgs: 1,
-        variableArgs: false
-      };
-      t.BI = {
-        id: _util.OPS.beginInlineImage,
-        numArgs: 0,
-        variableArgs: false
-      };
-      t.ID = {
-        id: _util.OPS.beginImageData,
-        numArgs: 0,
-        variableArgs: false
-      };
-      t.EI = {
-        id: _util.OPS.endInlineImage,
-        numArgs: 1,
-        variableArgs: false
-      };
-      t.Do = {
-        id: _util.OPS.paintXObject,
-        numArgs: 1,
-        variableArgs: false
-      };
-      t.MP = {
-        id: _util.OPS.markPoint,
-        numArgs: 1,
-        variableArgs: false
-      };
-      t.DP = {
-        id: _util.OPS.markPointProps,
-        numArgs: 2,
-        variableArgs: false
-      };
-      t.BMC = {
-        id: _util.OPS.beginMarkedContent,
-        numArgs: 1,
-        variableArgs: false
-      };
-      t.BDC = {
-        id: _util.OPS.beginMarkedContentProps,
-        numArgs: 2,
-        variableArgs: false
-      };
-      t.EMC = {
-        id: _util.OPS.endMarkedContent,
-        numArgs: 0,
-        variableArgs: false
-      };
-      t.BX = {
-        id: _util.OPS.beginCompat,
-        numArgs: 0,
-        variableArgs: false
-      };
-      t.EX = {
-        id: _util.OPS.endCompat,
-        numArgs: 0,
-        variableArgs: false
-      };
-      t.BM = null;
-      t.BD = null;
-      t.true = null;
-      t.fa = null;
-      t.fal = null;
-      t.fals = null;
-      t.false = null;
-      t.nu = null;
-      t.nul = null;
-      t.null = null;
-    });
-    return (0, _util.shadow)(this, "opMap", getOPMap());
-  }
-
-  static get MAX_INVALID_PATH_OPS() {
-    return (0, _util.shadow)(this, "MAX_INVALID_PATH_OPS", 20);
-  }
-
-  constructor(stream, xref, stateManager = new StateManager()) {
-    this.parser = new _parser.Parser({
-      lexer: new _parser.Lexer(stream, EvaluatorPreprocessor.opMap),
-      xref
-    });
-    this.stateManager = stateManager;
-    this.nonProcessedArgs = [];
-    this._numInvalidPathOPS = 0;
-  }
-
-  get savedStatesDepth() {
-    return this.stateManager.stateStack.length;
-  }
-
-  read(operation) {
-    let args = operation.args;
-
-    while (true) {
-      const obj = this.parser.getObj();
-
-      if (obj instanceof _primitives.Cmd) {
-        const cmd = obj.cmd;
-        const opSpec = EvaluatorPreprocessor.opMap[cmd];
-
-        if (!opSpec) {
-          (0, _util.warn)(`Unknown command "${cmd}".`);
-          continue;
-        }
-
-        const fn = opSpec.id;
-        const numArgs = opSpec.numArgs;
-        let argsLength = args !== null ? args.length : 0;
-
-        if (!opSpec.variableArgs) {
-          if (argsLength !== numArgs) {
-            const nonProcessedArgs = this.nonProcessedArgs;
-
-            while (argsLength > numArgs) {
-              nonProcessedArgs.push(args.shift());
-              argsLength--;
-            }
-
-            while (argsLength < numArgs && nonProcessedArgs.length !== 0) {
-              if (args === null) {
-                args = [];
-              }
-
-              args.unshift(nonProcessedArgs.pop());
-              argsLength++;
-            }
-          }
-
-          if (argsLength < numArgs) {
-            const partialMsg = `command ${cmd}: expected ${numArgs} args, ` + `but received ${argsLength} 
args.`;
-
-            if (fn >= _util.OPS.moveTo && fn <= _util.OPS.endPath && ++this._numInvalidPathOPS > 
EvaluatorPreprocessor.MAX_INVALID_PATH_OPS) {
-              throw new _util.FormatError(`Invalid ${partialMsg}`);
-            }
-
-            (0, _util.warn)(`Skipping ${partialMsg}`);
-
-            if (args !== null) {
-              args.length = 0;
-            }
-
-            continue;
-          }
-        } else if (argsLength > numArgs) {
-          (0, _util.info)(`Command ${cmd}: expected [0, ${numArgs}] args, ` + `but received ${argsLength} 
args.`);
-        }
-
-        this.preprocessCommand(fn, args);
-        operation.fn = fn;
-        operation.args = args;
-        return true;
-      }
-
-      if (obj === _primitives.EOF) {
-        return false;
-      }
-
-      if (obj !== null) {
-        if (args === null) {
-          args = [];
-        }
-
-        args.push(obj);
-
-        if (args.length > 33) {
-          throw new _util.FormatError("Too many arguments");
-        }
-      }
-    }
-  }
-
-  preprocessCommand(fn, args) {
-    switch (fn | 0) {
-      case _util.OPS.save:
-        this.stateManager.save();
-        break;
-
-      case _util.OPS.restore:
-        this.stateManager.restore();
-        break;
-
-      case _util.OPS.transform:
-        this.stateManager.transform(args);
-        break;
-    }
-  }
-
-}
-
-exports.EvaluatorPreprocessor = EvaluatorPreprocessor;
-
-/***/ }),
-/* 16 */
-/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
-
-
-
-Object.defineProperty(exports, "__esModule", ({
-  value: true
-}));
-exports.IdentityCMap = exports.CMapFactory = exports.CMap = void 0;
-
-var _util = __w_pdfjs_require__(2);
-
-var _primitives = __w_pdfjs_require__(5);
-
-var _parser = __w_pdfjs_require__(17);
-
-var _core_utils = __w_pdfjs_require__(9);
-
-var _stream = __w_pdfjs_require__(10);
-
-const BUILT_IN_CMAPS = ["Adobe-GB1-UCS2", "Adobe-CNS1-UCS2", "Adobe-Japan1-UCS2", "Adobe-Korea1-UCS2", 
"78-EUC-H", "78-EUC-V", "78-H", "78-RKSJ-H", "78-RKSJ-V", "78-V", "78ms-RKSJ-H", "78ms-RKSJ-V", 
"83pv-RKSJ-H", "90ms-RKSJ-H", "90ms-RKSJ-V", "90msp-RKSJ-H", "90msp-RKSJ-V", "90pv-RKSJ-H", "90pv-RKSJ-V", 
"Add-H", "Add-RKSJ-H", "Add-RKSJ-V", "Add-V", "Adobe-CNS1-0", "Adobe-CNS1-1", "Adobe-CNS1-2", "Adobe-CNS1-3", 
"Adobe-CNS1-4", "Adobe-CNS1-5", "Adobe-CNS1-6", "Adobe-GB1-0", "Adobe-GB1-1", "Adobe-GB1-2", "Adobe-GB1-3", 
"Adobe-GB1-4", "Adobe-GB1-5", "Adobe-Japan1-0", "Adobe-Japan1-1", "Adobe-Japan1-2", "Adobe-Japan1-3", 
"Adobe-Japan1-4", "Adobe-Japan1-5", "Adobe-Japan1-6", "Adobe-Korea1-0", "Adobe-Korea1-1", "Adobe-Korea1-2", 
"B5-H", "B5-V", "B5pc-H", "B5pc-V", "CNS-EUC-H", "CNS-EUC-V", "CNS1-H", "CNS1-V", "CNS2-H", "CNS2-V", 
"ETHK-B5-H", "ETHK-B5-V", "ETen-B5-H", "ETen-B5-V", "ETenms-B5-H", "ETenms-B5-V", "EUC-H", "EUC-V", "Ext-H", 
"Ext-RKSJ-H", "Ext-RKSJ-V", "Ext-V", "GB-EUC-H", "GB
 -EUC-V", "GB-H", "GB-V", "GBK-EUC-H", "GBK-EUC-V", "GBK2K-H", "GBK2K-V", "GBKp-EUC-H", "GBKp-EUC-V", 
"GBT-EUC-H", "GBT-EUC-V", "GBT-H", "GBT-V", "GBTpc-EUC-H", "GBTpc-EUC-V", "GBpc-EUC-H", "GBpc-EUC-V", "H", 
"HKdla-B5-H", "HKdla-B5-V", "HKdlb-B5-H", "HKdlb-B5-V", "HKgccs-B5-H", "HKgccs-B5-V", "HKm314-B5-H", 
"HKm314-B5-V", "HKm471-B5-H", "HKm471-B5-V", "HKscs-B5-H", "HKscs-B5-V", "Hankaku", "Hiragana", "KSC-EUC-H", 
"KSC-EUC-V", "KSC-H", "KSC-Johab-H", "KSC-Johab-V", "KSC-V", "KSCms-UHC-H", "KSCms-UHC-HW-H", 
"KSCms-UHC-HW-V", "KSCms-UHC-V", "KSCpc-EUC-H", "KSCpc-EUC-V", "Katakana", "NWP-H", "NWP-V", "RKSJ-H", 
"RKSJ-V", "Roman", "UniCNS-UCS2-H", "UniCNS-UCS2-V", "UniCNS-UTF16-H", "UniCNS-UTF16-V", "UniCNS-UTF32-H", 
"UniCNS-UTF32-V", "UniCNS-UTF8-H", "UniCNS-UTF8-V", "UniGB-UCS2-H", "UniGB-UCS2-V", "UniGB-UTF16-H", 
"UniGB-UTF16-V", "UniGB-UTF32-H", "UniGB-UTF32-V", "UniGB-UTF8-H", "UniGB-UTF8-V", "UniJIS-UCS2-H", 
"UniJIS-UCS2-HW-H", "UniJIS-UCS2-HW-V", "UniJIS-UCS2-V", "UniJIS-UTF16-H",
  "UniJIS-UTF16-V", "UniJIS-UTF32-H", "UniJIS-UTF32-V", "UniJIS-UTF8-H", "UniJIS-UTF8-V", 
"UniJIS2004-UTF16-H", "UniJIS2004-UTF16-V", "UniJIS2004-UTF32-H", "UniJIS2004-UTF32-V", "UniJIS2004-UTF8-H", 
"UniJIS2004-UTF8-V", "UniJISPro-UCS2-HW-V", "UniJISPro-UCS2-V", "UniJISPro-UTF8-V", "UniJISX0213-UTF32-H", 
"UniJISX0213-UTF32-V", "UniJISX02132004-UTF32-H", "UniJISX02132004-UTF32-V", "UniKS-UCS2-H", "UniKS-UCS2-V", 
"UniKS-UTF16-H", "UniKS-UTF16-V", "UniKS-UTF32-H", "UniKS-UTF32-V", "UniKS-UTF8-H", "UniKS-UTF8-V", "V", 
"WP-Symbol"];
-const MAX_MAP_RANGE = 2 ** 24 - 1;
-
-class CMap {
-  constructor(builtInCMap = false) {
-    this.codespaceRanges = [[], [], [], []];
-    this.numCodespaceRanges = 0;
-    this._map = [];
-    this.name = "";
-    this.vertical = false;
-    this.useCMap = null;
-    this.builtInCMap = builtInCMap;
-  }
-
-  addCodespaceRange(n, low, high) {
-    this.codespaceRanges[n - 1].push(low, high);
-    this.numCodespaceRanges++;
-  }
-
-  mapCidRange(low, high, dstLow) {
-    if (high - low > MAX_MAP_RANGE) {
-      throw new Error("mapCidRange - ignoring data above MAX_MAP_RANGE.");
-    }
-
-    while (low <= high) {
-      this._map[low++] = dstLow++;
-    }
-  }
-
-  mapBfRange(low, high, dstLow) {
-    if (high - low > MAX_MAP_RANGE) {
-      throw new Error("mapBfRange - ignoring data above MAX_MAP_RANGE.");
-    }
-
-    const lastByte = dstLow.length - 1;
-
-    while (low <= high) {
-      this._map[low++] = dstLow;
-      dstLow = dstLow.substring(0, lastByte) + String.fromCharCode(dstLow.charCodeAt(lastByte) + 1);
-    }
-  }
-
-  mapBfRangeToArray(low, high, array) {
-    if (high - low > MAX_MAP_RANGE) {
-      throw new Error("mapBfRangeToArray - ignoring data above MAX_MAP_RANGE.");
-    }
-
-    const ii = array.length;
-    let i = 0;
-
-    while (low <= high && i < ii) {
-      this._map[low] = array[i++];
-      ++low;
-    }
-  }
-
-  mapOne(src, dst) {
-    this._map[src] = dst;
-  }
-
-  lookup(code) {
-    return this._map[code];
-  }
-
-  contains(code) {
-    return this._map[code] !== undefined;
-  }
-
-  forEach(callback) {
-    const map = this._map;
-    const length = map.length;
-
-    if (length <= 0x10000) {
-      for (let i = 0; i < length; i++) {
-        if (map[i] !== undefined) {
-          callback(i, map[i]);
-        }
-      }
-    } else {
-      for (const i in map) {
-        callback(i, map[i]);
-      }
-    }
-  }
-
-  charCodeOf(value) {
-    const map = this._map;
-
-    if (map.length <= 0x10000) {
-      return map.indexOf(value);
-    }
-
-    for (const charCode in map) {
-      if (map[charCode] === value) {
-        return charCode | 0;
-      }
-    }
-
-    return -1;
-  }
-
-  getMap() {
-    return this._map;
-  }
-
-  readCharCode(str, offset, out) {
-    let c = 0;
-    const codespaceRanges = this.codespaceRanges;
-
-    for (let n = 0, nn = codespaceRanges.length; n < nn; n++) {
-      c = (c << 8 | str.charCodeAt(offset + n)) >>> 0;
-      const codespaceRange = codespaceRanges[n];
-
-      for (let k = 0, kk = codespaceRange.length; k < kk;) {
-        const low = codespaceRange[k++];
-        const high = codespaceRange[k++];
-
-        if (c >= low && c <= high) {
-          out.charcode = c;
-          out.length = n + 1;
-          return;
-        }
-      }
-    }
-
-    out.charcode = 0;
-    out.length = 1;
-  }
-
-  getCharCodeLength(charCode) {
-    const codespaceRanges = this.codespaceRanges;
-
-    for (let n = 0, nn = codespaceRanges.length; n < nn; n++) {
-      const codespaceRange = codespaceRanges[n];
-
-      for (let k = 0, kk = codespaceRange.length; k < kk;) {
-        const low = codespaceRange[k++];
-        const high = codespaceRange[k++];
-
-        if (charCode >= low && charCode <= high) {
-          return n + 1;
-        }
-      }
-    }
-
-    return 1;
-  }
-
-  get length() {
-    return this._map.length;
-  }
-
-  get isIdentityCMap() {
-    if (!(this.name === "Identity-H" || this.name === "Identity-V")) {
-      return false;
-    }
-
-    if (this._map.length !== 0x10000) {
-      return false;
-    }
-
-    for (let i = 0; i < 0x10000; i++) {
-      if (this._map[i] !== i) {
-        return false;
-      }
-    }
-
-    return true;
-  }
-
-}
-
-exports.CMap = CMap;
-
-class IdentityCMap extends CMap {
-  constructor(vertical, n) {
-    super();
-    this.vertical = vertical;
-    this.addCodespaceRange(n, 0, 0xffff);
-  }
-
-  mapCidRange(low, high, dstLow) {
-    (0, _util.unreachable)("should not call mapCidRange");
-  }
-
-  mapBfRange(low, high, dstLow) {
-    (0, _util.unreachable)("should not call mapBfRange");
-  }
-
-  mapBfRangeToArray(low, high, array) {
-    (0, _util.unreachable)("should not call mapBfRangeToArray");
-  }
-
-  mapOne(src, dst) {
-    (0, _util.unreachable)("should not call mapCidOne");
-  }
-
-  lookup(code) {
-    return Number.isInteger(code) && code <= 0xffff ? code : undefined;
-  }
-
-  contains(code) {
-    return Number.isInteger(code) && code <= 0xffff;
-  }
-
-  forEach(callback) {
-    for (let i = 0; i <= 0xffff; i++) {
-      callback(i, i);
-    }
-  }
-
-  charCodeOf(value) {
-    return Number.isInteger(value) && value <= 0xffff ? value : -1;
-  }
-
-  getMap() {
-    const map = new Array(0x10000);
-
-    for (let i = 0; i <= 0xffff; i++) {
-      map[i] = i;
-    }
-
-    return map;
-  }
-
-  get length() {
-    return 0x10000;
-  }
-
-  get isIdentityCMap() {
-    (0, _util.unreachable)("should not access .isIdentityCMap");
-  }
-
-}
-
-exports.IdentityCMap = IdentityCMap;
-
-const BinaryCMapReader = function BinaryCMapReaderClosure() {
-  function hexToInt(a, size) {
-    let n = 0;
-
-    for (let i = 0; i <= size; i++) {
-      n = n << 8 | a[i];
-    }
-
-    return n >>> 0;
-  }
-
-  function hexToStr(a, size) {
-    if (size === 1) {
-      return String.fromCharCode(a[0], a[1]);
-    }
-
-    if (size === 3) {
-      return String.fromCharCode(a[0], a[1], a[2], a[3]);
-    }
-
-    return String.fromCharCode.apply(null, a.subarray(0, size + 1));
-  }
-
-  function addHex(a, b, size) {
-    let c = 0;
-
-    for (let i = size; i >= 0; i--) {
-      c += a[i] + b[i];
-      a[i] = c & 255;
-      c >>= 8;
-    }
-  }
-
-  function incHex(a, size) {
-    let c = 1;
-
-    for (let i = size; i >= 0 && c > 0; i--) {
-      c += a[i];
-      a[i] = c & 255;
-      c >>= 8;
-    }
-  }
-
-  const MAX_NUM_SIZE = 16;
-  const MAX_ENCODED_NUM_SIZE = 19;
-
-  class BinaryCMapStream {
-    constructor(data) {
-      this.buffer = data;
-      this.pos = 0;
-      this.end = data.length;
-      this.tmpBuf = new Uint8Array(MAX_ENCODED_NUM_SIZE);
-    }
-
-    readByte() {
-      if (this.pos >= this.end) {
-        return -1;
-      }
-
-      return this.buffer[this.pos++];
-    }
-
-    readNumber() {
-      let n = 0;
-      let last;
-
-      do {
-        const b = this.readByte();
-
-        if (b < 0) {
-          throw new _util.FormatError("unexpected EOF in bcmap");
-        }
-
-        last = !(b & 0x80);
-        n = n << 7 | b & 0x7f;
-      } while (!last);
-
-      return n;
-    }
-
-    readSigned() {
-      const n = this.readNumber();
-      return n & 1 ? ~(n >>> 1) : n >>> 1;
-    }
-
-    readHex(num, size) {
-      num.set(this.buffer.subarray(this.pos, this.pos + size + 1));
-      this.pos += size + 1;
-    }
-
-    readHexNumber(num, size) {
-      let last;
-      const stack = this.tmpBuf;
-      let sp = 0;
-
-      do {
-        const b = this.readByte();
-
-        if (b < 0) {
-          throw new _util.FormatError("unexpected EOF in bcmap");
-        }
-
-        last = !(b & 0x80);
-        stack[sp++] = b & 0x7f;
-      } while (!last);
-
-      let i = size,
-          buffer = 0,
-          bufferSize = 0;
-
-      while (i >= 0) {
-        while (bufferSize < 8 && stack.length > 0) {
-          buffer |= stack[--sp] << bufferSize;
-          bufferSize += 7;
-        }
-
-        num[i] = buffer & 255;
-        i--;
-        buffer >>= 8;
-        bufferSize -= 8;
-      }
-    }
-
-    readHexSigned(num, size) {
-      this.readHexNumber(num, size);
-      const sign = num[size] & 1 ? 255 : 0;
-      let c = 0;
-
-      for (let i = 0; i <= size; i++) {
-        c = (c & 1) << 8 | num[i];
-        num[i] = c >> 1 ^ sign;
-      }
-    }
-
-    readString() {
-      const len = this.readNumber();
-      let s = "";
-
-      for (let i = 0; i < len; i++) {
-        s += String.fromCharCode(this.readNumber());
-      }
-
-      return s;
-    }
-
-  }
-
-  class BinaryCMapReader {
-    async process(data, cMap, extend) {
-      const stream = new BinaryCMapStream(data);
-      const header = stream.readByte();
-      cMap.vertical = !!(header & 1);
-      let useCMap = null;
-      const start = new Uint8Array(MAX_NUM_SIZE);
-      const end = new Uint8Array(MAX_NUM_SIZE);
-      const char = new Uint8Array(MAX_NUM_SIZE);
-      const charCode = new Uint8Array(MAX_NUM_SIZE);
-      const tmp = new Uint8Array(MAX_NUM_SIZE);
-      let code;
-      let b;
-
-      while ((b = stream.readByte()) >= 0) {
-        const type = b >> 5;
-
-        if (type === 7) {
-          switch (b & 0x1f) {
-            case 0:
-              stream.readString();
-              break;
-
-            case 1:
-              useCMap = stream.readString();
-              break;
-          }
-
-          continue;
-        }
-
-        const sequence = !!(b & 0x10);
-        const dataSize = b & 15;
-
-        if (dataSize + 1 > MAX_NUM_SIZE) {
-          throw new Error("BinaryCMapReader.process: Invalid dataSize.");
-        }
-
-        const ucs2DataSize = 1;
-        const subitemsCount = stream.readNumber();
-
-        switch (type) {
-          case 0:
-            stream.readHex(start, dataSize);
-            stream.readHexNumber(end, dataSize);
-            addHex(end, start, dataSize);
-            cMap.addCodespaceRange(dataSize + 1, hexToInt(start, dataSize), hexToInt(end, dataSize));
-
-            for (let i = 1; i < subitemsCount; i++) {
-              incHex(end, dataSize);
-              stream.readHexNumber(start, dataSize);
-              addHex(start, end, dataSize);
-              stream.readHexNumber(end, dataSize);
-              addHex(end, start, dataSize);
-              cMap.addCodespaceRange(dataSize + 1, hexToInt(start, dataSize), hexToInt(end, dataSize));
-            }
-
-            break;
-
-          case 1:
-            stream.readHex(start, dataSize);
-            stream.readHexNumber(end, dataSize);
-            addHex(end, start, dataSize);
-            stream.readNumber();
-
-            for (let i = 1; i < subitemsCount; i++) {
-              incHex(end, dataSize);
-              stream.readHexNumber(start, dataSize);
-              addHex(start, end, dataSize);
-              stream.readHexNumber(end, dataSize);
-              addHex(end, start, dataSize);
-              stream.readNumber();
-            }
-
-            break;
-
-          case 2:
-            stream.readHex(char, dataSize);
-            code = stream.readNumber();
-            cMap.mapOne(hexToInt(char, dataSize), code);
-
-            for (let i = 1; i < subitemsCount; i++) {
-              incHex(char, dataSize);
-
-              if (!sequence) {
-                stream.readHexNumber(tmp, dataSize);
-                addHex(char, tmp, dataSize);
-              }
-
-              code = stream.readSigned() + (code + 1);
-              cMap.mapOne(hexToInt(char, dataSize), code);
-            }
-
-            break;
-
-          case 3:
-            stream.readHex(start, dataSize);
-            stream.readHexNumber(end, dataSize);
-            addHex(end, start, dataSize);
-            code = stream.readNumber();
-            cMap.mapCidRange(hexToInt(start, dataSize), hexToInt(end, dataSize), code);
-
-            for (let i = 1; i < subitemsCount; i++) {
-              incHex(end, dataSize);
-
-              if (!sequence) {
-                stream.readHexNumber(start, dataSize);
-                addHex(start, end, dataSize);
-              } else {
-                start.set(end);
-              }
-
-              stream.readHexNumber(end, dataSize);
-              addHex(end, start, dataSize);
-              code = stream.readNumber();
-              cMap.mapCidRange(hexToInt(start, dataSize), hexToInt(end, dataSize), code);
-            }
-
-            break;
-
-          case 4:
-            stream.readHex(char, ucs2DataSize);
-            stream.readHex(charCode, dataSize);
-            cMap.mapOne(hexToInt(char, ucs2DataSize), hexToStr(charCode, dataSize));
-
-            for (let i = 1; i < subitemsCount; i++) {
-              incHex(char, ucs2DataSize);
-
-              if (!sequence) {
-                stream.readHexNumber(tmp, ucs2DataSize);
-                addHex(char, tmp, ucs2DataSize);
-              }
-
-              incHex(charCode, dataSize);
-              stream.readHexSigned(tmp, dataSize);
-              addHex(charCode, tmp, dataSize);
-              cMap.mapOne(hexToInt(char, ucs2DataSize), hexToStr(charCode, dataSize));
-            }
-
-            break;
-
-          case 5:
-            stream.readHex(start, ucs2DataSize);
-            stream.readHexNumber(end, ucs2DataSize);
-            addHex(end, start, ucs2DataSize);
-            stream.readHex(charCode, dataSize);
-            cMap.mapBfRange(hexToInt(start, ucs2DataSize), hexToInt(end, ucs2DataSize), hexToStr(charCode, 
dataSize));
-
-            for (let i = 1; i < subitemsCount; i++) {
-              incHex(end, ucs2DataSize);
-
-              if (!sequence) {
-                stream.readHexNumber(start, ucs2DataSize);
-                addHex(start, end, ucs2DataSize);
-              } else {
-                start.set(end);
-              }
-
-              stream.readHexNumber(end, ucs2DataSize);
-              addHex(end, start, ucs2DataSize);
-              stream.readHex(charCode, dataSize);
-              cMap.mapBfRange(hexToInt(start, ucs2DataSize), hexToInt(end, ucs2DataSize), hexToStr(charCode, 
dataSize));
-            }
-
-            break;
-
-          default:
-            throw new Error(`BinaryCMapReader.process - unknown type: ${type}`);
-        }
-      }
-
-      if (useCMap) {
-        return extend(useCMap);
-      }
-
-      return cMap;
-    }
-
-  }
-
-  return BinaryCMapReader;
-}();
-
-const CMapFactory = function CMapFactoryClosure() {
-  function strToInt(str) {
-    let a = 0;
-
-    for (let i = 0; i < str.length; i++) {
-      a = a << 8 | str.charCodeAt(i);
-    }
-
-    return a >>> 0;
-  }
-
-  function expectString(obj) {
-    if (!(0, _util.isString)(obj)) {
-      throw new _util.FormatError("Malformed CMap: expected string.");
-    }
-  }
-
-  function expectInt(obj) {
-    if (!Number.isInteger(obj)) {
-      throw new _util.FormatError("Malformed CMap: expected int.");
-    }
-  }
-
-  function parseBfChar(cMap, lexer) {
-    while (true) {
-      let obj = lexer.getObj();
-
-      if ((0, _primitives.isEOF)(obj)) {
-        break;
-      }
-
-      if ((0, _primitives.isCmd)(obj, "endbfchar")) {
-        return;
-      }
-
-      expectString(obj);
-      const src = strToInt(obj);
-      obj = lexer.getObj();
-      expectString(obj);
-      const dst = obj;
-      cMap.mapOne(src, dst);
-    }
-  }
-
-  function parseBfRange(cMap, lexer) {
-    while (true) {
-      let obj = lexer.getObj();
-
-      if ((0, _primitives.isEOF)(obj)) {
-        break;
-      }
-
-      if ((0, _primitives.isCmd)(obj, "endbfrange")) {
-        return;
-      }
-
-      expectString(obj);
-      const low = strToInt(obj);
-      obj = lexer.getObj();
-      expectString(obj);
-      const high = strToInt(obj);
-      obj = lexer.getObj();
-
-      if (Number.isInteger(obj) || (0, _util.isString)(obj)) {
-        const dstLow = Number.isInteger(obj) ? String.fromCharCode(obj) : obj;
-        cMap.mapBfRange(low, high, dstLow);
-      } else if ((0, _primitives.isCmd)(obj, "[")) {
-        obj = lexer.getObj();
-        const array = [];
-
-        while (!(0, _primitives.isCmd)(obj, "]") && !(0, _primitives.isEOF)(obj)) {
-          array.push(obj);
-          obj = lexer.getObj();
-        }
-
-        cMap.mapBfRangeToArray(low, high, array);
-      } else {
-        break;
-      }
-    }
-
-    throw new _util.FormatError("Invalid bf range.");
-  }
-
-  function parseCidChar(cMap, lexer) {
-    while (true) {
-      let obj = lexer.getObj();
-
-      if ((0, _primitives.isEOF)(obj)) {
-        break;
-      }
-
-      if ((0, _primitives.isCmd)(obj, "endcidchar")) {
-        return;
-      }
-
-      expectString(obj);
-      const src = strToInt(obj);
-      obj = lexer.getObj();
-      expectInt(obj);
-      const dst = obj;
-      cMap.mapOne(src, dst);
-    }
-  }
-
-  function parseCidRange(cMap, lexer) {
-    while (true) {
-      let obj = lexer.getObj();
-
-      if ((0, _primitives.isEOF)(obj)) {
-        break;
-      }
-
-      if ((0, _primitives.isCmd)(obj, "endcidrange")) {
-        return;
-      }
-
-      expectString(obj);
-      const low = strToInt(obj);
-      obj = lexer.getObj();
-      expectString(obj);
-      const high = strToInt(obj);
-      obj = lexer.getObj();
-      expectInt(obj);
-      const dstLow = obj;
-      cMap.mapCidRange(low, high, dstLow);
-    }
-  }
-
-  function parseCodespaceRange(cMap, lexer) {
-    while (true) {
-      let obj = lexer.getObj();
-
-      if ((0, _primitives.isEOF)(obj)) {
-        break;
-      }
-
-      if ((0, _primitives.isCmd)(obj, "endcodespacerange")) {
-        return;
-      }
-
-      if (!(0, _util.isString)(obj)) {
-        break;
-      }
-
-      const low = strToInt(obj);
-      obj = lexer.getObj();
-
-      if (!(0, _util.isString)(obj)) {
-        break;
-      }
-
-      const high = strToInt(obj);
-      cMap.addCodespaceRange(obj.length, low, high);
-    }
-
-    throw new _util.FormatError("Invalid codespace range.");
-  }
-
-  function parseWMode(cMap, lexer) {
-    const obj = lexer.getObj();
-
-    if (Number.isInteger(obj)) {
-      cMap.vertical = !!obj;
-    }
-  }
-
-  function parseCMapName(cMap, lexer) {
-    const obj = lexer.getObj();
-
-    if ((0, _primitives.isName)(obj) && (0, _util.isString)(obj.name)) {
-      cMap.name = obj.name;
-    }
-  }
-
-  async function parseCMap(cMap, lexer, fetchBuiltInCMap, useCMap) {
-    let previous, embeddedUseCMap;
-
-    objLoop: while (true) {
-      try {
-        const obj = lexer.getObj();
-
-        if ((0, _primitives.isEOF)(obj)) {
-          break;
-        } else if ((0, _primitives.isName)(obj)) {
-          if (obj.name === "WMode") {
-            parseWMode(cMap, lexer);
-          } else if (obj.name === "CMapName") {
-            parseCMapName(cMap, lexer);
-          }
-
-          previous = obj;
-        } else if ((0, _primitives.isCmd)(obj)) {
-          switch (obj.cmd) {
-            case "endcmap":
-              break objLoop;
-
-            case "usecmap":
-              if ((0, _primitives.isName)(previous)) {
-                embeddedUseCMap = previous.name;
-              }
-
-              break;
-
-            case "begincodespacerange":
-              parseCodespaceRange(cMap, lexer);
-              break;
-
-            case "beginbfchar":
-              parseBfChar(cMap, lexer);
-              break;
-
-            case "begincidchar":
-              parseCidChar(cMap, lexer);
-              break;
-
-            case "beginbfrange":
-              parseBfRange(cMap, lexer);
-              break;
-
-            case "begincidrange":
-              parseCidRange(cMap, lexer);
-              break;
-          }
-        }
-      } catch (ex) {
-        if (ex instanceof _core_utils.MissingDataException) {
-          throw ex;
-        }
-
-        (0, _util.warn)("Invalid cMap data: " + ex);
-        continue;
-      }
-    }
-
-    if (!useCMap && embeddedUseCMap) {
-      useCMap = embeddedUseCMap;
-    }
-
-    if (useCMap) {
-      return extendCMap(cMap, fetchBuiltInCMap, useCMap);
-    }
-
-    return cMap;
-  }
-
-  async function extendCMap(cMap, fetchBuiltInCMap, useCMap) {
-    cMap.useCMap = await createBuiltInCMap(useCMap, fetchBuiltInCMap);
-
-    if (cMap.numCodespaceRanges === 0) {
-      const useCodespaceRanges = cMap.useCMap.codespaceRanges;
-
-      for (let i = 0; i < useCodespaceRanges.length; i++) {
-        cMap.codespaceRanges[i] = useCodespaceRanges[i].slice();
-      }
-
-      cMap.numCodespaceRanges = cMap.useCMap.numCodespaceRanges;
-    }
-
-    cMap.useCMap.forEach(function (key, value) {
-      if (!cMap.contains(key)) {
-        cMap.mapOne(key, cMap.useCMap.lookup(key));
-      }
-    });
-    return cMap;
-  }
-
-  async function createBuiltInCMap(name, fetchBuiltInCMap) {
-    if (name === "Identity-H") {
-      return new IdentityCMap(false, 2);
-    } else if (name === "Identity-V") {
-      return new IdentityCMap(true, 2);
-    }
-
-    if (!BUILT_IN_CMAPS.includes(name)) {
-      throw new Error("Unknown CMap name: " + name);
-    }
-
-    if (!fetchBuiltInCMap) {
-      throw new Error("Built-in CMap parameters are not provided.");
-    }
-
-    const {
-      cMapData,
-      compressionType
-    } = await fetchBuiltInCMap(name);
-    const cMap = new CMap(true);
-
-    if (compressionType === _util.CMapCompressionType.BINARY) {
-      return new BinaryCMapReader().process(cMapData, cMap, useCMap => {
-        return extendCMap(cMap, fetchBuiltInCMap, useCMap);
-      });
-    }
-
-    if (compressionType === _util.CMapCompressionType.NONE) {
-      const lexer = new _parser.Lexer(new _stream.Stream(cMapData));
-      return parseCMap(cMap, lexer, fetchBuiltInCMap, null);
-    }
-
-    throw new Error("TODO: Only BINARY/NONE CMap compression is currently supported.");
-  }
-
-  return {
-    async create(params) {
-      const encoding = params.encoding;
-      const fetchBuiltInCMap = params.fetchBuiltInCMap;
-      const useCMap = params.useCMap;
-
-      if ((0, _primitives.isName)(encoding)) {
-        return createBuiltInCMap(encoding.name, fetchBuiltInCMap);
-      } else if ((0, _primitives.isStream)(encoding)) {
-        const parsedCMap = await parseCMap(new CMap(), new _parser.Lexer(encoding), fetchBuiltInCMap, 
useCMap);
-
-        if (parsedCMap.isIdentityCMap) {
-          return createBuiltInCMap(parsedCMap.name, fetchBuiltInCMap);
-        }
-
-        return parsedCMap;
-      }
-
-      throw new Error("Encoding required.");
-    }
-
-  };
-}();
-
-exports.CMapFactory = CMapFactory;
-
-/***/ }),
-/* 17 */
-/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
-
-
-
-Object.defineProperty(exports, "__esModule", ({
-  value: true
-}));
-exports.Parser = exports.Linearization = exports.Lexer = void 0;
-
-var _util = __w_pdfjs_require__(2);
-
-var _primitives = __w_pdfjs_require__(5);
-
-var _core_utils = __w_pdfjs_require__(9);
-
-var _ascii_85_stream = __w_pdfjs_require__(18);
-
-var _ascii_hex_stream = __w_pdfjs_require__(20);
-
-var _ccitt_stream = __w_pdfjs_require__(21);
-
-var _flate_stream = __w_pdfjs_require__(23);
-
-var _jbig2_stream = __w_pdfjs_require__(24);
-
-var _jpeg_stream = __w_pdfjs_require__(27);
-
-var _jpx_stream = __w_pdfjs_require__(29);
-
-var _lzw_stream = __w_pdfjs_require__(31);
-
-var _stream = __w_pdfjs_require__(10);
-
-var _predictor_stream = __w_pdfjs_require__(32);
-
-var _run_length_stream = __w_pdfjs_require__(33);
-
-const MAX_LENGTH_TO_CACHE = 1000;
-const MAX_ADLER32_LENGTH = 5552;
-
-function computeAdler32(bytes) {
-  const bytesLength = bytes.length;
-  let a = 1,
-      b = 0;
-
-  for (let i = 0; i < bytesLength; ++i) {
-    a += bytes[i] & 0xff;
-    b += a;
-  }
-
-  return b % 65521 << 16 | a % 65521;
-}
-
-class Parser {
-  constructor({
-    lexer,
-    xref,
-    allowStreams = false,
-    recoveryMode = false
-  }) {
-    this.lexer = lexer;
-    this.xref = xref;
-    this.allowStreams = allowStreams;
-    this.recoveryMode = recoveryMode;
-    this.imageCache = Object.create(null);
-    this.refill();
-  }
-
-  refill() {
-    this.buf1 = this.lexer.getObj();
-    this.buf2 = this.lexer.getObj();
-  }
-
-  shift() {
-    if (this.buf2 instanceof _primitives.Cmd && this.buf2.cmd === "ID") {
-      this.buf1 = this.buf2;
-      this.buf2 = null;
-    } else {
-      this.buf1 = this.buf2;
-      this.buf2 = this.lexer.getObj();
-    }
-  }
-
-  tryShift() {
-    try {
-      this.shift();
-      return true;
-    } catch (e) {
-      if (e instanceof _core_utils.MissingDataException) {
-        throw e;
-      }
-
-      return false;
-    }
-  }
-
-  getObj(cipherTransform = null) {
-    const buf1 = this.buf1;
-    this.shift();
-
-    if (buf1 instanceof _primitives.Cmd) {
-      switch (buf1.cmd) {
-        case "BI":
-          return this.makeInlineImage(cipherTransform);
-
-        case "[":
-          const array = [];
-
-          while (!(0, _primitives.isCmd)(this.buf1, "]") && !(0, _primitives.isEOF)(this.buf1)) {
-            array.push(this.getObj(cipherTransform));
-          }
-
-          if ((0, _primitives.isEOF)(this.buf1)) {
-            if (this.recoveryMode) {
-              return array;
-            }
-
-            throw new _core_utils.ParserEOFException("End of file inside array.");
-          }
-
-          this.shift();
-          return array;
-
-        case "<<":
-          const dict = new _primitives.Dict(this.xref);
-
-          while (!(0, _primitives.isCmd)(this.buf1, ">>") && !(0, _primitives.isEOF)(this.buf1)) {
-            if (!(0, _primitives.isName)(this.buf1)) {
-              (0, _util.info)("Malformed dictionary: key must be a name object");
-              this.shift();
-              continue;
-            }
-
-            const key = this.buf1.name;
-            this.shift();
-
-            if ((0, _primitives.isEOF)(this.buf1)) {
-              break;
-            }
-
-            dict.set(key, this.getObj(cipherTransform));
-          }
-
-          if ((0, _primitives.isEOF)(this.buf1)) {
-            if (this.recoveryMode) {
-              return dict;
-            }
-
-            throw new _core_utils.ParserEOFException("End of file inside dictionary.");
-          }
-
-          if ((0, _primitives.isCmd)(this.buf2, "stream")) {
-            return this.allowStreams ? this.makeStream(dict, cipherTransform) : dict;
-          }
-
-          this.shift();
-          return dict;
-
-        default:
-          return buf1;
-      }
-    }
-
-    if (Number.isInteger(buf1)) {
-      if (Number.isInteger(this.buf1) && (0, _primitives.isCmd)(this.buf2, "R")) {
-        const ref = _primitives.Ref.get(buf1, this.buf1);
-
-        this.shift();
-        this.shift();
-        return ref;
-      }
-
-      return buf1;
-    }
-
-    if (typeof buf1 === "string") {
-      if (cipherTransform) {
-        return cipherTransform.decryptString(buf1);
-      }
-
-      return buf1;
-    }
-
-    return buf1;
-  }
-
-  findDefaultInlineStreamEnd(stream) {
-    const E = 0x45,
-          I = 0x49,
-          SPACE = 0x20,
-          LF = 0xa,
-          CR = 0xd,
-          NUL = 0x0;
-    const lexer = this.lexer,
-          startPos = stream.pos,
-          n = 10;
-    let state = 0,
-        ch,
-        maybeEIPos;
-
-    while ((ch = stream.getByte()) !== -1) {
-      if (state === 0) {
-        state = ch === E ? 1 : 0;
-      } else if (state === 1) {
-        state = ch === I ? 2 : 0;
-      } else {
-        (0, _util.assert)(state === 2, "findDefaultInlineStreamEnd - invalid state.");
-
-        if (ch === SPACE || ch === LF || ch === CR) {
-          maybeEIPos = stream.pos;
-          const followingBytes = stream.peekBytes(n);
-
-          for (let i = 0, ii = followingBytes.length; i < ii; i++) {
-            ch = followingBytes[i];
-
-            if (ch === NUL && followingBytes[i + 1] !== NUL) {
-              continue;
-            }
-
-            if (ch !== LF && ch !== CR && (ch < SPACE || ch > 0x7f)) {
-              state = 0;
-              break;
-            }
-          }
-
-          if (state !== 2) {
-            continue;
-          }
-
-          if (lexer.knownCommands) {
-            const nextObj = lexer.peekObj();
-
-            if (nextObj instanceof _primitives.Cmd && !lexer.knownCommands[nextObj.cmd]) {
-              state = 0;
-            }
-          } else {
-            (0, _util.warn)("findDefaultInlineStreamEnd - `lexer.knownCommands` is undefined.");
-          }
-
-          if (state === 2) {
-            break;
-          }
-        } else {
-          state = 0;
-        }
-      }
-    }
-
-    if (ch === -1) {
-      (0, _util.warn)("findDefaultInlineStreamEnd: " + "Reached the end of the stream without finding a 
valid EI marker");
-
-      if (maybeEIPos) {
-        (0, _util.warn)('... trying to recover by using the last "EI" occurrence.');
-        stream.skip(-(stream.pos - maybeEIPos));
-      }
-    }
-
-    let endOffset = 4;
-    stream.skip(-endOffset);
-    ch = stream.peekByte();
-    stream.skip(endOffset);
-
-    if (!(0, _core_utils.isWhiteSpace)(ch)) {
-      endOffset--;
-    }
-
-    return stream.pos - endOffset - startPos;
-  }
-
-  findDCTDecodeInlineStreamEnd(stream) {
-    const startPos = stream.pos;
-    let foundEOI = false,
-        b,
-        markerLength;
-
-    while ((b = stream.getByte()) !== -1) {
-      if (b !== 0xff) {
-        continue;
-      }
-
-      switch (stream.getByte()) {
-        case 0x00:
-          break;
-
-        case 0xff:
-          stream.skip(-1);
-          break;
-
-        case 0xd9:
-          foundEOI = true;
-          break;
-
-        case 0xc0:
-        case 0xc1:
-        case 0xc2:
-        case 0xc3:
-        case 0xc5:
-        case 0xc6:
-        case 0xc7:
-        case 0xc9:
-        case 0xca:
-        case 0xcb:
-        case 0xcd:
-        case 0xce:
-        case 0xcf:
-        case 0xc4:
-        case 0xcc:
-        case 0xda:
-        case 0xdb:
-        case 0xdc:
-        case 0xdd:
-        case 0xde:
-        case 0xdf:
-        case 0xe0:
-        case 0xe1:
-        case 0xe2:
-        case 0xe3:
-        case 0xe4:
-        case 0xe5:
-        case 0xe6:
-        case 0xe7:
-        case 0xe8:
-        case 0xe9:
-        case 0xea:
-        case 0xeb:
-        case 0xec:
-        case 0xed:
-        case 0xee:
-        case 0xef:
-        case 0xfe:
-          markerLength = stream.getUint16();
-
-          if (markerLength > 2) {
-            stream.skip(markerLength - 2);
-          } else {
-            stream.skip(-2);
-          }
-
-          break;
-      }
-
-      if (foundEOI) {
-        break;
-      }
-    }
-
-    const length = stream.pos - startPos;
-
-    if (b === -1) {
-      (0, _util.warn)("Inline DCTDecode image stream: " + "EOI marker not found, searching for /EI/ 
instead.");
-      stream.skip(-length);
-      return this.findDefaultInlineStreamEnd(stream);
-    }
-
-    this.inlineStreamSkipEI(stream);
-    return length;
-  }
-
-  findASCII85DecodeInlineStreamEnd(stream) {
-    const TILDE = 0x7e,
-          GT = 0x3e;
-    const startPos = stream.pos;
-    let ch;
-
-    while ((ch = stream.getByte()) !== -1) {
-      if (ch === TILDE) {
-        const tildePos = stream.pos;
-        ch = stream.peekByte();
-
-        while ((0, _core_utils.isWhiteSpace)(ch)) {
-          stream.skip();
-          ch = stream.peekByte();
-        }
-
-        if (ch === GT) {
-          stream.skip();
-          break;
-        }
-
-        if (stream.pos > tildePos) {
-          const maybeEI = stream.peekBytes(2);
-
-          if (maybeEI[0] === 0x45 && maybeEI[1] === 0x49) {
-            break;
-          }
-        }
-      }
-    }
-
-    const length = stream.pos - startPos;
-
-    if (ch === -1) {
-      (0, _util.warn)("Inline ASCII85Decode image stream: " + "EOD marker not found, searching for /EI/ 
instead.");
-      stream.skip(-length);
-      return this.findDefaultInlineStreamEnd(stream);
-    }
-
-    this.inlineStreamSkipEI(stream);
-    return length;
-  }
-
-  findASCIIHexDecodeInlineStreamEnd(stream) {
-    const GT = 0x3e;
-    const startPos = stream.pos;
-    let ch;
-
-    while ((ch = stream.getByte()) !== -1) {
-      if (ch === GT) {
-        break;
-      }
-    }
-
-    const length = stream.pos - startPos;
-
-    if (ch === -1) {
-      (0, _util.warn)("Inline ASCIIHexDecode image stream: " + "EOD marker not found, searching for /EI/ 
instead.");
-      stream.skip(-length);
-      return this.findDefaultInlineStreamEnd(stream);
-    }
-
-    this.inlineStreamSkipEI(stream);
-    return length;
-  }
-
-  inlineStreamSkipEI(stream) {
-    const E = 0x45,
-          I = 0x49;
-    let state = 0,
-        ch;
-
-    while ((ch = stream.getByte()) !== -1) {
-      if (state === 0) {
-        state = ch === E ? 1 : 0;
-      } else if (state === 1) {
-        state = ch === I ? 2 : 0;
-      } else if (state === 2) {
-        break;
-      }
-    }
-  }
-
-  makeInlineImage(cipherTransform) {
-    const lexer = this.lexer;
-    const stream = lexer.stream;
-    const dict = new _primitives.Dict(this.xref);
-    let dictLength;
-
-    while (!(0, _primitives.isCmd)(this.buf1, "ID") && !(0, _primitives.isEOF)(this.buf1)) {
-      if (!(0, _primitives.isName)(this.buf1)) {
-        throw new _util.FormatError("Dictionary key must be a name object");
-      }
-
-      const key = this.buf1.name;
-      this.shift();
-
-      if ((0, _primitives.isEOF)(this.buf1)) {
-        break;
-      }
-
-      dict.set(key, this.getObj(cipherTransform));
-    }
-
-    if (lexer.beginInlineImagePos !== -1) {
-      dictLength = stream.pos - lexer.beginInlineImagePos;
-    }
-
-    const filter = dict.get("Filter", "F");
-    let filterName;
-
-    if ((0, _primitives.isName)(filter)) {
-      filterName = filter.name;
-    } else if (Array.isArray(filter)) {
-      const filterZero = this.xref.fetchIfRef(filter[0]);
-
-      if ((0, _primitives.isName)(filterZero)) {
-        filterName = filterZero.name;
-      }
-    }
-
-    const startPos = stream.pos;
-    let length;
-
-    if (filterName === "DCTDecode" || filterName === "DCT") {
-      length = this.findDCTDecodeInlineStreamEnd(stream);
-    } else if (filterName === "ASCII85Decode" || filterName === "A85") {
-      length = this.findASCII85DecodeInlineStreamEnd(stream);
-    } else if (filterName === "ASCIIHexDecode" || filterName === "AHx") {
-      length = this.findASCIIHexDecodeInlineStreamEnd(stream);
-    } else {
-      length = this.findDefaultInlineStreamEnd(stream);
-    }
-
-    let imageStream = stream.makeSubStream(startPos, length, dict);
-    let cacheKey;
-
-    if (length < MAX_LENGTH_TO_CACHE && dictLength < MAX_ADLER32_LENGTH) {
-      const imageBytes = imageStream.getBytes();
-      imageStream.reset();
-      const initialStreamPos = stream.pos;
-      stream.pos = lexer.beginInlineImagePos;
-      const dictBytes = stream.getBytes(dictLength);
-      stream.pos = initialStreamPos;
-      cacheKey = computeAdler32(imageBytes) + "_" + computeAdler32(dictBytes);
-      const cacheEntry = this.imageCache[cacheKey];
-
-      if (cacheEntry !== undefined) {
-        this.buf2 = _primitives.Cmd.get("EI");
-        this.shift();
-        cacheEntry.reset();
-        return cacheEntry;
-      }
-    }
-
-    if (cipherTransform) {
-      imageStream = cipherTransform.createStream(imageStream, length);
-    }
-
-    imageStream = this.filter(imageStream, dict, length);
-    imageStream.dict = dict;
-
-    if (cacheKey !== undefined) {
-      imageStream.cacheKey = `inline_${length}_${cacheKey}`;
-      this.imageCache[cacheKey] = imageStream;
-    }
-
-    this.buf2 = _primitives.Cmd.get("EI");
-    this.shift();
-    return imageStream;
-  }
-
-  _findStreamLength(startPos, signature) {
-    const {
-      stream
-    } = this.lexer;
-    stream.pos = startPos;
-    const SCAN_BLOCK_LENGTH = 2048;
-    const signatureLength = signature.length;
-
-    while (stream.pos < stream.end) {
-      const scanBytes = stream.peekBytes(SCAN_BLOCK_LENGTH);
-      const scanLength = scanBytes.length - signatureLength;
-
-      if (scanLength <= 0) {
-        break;
-      }
-
-      let pos = 0;
-
-      while (pos < scanLength) {
-        let j = 0;
-
-        while (j < signatureLength && scanBytes[pos + j] === signature[j]) {
-          j++;
-        }
-
-        if (j >= signatureLength) {
-          stream.pos += pos;
-          return stream.pos - startPos;
-        }
-
-        pos++;
-      }
-
-      stream.pos += scanLength;
-    }
-
-    return -1;
-  }
-
-  makeStream(dict, cipherTransform) {
-    const lexer = this.lexer;
-    let stream = lexer.stream;
-    lexer.skipToNextLine();
-    const startPos = stream.pos - 1;
-    let length = dict.get("Length");
-
-    if (!Number.isInteger(length)) {
-      (0, _util.info)(`Bad length "${length}" in stream`);
-      length = 0;
-    }
-
-    stream.pos = startPos + length;
-    lexer.nextChar();
-
-    if (this.tryShift() && (0, _primitives.isCmd)(this.buf2, "endstream")) {
-      this.shift();
-    } else {
-      const ENDSTREAM_SIGNATURE = new Uint8Array([0x65, 0x6e, 0x64, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d]);
-
-      let actualLength = this._findStreamLength(startPos, ENDSTREAM_SIGNATURE);
-
-      if (actualLength < 0) {
-        const MAX_TRUNCATION = 1;
-
-        for (let i = 1; i <= MAX_TRUNCATION; i++) {
-          const end = ENDSTREAM_SIGNATURE.length - i;
-          const TRUNCATED_SIGNATURE = ENDSTREAM_SIGNATURE.slice(0, end);
-
-          const maybeLength = this._findStreamLength(startPos, TRUNCATED_SIGNATURE);
-
-          if (maybeLength >= 0) {
-            const lastByte = stream.peekBytes(end + 1)[end];
-
-            if (!(0, _core_utils.isWhiteSpace)(lastByte)) {
-              break;
-            }
-
-            (0, _util.info)(`Found "${(0, _util.bytesToString)(TRUNCATED_SIGNATURE)}" when ` + "searching 
for endstream command.");
-            actualLength = maybeLength;
-            break;
-          }
-        }
-
-        if (actualLength < 0) {
-          throw new _util.FormatError("Missing endstream command.");
-        }
-      }
-
-      length = actualLength;
-      lexer.nextChar();
-      this.shift();
-      this.shift();
-    }
-
-    this.shift();
-    stream = stream.makeSubStream(startPos, length, dict);
-
-    if (cipherTransform) {
-      stream = cipherTransform.createStream(stream, length);
-    }
-
-    stream = this.filter(stream, dict, length);
-    stream.dict = dict;
-    return stream;
-  }
-
-  filter(stream, dict, length) {
-    let filter = dict.get("Filter", "F");
-    let params = dict.get("DecodeParms", "DP");
-
-    if ((0, _primitives.isName)(filter)) {
-      if (Array.isArray(params)) {
-        (0, _util.warn)("/DecodeParms should not contain an Array, " + "when /Filter contains a Name.");
-      }
-
-      return this.makeFilter(stream, filter.name, length, params);
-    }
-
-    let maybeLength = length;
-
-    if (Array.isArray(filter)) {
-      const filterArray = filter;
-      const paramsArray = params;
-
-      for (let i = 0, ii = filterArray.length; i < ii; ++i) {
-        filter = this.xref.fetchIfRef(filterArray[i]);
-
-        if (!(0, _primitives.isName)(filter)) {
-          throw new _util.FormatError(`Bad filter name "${filter}"`);
-        }
-
-        params = null;
-
-        if (Array.isArray(paramsArray) && i in paramsArray) {
-          params = this.xref.fetchIfRef(paramsArray[i]);
-        }
-
-        stream = this.makeFilter(stream, filter.name, maybeLength, params);
-        maybeLength = null;
-      }
-    }
-
-    return stream;
-  }
-
-  makeFilter(stream, name, maybeLength, params) {
-    if (maybeLength === 0) {
-      (0, _util.warn)(`Empty "${name}" stream.`);
-      return new _stream.NullStream();
-    }
-
-    try {
-      const xrefStreamStats = this.xref.stats.streamTypes;
-
-      if (name === "FlateDecode" || name === "Fl") {
-        xrefStreamStats[_util.StreamType.FLATE] = true;
-
-        if (params) {
-          return new _predictor_stream.PredictorStream(new _flate_stream.FlateStream(stream, maybeLength), 
maybeLength, params);
-        }
-
-        return new _flate_stream.FlateStream(stream, maybeLength);
-      }
-
-      if (name === "LZWDecode" || name === "LZW") {
-        xrefStreamStats[_util.StreamType.LZW] = true;
-        let earlyChange = 1;
-
-        if (params) {
-          if (params.has("EarlyChange")) {
-            earlyChange = params.get("EarlyChange");
-          }
-
-          return new _predictor_stream.PredictorStream(new _lzw_stream.LZWStream(stream, maybeLength, 
earlyChange), maybeLength, params);
-        }
-
-        return new _lzw_stream.LZWStream(stream, maybeLength, earlyChange);
-      }
-
-      if (name === "DCTDecode" || name === "DCT") {
-        xrefStreamStats[_util.StreamType.DCT] = true;
-        return new _jpeg_stream.JpegStream(stream, maybeLength, params);
-      }
-
-      if (name === "JPXDecode" || name === "JPX") {
-        xrefStreamStats[_util.StreamType.JPX] = true;
-        return new _jpx_stream.JpxStream(stream, maybeLength, params);
-      }
-
-      if (name === "ASCII85Decode" || name === "A85") {
-        xrefStreamStats[_util.StreamType.A85] = true;
-        return new _ascii_85_stream.Ascii85Stream(stream, maybeLength);
-      }
-
-      if (name === "ASCIIHexDecode" || name === "AHx") {
-        xrefStreamStats[_util.StreamType.AHX] = true;
-        return new _ascii_hex_stream.AsciiHexStream(stream, maybeLength);
-      }
-
-      if (name === "CCITTFaxDecode" || name === "CCF") {
-        xrefStreamStats[_util.StreamType.CCF] = true;
-        return new _ccitt_stream.CCITTFaxStream(stream, maybeLength, params);
-      }
-
-      if (name === "RunLengthDecode" || name === "RL") {
-        xrefStreamStats[_util.StreamType.RLX] = true;
-        return new _run_length_stream.RunLengthStream(stream, maybeLength);
-      }
-
-      if (name === "JBIG2Decode") {
-        xrefStreamStats[_util.StreamType.JBIG] = true;
-        return new _jbig2_stream.Jbig2Stream(stream, maybeLength, params);
-      }
-
-      (0, _util.warn)(`Filter "${name}" is not supported.`);
-      return stream;
-    } catch (ex) {
-      if (ex instanceof _core_utils.MissingDataException) {
-        throw ex;
-      }
-
-      (0, _util.warn)(`Invalid stream: "${ex}"`);
-      return new _stream.NullStream();
-    }
-  }
-
-}
-
-exports.Parser = Parser;
-const specialChars = [1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 1, 0, 0, 0, 0, 2, 0, 0, 2, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
-
-function toHexDigit(ch) {
-  if (ch >= 0x30 && ch <= 0x39) {
-    return ch & 0x0f;
-  }
-
-  if (ch >= 0x41 && ch <= 0x46 || ch >= 0x61 && ch <= 0x66) {
-    return (ch & 0x0f) + 9;
-  }
-
-  return -1;
-}
-
-class Lexer {
-  constructor(stream, knownCommands = null) {
-    this.stream = stream;
-    this.nextChar();
-    this.strBuf = [];
-    this.knownCommands = knownCommands;
-    this._hexStringNumWarn = 0;
-    this.beginInlineImagePos = -1;
-  }
-
-  nextChar() {
-    return this.currentChar = this.stream.getByte();
-  }
-
-  peekChar() {
-    return this.stream.peekByte();
-  }
-
-  getNumber() {
-    let ch = this.currentChar;
-    let eNotation = false;
-    let divideBy = 0;
-    let sign = 0;
-
-    if (ch === 0x2d) {
-      sign = -1;
-      ch = this.nextChar();
-
-      if (ch === 0x2d) {
-        ch = this.nextChar();
-      }
-    } else if (ch === 0x2b) {
-      sign = 1;
-      ch = this.nextChar();
-    }
-
-    if (ch === 0x0a || ch === 0x0d) {
-      do {
-        ch = this.nextChar();
-      } while (ch === 0x0a || ch === 0x0d);
-    }
-
-    if (ch === 0x2e) {
-      divideBy = 10;
-      ch = this.nextChar();
-    }
-
-    if (ch < 0x30 || ch > 0x39) {
-      if (divideBy === 10 && sign === 0 && ((0, _core_utils.isWhiteSpace)(ch) || ch === -1)) {
-        (0, _util.warn)("Lexer.getNumber - treating a single decimal point as zero.");
-        return 0;
-      }
-
-      throw new _util.FormatError(`Invalid number: ${String.fromCharCode(ch)} (charCode ${ch})`);
-    }
-
-    sign = sign || 1;
-    let baseValue = ch - 0x30;
-    let powerValue = 0;
-    let powerValueSign = 1;
-
-    while ((ch = this.nextChar()) >= 0) {
-      if (ch >= 0x30 && ch <= 0x39) {
-        const currentDigit = ch - 0x30;
-
-        if (eNotation) {
-          powerValue = powerValue * 10 + currentDigit;
-        } else {
-          if (divideBy !== 0) {
-            divideBy *= 10;
-          }
-
-          baseValue = baseValue * 10 + currentDigit;
-        }
-      } else if (ch === 0x2e) {
-        if (divideBy === 0) {
-          divideBy = 1;
-        } else {
-          break;
-        }
-      } else if (ch === 0x2d) {
-        (0, _util.warn)("Badly formatted number: minus sign in the middle");
-      } else if (ch === 0x45 || ch === 0x65) {
-        ch = this.peekChar();
-
-        if (ch === 0x2b || ch === 0x2d) {
-          powerValueSign = ch === 0x2d ? -1 : 1;
-          this.nextChar();
-        } else if (ch < 0x30 || ch > 0x39) {
-          break;
-        }
-
-        eNotation = true;
-      } else {
-        break;
-      }
-    }
-
-    if (divideBy !== 0) {
-      baseValue /= divideBy;
-    }
-
-    if (eNotation) {
-      baseValue *= 10 ** (powerValueSign * powerValue);
-    }
-
-    return sign * baseValue;
-  }
-
-  getString() {
-    let numParen = 1;
-    let done = false;
-    const strBuf = this.strBuf;
-    strBuf.length = 0;
-    let ch = this.nextChar();
-
-    while (true) {
-      let charBuffered = false;
-
-      switch (ch | 0) {
-        case -1:
-          (0, _util.warn)("Unterminated string");
-          done = true;
-          break;
-
-        case 0x28:
-          ++numParen;
-          strBuf.push("(");
-          break;
-
-        case 0x29:
-          if (--numParen === 0) {
-            this.nextChar();
-            done = true;
-          } else {
-            strBuf.push(")");
-          }
-
-          break;
-
-        case 0x5c:
-          ch = this.nextChar();
-
-          switch (ch) {
-            case -1:
-              (0, _util.warn)("Unterminated string");
-              done = true;
-              break;
-
-            case 0x6e:
-              strBuf.push("\n");
-              break;
-
-            case 0x72:
-              strBuf.push("\r");
-              break;
-
-            case 0x74:
-              strBuf.push("\t");
-              break;
-
-            case 0x62:
-              strBuf.push("\b");
-              break;
-
-            case 0x66:
-              strBuf.push("\f");
-              break;
-
-            case 0x5c:
-            case 0x28:
-            case 0x29:
-              strBuf.push(String.fromCharCode(ch));
-              break;
-
-            case 0x30:
-            case 0x31:
-            case 0x32:
-            case 0x33:
-            case 0x34:
-            case 0x35:
-            case 0x36:
-            case 0x37:
-              let x = ch & 0x0f;
-              ch = this.nextChar();
-              charBuffered = true;
-
-              if (ch >= 0x30 && ch <= 0x37) {
-                x = (x << 3) + (ch & 0x0f);
-                ch = this.nextChar();
-
-                if (ch >= 0x30 && ch <= 0x37) {
-                  charBuffered = false;
-                  x = (x << 3) + (ch & 0x0f);
-                }
-              }
-
-              strBuf.push(String.fromCharCode(x));
-              break;
-
-            case 0x0d:
-              if (this.peekChar() === 0x0a) {
-                this.nextChar();
-              }
-
-              break;
-
-            case 0x0a:
-              break;
-
-            default:
-              strBuf.push(String.fromCharCode(ch));
-              break;
-          }
-
-          break;
-
-        default:
-          strBuf.push(String.fromCharCode(ch));
-          break;
-      }
-
-      if (done) {
-        break;
-      }
-
-      if (!charBuffered) {
-        ch = this.nextChar();
-      }
-    }
-
-    return strBuf.join("");
-  }
-
-  getName() {
-    let ch, previousCh;
-    const strBuf = this.strBuf;
-    strBuf.length = 0;
-
-    while ((ch = this.nextChar()) >= 0 && !specialChars[ch]) {
-      if (ch === 0x23) {
-        ch = this.nextChar();
-
-        if (specialChars[ch]) {
-          (0, _util.warn)("Lexer_getName: " + "NUMBER SIGN (#) should be followed by a hexadecimal number.");
-          strBuf.push("#");
-          break;
-        }
-
-        const x = toHexDigit(ch);
-
-        if (x !== -1) {
-          previousCh = ch;
-          ch = this.nextChar();
-          const x2 = toHexDigit(ch);
-
-          if (x2 === -1) {
-            (0, _util.warn)(`Lexer_getName: Illegal digit (${String.fromCharCode(ch)}) ` + "in hexadecimal 
number.");
-            strBuf.push("#", String.fromCharCode(previousCh));
-
-            if (specialChars[ch]) {
-              break;
-            }
-
-            strBuf.push(String.fromCharCode(ch));
-            continue;
-          }
-
-          strBuf.push(String.fromCharCode(x << 4 | x2));
-        } else {
-          strBuf.push("#", String.fromCharCode(ch));
-        }
-      } else {
-        strBuf.push(String.fromCharCode(ch));
-      }
-    }
-
-    if (strBuf.length > 127) {
-      (0, _util.warn)(`Name token is longer than allowed by the spec: ${strBuf.length}`);
-    } else if (strBuf.length === 0) {
-      (0, _util.warn)("Name token is empty.");
-    }
-
-    return _primitives.Name.get(strBuf.join(""));
-  }
-
-  _hexStringWarn(ch) {
-    const MAX_HEX_STRING_NUM_WARN = 5;
-
-    if (this._hexStringNumWarn++ === MAX_HEX_STRING_NUM_WARN) {
-      (0, _util.warn)("getHexString - ignoring additional invalid characters.");
-      return;
-    }
-
-    if (this._hexStringNumWarn > MAX_HEX_STRING_NUM_WARN) {
-      return;
-    }
-
-    (0, _util.warn)(`getHexString - ignoring invalid character: ${ch}`);
-  }
-
-  getHexString() {
-    const strBuf = this.strBuf;
-    strBuf.length = 0;
-    let ch = this.currentChar;
-    let isFirstHex = true;
-    let firstDigit, secondDigit;
-    this._hexStringNumWarn = 0;
-
-    while (true) {
-      if (ch < 0) {
-        (0, _util.warn)("Unterminated hex string");
-        break;
-      } else if (ch === 0x3e) {
-        this.nextChar();
-        break;
-      } else if (specialChars[ch] === 1) {
-        ch = this.nextChar();
-        continue;
-      } else {
-        if (isFirstHex) {
-          firstDigit = toHexDigit(ch);
-
-          if (firstDigit === -1) {
-            this._hexStringWarn(ch);
-
-            ch = this.nextChar();
-            continue;
-          }
-        } else {
-          secondDigit = toHexDigit(ch);
-
-          if (secondDigit === -1) {
-            this._hexStringWarn(ch);
-
-            ch = this.nextChar();
-            continue;
-          }
-
-          strBuf.push(String.fromCharCode(firstDigit << 4 | secondDigit));
-        }
-
-        isFirstHex = !isFirstHex;
-        ch = this.nextChar();
-      }
-    }
-
-    return strBuf.join("");
-  }
-
-  getObj() {
-    let comment = false;
-    let ch = this.currentChar;
-
-    while (true) {
-      if (ch < 0) {
-        return _primitives.EOF;
-      }
-
-      if (comment) {
-        if (ch === 0x0a || ch === 0x0d) {
-          comment = false;
-        }
-      } else if (ch === 0x25) {
-        comment = true;
-      } else if (specialChars[ch] !== 1) {
-        break;
-      }
-
-      ch = this.nextChar();
-    }
-
-    switch (ch | 0) {
-      case 0x30:
-      case 0x31:
-      case 0x32:
-      case 0x33:
-      case 0x34:
-      case 0x35:
-      case 0x36:
-      case 0x37:
-      case 0x38:
-      case 0x39:
-      case 0x2b:
-      case 0x2d:
-      case 0x2e:
-        return this.getNumber();
-
-      case 0x28:
-        return this.getString();
-
-      case 0x2f:
-        return this.getName();
-
-      case 0x5b:
-        this.nextChar();
-        return _primitives.Cmd.get("[");
-
-      case 0x5d:
-        this.nextChar();
-        return _primitives.Cmd.get("]");
-
-      case 0x3c:
-        ch = this.nextChar();
-
-        if (ch === 0x3c) {
-          this.nextChar();
-          return _primitives.Cmd.get("<<");
-        }
-
-        return this.getHexString();
-
-      case 0x3e:
-        ch = this.nextChar();
-
-        if (ch === 0x3e) {
-          this.nextChar();
-          return _primitives.Cmd.get(">>");
-        }
-
-        return _primitives.Cmd.get(">");
-
-      case 0x7b:
-        this.nextChar();
-        return _primitives.Cmd.get("{");
-
-      case 0x7d:
-        this.nextChar();
-        return _primitives.Cmd.get("}");
-
-      case 0x29:
-        this.nextChar();
-        throw new _util.FormatError(`Illegal character: ${ch}`);
-    }
-
-    let str = String.fromCharCode(ch);
-    const knownCommands = this.knownCommands;
-    let knownCommandFound = knownCommands && knownCommands[str] !== undefined;
-
-    while ((ch = this.nextChar()) >= 0 && !specialChars[ch]) {
-      const possibleCommand = str + String.fromCharCode(ch);
-
-      if (knownCommandFound && knownCommands[possibleCommand] === undefined) {
-        break;
-      }
-
-      if (str.length === 128) {
-        throw new _util.FormatError(`Command token too long: ${str.length}`);
-      }
-
-      str = possibleCommand;
-      knownCommandFound = knownCommands && knownCommands[str] !== undefined;
-    }
-
-    if (str === "true") {
-      return true;
-    }
-
-    if (str === "false") {
-      return false;
-    }
-
-    if (str === "null") {
-      return null;
-    }
-
-    if (str === "BI") {
-      this.beginInlineImagePos = this.stream.pos;
-    }
-
-    return _primitives.Cmd.get(str);
-  }
-
-  peekObj() {
-    const streamPos = this.stream.pos,
-          currentChar = this.currentChar,
-          beginInlineImagePos = this.beginInlineImagePos;
-    let nextObj;
-
-    try {
-      nextObj = this.getObj();
-    } catch (ex) {
-      if (ex instanceof _core_utils.MissingDataException) {
-        throw ex;
-      }
-
-      (0, _util.warn)(`peekObj: ${ex}`);
-    }
-
-    this.stream.pos = streamPos;
-    this.currentChar = currentChar;
-    this.beginInlineImagePos = beginInlineImagePos;
-    return nextObj;
-  }
-
-  skipToNextLine() {
-    let ch = this.currentChar;
-
-    while (ch >= 0) {
-      if (ch === 0x0d) {
-        ch = this.nextChar();
-
-        if (ch === 0x0a) {
-          this.nextChar();
-        }
-
-        break;
-      } else if (ch === 0x0a) {
-        this.nextChar();
-        break;
-      }
-
-      ch = this.nextChar();
-    }
-  }
-
-}
-
-exports.Lexer = Lexer;
-
-class Linearization {
-  static create(stream) {
-    function getInt(linDict, name, allowZeroValue = false) {
-      const obj = linDict.get(name);
-
-      if (Number.isInteger(obj) && (allowZeroValue ? obj >= 0 : obj > 0)) {
-        return obj;
-      }
-
-      throw new Error(`The "${name}" parameter in the linearization ` + "dictionary is invalid.");
-    }
-
-    function getHints(linDict) {
-      const hints = linDict.get("H");
-      let hintsLength;
-
-      if (Array.isArray(hints) && ((hintsLength = hints.length) === 2 || hintsLength === 4)) {
-        for (let index = 0; index < hintsLength; index++) {
-          const hint = hints[index];
-
-          if (!(Number.isInteger(hint) && hint > 0)) {
-            throw new Error(`Hint (${index}) in the linearization dictionary is invalid.`);
-          }
-        }
-
-        return hints;
-      }
-
-      throw new Error("Hint array in the linearization dictionary is invalid.");
-    }
-
-    const parser = new Parser({
-      lexer: new Lexer(stream),
-      xref: null
-    });
-    const obj1 = parser.getObj();
-    const obj2 = parser.getObj();
-    const obj3 = parser.getObj();
-    const linDict = parser.getObj();
-    let obj, length;
-
-    if (!(Number.isInteger(obj1) && Number.isInteger(obj2) && (0, _primitives.isCmd)(obj3, "obj") && (0, 
_primitives.isDict)(linDict) && (0, _util.isNum)(obj = linDict.get("Linearized")) && obj > 0)) {
-      return null;
-    } else if ((length = getInt(linDict, "L")) !== stream.length) {
-      throw new Error('The "L" parameter in the linearization dictionary ' + "does not equal the stream 
length.");
-    }
-
-    return {
-      length,
-      hints: getHints(linDict),
-      objectNumberFirst: getInt(linDict, "O"),
-      endFirst: getInt(linDict, "E"),
-      numPages: getInt(linDict, "N"),
-      mainXRefEntriesOffset: getInt(linDict, "T"),
-      pageFirst: linDict.has("P") ? getInt(linDict, "P", true) : 0
-    };
-  }
-
-}
-
-exports.Linearization = Linearization;
-
-/***/ }),
-/* 18 */
-/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
-
-
-
-Object.defineProperty(exports, "__esModule", ({
-  value: true
-}));
-exports.Ascii85Stream = void 0;
-
-var _decode_stream = __w_pdfjs_require__(19);
-
-var _core_utils = __w_pdfjs_require__(9);
-
-class Ascii85Stream extends _decode_stream.DecodeStream {
-  constructor(str, maybeLength) {
-    if (maybeLength) {
-      maybeLength *= 0.8;
-    }
-
-    super(maybeLength);
-    this.str = str;
-    this.dict = str.dict;
-    this.input = new Uint8Array(5);
-  }
-
-  readBlock() {
-    const TILDA_CHAR = 0x7e;
-    const Z_LOWER_CHAR = 0x7a;
-    const EOF = -1;
-    const str = this.str;
-    let c = str.getByte();
-
-    while ((0, _core_utils.isWhiteSpace)(c)) {
-      c = str.getByte();
-    }
-
-    if (c === EOF || c === TILDA_CHAR) {
-      this.eof = true;
-      return;
-    }
-
-    const bufferLength = this.bufferLength;
-    let buffer, i;
-
-    if (c === Z_LOWER_CHAR) {
-      buffer = this.ensureBuffer(bufferLength + 4);
-
-      for (i = 0; i < 4; ++i) {
-        buffer[bufferLength + i] = 0;
-      }
-
-      this.bufferLength += 4;
-    } else {
-      const input = this.input;
-      input[0] = c;
-
-      for (i = 1; i < 5; ++i) {
-        c = str.getByte();
-
-        while ((0, _core_utils.isWhiteSpace)(c)) {
-          c = str.getByte();
-        }
-
-        input[i] = c;
-
-        if (c === EOF || c === TILDA_CHAR) {
-          break;
-        }
-      }
-
-      buffer = this.ensureBuffer(bufferLength + i - 1);
-      this.bufferLength += i - 1;
-
-      if (i < 5) {
-        for (; i < 5; ++i) {
-          input[i] = 0x21 + 84;
-        }
-
-        this.eof = true;
-      }
-
-      let t = 0;
-
-      for (i = 0; i < 5; ++i) {
-        t = t * 85 + (input[i] - 0x21);
-      }
-
-      for (i = 3; i >= 0; --i) {
-        buffer[bufferLength + i] = t & 0xff;
-        t >>= 8;
-      }
-    }
-  }
-
-}
-
-exports.Ascii85Stream = Ascii85Stream;
-
-/***/ }),
-/* 19 */
-/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
-
-
-
-Object.defineProperty(exports, "__esModule", ({
-  value: true
-}));
-exports.StreamsSequenceStream = exports.DecodeStream = void 0;
-
-var _base_stream = __w_pdfjs_require__(6);
-
-var _stream = __w_pdfjs_require__(10);
-
-const emptyBuffer = new Uint8Array(0);
-
-class DecodeStream extends _base_stream.BaseStream {
-  constructor(maybeMinBufferLength) {
-    super();
-    this._rawMinBufferLength = maybeMinBufferLength || 0;
-    this.pos = 0;
-    this.bufferLength = 0;
-    this.eof = false;
-    this.buffer = emptyBuffer;
-    this.minBufferLength = 512;
-
-    if (maybeMinBufferLength) {
-      while (this.minBufferLength < maybeMinBufferLength) {
-        this.minBufferLength *= 2;
-      }
-    }
-  }
-
-  get isEmpty() {
-    while (!this.eof && this.bufferLength === 0) {
-      this.readBlock();
-    }
-
-    return this.bufferLength === 0;
-  }
-
-  ensureBuffer(requested) {
-    const buffer = this.buffer;
-
-    if (requested <= buffer.byteLength) {
-      return buffer;
-    }
-
-    let size = this.minBufferLength;
-
-    while (size < requested) {
-      size *= 2;
-    }
-
-    const buffer2 = new Uint8Array(size);
-    buffer2.set(buffer);
-    return this.buffer = buffer2;
-  }
-
-  getByte() {
-    const pos = this.pos;
-
-    while (this.bufferLength <= pos) {
-      if (this.eof) {
-        return -1;
-      }
-
-      this.readBlock();
-    }
-
-    return this.buffer[this.pos++];
-  }
-
-  getBytes(length, forceClamped = false) {
-    const pos = this.pos;
-    let end;
-
-    if (length) {
-      this.ensureBuffer(pos + length);
-      end = pos + length;
-
-      while (!this.eof && this.bufferLength < end) {
-        this.readBlock();
-      }
-
-      const bufEnd = this.bufferLength;
-
-      if (end > bufEnd) {
-        end = bufEnd;
-      }
-    } else {
-      while (!this.eof) {
-        this.readBlock();
-      }
-
-      end = this.bufferLength;
-    }
-
-    this.pos = end;
-    const subarray = this.buffer.subarray(pos, end);
-    return forceClamped && !(subarray instanceof Uint8ClampedArray) ? new Uint8ClampedArray(subarray) : 
subarray;
-  }
-
-  reset() {
-    this.pos = 0;
-  }
-
-  makeSubStream(start, length, dict = null) {
-    if (length === undefined) {
-      while (!this.eof) {
-        this.readBlock();
-      }
-    } else {
-      const end = start + length;
-
-      while (this.bufferLength <= end && !this.eof) {
-        this.readBlock();
-      }
-    }
-
-    return new _stream.Stream(this.buffer, start, length, dict);
-  }
-
-  getBaseStreams() {
-    return this.str ? this.str.getBaseStreams() : null;
-  }
-
-}
-
-exports.DecodeStream = DecodeStream;
-
-class StreamsSequenceStream extends DecodeStream {
-  constructor(streams) {
-    let maybeLength = 0;
-
-    for (const stream of streams) {
-      maybeLength += stream instanceof DecodeStream ? stream._rawMinBufferLength : stream.length;
-    }
-
-    super(maybeLength);
-    this.streams = streams;
-  }
-
-  readBlock() {
-    const streams = this.streams;
-
-    if (streams.length === 0) {
-      this.eof = true;
-      return;
-    }
-
-    const stream = streams.shift();
-    const chunk = stream.getBytes();
-    const bufferLength = this.bufferLength;
-    const newLength = bufferLength + chunk.length;
-    const buffer = this.ensureBuffer(newLength);
-    buffer.set(chunk, bufferLength);
-    this.bufferLength = newLength;
-  }
-
-  getBaseStreams() {
-    const baseStreamsBuf = [];
-
-    for (const stream of this.streams) {
-      const baseStreams = stream.getBaseStreams();
-
-      if (baseStreams) {
-        baseStreamsBuf.push(...baseStreams);
-      }
-    }
-
-    return baseStreamsBuf.length > 0 ? baseStreamsBuf : null;
-  }
-
-}
-
-exports.StreamsSequenceStream = StreamsSequenceStream;
-
-/***/ }),
-/* 20 */
-/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
-
-
-
-Object.defineProperty(exports, "__esModule", ({
-  value: true
-}));
-exports.AsciiHexStream = void 0;
-
-var _decode_stream = __w_pdfjs_require__(19);
-
-class AsciiHexStream extends _decode_stream.DecodeStream {
-  constructor(str, maybeLength) {
-    if (maybeLength) {
-      maybeLength *= 0.5;
-    }
-
-    super(maybeLength);
-    this.str = str;
-    this.dict = str.dict;
-    this.firstDigit = -1;
-  }
-
-  readBlock() {
-    const UPSTREAM_BLOCK_SIZE = 8000;
-    const bytes = this.str.getBytes(UPSTREAM_BLOCK_SIZE);
-
-    if (!bytes.length) {
-      this.eof = true;
-      return;
-    }
-
-    const maxDecodeLength = bytes.length + 1 >> 1;
-    const buffer = this.ensureBuffer(this.bufferLength + maxDecodeLength);
-    let bufferLength = this.bufferLength;
-    let firstDigit = this.firstDigit;
-
-    for (const ch of bytes) {
-      let digit;
-
-      if (ch >= 0x30 && ch <= 0x39) {
-        digit = ch & 0x0f;
-      } else if (ch >= 0x41 && ch <= 0x46 || ch >= 0x61 && ch <= 0x66) {
-        digit = (ch & 0x0f) + 9;
-      } else if (ch === 0x3e) {
-        this.eof = true;
-        break;
-      } else {
-        continue;
-      }
-
-      if (firstDigit < 0) {
-        firstDigit = digit;
-      } else {
-        buffer[bufferLength++] = firstDigit << 4 | digit;
-        firstDigit = -1;
-      }
-    }
-
-    if (firstDigit >= 0 && this.eof) {
-      buffer[bufferLength++] = firstDigit << 4;
-      firstDigit = -1;
-    }
-
-    this.firstDigit = firstDigit;
-    this.bufferLength = bufferLength;
-  }
-
-}
-
-exports.AsciiHexStream = AsciiHexStream;
-
-/***/ }),
-/* 21 */
-/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
-
-
-
-Object.defineProperty(exports, "__esModule", ({
-  value: true
-}));
-exports.CCITTFaxStream = void 0;
-
-var _primitives = __w_pdfjs_require__(5);
-
-var _ccitt = __w_pdfjs_require__(22);
-
-var _decode_stream = __w_pdfjs_require__(19);
-
-class CCITTFaxStream extends _decode_stream.DecodeStream {
-  constructor(str, maybeLength, params) {
-    super(maybeLength);
-    this.str = str;
-    this.dict = str.dict;
-
-    if (!(0, _primitives.isDict)(params)) {
-      params = _primitives.Dict.empty;
-    }
-
-    const source = {
-      next() {
-        return str.getByte();
-      }
-
-    };
-    this.ccittFaxDecoder = new _ccitt.CCITTFaxDecoder(source, {
-      K: params.get("K"),
-      EndOfLine: params.get("EndOfLine"),
-      EncodedByteAlign: params.get("EncodedByteAlign"),
-      Columns: params.get("Columns"),
-      Rows: params.get("Rows"),
-      EndOfBlock: params.get("EndOfBlock"),
-      BlackIs1: params.get("BlackIs1")
-    });
-  }
-
-  readBlock() {
-    while (!this.eof) {
-      const c = this.ccittFaxDecoder.readNextChar();
-
-      if (c === -1) {
-        this.eof = true;
-        return;
-      }
-
-      this.ensureBuffer(this.bufferLength + 1);
-      this.buffer[this.bufferLength++] = c;
-    }
-  }
-
-}
-
-exports.CCITTFaxStream = CCITTFaxStream;
-
-/***/ }),
-/* 22 */
-/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
-
-
-
-Object.defineProperty(exports, "__esModule", ({
-  value: true
-}));
-exports.CCITTFaxDecoder = void 0;
-
-var _util = __w_pdfjs_require__(2);
-
-const ccittEOL = -2;
-const ccittEOF = -1;
-const twoDimPass = 0;
-const twoDimHoriz = 1;
-const twoDimVert0 = 2;
-const twoDimVertR1 = 3;
-const twoDimVertL1 = 4;
-const twoDimVertR2 = 5;
-const twoDimVertL2 = 6;
-const twoDimVertR3 = 7;
-const twoDimVertL3 = 8;
-const twoDimTable = [[-1, -1], [-1, -1], [7, twoDimVertL3], [7, twoDimVertR3], [6, twoDimVertL2], [6, 
twoDimVertL2], [6, twoDimVertR2], [6, twoDimVertR2], [4, twoDimPass], [4, twoDimPass], [4, twoDimPass], [4, 
twoDimPass], [4, twoDimPass], [4, twoDimPass], [4, twoDimPass], [4, twoDimPass], [3, twoDimHoriz], [3, 
twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, 
twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, 
twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], 
[3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, 
twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], 
[3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, 
twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], 
 [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, 
twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [1, twoDimVert0], 
[1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], 
[1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], 
[1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], 
[1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], 
[1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], 
[1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], 
[1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], 
[1, twoDimVert0], [1, twoDimVert0
 ], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, 
twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, 
twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, 
twoDimVert0], [1, twoDimVert0]];
-const whiteTable1 = [[-1, -1], [12, ccittEOL], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], 
[-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [11, 1792], [11, 1792], [12, 
1984], [12, 2048], [12, 2112], [12, 2176], [12, 2240], [12, 2304], [11, 1856], [11, 1856], [11, 1920], [11, 
1920], [12, 2368], [12, 2432], [12, 2496], [12, 2560]];
-const whiteTable2 = [[-1, -1], [-1, -1], [-1, -1], [-1, -1], [8, 29], [8, 29], [8, 30], [8, 30], [8, 45], 
[8, 45], [8, 46], [8, 46], [7, 22], [7, 22], [7, 22], [7, 22], [7, 23], [7, 23], [7, 23], [7, 23], [8, 47], 
[8, 47], [8, 48], [8, 48], [6, 13], [6, 13], [6, 13], [6, 13], [6, 13], [6, 13], [6, 13], [6, 13], [7, 20], 
[7, 20], [7, 20], [7, 20], [8, 33], [8, 33], [8, 34], [8, 34], [8, 35], [8, 35], [8, 36], [8, 36], [8, 37], 
[8, 37], [8, 38], [8, 38], [7, 19], [7, 19], [7, 19], [7, 19], [8, 31], [8, 31], [8, 32], [8, 32], [6, 1], 
[6, 1], [6, 1], [6, 1], [6, 1], [6, 1], [6, 1], [6, 1], [6, 12], [6, 12], [6, 12], [6, 12], [6, 12], [6, 12], 
[6, 12], [6, 12], [8, 53], [8, 53], [8, 54], [8, 54], [7, 26], [7, 26], [7, 26], [7, 26], [8, 39], [8, 39], 
[8, 40], [8, 40], [8, 41], [8, 41], [8, 42], [8, 42], [8, 43], [8, 43], [8, 44], [8, 44], [7, 21], [7, 21], 
[7, 21], [7, 21], [7, 28], [7, 28], [7, 28], [7, 28], [8, 61], [8, 61], [8, 62], [8, 62], [8, 63], [8, 63], 
[8, 0], [8, 0], [8, 320], 
 [8, 320], [8, 384], [8, 384], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 
10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 11], [5, 11], [5, 11], [5, 11], [5, 
11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [7, 
27], [7, 27], [7, 27], [7, 27], [8, 59], [8, 59], [8, 60], [8, 60], [9, 1472], [9, 1536], [9, 1600], [9, 
1728], [7, 18], [7, 18], [7, 18], [7, 18], [7, 24], [7, 24], [7, 24], [7, 24], [8, 49], [8, 49], [8, 50], [8, 
50], [8, 51], [8, 51], [8, 52], [8, 52], [7, 25], [7, 25], [7, 25], [7, 25], [8, 55], [8, 55], [8, 56], [8, 
56], [8, 57], [8, 57], [8, 58], [8, 58], [6, 192], [6, 192], [6, 192], [6, 192], [6, 192], [6, 192], [6, 
192], [6, 192], [6, 1664], [6, 1664], [6, 1664], [6, 1664], [6, 1664], [6, 1664], [6, 1664], [6, 1664], [8, 
448], [8, 448], [8, 512], [8, 512], [9, 704], [9, 768], [8, 640], [8, 640], [8, 576], [8, 576], [9, 832], [9, 
896], [9, 960], [9, 1024], [9
 , 1088], [9, 1152], [9, 1216], [9, 1280], [9, 1344], [9, 1408], [7, 256], [7, 256], [7, 256], [7, 256], [4, 
2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], 
[4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 
2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], 
[4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 
3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [5, 128], [5, 128], [5, 128], [5, 
128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 
128], [5, 128], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 
8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], 
[5, 9], [5, 9], [5, 9
 ], [5, 9], [5, 9], [5, 9], [5, 9], [6, 16], [6, 16], [6, 16], [6, 16], [6, 16], [6, 16], [6, 16], [6, 16], 
[6, 17], [6, 17], [6, 17], [6, 17], [6, 17], [6, 17], [6, 17], [6, 17], [4, 4], [4, 4], [4, 4], [4, 4], [4, 
4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], 
[4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 
4], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], 
[4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 
5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [6, 14], [6, 14], [6, 14], [6, 14], [6, 14], [6, 14], [6, 14], 
[6, 14], [6, 15], [6, 15], [6, 15], [6, 15], [6, 15], [6, 15], [6, 15], [6, 15], [5, 64], [5, 64], [5, 64], 
[5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], 
[5, 64], [4, 6], [4, 6], [4
 , 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 
6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], 
[4, 6], [4, 6], [4, 6], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 
7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], 
[4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7]];
-const blackTable1 = [[-1, -1], [-1, -1], [12, ccittEOL], [12, ccittEOL], [-1, -1], [-1, -1], [-1, -1], [-1, 
-1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, 
-1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, 
-1], [-1, -1], [-1, -1], [11, 1792], [11, 1792], [11, 1792], [11, 1792], [12, 1984], [12, 1984], [12, 2048], 
[12, 2048], [12, 2112], [12, 2112], [12, 2176], [12, 2176], [12, 2240], [12, 2240], [12, 2304], [12, 2304], 
[11, 1856], [11, 1856], [11, 1856], [11, 1856], [11, 1920], [11, 1920], [11, 1920], [11, 1920], [12, 2368], 
[12, 2368], [12, 2432], [12, 2432], [12, 2496], [12, 2496], [12, 2560], [12, 2560], [10, 18], [10, 18], [10, 
18], [10, 18], [10, 18], [10, 18], [10, 18], [10, 18], [12, 52], [12, 52], [13, 640], [13, 704], [13, 768], 
[13, 832], [12, 55], [12, 55], [12, 56], [12, 56], [13, 1280], [13, 1344], [13, 1408], [13, 1472], [12, 59], 
[12, 59], [12, 60]
 , [12, 60], [13, 1536], [13, 1600], [11, 24], [11, 24], [11, 24], [11, 24], [11, 25], [11, 25], [11, 25], 
[11, 25], [13, 1664], [13, 1728], [12, 320], [12, 320], [12, 384], [12, 384], [12, 448], [12, 448], [13, 
512], [13, 576], [12, 53], [12, 53], [12, 54], [12, 54], [13, 896], [13, 960], [13, 1024], [13, 1088], [13, 
1152], [13, 1216], [10, 64], [10, 64], [10, 64], [10, 64], [10, 64], [10, 64], [10, 64], [10, 64]];
-const blackTable2 = [[8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 
13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [11, 23], [11, 23], [12, 50], [12, 51], [12, 44], 
[12, 45], [12, 46], [12, 47], [12, 57], [12, 58], [12, 61], [12, 256], [10, 16], [10, 16], [10, 16], [10, 
16], [10, 17], [10, 17], [10, 17], [10, 17], [12, 48], [12, 49], [12, 62], [12, 63], [12, 30], [12, 31], [12, 
32], [12, 33], [12, 40], [12, 41], [11, 22], [11, 22], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], 
[8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [7, 10], [7, 10], 
[7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], 
[7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], 
[7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], 
[7, 11], [7, 11], [7, 11]
 , [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 
11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [9, 
15], [9, 15], [9, 15], [9, 15], [9, 15], [9, 15], [9, 15], [9, 15], [12, 128], [12, 192], [12, 26], [12, 27], 
[12, 28], [12, 29], [11, 19], [11, 19], [11, 20], [11, 20], [12, 34], [12, 35], [12, 36], [12, 37], [12, 38], 
[12, 39], [11, 21], [11, 21], [12, 42], [12, 43], [10, 0], [10, 0], [10, 0], [10, 0], [7, 12], [7, 12], [7, 
12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 
12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 
12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12]];
-const blackTable3 = [[-1, -1], [-1, -1], [-1, -1], [-1, -1], [6, 9], [6, 8], [5, 7], [5, 7], [4, 6], [4, 6], 
[4, 6], [4, 6], [4, 5], [4, 5], [4, 5], [4, 5], [3, 1], [3, 1], [3, 1], [3, 1], [3, 1], [3, 1], [3, 1], [3, 
1], [3, 4], [3, 4], [3, 4], [3, 4], [3, 4], [3, 4], [3, 4], [3, 4], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], 
[2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 2], [2, 2], [2, 
2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2]];
-
-class CCITTFaxDecoder {
-  constructor(source, options = {}) {
-    if (!source || typeof source.next !== "function") {
-      throw new Error('CCITTFaxDecoder - invalid "source" parameter.');
-    }
-
-    this.source = source;
-    this.eof = false;
-    this.encoding = options.K || 0;
-    this.eoline = options.EndOfLine || false;
-    this.byteAlign = options.EncodedByteAlign || false;
-    this.columns = options.Columns || 1728;
-    this.rows = options.Rows || 0;
-    let eoblock = options.EndOfBlock;
-
-    if (eoblock === null || eoblock === undefined) {
-      eoblock = true;
-    }
-
-    this.eoblock = eoblock;
-    this.black = options.BlackIs1 || false;
-    this.codingLine = new Uint32Array(this.columns + 1);
-    this.refLine = new Uint32Array(this.columns + 2);
-    this.codingLine[0] = this.columns;
-    this.codingPos = 0;
-    this.row = 0;
-    this.nextLine2D = this.encoding < 0;
-    this.inputBits = 0;
-    this.inputBuf = 0;
-    this.outputBits = 0;
-    this.rowsDone = false;
-    let code1;
-
-    while ((code1 = this._lookBits(12)) === 0) {
-      this._eatBits(1);
-    }
-
-    if (code1 === 1) {
-      this._eatBits(12);
-    }
-
-    if (this.encoding > 0) {
-      this.nextLine2D = !this._lookBits(1);
-
-      this._eatBits(1);
-    }
-  }
-
-  readNextChar() {
-    if (this.eof) {
-      return -1;
-    }
-
-    const refLine = this.refLine;
-    const codingLine = this.codingLine;
-    const columns = this.columns;
-    let refPos, blackPixels, bits, i;
-
-    if (this.outputBits === 0) {
-      if (this.rowsDone) {
-        this.eof = true;
-      }
-
-      if (this.eof) {
-        return -1;
-      }
-
-      this.err = false;
-      let code1, code2, code3;
-
-      if (this.nextLine2D) {
-        for (i = 0; codingLine[i] < columns; ++i) {
-          refLine[i] = codingLine[i];
-        }
-
-        refLine[i++] = columns;
-        refLine[i] = columns;
-        codingLine[0] = 0;
-        this.codingPos = 0;
-        refPos = 0;
-        blackPixels = 0;
-
-        while (codingLine[this.codingPos] < columns) {
-          code1 = this._getTwoDimCode();
-
-          switch (code1) {
-            case twoDimPass:
-              this._addPixels(refLine[refPos + 1], blackPixels);
-
-              if (refLine[refPos + 1] < columns) {
-                refPos += 2;
-              }
-
-              break;
-
-            case twoDimHoriz:
-              code1 = code2 = 0;
-
-              if (blackPixels) {
-                do {
-                  code1 += code3 = this._getBlackCode();
-                } while (code3 >= 64);
-
-                do {
-                  code2 += code3 = this._getWhiteCode();
-                } while (code3 >= 64);
-              } else {
-                do {
-                  code1 += code3 = this._getWhiteCode();
-                } while (code3 >= 64);
-
-                do {
-                  code2 += code3 = this._getBlackCode();
-                } while (code3 >= 64);
-              }
-
-              this._addPixels(codingLine[this.codingPos] + code1, blackPixels);
-
-              if (codingLine[this.codingPos] < columns) {
-                this._addPixels(codingLine[this.codingPos] + code2, blackPixels ^ 1);
-              }
-
-              while (refLine[refPos] <= codingLine[this.codingPos] && refLine[refPos] < columns) {
-                refPos += 2;
-              }
-
-              break;
-
-            case twoDimVertR3:
-              this._addPixels(refLine[refPos] + 3, blackPixels);
-
-              blackPixels ^= 1;
-
-              if (codingLine[this.codingPos] < columns) {
-                ++refPos;
-
-                while (refLine[refPos] <= codingLine[this.codingPos] && refLine[refPos] < columns) {
-                  refPos += 2;
-                }
-              }
-
-              break;
-
-            case twoDimVertR2:
-              this._addPixels(refLine[refPos] + 2, blackPixels);
-
-              blackPixels ^= 1;
-
-              if (codingLine[this.codingPos] < columns) {
-                ++refPos;
-
-                while (refLine[refPos] <= codingLine[this.codingPos] && refLine[refPos] < columns) {
-                  refPos += 2;
-                }
-              }
-
-              break;
-
-            case twoDimVertR1:
-              this._addPixels(refLine[refPos] + 1, blackPixels);
-
-              blackPixels ^= 1;
-
-              if (codingLine[this.codingPos] < columns) {
-                ++refPos;
-
-                while (refLine[refPos] <= codingLine[this.codingPos] && refLine[refPos] < columns) {
-                  refPos += 2;
-                }
-              }
-
-              break;
-
-            case twoDimVert0:
-              this._addPixels(refLine[refPos], blackPixels);
-
-              blackPixels ^= 1;
-
-              if (codingLine[this.codingPos] < columns) {
-                ++refPos;
-
-                while (refLine[refPos] <= codingLine[this.codingPos] && refLine[refPos] < columns) {
-                  refPos += 2;
-                }
-              }
-
-              break;
-
-            case twoDimVertL3:
-              this._addPixelsNeg(refLine[refPos] - 3, blackPixels);
-
-              blackPixels ^= 1;
-
-              if (codingLine[this.codingPos] < columns) {
-                if (refPos > 0) {
-                  --refPos;
-                } else {
-                  ++refPos;
-                }
-
-                while (refLine[refPos] <= codingLine[this.codingPos] && refLine[refPos] < columns) {
-                  refPos += 2;
-                }
-              }
-
-              break;
-
-            case twoDimVertL2:
-              this._addPixelsNeg(refLine[refPos] - 2, blackPixels);
-
-              blackPixels ^= 1;
-
-              if (codingLine[this.codingPos] < columns) {
-                if (refPos > 0) {
-                  --refPos;
-                } else {
-                  ++refPos;
-                }
-
-                while (refLine[refPos] <= codingLine[this.codingPos] && refLine[refPos] < columns) {
-                  refPos += 2;
-                }
-              }
-
-              break;
-
-            case twoDimVertL1:
-              this._addPixelsNeg(refLine[refPos] - 1, blackPixels);
-
-              blackPixels ^= 1;
-
-              if (codingLine[this.codingPos] < columns) {
-                if (refPos > 0) {
-                  --refPos;
-                } else {
-                  ++refPos;
-                }
-
-                while (refLine[refPos] <= codingLine[this.codingPos] && refLine[refPos] < columns) {
-                  refPos += 2;
-                }
-              }
-
-              break;
-
-            case ccittEOF:
-              this._addPixels(columns, 0);
-
-              this.eof = true;
-              break;
-
-            default:
-              (0, _util.info)("bad 2d code");
-
-              this._addPixels(columns, 0);
-
-              this.err = true;
-          }
-        }
-      } else {
-        codingLine[0] = 0;
-        this.codingPos = 0;
-        blackPixels = 0;
-
-        while (codingLine[this.codingPos] < columns) {
-          code1 = 0;
-
-          if (blackPixels) {
-            do {
-              code1 += code3 = this._getBlackCode();
-            } while (code3 >= 64);
-          } else {
-            do {
-              code1 += code3 = this._getWhiteCode();
-            } while (code3 >= 64);
-          }
-
-          this._addPixels(codingLine[this.codingPos] + code1, blackPixels);
-
-          blackPixels ^= 1;
-        }
-      }
-
-      let gotEOL = false;
-
-      if (this.byteAlign) {
-        this.inputBits &= ~7;
-      }
-
-      if (!this.eoblock && this.row === this.rows - 1) {
-        this.rowsDone = true;
-      } else {
-        code1 = this._lookBits(12);
-
-        if (this.eoline) {
-          while (code1 !== ccittEOF && code1 !== 1) {
-            this._eatBits(1);
-
-            code1 = this._lookBits(12);
-          }
-        } else {
-          while (code1 === 0) {
-            this._eatBits(1);
-
-            code1 = this._lookBits(12);
-          }
-        }
-
-        if (code1 === 1) {
-          this._eatBits(12);
-
-          gotEOL = true;
-        } else if (code1 === ccittEOF) {
-          this.eof = true;
-        }
-      }
-
-      if (!this.eof && this.encoding > 0 && !this.rowsDone) {
-        this.nextLine2D = !this._lookBits(1);
-
-        this._eatBits(1);
-      }
-
-      if (this.eoblock && gotEOL && this.byteAlign) {
-        code1 = this._lookBits(12);
-
-        if (code1 === 1) {
-          this._eatBits(12);
-
-          if (this.encoding > 0) {
-            this._lookBits(1);
-
-            this._eatBits(1);
-          }
-
-          if (this.encoding >= 0) {
-            for (i = 0; i < 4; ++i) {
-              code1 = this._lookBits(12);
-
-              if (code1 !== 1) {
-                (0, _util.info)("bad rtc code: " + code1);
-              }
-
-              this._eatBits(12);
-
-              if (this.encoding > 0) {
-                this._lookBits(1);
-
-                this._eatBits(1);
-              }
-            }
-          }
-
-          this.eof = true;
-        }
-      } else if (this.err && this.eoline) {
-        while (true) {
-          code1 = this._lookBits(13);
-
-          if (code1 === ccittEOF) {
-            this.eof = true;
-            return -1;
-          }
-
-          if (code1 >> 1 === 1) {
-            break;
-          }
-
-          this._eatBits(1);
-        }
-
-        this._eatBits(12);
-
-        if (this.encoding > 0) {
-          this._eatBits(1);
-
-          this.nextLine2D = !(code1 & 1);
-        }
-      }
-
-      if (codingLine[0] > 0) {
-        this.outputBits = codingLine[this.codingPos = 0];
-      } else {
-        this.outputBits = codingLine[this.codingPos = 1];
-      }
-
-      this.row++;
-    }
-
-    let c;
-
-    if (this.outputBits >= 8) {
-      c = this.codingPos & 1 ? 0 : 0xff;
-      this.outputBits -= 8;
-
-      if (this.outputBits === 0 && codingLine[this.codingPos] < columns) {
-        this.codingPos++;
-        this.outputBits = codingLine[this.codingPos] - codingLine[this.codingPos - 1];
-      }
-    } else {
-      bits = 8;
-      c = 0;
-
-      do {
-        if (this.outputBits > bits) {
-          c <<= bits;
-
-          if (!(this.codingPos & 1)) {
-            c |= 0xff >> 8 - bits;
-          }
-
-          this.outputBits -= bits;
-          bits = 0;
-        } else {
-          c <<= this.outputBits;
-
-          if (!(this.codingPos & 1)) {
-            c |= 0xff >> 8 - this.outputBits;
-          }
-
-          bits -= this.outputBits;
-          this.outputBits = 0;
-
-          if (codingLine[this.codingPos] < columns) {
-            this.codingPos++;
-            this.outputBits = codingLine[this.codingPos] - codingLine[this.codingPos - 1];
-          } else if (bits > 0) {
-            c <<= bits;
-            bits = 0;
-          }
-        }
-      } while (bits);
-    }
-
-    if (this.black) {
-      c ^= 0xff;
-    }
-
-    return c;
-  }
-
-  _addPixels(a1, blackPixels) {
-    const codingLine = this.codingLine;
-    let codingPos = this.codingPos;
-
-    if (a1 > codingLine[codingPos]) {
-      if (a1 > this.columns) {
-        (0, _util.info)("row is wrong length");
-        this.err = true;
-        a1 = this.columns;
-      }
-
-      if (codingPos & 1 ^ blackPixels) {
-        ++codingPos;
-      }
-
-      codingLine[codingPos] = a1;
-    }
-
-    this.codingPos = codingPos;
-  }
-
-  _addPixelsNeg(a1, blackPixels) {
-    const codingLine = this.codingLine;
-    let codingPos = this.codingPos;
-
-    if (a1 > codingLine[codingPos]) {
-      if (a1 > this.columns) {
-        (0, _util.info)("row is wrong length");
-        this.err = true;
-        a1 = this.columns;
-      }
-
-      if (codingPos & 1 ^ blackPixels) {
-        ++codingPos;
-      }
-
-      codingLine[codingPos] = a1;
-    } else if (a1 < codingLine[codingPos]) {
-      if (a1 < 0) {
-        (0, _util.info)("invalid code");
-        this.err = true;
-        a1 = 0;
-      }
-
-      while (codingPos > 0 && a1 < codingLine[codingPos - 1]) {
-        --codingPos;
-      }
-
-      codingLine[codingPos] = a1;
-    }
-
-    this.codingPos = codingPos;
-  }
-
-  _findTableCode(start, end, table, limit) {
-    const limitValue = limit || 0;
-
-    for (let i = start; i <= end; ++i) {
-      let code = this._lookBits(i);
-
-      if (code === ccittEOF) {
-        return [true, 1, false];
-      }
-
-      if (i < end) {
-        code <<= end - i;
-      }
-
-      if (!limitValue || code >= limitValue) {
-        const p = table[code - limitValue];
-
-        if (p[0] === i) {
-          this._eatBits(i);
-
-          return [true, p[1], true];
-        }
-      }
-    }
-
-    return [false, 0, false];
-  }
-
-  _getTwoDimCode() {
-    let code = 0;
-    let p;
-
-    if (this.eoblock) {
-      code = this._lookBits(7);
-      p = twoDimTable[code];
-
-      if (p && p[0] > 0) {
-        this._eatBits(p[0]);
-
-        return p[1];
-      }
-    } else {
-      const result = this._findTableCode(1, 7, twoDimTable);
-
-      if (result[0] && result[2]) {
-        return result[1];
-      }
-    }
-
-    (0, _util.info)("Bad two dim code");
-    return ccittEOF;
-  }
-
-  _getWhiteCode() {
-    let code = 0;
-    let p;
-
-    if (this.eoblock) {
-      code = this._lookBits(12);
-
-      if (code === ccittEOF) {
-        return 1;
-      }
-
-      if (code >> 5 === 0) {
-        p = whiteTable1[code];
-      } else {
-        p = whiteTable2[code >> 3];
-      }
-
-      if (p[0] > 0) {
-        this._eatBits(p[0]);
-
-        return p[1];
-      }
-    } else {
-      let result = this._findTableCode(1, 9, whiteTable2);
-
-      if (result[0]) {
-        return result[1];
-      }
-
-      result = this._findTableCode(11, 12, whiteTable1);
-
-      if (result[0]) {
-        return result[1];
-      }
-    }
-
-    (0, _util.info)("bad white code");
-
-    this._eatBits(1);
-
-    return 1;
-  }
-
-  _getBlackCode() {
-    let code, p;
-
-    if (this.eoblock) {
-      code = this._lookBits(13);
-
-      if (code === ccittEOF) {
-        return 1;
-      }
-
-      if (code >> 7 === 0) {
-        p = blackTable1[code];
-      } else if (code >> 9 === 0 && code >> 7 !== 0) {
-        p = blackTable2[(code >> 1) - 64];
-      } else {
-        p = blackTable3[code >> 7];
-      }
-
-      if (p[0] > 0) {
-        this._eatBits(p[0]);
-
-        return p[1];
-      }
-    } else {
-      let result = this._findTableCode(2, 6, blackTable3);
-
-      if (result[0]) {
-        return result[1];
-      }
-
-      result = this._findTableCode(7, 12, blackTable2, 64);
-
-      if (result[0]) {
-        return result[1];
-      }
-
-      result = this._findTableCode(10, 13, blackTable1);
-
-      if (result[0]) {
-        return result[1];
-      }
-    }
-
-    (0, _util.info)("bad black code");
-
-    this._eatBits(1);
-
-    return 1;
-  }
-
-  _lookBits(n) {
-    let c;
-
-    while (this.inputBits < n) {
-      if ((c = this.source.next()) === -1) {
-        if (this.inputBits === 0) {
-          return ccittEOF;
-        }
-
-        return this.inputBuf << n - this.inputBits & 0xffff >> 16 - n;
-      }
-
-      this.inputBuf = this.inputBuf << 8 | c;
-      this.inputBits += 8;
-    }
-
-    return this.inputBuf >> this.inputBits - n & 0xffff >> 16 - n;
-  }
-
-  _eatBits(n) {
-    if ((this.inputBits -= n) < 0) {
-      this.inputBits = 0;
-    }
-  }
-
-}
-
-exports.CCITTFaxDecoder = CCITTFaxDecoder;
-
-/***/ }),
-/* 23 */
-/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
-
-
-
-Object.defineProperty(exports, "__esModule", ({
-  value: true
-}));
-exports.FlateStream = void 0;
-
-var _decode_stream = __w_pdfjs_require__(19);
-
-var _util = __w_pdfjs_require__(2);
-
-const codeLenCodeMap = new Int32Array([16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]);
-const lengthDecode = new Int32Array([0x00003, 0x00004, 0x00005, 0x00006, 0x00007, 0x00008, 0x00009, 0x0000a, 
0x1000b, 0x1000d, 0x1000f, 0x10011, 0x20013, 0x20017, 0x2001b, 0x2001f, 0x30023, 0x3002b, 0x30033, 0x3003b, 
0x40043, 0x40053, 0x40063, 0x40073, 0x50083, 0x500a3, 0x500c3, 0x500e3, 0x00102, 0x00102, 0x00102]);
-const distDecode = new Int32Array([0x00001, 0x00002, 0x00003, 0x00004, 0x10005, 0x10007, 0x20009, 0x2000d, 
0x30011, 0x30019, 0x40021, 0x40031, 0x50041, 0x50061, 0x60081, 0x600c1, 0x70101, 0x70181, 0x80201, 0x80301, 
0x90401, 0x90601, 0xa0801, 0xa0c01, 0xb1001, 0xb1801, 0xc2001, 0xc3001, 0xd4001, 0xd6001]);
-const fixedLitCodeTab = [new Int32Array([0x70100, 0x80050, 0x80010, 0x80118, 0x70110, 0x80070, 0x80030, 
0x900c0, 0x70108, 0x80060, 0x80020, 0x900a0, 0x80000, 0x80080, 0x80040, 0x900e0, 0x70104, 0x80058, 0x80018, 
0x90090, 0x70114, 0x80078, 0x80038, 0x900d0, 0x7010c, 0x80068, 0x80028, 0x900b0, 0x80008, 0x80088, 0x80048, 
0x900f0, 0x70102, 0x80054, 0x80014, 0x8011c, 0x70112, 0x80074, 0x80034, 0x900c8, 0x7010a, 0x80064, 0x80024, 
0x900a8, 0x80004, 0x80084, 0x80044, 0x900e8, 0x70106, 0x8005c, 0x8001c, 0x90098, 0x70116, 0x8007c, 0x8003c, 
0x900d8, 0x7010e, 0x8006c, 0x8002c, 0x900b8, 0x8000c, 0x8008c, 0x8004c, 0x900f8, 0x70101, 0x80052, 0x80012, 
0x8011a, 0x70111, 0x80072, 0x80032, 0x900c4, 0x70109, 0x80062, 0x80022, 0x900a4, 0x80002, 0x80082, 0x80042, 
0x900e4, 0x70105, 0x8005a, 0x8001a, 0x90094, 0x70115, 0x8007a, 0x8003a, 0x900d4, 0x7010d, 0x8006a, 0x8002a, 
0x900b4, 0x8000a, 0x8008a, 0x8004a, 0x900f4, 0x70103, 0x80056, 0x80016, 0x8011e, 0x70113, 0x80076, 0x80036, 
0x900cc, 0x7010b, 0x80066, 0x
 80026, 0x900ac, 0x80006, 0x80086, 0x80046, 0x900ec, 0x70107, 0x8005e, 0x8001e, 0x9009c, 0x70117, 0x8007e, 
0x8003e, 0x900dc, 0x7010f, 0x8006e, 0x8002e, 0x900bc, 0x8000e, 0x8008e, 0x8004e, 0x900fc, 0x70100, 0x80051, 
0x80011, 0x80119, 0x70110, 0x80071, 0x80031, 0x900c2, 0x70108, 0x80061, 0x80021, 0x900a2, 0x80001, 0x80081, 
0x80041, 0x900e2, 0x70104, 0x80059, 0x80019, 0x90092, 0x70114, 0x80079, 0x80039, 0x900d2, 0x7010c, 0x80069, 
0x80029, 0x900b2, 0x80009, 0x80089, 0x80049, 0x900f2, 0x70102, 0x80055, 0x80015, 0x8011d, 0x70112, 0x80075, 
0x80035, 0x900ca, 0x7010a, 0x80065, 0x80025, 0x900aa, 0x80005, 0x80085, 0x80045, 0x900ea, 0x70106, 0x8005d, 
0x8001d, 0x9009a, 0x70116, 0x8007d, 0x8003d, 0x900da, 0x7010e, 0x8006d, 0x8002d, 0x900ba, 0x8000d, 0x8008d, 
0x8004d, 0x900fa, 0x70101, 0x80053, 0x80013, 0x8011b, 0x70111, 0x80073, 0x80033, 0x900c6, 0x70109, 0x80063, 
0x80023, 0x900a6, 0x80003, 0x80083, 0x80043, 0x900e6, 0x70105, 0x8005b, 0x8001b, 0x90096, 0x70115, 0x8007b, 
0x8003b, 0x900d6, 0x7010d, 
 0x8006b, 0x8002b, 0x900b6, 0x8000b, 0x8008b, 0x8004b, 0x900f6, 0x70103, 0x80057, 0x80017, 0x8011f, 0x70113, 
0x80077, 0x80037, 0x900ce, 0x7010b, 0x80067, 0x80027, 0x900ae, 0x80007, 0x80087, 0x80047, 0x900ee, 0x70107, 
0x8005f, 0x8001f, 0x9009e, 0x70117, 0x8007f, 0x8003f, 0x900de, 0x7010f, 0x8006f, 0x8002f, 0x900be, 0x8000f, 
0x8008f, 0x8004f, 0x900fe, 0x70100, 0x80050, 0x80010, 0x80118, 0x70110, 0x80070, 0x80030, 0x900c1, 0x70108, 
0x80060, 0x80020, 0x900a1, 0x80000, 0x80080, 0x80040, 0x900e1, 0x70104, 0x80058, 0x80018, 0x90091, 0x70114, 
0x80078, 0x80038, 0x900d1, 0x7010c, 0x80068, 0x80028, 0x900b1, 0x80008, 0x80088, 0x80048, 0x900f1, 0x70102, 
0x80054, 0x80014, 0x8011c, 0x70112, 0x80074, 0x80034, 0x900c9, 0x7010a, 0x80064, 0x80024, 0x900a9, 0x80004, 
0x80084, 0x80044, 0x900e9, 0x70106, 0x8005c, 0x8001c, 0x90099, 0x70116, 0x8007c, 0x8003c, 0x900d9, 0x7010e, 
0x8006c, 0x8002c, 0x900b9, 0x8000c, 0x8008c, 0x8004c, 0x900f9, 0x70101, 0x80052, 0x80012, 0x8011a, 0x70111, 
0x80072, 0x80032, 0x900c5
 , 0x70109, 0x80062, 0x80022, 0x900a5, 0x80002, 0x80082, 0x80042, 0x900e5, 0x70105, 0x8005a, 0x8001a, 
0x90095, 0x70115, 0x8007a, 0x8003a, 0x900d5, 0x7010d, 0x8006a, 0x8002a, 0x900b5, 0x8000a, 0x8008a, 0x8004a, 
0x900f5, 0x70103, 0x80056, 0x80016, 0x8011e, 0x70113, 0x80076, 0x80036, 0x900cd, 0x7010b, 0x80066, 0x80026, 
0x900ad, 0x80006, 0x80086, 0x80046, 0x900ed, 0x70107, 0x8005e, 0x8001e, 0x9009d, 0x70117, 0x8007e, 0x8003e, 
0x900dd, 0x7010f, 0x8006e, 0x8002e, 0x900bd, 0x8000e, 0x8008e, 0x8004e, 0x900fd, 0x70100, 0x80051, 0x80011, 
0x80119, 0x70110, 0x80071, 0x80031, 0x900c3, 0x70108, 0x80061, 0x80021, 0x900a3, 0x80001, 0x80081, 0x80041, 
0x900e3, 0x70104, 0x80059, 0x80019, 0x90093, 0x70114, 0x80079, 0x80039, 0x900d3, 0x7010c, 0x80069, 0x80029, 
0x900b3, 0x80009, 0x80089, 0x80049, 0x900f3, 0x70102, 0x80055, 0x80015, 0x8011d, 0x70112, 0x80075, 0x80035, 
0x900cb, 0x7010a, 0x80065, 0x80025, 0x900ab, 0x80005, 0x80085, 0x80045, 0x900eb, 0x70106, 0x8005d, 0x8001d, 
0x9009b, 0x70116, 0x8007d, 0x800
 3d, 0x900db, 0x7010e, 0x8006d, 0x8002d, 0x900bb, 0x8000d, 0x8008d, 0x8004d, 0x900fb, 0x70101, 0x80053, 
0x80013, 0x8011b, 0x70111, 0x80073, 0x80033, 0x900c7, 0x70109, 0x80063, 0x80023, 0x900a7, 0x80003, 0x80083, 
0x80043, 0x900e7, 0x70105, 0x8005b, 0x8001b, 0x90097, 0x70115, 0x8007b, 0x8003b, 0x900d7, 0x7010d, 0x8006b, 
0x8002b, 0x900b7, 0x8000b, 0x8008b, 0x8004b, 0x900f7, 0x70103, 0x80057, 0x80017, 0x8011f, 0x70113, 0x80077, 
0x80037, 0x900cf, 0x7010b, 0x80067, 0x80027, 0x900af, 0x80007, 0x80087, 0x80047, 0x900ef, 0x70107, 0x8005f, 
0x8001f, 0x9009f, 0x70117, 0x8007f, 0x8003f, 0x900df, 0x7010f, 0x8006f, 0x8002f, 0x900bf, 0x8000f, 0x8008f, 
0x8004f, 0x900ff]), 9];
-const fixedDistCodeTab = [new Int32Array([0x50000, 0x50010, 0x50008, 0x50018, 0x50004, 0x50014, 0x5000c, 
0x5001c, 0x50002, 0x50012, 0x5000a, 0x5001a, 0x50006, 0x50016, 0x5000e, 0x00000, 0x50001, 0x50011, 0x50009, 
0x50019, 0x50005, 0x50015, 0x5000d, 0x5001d, 0x50003, 0x50013, 0x5000b, 0x5001b, 0x50007, 0x50017, 0x5000f, 
0x00000]), 5];
-
-class FlateStream extends _decode_stream.DecodeStream {
-  constructor(str, maybeLength) {
-    super(maybeLength);
-    this.str = str;
-    this.dict = str.dict;
-    const cmf = str.getByte();
-    const flg = str.getByte();
-
-    if (cmf === -1 || flg === -1) {
-      throw new _util.FormatError(`Invalid header in flate stream: ${cmf}, ${flg}`);
-    }
-
-    if ((cmf & 0x0f) !== 0x08) {
-      throw new _util.FormatError(`Unknown compression method in flate stream: ${cmf}, ${flg}`);
-    }
-
-    if (((cmf << 8) + flg) % 31 !== 0) {
-      throw new _util.FormatError(`Bad FCHECK in flate stream: ${cmf}, ${flg}`);
-    }
-
-    if (flg & 0x20) {
-      throw new _util.FormatError(`FDICT bit set in flate stream: ${cmf}, ${flg}`);
-    }
-
-    this.codeSize = 0;
-    this.codeBuf = 0;
-  }
-
-  getBits(bits) {
-    const str = this.str;
-    let codeSize = this.codeSize;
-    let codeBuf = this.codeBuf;
-    let b;
-
-    while (codeSize < bits) {
-      if ((b = str.getByte()) === -1) {
-        throw new _util.FormatError("Bad encoding in flate stream");
-      }
-
-      codeBuf |= b << codeSize;
-      codeSize += 8;
-    }
-
-    b = codeBuf & (1 << bits) - 1;
-    this.codeBuf = codeBuf >> bits;
-    this.codeSize = codeSize -= bits;
-    return b;
-  }
-
-  getCode(table) {
-    const str = this.str;
-    const codes = table[0];
-    const maxLen = table[1];
-    let codeSize = this.codeSize;
-    let codeBuf = this.codeBuf;
-    let b;
-
-    while (codeSize < maxLen) {
-      if ((b = str.getByte()) === -1) {
-        break;
-      }
-
-      codeBuf |= b << codeSize;
-      codeSize += 8;
-    }
-
-    const code = codes[codeBuf & (1 << maxLen) - 1];
-    const codeLen = code >> 16;
-    const codeVal = code & 0xffff;
-
-    if (codeLen < 1 || codeSize < codeLen) {
-      throw new _util.FormatError("Bad encoding in flate stream");
-    }
-
-    this.codeBuf = codeBuf >> codeLen;
-    this.codeSize = codeSize - codeLen;
-    return codeVal;
-  }
-
-  generateHuffmanTable(lengths) {
-    const n = lengths.length;
-    let maxLen = 0;
-    let i;
-
-    for (i = 0; i < n; ++i) {
-      if (lengths[i] > maxLen) {
-        maxLen = lengths[i];
-      }
-    }
-
-    const size = 1 << maxLen;
-    const codes = new Int32Array(size);
-
-    for (let len = 1, code = 0, skip = 2; len <= maxLen; ++len, code <<= 1, skip <<= 1) {
-      for (let val = 0; val < n; ++val) {
-        if (lengths[val] === len) {
-          let code2 = 0;
-          let t = code;
-
-          for (i = 0; i < len; ++i) {
-            code2 = code2 << 1 | t & 1;
-            t >>= 1;
-          }
-
-          for (i = code2; i < size; i += skip) {
-            codes[i] = len << 16 | val;
-          }
-
-          ++code;
-        }
-      }
-    }
-
-    return [codes, maxLen];
-  }
-
-  readBlock() {
-    let buffer, len;
-    const str = this.str;
-    let hdr = this.getBits(3);
-
-    if (hdr & 1) {
-      this.eof = true;
-    }
-
-    hdr >>= 1;
-
-    if (hdr === 0) {
-      let b;
-
-      if ((b = str.getByte()) === -1) {
-        throw new _util.FormatError("Bad block header in flate stream");
-      }
-
-      let blockLen = b;
-
-      if ((b = str.getByte()) === -1) {
-        throw new _util.FormatError("Bad block header in flate stream");
-      }
-
-      blockLen |= b << 8;
-
-      if ((b = str.getByte()) === -1) {
-        throw new _util.FormatError("Bad block header in flate stream");
-      }
-
-      let check = b;
-
-      if ((b = str.getByte()) === -1) {
-        throw new _util.FormatError("Bad block header in flate stream");
-      }
-
-      check |= b << 8;
-
-      if (check !== (~blockLen & 0xffff) && (blockLen !== 0 || check !== 0)) {
-        throw new _util.FormatError("Bad uncompressed block length in flate stream");
-      }
-
-      this.codeBuf = 0;
-      this.codeSize = 0;
-      const bufferLength = this.bufferLength,
-            end = bufferLength + blockLen;
-      buffer = this.ensureBuffer(end);
-      this.bufferLength = end;
-
-      if (blockLen === 0) {
-        if (str.peekByte() === -1) {
-          this.eof = true;
-        }
-      } else {
-        const block = str.getBytes(blockLen);
-        buffer.set(block, bufferLength);
-
-        if (block.length < blockLen) {
-          this.eof = true;
-        }
-      }
-
-      return;
-    }
-
-    let litCodeTable;
-    let distCodeTable;
-
-    if (hdr === 1) {
-      litCodeTable = fixedLitCodeTab;
-      distCodeTable = fixedDistCodeTab;
-    } else if (hdr === 2) {
-      const numLitCodes = this.getBits(5) + 257;
-      const numDistCodes = this.getBits(5) + 1;
-      const numCodeLenCodes = this.getBits(4) + 4;
-      const codeLenCodeLengths = new Uint8Array(codeLenCodeMap.length);
-      let i;
-
-      for (i = 0; i < numCodeLenCodes; ++i) {
-        codeLenCodeLengths[codeLenCodeMap[i]] = this.getBits(3);
-      }
-
-      const codeLenCodeTab = this.generateHuffmanTable(codeLenCodeLengths);
-      len = 0;
-      i = 0;
-      const codes = numLitCodes + numDistCodes;
-      const codeLengths = new Uint8Array(codes);
-      let bitsLength, bitsOffset, what;
-
-      while (i < codes) {
-        const code = this.getCode(codeLenCodeTab);
-
-        if (code === 16) {
-          bitsLength = 2;
-          bitsOffset = 3;
-          what = len;
-        } else if (code === 17) {
-          bitsLength = 3;
-          bitsOffset = 3;
-          what = len = 0;
-        } else if (code === 18) {
-          bitsLength = 7;
-          bitsOffset = 11;
-          what = len = 0;
-        } else {
-          codeLengths[i++] = len = code;
-          continue;
-        }
-
-        let repeatLength = this.getBits(bitsLength) + bitsOffset;
-
-        while (repeatLength-- > 0) {
-          codeLengths[i++] = what;
-        }
-      }
-
-      litCodeTable = this.generateHuffmanTable(codeLengths.subarray(0, numLitCodes));
-      distCodeTable = this.generateHuffmanTable(codeLengths.subarray(numLitCodes, codes));
-    } else {
-      throw new _util.FormatError("Unknown block type in flate stream");
-    }
-
-    buffer = this.buffer;
-    let limit = buffer ? buffer.length : 0;
-    let pos = this.bufferLength;
-
-    while (true) {
-      let code1 = this.getCode(litCodeTable);
-
-      if (code1 < 256) {
-        if (pos + 1 >= limit) {
-          buffer = this.ensureBuffer(pos + 1);
-          limit = buffer.length;
-        }
-
-        buffer[pos++] = code1;
-        continue;
-      }
-
-      if (code1 === 256) {
-        this.bufferLength = pos;
-        return;
-      }
-
-      code1 -= 257;
-      code1 = lengthDecode[code1];
-      let code2 = code1 >> 16;
-
-      if (code2 > 0) {
-        code2 = this.getBits(code2);
-      }
-
-      len = (code1 & 0xffff) + code2;
-      code1 = this.getCode(distCodeTable);
-      code1 = distDecode[code1];
-      code2 = code1 >> 16;
-
-      if (code2 > 0) {
-        code2 = this.getBits(code2);
-      }
-
-      const dist = (code1 & 0xffff) + code2;
-
-      if (pos + len >= limit) {
-        buffer = this.ensureBuffer(pos + len);
-        limit = buffer.length;
-      }
-
-      for (let k = 0; k < len; ++k, ++pos) {
-        buffer[pos] = buffer[pos - dist];
-      }
-    }
-  }
-
-}
-
-exports.FlateStream = FlateStream;
-
-/***/ }),
-/* 24 */
-/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
-
-
-
-Object.defineProperty(exports, "__esModule", ({
-  value: true
-}));
-exports.Jbig2Stream = void 0;
-
-var _primitives = __w_pdfjs_require__(5);
-
-var _decode_stream = __w_pdfjs_require__(19);
-
-var _jbig = __w_pdfjs_require__(25);
-
-var _util = __w_pdfjs_require__(2);
-
-class Jbig2Stream extends _decode_stream.DecodeStream {
-  constructor(stream, maybeLength, params) {
-    super(maybeLength);
-    this.stream = stream;
-    this.dict = stream.dict;
-    this.maybeLength = maybeLength;
-    this.params = params;
-  }
-
-  get bytes() {
-    return (0, _util.shadow)(this, "bytes", this.stream.getBytes(this.maybeLength));
-  }
-
-  ensureBuffer(requested) {}
-
-  readBlock() {
-    if (this.eof) {
-      return;
-    }
-
-    const jbig2Image = new _jbig.Jbig2Image();
-    const chunks = [];
-
-    if ((0, _primitives.isDict)(this.params)) {
-      const globalsStream = this.params.get("JBIG2Globals");
-
-      if ((0, _primitives.isStream)(globalsStream)) {
-        const globals = globalsStream.getBytes();
-        chunks.push({
-          data: globals,
-          start: 0,
-          end: globals.length
-        });
-      }
-    }
-
-    chunks.push({
-      data: this.bytes,
-      start: 0,
-      end: this.bytes.length
-    });
-    const data = jbig2Image.parseChunks(chunks);
-    const dataLength = data.length;
-
-    for (let i = 0; i < dataLength; i++) {
-      data[i] ^= 0xff;
-    }
-
-    this.buffer = data;
-    this.bufferLength = dataLength;
-    this.eof = true;
-  }
-
-}
-
-exports.Jbig2Stream = Jbig2Stream;
-
-/***/ }),
-/* 25 */
-/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
-
-
-
-Object.defineProperty(exports, "__esModule", ({
-  value: true
-}));
-exports.Jbig2Image = void 0;
-
-var _util = __w_pdfjs_require__(2);
-
-var _core_utils = __w_pdfjs_require__(9);
-
-var _arithmetic_decoder = __w_pdfjs_require__(26);
-
-var _ccitt = __w_pdfjs_require__(22);
-
-class Jbig2Error extends _util.BaseException {
-  constructor(msg) {
-    super(`JBIG2 error: ${msg}`);
-  }
-
-}
-
-class ContextCache {
-  getContexts(id) {
-    if (id in this) {
-      return this[id];
-    }
-
-    return this[id] = new Int8Array(1 << 16);
-  }
-
-}
-
-class DecodingContext {
-  constructor(data, start, end) {
-    this.data = data;
-    this.start = start;
-    this.end = end;
-  }
-
-  get decoder() {
-    const decoder = new _arithmetic_decoder.ArithmeticDecoder(this.data, this.start, this.end);
-    return (0, _util.shadow)(this, "decoder", decoder);
-  }
-
-  get contextCache() {
-    const cache = new ContextCache();
-    return (0, _util.shadow)(this, "contextCache", cache);
-  }
-
-}
-
-function decodeInteger(contextCache, procedure, decoder) {
-  const contexts = contextCache.getContexts(procedure);
-  let prev = 1;
-
-  function readBits(length) {
-    let v = 0;
-
-    for (let i = 0; i < length; i++) {
-      const bit = decoder.readBit(contexts, prev);
-      prev = prev < 256 ? prev << 1 | bit : (prev << 1 | bit) & 511 | 256;
-      v = v << 1 | bit;
-    }
-
-    return v >>> 0;
-  }
-
-  const sign = readBits(1);
-  const value = readBits(1) ? readBits(1) ? readBits(1) ? readBits(1) ? readBits(1) ? readBits(32) + 4436 : 
readBits(12) + 340 : readBits(8) + 84 : readBits(6) + 20 : readBits(4) + 4 : readBits(2);
-
-  if (sign === 0) {
-    return value;
-  } else if (value > 0) {
-    return -value;
-  }
-
-  return null;
-}
-
-function decodeIAID(contextCache, decoder, codeLength) {
-  const contexts = contextCache.getContexts("IAID");
-  let prev = 1;
-
-  for (let i = 0; i < codeLength; i++) {
-    const bit = decoder.readBit(contexts, prev);
-    prev = prev << 1 | bit;
-  }
-
-  if (codeLength < 31) {
-    return prev & (1 << codeLength) - 1;
-  }
-
-  return prev & 0x7fffffff;
-}
-
-const SegmentTypes = ["SymbolDictionary", null, null, null, "IntermediateTextRegion", null, 
"ImmediateTextRegion", "ImmediateLosslessTextRegion", null, null, null, null, null, null, null, null, 
"PatternDictionary", null, null, null, "IntermediateHalftoneRegion", null, "ImmediateHalftoneRegion", 
"ImmediateLosslessHalftoneRegion", null, null, null, null, null, null, null, null, null, null, null, null, 
"IntermediateGenericRegion", null, "ImmediateGenericRegion", "ImmediateLosslessGenericRegion", 
"IntermediateGenericRefinementRegion", null, "ImmediateGenericRefinementRegion", 
"ImmediateLosslessGenericRefinementRegion", null, null, null, null, "PageInformation", "EndOfPage", 
"EndOfStripe", "EndOfFile", "Profiles", "Tables", null, null, null, null, null, null, null, null, 
"Extension"];
-const CodingTemplates = [[{
-  x: -1,
-  y: -2
-}, {
-  x: 0,
-  y: -2
-}, {
-  x: 1,
-  y: -2
-}, {
-  x: -2,
-  y: -1
-}, {
-  x: -1,
-  y: -1
-}, {
-  x: 0,
-  y: -1
-}, {
-  x: 1,
-  y: -1
-}, {
-  x: 2,
-  y: -1
-}, {
-  x: -4,
-  y: 0
-}, {
-  x: -3,
-  y: 0
-}, {
-  x: -2,
-  y: 0
-}, {
-  x: -1,
-  y: 0
-}], [{
-  x: -1,
-  y: -2
-}, {
-  x: 0,
-  y: -2
-}, {
-  x: 1,
-  y: -2
-}, {
-  x: 2,
-  y: -2
-}, {
-  x: -2,
-  y: -1
-}, {
-  x: -1,
-  y: -1
-}, {
-  x: 0,
-  y: -1
-}, {
-  x: 1,
-  y: -1
-}, {
-  x: 2,
-  y: -1
-}, {
-  x: -3,
-  y: 0
-}, {
-  x: -2,
-  y: 0
-}, {
-  x: -1,
-  y: 0
-}], [{
-  x: -1,
-  y: -2
-}, {
-  x: 0,
-  y: -2
-}, {
-  x: 1,
-  y: -2
-}, {
-  x: -2,
-  y: -1
-}, {
-  x: -1,
-  y: -1
-}, {
-  x: 0,
-  y: -1
-}, {
-  x: 1,
-  y: -1
-}, {
-  x: -2,
-  y: 0
-}, {
-  x: -1,
-  y: 0
-}], [{
-  x: -3,
-  y: -1
-}, {
-  x: -2,
-  y: -1
-}, {
-  x: -1,
-  y: -1
-}, {
-  x: 0,
-  y: -1
-}, {
-  x: 1,
-  y: -1
-}, {
-  x: -4,
-  y: 0
-}, {
-  x: -3,
-  y: 0
-}, {
-  x: -2,
-  y: 0
-}, {
-  x: -1,
-  y: 0
-}]];
-const RefinementTemplates = [{
-  coding: [{
-    x: 0,
-    y: -1
-  }, {
-    x: 1,
-    y: -1
-  }, {
-    x: -1,
-    y: 0
-  }],
-  reference: [{
-    x: 0,
-    y: -1
-  }, {
-    x: 1,
-    y: -1
-  }, {
-    x: -1,
-    y: 0
-  }, {
-    x: 0,
-    y: 0
-  }, {
-    x: 1,
-    y: 0
-  }, {
-    x: -1,
-    y: 1
-  }, {
-    x: 0,
-    y: 1
-  }, {
-    x: 1,
-    y: 1
-  }]
-}, {
-  coding: [{
-    x: -1,
-    y: -1
-  }, {
-    x: 0,
-    y: -1
-  }, {
-    x: 1,
-    y: -1
-  }, {
-    x: -1,
-    y: 0
-  }],
-  reference: [{
-    x: 0,
-    y: -1
-  }, {
-    x: -1,
-    y: 0
-  }, {
-    x: 0,
-    y: 0
-  }, {
-    x: 1,
-    y: 0
-  }, {
-    x: 0,
-    y: 1
-  }, {
-    x: 1,
-    y: 1
-  }]
-}];
-const ReusedContexts = [0x9b25, 0x0795, 0x00e5, 0x0195];
-const RefinementReusedContexts = [0x0020, 0x0008];
-
-function decodeBitmapTemplate0(width, height, decodingContext) {
-  const decoder = decodingContext.decoder;
-  const contexts = decodingContext.contextCache.getContexts("GB");
-  const bitmap = [];
-  let contextLabel, i, j, pixel, row, row1, row2;
-  const OLD_PIXEL_MASK = 0x7bf7;
-
-  for (i = 0; i < height; i++) {
-    row = bitmap[i] = new Uint8Array(width);
-    row1 = i < 1 ? row : bitmap[i - 1];
-    row2 = i < 2 ? row : bitmap[i - 2];
-    contextLabel = row2[0] << 13 | row2[1] << 12 | row2[2] << 11 | row1[0] << 7 | row1[1] << 6 | row1[2] << 
5 | row1[3] << 4;
-
-    for (j = 0; j < width; j++) {
-      row[j] = pixel = decoder.readBit(contexts, contextLabel);
-      contextLabel = (contextLabel & OLD_PIXEL_MASK) << 1 | (j + 3 < width ? row2[j + 3] << 11 : 0) | (j + 4 
< width ? row1[j + 4] << 4 : 0) | pixel;
-    }
-  }
-
-  return bitmap;
-}
-
-function decodeBitmap(mmr, width, height, templateIndex, prediction, skip, at, decodingContext) {
-  if (mmr) {
-    const input = new Reader(decodingContext.data, decodingContext.start, decodingContext.end);
-    return decodeMMRBitmap(input, width, height, false);
-  }
-
-  if (templateIndex === 0 && !skip && !prediction && at.length === 4 && at[0].x === 3 && at[0].y === -1 && 
at[1].x === -3 && at[1].y === -1 && at[2].x === 2 && at[2].y === -2 && at[3].x === -2 && at[3].y === -2) {
-    return decodeBitmapTemplate0(width, height, decodingContext);
-  }
-
-  const useskip = !!skip;
-  const template = CodingTemplates[templateIndex].concat(at);
-  template.sort(function (a, b) {
-    return a.y - b.y || a.x - b.x;
-  });
-  const templateLength = template.length;
-  const templateX = new Int8Array(templateLength);
-  const templateY = new Int8Array(templateLength);
-  const changingTemplateEntries = [];
-  let reuseMask = 0,
-      minX = 0,
-      maxX = 0,
-      minY = 0;
-  let c, k;
-
-  for (k = 0; k < templateLength; k++) {
-    templateX[k] = template[k].x;
-    templateY[k] = template[k].y;
-    minX = Math.min(minX, template[k].x);
-    maxX = Math.max(maxX, template[k].x);
-    minY = Math.min(minY, template[k].y);
-
-    if (k < templateLength - 1 && template[k].y === template[k + 1].y && template[k].x === template[k + 1].x 
- 1) {
-      reuseMask |= 1 << templateLength - 1 - k;
-    } else {
-      changingTemplateEntries.push(k);
-    }
-  }
-
-  const changingEntriesLength = changingTemplateEntries.length;
-  const changingTemplateX = new Int8Array(changingEntriesLength);
-  const changingTemplateY = new Int8Array(changingEntriesLength);
-  const changingTemplateBit = new Uint16Array(changingEntriesLength);
-
-  for (c = 0; c < changingEntriesLength; c++) {
-    k = changingTemplateEntries[c];
-    changingTemplateX[c] = template[k].x;
-    changingTemplateY[c] = template[k].y;
-    changingTemplateBit[c] = 1 << templateLength - 1 - k;
-  }
-
-  const sbb_left = -minX;
-  const sbb_top = -minY;
-  const sbb_right = width - maxX;
-  const pseudoPixelContext = ReusedContexts[templateIndex];
-  let row = new Uint8Array(width);
-  const bitmap = [];
-  const decoder = decodingContext.decoder;
-  const contexts = decodingContext.contextCache.getContexts("GB");
-  let ltp = 0,
-      j,
-      i0,
-      j0,
-      contextLabel = 0,
-      bit,
-      shift;
-
-  for (let i = 0; i < height; i++) {
-    if (prediction) {
-      const sltp = decoder.readBit(contexts, pseudoPixelContext);
-      ltp ^= sltp;
-
-      if (ltp) {
-        bitmap.push(row);
-        continue;
-      }
-    }
-
-    row = new Uint8Array(row);
-    bitmap.push(row);
-
-    for (j = 0; j < width; j++) {
-      if (useskip && skip[i][j]) {
-        row[j] = 0;
-        continue;
-      }
-
-      if (j >= sbb_left && j < sbb_right && i >= sbb_top) {
-        contextLabel = contextLabel << 1 & reuseMask;
-
-        for (k = 0; k < changingEntriesLength; k++) {
-          i0 = i + changingTemplateY[k];
-          j0 = j + changingTemplateX[k];
-          bit = bitmap[i0][j0];
-
-          if (bit) {
-            bit = changingTemplateBit[k];
-            contextLabel |= bit;
-          }
-        }
-      } else {
-        contextLabel = 0;
-        shift = templateLength - 1;
-
-        for (k = 0; k < templateLength; k++, shift--) {
-          j0 = j + templateX[k];
-
-          if (j0 >= 0 && j0 < width) {
-            i0 = i + templateY[k];
-
-            if (i0 >= 0) {
-              bit = bitmap[i0][j0];
-
-              if (bit) {
-                contextLabel |= bit << shift;
-              }
-            }
-          }
-        }
-      }
-
-      const pixel = decoder.readBit(contexts, contextLabel);
-      row[j] = pixel;
-    }
-  }
-
-  return bitmap;
-}
-
-function decodeRefinement(width, height, templateIndex, referenceBitmap, offsetX, offsetY, prediction, at, 
decodingContext) {
-  let codingTemplate = RefinementTemplates[templateIndex].coding;
-
-  if (templateIndex === 0) {
-    codingTemplate = codingTemplate.concat([at[0]]);
-  }
-
-  const codingTemplateLength = codingTemplate.length;
-  const codingTemplateX = new Int32Array(codingTemplateLength);
-  const codingTemplateY = new Int32Array(codingTemplateLength);
-  let k;
-
-  for (k = 0; k < codingTemplateLength; k++) {
-    codingTemplateX[k] = codingTemplate[k].x;
-    codingTemplateY[k] = codingTemplate[k].y;
-  }
-
-  let referenceTemplate = RefinementTemplates[templateIndex].reference;
-
-  if (templateIndex === 0) {
-    referenceTemplate = referenceTemplate.concat([at[1]]);
-  }
-
-  const referenceTemplateLength = referenceTemplate.length;
-  const referenceTemplateX = new Int32Array(referenceTemplateLength);
-  const referenceTemplateY = new Int32Array(referenceTemplateLength);
-
-  for (k = 0; k < referenceTemplateLength; k++) {
-    referenceTemplateX[k] = referenceTemplate[k].x;
-    referenceTemplateY[k] = referenceTemplate[k].y;
-  }
-
-  const referenceWidth = referenceBitmap[0].length;
-  const referenceHeight = referenceBitmap.length;
-  const pseudoPixelContext = RefinementReusedContexts[templateIndex];
-  const bitmap = [];
-  const decoder = decodingContext.decoder;
-  const contexts = decodingContext.contextCache.getContexts("GR");
-  let ltp = 0;
-
-  for (let i = 0; i < height; i++) {
-    if (prediction) {
-      const sltp = decoder.readBit(contexts, pseudoPixelContext);
-      ltp ^= sltp;
-
-      if (ltp) {
-        throw new Jbig2Error("prediction is not supported");
-      }
-    }
-
-    const row = new Uint8Array(width);
-    bitmap.push(row);
-
-    for (let j = 0; j < width; j++) {
-      let i0, j0;
-      let contextLabel = 0;
-
-      for (k = 0; k < codingTemplateLength; k++) {
-        i0 = i + codingTemplateY[k];
-        j0 = j + codingTemplateX[k];
-
-        if (i0 < 0 || j0 < 0 || j0 >= width) {
-          contextLabel <<= 1;
-        } else {
-          contextLabel = contextLabel << 1 | bitmap[i0][j0];
-        }
-      }
-
-      for (k = 0; k < referenceTemplateLength; k++) {
-        i0 = i + referenceTemplateY[k] - offsetY;
-        j0 = j + referenceTemplateX[k] - offsetX;
-
-        if (i0 < 0 || i0 >= referenceHeight || j0 < 0 || j0 >= referenceWidth) {
-          contextLabel <<= 1;
-        } else {
-          contextLabel = contextLabel << 1 | referenceBitmap[i0][j0];
-        }
-      }
-
-      const pixel = decoder.readBit(contexts, contextLabel);
-      row[j] = pixel;
-    }
-  }
-
-  return bitmap;
-}
-
-function decodeSymbolDictionary(huffman, refinement, symbols, numberOfNewSymbols, numberOfExportedSymbols, 
huffmanTables, templateIndex, at, refinementTemplateIndex, refinementAt, decodingContext, huffmanInput) {
-  if (huffman && refinement) {
-    throw new Jbig2Error("symbol refinement with Huffman is not supported");
-  }
-
-  const newSymbols = [];
-  let currentHeight = 0;
-  let symbolCodeLength = (0, _core_utils.log2)(symbols.length + numberOfNewSymbols);
-  const decoder = decodingContext.decoder;
-  const contextCache = decodingContext.contextCache;
-  let tableB1, symbolWidths;
-
-  if (huffman) {
-    tableB1 = getStandardTable(1);
-    symbolWidths = [];
-    symbolCodeLength = Math.max(symbolCodeLength, 1);
-  }
-
-  while (newSymbols.length < numberOfNewSymbols) {
-    const deltaHeight = huffman ? huffmanTables.tableDeltaHeight.decode(huffmanInput) : 
decodeInteger(contextCache, "IADH", decoder);
-    currentHeight += deltaHeight;
-    let currentWidth = 0,
-        totalWidth = 0;
-    const firstSymbol = huffman ? symbolWidths.length : 0;
-
-    while (true) {
-      const deltaWidth = huffman ? huffmanTables.tableDeltaWidth.decode(huffmanInput) : 
decodeInteger(contextCache, "IADW", decoder);
-
-      if (deltaWidth === null) {
-        break;
-      }
-
-      currentWidth += deltaWidth;
-      totalWidth += currentWidth;
-      let bitmap;
-
-      if (refinement) {
-        const numberOfInstances = decodeInteger(contextCache, "IAAI", decoder);
-
-        if (numberOfInstances > 1) {
-          bitmap = decodeTextRegion(huffman, refinement, currentWidth, currentHeight, 0, numberOfInstances, 
1, symbols.concat(newSymbols), symbolCodeLength, 0, 0, 1, 0, huffmanTables, refinementTemplateIndex, 
refinementAt, decodingContext, 0, huffmanInput);
-        } else {
-          const symbolId = decodeIAID(contextCache, decoder, symbolCodeLength);
-          const rdx = decodeInteger(contextCache, "IARDX", decoder);
-          const rdy = decodeInteger(contextCache, "IARDY", decoder);
-          const symbol = symbolId < symbols.length ? symbols[symbolId] : newSymbols[symbolId - 
symbols.length];
-          bitmap = decodeRefinement(currentWidth, currentHeight, refinementTemplateIndex, symbol, rdx, rdy, 
false, refinementAt, decodingContext);
-        }
-
-        newSymbols.push(bitmap);
-      } else if (huffman) {
-        symbolWidths.push(currentWidth);
-      } else {
-        bitmap = decodeBitmap(false, currentWidth, currentHeight, templateIndex, false, null, at, 
decodingContext);
-        newSymbols.push(bitmap);
-      }
-    }
-
-    if (huffman && !refinement) {
-      const bitmapSize = huffmanTables.tableBitmapSize.decode(huffmanInput);
-      huffmanInput.byteAlign();
-      let collectiveBitmap;
-
-      if (bitmapSize === 0) {
-        collectiveBitmap = readUncompressedBitmap(huffmanInput, totalWidth, currentHeight);
-      } else {
-        const originalEnd = huffmanInput.end;
-        const bitmapEnd = huffmanInput.position + bitmapSize;
-        huffmanInput.end = bitmapEnd;
-        collectiveBitmap = decodeMMRBitmap(huffmanInput, totalWidth, currentHeight, false);
-        huffmanInput.end = originalEnd;
-        huffmanInput.position = bitmapEnd;
-      }
-
-      const numberOfSymbolsDecoded = symbolWidths.length;
-
-      if (firstSymbol === numberOfSymbolsDecoded - 1) {
-        newSymbols.push(collectiveBitmap);
-      } else {
-        let i,
-            y,
-            xMin = 0,
-            xMax,
-            bitmapWidth,
-            symbolBitmap;
-
-        for (i = firstSymbol; i < numberOfSymbolsDecoded; i++) {
-          bitmapWidth = symbolWidths[i];
-          xMax = xMin + bitmapWidth;
-          symbolBitmap = [];
-
-          for (y = 0; y < currentHeight; y++) {
-            symbolBitmap.push(collectiveBitmap[y].subarray(xMin, xMax));
-          }
-
-          newSymbols.push(symbolBitmap);
-          xMin = xMax;
-        }
-      }
-    }
-  }
-
-  const exportedSymbols = [],
-        flags = [];
-  let currentFlag = false,
-      i,
-      ii;
-  const totalSymbolsLength = symbols.length + numberOfNewSymbols;
-
-  while (flags.length < totalSymbolsLength) {
-    let runLength = huffman ? tableB1.decode(huffmanInput) : decodeInteger(contextCache, "IAEX", decoder);
-
-    while (runLength--) {
-      flags.push(currentFlag);
-    }
-
-    currentFlag = !currentFlag;
-  }
-
-  for (i = 0, ii = symbols.length; i < ii; i++) {
-    if (flags[i]) {
-      exportedSymbols.push(symbols[i]);
-    }
-  }
-
-  for (let j = 0; j < numberOfNewSymbols; i++, j++) {
-    if (flags[i]) {
-      exportedSymbols.push(newSymbols[j]);
-    }
-  }
-
-  return exportedSymbols;
-}
-
-function decodeTextRegion(huffman, refinement, width, height, defaultPixelValue, numberOfSymbolInstances, 
stripSize, inputSymbols, symbolCodeLength, transposed, dsOffset, referenceCorner, combinationOperator, 
huffmanTables, refinementTemplateIndex, refinementAt, decodingContext, logStripSize, huffmanInput) {
-  if (huffman && refinement) {
-    throw new Jbig2Error("refinement with Huffman is not supported");
-  }
-
-  const bitmap = [];
-  let i, row;
-
-  for (i = 0; i < height; i++) {
-    row = new Uint8Array(width);
-
-    if (defaultPixelValue) {
-      for (let j = 0; j < width; j++) {
-        row[j] = defaultPixelValue;
-      }
-    }
-
-    bitmap.push(row);
-  }
-
-  const decoder = decodingContext.decoder;
-  const contextCache = decodingContext.contextCache;
-  let stripT = huffman ? -huffmanTables.tableDeltaT.decode(huffmanInput) : -decodeInteger(contextCache, 
"IADT", decoder);
-  let firstS = 0;
-  i = 0;
-
-  while (i < numberOfSymbolInstances) {
-    const deltaT = huffman ? huffmanTables.tableDeltaT.decode(huffmanInput) : decodeInteger(contextCache, 
"IADT", decoder);
-    stripT += deltaT;
-    const deltaFirstS = huffman ? huffmanTables.tableFirstS.decode(huffmanInput) : 
decodeInteger(contextCache, "IAFS", decoder);
-    firstS += deltaFirstS;
-    let currentS = firstS;
-
-    do {
-      let currentT = 0;
-
-      if (stripSize > 1) {
-        currentT = huffman ? huffmanInput.readBits(logStripSize) : decodeInteger(contextCache, "IAIT", 
decoder);
-      }
-
-      const t = stripSize * stripT + currentT;
-      const symbolId = huffman ? huffmanTables.symbolIDTable.decode(huffmanInput) : decodeIAID(contextCache, 
decoder, symbolCodeLength);
-      const applyRefinement = refinement && (huffman ? huffmanInput.readBit() : decodeInteger(contextCache, 
"IARI", decoder));
-      let symbolBitmap = inputSymbols[symbolId];
-      let symbolWidth = symbolBitmap[0].length;
-      let symbolHeight = symbolBitmap.length;
-
-      if (applyRefinement) {
-        const rdw = decodeInteger(contextCache, "IARDW", decoder);
-        const rdh = decodeInteger(contextCache, "IARDH", decoder);
-        const rdx = decodeInteger(contextCache, "IARDX", decoder);
-        const rdy = decodeInteger(contextCache, "IARDY", decoder);
-        symbolWidth += rdw;
-        symbolHeight += rdh;
-        symbolBitmap = decodeRefinement(symbolWidth, symbolHeight, refinementTemplateIndex, symbolBitmap, 
(rdw >> 1) + rdx, (rdh >> 1) + rdy, false, refinementAt, decodingContext);
-      }
-
-      const offsetT = t - (referenceCorner & 1 ? 0 : symbolHeight - 1);
-      const offsetS = currentS - (referenceCorner & 2 ? symbolWidth - 1 : 0);
-      let s2, t2, symbolRow;
-
-      if (transposed) {
-        for (s2 = 0; s2 < symbolHeight; s2++) {
-          row = bitmap[offsetS + s2];
-
-          if (!row) {
-            continue;
-          }
-
-          symbolRow = symbolBitmap[s2];
-          const maxWidth = Math.min(width - offsetT, symbolWidth);
-
-          switch (combinationOperator) {
-            case 0:
-              for (t2 = 0; t2 < maxWidth; t2++) {
-                row[offsetT + t2] |= symbolRow[t2];
-              }
-
-              break;
-
-            case 2:
-              for (t2 = 0; t2 < maxWidth; t2++) {
-                row[offsetT + t2] ^= symbolRow[t2];
-              }
-
-              break;
-
-            default:
-              throw new Jbig2Error(`operator ${combinationOperator} is not supported`);
-          }
-        }
-
-        currentS += symbolHeight - 1;
-      } else {
-        for (t2 = 0; t2 < symbolHeight; t2++) {
-          row = bitmap[offsetT + t2];
-
-          if (!row) {
-            continue;
-          }
-
-          symbolRow = symbolBitmap[t2];
-
-          switch (combinationOperator) {
-            case 0:
-              for (s2 = 0; s2 < symbolWidth; s2++) {
-                row[offsetS + s2] |= symbolRow[s2];
-              }
-
-              break;
-
-            case 2:
-              for (s2 = 0; s2 < symbolWidth; s2++) {
-                row[offsetS + s2] ^= symbolRow[s2];
-              }
-
-              break;
-
-            default:
-              throw new Jbig2Error(`operator ${combinationOperator} is not supported`);
-          }
-        }
-
-        currentS += symbolWidth - 1;
-      }
-
-      i++;
-      const deltaS = huffman ? huffmanTables.tableDeltaS.decode(huffmanInput) : decodeInteger(contextCache, 
"IADS", decoder);
-
-      if (deltaS === null) {
-        break;
-      }
-
-      currentS += deltaS + dsOffset;
-    } while (true);
-  }
-
-  return bitmap;
-}
-
-function decodePatternDictionary(mmr, patternWidth, patternHeight, maxPatternIndex, template, 
decodingContext) {
-  const at = [];
-
-  if (!mmr) {
-    at.push({
-      x: -patternWidth,
-      y: 0
-    });
-
-    if (template === 0) {
-      at.push({
-        x: -3,
-        y: -1
-      }, {
-        x: 2,
-        y: -2
-      }, {
-        x: -2,
-        y: -2
-      });
-    }
-  }
-
-  const collectiveWidth = (maxPatternIndex + 1) * patternWidth;
-  const collectiveBitmap = decodeBitmap(mmr, collectiveWidth, patternHeight, template, false, null, at, 
decodingContext);
-  const patterns = [];
-
-  for (let i = 0; i <= maxPatternIndex; i++) {
-    const patternBitmap = [];
-    const xMin = patternWidth * i;
-    const xMax = xMin + patternWidth;
-
-    for (let y = 0; y < patternHeight; y++) {
-      patternBitmap.push(collectiveBitmap[y].subarray(xMin, xMax));
-    }
-
-    patterns.push(patternBitmap);
-  }
-
-  return patterns;
-}
-
-function decodeHalftoneRegion(mmr, patterns, template, regionWidth, regionHeight, defaultPixelValue, 
enableSkip, combinationOperator, gridWidth, gridHeight, gridOffsetX, gridOffsetY, gridVectorX, gridVectorY, 
decodingContext) {
-  const skip = null;
-
-  if (enableSkip) {
-    throw new Jbig2Error("skip is not supported");
-  }
-
-  if (combinationOperator !== 0) {
-    throw new Jbig2Error(`operator "${combinationOperator}" is not supported in halftone region`);
-  }
-
-  const regionBitmap = [];
-  let i, j, row;
-
-  for (i = 0; i < regionHeight; i++) {
-    row = new Uint8Array(regionWidth);
-
-    if (defaultPixelValue) {
-      for (j = 0; j < regionWidth; j++) {
-        row[j] = defaultPixelValue;
-      }
-    }
-
-    regionBitmap.push(row);
-  }
-
-  const numberOfPatterns = patterns.length;
-  const pattern0 = patterns[0];
-  const patternWidth = pattern0[0].length,
-        patternHeight = pattern0.length;
-  const bitsPerValue = (0, _core_utils.log2)(numberOfPatterns);
-  const at = [];
-
-  if (!mmr) {
-    at.push({
-      x: template <= 1 ? 3 : 2,
-      y: -1
-    });
-
-    if (template === 0) {
-      at.push({
-        x: -3,
-        y: -1
-      }, {
-        x: 2,
-        y: -2
-      }, {
-        x: -2,
-        y: -2
-      });
-    }
-  }
-
-  const grayScaleBitPlanes = [];
-  let mmrInput, bitmap;
-
-  if (mmr) {
-    mmrInput = new Reader(decodingContext.data, decodingContext.start, decodingContext.end);
-  }
-
-  for (i = bitsPerValue - 1; i >= 0; i--) {
-    if (mmr) {
-      bitmap = decodeMMRBitmap(mmrInput, gridWidth, gridHeight, true);
-    } else {
-      bitmap = decodeBitmap(false, gridWidth, gridHeight, template, false, skip, at, decodingContext);
-    }
-
-    grayScaleBitPlanes[i] = bitmap;
-  }
-
-  let mg, ng, bit, patternIndex, patternBitmap, x, y, patternRow, regionRow;
-
-  for (mg = 0; mg < gridHeight; mg++) {
-    for (ng = 0; ng < gridWidth; ng++) {
-      bit = 0;
-      patternIndex = 0;
-
-      for (j = bitsPerValue - 1; j >= 0; j--) {
-        bit ^= grayScaleBitPlanes[j][mg][ng];
-        patternIndex |= bit << j;
-      }
-
-      patternBitmap = patterns[patternIndex];
-      x = gridOffsetX + mg * gridVectorY + ng * gridVectorX >> 8;
-      y = gridOffsetY + mg * gridVectorX - ng * gridVectorY >> 8;
-
-      if (x >= 0 && x + patternWidth <= regionWidth && y >= 0 && y + patternHeight <= regionHeight) {
-        for (i = 0; i < patternHeight; i++) {
-          regionRow = regionBitmap[y + i];
-          patternRow = patternBitmap[i];
-
-          for (j = 0; j < patternWidth; j++) {
-            regionRow[x + j] |= patternRow[j];
-          }
-        }
-      } else {
-        let regionX, regionY;
-
-        for (i = 0; i < patternHeight; i++) {
-          regionY = y + i;
-
-          if (regionY < 0 || regionY >= regionHeight) {
-            continue;
-          }
-
-          regionRow = regionBitmap[regionY];
-          patternRow = patternBitmap[i];
-
-          for (j = 0; j < patternWidth; j++) {
-            regionX = x + j;
-
-            if (regionX >= 0 && regionX < regionWidth) {
-              regionRow[regionX] |= patternRow[j];
-            }
-          }
-        }
-      }
-    }
-  }
-
-  return regionBitmap;
-}
-
-function readSegmentHeader(data, start) {
-  const segmentHeader = {};
-  segmentHeader.number = (0, _core_utils.readUint32)(data, start);
-  const flags = data[start + 4];
-  const segmentType = flags & 0x3f;
-
-  if (!SegmentTypes[segmentType]) {
-    throw new Jbig2Error("invalid segment type: " + segmentType);
-  }
-
-  segmentHeader.type = segmentType;
-  segmentHeader.typeName = SegmentTypes[segmentType];
-  segmentHeader.deferredNonRetain = !!(flags & 0x80);
-  const pageAssociationFieldSize = !!(flags & 0x40);
-  const referredFlags = data[start + 5];
-  let referredToCount = referredFlags >> 5 & 7;
-  const retainBits = [referredFlags & 31];
-  let position = start + 6;
-
-  if (referredFlags === 7) {
-    referredToCount = (0, _core_utils.readUint32)(data, position - 1) & 0x1fffffff;
-    position += 3;
-    let bytes = referredToCount + 7 >> 3;
-    retainBits[0] = data[position++];
-
-    while (--bytes > 0) {
-      retainBits.push(data[position++]);
-    }
-  } else if (referredFlags === 5 || referredFlags === 6) {
-    throw new Jbig2Error("invalid referred-to flags");
-  }
-
-  segmentHeader.retainBits = retainBits;
-  let referredToSegmentNumberSize = 4;
-
-  if (segmentHeader.number <= 256) {
-    referredToSegmentNumberSize = 1;
-  } else if (segmentHeader.number <= 65536) {
-    referredToSegmentNumberSize = 2;
-  }
-
-  const referredTo = [];
-  let i, ii;
-
-  for (i = 0; i < referredToCount; i++) {
-    let number;
-
-    if (referredToSegmentNumberSize === 1) {
-      number = data[position];
-    } else if (referredToSegmentNumberSize === 2) {
-      number = (0, _core_utils.readUint16)(data, position);
-    } else {
-      number = (0, _core_utils.readUint32)(data, position);
-    }
-
-    referredTo.push(number);
-    position += referredToSegmentNumberSize;
-  }
-
-  segmentHeader.referredTo = referredTo;
-
-  if (!pageAssociationFieldSize) {
-    segmentHeader.pageAssociation = data[position++];
-  } else {
-    segmentHeader.pageAssociation = (0, _core_utils.readUint32)(data, position);
-    position += 4;
-  }
-
-  segmentHeader.length = (0, _core_utils.readUint32)(data, position);
-  position += 4;
-
-  if (segmentHeader.length === 0xffffffff) {
-    if (segmentType === 38) {
-      const genericRegionInfo = readRegionSegmentInformation(data, position);
-      const genericRegionSegmentFlags = data[position + RegionSegmentInformationFieldLength];
-      const genericRegionMmr = !!(genericRegionSegmentFlags & 1);
-      const searchPatternLength = 6;
-      const searchPattern = new Uint8Array(searchPatternLength);
-
-      if (!genericRegionMmr) {
-        searchPattern[0] = 0xff;
-        searchPattern[1] = 0xac;
-      }
-
-      searchPattern[2] = genericRegionInfo.height >>> 24 & 0xff;
-      searchPattern[3] = genericRegionInfo.height >> 16 & 0xff;
-      searchPattern[4] = genericRegionInfo.height >> 8 & 0xff;
-      searchPattern[5] = genericRegionInfo.height & 0xff;
-
-      for (i = position, ii = data.length; i < ii; i++) {
-        let j = 0;
-
-        while (j < searchPatternLength && searchPattern[j] === data[i + j]) {
-          j++;
-        }
-
-        if (j === searchPatternLength) {
-          segmentHeader.length = i + searchPatternLength;
-          break;
-        }
-      }
-
-      if (segmentHeader.length === 0xffffffff) {
-        throw new Jbig2Error("segment end was not found");
-      }
-    } else {
-      throw new Jbig2Error("invalid unknown segment length");
-    }
-  }
-
-  segmentHeader.headerEnd = position;
-  return segmentHeader;
-}
-
-function readSegments(header, data, start, end) {
-  const segments = [];
-  let position = start;
-
-  while (position < end) {
-    const segmentHeader = readSegmentHeader(data, position);
-    position = segmentHeader.headerEnd;
-    const segment = {
-      header: segmentHeader,
-      data
-    };
-
-    if (!header.randomAccess) {
-      segment.start = position;
-      position += segmentHeader.length;
-      segment.end = position;
-    }
-
-    segments.push(segment);
-
-    if (segmentHeader.type === 51) {
-      break;
-    }
-  }
-
-  if (header.randomAccess) {
-    for (let i = 0, ii = segments.length; i < ii; i++) {
-      segments[i].start = position;
-      position += segments[i].header.length;
-      segments[i].end = position;
-    }
-  }
-
-  return segments;
-}
-
-function readRegionSegmentInformation(data, start) {
-  return {
-    width: (0, _core_utils.readUint32)(data, start),
-    height: (0, _core_utils.readUint32)(data, start + 4),
-    x: (0, _core_utils.readUint32)(data, start + 8),
-    y: (0, _core_utils.readUint32)(data, start + 12),
-    combinationOperator: data[start + 16] & 7
-  };
-}
-
-const RegionSegmentInformationFieldLength = 17;
-
-function processSegment(segment, visitor) {
-  const header = segment.header;
-  const data = segment.data,
-        end = segment.end;
-  let position = segment.start;
-  let args, at, i, atLength;
-
-  switch (header.type) {
-    case 0:
-      const dictionary = {};
-      const dictionaryFlags = (0, _core_utils.readUint16)(data, position);
-      dictionary.huffman = !!(dictionaryFlags & 1);
-      dictionary.refinement = !!(dictionaryFlags & 2);
-      dictionary.huffmanDHSelector = dictionaryFlags >> 2 & 3;
-      dictionary.huffmanDWSelector = dictionaryFlags >> 4 & 3;
-      dictionary.bitmapSizeSelector = dictionaryFlags >> 6 & 1;
-      dictionary.aggregationInstancesSelector = dictionaryFlags >> 7 & 1;
-      dictionary.bitmapCodingContextUsed = !!(dictionaryFlags & 256);
-      dictionary.bitmapCodingContextRetained = !!(dictionaryFlags & 512);
-      dictionary.template = dictionaryFlags >> 10 & 3;
-      dictionary.refinementTemplate = dictionaryFlags >> 12 & 1;
-      position += 2;
-
-      if (!dictionary.huffman) {
-        atLength = dictionary.template === 0 ? 4 : 1;
-        at = [];
-
-        for (i = 0; i < atLength; i++) {
-          at.push({
-            x: (0, _core_utils.readInt8)(data, position),
-            y: (0, _core_utils.readInt8)(data, position + 1)
-          });
-          position += 2;
-        }
-
-        dictionary.at = at;
-      }
-
-      if (dictionary.refinement && !dictionary.refinementTemplate) {
-        at = [];
-
-        for (i = 0; i < 2; i++) {
-          at.push({
-            x: (0, _core_utils.readInt8)(data, position),
-            y: (0, _core_utils.readInt8)(data, position + 1)
-          });
-          position += 2;
-        }
-
-        dictionary.refinementAt = at;
-      }
-
-      dictionary.numberOfExportedSymbols = (0, _core_utils.readUint32)(data, position);
-      position += 4;
-      dictionary.numberOfNewSymbols = (0, _core_utils.readUint32)(data, position);
-      position += 4;
-      args = [dictionary, header.number, header.referredTo, data, position, end];
-      break;
-
-    case 6:
-    case 7:
-      const textRegion = {};
-      textRegion.info = readRegionSegmentInformation(data, position);
-      position += RegionSegmentInformationFieldLength;
-      const textRegionSegmentFlags = (0, _core_utils.readUint16)(data, position);
-      position += 2;
-      textRegion.huffman = !!(textRegionSegmentFlags & 1);
-      textRegion.refinement = !!(textRegionSegmentFlags & 2);
-      textRegion.logStripSize = textRegionSegmentFlags >> 2 & 3;
-      textRegion.stripSize = 1 << textRegion.logStripSize;
-      textRegion.referenceCorner = textRegionSegmentFlags >> 4 & 3;
-      textRegion.transposed = !!(textRegionSegmentFlags & 64);
-      textRegion.combinationOperator = textRegionSegmentFlags >> 7 & 3;
-      textRegion.defaultPixelValue = textRegionSegmentFlags >> 9 & 1;
-      textRegion.dsOffset = textRegionSegmentFlags << 17 >> 27;
-      textRegion.refinementTemplate = textRegionSegmentFlags >> 15 & 1;
-
-      if (textRegion.huffman) {
-        const textRegionHuffmanFlags = (0, _core_utils.readUint16)(data, position);
-        position += 2;
-        textRegion.huffmanFS = textRegionHuffmanFlags & 3;
-        textRegion.huffmanDS = textRegionHuffmanFlags >> 2 & 3;
-        textRegion.huffmanDT = textRegionHuffmanFlags >> 4 & 3;
-        textRegion.huffmanRefinementDW = textRegionHuffmanFlags >> 6 & 3;
-        textRegion.huffmanRefinementDH = textRegionHuffmanFlags >> 8 & 3;
-        textRegion.huffmanRefinementDX = textRegionHuffmanFlags >> 10 & 3;
-        textRegion.huffmanRefinementDY = textRegionHuffmanFlags >> 12 & 3;
-        textRegion.huffmanRefinementSizeSelector = !!(textRegionHuffmanFlags & 0x4000);
-      }
-
-      if (textRegion.refinement && !textRegion.refinementTemplate) {
-        at = [];
-
-        for (i = 0; i < 2; i++) {
-          at.push({
-            x: (0, _core_utils.readInt8)(data, position),
-            y: (0, _core_utils.readInt8)(data, position + 1)
-          });
-          position += 2;
-        }
-
-        textRegion.refinementAt = at;
-      }
-
-      textRegion.numberOfSymbolInstances = (0, _core_utils.readUint32)(data, position);
-      position += 4;
-      args = [textRegion, header.referredTo, data, position, end];
-      break;
-
-    case 16:
-      const patternDictionary = {};
-      const patternDictionaryFlags = data[position++];
-      patternDictionary.mmr = !!(patternDictionaryFlags & 1);
-      patternDictionary.template = patternDictionaryFlags >> 1 & 3;
-      patternDictionary.patternWidth = data[position++];
-      patternDictionary.patternHeight = data[position++];
-      patternDictionary.maxPatternIndex = (0, _core_utils.readUint32)(data, position);
-      position += 4;
-      args = [patternDictionary, header.number, data, position, end];
-      break;
-
-    case 22:
-    case 23:
-      const halftoneRegion = {};
-      halftoneRegion.info = readRegionSegmentInformation(data, position);
-      position += RegionSegmentInformationFieldLength;
-      const halftoneRegionFlags = data[position++];
-      halftoneRegion.mmr = !!(halftoneRegionFlags & 1);
-      halftoneRegion.template = halftoneRegionFlags >> 1 & 3;
-      halftoneRegion.enableSkip = !!(halftoneRegionFlags & 8);
-      halftoneRegion.combinationOperator = halftoneRegionFlags >> 4 & 7;
-      halftoneRegion.defaultPixelValue = halftoneRegionFlags >> 7 & 1;
-      halftoneRegion.gridWidth = (0, _core_utils.readUint32)(data, position);
-      position += 4;
-      halftoneRegion.gridHeight = (0, _core_utils.readUint32)(data, position);
-      position += 4;
-      halftoneRegion.gridOffsetX = (0, _core_utils.readUint32)(data, position) & 0xffffffff;
-      position += 4;
-      halftoneRegion.gridOffsetY = (0, _core_utils.readUint32)(data, position) & 0xffffffff;
-      position += 4;
-      halftoneRegion.gridVectorX = (0, _core_utils.readUint16)(data, position);
-      position += 2;
-      halftoneRegion.gridVectorY = (0, _core_utils.readUint16)(data, position);
-      position += 2;
-      args = [halftoneRegion, header.referredTo, data, position, end];
-      break;
-
-    case 38:
-    case 39:
-      const genericRegion = {};
-      genericRegion.info = readRegionSegmentInformation(data, position);
-      position += RegionSegmentInformationFieldLength;
-      const genericRegionSegmentFlags = data[position++];
-      genericRegion.mmr = !!(genericRegionSegmentFlags & 1);
-      genericRegion.template = genericRegionSegmentFlags >> 1 & 3;
-      genericRegion.prediction = !!(genericRegionSegmentFlags & 8);
-
-      if (!genericRegion.mmr) {
-        atLength = genericRegion.template === 0 ? 4 : 1;
-        at = [];
-
-        for (i = 0; i < atLength; i++) {
-          at.push({
-            x: (0, _core_utils.readInt8)(data, position),
-            y: (0, _core_utils.readInt8)(data, position + 1)
-          });
-          position += 2;
-        }
-
-        genericRegion.at = at;
-      }
-
-      args = [genericRegion, data, position, end];
-      break;
-
-    case 48:
-      const pageInfo = {
-        width: (0, _core_utils.readUint32)(data, position),
-        height: (0, _core_utils.readUint32)(data, position + 4),
-        resolutionX: (0, _core_utils.readUint32)(data, position + 8),
-        resolutionY: (0, _core_utils.readUint32)(data, position + 12)
-      };
-
-      if (pageInfo.height === 0xffffffff) {
-        delete pageInfo.height;
-      }
-
-      const pageSegmentFlags = data[position + 16];
-      (0, _core_utils.readUint16)(data, position + 17);
-      pageInfo.lossless = !!(pageSegmentFlags & 1);
-      pageInfo.refinement = !!(pageSegmentFlags & 2);
-      pageInfo.defaultPixelValue = pageSegmentFlags >> 2 & 1;
-      pageInfo.combinationOperator = pageSegmentFlags >> 3 & 3;
-      pageInfo.requiresBuffer = !!(pageSegmentFlags & 32);
-      pageInfo.combinationOperatorOverride = !!(pageSegmentFlags & 64);
-      args = [pageInfo];
-      break;
-
-    case 49:
-      break;
-
-    case 50:
-      break;
-
-    case 51:
-      break;
-
-    case 53:
-      args = [header.number, data, position, end];
-      break;
-
-    case 62:
-      break;
-
-    default:
-      throw new Jbig2Error(`segment type ${header.typeName}(${header.type})` + " is not implemented");
-  }
-
-  const callbackName = "on" + header.typeName;
-
-  if (callbackName in visitor) {
-    visitor[callbackName].apply(visitor, args);
-  }
-}
-
-function processSegments(segments, visitor) {
-  for (let i = 0, ii = segments.length; i < ii; i++) {
-    processSegment(segments[i], visitor);
-  }
-}
-
-function parseJbig2Chunks(chunks) {
-  const visitor = new SimpleSegmentVisitor();
-
-  for (let i = 0, ii = chunks.length; i < ii; i++) {
-    const chunk = chunks[i];
-    const segments = readSegments({}, chunk.data, chunk.start, chunk.end);
-    processSegments(segments, visitor);
-  }
-
-  return visitor.buffer;
-}
-
-function parseJbig2(data) {
-  const end = data.length;
-  let position = 0;
-
-  if (data[position] !== 0x97 || data[position + 1] !== 0x4a || data[position + 2] !== 0x42 || data[position 
+ 3] !== 0x32 || data[position + 4] !== 0x0d || data[position + 5] !== 0x0a || data[position + 6] !== 0x1a || 
data[position + 7] !== 0x0a) {
-    throw new Jbig2Error("parseJbig2 - invalid header.");
-  }
-
-  const header = Object.create(null);
-  position += 8;
-  const flags = data[position++];
-  header.randomAccess = !(flags & 1);
-
-  if (!(flags & 2)) {
-    header.numberOfPages = (0, _core_utils.readUint32)(data, position);
-    position += 4;
-  }
-
-  const segments = readSegments(header, data, position, end);
-  const visitor = new SimpleSegmentVisitor();
-  processSegments(segments, visitor);
-  const {
-    width,
-    height
-  } = visitor.currentPageInfo;
-  const bitPacked = visitor.buffer;
-  const imgData = new Uint8ClampedArray(width * height);
-  let q = 0,
-      k = 0;
-
-  for (let i = 0; i < height; i++) {
-    let mask = 0,
-        buffer;
-
-    for (let j = 0; j < width; j++) {
-      if (!mask) {
-        mask = 128;
-        buffer = bitPacked[k++];
-      }
-
-      imgData[q++] = buffer & mask ? 0 : 255;
-      mask >>= 1;
-    }
-  }
-
-  return {
-    imgData,
-    width,
-    height
-  };
-}
-
-class SimpleSegmentVisitor {
-  onPageInformation(info) {
-    this.currentPageInfo = info;
-    const rowSize = info.width + 7 >> 3;
-    const buffer = new Uint8ClampedArray(rowSize * info.height);
-
-    if (info.defaultPixelValue) {
-      for (let i = 0, ii = buffer.length; i < ii; i++) {
-        buffer[i] = 0xff;
-      }
-    }
-
-    this.buffer = buffer;
-  }
-
-  drawBitmap(regionInfo, bitmap) {
-    const pageInfo = this.currentPageInfo;
-    const width = regionInfo.width,
-          height = regionInfo.height;
-    const rowSize = pageInfo.width + 7 >> 3;
-    const combinationOperator = pageInfo.combinationOperatorOverride ? regionInfo.combinationOperator : 
pageInfo.combinationOperator;
-    const buffer = this.buffer;
-    const mask0 = 128 >> (regionInfo.x & 7);
-    let offset0 = regionInfo.y * rowSize + (regionInfo.x >> 3);
-    let i, j, mask, offset;
-
-    switch (combinationOperator) {
-      case 0:
-        for (i = 0; i < height; i++) {
-          mask = mask0;
-          offset = offset0;
-
-          for (j = 0; j < width; j++) {
-            if (bitmap[i][j]) {
-              buffer[offset] |= mask;
-            }
-
-            mask >>= 1;
-
-            if (!mask) {
-              mask = 128;
-              offset++;
-            }
-          }
-
-          offset0 += rowSize;
-        }
-
-        break;
-
-      case 2:
-        for (i = 0; i < height; i++) {
-          mask = mask0;
-          offset = offset0;
-
-          for (j = 0; j < width; j++) {
-            if (bitmap[i][j]) {
-              buffer[offset] ^= mask;
-            }
-
-            mask >>= 1;
-
-            if (!mask) {
-              mask = 128;
-              offset++;
-            }
-          }
-
-          offset0 += rowSize;
-        }
-
-        break;
-
-      default:
-        throw new Jbig2Error(`operator ${combinationOperator} is not supported`);
-    }
-  }
-
-  onImmediateGenericRegion(region, data, start, end) {
-    const regionInfo = region.info;
-    const decodingContext = new DecodingContext(data, start, end);
-    const bitmap = decodeBitmap(region.mmr, regionInfo.width, regionInfo.height, region.template, 
region.prediction, null, region.at, decodingContext);
-    this.drawBitmap(regionInfo, bitmap);
-  }
-
-  onImmediateLosslessGenericRegion() {
-    this.onImmediateGenericRegion.apply(this, arguments);
-  }
-
-  onSymbolDictionary(dictionary, currentSegment, referredSegments, data, start, end) {
-    let huffmanTables, huffmanInput;
-
-    if (dictionary.huffman) {
-      huffmanTables = getSymbolDictionaryHuffmanTables(dictionary, referredSegments, this.customTables);
-      huffmanInput = new Reader(data, start, end);
-    }
-
-    let symbols = this.symbols;
-
-    if (!symbols) {
-      this.symbols = symbols = {};
-    }
-
-    let inputSymbols = [];
-
-    for (let i = 0, ii = referredSegments.length; i < ii; i++) {
-      const referredSymbols = symbols[referredSegments[i]];
-
-      if (referredSymbols) {
-        inputSymbols = inputSymbols.concat(referredSymbols);
-      }
-    }
-
-    const decodingContext = new DecodingContext(data, start, end);
-    symbols[currentSegment] = decodeSymbolDictionary(dictionary.huffman, dictionary.refinement, 
inputSymbols, dictionary.numberOfNewSymbols, dictionary.numberOfExportedSymbols, huffmanTables, 
dictionary.template, dictionary.at, dictionary.refinementTemplate, dictionary.refinementAt, decodingContext, 
huffmanInput);
-  }
-
-  onImmediateTextRegion(region, referredSegments, data, start, end) {
-    const regionInfo = region.info;
-    let huffmanTables, huffmanInput;
-    const symbols = this.symbols;
-    let inputSymbols = [];
-
-    for (let i = 0, ii = referredSegments.length; i < ii; i++) {
-      const referredSymbols = symbols[referredSegments[i]];
-
-      if (referredSymbols) {
-        inputSymbols = inputSymbols.concat(referredSymbols);
-      }
-    }
-
-    const symbolCodeLength = (0, _core_utils.log2)(inputSymbols.length);
-
-    if (region.huffman) {
-      huffmanInput = new Reader(data, start, end);
-      huffmanTables = getTextRegionHuffmanTables(region, referredSegments, this.customTables, 
inputSymbols.length, huffmanInput);
-    }
-
-    const decodingContext = new DecodingContext(data, start, end);
-    const bitmap = decodeTextRegion(region.huffman, region.refinement, regionInfo.width, regionInfo.height, 
region.defaultPixelValue, region.numberOfSymbolInstances, region.stripSize, inputSymbols, symbolCodeLength, 
region.transposed, region.dsOffset, region.referenceCorner, region.combinationOperator, huffmanTables, 
region.refinementTemplate, region.refinementAt, decodingContext, region.logStripSize, huffmanInput);
-    this.drawBitmap(regionInfo, bitmap);
-  }
-
-  onImmediateLosslessTextRegion() {
-    this.onImmediateTextRegion.apply(this, arguments);
-  }
-
-  onPatternDictionary(dictionary, currentSegment, data, start, end) {
-    let patterns = this.patterns;
-
-    if (!patterns) {
-      this.patterns = patterns = {};
-    }
-
-    const decodingContext = new DecodingContext(data, start, end);
-    patterns[currentSegment] = decodePatternDictionary(dictionary.mmr, dictionary.patternWidth, 
dictionary.patternHeight, dictionary.maxPatternIndex, dictionary.template, decodingContext);
-  }
-
-  onImmediateHalftoneRegion(region, referredSegments, data, start, end) {
-    const patterns = this.patterns[referredSegments[0]];
-    const regionInfo = region.info;
-    const decodingContext = new DecodingContext(data, start, end);
-    const bitmap = decodeHalftoneRegion(region.mmr, patterns, region.template, regionInfo.width, 
regionInfo.height, region.defaultPixelValue, region.enableSkip, region.combinationOperator, region.gridWidth, 
region.gridHeight, region.gridOffsetX, region.gridOffsetY, region.gridVectorX, region.gridVectorY, 
decodingContext);
-    this.drawBitmap(regionInfo, bitmap);
-  }
-
-  onImmediateLosslessHalftoneRegion() {
-    this.onImmediateHalftoneRegion.apply(this, arguments);
-  }
-
-  onTables(currentSegment, data, start, end) {
-    let customTables = this.customTables;
-
-    if (!customTables) {
-      this.customTables = customTables = {};
-    }
-
-    customTables[currentSegment] = decodeTablesSegment(data, start, end);
-  }
-
-}
-
-class HuffmanLine {
-  constructor(lineData) {
-    if (lineData.length === 2) {
-      this.isOOB = true;
-      this.rangeLow = 0;
-      this.prefixLength = lineData[0];
-      this.rangeLength = 0;
-      this.prefixCode = lineData[1];
-      this.isLowerRange = false;
-    } else {
-      this.isOOB = false;
-      this.rangeLow = lineData[0];
-      this.prefixLength = lineData[1];
-      this.rangeLength = lineData[2];
-      this.prefixCode = lineData[3];
-      this.isLowerRange = lineData[4] === "lower";
-    }
-  }
-
-}
-
-class HuffmanTreeNode {
-  constructor(line) {
-    this.children = [];
-
-    if (line) {
-      this.isLeaf = true;
-      this.rangeLength = line.rangeLength;
-      this.rangeLow = line.rangeLow;
-      this.isLowerRange = line.isLowerRange;
-      this.isOOB = line.isOOB;
-    } else {
-      this.isLeaf = false;
-    }
-  }
-
-  buildTree(line, shift) {
-    const bit = line.prefixCode >> shift & 1;
-
-    if (shift <= 0) {
-      this.children[bit] = new HuffmanTreeNode(line);
-    } else {
-      let node = this.children[bit];
-
-      if (!node) {
-        this.children[bit] = node = new HuffmanTreeNode(null);
-      }
-
-      node.buildTree(line, shift - 1);
-    }
-  }
-
-  decodeNode(reader) {
-    if (this.isLeaf) {
-      if (this.isOOB) {
-        return null;
-      }
-
-      const htOffset = reader.readBits(this.rangeLength);
-      return this.rangeLow + (this.isLowerRange ? -htOffset : htOffset);
-    }
-
-    const node = this.children[reader.readBit()];
-
-    if (!node) {
-      throw new Jbig2Error("invalid Huffman data");
-    }
-
-    return node.decodeNode(reader);
-  }
-
-}
-
-class HuffmanTable {
-  constructor(lines, prefixCodesDone) {
-    if (!prefixCodesDone) {
-      this.assignPrefixCodes(lines);
-    }
-
-    this.rootNode = new HuffmanTreeNode(null);
-
-    for (let i = 0, ii = lines.length; i < ii; i++) {
-      const line = lines[i];
-
-      if (line.prefixLength > 0) {
-        this.rootNode.buildTree(line, line.prefixLength - 1);
-      }
-    }
-  }
-
-  decode(reader) {
-    return this.rootNode.decodeNode(reader);
-  }
-
-  assignPrefixCodes(lines) {
-    const linesLength = lines.length;
-    let prefixLengthMax = 0;
-
-    for (let i = 0; i < linesLength; i++) {
-      prefixLengthMax = Math.max(prefixLengthMax, lines[i].prefixLength);
-    }
-
-    const histogram = new Uint32Array(prefixLengthMax + 1);
-
-    for (let i = 0; i < linesLength; i++) {
-      histogram[lines[i].prefixLength]++;
-    }
-
-    let currentLength = 1,
-        firstCode = 0,
-        currentCode,
-        currentTemp,
-        line;
-    histogram[0] = 0;
-
-    while (currentLength <= prefixLengthMax) {
-      firstCode = firstCode + histogram[currentLength - 1] << 1;
-      currentCode = firstCode;
-      currentTemp = 0;
-
-      while (currentTemp < linesLength) {
-        line = lines[currentTemp];
-
-        if (line.prefixLength === currentLength) {
-          line.prefixCode = currentCode;
-          currentCode++;
-        }
-
-        currentTemp++;
-      }
-
-      currentLength++;
-    }
-  }
-
-}
-
-function decodeTablesSegment(data, start, end) {
-  const flags = data[start];
-  const lowestValue = (0, _core_utils.readUint32)(data, start + 1) & 0xffffffff;
-  const highestValue = (0, _core_utils.readUint32)(data, start + 5) & 0xffffffff;
-  const reader = new Reader(data, start + 9, end);
-  const prefixSizeBits = (flags >> 1 & 7) + 1;
-  const rangeSizeBits = (flags >> 4 & 7) + 1;
-  const lines = [];
-  let prefixLength,
-      rangeLength,
-      currentRangeLow = lowestValue;
-
-  do {
-    prefixLength = reader.readBits(prefixSizeBits);
-    rangeLength = reader.readBits(rangeSizeBits);
-    lines.push(new HuffmanLine([currentRangeLow, prefixLength, rangeLength, 0]));
-    currentRangeLow += 1 << rangeLength;
-  } while (currentRangeLow < highestValue);
-
-  prefixLength = reader.readBits(prefixSizeBits);
-  lines.push(new HuffmanLine([lowestValue - 1, prefixLength, 32, 0, "lower"]));
-  prefixLength = reader.readBits(prefixSizeBits);
-  lines.push(new HuffmanLine([highestValue, prefixLength, 32, 0]));
-
-  if (flags & 1) {
-    prefixLength = reader.readBits(prefixSizeBits);
-    lines.push(new HuffmanLine([prefixLength, 0]));
-  }
-
-  return new HuffmanTable(lines, false);
-}
-
-const standardTablesCache = {};
-
-function getStandardTable(number) {
-  let table = standardTablesCache[number];
-
-  if (table) {
-    return table;
-  }
-
-  let lines;
-
-  switch (number) {
-    case 1:
-      lines = [[0, 1, 4, 0x0], [16, 2, 8, 0x2], [272, 3, 16, 0x6], [65808, 3, 32, 0x7]];
-      break;
-
-    case 2:
-      lines = [[0, 1, 0, 0x0], [1, 2, 0, 0x2], [2, 3, 0, 0x6], [3, 4, 3, 0xe], [11, 5, 6, 0x1e], [75, 6, 32, 
0x3e], [6, 0x3f]];
-      break;
-
-    case 3:
-      lines = [[-256, 8, 8, 0xfe], [0, 1, 0, 0x0], [1, 2, 0, 0x2], [2, 3, 0, 0x6], [3, 4, 3, 0xe], [11, 5, 
6, 0x1e], [-257, 8, 32, 0xff, "lower"], [75, 7, 32, 0x7e], [6, 0x3e]];
-      break;
-
-    case 4:
-      lines = [[1, 1, 0, 0x0], [2, 2, 0, 0x2], [3, 3, 0, 0x6], [4, 4, 3, 0xe], [12, 5, 6, 0x1e], [76, 5, 32, 
0x1f]];
-      break;
-
-    case 5:
-      lines = [[-255, 7, 8, 0x7e], [1, 1, 0, 0x0], [2, 2, 0, 0x2], [3, 3, 0, 0x6], [4, 4, 3, 0xe], [12, 5, 
6, 0x1e], [-256, 7, 32, 0x7f, "lower"], [76, 6, 32, 0x3e]];
-      break;
-
-    case 6:
-      lines = [[-2048, 5, 10, 0x1c], [-1024, 4, 9, 0x8], [-512, 4, 8, 0x9], [-256, 4, 7, 0xa], [-128, 5, 6, 
0x1d], [-64, 5, 5, 0x1e], [-32, 4, 5, 0xb], [0, 2, 7, 0x0], [128, 3, 7, 0x2], [256, 3, 8, 0x3], [512, 4, 9, 
0xc], [1024, 4, 10, 0xd], [-2049, 6, 32, 0x3e, "lower"], [2048, 6, 32, 0x3f]];
-      break;
-
-    case 7:
-      lines = [[-1024, 4, 9, 0x8], [-512, 3, 8, 0x0], [-256, 4, 7, 0x9], [-128, 5, 6, 0x1a], [-64, 5, 5, 
0x1b], [-32, 4, 5, 0xa], [0, 4, 5, 0xb], [32, 5, 5, 0x1c], [64, 5, 6, 0x1d], [128, 4, 7, 0xc], [256, 3, 8, 
0x1], [512, 3, 9, 0x2], [1024, 3, 10, 0x3], [-1025, 5, 32, 0x1e, "lower"], [2048, 5, 32, 0x1f]];
-      break;
-
-    case 8:
-      lines = [[-15, 8, 3, 0xfc], [-7, 9, 1, 0x1fc], [-5, 8, 1, 0xfd], [-3, 9, 0, 0x1fd], [-2, 7, 0, 0x7c], 
[-1, 4, 0, 0xa], [0, 2, 1, 0x0], [2, 5, 0, 0x1a], [3, 6, 0, 0x3a], [4, 3, 4, 0x4], [20, 6, 1, 0x3b], [22, 4, 
4, 0xb], [38, 4, 5, 0xc], [70, 5, 6, 0x1b], [134, 5, 7, 0x1c], [262, 6, 7, 0x3c], [390, 7, 8, 0x7d], [646, 6, 
10, 0x3d], [-16, 9, 32, 0x1fe, "lower"], [1670, 9, 32, 0x1ff], [2, 0x1]];
-      break;
-
-    case 9:
-      lines = [[-31, 8, 4, 0xfc], [-15, 9, 2, 0x1fc], [-11, 8, 2, 0xfd], [-7, 9, 1, 0x1fd], [-5, 7, 1, 
0x7c], [-3, 4, 1, 0xa], [-1, 3, 1, 0x2], [1, 3, 1, 0x3], [3, 5, 1, 0x1a], [5, 6, 1, 0x3a], [7, 3, 5, 0x4], 
[39, 6, 2, 0x3b], [43, 4, 5, 0xb], [75, 4, 6, 0xc], [139, 5, 7, 0x1b], [267, 5, 8, 0x1c], [523, 6, 8, 0x3c], 
[779, 7, 9, 0x7d], [1291, 6, 11, 0x3d], [-32, 9, 32, 0x1fe, "lower"], [3339, 9, 32, 0x1ff], [2, 0x0]];
-      break;
-
-    case 10:
-      lines = [[-21, 7, 4, 0x7a], [-5, 8, 0, 0xfc], [-4, 7, 0, 0x7b], [-3, 5, 0, 0x18], [-2, 2, 2, 0x0], [2, 
5, 0, 0x19], [3, 6, 0, 0x36], [4, 7, 0, 0x7c], [5, 8, 0, 0xfd], [6, 2, 6, 0x1], [70, 5, 5, 0x1a], [102, 6, 5, 
0x37], [134, 6, 6, 0x38], [198, 6, 7, 0x39], [326, 6, 8, 0x3a], [582, 6, 9, 0x3b], [1094, 6, 10, 0x3c], 
[2118, 7, 11, 0x7d], [-22, 8, 32, 0xfe, "lower"], [4166, 8, 32, 0xff], [2, 0x2]];
-      break;
-
-    case 11:
-      lines = [[1, 1, 0, 0x0], [2, 2, 1, 0x2], [4, 4, 0, 0xc], [5, 4, 1, 0xd], [7, 5, 1, 0x1c], [9, 5, 2, 
0x1d], [13, 6, 2, 0x3c], [17, 7, 2, 0x7a], [21, 7, 3, 0x7b], [29, 7, 4, 0x7c], [45, 7, 5, 0x7d], [77, 7, 6, 
0x7e], [141, 7, 32, 0x7f]];
-      break;
-
-    case 12:
-      lines = [[1, 1, 0, 0x0], [2, 2, 0, 0x2], [3, 3, 1, 0x6], [5, 5, 0, 0x1c], [6, 5, 1, 0x1d], [8, 6, 1, 
0x3c], [10, 7, 0, 0x7a], [11, 7, 1, 0x7b], [13, 7, 2, 0x7c], [17, 7, 3, 0x7d], [25, 7, 4, 0x7e], [41, 8, 5, 
0xfe], [73, 8, 32, 0xff]];
-      break;
-
-    case 13:
-      lines = [[1, 1, 0, 0x0], [2, 3, 0, 0x4], [3, 4, 0, 0xc], [4, 5, 0, 0x1c], [5, 4, 1, 0xd], [7, 3, 3, 
0x5], [15, 6, 1, 0x3a], [17, 6, 2, 0x3b], [21, 6, 3, 0x3c], [29, 6, 4, 0x3d], [45, 6, 5, 0x3e], [77, 7, 6, 
0x7e], [141, 7, 32, 0x7f]];
-      break;
-
-    case 14:
-      lines = [[-2, 3, 0, 0x4], [-1, 3, 0, 0x5], [0, 1, 0, 0x0], [1, 3, 0, 0x6], [2, 3, 0, 0x7]];
-      break;
-
-    case 15:
-      lines = [[-24, 7, 4, 0x7c], [-8, 6, 2, 0x3c], [-4, 5, 1, 0x1c], [-2, 4, 0, 0xc], [-1, 3, 0, 0x4], [0, 
1, 0, 0x0], [1, 3, 0, 0x5], [2, 4, 0, 0xd], [3, 5, 1, 0x1d], [5, 6, 2, 0x3d], [9, 7, 4, 0x7d], [-25, 7, 32, 
0x7e, "lower"], [25, 7, 32, 0x7f]];
-      break;
-
-    default:
-      throw new Jbig2Error(`standard table B.${number} does not exist`);
-  }
-
-  for (let i = 0, ii = lines.length; i < ii; i++) {
-    lines[i] = new HuffmanLine(lines[i]);
-  }
-
-  table = new HuffmanTable(lines, true);
-  standardTablesCache[number] = table;
-  return table;
-}
-
-class Reader {
-  constructor(data, start, end) {
-    this.data = data;
-    this.start = start;
-    this.end = end;
-    this.position = start;
-    this.shift = -1;
-    this.currentByte = 0;
-  }
-
-  readBit() {
-    if (this.shift < 0) {
-      if (this.position >= this.end) {
-        throw new Jbig2Error("end of data while reading bit");
-      }
-
-      this.currentByte = this.data[this.position++];
-      this.shift = 7;
-    }
-
-    const bit = this.currentByte >> this.shift & 1;
-    this.shift--;
-    return bit;
-  }
-
-  readBits(numBits) {
-    let result = 0,
-        i;
-
-    for (i = numBits - 1; i >= 0; i--) {
-      result |= this.readBit() << i;
-    }
-
-    return result;
-  }
-
-  byteAlign() {
-    this.shift = -1;
-  }
-
-  next() {
-    if (this.position >= this.end) {
-      return -1;
-    }
-
-    return this.data[this.position++];
-  }
-
-}
-
-function getCustomHuffmanTable(index, referredTo, customTables) {
-  let currentIndex = 0;
-
-  for (let i = 0, ii = referredTo.length; i < ii; i++) {
-    const table = customTables[referredTo[i]];
-
-    if (table) {
-      if (index === currentIndex) {
-        return table;
-      }
-
-      currentIndex++;
-    }
-  }
-
-  throw new Jbig2Error("can't find custom Huffman table");
-}
-
-function getTextRegionHuffmanTables(textRegion, referredTo, customTables, numberOfSymbols, reader) {
-  const codes = [];
-
-  for (let i = 0; i <= 34; i++) {
-    const codeLength = reader.readBits(4);
-    codes.push(new HuffmanLine([i, codeLength, 0, 0]));
-  }
-
-  const runCodesTable = new HuffmanTable(codes, false);
-  codes.length = 0;
-
-  for (let i = 0; i < numberOfSymbols;) {
-    const codeLength = runCodesTable.decode(reader);
-
-    if (codeLength >= 32) {
-      let repeatedLength, numberOfRepeats, j;
-
-      switch (codeLength) {
-        case 32:
-          if (i === 0) {
-            throw new Jbig2Error("no previous value in symbol ID table");
-          }
-
-          numberOfRepeats = reader.readBits(2) + 3;
-          repeatedLength = codes[i - 1].prefixLength;
-          break;
-
-        case 33:
-          numberOfRepeats = reader.readBits(3) + 3;
-          repeatedLength = 0;
-          break;
-
-        case 34:
-          numberOfRepeats = reader.readBits(7) + 11;
-          repeatedLength = 0;
-          break;
-
-        default:
-          throw new Jbig2Error("invalid code length in symbol ID table");
-      }
-
-      for (j = 0; j < numberOfRepeats; j++) {
-        codes.push(new HuffmanLine([i, repeatedLength, 0, 0]));
-        i++;
-      }
-    } else {
-      codes.push(new HuffmanLine([i, codeLength, 0, 0]));
-      i++;
-    }
-  }
-
-  reader.byteAlign();
-  const symbolIDTable = new HuffmanTable(codes, false);
-  let customIndex = 0,
-      tableFirstS,
-      tableDeltaS,
-      tableDeltaT;
-
-  switch (textRegion.huffmanFS) {
-    case 0:
-    case 1:
-      tableFirstS = getStandardTable(textRegion.huffmanFS + 6);
-      break;
-
-    case 3:
-      tableFirstS = getCustomHuffmanTable(customIndex, referredTo, customTables);
-      customIndex++;
-      break;
-
-    default:
-      throw new Jbig2Error("invalid Huffman FS selector");
-  }
-
-  switch (textRegion.huffmanDS) {
-    case 0:
-    case 1:
-    case 2:
-      tableDeltaS = getStandardTable(textRegion.huffmanDS + 8);
-      break;
-
-    case 3:
-      tableDeltaS = getCustomHuffmanTable(customIndex, referredTo, customTables);
-      customIndex++;
-      break;
-
-    default:
-      throw new Jbig2Error("invalid Huffman DS selector");
-  }
-
-  switch (textRegion.huffmanDT) {
-    case 0:
-    case 1:
-    case 2:
-      tableDeltaT = getStandardTable(textRegion.huffmanDT + 11);
-      break;
-
-    case 3:
-      tableDeltaT = getCustomHuffmanTable(customIndex, referredTo, customTables);
-      customIndex++;
-      break;
-
-    default:
-      throw new Jbig2Error("invalid Huffman DT selector");
-  }
-
-  if (textRegion.refinement) {
-    throw new Jbig2Error("refinement with Huffman is not supported");
-  }
-
-  return {
-    symbolIDTable,
-    tableFirstS,
-    tableDeltaS,
-    tableDeltaT
-  };
-}
-
-function getSymbolDictionaryHuffmanTables(dictionary, referredTo, customTables) {
-  let customIndex = 0,
-      tableDeltaHeight,
-      tableDeltaWidth;
-
-  switch (dictionary.huffmanDHSelector) {
-    case 0:
-    case 1:
-      tableDeltaHeight = getStandardTable(dictionary.huffmanDHSelector + 4);
-      break;
-
-    case 3:
-      tableDeltaHeight = getCustomHuffmanTable(customIndex, referredTo, customTables);
-      customIndex++;
-      break;
-
-    default:
-      throw new Jbig2Error("invalid Huffman DH selector");
-  }
-
-  switch (dictionary.huffmanDWSelector) {
-    case 0:
-    case 1:
-      tableDeltaWidth = getStandardTable(dictionary.huffmanDWSelector + 2);
-      break;
-
-    case 3:
-      tableDeltaWidth = getCustomHuffmanTable(customIndex, referredTo, customTables);
-      customIndex++;
-      break;
-
-    default:
-      throw new Jbig2Error("invalid Huffman DW selector");
-  }
-
-  let tableBitmapSize, tableAggregateInstances;
-
-  if (dictionary.bitmapSizeSelector) {
-    tableBitmapSize = getCustomHuffmanTable(customIndex, referredTo, customTables);
-    customIndex++;
-  } else {
-    tableBitmapSize = getStandardTable(1);
-  }
-
-  if (dictionary.aggregationInstancesSelector) {
-    tableAggregateInstances = getCustomHuffmanTable(customIndex, referredTo, customTables);
-  } else {
-    tableAggregateInstances = getStandardTable(1);
-  }
-
-  return {
-    tableDeltaHeight,
-    tableDeltaWidth,
-    tableBitmapSize,
-    tableAggregateInstances
-  };
-}
-
-function readUncompressedBitmap(reader, width, height) {
-  const bitmap = [];
-
-  for (let y = 0; y < height; y++) {
-    const row = new Uint8Array(width);
-    bitmap.push(row);
-
-    for (let x = 0; x < width; x++) {
-      row[x] = reader.readBit();
-    }
-
-    reader.byteAlign();
-  }
-
-  return bitmap;
-}
-
-function decodeMMRBitmap(input, width, height, endOfBlock) {
-  const params = {
-    K: -1,
-    Columns: width,
-    Rows: height,
-    BlackIs1: true,
-    EndOfBlock: endOfBlock
-  };
-  const decoder = new _ccitt.CCITTFaxDecoder(input, params);
-  const bitmap = [];
-  let currentByte,
-      eof = false;
-
-  for (let y = 0; y < height; y++) {
-    const row = new Uint8Array(width);
-    bitmap.push(row);
-    let shift = -1;
-
-    for (let x = 0; x < width; x++) {
-      if (shift < 0) {
-        currentByte = decoder.readNextChar();
-
-        if (currentByte === -1) {
-          currentByte = 0;
-          eof = true;
-        }
-
-        shift = 7;
-      }
-
-      row[x] = currentByte >> shift & 1;
-      shift--;
-    }
-  }
-
-  if (endOfBlock && !eof) {
-    const lookForEOFLimit = 5;
-
-    for (let i = 0; i < lookForEOFLimit; i++) {
-      if (decoder.readNextChar() === -1) {
-        break;
-      }
-    }
-  }
-
-  return bitmap;
-}
-
-class Jbig2Image {
-  parseChunks(chunks) {
-    return parseJbig2Chunks(chunks);
-  }
-
-  parse(data) {
-    const {
-      imgData,
-      width,
-      height
-    } = parseJbig2(data);
-    this.width = width;
-    this.height = height;
-    return imgData;
-  }
-
-}
-
-exports.Jbig2Image = Jbig2Image;
-
-/***/ }),
-/* 26 */
-/***/ ((__unused_webpack_module, exports) => {
-
-
-
-Object.defineProperty(exports, "__esModule", ({
-  value: true
-}));
-exports.ArithmeticDecoder = void 0;
-const QeTable = [{
-  qe: 0x5601,
-  nmps: 1,
-  nlps: 1,
-  switchFlag: 1
-}, {
-  qe: 0x3401,
-  nmps: 2,
-  nlps: 6,
-  switchFlag: 0
-}, {
-  qe: 0x1801,
-  nmps: 3,
-  nlps: 9,
-  switchFlag: 0
-}, {
-  qe: 0x0ac1,
-  nmps: 4,
-  nlps: 12,
-  switchFlag: 0
-}, {
-  qe: 0x0521,
-  nmps: 5,
-  nlps: 29,
-  switchFlag: 0
-}, {
-  qe: 0x0221,
-  nmps: 38,
-  nlps: 33,
-  switchFlag: 0
-}, {
-  qe: 0x5601,
-  nmps: 7,
-  nlps: 6,
-  switchFlag: 1
-}, {
-  qe: 0x5401,
-  nmps: 8,
-  nlps: 14,
-  switchFlag: 0
-}, {
-  qe: 0x4801,
-  nmps: 9,
-  nlps: 14,
-  switchFlag: 0
-}, {
-  qe: 0x3801,
-  nmps: 10,
-  nlps: 14,
-  switchFlag: 0
-}, {
-  qe: 0x3001,
-  nmps: 11,
-  nlps: 17,
-  switchFlag: 0
-}, {
-  qe: 0x2401,
-  nmps: 12,
-  nlps: 18,
-  switchFlag: 0
-}, {
-  qe: 0x1c01,
-  nmps: 13,
-  nlps: 20,
-  switchFlag: 0
-}, {
-  qe: 0x1601,
-  nmps: 29,
-  nlps: 21,
-  switchFlag: 0
-}, {
-  qe: 0x5601,
-  nmps: 15,
-  nlps: 14,
-  switchFlag: 1
-}, {
-  qe: 0x5401,
-  nmps: 16,
-  nlps: 14,
-  switchFlag: 0
-}, {
-  qe: 0x5101,
-  nmps: 17,
-  nlps: 15,
-  switchFlag: 0
-}, {
-  qe: 0x4801,
-  nmps: 18,
-  nlps: 16,
-  switchFlag: 0
-}, {
-  qe: 0x3801,
-  nmps: 19,
-  nlps: 17,
-  switchFlag: 0
-}, {
-  qe: 0x3401,
-  nmps: 20,
-  nlps: 18,
-  switchFlag: 0
-}, {
-  qe: 0x3001,
-  nmps: 21,
-  nlps: 19,
-  switchFlag: 0
-}, {
-  qe: 0x2801,
-  nmps: 22,
-  nlps: 19,
-  switchFlag: 0
-}, {
-  qe: 0x2401,
-  nmps: 23,
-  nlps: 20,
-  switchFlag: 0
-}, {
-  qe: 0x2201,
-  nmps: 24,
-  nlps: 21,
-  switchFlag: 0
-}, {
-  qe: 0x1c01,
-  nmps: 25,
-  nlps: 22,
-  switchFlag: 0
-}, {
-  qe: 0x1801,
-  nmps: 26,
-  nlps: 23,
-  switchFlag: 0
-}, {
-  qe: 0x1601,
-  nmps: 27,
-  nlps: 24,
-  switchFlag: 0
-}, {
-  qe: 0x1401,
-  nmps: 28,
-  nlps: 25,
-  switchFlag: 0
-}, {
-  qe: 0x1201,
-  nmps: 29,
-  nlps: 26,
-  switchFlag: 0
-}, {
-  qe: 0x1101,
-  nmps: 30,
-  nlps: 27,
-  switchFlag: 0
-}, {
-  qe: 0x0ac1,
-  nmps: 31,
-  nlps: 28,
-  switchFlag: 0
-}, {
-  qe: 0x09c1,
-  nmps: 32,
-  nlps: 29,
-  switchFlag: 0
-}, {
-  qe: 0x08a1,
-  nmps: 33,
-  nlps: 30,
-  switchFlag: 0
-}, {
-  qe: 0x0521,
-  nmps: 34,
-  nlps: 31,
-  switchFlag: 0
-}, {
-  qe: 0x0441,
-  nmps: 35,
-  nlps: 32,
-  switchFlag: 0
-}, {
-  qe: 0x02a1,
-  nmps: 36,
-  nlps: 33,
-  switchFlag: 0
-}, {
-  qe: 0x0221,
-  nmps: 37,
-  nlps: 34,
-  switchFlag: 0
-}, {
-  qe: 0x0141,
-  nmps: 38,
-  nlps: 35,
-  switchFlag: 0
-}, {
-  qe: 0x0111,
-  nmps: 39,
-  nlps: 36,
-  switchFlag: 0
-}, {
-  qe: 0x0085,
-  nmps: 40,
-  nlps: 37,
-  switchFlag: 0
-}, {
-  qe: 0x0049,
-  nmps: 41,
-  nlps: 38,
-  switchFlag: 0
-}, {
-  qe: 0x0025,
-  nmps: 42,
-  nlps: 39,
-  switchFlag: 0
-}, {
-  qe: 0x0015,
-  nmps: 43,
-  nlps: 40,
-  switchFlag: 0
-}, {
-  qe: 0x0009,
-  nmps: 44,
-  nlps: 41,
-  switchFlag: 0
-}, {
-  qe: 0x0005,
-  nmps: 45,
-  nlps: 42,
-  switchFlag: 0
-}, {
-  qe: 0x0001,
-  nmps: 45,
-  nlps: 43,
-  switchFlag: 0
-}, {
-  qe: 0x5601,
-  nmps: 46,
-  nlps: 46,
-  switchFlag: 0
-}];
-
-class ArithmeticDecoder {
-  constructor(data, start, end) {
-    this.data = data;
-    this.bp = start;
-    this.dataEnd = end;
-    this.chigh = data[start];
-    this.clow = 0;
-    this.byteIn();
-    this.chigh = this.chigh << 7 & 0xffff | this.clow >> 9 & 0x7f;
-    this.clow = this.clow << 7 & 0xffff;
-    this.ct -= 7;
-    this.a = 0x8000;
-  }
-
-  byteIn() {
-    const data = this.data;
-    let bp = this.bp;
-
-    if (data[bp] === 0xff) {
-      if (data[bp + 1] > 0x8f) {
-        this.clow += 0xff00;
-        this.ct = 8;
-      } else {
-        bp++;
-        this.clow += data[bp] << 9;
-        this.ct = 7;
-        this.bp = bp;
-      }
-    } else {
-      bp++;
-      this.clow += bp < this.dataEnd ? data[bp] << 8 : 0xff00;
-      this.ct = 8;
-      this.bp = bp;
-    }
-
-    if (this.clow > 0xffff) {
-      this.chigh += this.clow >> 16;
-      this.clow &= 0xffff;
-    }
-  }
-
-  readBit(contexts, pos) {
-    let cx_index = contexts[pos] >> 1,
-        cx_mps = contexts[pos] & 1;
-    const qeTableIcx = QeTable[cx_index];
-    const qeIcx = qeTableIcx.qe;
-    let d;
-    let a = this.a - qeIcx;
-
-    if (this.chigh < qeIcx) {
-      if (a < qeIcx) {
-        a = qeIcx;
-        d = cx_mps;
-        cx_index = qeTableIcx.nmps;
-      } else {
-        a = qeIcx;
-        d = 1 ^ cx_mps;
-
-        if (qeTableIcx.switchFlag === 1) {
-          cx_mps = d;
-        }
-
-        cx_index = qeTableIcx.nlps;
-      }
-    } else {
-      this.chigh -= qeIcx;
-
-      if ((a & 0x8000) !== 0) {
-        this.a = a;
-        return cx_mps;
-      }
-
-      if (a < qeIcx) {
-        d = 1 ^ cx_mps;
-
-        if (qeTableIcx.switchFlag === 1) {
-          cx_mps = d;
-        }
-
-        cx_index = qeTableIcx.nlps;
-      } else {
-        d = cx_mps;
-        cx_index = qeTableIcx.nmps;
-      }
-    }
-
-    do {
-      if (this.ct === 0) {
-        this.byteIn();
-      }
-
-      a <<= 1;
-      this.chigh = this.chigh << 1 & 0xffff | this.clow >> 15 & 1;
-      this.clow = this.clow << 1 & 0xffff;
-      this.ct--;
-    } while ((a & 0x8000) === 0);
-
-    this.a = a;
-    contexts[pos] = cx_index << 1 | cx_mps;
-    return d;
-  }
-
-}
-
-exports.ArithmeticDecoder = ArithmeticDecoder;
-
-/***/ }),
-/* 27 */
-/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
-
-
-
-Object.defineProperty(exports, "__esModule", ({
-  value: true
-}));
-exports.JpegStream = void 0;
-
-var _decode_stream = __w_pdfjs_require__(19);
-
-var _primitives = __w_pdfjs_require__(5);
-
-var _jpg = __w_pdfjs_require__(28);
-
-var _util = __w_pdfjs_require__(2);
-
-class JpegStream extends _decode_stream.DecodeStream {
-  constructor(stream, maybeLength, params) {
-    let ch;
-
-    while ((ch = stream.getByte()) !== -1) {
-      if (ch === 0xff) {
-        stream.skip(-1);
-        break;
-      }
-    }
-
-    super(maybeLength);
-    this.stream = stream;
-    this.dict = stream.dict;
-    this.maybeLength = maybeLength;
-    this.params = params;
-  }
-
-  get bytes() {
-    return (0, _util.shadow)(this, "bytes", this.stream.getBytes(this.maybeLength));
-  }
-
-  ensureBuffer(requested) {}
-
-  readBlock() {
-    if (this.eof) {
-      return;
-    }
-
-    const jpegOptions = {
-      decodeTransform: undefined,
-      colorTransform: undefined
-    };
-    const decodeArr = this.dict.getArray("Decode", "D");
-
-    if (this.forceRGB && Array.isArray(decodeArr)) {
-      const bitsPerComponent = this.dict.get("BitsPerComponent") || 8;
-      const decodeArrLength = decodeArr.length;
-      const transform = new Int32Array(decodeArrLength);
-      let transformNeeded = false;
-      const maxValue = (1 << bitsPerComponent) - 1;
-
-      for (let i = 0; i < decodeArrLength; i += 2) {
-        transform[i] = (decodeArr[i + 1] - decodeArr[i]) * 256 | 0;
-        transform[i + 1] = decodeArr[i] * maxValue | 0;
-
-        if (transform[i] !== 256 || transform[i + 1] !== 0) {
-          transformNeeded = true;
-        }
-      }
-
-      if (transformNeeded) {
-        jpegOptions.decodeTransform = transform;
-      }
-    }
-
-    if ((0, _primitives.isDict)(this.params)) {
-      const colorTransform = this.params.get("ColorTransform");
-
-      if (Number.isInteger(colorTransform)) {
-        jpegOptions.colorTransform = colorTransform;
-      }
-    }
-
-    const jpegImage = new _jpg.JpegImage(jpegOptions);
-    jpegImage.parse(this.bytes);
-    const data = jpegImage.getData({
-      width: this.drawWidth,
-      height: this.drawHeight,
-      forceRGB: this.forceRGB,
-      isSourcePDF: true
-    });
-    this.buffer = data;
-    this.bufferLength = data.length;
-    this.eof = true;
-  }
-
-}
-
-exports.JpegStream = JpegStream;
-
-/***/ }),
-/* 28 */
-/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
-
-
-
-Object.defineProperty(exports, "__esModule", ({
-  value: true
-}));
-exports.JpegImage = void 0;
-
-var _util = __w_pdfjs_require__(2);
-
-var _core_utils = __w_pdfjs_require__(9);
-
-class JpegError extends _util.BaseException {
-  constructor(msg) {
-    super(`JPEG error: ${msg}`);
-  }
-
-}
-
-class DNLMarkerError extends _util.BaseException {
-  constructor(message, scanLines) {
-    super(message);
-    this.scanLines = scanLines;
-  }
-
-}
-
-class EOIMarkerError extends _util.BaseException {}
-
-const dctZigZag = new Uint8Array([0, 1, 8, 16, 9, 2, 3, 10, 17, 24, 32, 25, 18, 11, 4, 5, 12, 19, 26, 33, 
40, 48, 41, 34, 27, 20, 13, 6, 7, 14, 21, 28, 35, 42, 49, 56, 57, 50, 43, 36, 29, 22, 15, 23, 30, 37, 44, 51, 
58, 59, 52, 45, 38, 31, 39, 46, 53, 60, 61, 54, 47, 55, 62, 63]);
-const dctCos1 = 4017;
-const dctSin1 = 799;
-const dctCos3 = 3406;
-const dctSin3 = 2276;
-const dctCos6 = 1567;
-const dctSin6 = 3784;
-const dctSqrt2 = 5793;
-const dctSqrt1d2 = 2896;
-
-function buildHuffmanTable(codeLengths, values) {
-  let k = 0,
-      i,
-      j,
-      length = 16;
-
-  while (length > 0 && !codeLengths[length - 1]) {
-    length--;
-  }
-
-  const code = [{
-    children: [],
-    index: 0
-  }];
-  let p = code[0],
-      q;
-
-  for (i = 0; i < length; i++) {
-    for (j = 0; j < codeLengths[i]; j++) {
-      p = code.pop();
-      p.children[p.index] = values[k];
-
-      while (p.index > 0) {
-        p = code.pop();
-      }
-
-      p.index++;
-      code.push(p);
-
-      while (code.length <= i) {
-        code.push(q = {
-          children: [],
-          index: 0
-        });
-        p.children[p.index] = q.children;
-        p = q;
-      }
-
-      k++;
-    }
-
-    if (i + 1 < length) {
-      code.push(q = {
-        children: [],
-        index: 0
-      });
-      p.children[p.index] = q.children;
-      p = q;
-    }
-  }
-
-  return code[0].children;
-}
-
-function getBlockBufferOffset(component, row, col) {
-  return 64 * ((component.blocksPerLine + 1) * row + col);
-}
-
-function decodeScan(data, offset, frame, components, resetInterval, spectralStart, spectralEnd, 
successivePrev, successive, parseDNLMarker = false) {
-  const mcusPerLine = frame.mcusPerLine;
-  const progressive = frame.progressive;
-  const startOffset = offset;
-  let bitsData = 0,
-      bitsCount = 0;
-
-  function readBit() {
-    if (bitsCount > 0) {
-      bitsCount--;
-      return bitsData >> bitsCount & 1;
-    }
-
-    bitsData = data[offset++];
-
-    if (bitsData === 0xff) {
-      const nextByte = data[offset++];
-
-      if (nextByte) {
-        if (nextByte === 0xdc && parseDNLMarker) {
-          offset += 2;
-          const scanLines = (0, _core_utils.readUint16)(data, offset);
-          offset += 2;
-
-          if (scanLines > 0 && scanLines !== frame.scanLines) {
-            throw new DNLMarkerError("Found DNL marker (0xFFDC) while parsing scan data", scanLines);
-          }
-        } else if (nextByte === 0xd9) {
-          if (parseDNLMarker) {
-            const maybeScanLines = blockRow * (frame.precision === 8 ? 8 : 0);
-
-            if (maybeScanLines > 0 && Math.round(frame.scanLines / maybeScanLines) >= 10) {
-              throw new DNLMarkerError("Found EOI marker (0xFFD9) while parsing scan data, " + "possibly 
caused by incorrect `scanLines` parameter", maybeScanLines);
-            }
-          }
-
-          throw new EOIMarkerError("Found EOI marker (0xFFD9) while parsing scan data");
-        }
-
-        throw new JpegError(`unexpected marker ${(bitsData << 8 | nextByte).toString(16)}`);
-      }
-    }
-
-    bitsCount = 7;
-    return bitsData >>> 7;
-  }
-
-  function decodeHuffman(tree) {
-    let node = tree;
-
-    while (true) {
-      node = node[readBit()];
-
-      switch (typeof node) {
-        case "number":
-          return node;
-
-        case "object":
-          continue;
-      }
-
-      throw new JpegError("invalid huffman sequence");
-    }
-  }
-
-  function receive(length) {
-    let n = 0;
-
-    while (length > 0) {
-      n = n << 1 | readBit();
-      length--;
-    }
-
-    return n;
-  }
-
-  function receiveAndExtend(length) {
-    if (length === 1) {
-      return readBit() === 1 ? 1 : -1;
-    }
-
-    const n = receive(length);
-
-    if (n >= 1 << length - 1) {
-      return n;
-    }
-
-    return n + (-1 << length) + 1;
-  }
-
-  function decodeBaseline(component, blockOffset) {
-    const t = decodeHuffman(component.huffmanTableDC);
-    const diff = t === 0 ? 0 : receiveAndExtend(t);
-    component.blockData[blockOffset] = component.pred += diff;
-    let k = 1;
-
-    while (k < 64) {
-      const rs = decodeHuffman(component.huffmanTableAC);
-      const s = rs & 15,
-            r = rs >> 4;
-
-      if (s === 0) {
-        if (r < 15) {
-          break;
-        }
-
-        k += 16;
-        continue;
-      }
-
-      k += r;
-      const z = dctZigZag[k];
-      component.blockData[blockOffset + z] = receiveAndExtend(s);
-      k++;
-    }
-  }
-
-  function decodeDCFirst(component, blockOffset) {
-    const t = decodeHuffman(component.huffmanTableDC);
-    const diff = t === 0 ? 0 : receiveAndExtend(t) << successive;
-    component.blockData[blockOffset] = component.pred += diff;
-  }
-
-  function decodeDCSuccessive(component, blockOffset) {
-    component.blockData[blockOffset] |= readBit() << successive;
-  }
-
-  let eobrun = 0;
-
-  function decodeACFirst(component, blockOffset) {
-    if (eobrun > 0) {
-      eobrun--;
-      return;
-    }
-
-    let k = spectralStart;
-    const e = spectralEnd;
-
-    while (k <= e) {
-      const rs = decodeHuffman(component.huffmanTableAC);
-      const s = rs & 15,
-            r = rs >> 4;
-
-      if (s === 0) {
-        if (r < 15) {
-          eobrun = receive(r) + (1 << r) - 1;
-          break;
-        }
-
-        k += 16;
-        continue;
-      }
-
-      k += r;
-      const z = dctZigZag[k];
-      component.blockData[blockOffset + z] = receiveAndExtend(s) * (1 << successive);
-      k++;
-    }
-  }
-
-  let successiveACState = 0,
-      successiveACNextValue;
-
-  function decodeACSuccessive(component, blockOffset) {
-    let k = spectralStart;
-    const e = spectralEnd;
-    let r = 0;
-    let s;
-    let rs;
-
-    while (k <= e) {
-      const offsetZ = blockOffset + dctZigZag[k];
-      const sign = component.blockData[offsetZ] < 0 ? -1 : 1;
-
-      switch (successiveACState) {
-        case 0:
-          rs = decodeHuffman(component.huffmanTableAC);
-          s = rs & 15;
-          r = rs >> 4;
-
-          if (s === 0) {
-            if (r < 15) {
-              eobrun = receive(r) + (1 << r);
-              successiveACState = 4;
-            } else {
-              r = 16;
-              successiveACState = 1;
-            }
-          } else {
-            if (s !== 1) {
-              throw new JpegError("invalid ACn encoding");
-            }
-
-            successiveACNextValue = receiveAndExtend(s);
-            successiveACState = r ? 2 : 3;
-          }
-
-          continue;
-
-        case 1:
-        case 2:
-          if (component.blockData[offsetZ]) {
-            component.blockData[offsetZ] += sign * (readBit() << successive);
-          } else {
-            r--;
-
-            if (r === 0) {
-              successiveACState = successiveACState === 2 ? 3 : 0;
-            }
-          }
-
-          break;
-
-        case 3:
-          if (component.blockData[offsetZ]) {
-            component.blockData[offsetZ] += sign * (readBit() << successive);
-          } else {
-            component.blockData[offsetZ] = successiveACNextValue << successive;
-            successiveACState = 0;
-          }
-
-          break;
-
-        case 4:
-          if (component.blockData[offsetZ]) {
-            component.blockData[offsetZ] += sign * (readBit() << successive);
-          }
-
-          break;
-      }
-
-      k++;
-    }
-
-    if (successiveACState === 4) {
-      eobrun--;
-
-      if (eobrun === 0) {
-        successiveACState = 0;
-      }
-    }
-  }
-
-  let blockRow = 0;
-
-  function decodeMcu(component, decode, mcu, row, col) {
-    const mcuRow = mcu / mcusPerLine | 0;
-    const mcuCol = mcu % mcusPerLine;
-    blockRow = mcuRow * component.v + row;
-    const blockCol = mcuCol * component.h + col;
-    const blockOffset = getBlockBufferOffset(component, blockRow, blockCol);
-    decode(component, blockOffset);
-  }
-
-  function decodeBlock(component, decode, mcu) {
-    blockRow = mcu / component.blocksPerLine | 0;
-    const blockCol = mcu % component.blocksPerLine;
-    const blockOffset = getBlockBufferOffset(component, blockRow, blockCol);
-    decode(component, blockOffset);
-  }
-
-  const componentsLength = components.length;
-  let component, i, j, k, n;
-  let decodeFn;
-
-  if (progressive) {
-    if (spectralStart === 0) {
-      decodeFn = successivePrev === 0 ? decodeDCFirst : decodeDCSuccessive;
-    } else {
-      decodeFn = successivePrev === 0 ? decodeACFirst : decodeACSuccessive;
-    }
-  } else {
-    decodeFn = decodeBaseline;
-  }
-
-  let mcu = 0,
-      fileMarker;
-  let mcuExpected;
-
-  if (componentsLength === 1) {
-    mcuExpected = components[0].blocksPerLine * components[0].blocksPerColumn;
-  } else {
-    mcuExpected = mcusPerLine * frame.mcusPerColumn;
-  }
-
-  let h, v;
-
-  while (mcu <= mcuExpected) {
-    const mcuToRead = resetInterval ? Math.min(mcuExpected - mcu, resetInterval) : mcuExpected;
-
-    if (mcuToRead > 0) {
-      for (i = 0; i < componentsLength; i++) {
-        components[i].pred = 0;
-      }
-
-      eobrun = 0;
-
-      if (componentsLength === 1) {
-        component = components[0];
-
-        for (n = 0; n < mcuToRead; n++) {
-          decodeBlock(component, decodeFn, mcu);
-          mcu++;
-        }
-      } else {
-        for (n = 0; n < mcuToRead; n++) {
-          for (i = 0; i < componentsLength; i++) {
-            component = components[i];
-            h = component.h;
-            v = component.v;
-
-            for (j = 0; j < v; j++) {
-              for (k = 0; k < h; k++) {
-                decodeMcu(component, decodeFn, mcu, j, k);
-              }
-            }
-          }
-
-          mcu++;
-        }
-      }
-    }
-
-    bitsCount = 0;
-    fileMarker = findNextFileMarker(data, offset);
-
-    if (!fileMarker) {
-      break;
-    }
-
-    if (fileMarker.invalid) {
-      const partialMsg = mcuToRead > 0 ? "unexpected" : "excessive";
-      (0, _util.warn)(`decodeScan - ${partialMsg} MCU data, current marker is: ${fileMarker.invalid}`);
-      offset = fileMarker.offset;
-    }
-
-    if (fileMarker.marker >= 0xffd0 && fileMarker.marker <= 0xffd7) {
-      offset += 2;
-    } else {
-      break;
-    }
-  }
-
-  return offset - startOffset;
-}
-
-function quantizeAndInverse(component, blockBufferOffset, p) {
-  const qt = component.quantizationTable,
-        blockData = component.blockData;
-  let v0, v1, v2, v3, v4, v5, v6, v7;
-  let p0, p1, p2, p3, p4, p5, p6, p7;
-  let t;
-
-  if (!qt) {
-    throw new JpegError("missing required Quantization Table.");
-  }
-
-  for (let row = 0; row < 64; row += 8) {
-    p0 = blockData[blockBufferOffset + row];
-    p1 = blockData[blockBufferOffset + row + 1];
-    p2 = blockData[blockBufferOffset + row + 2];
-    p3 = blockData[blockBufferOffset + row + 3];
-    p4 = blockData[blockBufferOffset + row + 4];
-    p5 = blockData[blockBufferOffset + row + 5];
-    p6 = blockData[blockBufferOffset + row + 6];
-    p7 = blockData[blockBufferOffset + row + 7];
-    p0 *= qt[row];
-
-    if ((p1 | p2 | p3 | p4 | p5 | p6 | p7) === 0) {
-      t = dctSqrt2 * p0 + 512 >> 10;
-      p[row] = t;
-      p[row + 1] = t;
-      p[row + 2] = t;
-      p[row + 3] = t;
-      p[row + 4] = t;
-      p[row + 5] = t;
-      p[row + 6] = t;
-      p[row + 7] = t;
-      continue;
-    }
-
-    p1 *= qt[row + 1];
-    p2 *= qt[row + 2];
-    p3 *= qt[row + 3];
-    p4 *= qt[row + 4];
-    p5 *= qt[row + 5];
-    p6 *= qt[row + 6];
-    p7 *= qt[row + 7];
-    v0 = dctSqrt2 * p0 + 128 >> 8;
-    v1 = dctSqrt2 * p4 + 128 >> 8;
-    v2 = p2;
-    v3 = p6;
-    v4 = dctSqrt1d2 * (p1 - p7) + 128 >> 8;
-    v7 = dctSqrt1d2 * (p1 + p7) + 128 >> 8;
-    v5 = p3 << 4;
-    v6 = p5 << 4;
-    v0 = v0 + v1 + 1 >> 1;
-    v1 = v0 - v1;
-    t = v2 * dctSin6 + v3 * dctCos6 + 128 >> 8;
-    v2 = v2 * dctCos6 - v3 * dctSin6 + 128 >> 8;
-    v3 = t;
-    v4 = v4 + v6 + 1 >> 1;
-    v6 = v4 - v6;
-    v7 = v7 + v5 + 1 >> 1;
-    v5 = v7 - v5;
-    v0 = v0 + v3 + 1 >> 1;
-    v3 = v0 - v3;
-    v1 = v1 + v2 + 1 >> 1;
-    v2 = v1 - v2;
-    t = v4 * dctSin3 + v7 * dctCos3 + 2048 >> 12;
-    v4 = v4 * dctCos3 - v7 * dctSin3 + 2048 >> 12;
-    v7 = t;
-    t = v5 * dctSin1 + v6 * dctCos1 + 2048 >> 12;
-    v5 = v5 * dctCos1 - v6 * dctSin1 + 2048 >> 12;
-    v6 = t;
-    p[row] = v0 + v7;
-    p[row + 7] = v0 - v7;
-    p[row + 1] = v1 + v6;
-    p[row + 6] = v1 - v6;
-    p[row + 2] = v2 + v5;
-    p[row + 5] = v2 - v5;
-    p[row + 3] = v3 + v4;
-    p[row + 4] = v3 - v4;
-  }
-
-  for (let col = 0; col < 8; ++col) {
-    p0 = p[col];
-    p1 = p[col + 8];
-    p2 = p[col + 16];
-    p3 = p[col + 24];
-    p4 = p[col + 32];
-    p5 = p[col + 40];
-    p6 = p[col + 48];
-    p7 = p[col + 56];
-
-    if ((p1 | p2 | p3 | p4 | p5 | p6 | p7) === 0) {
-      t = dctSqrt2 * p0 + 8192 >> 14;
-
-      if (t < -2040) {
-        t = 0;
-      } else if (t >= 2024) {
-        t = 255;
-      } else {
-        t = t + 2056 >> 4;
-      }
-
-      blockData[blockBufferOffset + col] = t;
-      blockData[blockBufferOffset + col + 8] = t;
-      blockData[blockBufferOffset + col + 16] = t;
-      blockData[blockBufferOffset + col + 24] = t;
-      blockData[blockBufferOffset + col + 32] = t;
-      blockData[blockBufferOffset + col + 40] = t;
-      blockData[blockBufferOffset + col + 48] = t;
-      blockData[blockBufferOffset + col + 56] = t;
-      continue;
-    }
-
-    v0 = dctSqrt2 * p0 + 2048 >> 12;
-    v1 = dctSqrt2 * p4 + 2048 >> 12;
-    v2 = p2;
-    v3 = p6;
-    v4 = dctSqrt1d2 * (p1 - p7) + 2048 >> 12;
-    v7 = dctSqrt1d2 * (p1 + p7) + 2048 >> 12;
-    v5 = p3;
-    v6 = p5;
-    v0 = (v0 + v1 + 1 >> 1) + 4112;
-    v1 = v0 - v1;
-    t = v2 * dctSin6 + v3 * dctCos6 + 2048 >> 12;
-    v2 = v2 * dctCos6 - v3 * dctSin6 + 2048 >> 12;
-    v3 = t;
-    v4 = v4 + v6 + 1 >> 1;
-    v6 = v4 - v6;
-    v7 = v7 + v5 + 1 >> 1;
-    v5 = v7 - v5;
-    v0 = v0 + v3 + 1 >> 1;
-    v3 = v0 - v3;
-    v1 = v1 + v2 + 1 >> 1;
-    v2 = v1 - v2;
-    t = v4 * dctSin3 + v7 * dctCos3 + 2048 >> 12;
-    v4 = v4 * dctCos3 - v7 * dctSin3 + 2048 >> 12;
-    v7 = t;
-    t = v5 * dctSin1 + v6 * dctCos1 + 2048 >> 12;
-    v5 = v5 * dctCos1 - v6 * dctSin1 + 2048 >> 12;
-    v6 = t;
-    p0 = v0 + v7;
-    p7 = v0 - v7;
-    p1 = v1 + v6;
-    p6 = v1 - v6;
-    p2 = v2 + v5;
-    p5 = v2 - v5;
-    p3 = v3 + v4;
-    p4 = v3 - v4;
-
-    if (p0 < 16) {
-      p0 = 0;
-    } else if (p0 >= 4080) {
-      p0 = 255;
-    } else {
-      p0 >>= 4;
-    }
-
-    if (p1 < 16) {
-      p1 = 0;
-    } else if (p1 >= 4080) {
-      p1 = 255;
-    } else {
-      p1 >>= 4;
-    }
-
-    if (p2 < 16) {
-      p2 = 0;
-    } else if (p2 >= 4080) {
-      p2 = 255;
-    } else {
-      p2 >>= 4;
-    }
-
-    if (p3 < 16) {
-      p3 = 0;
-    } else if (p3 >= 4080) {
-      p3 = 255;
-    } else {
-      p3 >>= 4;
-    }
-
-    if (p4 < 16) {
-      p4 = 0;
-    } else if (p4 >= 4080) {
-      p4 = 255;
-    } else {
-      p4 >>= 4;
-    }
-
-    if (p5 < 16) {
-      p5 = 0;
-    } else if (p5 >= 4080) {
-      p5 = 255;
-    } else {
-      p5 >>= 4;
-    }
-
-    if (p6 < 16) {
-      p6 = 0;
-    } else if (p6 >= 4080) {
-      p6 = 255;
-    } else {
-      p6 >>= 4;
-    }
-
-    if (p7 < 16) {
-      p7 = 0;
-    } else if (p7 >= 4080) {
-      p7 = 255;
-    } else {
-      p7 >>= 4;
-    }
-
-    blockData[blockBufferOffset + col] = p0;
-    blockData[blockBufferOffset + col + 8] = p1;
-    blockData[blockBufferOffset + col + 16] = p2;
-    blockData[blockBufferOffset + col + 24] = p3;
-    blockData[blockBufferOffset + col + 32] = p4;
-    blockData[blockBufferOffset + col + 40] = p5;
-    blockData[blockBufferOffset + col + 48] = p6;
-    blockData[blockBufferOffset + col + 56] = p7;
-  }
-}
-
-function buildComponentData(frame, component) {
-  const blocksPerLine = component.blocksPerLine;
-  const blocksPerColumn = component.blocksPerColumn;
-  const computationBuffer = new Int16Array(64);
-
-  for (let blockRow = 0; blockRow < blocksPerColumn; blockRow++) {
-    for (let blockCol = 0; blockCol < blocksPerLine; blockCol++) {
-      const offset = getBlockBufferOffset(component, blockRow, blockCol);
-      quantizeAndInverse(component, offset, computationBuffer);
-    }
-  }
-
-  return component.blockData;
-}
-
-function findNextFileMarker(data, currentPos, startPos = currentPos) {
-  const maxPos = data.length - 1;
-  let newPos = startPos < currentPos ? startPos : currentPos;
-
-  if (currentPos >= maxPos) {
-    return null;
-  }
-
-  const currentMarker = (0, _core_utils.readUint16)(data, currentPos);
-
-  if (currentMarker >= 0xffc0 && currentMarker <= 0xfffe) {
-    return {
-      invalid: null,
-      marker: currentMarker,
-      offset: currentPos
-    };
-  }
-
-  let newMarker = (0, _core_utils.readUint16)(data, newPos);
-
-  while (!(newMarker >= 0xffc0 && newMarker <= 0xfffe)) {
-    if (++newPos >= maxPos) {
-      return null;
-    }
-
-    newMarker = (0, _core_utils.readUint16)(data, newPos);
-  }
-
-  return {
-    invalid: currentMarker.toString(16),
-    marker: newMarker,
-    offset: newPos
-  };
-}
-
-class JpegImage {
-  constructor({
-    decodeTransform = null,
-    colorTransform = -1
-  } = {}) {
-    this._decodeTransform = decodeTransform;
-    this._colorTransform = colorTransform;
-  }
-
-  parse(data, {
-    dnlScanLines = null
-  } = {}) {
-    function readDataBlock() {
-      const length = (0, _core_utils.readUint16)(data, offset);
-      offset += 2;
-      let endOffset = offset + length - 2;
-      const fileMarker = findNextFileMarker(data, endOffset, offset);
-
-      if (fileMarker && fileMarker.invalid) {
-        (0, _util.warn)("readDataBlock - incorrect length, current marker is: " + fileMarker.invalid);
-        endOffset = fileMarker.offset;
-      }
-
-      const array = data.subarray(offset, endOffset);
-      offset += array.length;
-      return array;
-    }
-
-    function prepareComponents(frame) {
-      const mcusPerLine = Math.ceil(frame.samplesPerLine / 8 / frame.maxH);
-      const mcusPerColumn = Math.ceil(frame.scanLines / 8 / frame.maxV);
-
-      for (let i = 0, ii = frame.components.length; i < ii; i++) {
-        const component = frame.components[i];
-        const blocksPerLine = Math.ceil(Math.ceil(frame.samplesPerLine / 8) * component.h / frame.maxH);
-        const blocksPerColumn = Math.ceil(Math.ceil(frame.scanLines / 8) * component.v / frame.maxV);
-        const blocksPerLineForMcu = mcusPerLine * component.h;
-        const blocksPerColumnForMcu = mcusPerColumn * component.v;
-        const blocksBufferSize = 64 * blocksPerColumnForMcu * (blocksPerLineForMcu + 1);
-        component.blockData = new Int16Array(blocksBufferSize);
-        component.blocksPerLine = blocksPerLine;
-        component.blocksPerColumn = blocksPerColumn;
-      }
-
-      frame.mcusPerLine = mcusPerLine;
-      frame.mcusPerColumn = mcusPerColumn;
-    }
-
-    let offset = 0;
-    let jfif = null;
-    let adobe = null;
-    let frame, resetInterval;
-    let numSOSMarkers = 0;
-    const quantizationTables = [];
-    const huffmanTablesAC = [],
-          huffmanTablesDC = [];
-    let fileMarker = (0, _core_utils.readUint16)(data, offset);
-    offset += 2;
-
-    if (fileMarker !== 0xffd8) {
-      throw new JpegError("SOI not found");
-    }
-
-    fileMarker = (0, _core_utils.readUint16)(data, offset);
-    offset += 2;
-
-    markerLoop: while (fileMarker !== 0xffd9) {
-      let i, j, l;
-
-      switch (fileMarker) {
-        case 0xffe0:
-        case 0xffe1:
-        case 0xffe2:
-        case 0xffe3:
-        case 0xffe4:
-        case 0xffe5:
-        case 0xffe6:
-        case 0xffe7:
-        case 0xffe8:
-        case 0xffe9:
-        case 0xffea:
-        case 0xffeb:
-        case 0xffec:
-        case 0xffed:
-        case 0xffee:
-        case 0xffef:
-        case 0xfffe:
-          const appData = readDataBlock();
-
-          if (fileMarker === 0xffe0) {
-            if (appData[0] === 0x4a && appData[1] === 0x46 && appData[2] === 0x49 && appData[3] === 0x46 && 
appData[4] === 0) {
-              jfif = {
-                version: {
-                  major: appData[5],
-                  minor: appData[6]
-                },
-                densityUnits: appData[7],
-                xDensity: appData[8] << 8 | appData[9],
-                yDensity: appData[10] << 8 | appData[11],
-                thumbWidth: appData[12],
-                thumbHeight: appData[13],
-                thumbData: appData.subarray(14, 14 + 3 * appData[12] * appData[13])
-              };
-            }
-          }
-
-          if (fileMarker === 0xffee) {
-            if (appData[0] === 0x41 && appData[1] === 0x64 && appData[2] === 0x6f && appData[3] === 0x62 && 
appData[4] === 0x65) {
-              adobe = {
-                version: appData[5] << 8 | appData[6],
-                flags0: appData[7] << 8 | appData[8],
-                flags1: appData[9] << 8 | appData[10],
-                transformCode: appData[11]
-              };
-            }
-          }
-
-          break;
-
-        case 0xffdb:
-          const quantizationTablesLength = (0, _core_utils.readUint16)(data, offset);
-          offset += 2;
-          const quantizationTablesEnd = quantizationTablesLength + offset - 2;
-          let z;
-
-          while (offset < quantizationTablesEnd) {
-            const quantizationTableSpec = data[offset++];
-            const tableData = new Uint16Array(64);
-
-            if (quantizationTableSpec >> 4 === 0) {
-              for (j = 0; j < 64; j++) {
-                z = dctZigZag[j];
-                tableData[z] = data[offset++];
-              }
-            } else if (quantizationTableSpec >> 4 === 1) {
-              for (j = 0; j < 64; j++) {
-                z = dctZigZag[j];
-                tableData[z] = (0, _core_utils.readUint16)(data, offset);
-                offset += 2;
-              }
-            } else {
-              throw new JpegError("DQT - invalid table spec");
-            }
-
-            quantizationTables[quantizationTableSpec & 15] = tableData;
-          }
-
-          break;
-
-        case 0xffc0:
-        case 0xffc1:
-        case 0xffc2:
-          if (frame) {
-            throw new JpegError("Only single frame JPEGs supported");
-          }
-
-          offset += 2;
-          frame = {};
-          frame.extended = fileMarker === 0xffc1;
-          frame.progressive = fileMarker === 0xffc2;
-          frame.precision = data[offset++];
-          const sofScanLines = (0, _core_utils.readUint16)(data, offset);
-          offset += 2;
-          frame.scanLines = dnlScanLines || sofScanLines;
-          frame.samplesPerLine = (0, _core_utils.readUint16)(data, offset);
-          offset += 2;
-          frame.components = [];
-          frame.componentIds = {};
-          const componentsCount = data[offset++];
-          let maxH = 0,
-              maxV = 0;
-
-          for (i = 0; i < componentsCount; i++) {
-            const componentId = data[offset];
-            const h = data[offset + 1] >> 4;
-            const v = data[offset + 1] & 15;
-
-            if (maxH < h) {
-              maxH = h;
-            }
-
-            if (maxV < v) {
-              maxV = v;
-            }
-
-            const qId = data[offset + 2];
-            l = frame.components.push({
-              h,
-              v,
-              quantizationId: qId,
-              quantizationTable: null
-            });
-            frame.componentIds[componentId] = l - 1;
-            offset += 3;
-          }
-
-          frame.maxH = maxH;
-          frame.maxV = maxV;
-          prepareComponents(frame);
-          break;
-
-        case 0xffc4:
-          const huffmanLength = (0, _core_utils.readUint16)(data, offset);
-          offset += 2;
-
-          for (i = 2; i < huffmanLength;) {
-            const huffmanTableSpec = data[offset++];
-            const codeLengths = new Uint8Array(16);
-            let codeLengthSum = 0;
-
-            for (j = 0; j < 16; j++, offset++) {
-              codeLengthSum += codeLengths[j] = data[offset];
-            }
-
-            const huffmanValues = new Uint8Array(codeLengthSum);
-
-            for (j = 0; j < codeLengthSum; j++, offset++) {
-              huffmanValues[j] = data[offset];
-            }
-
-            i += 17 + codeLengthSum;
-            (huffmanTableSpec >> 4 === 0 ? huffmanTablesDC : huffmanTablesAC)[huffmanTableSpec & 15] = 
buildHuffmanTable(codeLengths, huffmanValues);
-          }
-
-          break;
-
-        case 0xffdd:
-          offset += 2;
-          resetInterval = (0, _core_utils.readUint16)(data, offset);
-          offset += 2;
-          break;
-
-        case 0xffda:
-          const parseDNLMarker = ++numSOSMarkers === 1 && !dnlScanLines;
-          offset += 2;
-          const selectorsCount = data[offset++],
-                components = [];
-
-          for (i = 0; i < selectorsCount; i++) {
-            const index = data[offset++];
-            const componentIndex = frame.componentIds[index];
-            const component = frame.components[componentIndex];
-            component.index = index;
-            const tableSpec = data[offset++];
-            component.huffmanTableDC = huffmanTablesDC[tableSpec >> 4];
-            component.huffmanTableAC = huffmanTablesAC[tableSpec & 15];
-            components.push(component);
-          }
-
-          const spectralStart = data[offset++],
-                spectralEnd = data[offset++],
-                successiveApproximation = data[offset++];
-
-          try {
-            const processed = decodeScan(data, offset, frame, components, resetInterval, spectralStart, 
spectralEnd, successiveApproximation >> 4, successiveApproximation & 15, parseDNLMarker);
-            offset += processed;
-          } catch (ex) {
-            if (ex instanceof DNLMarkerError) {
-              (0, _util.warn)(`${ex.message} -- attempting to re-parse the JPEG image.`);
-              return this.parse(data, {
-                dnlScanLines: ex.scanLines
-              });
-            } else if (ex instanceof EOIMarkerError) {
-              (0, _util.warn)(`${ex.message} -- ignoring the rest of the image data.`);
-              break markerLoop;
-            }
-
-            throw ex;
-          }
-
-          break;
-
-        case 0xffdc:
-          offset += 4;
-          break;
-
-        case 0xffff:
-          if (data[offset] !== 0xff) {
-            offset--;
-          }
-
-          break;
-
-        default:
-          const nextFileMarker = findNextFileMarker(data, offset - 2, offset - 3);
-
-          if (nextFileMarker && nextFileMarker.invalid) {
-            (0, _util.warn)("JpegImage.parse - unexpected data, current marker is: " + 
nextFileMarker.invalid);
-            offset = nextFileMarker.offset;
-            break;
-          }
-
-          if (!nextFileMarker || offset >= data.length - 1) {
-            (0, _util.warn)("JpegImage.parse - reached the end of the image data " + "without finding an EOI 
marker (0xFFD9).");
-            break markerLoop;
-          }
-
-          throw new JpegError("JpegImage.parse - unknown marker: " + fileMarker.toString(16));
-      }
-
-      fileMarker = (0, _core_utils.readUint16)(data, offset);
-      offset += 2;
-    }
-
-    this.width = frame.samplesPerLine;
-    this.height = frame.scanLines;
-    this.jfif = jfif;
-    this.adobe = adobe;
-    this.components = [];
-
-    for (let i = 0, ii = frame.components.length; i < ii; i++) {
-      const component = frame.components[i];
-      const quantizationTable = quantizationTables[component.quantizationId];
-
-      if (quantizationTable) {
-        component.quantizationTable = quantizationTable;
-      }
-
-      this.components.push({
-        index: component.index,
-        output: buildComponentData(frame, component),
-        scaleX: component.h / frame.maxH,
-        scaleY: component.v / frame.maxV,
-        blocksPerLine: component.blocksPerLine,
-        blocksPerColumn: component.blocksPerColumn
-      });
-    }
-
-    this.numComponents = this.components.length;
-    return undefined;
-  }
-
-  _getLinearizedBlockData(width, height, isSourcePDF = false) {
-    const scaleX = this.width / width,
-          scaleY = this.height / height;
-    let component, componentScaleX, componentScaleY, blocksPerScanline;
-    let x, y, i, j, k;
-    let index;
-    let offset = 0;
-    let output;
-    const numComponents = this.components.length;
-    const dataLength = width * height * numComponents;
-    const data = new Uint8ClampedArray(dataLength);
-    const xScaleBlockOffset = new Uint32Array(width);
-    const mask3LSB = 0xfffffff8;
-    let lastComponentScaleX;
-
-    for (i = 0; i < numComponents; i++) {
-      component = this.components[i];
-      componentScaleX = component.scaleX * scaleX;
-      componentScaleY = component.scaleY * scaleY;
-      offset = i;
-      output = component.output;
-      blocksPerScanline = component.blocksPerLine + 1 << 3;
-
-      if (componentScaleX !== lastComponentScaleX) {
-        for (x = 0; x < width; x++) {
-          j = 0 | x * componentScaleX;
-          xScaleBlockOffset[x] = (j & mask3LSB) << 3 | j & 7;
-        }
-
-        lastComponentScaleX = componentScaleX;
-      }
-
-      for (y = 0; y < height; y++) {
-        j = 0 | y * componentScaleY;
-        index = blocksPerScanline * (j & mask3LSB) | (j & 7) << 3;
-
-        for (x = 0; x < width; x++) {
-          data[offset] = output[index + xScaleBlockOffset[x]];
-          offset += numComponents;
-        }
-      }
-    }
-
-    let transform = this._decodeTransform;
-
-    if (!isSourcePDF && numComponents === 4 && !transform) {
-      transform = new Int32Array([-256, 255, -256, 255, -256, 255, -256, 255]);
-    }
-
-    if (transform) {
-      for (i = 0; i < dataLength;) {
-        for (j = 0, k = 0; j < numComponents; j++, i++, k += 2) {
-          data[i] = (data[i] * transform[k] >> 8) + transform[k + 1];
-        }
-      }
-    }
-
-    return data;
-  }
-
-  get _isColorConversionNeeded() {
-    if (this.adobe) {
-      return !!this.adobe.transformCode;
-    }
-
-    if (this.numComponents === 3) {
-      if (this._colorTransform === 0) {
-        return false;
-      } else if (this.components[0].index === 0x52 && this.components[1].index === 0x47 && 
this.components[2].index === 0x42) {
-        return false;
-      }
-
-      return true;
-    }
-
-    if (this._colorTransform === 1) {
-      return true;
-    }
-
-    return false;
-  }
-
-  _convertYccToRgb(data) {
-    let Y, Cb, Cr;
-
-    for (let i = 0, length = data.length; i < length; i += 3) {
-      Y = data[i];
-      Cb = data[i + 1];
-      Cr = data[i + 2];
-      data[i] = Y - 179.456 + 1.402 * Cr;
-      data[i + 1] = Y + 135.459 - 0.344 * Cb - 0.714 * Cr;
-      data[i + 2] = Y - 226.816 + 1.772 * Cb;
-    }
-
-    return data;
-  }
-
-  _convertYcckToRgb(data) {
-    let Y, Cb, Cr, k;
-    let offset = 0;
-
-    for (let i = 0, length = data.length; i < length; i += 4) {
-      Y = data[i];
-      Cb = data[i + 1];
-      Cr = data[i + 2];
-      k = data[i + 3];
-      data[offset++] = -122.67195406894 + Cb * (-6.60635669420364e-5 * Cb + 0.000437130475926232 * Cr - 
5.4080610064599e-5 * Y + 0.00048449797120281 * k - 0.154362151871126) + Cr * (-0.000957964378445773 * Cr + 
0.000817076911346625 * Y - 0.00477271405408747 * k + 1.53380253221734) + Y * (0.000961250184130688 * Y - 
0.00266257332283933 * k + 0.48357088451265) + k * (-0.000336197177618394 * k + 0.484791561490776);
-      data[offset++] = 107.268039397724 + Cb * (2.19927104525741e-5 * Cb - 0.000640992018297945 * Cr + 
0.000659397001245577 * Y + 0.000426105652938837 * k - 0.176491792462875) + Cr * (-0.000778269941513683 * Cr + 
0.00130872261408275 * Y + 0.000770482631801132 * k - 0.151051492775562) + Y * (0.00126935368114843 * Y - 
0.00265090189010898 * k + 0.25802910206845) + k * (-0.000318913117588328 * k - 0.213742400323665);
-      data[offset++] = -20.810012546947 + Cb * (-0.000570115196973677 * Cb - 2.63409051004589e-5 * Cr + 
0.0020741088115012 * Y - 0.00288260236853442 * k + 0.814272968359295) + Cr * (-1.53496057440975e-5 * Cr - 
0.000132689043961446 * Y + 0.000560833691242812 * k - 0.195152027534049) + Y * (0.00174418132927582 * Y - 
0.00255243321439347 * k + 0.116935020465145) + k * (-0.000343531996510555 * k + 0.24165260232407);
-    }
-
-    return data.subarray(0, offset);
-  }
-
-  _convertYcckToCmyk(data) {
-    let Y, Cb, Cr;
-
-    for (let i = 0, length = data.length; i < length; i += 4) {
-      Y = data[i];
-      Cb = data[i + 1];
-      Cr = data[i + 2];
-      data[i] = 434.456 - Y - 1.402 * Cr;
-      data[i + 1] = 119.541 - Y + 0.344 * Cb + 0.714 * Cr;
-      data[i + 2] = 481.816 - Y - 1.772 * Cb;
-    }
-
-    return data;
-  }
-
-  _convertCmykToRgb(data) {
-    let c, m, y, k;
-    let offset = 0;
-
-    for (let i = 0, length = data.length; i < length; i += 4) {
-      c = data[i];
-      m = data[i + 1];
-      y = data[i + 2];
-      k = data[i + 3];
-      data[offset++] = 255 + c * (-0.00006747147073602441 * c + 0.0008379262121013727 * m + 
0.0002894718188643294 * y + 0.003264231057537806 * k - 1.1185611867203937) + m * (0.000026374107616089405 * m 
- 0.00008626949158638572 * y - 0.0002748769067499491 * k - 0.02155688794978967) + y * 
(-0.00003878099212869363 * y - 0.0003267808279485286 * k + 0.0686742238595345) - k * (0.0003361971776183937 * 
k + 0.7430659151342254);
-      data[offset++] = 255 + c * (0.00013596372813588848 * c + 0.000924537132573585 * m + 
0.00010567359618683593 * y + 0.0004791864687436512 * k - 0.3109689587515875) + m * (-0.00023545346108370344 * 
m + 0.0002702845253534714 * y + 0.0020200308977307156 * k - 0.7488052167015494) + y * (0.00006834815998235662 
* y + 0.00015168452363460973 * k - 0.09751927774728933) - k * (0.00031891311758832814 * k + 
0.7364883807733168);
-      data[offset++] = 255 + c * (0.000013598650411385307 * c + 0.00012423956175490851 * m + 
0.0004751985097583589 * y - 0.0000036729317476630422 * k - 0.05562186980264034) + m * (0.00016141380598724676 
* m + 0.0009692239130725186 * y + 0.0007782692450036253 * k - 0.44015232367526463) + y * 
(5.068882914068769e-7 * y + 0.0017778369011375071 * k - 0.7591454649749609) - k * (0.0003435319965105553 * k 
+ 0.7063770186160144);
-    }
-
-    return data.subarray(0, offset);
-  }
-
-  getData({
-    width,
-    height,
-    forceRGB = false,
-    isSourcePDF = false
-  }) {
-    if (this.numComponents > 4) {
-      throw new JpegError("Unsupported color mode");
-    }
-
-    const data = this._getLinearizedBlockData(width, height, isSourcePDF);
-
-    if (this.numComponents === 1 && forceRGB) {
-      const dataLength = data.length;
-      const rgbData = new Uint8ClampedArray(dataLength * 3);
-      let offset = 0;
-
-      for (let i = 0; i < dataLength; i++) {
-        const grayColor = data[i];
-        rgbData[offset++] = grayColor;
-        rgbData[offset++] = grayColor;
-        rgbData[offset++] = grayColor;
-      }
-
-      return rgbData;
-    } else if (this.numComponents === 3 && this._isColorConversionNeeded) {
-      return this._convertYccToRgb(data);
-    } else if (this.numComponents === 4) {
-      if (this._isColorConversionNeeded) {
-        if (forceRGB) {
-          return this._convertYcckToRgb(data);
-        }
-
-        return this._convertYcckToCmyk(data);
-      } else if (forceRGB) {
-        return this._convertCmykToRgb(data);
-      }
-    }
-
-    return data;
-  }
-
-}
-
-exports.JpegImage = JpegImage;
-
-/***/ }),
-/* 29 */
-/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
-
-
-
-Object.defineProperty(exports, "__esModule", ({
-  value: true
-}));
-exports.JpxStream = void 0;
-
-var _decode_stream = __w_pdfjs_require__(19);
-
-var _jpx = __w_pdfjs_require__(30);
-
-var _util = __w_pdfjs_require__(2);
-
-class JpxStream extends _decode_stream.DecodeStream {
-  constructor(stream, maybeLength, params) {
-    super(maybeLength);
-    this.stream = stream;
-    this.dict = stream.dict;
-    this.maybeLength = maybeLength;
-    this.params = params;
-  }
-
-  get bytes() {
-    return (0, _util.shadow)(this, "bytes", this.stream.getBytes(this.maybeLength));
-  }
-
-  ensureBuffer(requested) {}
-
-  readBlock() {
-    if (this.eof) {
-      return;
-    }
-
-    const jpxImage = new _jpx.JpxImage();
-    jpxImage.parse(this.bytes);
-    const width = jpxImage.width;
-    const height = jpxImage.height;
-    const componentsCount = jpxImage.componentsCount;
-    const tileCount = jpxImage.tiles.length;
-
-    if (tileCount === 1) {
-      this.buffer = jpxImage.tiles[0].items;
-    } else {
-      const data = new Uint8ClampedArray(width * height * componentsCount);
-
-      for (let k = 0; k < tileCount; k++) {
-        const tileComponents = jpxImage.tiles[k];
-        const tileWidth = tileComponents.width;
-        const tileHeight = tileComponents.height;
-        const tileLeft = tileComponents.left;
-        const tileTop = tileComponents.top;
-        const src = tileComponents.items;
-        let srcPosition = 0;
-        let dataPosition = (width * tileTop + tileLeft) * componentsCount;
-        const imgRowSize = width * componentsCount;
-        const tileRowSize = tileWidth * componentsCount;
-
-        for (let j = 0; j < tileHeight; j++) {
-          const rowBytes = src.subarray(srcPosition, srcPosition + tileRowSize);
-          data.set(rowBytes, dataPosition);
-          srcPosition += tileRowSize;
-          dataPosition += imgRowSize;
-        }
-      }
-
-      this.buffer = data;
-    }
-
-    this.bufferLength = this.buffer.length;
-    this.eof = true;
-  }
-
-}
-
-exports.JpxStream = JpxStream;
-
-/***/ }),
-/* 30 */
-/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
-
-
-
-Object.defineProperty(exports, "__esModule", ({
-  value: true
-}));
-exports.JpxImage = void 0;
-
-var _util = __w_pdfjs_require__(2);
-
-var _core_utils = __w_pdfjs_require__(9);
-
-var _arithmetic_decoder = __w_pdfjs_require__(26);
-
-class JpxError extends _util.BaseException {
-  constructor(msg) {
-    super(`JPX error: ${msg}`);
-  }
-
-}
-
-const SubbandsGainLog2 = {
-  LL: 0,
-  LH: 1,
-  HL: 1,
-  HH: 2
-};
-
-class JpxImage {
-  constructor() {
-    this.failOnCorruptedImage = false;
-  }
-
-  parse(data) {
-    const head = (0, _core_utils.readUint16)(data, 0);
-
-    if (head === 0xff4f) {
-      this.parseCodestream(data, 0, data.length);
-      return;
-    }
-
-    const length = data.length;
-    let position = 0;
-
-    while (position < length) {
-      let headerSize = 8;
-      let lbox = (0, _core_utils.readUint32)(data, position);
-      const tbox = (0, _core_utils.readUint32)(data, position + 4);
-      position += headerSize;
-
-      if (lbox === 1) {
-        lbox = (0, _core_utils.readUint32)(data, position) * 4294967296 + (0, _core_utils.readUint32)(data, 
position + 4);
-        position += 8;
-        headerSize += 8;
-      }
-
-      if (lbox === 0) {
-        lbox = length - position + headerSize;
-      }
-
-      if (lbox < headerSize) {
-        throw new JpxError("Invalid box field size");
-      }
-
-      const dataLength = lbox - headerSize;
-      let jumpDataLength = true;
-
-      switch (tbox) {
-        case 0x6a703268:
-          jumpDataLength = false;
-          break;
-
-        case 0x636f6c72:
-          const method = data[position];
-
-          if (method === 1) {
-            const colorspace = (0, _core_utils.readUint32)(data, position + 3);
-
-            switch (colorspace) {
-              case 16:
-              case 17:
-              case 18:
-                break;
-
-              default:
-                (0, _util.warn)("Unknown colorspace " + colorspace);
-                break;
-            }
-          } else if (method === 2) {
-            (0, _util.info)("ICC profile not supported");
-          }
-
-          break;
-
-        case 0x6a703263:
-          this.parseCodestream(data, position, position + dataLength);
-          break;
-
-        case 0x6a502020:
-          if ((0, _core_utils.readUint32)(data, position) !== 0x0d0a870a) {
-            (0, _util.warn)("Invalid JP2 signature");
-          }
-
-          break;
-
-        case 0x6a501a1a:
-        case 0x66747970:
-        case 0x72726571:
-        case 0x72657320:
-        case 0x69686472:
-          break;
-
-        default:
-          const headerType = String.fromCharCode(tbox >> 24 & 0xff, tbox >> 16 & 0xff, tbox >> 8 & 0xff, 
tbox & 0xff);
-          (0, _util.warn)(`Unsupported header type ${tbox} (${headerType}).`);
-          break;
-      }
-
-      if (jumpDataLength) {
-        position += dataLength;
-      }
-    }
-  }
-
-  parseImageProperties(stream) {
-    let newByte = stream.getByte();
-
-    while (newByte >= 0) {
-      const oldByte = newByte;
-      newByte = stream.getByte();
-      const code = oldByte << 8 | newByte;
-
-      if (code === 0xff51) {
-        stream.skip(4);
-        const Xsiz = stream.getInt32() >>> 0;
-        const Ysiz = stream.getInt32() >>> 0;
-        const XOsiz = stream.getInt32() >>> 0;
-        const YOsiz = stream.getInt32() >>> 0;
-        stream.skip(16);
-        const Csiz = stream.getUint16();
-        this.width = Xsiz - XOsiz;
-        this.height = Ysiz - YOsiz;
-        this.componentsCount = Csiz;
-        this.bitsPerComponent = 8;
-        return;
-      }
-    }
-
-    throw new JpxError("No size marker found in JPX stream");
-  }
-
-  parseCodestream(data, start, end) {
-    const context = {};
-    let doNotRecover = false;
-
-    try {
-      let position = start;
-
-      while (position + 1 < end) {
-        const code = (0, _core_utils.readUint16)(data, position);
-        position += 2;
-        let length = 0,
-            j,
-            sqcd,
-            spqcds,
-            spqcdSize,
-            scalarExpounded,
-            tile;
-
-        switch (code) {
-          case 0xff4f:
-            context.mainHeader = true;
-            break;
-
-          case 0xffd9:
-            break;
-
-          case 0xff51:
-            length = (0, _core_utils.readUint16)(data, position);
-            const siz = {};
-            siz.Xsiz = (0, _core_utils.readUint32)(data, position + 4);
-            siz.Ysiz = (0, _core_utils.readUint32)(data, position + 8);
-            siz.XOsiz = (0, _core_utils.readUint32)(data, position + 12);
-            siz.YOsiz = (0, _core_utils.readUint32)(data, position + 16);
-            siz.XTsiz = (0, _core_utils.readUint32)(data, position + 20);
-            siz.YTsiz = (0, _core_utils.readUint32)(data, position + 24);
-            siz.XTOsiz = (0, _core_utils.readUint32)(data, position + 28);
-            siz.YTOsiz = (0, _core_utils.readUint32)(data, position + 32);
-            const componentsCount = (0, _core_utils.readUint16)(data, position + 36);
-            siz.Csiz = componentsCount;
-            const components = [];
-            j = position + 38;
-
-            for (let i = 0; i < componentsCount; i++) {
-              const component = {
-                precision: (data[j] & 0x7f) + 1,
-                isSigned: !!(data[j] & 0x80),
-                XRsiz: data[j + 1],
-                YRsiz: data[j + 2]
-              };
-              j += 3;
-              calculateComponentDimensions(component, siz);
-              components.push(component);
-            }
-
-            context.SIZ = siz;
-            context.components = components;
-            calculateTileGrids(context, components);
-            context.QCC = [];
-            context.COC = [];
-            break;
-
-          case 0xff5c:
-            length = (0, _core_utils.readUint16)(data, position);
-            const qcd = {};
-            j = position + 2;
-            sqcd = data[j++];
-
-            switch (sqcd & 0x1f) {
-              case 0:
-                spqcdSize = 8;
-                scalarExpounded = true;
-                break;
-
-              case 1:
-                spqcdSize = 16;
-                scalarExpounded = false;
-                break;
-
-              case 2:
-                spqcdSize = 16;
-                scalarExpounded = true;
-                break;
-
-              default:
-                throw new Error("Invalid SQcd value " + sqcd);
-            }
-
-            qcd.noQuantization = spqcdSize === 8;
-            qcd.scalarExpounded = scalarExpounded;
-            qcd.guardBits = sqcd >> 5;
-            spqcds = [];
-
-            while (j < length + position) {
-              const spqcd = {};
-
-              if (spqcdSize === 8) {
-                spqcd.epsilon = data[j++] >> 3;
-                spqcd.mu = 0;
-              } else {
-                spqcd.epsilon = data[j] >> 3;
-                spqcd.mu = (data[j] & 0x7) << 8 | data[j + 1];
-                j += 2;
-              }
-
-              spqcds.push(spqcd);
-            }
-
-            qcd.SPqcds = spqcds;
-
-            if (context.mainHeader) {
-              context.QCD = qcd;
-            } else {
-              context.currentTile.QCD = qcd;
-              context.currentTile.QCC = [];
-            }
-
-            break;
-
-          case 0xff5d:
-            length = (0, _core_utils.readUint16)(data, position);
-            const qcc = {};
-            j = position + 2;
-            let cqcc;
-
-            if (context.SIZ.Csiz < 257) {
-              cqcc = data[j++];
-            } else {
-              cqcc = (0, _core_utils.readUint16)(data, j);
-              j += 2;
-            }
-
-            sqcd = data[j++];
-
-            switch (sqcd & 0x1f) {
-              case 0:
-                spqcdSize = 8;
-                scalarExpounded = true;
-                break;
-
-              case 1:
-                spqcdSize = 16;
-                scalarExpounded = false;
-                break;
-
-              case 2:
-                spqcdSize = 16;
-                scalarExpounded = true;
-                break;
-
-              default:
-                throw new Error("Invalid SQcd value " + sqcd);
-            }
-
-            qcc.noQuantization = spqcdSize === 8;
-            qcc.scalarExpounded = scalarExpounded;
-            qcc.guardBits = sqcd >> 5;
-            spqcds = [];
-
-            while (j < length + position) {
-              const spqcd = {};
-
-              if (spqcdSize === 8) {
-                spqcd.epsilon = data[j++] >> 3;
-                spqcd.mu = 0;
-              } else {
-                spqcd.epsilon = data[j] >> 3;
-                spqcd.mu = (data[j] & 0x7) << 8 | data[j + 1];
-                j += 2;
-              }
-
-              spqcds.push(spqcd);
-            }
-
-            qcc.SPqcds = spqcds;
-
-            if (context.mainHeader) {
-              context.QCC[cqcc] = qcc;
-            } else {
-              context.currentTile.QCC[cqcc] = qcc;
-            }
-
-            break;
-
-          case 0xff52:
-            length = (0, _core_utils.readUint16)(data, position);
-            const cod = {};
-            j = position + 2;
-            const scod = data[j++];
-            cod.entropyCoderWithCustomPrecincts = !!(scod & 1);
-            cod.sopMarkerUsed = !!(scod & 2);
-            cod.ephMarkerUsed = !!(scod & 4);
-            cod.progressionOrder = data[j++];
-            cod.layersCount = (0, _core_utils.readUint16)(data, j);
-            j += 2;
-            cod.multipleComponentTransform = data[j++];
-            cod.decompositionLevelsCount = data[j++];
-            cod.xcb = (data[j++] & 0xf) + 2;
-            cod.ycb = (data[j++] & 0xf) + 2;
-            const blockStyle = data[j++];
-            cod.selectiveArithmeticCodingBypass = !!(blockStyle & 1);
-            cod.resetContextProbabilities = !!(blockStyle & 2);
-            cod.terminationOnEachCodingPass = !!(blockStyle & 4);
-            cod.verticallyStripe = !!(blockStyle & 8);
-            cod.predictableTermination = !!(blockStyle & 16);
-            cod.segmentationSymbolUsed = !!(blockStyle & 32);
-            cod.reversibleTransformation = data[j++];
-
-            if (cod.entropyCoderWithCustomPrecincts) {
-              const precinctsSizes = [];
-
-              while (j < length + position) {
-                const precinctsSize = data[j++];
-                precinctsSizes.push({
-                  PPx: precinctsSize & 0xf,
-                  PPy: precinctsSize >> 4
-                });
-              }
-
-              cod.precinctsSizes = precinctsSizes;
-            }
-
-            const unsupported = [];
-
-            if (cod.selectiveArithmeticCodingBypass) {
-              unsupported.push("selectiveArithmeticCodingBypass");
-            }
-
-            if (cod.resetContextProbabilities) {
-              unsupported.push("resetContextProbabilities");
-            }
-
-            if (cod.terminationOnEachCodingPass) {
-              unsupported.push("terminationOnEachCodingPass");
-            }
-
-            if (cod.verticallyStripe) {
-              unsupported.push("verticallyStripe");
-            }
-
-            if (cod.predictableTermination) {
-              unsupported.push("predictableTermination");
-            }
-
-            if (unsupported.length > 0) {
-              doNotRecover = true;
-              (0, _util.warn)(`JPX: Unsupported COD options (${unsupported.join(", ")}).`);
-            }
-
-            if (context.mainHeader) {
-              context.COD = cod;
-            } else {
-              context.currentTile.COD = cod;
-              context.currentTile.COC = [];
-            }
-
-            break;
-
-          case 0xff90:
-            length = (0, _core_utils.readUint16)(data, position);
-            tile = {};
-            tile.index = (0, _core_utils.readUint16)(data, position + 2);
-            tile.length = (0, _core_utils.readUint32)(data, position + 4);
-            tile.dataEnd = tile.length + position - 2;
-            tile.partIndex = data[position + 8];
-            tile.partsCount = data[position + 9];
-            context.mainHeader = false;
-
-            if (tile.partIndex === 0) {
-              tile.COD = context.COD;
-              tile.COC = context.COC.slice(0);
-              tile.QCD = context.QCD;
-              tile.QCC = context.QCC.slice(0);
-            }
-
-            context.currentTile = tile;
-            break;
-
-          case 0xff93:
-            tile = context.currentTile;
-
-            if (tile.partIndex === 0) {
-              initializeTile(context, tile.index);
-              buildPackets(context);
-            }
-
-            length = tile.dataEnd - position;
-            parseTilePackets(context, data, position, length);
-            break;
-
-          case 0xff53:
-            (0, _util.warn)("JPX: Codestream code 0xFF53 (COC) is not implemented.");
-
-          case 0xff55:
-          case 0xff57:
-          case 0xff58:
-          case 0xff64:
-            length = (0, _core_utils.readUint16)(data, position);
-            break;
-
-          default:
-            throw new Error("Unknown codestream code: " + code.toString(16));
-        }
-
-        position += length;
-      }
-    } catch (e) {
-      if (doNotRecover || this.failOnCorruptedImage) {
-        throw new JpxError(e.message);
-      } else {
-        (0, _util.warn)(`JPX: Trying to recover from: "${e.message}".`);
-      }
-    }
-
-    this.tiles = transformComponents(context);
-    this.width = context.SIZ.Xsiz - context.SIZ.XOsiz;
-    this.height = context.SIZ.Ysiz - context.SIZ.YOsiz;
-    this.componentsCount = context.SIZ.Csiz;
-  }
-
-}
-
-exports.JpxImage = JpxImage;
-
-function calculateComponentDimensions(component, siz) {
-  component.x0 = Math.ceil(siz.XOsiz / component.XRsiz);
-  component.x1 = Math.ceil(siz.Xsiz / component.XRsiz);
-  component.y0 = Math.ceil(siz.YOsiz / component.YRsiz);
-  component.y1 = Math.ceil(siz.Ysiz / component.YRsiz);
-  component.width = component.x1 - component.x0;
-  component.height = component.y1 - component.y0;
-}
-
-function calculateTileGrids(context, components) {
-  const siz = context.SIZ;
-  const tiles = [];
-  let tile;
-  const numXtiles = Math.ceil((siz.Xsiz - siz.XTOsiz) / siz.XTsiz);
-  const numYtiles = Math.ceil((siz.Ysiz - siz.YTOsiz) / siz.YTsiz);
-
-  for (let q = 0; q < numYtiles; q++) {
-    for (let p = 0; p < numXtiles; p++) {
-      tile = {};
-      tile.tx0 = Math.max(siz.XTOsiz + p * siz.XTsiz, siz.XOsiz);
-      tile.ty0 = Math.max(siz.YTOsiz + q * siz.YTsiz, siz.YOsiz);
-      tile.tx1 = Math.min(siz.XTOsiz + (p + 1) * siz.XTsiz, siz.Xsiz);
-      tile.ty1 = Math.min(siz.YTOsiz + (q + 1) * siz.YTsiz, siz.Ysiz);
-      tile.width = tile.tx1 - tile.tx0;
-      tile.height = tile.ty1 - tile.ty0;
-      tile.components = [];
-      tiles.push(tile);
-    }
-  }
-
-  context.tiles = tiles;
-  const componentsCount = siz.Csiz;
-
-  for (let i = 0, ii = componentsCount; i < ii; i++) {
-    const component = components[i];
-
-    for (let j = 0, jj = tiles.length; j < jj; j++) {
-      const tileComponent = {};
-      tile = tiles[j];
-      tileComponent.tcx0 = Math.ceil(tile.tx0 / component.XRsiz);
-      tileComponent.tcy0 = Math.ceil(tile.ty0 / component.YRsiz);
-      tileComponent.tcx1 = Math.ceil(tile.tx1 / component.XRsiz);
-      tileComponent.tcy1 = Math.ceil(tile.ty1 / component.YRsiz);
-      tileComponent.width = tileComponent.tcx1 - tileComponent.tcx0;
-      tileComponent.height = tileComponent.tcy1 - tileComponent.tcy0;
-      tile.components[i] = tileComponent;
-    }
-  }
-}
-
-function getBlocksDimensions(context, component, r) {
-  const codOrCoc = component.codingStyleParameters;
-  const result = {};
-
-  if (!codOrCoc.entropyCoderWithCustomPrecincts) {
-    result.PPx = 15;
-    result.PPy = 15;
-  } else {
-    result.PPx = codOrCoc.precinctsSizes[r].PPx;
-    result.PPy = codOrCoc.precinctsSizes[r].PPy;
-  }
-
-  result.xcb_ = r > 0 ? Math.min(codOrCoc.xcb, result.PPx - 1) : Math.min(codOrCoc.xcb, result.PPx);
-  result.ycb_ = r > 0 ? Math.min(codOrCoc.ycb, result.PPy - 1) : Math.min(codOrCoc.ycb, result.PPy);
-  return result;
-}
-
-function buildPrecincts(context, resolution, dimensions) {
-  const precinctWidth = 1 << dimensions.PPx;
-  const precinctHeight = 1 << dimensions.PPy;
-  const isZeroRes = resolution.resLevel === 0;
-  const precinctWidthInSubband = 1 << dimensions.PPx + (isZeroRes ? 0 : -1);
-  const precinctHeightInSubband = 1 << dimensions.PPy + (isZeroRes ? 0 : -1);
-  const numprecinctswide = resolution.trx1 > resolution.trx0 ? Math.ceil(resolution.trx1 / precinctWidth) - 
Math.floor(resolution.trx0 / precinctWidth) : 0;
-  const numprecinctshigh = resolution.try1 > resolution.try0 ? Math.ceil(resolution.try1 / precinctHeight) - 
Math.floor(resolution.try0 / precinctHeight) : 0;
-  const numprecincts = numprecinctswide * numprecinctshigh;
-  resolution.precinctParameters = {
-    precinctWidth,
-    precinctHeight,
-    numprecinctswide,
-    numprecinctshigh,
-    numprecincts,
-    precinctWidthInSubband,
-    precinctHeightInSubband
-  };
-}
-
-function buildCodeblocks(context, subband, dimensions) {
-  const xcb_ = dimensions.xcb_;
-  const ycb_ = dimensions.ycb_;
-  const codeblockWidth = 1 << xcb_;
-  const codeblockHeight = 1 << ycb_;
-  const cbx0 = subband.tbx0 >> xcb_;
-  const cby0 = subband.tby0 >> ycb_;
-  const cbx1 = subband.tbx1 + codeblockWidth - 1 >> xcb_;
-  const cby1 = subband.tby1 + codeblockHeight - 1 >> ycb_;
-  const precinctParameters = subband.resolution.precinctParameters;
-  const codeblocks = [];
-  const precincts = [];
-  let i, j, codeblock, precinctNumber;
-
-  for (j = cby0; j < cby1; j++) {
-    for (i = cbx0; i < cbx1; i++) {
-      codeblock = {
-        cbx: i,
-        cby: j,
-        tbx0: codeblockWidth * i,
-        tby0: codeblockHeight * j,
-        tbx1: codeblockWidth * (i + 1),
-        tby1: codeblockHeight * (j + 1)
-      };
-      codeblock.tbx0_ = Math.max(subband.tbx0, codeblock.tbx0);
-      codeblock.tby0_ = Math.max(subband.tby0, codeblock.tby0);
-      codeblock.tbx1_ = Math.min(subband.tbx1, codeblock.tbx1);
-      codeblock.tby1_ = Math.min(subband.tby1, codeblock.tby1);
-      const pi = Math.floor((codeblock.tbx0_ - subband.tbx0) / precinctParameters.precinctWidthInSubband);
-      const pj = Math.floor((codeblock.tby0_ - subband.tby0) / precinctParameters.precinctHeightInSubband);
-      precinctNumber = pi + pj * precinctParameters.numprecinctswide;
-      codeblock.precinctNumber = precinctNumber;
-      codeblock.subbandType = subband.type;
-      codeblock.Lblock = 3;
-
-      if (codeblock.tbx1_ <= codeblock.tbx0_ || codeblock.tby1_ <= codeblock.tby0_) {
-        continue;
-      }
-
-      codeblocks.push(codeblock);
-      let precinct = precincts[precinctNumber];
-
-      if (precinct !== undefined) {
-        if (i < precinct.cbxMin) {
-          precinct.cbxMin = i;
-        } else if (i > precinct.cbxMax) {
-          precinct.cbxMax = i;
-        }
-
-        if (j < precinct.cbyMin) {
-          precinct.cbxMin = j;
-        } else if (j > precinct.cbyMax) {
-          precinct.cbyMax = j;
-        }
-      } else {
-        precincts[precinctNumber] = precinct = {
-          cbxMin: i,
-          cbyMin: j,
-          cbxMax: i,
-          cbyMax: j
-        };
-      }
-
-      codeblock.precinct = precinct;
-    }
-  }
-
-  subband.codeblockParameters = {
-    codeblockWidth: xcb_,
-    codeblockHeight: ycb_,
-    numcodeblockwide: cbx1 - cbx0 + 1,
-    numcodeblockhigh: cby1 - cby0 + 1
-  };
-  subband.codeblocks = codeblocks;
-  subband.precincts = precincts;
-}
-
-function createPacket(resolution, precinctNumber, layerNumber) {
-  const precinctCodeblocks = [];
-  const subbands = resolution.subbands;
-
-  for (let i = 0, ii = subbands.length; i < ii; i++) {
-    const subband = subbands[i];
-    const codeblocks = subband.codeblocks;
-
-    for (let j = 0, jj = codeblocks.length; j < jj; j++) {
-      const codeblock = codeblocks[j];
-
-      if (codeblock.precinctNumber !== precinctNumber) {
-        continue;
-      }
-
-      precinctCodeblocks.push(codeblock);
-    }
-  }
-
-  return {
-    layerNumber,
-    codeblocks: precinctCodeblocks
-  };
-}
-
-function LayerResolutionComponentPositionIterator(context) {
-  const siz = context.SIZ;
-  const tileIndex = context.currentTile.index;
-  const tile = context.tiles[tileIndex];
-  const layersCount = tile.codingStyleDefaultParameters.layersCount;
-  const componentsCount = siz.Csiz;
-  let maxDecompositionLevelsCount = 0;
-
-  for (let q = 0; q < componentsCount; q++) {
-    maxDecompositionLevelsCount = Math.max(maxDecompositionLevelsCount, 
tile.components[q].codingStyleParameters.decompositionLevelsCount);
-  }
-
-  let l = 0,
-      r = 0,
-      i = 0,
-      k = 0;
-
-  this.nextPacket = function JpxImage_nextPacket() {
-    for (; l < layersCount; l++) {
-      for (; r <= maxDecompositionLevelsCount; r++) {
-        for (; i < componentsCount; i++) {
-          const component = tile.components[i];
-
-          if (r > component.codingStyleParameters.decompositionLevelsCount) {
-            continue;
-          }
-
-          const resolution = component.resolutions[r];
-          const numprecincts = resolution.precinctParameters.numprecincts;
-
-          for (; k < numprecincts;) {
-            const packet = createPacket(resolution, k, l);
-            k++;
-            return packet;
-          }
-
-          k = 0;
-        }
-
-        i = 0;
-      }
-
-      r = 0;
-    }
-
-    throw new JpxError("Out of packets");
-  };
-}
-
-function ResolutionLayerComponentPositionIterator(context) {
-  const siz = context.SIZ;
-  const tileIndex = context.currentTile.index;
-  const tile = context.tiles[tileIndex];
-  const layersCount = tile.codingStyleDefaultParameters.layersCount;
-  const componentsCount = siz.Csiz;
-  let maxDecompositionLevelsCount = 0;
-
-  for (let q = 0; q < componentsCount; q++) {
-    maxDecompositionLevelsCount = Math.max(maxDecompositionLevelsCount, 
tile.components[q].codingStyleParameters.decompositionLevelsCount);
-  }
-
-  let r = 0,
-      l = 0,
-      i = 0,
-      k = 0;
-
-  this.nextPacket = function JpxImage_nextPacket() {
-    for (; r <= maxDecompositionLevelsCount; r++) {
-      for (; l < layersCount; l++) {
-        for (; i < componentsCount; i++) {
-          const component = tile.components[i];
-
-          if (r > component.codingStyleParameters.decompositionLevelsCount) {
-            continue;
-          }
-
-          const resolution = component.resolutions[r];
-          const numprecincts = resolution.precinctParameters.numprecincts;
-
-          for (; k < numprecincts;) {
-            const packet = createPacket(resolution, k, l);
-            k++;
-            return packet;
-          }
-
-          k = 0;
-        }
-
-        i = 0;
-      }
-
-      l = 0;
-    }
-
-    throw new JpxError("Out of packets");
-  };
-}
-
-function ResolutionPositionComponentLayerIterator(context) {
-  const siz = context.SIZ;
-  const tileIndex = context.currentTile.index;
-  const tile = context.tiles[tileIndex];
-  const layersCount = tile.codingStyleDefaultParameters.layersCount;
-  const componentsCount = siz.Csiz;
-  let l, r, c, p;
-  let maxDecompositionLevelsCount = 0;
-
-  for (c = 0; c < componentsCount; c++) {
-    const component = tile.components[c];
-    maxDecompositionLevelsCount = Math.max(maxDecompositionLevelsCount, 
component.codingStyleParameters.decompositionLevelsCount);
-  }
-
-  const maxNumPrecinctsInLevel = new Int32Array(maxDecompositionLevelsCount + 1);
-
-  for (r = 0; r <= maxDecompositionLevelsCount; ++r) {
-    let maxNumPrecincts = 0;
-
-    for (c = 0; c < componentsCount; ++c) {
-      const resolutions = tile.components[c].resolutions;
-
-      if (r < resolutions.length) {
-        maxNumPrecincts = Math.max(maxNumPrecincts, resolutions[r].precinctParameters.numprecincts);
-      }
-    }
-
-    maxNumPrecinctsInLevel[r] = maxNumPrecincts;
-  }
-
-  l = 0;
-  r = 0;
-  c = 0;
-  p = 0;
-
-  this.nextPacket = function JpxImage_nextPacket() {
-    for (; r <= maxDecompositionLevelsCount; r++) {
-      for (; p < maxNumPrecinctsInLevel[r]; p++) {
-        for (; c < componentsCount; c++) {
-          const component = tile.components[c];
-
-          if (r > component.codingStyleParameters.decompositionLevelsCount) {
-            continue;
-          }
-
-          const resolution = component.resolutions[r];
-          const numprecincts = resolution.precinctParameters.numprecincts;
-
-          if (p >= numprecincts) {
-            continue;
-          }
-
-          for (; l < layersCount;) {
-            const packet = createPacket(resolution, p, l);
-            l++;
-            return packet;
-          }
-
-          l = 0;
-        }
-
-        c = 0;
-      }
-
-      p = 0;
-    }
-
-    throw new JpxError("Out of packets");
-  };
-}
-
-function PositionComponentResolutionLayerIterator(context) {
-  const siz = context.SIZ;
-  const tileIndex = context.currentTile.index;
-  const tile = context.tiles[tileIndex];
-  const layersCount = tile.codingStyleDefaultParameters.layersCount;
-  const componentsCount = siz.Csiz;
-  const precinctsSizes = getPrecinctSizesInImageScale(tile);
-  const precinctsIterationSizes = precinctsSizes;
-  let l = 0,
-      r = 0,
-      c = 0,
-      px = 0,
-      py = 0;
-
-  this.nextPacket = function JpxImage_nextPacket() {
-    for (; py < precinctsIterationSizes.maxNumHigh; py++) {
-      for (; px < precinctsIterationSizes.maxNumWide; px++) {
-        for (; c < componentsCount; c++) {
-          const component = tile.components[c];
-          const decompositionLevelsCount = component.codingStyleParameters.decompositionLevelsCount;
-
-          for (; r <= decompositionLevelsCount; r++) {
-            const resolution = component.resolutions[r];
-            const sizeInImageScale = precinctsSizes.components[c].resolutions[r];
-            const k = getPrecinctIndexIfExist(px, py, sizeInImageScale, precinctsIterationSizes, resolution);
-
-            if (k === null) {
-              continue;
-            }
-
-            for (; l < layersCount;) {
-              const packet = createPacket(resolution, k, l);
-              l++;
-              return packet;
-            }
-
-            l = 0;
-          }
-
-          r = 0;
-        }
-
-        c = 0;
-      }
-
-      px = 0;
-    }
-
-    throw new JpxError("Out of packets");
-  };
-}
-
-function ComponentPositionResolutionLayerIterator(context) {
-  const siz = context.SIZ;
-  const tileIndex = context.currentTile.index;
-  const tile = context.tiles[tileIndex];
-  const layersCount = tile.codingStyleDefaultParameters.layersCount;
-  const componentsCount = siz.Csiz;
-  const precinctsSizes = getPrecinctSizesInImageScale(tile);
-  let l = 0,
-      r = 0,
-      c = 0,
-      px = 0,
-      py = 0;
-
-  this.nextPacket = function JpxImage_nextPacket() {
-    for (; c < componentsCount; ++c) {
-      const component = tile.components[c];
-      const precinctsIterationSizes = precinctsSizes.components[c];
-      const decompositionLevelsCount = component.codingStyleParameters.decompositionLevelsCount;
-
-      for (; py < precinctsIterationSizes.maxNumHigh; py++) {
-        for (; px < precinctsIterationSizes.maxNumWide; px++) {
-          for (; r <= decompositionLevelsCount; r++) {
-            const resolution = component.resolutions[r];
-            const sizeInImageScale = precinctsIterationSizes.resolutions[r];
-            const k = getPrecinctIndexIfExist(px, py, sizeInImageScale, precinctsIterationSizes, resolution);
-
-            if (k === null) {
-              continue;
-            }
-
-            for (; l < layersCount;) {
-              const packet = createPacket(resolution, k, l);
-              l++;
-              return packet;
-            }
-
-            l = 0;
-          }
-
-          r = 0;
-        }
-
-        px = 0;
-      }
-
-      py = 0;
-    }
-
-    throw new JpxError("Out of packets");
-  };
-}
-
-function getPrecinctIndexIfExist(pxIndex, pyIndex, sizeInImageScale, precinctIterationSizes, resolution) {
-  const posX = pxIndex * precinctIterationSizes.minWidth;
-  const posY = pyIndex * precinctIterationSizes.minHeight;
-
-  if (posX % sizeInImageScale.width !== 0 || posY % sizeInImageScale.height !== 0) {
-    return null;
-  }
-
-  const startPrecinctRowIndex = posY / sizeInImageScale.width * 
resolution.precinctParameters.numprecinctswide;
-  return posX / sizeInImageScale.height + startPrecinctRowIndex;
-}
-
-function getPrecinctSizesInImageScale(tile) {
-  const componentsCount = tile.components.length;
-  let minWidth = Number.MAX_VALUE;
-  let minHeight = Number.MAX_VALUE;
-  let maxNumWide = 0;
-  let maxNumHigh = 0;
-  const sizePerComponent = new Array(componentsCount);
-
-  for (let c = 0; c < componentsCount; c++) {
-    const component = tile.components[c];
-    const decompositionLevelsCount = component.codingStyleParameters.decompositionLevelsCount;
-    const sizePerResolution = new Array(decompositionLevelsCount + 1);
-    let minWidthCurrentComponent = Number.MAX_VALUE;
-    let minHeightCurrentComponent = Number.MAX_VALUE;
-    let maxNumWideCurrentComponent = 0;
-    let maxNumHighCurrentComponent = 0;
-    let scale = 1;
-
-    for (let r = decompositionLevelsCount; r >= 0; --r) {
-      const resolution = component.resolutions[r];
-      const widthCurrentResolution = scale * resolution.precinctParameters.precinctWidth;
-      const heightCurrentResolution = scale * resolution.precinctParameters.precinctHeight;
-      minWidthCurrentComponent = Math.min(minWidthCurrentComponent, widthCurrentResolution);
-      minHeightCurrentComponent = Math.min(minHeightCurrentComponent, heightCurrentResolution);
-      maxNumWideCurrentComponent = Math.max(maxNumWideCurrentComponent, 
resolution.precinctParameters.numprecinctswide);
-      maxNumHighCurrentComponent = Math.max(maxNumHighCurrentComponent, 
resolution.precinctParameters.numprecinctshigh);
-      sizePerResolution[r] = {
-        width: widthCurrentResolution,
-        height: heightCurrentResolution
-      };
-      scale <<= 1;
-    }
-
-    minWidth = Math.min(minWidth, minWidthCurrentComponent);
-    minHeight = Math.min(minHeight, minHeightCurrentComponent);
-    maxNumWide = Math.max(maxNumWide, maxNumWideCurrentComponent);
-    maxNumHigh = Math.max(maxNumHigh, maxNumHighCurrentComponent);
-    sizePerComponent[c] = {
-      resolutions: sizePerResolution,
-      minWidth: minWidthCurrentComponent,
-      minHeight: minHeightCurrentComponent,
-      maxNumWide: maxNumWideCurrentComponent,
-      maxNumHigh: maxNumHighCurrentComponent
-    };
-  }
-
-  return {
-    components: sizePerComponent,
-    minWidth,
-    minHeight,
-    maxNumWide,
-    maxNumHigh
-  };
-}
-
-function buildPackets(context) {
-  const siz = context.SIZ;
-  const tileIndex = context.currentTile.index;
-  const tile = context.tiles[tileIndex];
-  const componentsCount = siz.Csiz;
-
-  for (let c = 0; c < componentsCount; c++) {
-    const component = tile.components[c];
-    const decompositionLevelsCount = component.codingStyleParameters.decompositionLevelsCount;
-    const resolutions = [];
-    const subbands = [];
-
-    for (let r = 0; r <= decompositionLevelsCount; r++) {
-      const blocksDimensions = getBlocksDimensions(context, component, r);
-      const resolution = {};
-      const scale = 1 << decompositionLevelsCount - r;
-      resolution.trx0 = Math.ceil(component.tcx0 / scale);
-      resolution.try0 = Math.ceil(component.tcy0 / scale);
-      resolution.trx1 = Math.ceil(component.tcx1 / scale);
-      resolution.try1 = Math.ceil(component.tcy1 / scale);
-      resolution.resLevel = r;
-      buildPrecincts(context, resolution, blocksDimensions);
-      resolutions.push(resolution);
-      let subband;
-
-      if (r === 0) {
-        subband = {};
-        subband.type = "LL";
-        subband.tbx0 = Math.ceil(component.tcx0 / scale);
-        subband.tby0 = Math.ceil(component.tcy0 / scale);
-        subband.tbx1 = Math.ceil(component.tcx1 / scale);
-        subband.tby1 = Math.ceil(component.tcy1 / scale);
-        subband.resolution = resolution;
-        buildCodeblocks(context, subband, blocksDimensions);
-        subbands.push(subband);
-        resolution.subbands = [subband];
-      } else {
-        const bscale = 1 << decompositionLevelsCount - r + 1;
-        const resolutionSubbands = [];
-        subband = {};
-        subband.type = "HL";
-        subband.tbx0 = Math.ceil(component.tcx0 / bscale - 0.5);
-        subband.tby0 = Math.ceil(component.tcy0 / bscale);
-        subband.tbx1 = Math.ceil(component.tcx1 / bscale - 0.5);
-        subband.tby1 = Math.ceil(component.tcy1 / bscale);
-        subband.resolution = resolution;
-        buildCodeblocks(context, subband, blocksDimensions);
-        subbands.push(subband);
-        resolutionSubbands.push(subband);
-        subband = {};
-        subband.type = "LH";
-        subband.tbx0 = Math.ceil(component.tcx0 / bscale);
-        subband.tby0 = Math.ceil(component.tcy0 / bscale - 0.5);
-        subband.tbx1 = Math.ceil(component.tcx1 / bscale);
-        subband.tby1 = Math.ceil(component.tcy1 / bscale - 0.5);
-        subband.resolution = resolution;
-        buildCodeblocks(context, subband, blocksDimensions);
-        subbands.push(subband);
-        resolutionSubbands.push(subband);
-        subband = {};
-        subband.type = "HH";
-        subband.tbx0 = Math.ceil(component.tcx0 / bscale - 0.5);
-        subband.tby0 = Math.ceil(component.tcy0 / bscale - 0.5);
-        subband.tbx1 = Math.ceil(component.tcx1 / bscale - 0.5);
-        subband.tby1 = Math.ceil(component.tcy1 / bscale - 0.5);
-        subband.resolution = resolution;
-        buildCodeblocks(context, subband, blocksDimensions);
-        subbands.push(subband);
-        resolutionSubbands.push(subband);
-        resolution.subbands = resolutionSubbands;
-      }
-    }
-
-    component.resolutions = resolutions;
-    component.subbands = subbands;
-  }
-
-  const progressionOrder = tile.codingStyleDefaultParameters.progressionOrder;
-
-  switch (progressionOrder) {
-    case 0:
-      tile.packetsIterator = new LayerResolutionComponentPositionIterator(context);
-      break;
-
-    case 1:
-      tile.packetsIterator = new ResolutionLayerComponentPositionIterator(context);
-      break;
-
-    case 2:
-      tile.packetsIterator = new ResolutionPositionComponentLayerIterator(context);
-      break;
-
-    case 3:
-      tile.packetsIterator = new PositionComponentResolutionLayerIterator(context);
-      break;
-
-    case 4:
-      tile.packetsIterator = new ComponentPositionResolutionLayerIterator(context);
-      break;
-
-    default:
-      throw new JpxError(`Unsupported progression order ${progressionOrder}`);
-  }
-}
-
-function parseTilePackets(context, data, offset, dataLength) {
-  let position = 0;
-  let buffer,
-      bufferSize = 0,
-      skipNextBit = false;
-
-  function readBits(count) {
-    while (bufferSize < count) {
-      const b = data[offset + position];
-      position++;
-
-      if (skipNextBit) {
-        buffer = buffer << 7 | b;
-        bufferSize += 7;
-        skipNextBit = false;
-      } else {
-        buffer = buffer << 8 | b;
-        bufferSize += 8;
-      }
-
-      if (b === 0xff) {
-        skipNextBit = true;
-      }
-    }
-
-    bufferSize -= count;
-    return buffer >>> bufferSize & (1 << count) - 1;
-  }
-
-  function skipMarkerIfEqual(value) {
-    if (data[offset + position - 1] === 0xff && data[offset + position] === value) {
-      skipBytes(1);
-      return true;
-    } else if (data[offset + position] === 0xff && data[offset + position + 1] === value) {
-      skipBytes(2);
-      return true;
-    }
-
-    return false;
-  }
-
-  function skipBytes(count) {
-    position += count;
-  }
-
-  function alignToByte() {
-    bufferSize = 0;
-
-    if (skipNextBit) {
-      position++;
-      skipNextBit = false;
-    }
-  }
-
-  function readCodingpasses() {
-    if (readBits(1) === 0) {
-      return 1;
-    }
-
-    if (readBits(1) === 0) {
-      return 2;
-    }
-
-    let value = readBits(2);
-
-    if (value < 3) {
-      return value + 3;
-    }
-
-    value = readBits(5);
-
-    if (value < 31) {
-      return value + 6;
-    }
-
-    value = readBits(7);
-    return value + 37;
-  }
-
-  const tileIndex = context.currentTile.index;
-  const tile = context.tiles[tileIndex];
-  const sopMarkerUsed = context.COD.sopMarkerUsed;
-  const ephMarkerUsed = context.COD.ephMarkerUsed;
-  const packetsIterator = tile.packetsIterator;
-
-  while (position < dataLength) {
-    alignToByte();
-
-    if (sopMarkerUsed && skipMarkerIfEqual(0x91)) {
-      skipBytes(4);
-    }
-
-    const packet = packetsIterator.nextPacket();
-
-    if (!readBits(1)) {
-      continue;
-    }
-
-    const layerNumber = packet.layerNumber,
-          queue = [];
-    let codeblock;
-
-    for (let i = 0, ii = packet.codeblocks.length; i < ii; i++) {
-      codeblock = packet.codeblocks[i];
-      let precinct = codeblock.precinct;
-      const codeblockColumn = codeblock.cbx - precinct.cbxMin;
-      const codeblockRow = codeblock.cby - precinct.cbyMin;
-      let codeblockIncluded = false;
-      let firstTimeInclusion = false;
-      let valueReady, zeroBitPlanesTree;
-
-      if (codeblock.included !== undefined) {
-        codeblockIncluded = !!readBits(1);
-      } else {
-        precinct = codeblock.precinct;
-        let inclusionTree;
-
-        if (precinct.inclusionTree !== undefined) {
-          inclusionTree = precinct.inclusionTree;
-        } else {
-          const width = precinct.cbxMax - precinct.cbxMin + 1;
-          const height = precinct.cbyMax - precinct.cbyMin + 1;
-          inclusionTree = new InclusionTree(width, height, layerNumber);
-          zeroBitPlanesTree = new TagTree(width, height);
-          precinct.inclusionTree = inclusionTree;
-          precinct.zeroBitPlanesTree = zeroBitPlanesTree;
-        }
-
-        if (inclusionTree.reset(codeblockColumn, codeblockRow, layerNumber)) {
-          while (true) {
-            if (readBits(1)) {
-              valueReady = !inclusionTree.nextLevel();
-
-              if (valueReady) {
-                codeblock.included = true;
-                codeblockIncluded = firstTimeInclusion = true;
-                break;
-              }
-            } else {
-              inclusionTree.incrementValue(layerNumber);
-              break;
-            }
-          }
-        }
-      }
-
-      if (!codeblockIncluded) {
-        continue;
-      }
-
-      if (firstTimeInclusion) {
-        zeroBitPlanesTree = precinct.zeroBitPlanesTree;
-        zeroBitPlanesTree.reset(codeblockColumn, codeblockRow);
-
-        while (true) {
-          if (readBits(1)) {
-            valueReady = !zeroBitPlanesTree.nextLevel();
-
-            if (valueReady) {
-              break;
-            }
-          } else {
-            zeroBitPlanesTree.incrementValue();
-          }
-        }
-
-        codeblock.zeroBitPlanes = zeroBitPlanesTree.value;
-      }
-
-      const codingpasses = readCodingpasses();
-
-      while (readBits(1)) {
-        codeblock.Lblock++;
-      }
-
-      const codingpassesLog2 = (0, _core_utils.log2)(codingpasses);
-      const bits = (codingpasses < 1 << codingpassesLog2 ? codingpassesLog2 - 1 : codingpassesLog2) + 
codeblock.Lblock;
-      const codedDataLength = readBits(bits);
-      queue.push({
-        codeblock,
-        codingpasses,
-        dataLength: codedDataLength
-      });
-    }
-
-    alignToByte();
-
-    if (ephMarkerUsed) {
-      skipMarkerIfEqual(0x92);
-    }
-
-    while (queue.length > 0) {
-      const packetItem = queue.shift();
-      codeblock = packetItem.codeblock;
-
-      if (codeblock.data === undefined) {
-        codeblock.data = [];
-      }
-
-      codeblock.data.push({
-        data,
-        start: offset + position,
-        end: offset + position + packetItem.dataLength,
-        codingpasses: packetItem.codingpasses
-      });
-      position += packetItem.dataLength;
-    }
-  }
-
-  return position;
-}
-
-function copyCoefficients(coefficients, levelWidth, levelHeight, subband, delta, mb, reversible, 
segmentationSymbolUsed) {
-  const x0 = subband.tbx0;
-  const y0 = subband.tby0;
-  const width = subband.tbx1 - subband.tbx0;
-  const codeblocks = subband.codeblocks;
-  const right = subband.type.charAt(0) === "H" ? 1 : 0;
-  const bottom = subband.type.charAt(1) === "H" ? levelWidth : 0;
-
-  for (let i = 0, ii = codeblocks.length; i < ii; ++i) {
-    const codeblock = codeblocks[i];
-    const blockWidth = codeblock.tbx1_ - codeblock.tbx0_;
-    const blockHeight = codeblock.tby1_ - codeblock.tby0_;
-
-    if (blockWidth === 0 || blockHeight === 0) {
-      continue;
-    }
-
-    if (codeblock.data === undefined) {
-      continue;
-    }
-
-    const bitModel = new BitModel(blockWidth, blockHeight, codeblock.subbandType, codeblock.zeroBitPlanes, 
mb);
-    let currentCodingpassType = 2;
-    const data = codeblock.data;
-    let totalLength = 0,
-        codingpasses = 0;
-    let j, jj, dataItem;
-
-    for (j = 0, jj = data.length; j < jj; j++) {
-      dataItem = data[j];
-      totalLength += dataItem.end - dataItem.start;
-      codingpasses += dataItem.codingpasses;
-    }
-
-    const encodedData = new Uint8Array(totalLength);
-    let position = 0;
-
-    for (j = 0, jj = data.length; j < jj; j++) {
-      dataItem = data[j];
-      const chunk = dataItem.data.subarray(dataItem.start, dataItem.end);
-      encodedData.set(chunk, position);
-      position += chunk.length;
-    }
-
-    const decoder = new _arithmetic_decoder.ArithmeticDecoder(encodedData, 0, totalLength);
-    bitModel.setDecoder(decoder);
-
-    for (j = 0; j < codingpasses; j++) {
-      switch (currentCodingpassType) {
-        case 0:
-          bitModel.runSignificancePropagationPass();
-          break;
-
-        case 1:
-          bitModel.runMagnitudeRefinementPass();
-          break;
-
-        case 2:
-          bitModel.runCleanupPass();
-
-          if (segmentationSymbolUsed) {
-            bitModel.checkSegmentationSymbol();
-          }
-
-          break;
-      }
-
-      currentCodingpassType = (currentCodingpassType + 1) % 3;
-    }
-
-    let offset = codeblock.tbx0_ - x0 + (codeblock.tby0_ - y0) * width;
-    const sign = bitModel.coefficentsSign;
-    const magnitude = bitModel.coefficentsMagnitude;
-    const bitsDecoded = bitModel.bitsDecoded;
-    const magnitudeCorrection = reversible ? 0 : 0.5;
-    let k, n, nb;
-    position = 0;
-    const interleave = subband.type !== "LL";
-
-    for (j = 0; j < blockHeight; j++) {
-      const row = offset / width | 0;
-      const levelOffset = 2 * row * (levelWidth - width) + right + bottom;
-
-      for (k = 0; k < blockWidth; k++) {
-        n = magnitude[position];
-
-        if (n !== 0) {
-          n = (n + magnitudeCorrection) * delta;
-
-          if (sign[position] !== 0) {
-            n = -n;
-          }
-
-          nb = bitsDecoded[position];
-          const pos = interleave ? levelOffset + (offset << 1) : offset;
-
-          if (reversible && nb >= mb) {
-            coefficients[pos] = n;
-          } else {
-            coefficients[pos] = n * (1 << mb - nb);
-          }
-        }
-
-        offset++;
-        position++;
-      }
-
-      offset += width - blockWidth;
-    }
-  }
-}
-
-function transformTile(context, tile, c) {
-  const component = tile.components[c];
-  const codingStyleParameters = component.codingStyleParameters;
-  const quantizationParameters = component.quantizationParameters;
-  const decompositionLevelsCount = codingStyleParameters.decompositionLevelsCount;
-  const spqcds = quantizationParameters.SPqcds;
-  const scalarExpounded = quantizationParameters.scalarExpounded;
-  const guardBits = quantizationParameters.guardBits;
-  const segmentationSymbolUsed = codingStyleParameters.segmentationSymbolUsed;
-  const precision = context.components[c].precision;
-  const reversible = codingStyleParameters.reversibleTransformation;
-  const transform = reversible ? new ReversibleTransform() : new IrreversibleTransform();
-  const subbandCoefficients = [];
-  let b = 0;
-
-  for (let i = 0; i <= decompositionLevelsCount; i++) {
-    const resolution = component.resolutions[i];
-    const width = resolution.trx1 - resolution.trx0;
-    const height = resolution.try1 - resolution.try0;
-    const coefficients = new Float32Array(width * height);
-
-    for (let j = 0, jj = resolution.subbands.length; j < jj; j++) {
-      let mu, epsilon;
-
-      if (!scalarExpounded) {
-        mu = spqcds[0].mu;
-        epsilon = spqcds[0].epsilon + (i > 0 ? 1 - i : 0);
-      } else {
-        mu = spqcds[b].mu;
-        epsilon = spqcds[b].epsilon;
-        b++;
-      }
-
-      const subband = resolution.subbands[j];
-      const gainLog2 = SubbandsGainLog2[subband.type];
-      const delta = reversible ? 1 : 2 ** (precision + gainLog2 - epsilon) * (1 + mu / 2048);
-      const mb = guardBits + epsilon - 1;
-      copyCoefficients(coefficients, width, height, subband, delta, mb, reversible, segmentationSymbolUsed);
-    }
-
-    subbandCoefficients.push({
-      width,
-      height,
-      items: coefficients
-    });
-  }
-
-  const result = transform.calculate(subbandCoefficients, component.tcx0, component.tcy0);
-  return {
-    left: component.tcx0,
-    top: component.tcy0,
-    width: result.width,
-    height: result.height,
-    items: result.items
-  };
-}
-
-function transformComponents(context) {
-  const siz = context.SIZ;
-  const components = context.components;
-  const componentsCount = siz.Csiz;
-  const resultImages = [];
-
-  for (let i = 0, ii = context.tiles.length; i < ii; i++) {
-    const tile = context.tiles[i];
-    const transformedTiles = [];
-
-    for (let c = 0; c < componentsCount; c++) {
-      transformedTiles[c] = transformTile(context, tile, c);
-    }
-
-    const tile0 = transformedTiles[0];
-    const out = new Uint8ClampedArray(tile0.items.length * componentsCount);
-    const result = {
-      left: tile0.left,
-      top: tile0.top,
-      width: tile0.width,
-      height: tile0.height,
-      items: out
-    };
-    let shift, offset;
-    let pos = 0,
-        j,
-        jj,
-        y0,
-        y1,
-        y2;
-
-    if (tile.codingStyleDefaultParameters.multipleComponentTransform) {
-      const fourComponents = componentsCount === 4;
-      const y0items = transformedTiles[0].items;
-      const y1items = transformedTiles[1].items;
-      const y2items = transformedTiles[2].items;
-      const y3items = fourComponents ? transformedTiles[3].items : null;
-      shift = components[0].precision - 8;
-      offset = (128 << shift) + 0.5;
-      const component0 = tile.components[0];
-      const alpha01 = componentsCount - 3;
-      jj = y0items.length;
-
-      if (!component0.codingStyleParameters.reversibleTransformation) {
-        for (j = 0; j < jj; j++, pos += alpha01) {
-          y0 = y0items[j] + offset;
-          y1 = y1items[j];
-          y2 = y2items[j];
-          out[pos++] = y0 + 1.402 * y2 >> shift;
-          out[pos++] = y0 - 0.34413 * y1 - 0.71414 * y2 >> shift;
-          out[pos++] = y0 + 1.772 * y1 >> shift;
-        }
-      } else {
-        for (j = 0; j < jj; j++, pos += alpha01) {
-          y0 = y0items[j] + offset;
-          y1 = y1items[j];
-          y2 = y2items[j];
-          const g = y0 - (y2 + y1 >> 2);
-          out[pos++] = g + y2 >> shift;
-          out[pos++] = g >> shift;
-          out[pos++] = g + y1 >> shift;
-        }
-      }
-
-      if (fourComponents) {
-        for (j = 0, pos = 3; j < jj; j++, pos += 4) {
-          out[pos] = y3items[j] + offset >> shift;
-        }
-      }
-    } else {
-      for (let c = 0; c < componentsCount; c++) {
-        const items = transformedTiles[c].items;
-        shift = components[c].precision - 8;
-        offset = (128 << shift) + 0.5;
-
-        for (pos = c, j = 0, jj = items.length; j < jj; j++) {
-          out[pos] = items[j] + offset >> shift;
-          pos += componentsCount;
-        }
-      }
-    }
-
-    resultImages.push(result);
-  }
-
-  return resultImages;
-}
-
-function initializeTile(context, tileIndex) {
-  const siz = context.SIZ;
-  const componentsCount = siz.Csiz;
-  const tile = context.tiles[tileIndex];
-
-  for (let c = 0; c < componentsCount; c++) {
-    const component = tile.components[c];
-    const qcdOrQcc = context.currentTile.QCC[c] !== undefined ? context.currentTile.QCC[c] : 
context.currentTile.QCD;
-    component.quantizationParameters = qcdOrQcc;
-    const codOrCoc = context.currentTile.COC[c] !== undefined ? context.currentTile.COC[c] : 
context.currentTile.COD;
-    component.codingStyleParameters = codOrCoc;
-  }
-
-  tile.codingStyleDefaultParameters = context.currentTile.COD;
-}
-
-class TagTree {
-  constructor(width, height) {
-    const levelsLength = (0, _core_utils.log2)(Math.max(width, height)) + 1;
-    this.levels = [];
-
-    for (let i = 0; i < levelsLength; i++) {
-      const level = {
-        width,
-        height,
-        items: []
-      };
-      this.levels.push(level);
-      width = Math.ceil(width / 2);
-      height = Math.ceil(height / 2);
-    }
-  }
-
-  reset(i, j) {
-    let currentLevel = 0,
-        value = 0,
-        level;
-
-    while (currentLevel < this.levels.length) {
-      level = this.levels[currentLevel];
-      const index = i + j * level.width;
-
-      if (level.items[index] !== undefined) {
-        value = level.items[index];
-        break;
-      }
-
-      level.index = index;
-      i >>= 1;
-      j >>= 1;
-      currentLevel++;
-    }
-
-    currentLevel--;
-    level = this.levels[currentLevel];
-    level.items[level.index] = value;
-    this.currentLevel = currentLevel;
-    delete this.value;
-  }
-
-  incrementValue() {
-    const level = this.levels[this.currentLevel];
-    level.items[level.index]++;
-  }
-
-  nextLevel() {
-    let currentLevel = this.currentLevel;
-    let level = this.levels[currentLevel];
-    const value = level.items[level.index];
-    currentLevel--;
-
-    if (currentLevel < 0) {
-      this.value = value;
-      return false;
-    }
-
-    this.currentLevel = currentLevel;
-    level = this.levels[currentLevel];
-    level.items[level.index] = value;
-    return true;
-  }
-
-}
-
-class InclusionTree {
-  constructor(width, height, defaultValue) {
-    const levelsLength = (0, _core_utils.log2)(Math.max(width, height)) + 1;
-    this.levels = [];
-
-    for (let i = 0; i < levelsLength; i++) {
-      const items = new Uint8Array(width * height);
-
-      for (let j = 0, jj = items.length; j < jj; j++) {
-        items[j] = defaultValue;
-      }
-
-      const level = {
-        width,
-        height,
-        items
-      };
-      this.levels.push(level);
-      width = Math.ceil(width / 2);
-      height = Math.ceil(height / 2);
-    }
-  }
-
-  reset(i, j, stopValue) {
-    let currentLevel = 0;
-
-    while (currentLevel < this.levels.length) {
-      const level = this.levels[currentLevel];
-      const index = i + j * level.width;
-      level.index = index;
-      const value = level.items[index];
-
-      if (value === 0xff) {
-        break;
-      }
-
-      if (value > stopValue) {
-        this.currentLevel = currentLevel;
-        this.propagateValues();
-        return false;
-      }
-
-      i >>= 1;
-      j >>= 1;
-      currentLevel++;
-    }
-
-    this.currentLevel = currentLevel - 1;
-    return true;
-  }
-
-  incrementValue(stopValue) {
-    const level = this.levels[this.currentLevel];
-    level.items[level.index] = stopValue + 1;
-    this.propagateValues();
-  }
-
-  propagateValues() {
-    let levelIndex = this.currentLevel;
-    let level = this.levels[levelIndex];
-    const currentValue = level.items[level.index];
-
-    while (--levelIndex >= 0) {
-      level = this.levels[levelIndex];
-      level.items[level.index] = currentValue;
-    }
-  }
-
-  nextLevel() {
-    let currentLevel = this.currentLevel;
-    let level = this.levels[currentLevel];
-    const value = level.items[level.index];
-    level.items[level.index] = 0xff;
-    currentLevel--;
-
-    if (currentLevel < 0) {
-      return false;
-    }
-
-    this.currentLevel = currentLevel;
-    level = this.levels[currentLevel];
-    level.items[level.index] = value;
-    return true;
-  }
-
-}
-
-const BitModel = function BitModelClosure() {
-  const UNIFORM_CONTEXT = 17;
-  const RUNLENGTH_CONTEXT = 18;
-  const LLAndLHContextsLabel = new Uint8Array([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, 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, 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]);
-  const HLContextLabel = new Uint8Array([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, 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, 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]);
-  const HHContextLabel = new Uint8Array([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, 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, 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]);
-
-  class BitModel {
-    constructor(width, height, subband, zeroBitPlanes, mb) {
-      this.width = width;
-      this.height = height;
-      let contextLabelTable;
-
-      if (subband === "HH") {
-        contextLabelTable = HHContextLabel;
-      } else if (subband === "HL") {
-        contextLabelTable = HLContextLabel;
-      } else {
-        contextLabelTable = LLAndLHContextsLabel;
-      }
-
-      this.contextLabelTable = contextLabelTable;
-      const coefficientCount = width * height;
-      this.neighborsSignificance = new Uint8Array(coefficientCount);
-      this.coefficentsSign = new Uint8Array(coefficientCount);
-      let coefficentsMagnitude;
-
-      if (mb > 14) {
-        coefficentsMagnitude = new Uint32Array(coefficientCount);
-      } else if (mb > 6) {
-        coefficentsMagnitude = new Uint16Array(coefficientCount);
-      } else {
-        coefficentsMagnitude = new Uint8Array(coefficientCount);
-      }
-
-      this.coefficentsMagnitude = coefficentsMagnitude;
-      this.processingFlags = new Uint8Array(coefficientCount);
-      const bitsDecoded = new Uint8Array(coefficientCount);
-
-      if (zeroBitPlanes !== 0) {
-        for (let i = 0; i < coefficientCount; i++) {
-          bitsDecoded[i] = zeroBitPlanes;
-        }
-      }
-
-      this.bitsDecoded = bitsDecoded;
-      this.reset();
-    }
-
-    setDecoder(decoder) {
-      this.decoder = decoder;
-    }
-
-    reset() {
-      this.contexts = new Int8Array(19);
-      this.contexts[0] = 4 << 1 | 0;
-      this.contexts[UNIFORM_CONTEXT] = 46 << 1 | 0;
-      this.contexts[RUNLENGTH_CONTEXT] = 3 << 1 | 0;
-    }
-
-    setNeighborsSignificance(row, column, index) {
-      const neighborsSignificance = this.neighborsSignificance;
-      const width = this.width,
-            height = this.height;
-      const left = column > 0;
-      const right = column + 1 < width;
-      let i;
-
-      if (row > 0) {
-        i = index - width;
-
-        if (left) {
-          neighborsSignificance[i - 1] += 0x10;
-        }
-
-        if (right) {
-          neighborsSignificance[i + 1] += 0x10;
-        }
-
-        neighborsSignificance[i] += 0x04;
-      }
-
-      if (row + 1 < height) {
-        i = index + width;
-
-        if (left) {
-          neighborsSignificance[i - 1] += 0x10;
-        }
-
-        if (right) {
-          neighborsSignificance[i + 1] += 0x10;
-        }
-
-        neighborsSignificance[i] += 0x04;
-      }
-
-      if (left) {
-        neighborsSignificance[index - 1] += 0x01;
-      }
-
-      if (right) {
-        neighborsSignificance[index + 1] += 0x01;
-      }
-
-      neighborsSignificance[index] |= 0x80;
-    }
-
-    runSignificancePropagationPass() {
-      const decoder = this.decoder;
-      const width = this.width,
-            height = this.height;
-      const coefficentsMagnitude = this.coefficentsMagnitude;
-      const coefficentsSign = this.coefficentsSign;
-      const neighborsSignificance = this.neighborsSignificance;
-      const processingFlags = this.processingFlags;
-      const contexts = this.contexts;
-      const labels = this.contextLabelTable;
-      const bitsDecoded = this.bitsDecoded;
-      const processedInverseMask = ~1;
-      const processedMask = 1;
-      const firstMagnitudeBitMask = 2;
-
-      for (let i0 = 0; i0 < height; i0 += 4) {
-        for (let j = 0; j < width; j++) {
-          let index = i0 * width + j;
-
-          for (let i1 = 0; i1 < 4; i1++, index += width) {
-            const i = i0 + i1;
-
-            if (i >= height) {
-              break;
-            }
-
-            processingFlags[index] &= processedInverseMask;
-
-            if (coefficentsMagnitude[index] || !neighborsSignificance[index]) {
-              continue;
-            }
-
-            const contextLabel = labels[neighborsSignificance[index]];
-            const decision = decoder.readBit(contexts, contextLabel);
-
-            if (decision) {
-              const sign = this.decodeSignBit(i, j, index);
-              coefficentsSign[index] = sign;
-              coefficentsMagnitude[index] = 1;
-              this.setNeighborsSignificance(i, j, index);
-              processingFlags[index] |= firstMagnitudeBitMask;
-            }
-
-            bitsDecoded[index]++;
-            processingFlags[index] |= processedMask;
-          }
-        }
-      }
-    }
-
-    decodeSignBit(row, column, index) {
-      const width = this.width,
-            height = this.height;
-      const coefficentsMagnitude = this.coefficentsMagnitude;
-      const coefficentsSign = this.coefficentsSign;
-      let contribution, sign0, sign1, significance1;
-      let contextLabel, decoded;
-      significance1 = column > 0 && coefficentsMagnitude[index - 1] !== 0;
-
-      if (column + 1 < width && coefficentsMagnitude[index + 1] !== 0) {
-        sign1 = coefficentsSign[index + 1];
-
-        if (significance1) {
-          sign0 = coefficentsSign[index - 1];
-          contribution = 1 - sign1 - sign0;
-        } else {
-          contribution = 1 - sign1 - sign1;
-        }
-      } else if (significance1) {
-        sign0 = coefficentsSign[index - 1];
-        contribution = 1 - sign0 - sign0;
-      } else {
-        contribution = 0;
-      }
-
-      const horizontalContribution = 3 * contribution;
-      significance1 = row > 0 && coefficentsMagnitude[index - width] !== 0;
-
-      if (row + 1 < height && coefficentsMagnitude[index + width] !== 0) {
-        sign1 = coefficentsSign[index + width];
-
-        if (significance1) {
-          sign0 = coefficentsSign[index - width];
-          contribution = 1 - sign1 - sign0 + horizontalContribution;
-        } else {
-          contribution = 1 - sign1 - sign1 + horizontalContribution;
-        }
-      } else if (significance1) {
-        sign0 = coefficentsSign[index - width];
-        contribution = 1 - sign0 - sign0 + horizontalContribution;
-      } else {
-        contribution = horizontalContribution;
-      }
-
-      if (contribution >= 0) {
-        contextLabel = 9 + contribution;
-        decoded = this.decoder.readBit(this.contexts, contextLabel);
-      } else {
-        contextLabel = 9 - contribution;
-        decoded = this.decoder.readBit(this.contexts, contextLabel) ^ 1;
-      }
-
-      return decoded;
-    }
-
-    runMagnitudeRefinementPass() {
-      const decoder = this.decoder;
-      const width = this.width,
-            height = this.height;
-      const coefficentsMagnitude = this.coefficentsMagnitude;
-      const neighborsSignificance = this.neighborsSignificance;
-      const contexts = this.contexts;
-      const bitsDecoded = this.bitsDecoded;
-      const processingFlags = this.processingFlags;
-      const processedMask = 1;
-      const firstMagnitudeBitMask = 2;
-      const length = width * height;
-      const width4 = width * 4;
-
-      for (let index0 = 0, indexNext; index0 < length; index0 = indexNext) {
-        indexNext = Math.min(length, index0 + width4);
-
-        for (let j = 0; j < width; j++) {
-          for (let index = index0 + j; index < indexNext; index += width) {
-            if (!coefficentsMagnitude[index] || (processingFlags[index] & processedMask) !== 0) {
-              continue;
-            }
-
-            let contextLabel = 16;
-
-            if ((processingFlags[index] & firstMagnitudeBitMask) !== 0) {
-              processingFlags[index] ^= firstMagnitudeBitMask;
-              const significance = neighborsSignificance[index] & 127;
-              contextLabel = significance === 0 ? 15 : 14;
-            }
-
-            const bit = decoder.readBit(contexts, contextLabel);
-            coefficentsMagnitude[index] = coefficentsMagnitude[index] << 1 | bit;
-            bitsDecoded[index]++;
-            processingFlags[index] |= processedMask;
-          }
-        }
-      }
-    }
-
-    runCleanupPass() {
-      const decoder = this.decoder;
-      const width = this.width,
-            height = this.height;
-      const neighborsSignificance = this.neighborsSignificance;
-      const coefficentsMagnitude = this.coefficentsMagnitude;
-      const coefficentsSign = this.coefficentsSign;
-      const contexts = this.contexts;
-      const labels = this.contextLabelTable;
-      const bitsDecoded = this.bitsDecoded;
-      const processingFlags = this.processingFlags;
-      const processedMask = 1;
-      const firstMagnitudeBitMask = 2;
-      const oneRowDown = width;
-      const twoRowsDown = width * 2;
-      const threeRowsDown = width * 3;
-      let iNext;
-
-      for (let i0 = 0; i0 < height; i0 = iNext) {
-        iNext = Math.min(i0 + 4, height);
-        const indexBase = i0 * width;
-        const checkAllEmpty = i0 + 3 < height;
-
-        for (let j = 0; j < width; j++) {
-          const index0 = indexBase + j;
-          const allEmpty = checkAllEmpty && processingFlags[index0] === 0 && processingFlags[index0 + 
oneRowDown] === 0 && processingFlags[index0 + twoRowsDown] === 0 && processingFlags[index0 + threeRowsDown] 
=== 0 && neighborsSignificance[index0] === 0 && neighborsSignificance[index0 + oneRowDown] === 0 && 
neighborsSignificance[index0 + twoRowsDown] === 0 && neighborsSignificance[index0 + threeRowsDown] === 0;
-          let i1 = 0,
-              index = index0;
-          let i = i0,
-              sign;
-
-          if (allEmpty) {
-            const hasSignificantCoefficent = decoder.readBit(contexts, RUNLENGTH_CONTEXT);
-
-            if (!hasSignificantCoefficent) {
-              bitsDecoded[index0]++;
-              bitsDecoded[index0 + oneRowDown]++;
-              bitsDecoded[index0 + twoRowsDown]++;
-              bitsDecoded[index0 + threeRowsDown]++;
-              continue;
-            }
-
-            i1 = decoder.readBit(contexts, UNIFORM_CONTEXT) << 1 | decoder.readBit(contexts, 
UNIFORM_CONTEXT);
-
-            if (i1 !== 0) {
-              i = i0 + i1;
-              index += i1 * width;
-            }
-
-            sign = this.decodeSignBit(i, j, index);
-            coefficentsSign[index] = sign;
-            coefficentsMagnitude[index] = 1;
-            this.setNeighborsSignificance(i, j, index);
-            processingFlags[index] |= firstMagnitudeBitMask;
-            index = index0;
-
-            for (let i2 = i0; i2 <= i; i2++, index += width) {
-              bitsDecoded[index]++;
-            }
-
-            i1++;
-          }
-
-          for (i = i0 + i1; i < iNext; i++, index += width) {
-            if (coefficentsMagnitude[index] || (processingFlags[index] & processedMask) !== 0) {
-              continue;
-            }
-
-            const contextLabel = labels[neighborsSignificance[index]];
-            const decision = decoder.readBit(contexts, contextLabel);
-
-            if (decision === 1) {
-              sign = this.decodeSignBit(i, j, index);
-              coefficentsSign[index] = sign;
-              coefficentsMagnitude[index] = 1;
-              this.setNeighborsSignificance(i, j, index);
-              processingFlags[index] |= firstMagnitudeBitMask;
-            }
-
-            bitsDecoded[index]++;
-          }
-        }
-      }
-    }
-
-    checkSegmentationSymbol() {
-      const decoder = this.decoder;
-      const contexts = this.contexts;
-      const symbol = decoder.readBit(contexts, UNIFORM_CONTEXT) << 3 | decoder.readBit(contexts, 
UNIFORM_CONTEXT) << 2 | decoder.readBit(contexts, UNIFORM_CONTEXT) << 1 | decoder.readBit(contexts, 
UNIFORM_CONTEXT);
-
-      if (symbol !== 0xa) {
-        throw new JpxError("Invalid segmentation symbol");
-      }
-    }
-
-  }
-
-  return BitModel;
-}();
-
-class Transform {
-  constructor() {
-    if (this.constructor === Transform) {
-      (0, _util.unreachable)("Cannot initialize Transform.");
-    }
-  }
-
-  calculate(subbands, u0, v0) {
-    let ll = subbands[0];
-
-    for (let i = 1, ii = subbands.length; i < ii; i++) {
-      ll = this.iterate(ll, subbands[i], u0, v0);
-    }
-
-    return ll;
-  }
-
-  extend(buffer, offset, size) {
-    let i1 = offset - 1,
-        j1 = offset + 1;
-    let i2 = offset + size - 2,
-        j2 = offset + size;
-    buffer[i1--] = buffer[j1++];
-    buffer[j2++] = buffer[i2--];
-    buffer[i1--] = buffer[j1++];
-    buffer[j2++] = buffer[i2--];
-    buffer[i1--] = buffer[j1++];
-    buffer[j2++] = buffer[i2--];
-    buffer[i1] = buffer[j1];
-    buffer[j2] = buffer[i2];
-  }
-
-  filter(x, offset, length) {
-    (0, _util.unreachable)("Abstract method `filter` called");
-  }
-
-  iterate(ll, hl_lh_hh, u0, v0) {
-    const llWidth = ll.width,
-          llHeight = ll.height;
-    let llItems = ll.items;
-    const width = hl_lh_hh.width;
-    const height = hl_lh_hh.height;
-    const items = hl_lh_hh.items;
-    let i, j, k, l, u, v;
-
-    for (k = 0, i = 0; i < llHeight; i++) {
-      l = i * 2 * width;
-
-      for (j = 0; j < llWidth; j++, k++, l += 2) {
-        items[l] = llItems[k];
-      }
-    }
-
-    llItems = ll.items = null;
-    const bufferPadding = 4;
-    const rowBuffer = new Float32Array(width + 2 * bufferPadding);
-
-    if (width === 1) {
-      if ((u0 & 1) !== 0) {
-        for (v = 0, k = 0; v < height; v++, k += width) {
-          items[k] *= 0.5;
-        }
-      }
-    } else {
-      for (v = 0, k = 0; v < height; v++, k += width) {
-        rowBuffer.set(items.subarray(k, k + width), bufferPadding);
-        this.extend(rowBuffer, bufferPadding, width);
-        this.filter(rowBuffer, bufferPadding, width);
-        items.set(rowBuffer.subarray(bufferPadding, bufferPadding + width), k);
-      }
-    }
-
-    let numBuffers = 16;
-    const colBuffers = [];
-
-    for (i = 0; i < numBuffers; i++) {
-      colBuffers.push(new Float32Array(height + 2 * bufferPadding));
-    }
-
-    let b,
-        currentBuffer = 0;
-    ll = bufferPadding + height;
-
-    if (height === 1) {
-      if ((v0 & 1) !== 0) {
-        for (u = 0; u < width; u++) {
-          items[u] *= 0.5;
-        }
-      }
-    } else {
-      for (u = 0; u < width; u++) {
-        if (currentBuffer === 0) {
-          numBuffers = Math.min(width - u, numBuffers);
-
-          for (k = u, l = bufferPadding; l < ll; k += width, l++) {
-            for (b = 0; b < numBuffers; b++) {
-              colBuffers[b][l] = items[k + b];
-            }
-          }
-
-          currentBuffer = numBuffers;
-        }
-
-        currentBuffer--;
-        const buffer = colBuffers[currentBuffer];
-        this.extend(buffer, bufferPadding, height);
-        this.filter(buffer, bufferPadding, height);
-
-        if (currentBuffer === 0) {
-          k = u - numBuffers + 1;
-
-          for (l = bufferPadding; l < ll; k += width, l++) {
-            for (b = 0; b < numBuffers; b++) {
-              items[k + b] = colBuffers[b][l];
-            }
-          }
-        }
-      }
-    }
-
-    return {
-      width,
-      height,
-      items
-    };
-  }
-
-}
-
-class IrreversibleTransform extends Transform {
-  filter(x, offset, length) {
-    const len = length >> 1;
-    offset |= 0;
-    let j, n, current, next;
-    const alpha = -1.586134342059924;
-    const beta = -0.052980118572961;
-    const gamma = 0.882911075530934;
-    const delta = 0.443506852043971;
-    const K = 1.230174104914001;
-    const K_ = 1 / K;
-    j = offset - 3;
-
-    for (n = len + 4; n--; j += 2) {
-      x[j] *= K_;
-    }
-
-    j = offset - 2;
-    current = delta * x[j - 1];
-
-    for (n = len + 3; n--; j += 2) {
-      next = delta * x[j + 1];
-      x[j] = K * x[j] - current - next;
-
-      if (n--) {
-        j += 2;
-        current = delta * x[j + 1];
-        x[j] = K * x[j] - current - next;
-      } else {
-        break;
-      }
-    }
-
-    j = offset - 1;
-    current = gamma * x[j - 1];
-
-    for (n = len + 2; n--; j += 2) {
-      next = gamma * x[j + 1];
-      x[j] -= current + next;
-
-      if (n--) {
-        j += 2;
-        current = gamma * x[j + 1];
-        x[j] -= current + next;
-      } else {
-        break;
-      }
-    }
-
-    j = offset;
-    current = beta * x[j - 1];
-
-    for (n = len + 1; n--; j += 2) {
-      next = beta * x[j + 1];
-      x[j] -= current + next;
-
-      if (n--) {
-        j += 2;
-        current = beta * x[j + 1];
-        x[j] -= current + next;
-      } else {
-        break;
-      }
-    }
-
-    if (len !== 0) {
-      j = offset + 1;
-      current = alpha * x[j - 1];
-
-      for (n = len; n--; j += 2) {
-        next = alpha * x[j + 1];
-        x[j] -= current + next;
-
-        if (n--) {
-          j += 2;
-          current = alpha * x[j + 1];
-          x[j] -= current + next;
-        } else {
-          break;
-        }
-      }
-    }
-  }
-
-}
-
-class ReversibleTransform extends Transform {
-  filter(x, offset, length) {
-    const len = length >> 1;
-    offset |= 0;
-    let j, n;
-
-    for (j = offset, n = len + 1; n--; j += 2) {
-      x[j] -= x[j - 1] + x[j + 1] + 2 >> 2;
-    }
-
-    for (j = offset + 1, n = len; n--; j += 2) {
-      x[j] += x[j - 1] + x[j + 1] >> 1;
-    }
-  }
-
-}
-
-/***/ }),
-/* 31 */
-/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
-
-
-
-Object.defineProperty(exports, "__esModule", ({
-  value: true
-}));
-exports.LZWStream = void 0;
-
-var _decode_stream = __w_pdfjs_require__(19);
-
-class LZWStream extends _decode_stream.DecodeStream {
-  constructor(str, maybeLength, earlyChange) {
-    super(maybeLength);
-    this.str = str;
-    this.dict = str.dict;
-    this.cachedData = 0;
-    this.bitsCached = 0;
-    const maxLzwDictionarySize = 4096;
-    const lzwState = {
-      earlyChange,
-      codeLength: 9,
-      nextCode: 258,
-      dictionaryValues: new Uint8Array(maxLzwDictionarySize),
-      dictionaryLengths: new Uint16Array(maxLzwDictionarySize),
-      dictionaryPrevCodes: new Uint16Array(maxLzwDictionarySize),
-      currentSequence: new Uint8Array(maxLzwDictionarySize),
-      currentSequenceLength: 0
-    };
-
-    for (let i = 0; i < 256; ++i) {
-      lzwState.dictionaryValues[i] = i;
-      lzwState.dictionaryLengths[i] = 1;
-    }
-
-    this.lzwState = lzwState;
-  }
-
-  readBits(n) {
-    let bitsCached = this.bitsCached;
-    let cachedData = this.cachedData;
-
-    while (bitsCached < n) {
-      const c = this.str.getByte();
-
-      if (c === -1) {
-        this.eof = true;
-        return null;
-      }
-
-      cachedData = cachedData << 8 | c;
-      bitsCached += 8;
-    }
-
-    this.bitsCached = bitsCached -= n;
-    this.cachedData = cachedData;
-    this.lastCode = null;
-    return cachedData >>> bitsCached & (1 << n) - 1;
-  }
-
-  readBlock() {
-    const blockSize = 512,
-          decodedSizeDelta = blockSize;
-    let estimatedDecodedSize = blockSize * 2;
-    let i, j, q;
-    const lzwState = this.lzwState;
-
-    if (!lzwState) {
-      return;
-    }
-
-    const earlyChange = lzwState.earlyChange;
-    let nextCode = lzwState.nextCode;
-    const dictionaryValues = lzwState.dictionaryValues;
-    const dictionaryLengths = lzwState.dictionaryLengths;
-    const dictionaryPrevCodes = lzwState.dictionaryPrevCodes;
-    let codeLength = lzwState.codeLength;
-    let prevCode = lzwState.prevCode;
-    const currentSequence = lzwState.currentSequence;
-    let currentSequenceLength = lzwState.currentSequenceLength;
-    let decodedLength = 0;
-    let currentBufferLength = this.bufferLength;
-    let buffer = this.ensureBuffer(this.bufferLength + estimatedDecodedSize);
-
-    for (i = 0; i < blockSize; i++) {
-      const code = this.readBits(codeLength);
-      const hasPrev = currentSequenceLength > 0;
-
-      if (code < 256) {
-        currentSequence[0] = code;
-        currentSequenceLength = 1;
-      } else if (code >= 258) {
-        if (code < nextCode) {
-          currentSequenceLength = dictionaryLengths[code];
-
-          for (j = currentSequenceLength - 1, q = code; j >= 0; j--) {
-            currentSequence[j] = dictionaryValues[q];
-            q = dictionaryPrevCodes[q];
-          }
-        } else {
-          currentSequence[currentSequenceLength++] = currentSequence[0];
-        }
-      } else if (code === 256) {
-        codeLength = 9;
-        nextCode = 258;
-        currentSequenceLength = 0;
-        continue;
-      } else {
-        this.eof = true;
-        delete this.lzwState;
-        break;
-      }
-
-      if (hasPrev) {
-        dictionaryPrevCodes[nextCode] = prevCode;
-        dictionaryLengths[nextCode] = dictionaryLengths[prevCode] + 1;
-        dictionaryValues[nextCode] = currentSequence[0];
-        nextCode++;
-        codeLength = nextCode + earlyChange & nextCode + earlyChange - 1 ? codeLength : 
Math.min(Math.log(nextCode + earlyChange) / 0.6931471805599453 + 1, 12) | 0;
-      }
-
-      prevCode = code;
-      decodedLength += currentSequenceLength;
-
-      if (estimatedDecodedSize < decodedLength) {
-        do {
-          estimatedDecodedSize += decodedSizeDelta;
-        } while (estimatedDecodedSize < decodedLength);
-
-        buffer = this.ensureBuffer(this.bufferLength + estimatedDecodedSize);
-      }
-
-      for (j = 0; j < currentSequenceLength; j++) {
-        buffer[currentBufferLength++] = currentSequence[j];
-      }
-    }
-
-    lzwState.nextCode = nextCode;
-    lzwState.codeLength = codeLength;
-    lzwState.prevCode = prevCode;
-    lzwState.currentSequenceLength = currentSequenceLength;
-    this.bufferLength = currentBufferLength;
-  }
-
-}
-
-exports.LZWStream = LZWStream;
-
-/***/ }),
-/* 32 */
-/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
-
-
-
-Object.defineProperty(exports, "__esModule", ({
-  value: true
-}));
-exports.PredictorStream = void 0;
-
-var _decode_stream = __w_pdfjs_require__(19);
-
-var _util = __w_pdfjs_require__(2);
-
-var _primitives = __w_pdfjs_require__(5);
-
-class PredictorStream extends _decode_stream.DecodeStream {
-  constructor(str, maybeLength, params) {
-    super(maybeLength);
-
-    if (!(0, _primitives.isDict)(params)) {
-      return str;
-    }
-
-    const predictor = this.predictor = params.get("Predictor") || 1;
-
-    if (predictor <= 1) {
-      return str;
-    }
-
-    if (predictor !== 2 && (predictor < 10 || predictor > 15)) {
-      throw new _util.FormatError(`Unsupported predictor: ${predictor}`);
-    }
-
-    if (predictor === 2) {
-      this.readBlock = this.readBlockTiff;
-    } else {
-      this.readBlock = this.readBlockPng;
-    }
-
-    this.str = str;
-    this.dict = str.dict;
-    const colors = this.colors = params.get("Colors") || 1;
-    const bits = this.bits = params.get("BitsPerComponent") || 8;
-    const columns = this.columns = params.get("Columns") || 1;
-    this.pixBytes = colors * bits + 7 >> 3;
-    this.rowBytes = columns * colors * bits + 7 >> 3;
-    return this;
-  }
-
-  readBlockTiff() {
-    const rowBytes = this.rowBytes;
-    const bufferLength = this.bufferLength;
-    const buffer = this.ensureBuffer(bufferLength + rowBytes);
-    const bits = this.bits;
-    const colors = this.colors;
-    const rawBytes = this.str.getBytes(rowBytes);
-    this.eof = !rawBytes.length;
-
-    if (this.eof) {
-      return;
-    }
-
-    let inbuf = 0,
-        outbuf = 0;
-    let inbits = 0,
-        outbits = 0;
-    let pos = bufferLength;
-    let i;
-
-    if (bits === 1 && colors === 1) {
-      for (i = 0; i < rowBytes; ++i) {
-        let c = rawBytes[i] ^ inbuf;
-        c ^= c >> 1;
-        c ^= c >> 2;
-        c ^= c >> 4;
-        inbuf = (c & 1) << 7;
-        buffer[pos++] = c;
-      }
-    } else if (bits === 8) {
-      for (i = 0; i < colors; ++i) {
-        buffer[pos++] = rawBytes[i];
-      }
-
-      for (; i < rowBytes; ++i) {
-        buffer[pos] = buffer[pos - colors] + rawBytes[i];
-        pos++;
-      }
-    } else if (bits === 16) {
-      const bytesPerPixel = colors * 2;
-
-      for (i = 0; i < bytesPerPixel; ++i) {
-        buffer[pos++] = rawBytes[i];
-      }
-
-      for (; i < rowBytes; i += 2) {
-        const sum = ((rawBytes[i] & 0xff) << 8) + (rawBytes[i + 1] & 0xff) + ((buffer[pos - bytesPerPixel] & 
0xff) << 8) + (buffer[pos - bytesPerPixel + 1] & 0xff);
-        buffer[pos++] = sum >> 8 & 0xff;
-        buffer[pos++] = sum & 0xff;
-      }
-    } else {
-      const compArray = new Uint8Array(colors + 1);
-      const bitMask = (1 << bits) - 1;
-      let j = 0,
-          k = bufferLength;
-      const columns = this.columns;
-
-      for (i = 0; i < columns; ++i) {
-        for (let kk = 0; kk < colors; ++kk) {
-          if (inbits < bits) {
-            inbuf = inbuf << 8 | rawBytes[j++] & 0xff;
-            inbits += 8;
-          }
-
-          compArray[kk] = compArray[kk] + (inbuf >> inbits - bits) & bitMask;
-          inbits -= bits;
-          outbuf = outbuf << bits | compArray[kk];
-          outbits += bits;
-
-          if (outbits >= 8) {
-            buffer[k++] = outbuf >> outbits - 8 & 0xff;
-            outbits -= 8;
-          }
-        }
-      }
-
-      if (outbits > 0) {
-        buffer[k++] = (outbuf << 8 - outbits) + (inbuf & (1 << 8 - outbits) - 1);
-      }
-    }
-
-    this.bufferLength += rowBytes;
-  }
-
-  readBlockPng() {
-    const rowBytes = this.rowBytes;
-    const pixBytes = this.pixBytes;
-    const predictor = this.str.getByte();
-    const rawBytes = this.str.getBytes(rowBytes);
-    this.eof = !rawBytes.length;
-
-    if (this.eof) {
-      return;
-    }
-
-    const bufferLength = this.bufferLength;
-    const buffer = this.ensureBuffer(bufferLength + rowBytes);
-    let prevRow = buffer.subarray(bufferLength - rowBytes, bufferLength);
-
-    if (prevRow.length === 0) {
-      prevRow = new Uint8Array(rowBytes);
-    }
-
-    let i,
-        j = bufferLength,
-        up,
-        c;
-
-    switch (predictor) {
-      case 0:
-        for (i = 0; i < rowBytes; ++i) {
-          buffer[j++] = rawBytes[i];
-        }
-
-        break;
-
-      case 1:
-        for (i = 0; i < pixBytes; ++i) {
-          buffer[j++] = rawBytes[i];
-        }
-
-        for (; i < rowBytes; ++i) {
-          buffer[j] = buffer[j - pixBytes] + rawBytes[i] & 0xff;
-          j++;
-        }
-
-        break;
-
-      case 2:
-        for (i = 0; i < rowBytes; ++i) {
-          buffer[j++] = prevRow[i] + rawBytes[i] & 0xff;
-        }
-
-        break;
-
-      case 3:
-        for (i = 0; i < pixBytes; ++i) {
-          buffer[j++] = (prevRow[i] >> 1) + rawBytes[i];
-        }
-
-        for (; i < rowBytes; ++i) {
-          buffer[j] = (prevRow[i] + buffer[j - pixBytes] >> 1) + rawBytes[i] & 0xff;
-          j++;
-        }
-
-        break;
-
-      case 4:
-        for (i = 0; i < pixBytes; ++i) {
-          up = prevRow[i];
-          c = rawBytes[i];
-          buffer[j++] = up + c;
-        }
-
-        for (; i < rowBytes; ++i) {
-          up = prevRow[i];
-          const upLeft = prevRow[i - pixBytes];
-          const left = buffer[j - pixBytes];
-          const p = left + up - upLeft;
-          let pa = p - left;
-
-          if (pa < 0) {
-            pa = -pa;
-          }
-
-          let pb = p - up;
-
-          if (pb < 0) {
-            pb = -pb;
-          }
-
-          let pc = p - upLeft;
-
-          if (pc < 0) {
-            pc = -pc;
-          }
-
-          c = rawBytes[i];
-
-          if (pa <= pb && pa <= pc) {
-            buffer[j++] = left + c;
-          } else if (pb <= pc) {
-            buffer[j++] = up + c;
-          } else {
-            buffer[j++] = upLeft + c;
-          }
-        }
-
-        break;
-
-      default:
-        throw new _util.FormatError(`Unsupported predictor: ${predictor}`);
-    }
-
-    this.bufferLength += rowBytes;
-  }
-
-}
-
-exports.PredictorStream = PredictorStream;
-
-/***/ }),
-/* 33 */
-/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
-
-
-
-Object.defineProperty(exports, "__esModule", ({
-  value: true
-}));
-exports.RunLengthStream = void 0;
-
-var _decode_stream = __w_pdfjs_require__(19);
-
-class RunLengthStream extends _decode_stream.DecodeStream {
-  constructor(str, maybeLength) {
-    super(maybeLength);
-    this.str = str;
-    this.dict = str.dict;
-  }
-
-  readBlock() {
-    const repeatHeader = this.str.getBytes(2);
-
-    if (!repeatHeader || repeatHeader.length < 2 || repeatHeader[0] === 128) {
-      this.eof = true;
-      return;
-    }
-
-    let buffer;
-    let bufferLength = this.bufferLength;
-    let n = repeatHeader[0];
-
-    if (n < 128) {
-      buffer = this.ensureBuffer(bufferLength + n + 1);
-      buffer[bufferLength++] = repeatHeader[1];
-
-      if (n > 0) {
-        const source = this.str.getBytes(n);
-        buffer.set(source, bufferLength);
-        bufferLength += n;
-      }
-    } else {
-      n = 257 - n;
-      const b = repeatHeader[1];
-      buffer = this.ensureBuffer(bufferLength + n + 1);
-
-      for (let i = 0; i < n; i++) {
-        buffer[bufferLength++] = b;
-      }
-    }
-
-    this.bufferLength = bufferLength;
-  }
-
-}
-
-exports.RunLengthStream = RunLengthStream;
-
-/***/ }),
-/* 34 */
-/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
-
-
-
-Object.defineProperty(exports, "__esModule", ({
-  value: true
-}));
-exports.Font = exports.ErrorFont = void 0;
-
-var _util = __w_pdfjs_require__(2);
-
-var _cff_parser = __w_pdfjs_require__(35);
-
-var _fonts_utils = __w_pdfjs_require__(38);
-
-var _glyphlist = __w_pdfjs_require__(39);
-
-var _encodings = __w_pdfjs_require__(37);
-
-var _standard_fonts = __w_pdfjs_require__(41);
-
-var _unicode = __w_pdfjs_require__(40);
-
-var _to_unicode_map = __w_pdfjs_require__(42);
-
-var _cff_font = __w_pdfjs_require__(43);
-
-var _font_renderer = __w_pdfjs_require__(44);
-
-var _glyf = __w_pdfjs_require__(45);
-
-var _cmap = __w_pdfjs_require__(16);
-
-var _opentype_file_builder = __w_pdfjs_require__(46);
-
-var _core_utils = __w_pdfjs_require__(9);
-
-var _stream = __w_pdfjs_require__(10);
-
-var _type1_font = __w_pdfjs_require__(47);
-
-const PRIVATE_USE_AREAS = [[0xe000, 0xf8ff], [0x100000, 0x10fffd]];
-const PDF_GLYPH_SPACE_UNITS = 1000;
-const EXPORT_DATA_PROPERTIES = ["ascent", "bbox", "black", "bold", "charProcOperatorList", "composite", 
"cssFontInfo", "data", "defaultVMetrics", "defaultWidth", "descent", "fallbackName", "fontMatrix", 
"fontType", "isMonospace", "isSerifFont", "isType3Font", "italic", "loadedName", "mimetype", "missingFile", 
"name", "remeasure", "subtype", "type", "vertical"];
-const EXPORT_DATA_EXTRA_PROPERTIES = ["cMap", "defaultEncoding", "differences", "isSymbolicFont", "seacMap", 
"toFontChar", "toUnicode", "vmetrics", "widths"];
-
-function adjustWidths(properties) {
-  if (!properties.fontMatrix) {
-    return;
-  }
-
-  if (properties.fontMatrix[0] === _util.FONT_IDENTITY_MATRIX[0]) {
-    return;
-  }
-
-  const scale = 0.001 / properties.fontMatrix[0];
-  const glyphsWidths = properties.widths;
-
-  for (const glyph in glyphsWidths) {
-    glyphsWidths[glyph] *= scale;
-  }
-
-  properties.defaultWidth *= scale;
-}
-
-function adjustToUnicode(properties, builtInEncoding) {
-  if (properties.isInternalFont) {
-    return;
-  }
-
-  if (builtInEncoding === properties.defaultEncoding) {
-    return;
-  }
-
-  if (properties.toUnicode instanceof _to_unicode_map.IdentityToUnicodeMap) {
-    return;
-  }
-
-  const toUnicode = [],
-        glyphsUnicodeMap = (0, _glyphlist.getGlyphsUnicode)();
-
-  for (const charCode in builtInEncoding) {
-    if (properties.hasIncludedToUnicodeMap) {
-      if (properties.toUnicode.has(charCode)) {
-        continue;
-      }
-    } else {
-      if (properties.hasEncoding && properties.differences[charCode] !== undefined) {
-        continue;
-      }
-    }
-
-    const glyphName = builtInEncoding[charCode];
-    const unicode = (0, _unicode.getUnicodeForGlyph)(glyphName, glyphsUnicodeMap);
-
-    if (unicode !== -1) {
-      toUnicode[charCode] = String.fromCharCode(unicode);
-    }
-  }
-
-  if (toUnicode.length > 0) {
-    properties.toUnicode.amend(toUnicode);
-  }
-}
-
-function amendFallbackToUnicode(properties) {
-  if (!properties.fallbackToUnicode) {
-    return;
-  }
-
-  if (properties.toUnicode instanceof _to_unicode_map.IdentityToUnicodeMap) {
-    return;
-  }
-
-  const toUnicode = [];
-
-  for (const charCode in properties.fallbackToUnicode) {
-    if (properties.toUnicode.has(charCode)) {
-      continue;
-    }
-
-    toUnicode[charCode] = properties.fallbackToUnicode[charCode];
-  }
-
-  if (toUnicode.length > 0) {
-    properties.toUnicode.amend(toUnicode);
-  }
-}
-
-class Glyph {
-  constructor(originalCharCode, fontChar, unicode, accent, width, vmetric, operatorListId, isSpace, 
isInFont) {
-    this.originalCharCode = originalCharCode;
-    this.fontChar = fontChar;
-    this.unicode = unicode;
-    this.accent = accent;
-    this.width = width;
-    this.vmetric = vmetric;
-    this.operatorListId = operatorListId;
-    this.isSpace = isSpace;
-    this.isInFont = isInFont;
-  }
-
-  matchesForCache(originalCharCode, fontChar, unicode, accent, width, vmetric, operatorListId, isSpace, 
isInFont) {
-    return this.originalCharCode === originalCharCode && this.fontChar === fontChar && this.unicode === 
unicode && this.accent === accent && this.width === width && this.vmetric === vmetric && this.operatorListId 
=== operatorListId && this.isSpace === isSpace && this.isInFont === isInFont;
-  }
-
-}
-
-function int16(b0, b1) {
-  return (b0 << 8) + b1;
-}
-
-function writeSignedInt16(bytes, index, value) {
-  bytes[index + 1] = value;
-  bytes[index] = value >>> 8;
-}
-
-function signedInt16(b0, b1) {
-  const value = (b0 << 8) + b1;
-  return value & 1 << 15 ? value - 0x10000 : value;
-}
-
-function int32(b0, b1, b2, b3) {
-  return (b0 << 24) + (b1 << 16) + (b2 << 8) + b3;
-}
-
-function string16(value) {
-  return String.fromCharCode(value >> 8 & 0xff, value & 0xff);
-}
-
-function safeString16(value) {
-  if (value > 0x7fff) {
-    value = 0x7fff;
-  } else if (value < -0x8000) {
-    value = -0x8000;
-  }
-
-  return String.fromCharCode(value >> 8 & 0xff, value & 0xff);
-}
-
-function isTrueTypeFile(file) {
-  const header = file.peekBytes(4);
-  return (0, _core_utils.readUint32)(header, 0) === 0x00010000 || (0, _util.bytesToString)(header) === 
"true";
-}
-
-function isTrueTypeCollectionFile(file) {
-  const header = file.peekBytes(4);
-  return (0, _util.bytesToString)(header) === "ttcf";
-}
-
-function isOpenTypeFile(file) {
-  const header = file.peekBytes(4);
-  return (0, _util.bytesToString)(header) === "OTTO";
-}
-
-function isType1File(file) {
-  const header = file.peekBytes(2);
-
-  if (header[0] === 0x25 && header[1] === 0x21) {
-    return true;
-  }
-
-  if (header[0] === 0x80 && header[1] === 0x01) {
-    return true;
-  }
-
-  return false;
-}
-
-function isCFFFile(file) {
-  const header = file.peekBytes(4);
-
-  if (header[0] >= 1 && header[3] >= 1 && header[3] <= 4) {
-    return true;
-  }
-
-  return false;
-}
-
-function getFontFileType(file, {
-  type,
-  subtype,
-  composite
-}) {
-  let fileType, fileSubtype;
-
-  if (isTrueTypeFile(file) || isTrueTypeCollectionFile(file)) {
-    if (composite) {
-      fileType = "CIDFontType2";
-    } else {
-      fileType = "TrueType";
-    }
-  } else if (isOpenTypeFile(file)) {
-    if (composite) {
-      fileType = "CIDFontType2";
-    } else {
-      fileType = "OpenType";
-    }
-  } else if (isType1File(file)) {
-    if (composite) {
-      fileType = "CIDFontType0";
-    } else {
-      fileType = type === "MMType1" ? "MMType1" : "Type1";
-    }
-  } else if (isCFFFile(file)) {
-    if (composite) {
-      fileType = "CIDFontType0";
-      fileSubtype = "CIDFontType0C";
-    } else {
-      fileType = type === "MMType1" ? "MMType1" : "Type1";
-      fileSubtype = "Type1C";
-    }
-  } else {
-    (0, _util.warn)("getFontFileType: Unable to detect correct font file Type/Subtype.");
-    fileType = type;
-    fileSubtype = subtype;
-  }
-
-  return [fileType, fileSubtype];
-}
-
-function buildToFontChar(encoding, glyphsUnicodeMap, differences) {
-  const toFontChar = [];
-  let unicode;
-
-  for (let i = 0, ii = encoding.length; i < ii; i++) {
-    unicode = (0, _unicode.getUnicodeForGlyph)(encoding[i], glyphsUnicodeMap);
-
-    if (unicode !== -1) {
-      toFontChar[i] = unicode;
-    }
-  }
-
-  for (const charCode in differences) {
-    unicode = (0, _unicode.getUnicodeForGlyph)(differences[charCode], glyphsUnicodeMap);
-
-    if (unicode !== -1) {
-      toFontChar[+charCode] = unicode;
-    }
-  }
-
-  return toFontChar;
-}
-
-function adjustMapping(charCodeToGlyphId, hasGlyph, newGlyphZeroId) {
-  const newMap = Object.create(null);
-  const toFontChar = [];
-  let privateUseAreaIndex = 0;
-  let nextAvailableFontCharCode = PRIVATE_USE_AREAS[privateUseAreaIndex][0];
-  let privateUseOffetEnd = PRIVATE_USE_AREAS[privateUseAreaIndex][1];
-
-  for (let originalCharCode in charCodeToGlyphId) {
-    originalCharCode |= 0;
-    let glyphId = charCodeToGlyphId[originalCharCode];
-
-    if (!hasGlyph(glyphId)) {
-      continue;
-    }
-
-    if (nextAvailableFontCharCode > privateUseOffetEnd) {
-      privateUseAreaIndex++;
-
-      if (privateUseAreaIndex >= PRIVATE_USE_AREAS.length) {
-        (0, _util.warn)("Ran out of space in font private use area.");
-        break;
-      }
-
-      nextAvailableFontCharCode = PRIVATE_USE_AREAS[privateUseAreaIndex][0];
-      privateUseOffetEnd = PRIVATE_USE_AREAS[privateUseAreaIndex][1];
-    }
-
-    const fontCharCode = nextAvailableFontCharCode++;
-
-    if (glyphId === 0) {
-      glyphId = newGlyphZeroId;
-    }
-
-    newMap[fontCharCode] = glyphId;
-    toFontChar[originalCharCode] = fontCharCode;
-  }
-
-  return {
-    toFontChar,
-    charCodeToGlyphId: newMap,
-    nextAvailableFontCharCode
-  };
-}
-
-function getRanges(glyphs, numGlyphs) {
-  const codes = [];
-
-  for (const charCode in glyphs) {
-    if (glyphs[charCode] >= numGlyphs) {
-      continue;
-    }
-
-    codes.push({
-      fontCharCode: charCode | 0,
-      glyphId: glyphs[charCode]
-    });
-  }
-
-  if (codes.length === 0) {
-    codes.push({
-      fontCharCode: 0,
-      glyphId: 0
-    });
-  }
-
-  codes.sort(function fontGetRangesSort(a, b) {
-    return a.fontCharCode - b.fontCharCode;
-  });
-  const ranges = [];
-  const length = codes.length;
-
-  for (let n = 0; n < length;) {
-    const start = codes[n].fontCharCode;
-    const codeIndices = [codes[n].glyphId];
-    ++n;
-    let end = start;
-
-    while (n < length && end + 1 === codes[n].fontCharCode) {
-      codeIndices.push(codes[n].glyphId);
-      ++end;
-      ++n;
-
-      if (end === 0xffff) {
-        break;
-      }
-    }
-
-    ranges.push([start, end, codeIndices]);
-  }
-
-  return ranges;
-}
-
-function createCmapTable(glyphs, numGlyphs) {
-  const ranges = getRanges(glyphs, numGlyphs);
-  const numTables = ranges[ranges.length - 1][1] > 0xffff ? 2 : 1;
-  let cmap = "\x00\x00" + string16(numTables) + "\x00\x03" + "\x00\x01" + (0, _util.string32)(4 + numTables 
* 8);
-  let i, ii, j, jj;
-
-  for (i = ranges.length - 1; i >= 0; --i) {
-    if (ranges[i][0] <= 0xffff) {
-      break;
-    }
-  }
-
-  const bmpLength = i + 1;
-
-  if (ranges[i][0] < 0xffff && ranges[i][1] === 0xffff) {
-    ranges[i][1] = 0xfffe;
-  }
-
-  const trailingRangesCount = ranges[i][1] < 0xffff ? 1 : 0;
-  const segCount = bmpLength + trailingRangesCount;
-
-  const searchParams = _opentype_file_builder.OpenTypeFileBuilder.getSearchParams(segCount, 2);
-
-  let startCount = "";
-  let endCount = "";
-  let idDeltas = "";
-  let idRangeOffsets = "";
-  let glyphsIds = "";
-  let bias = 0;
-  let range, start, end, codes;
-
-  for (i = 0, ii = bmpLength; i < ii; i++) {
-    range = ranges[i];
-    start = range[0];
-    end = range[1];
-    startCount += string16(start);
-    endCount += string16(end);
-    codes = range[2];
-    let contiguous = true;
-
-    for (j = 1, jj = codes.length; j < jj; ++j) {
-      if (codes[j] !== codes[j - 1] + 1) {
-        contiguous = false;
-        break;
-      }
-    }
-
-    if (!contiguous) {
-      const offset = (segCount - i) * 2 + bias * 2;
-      bias += end - start + 1;
-      idDeltas += string16(0);
-      idRangeOffsets += string16(offset);
-
-      for (j = 0, jj = codes.length; j < jj; ++j) {
-        glyphsIds += string16(codes[j]);
-      }
-    } else {
-      const startCode = codes[0];
-      idDeltas += string16(startCode - start & 0xffff);
-      idRangeOffsets += string16(0);
-    }
-  }
-
-  if (trailingRangesCount > 0) {
-    endCount += "\xFF\xFF";
-    startCount += "\xFF\xFF";
-    idDeltas += "\x00\x01";
-    idRangeOffsets += "\x00\x00";
-  }
-
-  const format314 = "\x00\x00" + string16(2 * segCount) + string16(searchParams.range) + 
string16(searchParams.entry) + string16(searchParams.rangeShift) + endCount + "\x00\x00" + startCount + 
idDeltas + idRangeOffsets + glyphsIds;
-  let format31012 = "";
-  let header31012 = "";
-
-  if (numTables > 1) {
-    cmap += "\x00\x03" + "\x00\x0A" + (0, _util.string32)(4 + numTables * 8 + 4 + format314.length);
-    format31012 = "";
-
-    for (i = 0, ii = ranges.length; i < ii; i++) {
-      range = ranges[i];
-      start = range[0];
-      codes = range[2];
-      let code = codes[0];
-
-      for (j = 1, jj = codes.length; j < jj; ++j) {
-        if (codes[j] !== codes[j - 1] + 1) {
-          end = range[0] + j - 1;
-          format31012 += (0, _util.string32)(start) + (0, _util.string32)(end) + (0, _util.string32)(code);
-          start = end + 1;
-          code = codes[j];
-        }
-      }
-
-      format31012 += (0, _util.string32)(start) + (0, _util.string32)(range[1]) + (0, _util.string32)(code);
-    }
-
-    header31012 = "\x00\x0C" + "\x00\x00" + (0, _util.string32)(format31012.length + 16) + 
"\x00\x00\x00\x00" + (0, _util.string32)(format31012.length / 12);
-  }
-
-  return cmap + "\x00\x04" + string16(format314.length + 4) + format314 + header31012 + format31012;
-}
-
-function validateOS2Table(os2, file) {
-  file.pos = (file.start || 0) + os2.offset;
-  const version = file.getUint16();
-  file.skip(60);
-  const selection = file.getUint16();
-
-  if (version < 4 && selection & 0x0300) {
-    return false;
-  }
-
-  const firstChar = file.getUint16();
-  const lastChar = file.getUint16();
-
-  if (firstChar > lastChar) {
-    return false;
-  }
-
-  file.skip(6);
-  const usWinAscent = file.getUint16();
-
-  if (usWinAscent === 0) {
-    return false;
-  }
-
-  os2.data[8] = os2.data[9] = 0;
-  return true;
-}
-
-function createOS2Table(properties, charstrings, override) {
-  override = override || {
-    unitsPerEm: 0,
-    yMax: 0,
-    yMin: 0,
-    ascent: 0,
-    descent: 0
-  };
-  let ulUnicodeRange1 = 0;
-  let ulUnicodeRange2 = 0;
-  let ulUnicodeRange3 = 0;
-  let ulUnicodeRange4 = 0;
-  let firstCharIndex = null;
-  let lastCharIndex = 0;
-
-  if (charstrings) {
-    for (let code in charstrings) {
-      code |= 0;
-
-      if (firstCharIndex > code || !firstCharIndex) {
-        firstCharIndex = code;
-      }
-
-      if (lastCharIndex < code) {
-        lastCharIndex = code;
-      }
-
-      const position = (0, _unicode.getUnicodeRangeFor)(code);
-
-      if (position < 32) {
-        ulUnicodeRange1 |= 1 << position;
-      } else if (position < 64) {
-        ulUnicodeRange2 |= 1 << position - 32;
-      } else if (position < 96) {
-        ulUnicodeRange3 |= 1 << position - 64;
-      } else if (position < 123) {
-        ulUnicodeRange4 |= 1 << position - 96;
-      } else {
-        throw new _util.FormatError("Unicode ranges Bits > 123 are reserved for internal usage");
-      }
-    }
-
-    if (lastCharIndex > 0xffff) {
-      lastCharIndex = 0xffff;
-    }
-  } else {
-    firstCharIndex = 0;
-    lastCharIndex = 255;
-  }
-
-  const bbox = properties.bbox || [0, 0, 0, 0];
-  const unitsPerEm = override.unitsPerEm || 1 / (properties.fontMatrix || _util.FONT_IDENTITY_MATRIX)[0];
-  const scale = properties.ascentScaled ? 1.0 : unitsPerEm / PDF_GLYPH_SPACE_UNITS;
-  const typoAscent = override.ascent || Math.round(scale * (properties.ascent || bbox[3]));
-  let typoDescent = override.descent || Math.round(scale * (properties.descent || bbox[1]));
-
-  if (typoDescent > 0 && properties.descent > 0 && bbox[1] < 0) {
-    typoDescent = -typoDescent;
-  }
-
-  const winAscent = override.yMax || typoAscent;
-  const winDescent = -override.yMin || -typoDescent;
-  return "\x00\x03" + "\x02\x24" + "\x01\xF4" + "\x00\x05" + "\x00\x00" + "\x02\x8A" + "\x02\xBB" + 
"\x00\x00" + "\x00\x8C" + "\x02\x8A" + "\x02\xBB" + "\x00\x00" + "\x01\xDF" + "\x00\x31" + "\x01\x02" + 
"\x00\x00" + "\x00\x00\x06" + String.fromCharCode(properties.fixedPitch ? 0x09 : 0x00) + 
"\x00\x00\x00\x00\x00\x00" + (0, _util.string32)(ulUnicodeRange1) + (0, _util.string32)(ulUnicodeRange2) + 
(0, _util.string32)(ulUnicodeRange3) + (0, _util.string32)(ulUnicodeRange4) + "\x2A\x32\x31\x2A" + 
string16(properties.italicAngle ? 1 : 0) + string16(firstCharIndex || properties.firstChar) + 
string16(lastCharIndex || properties.lastChar) + string16(typoAscent) + string16(typoDescent) + "\x00\x64" + 
string16(winAscent) + string16(winDescent) + "\x00\x00\x00\x00" + "\x00\x00\x00\x00" + 
string16(properties.xHeight) + string16(properties.capHeight) + string16(0) + string16(firstCharIndex || 
properties.firstChar) + "\x00\x03";
-}
-
-function createPostTable(properties) {
-  const angle = Math.floor(properties.italicAngle * 2 ** 16);
-  return "\x00\x03\x00\x00" + (0, _util.string32)(angle) + "\x00\x00" + "\x00\x00" + (0, 
_util.string32)(properties.fixedPitch ? 1 : 0) + "\x00\x00\x00\x00" + "\x00\x00\x00\x00" + "\x00\x00\x00\x00" 
+ "\x00\x00\x00\x00";
-}
-
-function createPostscriptName(name) {
-  return name.replace(/[^\x21-\x7E]|[[\](){}<>/%]/g, "").slice(0, 63);
-}
-
-function createNameTable(name, proto) {
-  if (!proto) {
-    proto = [[], []];
-  }
-
-  const strings = [proto[0][0] || "Original licence", proto[0][1] || name, proto[0][2] || "Unknown", 
proto[0][3] || "uniqueID", proto[0][4] || name, proto[0][5] || "Version 0.11", proto[0][6] || 
createPostscriptName(name), proto[0][7] || "Unknown", proto[0][8] || "Unknown", proto[0][9] || "Unknown"];
-  const stringsUnicode = [];
-  let i, ii, j, jj, str;
-
-  for (i = 0, ii = strings.length; i < ii; i++) {
-    str = proto[1][i] || strings[i];
-    const strBufUnicode = [];
-
-    for (j = 0, jj = str.length; j < jj; j++) {
-      strBufUnicode.push(string16(str.charCodeAt(j)));
-    }
-
-    stringsUnicode.push(strBufUnicode.join(""));
-  }
-
-  const names = [strings, stringsUnicode];
-  const platforms = ["\x00\x01", "\x00\x03"];
-  const encodings = ["\x00\x00", "\x00\x01"];
-  const languages = ["\x00\x00", "\x04\x09"];
-  const namesRecordCount = strings.length * platforms.length;
-  let nameTable = "\x00\x00" + string16(namesRecordCount) + string16(namesRecordCount * 12 + 6);
-  let strOffset = 0;
-
-  for (i = 0, ii = platforms.length; i < ii; i++) {
-    const strs = names[i];
-
-    for (j = 0, jj = strs.length; j < jj; j++) {
-      str = strs[j];
-      const nameRecord = platforms[i] + encodings[i] + languages[i] + string16(j) + string16(str.length) + 
string16(strOffset);
-      nameTable += nameRecord;
-      strOffset += str.length;
-    }
-  }
-
-  nameTable += strings.join("") + stringsUnicode.join("");
-  return nameTable;
-}
-
-class Font {
-  constructor(name, file, properties) {
-    this.name = name;
-    this.psName = null;
-    this.mimetype = null;
-    this.disableFontFace = false;
-    this.loadedName = properties.loadedName;
-    this.isType3Font = properties.isType3Font;
-    this.missingFile = false;
-    this.cssFontInfo = properties.cssFontInfo;
-    this._charsCache = Object.create(null);
-    this._glyphCache = Object.create(null);
-    this.isSerifFont = !!(properties.flags & _fonts_utils.FontFlags.Serif);
-    this.isSymbolicFont = !!(properties.flags & _fonts_utils.FontFlags.Symbolic);
-    this.isMonospace = !!(properties.flags & _fonts_utils.FontFlags.FixedPitch);
-    let type = properties.type;
-    let subtype = properties.subtype;
-    this.type = type;
-    this.subtype = subtype;
-    let fallbackName = "sans-serif";
-
-    if (this.isMonospace) {
-      fallbackName = "monospace";
-    } else if (this.isSerifFont) {
-      fallbackName = "serif";
-    }
-
-    this.fallbackName = fallbackName;
-    this.differences = properties.differences;
-    this.widths = properties.widths;
-    this.defaultWidth = properties.defaultWidth;
-    this.composite = properties.composite;
-    this.cMap = properties.cMap;
-    this.capHeight = properties.capHeight / PDF_GLYPH_SPACE_UNITS;
-    this.ascent = properties.ascent / PDF_GLYPH_SPACE_UNITS;
-    this.descent = properties.descent / PDF_GLYPH_SPACE_UNITS;
-    this.lineHeight = this.ascent - this.descent;
-    this.fontMatrix = properties.fontMatrix;
-    this.bbox = properties.bbox;
-    this.defaultEncoding = properties.defaultEncoding;
-    this.toUnicode = properties.toUnicode;
-    this.toFontChar = [];
-
-    if (properties.type === "Type3") {
-      for (let charCode = 0; charCode < 256; charCode++) {
-        this.toFontChar[charCode] = this.differences[charCode] || properties.defaultEncoding[charCode];
-      }
-
-      this.fontType = _util.FontType.TYPE3;
-      return;
-    }
-
-    this.cidEncoding = properties.cidEncoding;
-    this.vertical = !!properties.vertical;
-
-    if (this.vertical) {
-      this.vmetrics = properties.vmetrics;
-      this.defaultVMetrics = properties.defaultVMetrics;
-    }
-
-    if (!file || file.isEmpty) {
-      if (file) {
-        (0, _util.warn)('Font file is empty in "' + name + '" (' + this.loadedName + ")");
-      }
-
-      this.fallbackToSystemFont(properties);
-      return;
-    }
-
-    [type, subtype] = getFontFileType(file, properties);
-
-    if (type !== this.type || subtype !== this.subtype) {
-      (0, _util.info)("Inconsistent font file Type/SubType, expected: " + `${this.type}/${this.subtype} but 
found: ${type}/${subtype}.`);
-    }
-
-    let data;
-
-    try {
-      switch (type) {
-        case "MMType1":
-          (0, _util.info)("MMType1 font (" + name + "), falling back to Type1.");
-
-        case "Type1":
-        case "CIDFontType0":
-          this.mimetype = "font/opentype";
-          const cff = subtype === "Type1C" || subtype === "CIDFontType0C" ? new _cff_font.CFFFont(file, 
properties) : new _type1_font.Type1Font(name, file, properties);
-          adjustWidths(properties);
-          data = this.convert(name, cff, properties);
-          break;
-
-        case "OpenType":
-        case "TrueType":
-        case "CIDFontType2":
-          this.mimetype = "font/opentype";
-          data = this.checkAndRepair(name, file, properties);
-
-          if (this.isOpenType) {
-            adjustWidths(properties);
-            type = "OpenType";
-          }
-
-          break;
-
-        default:
-          throw new _util.FormatError(`Font ${type} is not supported`);
-      }
-    } catch (e) {
-      (0, _util.warn)(e);
-      this.fallbackToSystemFont(properties);
-      return;
-    }
-
-    amendFallbackToUnicode(properties);
-    this.data = data;
-    this.fontType = (0, _fonts_utils.getFontType)(type, subtype, properties.isStandardFont);
-    this.fontMatrix = properties.fontMatrix;
-    this.widths = properties.widths;
-    this.defaultWidth = properties.defaultWidth;
-    this.toUnicode = properties.toUnicode;
-    this.seacMap = properties.seacMap;
-  }
-
-  get renderer() {
-    const renderer = _font_renderer.FontRendererFactory.create(this, _fonts_utils.SEAC_ANALYSIS_ENABLED);
-
-    return (0, _util.shadow)(this, "renderer", renderer);
-  }
-
-  exportData(extraProperties = false) {
-    const exportDataProperties = extraProperties ? [...EXPORT_DATA_PROPERTIES, 
...EXPORT_DATA_EXTRA_PROPERTIES] : EXPORT_DATA_PROPERTIES;
-    const data = Object.create(null);
-    let property, value;
-
-    for (property of exportDataProperties) {
-      value = this[property];
-
-      if (value !== undefined) {
-        data[property] = value;
-      }
-    }
-
-    return data;
-  }
-
-  fallbackToSystemFont(properties) {
-    this.missingFile = true;
-    const name = this.name;
-    const type = this.type;
-    const subtype = this.subtype;
-    let fontName = (0, _fonts_utils.normalizeFontName)(name);
-    const stdFontMap = (0, _standard_fonts.getStdFontMap)(),
-          nonStdFontMap = (0, _standard_fonts.getNonStdFontMap)();
-    const isStandardFont = !!stdFontMap[fontName];
-    const isMappedToStandardFont = !!(nonStdFontMap[fontName] && stdFontMap[nonStdFontMap[fontName]]);
-    fontName = stdFontMap[fontName] || nonStdFontMap[fontName] || fontName;
-    this.bold = fontName.search(/bold/gi) !== -1;
-    this.italic = fontName.search(/oblique/gi) !== -1 || fontName.search(/italic/gi) !== -1;
-    this.black = name.search(/Black/g) !== -1;
-    const isNarrow = name.search(/Narrow/g) !== -1;
-    this.remeasure = (!isStandardFont || isNarrow) && Object.keys(this.widths).length > 0;
-
-    if ((isStandardFont || isMappedToStandardFont) && type === "CIDFontType2" && 
this.cidEncoding.startsWith("Identity-")) {
-      const GlyphMapForStandardFonts = (0, _standard_fonts.getGlyphMapForStandardFonts)(),
-            cidToGidMap = properties.cidToGidMap;
-      const map = [];
-
-      for (const charCode in GlyphMapForStandardFonts) {
-        map[+charCode] = GlyphMapForStandardFonts[charCode];
-      }
-
-      if (/Arial-?Black/i.test(name)) {
-        const SupplementalGlyphMapForArialBlack = (0, 
_standard_fonts.getSupplementalGlyphMapForArialBlack)();
-
-        for (const charCode in SupplementalGlyphMapForArialBlack) {
-          map[+charCode] = SupplementalGlyphMapForArialBlack[charCode];
-        }
-      } else if (/Calibri/i.test(name)) {
-        const SupplementalGlyphMapForCalibri = (0, _standard_fonts.getSupplementalGlyphMapForCalibri)();
-
-        for (const charCode in SupplementalGlyphMapForCalibri) {
-          map[+charCode] = SupplementalGlyphMapForCalibri[charCode];
-        }
-      }
-
-      if (cidToGidMap) {
-        for (const charCode in map) {
-          const cid = map[charCode];
-
-          if (cidToGidMap[cid] !== undefined) {
-            map[+charCode] = cidToGidMap[cid];
-          }
-        }
-      }
-
-      const isIdentityUnicode = this.toUnicode instanceof _to_unicode_map.IdentityToUnicodeMap;
-
-      if (!isIdentityUnicode) {
-        this.toUnicode.forEach(function (charCode, unicodeCharCode) {
-          map[+charCode] = unicodeCharCode;
-        });
-      }
-
-      this.toFontChar = map;
-      this.toUnicode = new _to_unicode_map.ToUnicodeMap(map);
-    } else if (/Symbol/i.test(fontName)) {
-      this.toFontChar = buildToFontChar(_encodings.SymbolSetEncoding, (0, _glyphlist.getGlyphsUnicode)(), 
this.differences);
-    } else if (/Dingbats/i.test(fontName)) {
-      if (/Wingdings/i.test(name)) {
-        (0, _util.warn)("Non-embedded Wingdings font, falling back to ZapfDingbats.");
-      }
-
-      this.toFontChar = buildToFontChar(_encodings.ZapfDingbatsEncoding, (0, 
_glyphlist.getDingbatsGlyphsUnicode)(), this.differences);
-    } else if (isStandardFont) {
-      this.toFontChar = buildToFontChar(this.defaultEncoding, (0, _glyphlist.getGlyphsUnicode)(), 
this.differences);
-    } else {
-      const glyphsUnicodeMap = (0, _glyphlist.getGlyphsUnicode)();
-      const map = [];
-      this.toUnicode.forEach((charCode, unicodeCharCode) => {
-        if (!this.composite) {
-          const glyphName = this.differences[charCode] || this.defaultEncoding[charCode];
-          const unicode = (0, _unicode.getUnicodeForGlyph)(glyphName, glyphsUnicodeMap);
-
-          if (unicode !== -1) {
-            unicodeCharCode = unicode;
-          }
-        }
-
-        map[+charCode] = unicodeCharCode;
-      });
-
-      if (this.composite && this.toUnicode instanceof _to_unicode_map.IdentityToUnicodeMap) {
-        if (/Verdana/i.test(name)) {
-          const GlyphMapForStandardFonts = (0, _standard_fonts.getGlyphMapForStandardFonts)();
-
-          for (const charCode in GlyphMapForStandardFonts) {
-            map[+charCode] = GlyphMapForStandardFonts[charCode];
-          }
-        }
-      }
-
-      this.toFontChar = map;
-    }
-
-    amendFallbackToUnicode(properties);
-    this.loadedName = fontName.split("-")[0];
-    this.fontType = (0, _fonts_utils.getFontType)(type, subtype, properties.isStandardFont);
-  }
-
-  checkAndRepair(name, font, properties) {
-    const VALID_TABLES = ["OS/2", "cmap", "head", "hhea", "hmtx", "maxp", "name", "post", "loca", "glyf", 
"fpgm", "prep", "cvt ", "CFF "];
-
-    function readTables(file, numTables) {
-      const tables = Object.create(null);
-      tables["OS/2"] = null;
-      tables.cmap = null;
-      tables.head = null;
-      tables.hhea = null;
-      tables.hmtx = null;
-      tables.maxp = null;
-      tables.name = null;
-      tables.post = null;
-
-      for (let i = 0; i < numTables; i++) {
-        const table = readTableEntry(file);
-
-        if (!VALID_TABLES.includes(table.tag)) {
-          continue;
-        }
-
-        if (table.length === 0) {
-          continue;
-        }
-
-        tables[table.tag] = table;
-      }
-
-      return tables;
-    }
-
-    function readTableEntry(file) {
-      const tag = file.getString(4);
-      const checksum = file.getInt32() >>> 0;
-      const offset = file.getInt32() >>> 0;
-      const length = file.getInt32() >>> 0;
-      const previousPosition = file.pos;
-      file.pos = file.start ? file.start : 0;
-      file.skip(offset);
-      const data = file.getBytes(length);
-      file.pos = previousPosition;
-
-      if (tag === "head") {
-        data[8] = data[9] = data[10] = data[11] = 0;
-        data[17] |= 0x20;
-      }
-
-      return {
-        tag,
-        checksum,
-        length,
-        offset,
-        data
-      };
-    }
-
-    function readOpenTypeHeader(ttf) {
-      return {
-        version: ttf.getString(4),
-        numTables: ttf.getUint16(),
-        searchRange: ttf.getUint16(),
-        entrySelector: ttf.getUint16(),
-        rangeShift: ttf.getUint16()
-      };
-    }
-
-    function readTrueTypeCollectionHeader(ttc) {
-      const ttcTag = ttc.getString(4);
-      (0, _util.assert)(ttcTag === "ttcf", "Must be a TrueType Collection font.");
-      const majorVersion = ttc.getUint16();
-      const minorVersion = ttc.getUint16();
-      const numFonts = ttc.getInt32() >>> 0;
-      const offsetTable = [];
-
-      for (let i = 0; i < numFonts; i++) {
-        offsetTable.push(ttc.getInt32() >>> 0);
-      }
-
-      const header = {
-        ttcTag,
-        majorVersion,
-        minorVersion,
-        numFonts,
-        offsetTable
-      };
-
-      switch (majorVersion) {
-        case 1:
-          return header;
-
-        case 2:
-          header.dsigTag = ttc.getInt32() >>> 0;
-          header.dsigLength = ttc.getInt32() >>> 0;
-          header.dsigOffset = ttc.getInt32() >>> 0;
-          return header;
-      }
-
-      throw new _util.FormatError(`Invalid TrueType Collection majorVersion: ${majorVersion}.`);
-    }
-
-    function readTrueTypeCollectionData(ttc, fontName) {
-      const {
-        numFonts,
-        offsetTable
-      } = readTrueTypeCollectionHeader(ttc);
-      const fontNameParts = fontName.split("+");
-      let fallbackData;
-
-      for (let i = 0; i < numFonts; i++) {
-        ttc.pos = (ttc.start || 0) + offsetTable[i];
-        const potentialHeader = readOpenTypeHeader(ttc);
-        const potentialTables = readTables(ttc, potentialHeader.numTables);
-
-        if (!potentialTables.name) {
-          throw new _util.FormatError('TrueType Collection font must contain a "name" table.');
-        }
-
-        const nameTable = readNameTable(potentialTables.name);
-
-        for (let j = 0, jj = nameTable.length; j < jj; j++) {
-          for (let k = 0, kk = nameTable[j].length; k < kk; k++) {
-            const nameEntry = nameTable[j][k] && nameTable[j][k].replace(/\s/g, "");
-
-            if (!nameEntry) {
-              continue;
-            }
-
-            if (nameEntry === fontName) {
-              return {
-                header: potentialHeader,
-                tables: potentialTables
-              };
-            }
-
-            if (fontNameParts.length < 2) {
-              continue;
-            }
-
-            for (const part of fontNameParts) {
-              if (nameEntry === part) {
-                fallbackData = {
-                  name: part,
-                  header: potentialHeader,
-                  tables: potentialTables
-                };
-              }
-            }
-          }
-        }
-      }
-
-      if (fallbackData) {
-        (0, _util.warn)(`TrueType Collection does not contain "${fontName}" font, ` + `falling back to 
"${fallbackData.name}" font instead.`);
-        return {
-          header: fallbackData.header,
-          tables: fallbackData.tables
-        };
-      }
-
-      throw new _util.FormatError(`TrueType Collection does not contain "${fontName}" font.`);
-    }
-
-    function readCmapTable(cmap, file, isSymbolicFont, hasEncoding) {
-      if (!cmap) {
-        (0, _util.warn)("No cmap table available.");
-        return {
-          platformId: -1,
-          encodingId: -1,
-          mappings: [],
-          hasShortCmap: false
-        };
-      }
-
-      let segment;
-      let start = (file.start ? file.start : 0) + cmap.offset;
-      file.pos = start;
-      file.skip(2);
-      const numTables = file.getUint16();
-      let potentialTable;
-      let canBreak = false;
-
-      for (let i = 0; i < numTables; i++) {
-        const platformId = file.getUint16();
-        const encodingId = file.getUint16();
-        const offset = file.getInt32() >>> 0;
-        let useTable = false;
-
-        if (potentialTable && potentialTable.platformId === platformId && potentialTable.encodingId === 
encodingId) {
-          continue;
-        }
-
-        if (platformId === 0 && (encodingId === 0 || encodingId === 1 || encodingId === 3)) {
-          useTable = true;
-        } else if (platformId === 1 && encodingId === 0) {
-          useTable = true;
-        } else if (platformId === 3 && encodingId === 1 && (hasEncoding || !potentialTable)) {
-          useTable = true;
-
-          if (!isSymbolicFont) {
-            canBreak = true;
-          }
-        } else if (isSymbolicFont && platformId === 3 && encodingId === 0) {
-          useTable = true;
-          let correctlySorted = true;
-
-          if (i < numTables - 1) {
-            const nextBytes = file.peekBytes(2),
-                  nextPlatformId = int16(nextBytes[0], nextBytes[1]);
-
-            if (nextPlatformId < platformId) {
-              correctlySorted = false;
-            }
-          }
-
-          if (correctlySorted) {
-            canBreak = true;
-          }
-        }
-
-        if (useTable) {
-          potentialTable = {
-            platformId,
-            encodingId,
-            offset
-          };
-        }
-
-        if (canBreak) {
-          break;
-        }
-      }
-
-      if (potentialTable) {
-        file.pos = start + potentialTable.offset;
-      }
-
-      if (!potentialTable || file.peekByte() === -1) {
-        (0, _util.warn)("Could not find a preferred cmap table.");
-        return {
-          platformId: -1,
-          encodingId: -1,
-          mappings: [],
-          hasShortCmap: false
-        };
-      }
-
-      const format = file.getUint16();
-      file.skip(2 + 2);
-      let hasShortCmap = false;
-      const mappings = [];
-      let j, glyphId;
-
-      if (format === 0) {
-        for (j = 0; j < 256; j++) {
-          const index = file.getByte();
-
-          if (!index) {
-            continue;
-          }
-
-          mappings.push({
-            charCode: j,
-            glyphId: index
-          });
-        }
-
-        hasShortCmap = true;
-      } else if (format === 4) {
-        const segCount = file.getUint16() >> 1;
-        file.skip(6);
-        const segments = [];
-        let segIndex;
-
-        for (segIndex = 0; segIndex < segCount; segIndex++) {
-          segments.push({
-            end: file.getUint16()
-          });
-        }
-
-        file.skip(2);
-
-        for (segIndex = 0; segIndex < segCount; segIndex++) {
-          segments[segIndex].start = file.getUint16();
-        }
-
-        for (segIndex = 0; segIndex < segCount; segIndex++) {
-          segments[segIndex].delta = file.getUint16();
-        }
-
-        let offsetsCount = 0,
-            offsetIndex;
-
-        for (segIndex = 0; segIndex < segCount; segIndex++) {
-          segment = segments[segIndex];
-          const rangeOffset = file.getUint16();
-
-          if (!rangeOffset) {
-            segment.offsetIndex = -1;
-            continue;
-          }
-
-          offsetIndex = (rangeOffset >> 1) - (segCount - segIndex);
-          segment.offsetIndex = offsetIndex;
-          offsetsCount = Math.max(offsetsCount, offsetIndex + segment.end - segment.start + 1);
-        }
-
-        const offsets = [];
-
-        for (j = 0; j < offsetsCount; j++) {
-          offsets.push(file.getUint16());
-        }
-
-        for (segIndex = 0; segIndex < segCount; segIndex++) {
-          segment = segments[segIndex];
-          start = segment.start;
-          const end = segment.end;
-          const delta = segment.delta;
-          offsetIndex = segment.offsetIndex;
-
-          for (j = start; j <= end; j++) {
-            if (j === 0xffff) {
-              continue;
-            }
-
-            glyphId = offsetIndex < 0 ? j : offsets[offsetIndex + j - start];
-            glyphId = glyphId + delta & 0xffff;
-            mappings.push({
-              charCode: j,
-              glyphId
-            });
-          }
-        }
-      } else if (format === 6) {
-        const firstCode = file.getUint16();
-        const entryCount = file.getUint16();
-
-        for (j = 0; j < entryCount; j++) {
-          glyphId = file.getUint16();
-          const charCode = firstCode + j;
-          mappings.push({
-            charCode,
-            glyphId
-          });
-        }
-      } else {
-        (0, _util.warn)("cmap table has unsupported format: " + format);
-        return {
-          platformId: -1,
-          encodingId: -1,
-          mappings: [],
-          hasShortCmap: false
-        };
-      }
-
-      mappings.sort(function (a, b) {
-        return a.charCode - b.charCode;
-      });
-
-      for (let i = 1; i < mappings.length; i++) {
-        if (mappings[i - 1].charCode === mappings[i].charCode) {
-          mappings.splice(i, 1);
-          i--;
-        }
-      }
-
-      return {
-        platformId: potentialTable.platformId,
-        encodingId: potentialTable.encodingId,
-        mappings,
-        hasShortCmap
-      };
-    }
-
-    function sanitizeMetrics(file, header, metrics, headTable, numGlyphs, dupFirstEntry) {
-      if (!header) {
-        if (metrics) {
-          metrics.data = null;
-        }
-
-        return;
-      }
-
-      file.pos = (file.start ? file.start : 0) + header.offset;
-      file.pos += 4;
-      file.pos += 2;
-      file.pos += 2;
-      file.pos += 2;
-      file.pos += 2;
-      file.pos += 2;
-      file.pos += 2;
-      file.pos += 2;
-      file.pos += 2;
-      file.pos += 2;
-      const caretOffset = file.getUint16();
-      file.pos += 8;
-      file.pos += 2;
-      let numOfMetrics = file.getUint16();
-
-      if (caretOffset !== 0) {
-        const macStyle = int16(headTable.data[44], headTable.data[45]);
-
-        if (!(macStyle & 2)) {
-          header.data[22] = 0;
-          header.data[23] = 0;
-        }
-      }
-
-      if (numOfMetrics > numGlyphs) {
-        (0, _util.info)(`The numOfMetrics (${numOfMetrics}) should not be ` + `greater than the numGlyphs 
(${numGlyphs}).`);
-        numOfMetrics = numGlyphs;
-        header.data[34] = (numOfMetrics & 0xff00) >> 8;
-        header.data[35] = numOfMetrics & 0x00ff;
-      }
-
-      const numOfSidebearings = numGlyphs - numOfMetrics;
-      const numMissing = numOfSidebearings - (metrics.length - numOfMetrics * 4 >> 1);
-
-      if (numMissing > 0) {
-        const entries = new Uint8Array(metrics.length + numMissing * 2);
-        entries.set(metrics.data);
-
-        if (dupFirstEntry) {
-          entries[metrics.length] = metrics.data[2];
-          entries[metrics.length + 1] = metrics.data[3];
-        }
-
-        metrics.data = entries;
-      }
-    }
-
-    function sanitizeGlyph(source, sourceStart, sourceEnd, dest, destStart, hintsValid) {
-      const glyphProfile = {
-        length: 0,
-        sizeOfInstructions: 0
-      };
-
-      if (sourceEnd - sourceStart <= 12) {
-        return glyphProfile;
-      }
-
-      const glyf = source.subarray(sourceStart, sourceEnd);
-      let contoursCount = signedInt16(glyf[0], glyf[1]);
-
-      if (contoursCount < 0) {
-        contoursCount = -1;
-        writeSignedInt16(glyf, 0, contoursCount);
-        dest.set(glyf, destStart);
-        glyphProfile.length = glyf.length;
-        return glyphProfile;
-      }
-
-      let i,
-          j = 10,
-          flagsCount = 0;
-
-      for (i = 0; i < contoursCount; i++) {
-        const endPoint = glyf[j] << 8 | glyf[j + 1];
-        flagsCount = endPoint + 1;
-        j += 2;
-      }
-
-      const instructionsStart = j;
-      const instructionsLength = glyf[j] << 8 | glyf[j + 1];
-      glyphProfile.sizeOfInstructions = instructionsLength;
-      j += 2 + instructionsLength;
-      const instructionsEnd = j;
-      let coordinatesLength = 0;
-
-      for (i = 0; i < flagsCount; i++) {
-        const flag = glyf[j++];
-
-        if (flag & 0xc0) {
-          glyf[j - 1] = flag & 0x3f;
-        }
-
-        let xLength = 2;
-
-        if (flag & 2) {
-          xLength = 1;
-        } else if (flag & 16) {
-          xLength = 0;
-        }
-
-        let yLength = 2;
-
-        if (flag & 4) {
-          yLength = 1;
-        } else if (flag & 32) {
-          yLength = 0;
-        }
-
-        const xyLength = xLength + yLength;
-        coordinatesLength += xyLength;
-
-        if (flag & 8) {
-          const repeat = glyf[j++];
-          i += repeat;
-          coordinatesLength += repeat * xyLength;
-        }
-      }
-
-      if (coordinatesLength === 0) {
-        return glyphProfile;
-      }
-
-      let glyphDataLength = j + coordinatesLength;
-
-      if (glyphDataLength > glyf.length) {
-        return glyphProfile;
-      }
-
-      if (!hintsValid && instructionsLength > 0) {
-        dest.set(glyf.subarray(0, instructionsStart), destStart);
-        dest.set([0, 0], destStart + instructionsStart);
-        dest.set(glyf.subarray(instructionsEnd, glyphDataLength), destStart + instructionsStart + 2);
-        glyphDataLength -= instructionsLength;
-
-        if (glyf.length - glyphDataLength > 3) {
-          glyphDataLength = glyphDataLength + 3 & ~3;
-        }
-
-        glyphProfile.length = glyphDataLength;
-        return glyphProfile;
-      }
-
-      if (glyf.length - glyphDataLength > 3) {
-        glyphDataLength = glyphDataLength + 3 & ~3;
-        dest.set(glyf.subarray(0, glyphDataLength), destStart);
-        glyphProfile.length = glyphDataLength;
-        return glyphProfile;
-      }
-
-      dest.set(glyf, destStart);
-      glyphProfile.length = glyf.length;
-      return glyphProfile;
-    }
-
-    function sanitizeHead(head, numGlyphs, locaLength) {
-      const data = head.data;
-      const version = int32(data[0], data[1], data[2], data[3]);
-
-      if (version >> 16 !== 1) {
-        (0, _util.info)("Attempting to fix invalid version in head table: " + version);
-        data[0] = 0;
-        data[1] = 1;
-        data[2] = 0;
-        data[3] = 0;
-      }
-
-      const indexToLocFormat = int16(data[50], data[51]);
-
-      if (indexToLocFormat < 0 || indexToLocFormat > 1) {
-        (0, _util.info)("Attempting to fix invalid indexToLocFormat in head table: " + indexToLocFormat);
-        const numGlyphsPlusOne = numGlyphs + 1;
-
-        if (locaLength === numGlyphsPlusOne << 1) {
-          data[50] = 0;
-          data[51] = 0;
-        } else if (locaLength === numGlyphsPlusOne << 2) {
-          data[50] = 0;
-          data[51] = 1;
-        } else {
-          throw new _util.FormatError("Could not fix indexToLocFormat: " + indexToLocFormat);
-        }
-      }
-    }
-
-    function sanitizeGlyphLocations(loca, glyf, numGlyphs, isGlyphLocationsLong, hintsValid, dupFirstEntry, 
maxSizeOfInstructions) {
-      let itemSize, itemDecode, itemEncode;
-
-      if (isGlyphLocationsLong) {
-        itemSize = 4;
-
-        itemDecode = function fontItemDecodeLong(data, offset) {
-          return data[offset] << 24 | data[offset + 1] << 16 | data[offset + 2] << 8 | data[offset + 3];
-        };
-
-        itemEncode = function fontItemEncodeLong(data, offset, value) {
-          data[offset] = value >>> 24 & 0xff;
-          data[offset + 1] = value >> 16 & 0xff;
-          data[offset + 2] = value >> 8 & 0xff;
-          data[offset + 3] = value & 0xff;
-        };
-      } else {
-        itemSize = 2;
-
-        itemDecode = function fontItemDecode(data, offset) {
-          return data[offset] << 9 | data[offset + 1] << 1;
-        };
-
-        itemEncode = function fontItemEncode(data, offset, value) {
-          data[offset] = value >> 9 & 0xff;
-          data[offset + 1] = value >> 1 & 0xff;
-        };
-      }
-
-      const numGlyphsOut = dupFirstEntry ? numGlyphs + 1 : numGlyphs;
-      const locaDataSize = itemSize * (1 + numGlyphsOut);
-      const locaData = new Uint8Array(locaDataSize);
-      locaData.set(loca.data.subarray(0, locaDataSize));
-      loca.data = locaData;
-      const oldGlyfData = glyf.data;
-      const oldGlyfDataLength = oldGlyfData.length;
-      const newGlyfData = new Uint8Array(oldGlyfDataLength);
-      let i, j;
-      const locaEntries = [];
-
-      for (i = 0, j = 0; i < numGlyphs + 1; i++, j += itemSize) {
-        let offset = itemDecode(locaData, j);
-
-        if (offset > oldGlyfDataLength) {
-          offset = oldGlyfDataLength;
-        }
-
-        locaEntries.push({
-          index: i,
-          offset,
-          endOffset: 0
-        });
-      }
-
-      locaEntries.sort((a, b) => {
-        return a.offset - b.offset;
-      });
-
-      for (i = 0; i < numGlyphs; i++) {
-        locaEntries[i].endOffset = locaEntries[i + 1].offset;
-      }
-
-      locaEntries.sort((a, b) => {
-        return a.index - b.index;
-      });
-      const missingGlyphs = Object.create(null);
-      let writeOffset = 0;
-      itemEncode(locaData, 0, writeOffset);
-
-      for (i = 0, j = itemSize; i < numGlyphs; i++, j += itemSize) {
-        const glyphProfile = sanitizeGlyph(oldGlyfData, locaEntries[i].offset, locaEntries[i].endOffset, 
newGlyfData, writeOffset, hintsValid);
-        const newLength = glyphProfile.length;
-
-        if (newLength === 0) {
-          missingGlyphs[i] = true;
-        }
-
-        if (glyphProfile.sizeOfInstructions > maxSizeOfInstructions) {
-          maxSizeOfInstructions = glyphProfile.sizeOfInstructions;
-        }
-
-        writeOffset += newLength;
-        itemEncode(locaData, j, writeOffset);
-      }
-
-      if (writeOffset === 0) {
-        const simpleGlyph = new Uint8Array([0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 0]);
-
-        for (i = 0, j = itemSize; i < numGlyphsOut; i++, j += itemSize) {
-          itemEncode(locaData, j, simpleGlyph.length);
-        }
-
-        glyf.data = simpleGlyph;
-      } else if (dupFirstEntry) {
-        const firstEntryLength = itemDecode(locaData, itemSize);
-
-        if (newGlyfData.length > firstEntryLength + writeOffset) {
-          glyf.data = newGlyfData.subarray(0, firstEntryLength + writeOffset);
-        } else {
-          glyf.data = new Uint8Array(firstEntryLength + writeOffset);
-          glyf.data.set(newGlyfData.subarray(0, writeOffset));
-        }
-
-        glyf.data.set(newGlyfData.subarray(0, firstEntryLength), writeOffset);
-        itemEncode(loca.data, locaData.length - itemSize, writeOffset + firstEntryLength);
-      } else {
-        glyf.data = newGlyfData.subarray(0, writeOffset);
-      }
-
-      return {
-        missingGlyphs,
-        maxSizeOfInstructions
-      };
-    }
-
-    function readPostScriptTable(post, propertiesObj, maxpNumGlyphs) {
-      const start = (font.start ? font.start : 0) + post.offset;
-      font.pos = start;
-      const length = post.length,
-            end = start + length;
-      const version = font.getInt32();
-      font.skip(28);
-      let glyphNames;
-      let valid = true;
-      let i;
-
-      switch (version) {
-        case 0x00010000:
-          glyphNames = _fonts_utils.MacStandardGlyphOrdering;
-          break;
-
-        case 0x00020000:
-          const numGlyphs = font.getUint16();
-
-          if (numGlyphs !== maxpNumGlyphs) {
-            valid = false;
-            break;
-          }
-
-          const glyphNameIndexes = [];
-
-          for (i = 0; i < numGlyphs; ++i) {
-            const index = font.getUint16();
-
-            if (index >= 32768) {
-              valid = false;
-              break;
-            }
-
-            glyphNameIndexes.push(index);
-          }
-
-          if (!valid) {
-            break;
-          }
-
-          const customNames = [],
-                strBuf = [];
-
-          while (font.pos < end) {
-            const stringLength = font.getByte();
-            strBuf.length = stringLength;
-
-            for (i = 0; i < stringLength; ++i) {
-              strBuf[i] = String.fromCharCode(font.getByte());
-            }
-
-            customNames.push(strBuf.join(""));
-          }
-
-          glyphNames = [];
-
-          for (i = 0; i < numGlyphs; ++i) {
-            const j = glyphNameIndexes[i];
-
-            if (j < 258) {
-              glyphNames.push(_fonts_utils.MacStandardGlyphOrdering[j]);
-              continue;
-            }
-
-            glyphNames.push(customNames[j - 258]);
-          }
-
-          break;
-
-        case 0x00030000:
-          break;
-
-        default:
-          (0, _util.warn)("Unknown/unsupported post table version " + version);
-          valid = false;
-
-          if (propertiesObj.defaultEncoding) {
-            glyphNames = propertiesObj.defaultEncoding;
-          }
-
-          break;
-      }
-
-      propertiesObj.glyphNames = glyphNames;
-      return valid;
-    }
-
-    function readNameTable(nameTable) {
-      const start = (font.start ? font.start : 0) + nameTable.offset;
-      font.pos = start;
-      const names = [[], []];
-      const length = nameTable.length,
-            end = start + length;
-      const format = font.getUint16();
-      const FORMAT_0_HEADER_LENGTH = 6;
-
-      if (format !== 0 || length < FORMAT_0_HEADER_LENGTH) {
-        return names;
-      }
-
-      const numRecords = font.getUint16();
-      const stringsStart = font.getUint16();
-      const records = [];
-      const NAME_RECORD_LENGTH = 12;
-      let i, ii;
-
-      for (i = 0; i < numRecords && font.pos + NAME_RECORD_LENGTH <= end; i++) {
-        const r = {
-          platform: font.getUint16(),
-          encoding: font.getUint16(),
-          language: font.getUint16(),
-          name: font.getUint16(),
-          length: font.getUint16(),
-          offset: font.getUint16()
-        };
-
-        if (r.platform === 1 && r.encoding === 0 && r.language === 0 || r.platform === 3 && r.encoding === 1 
&& r.language === 0x409) {
-          records.push(r);
-        }
-      }
-
-      for (i = 0, ii = records.length; i < ii; i++) {
-        const record = records[i];
-
-        if (record.length <= 0) {
-          continue;
-        }
-
-        const pos = start + stringsStart + record.offset;
-
-        if (pos + record.length > end) {
-          continue;
-        }
-
-        font.pos = pos;
-        const nameIndex = record.name;
-
-        if (record.encoding) {
-          let str = "";
-
-          for (let j = 0, jj = record.length; j < jj; j += 2) {
-            str += String.fromCharCode(font.getUint16());
-          }
-
-          names[1][nameIndex] = str;
-        } else {
-          names[0][nameIndex] = font.getString(record.length);
-        }
-      }
-
-      return names;
-    }
-
-    const TTOpsStackDeltas = [0, 0, 0, 0, 0, 0, 0, 0, -2, -2, -2, -2, 0, 0, -2, -5, -1, -1, -1, -1, -1, -1, 
-1, -1, 0, 0, -1, 0, -1, -1, -1, -1, 1, -1, -999, 0, 1, 0, -1, -2, 0, -1, -2, -1, -1, 0, -1, -1, 0, 0, -999, 
-999, -1, -1, -1, -1, -2, -999, -2, -2, -999, 0, -2, -2, 0, 0, -2, 0, -2, 0, 0, 0, -2, -1, -1, 1, 1, 0, 0, 
-1, -1, -1, -1, -1, -1, -1, 0, 0, -1, 0, -1, -1, 0, -999, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, -2, -999, -999, -999, -999, -999, -1, -1, -2, -2, 0, 0, 0, 0, -1, -1, -999, -2, -2, 0, 0, -1, -2, 
-2, 0, 0, 0, -1, -1, -1, -2];
-
-    function sanitizeTTProgram(table, ttContext) {
-      let data = table.data;
-      let i = 0,
-          j,
-          n,
-          b,
-          funcId,
-          pc,
-          lastEndf = 0,
-          lastDeff = 0;
-      const stack = [];
-      const callstack = [];
-      const functionsCalled = [];
-      let tooComplexToFollowFunctions = ttContext.tooComplexToFollowFunctions;
-      let inFDEF = false,
-          ifLevel = 0,
-          inELSE = 0;
-
-      for (let ii = data.length; i < ii;) {
-        const op = data[i++];
-
-        if (op === 0x40) {
-          n = data[i++];
-
-          if (inFDEF || inELSE) {
-            i += n;
-          } else {
-            for (j = 0; j < n; j++) {
-              stack.push(data[i++]);
-            }
-          }
-        } else if (op === 0x41) {
-          n = data[i++];
-
-          if (inFDEF || inELSE) {
-            i += n * 2;
-          } else {
-            for (j = 0; j < n; j++) {
-              b = data[i++];
-              stack.push(b << 8 | data[i++]);
-            }
-          }
-        } else if ((op & 0xf8) === 0xb0) {
-          n = op - 0xb0 + 1;
-
-          if (inFDEF || inELSE) {
-            i += n;
-          } else {
-            for (j = 0; j < n; j++) {
-              stack.push(data[i++]);
-            }
-          }
-        } else if ((op & 0xf8) === 0xb8) {
-          n = op - 0xb8 + 1;
-
-          if (inFDEF || inELSE) {
-            i += n * 2;
-          } else {
-            for (j = 0; j < n; j++) {
-              b = data[i++];
-              stack.push(b << 8 | data[i++]);
-            }
-          }
-        } else if (op === 0x2b && !tooComplexToFollowFunctions) {
-          if (!inFDEF && !inELSE) {
-            funcId = stack[stack.length - 1];
-
-            if (isNaN(funcId)) {
-              (0, _util.info)("TT: CALL empty stack (or invalid entry).");
-            } else {
-              ttContext.functionsUsed[funcId] = true;
-
-              if (funcId in ttContext.functionsStackDeltas) {
-                const newStackLength = stack.length + ttContext.functionsStackDeltas[funcId];
-
-                if (newStackLength < 0) {
-                  (0, _util.warn)("TT: CALL invalid functions stack delta.");
-                  ttContext.hintsValid = false;
-                  return;
-                }
-
-                stack.length = newStackLength;
-              } else if (funcId in ttContext.functionsDefined && !functionsCalled.includes(funcId)) {
-                callstack.push({
-                  data,
-                  i,
-                  stackTop: stack.length - 1
-                });
-                functionsCalled.push(funcId);
-                pc = ttContext.functionsDefined[funcId];
-
-                if (!pc) {
-                  (0, _util.warn)("TT: CALL non-existent function");
-                  ttContext.hintsValid = false;
-                  return;
-                }
-
-                data = pc.data;
-                i = pc.i;
-              }
-            }
-          }
-        } else if (op === 0x2c && !tooComplexToFollowFunctions) {
-          if (inFDEF || inELSE) {
-            (0, _util.warn)("TT: nested FDEFs not allowed");
-            tooComplexToFollowFunctions = true;
-          }
-
-          inFDEF = true;
-          lastDeff = i;
-          funcId = stack.pop();
-          ttContext.functionsDefined[funcId] = {
-            data,
-            i
-          };
-        } else if (op === 0x2d) {
-          if (inFDEF) {
-            inFDEF = false;
-            lastEndf = i;
-          } else {
-            pc = callstack.pop();
-
-            if (!pc) {
-              (0, _util.warn)("TT: ENDF bad stack");
-              ttContext.hintsValid = false;
-              return;
-            }
-
-            funcId = functionsCalled.pop();
-            data = pc.data;
-            i = pc.i;
-            ttContext.functionsStackDeltas[funcId] = stack.length - pc.stackTop;
-          }
-        } else if (op === 0x89) {
-          if (inFDEF || inELSE) {
-            (0, _util.warn)("TT: nested IDEFs not allowed");
-            tooComplexToFollowFunctions = true;
-          }
-
-          inFDEF = true;
-          lastDeff = i;
-        } else if (op === 0x58) {
-          ++ifLevel;
-        } else if (op === 0x1b) {
-          inELSE = ifLevel;
-        } else if (op === 0x59) {
-          if (inELSE === ifLevel) {
-            inELSE = 0;
-          }
-
-          --ifLevel;
-        } else if (op === 0x1c) {
-          if (!inFDEF && !inELSE) {
-            const offset = stack[stack.length - 1];
-
-            if (offset > 0) {
-              i += offset - 1;
-            }
-          }
-        }
-
-        if (!inFDEF && !inELSE) {
-          let stackDelta = 0;
-
-          if (op <= 0x8e) {
-            stackDelta = TTOpsStackDeltas[op];
-          } else if (op >= 0xc0 && op <= 0xdf) {
-            stackDelta = -1;
-          } else if (op >= 0xe0) {
-            stackDelta = -2;
-          }
-
-          if (op >= 0x71 && op <= 0x75) {
-            n = stack.pop();
-
-            if (!isNaN(n)) {
-              stackDelta = -n * 2;
-            }
-          }
-
-          while (stackDelta < 0 && stack.length > 0) {
-            stack.pop();
-            stackDelta++;
-          }
-
-          while (stackDelta > 0) {
-            stack.push(NaN);
-            stackDelta--;
-          }
-        }
-      }
-
-      ttContext.tooComplexToFollowFunctions = tooComplexToFollowFunctions;
-      const content = [data];
-
-      if (i > data.length) {
-        content.push(new Uint8Array(i - data.length));
-      }
-
-      if (lastDeff > lastEndf) {
-        (0, _util.warn)("TT: complementing a missing function tail");
-        content.push(new Uint8Array([0x22, 0x2d]));
-      }
-
-      foldTTTable(table, content);
-    }
-
-    function checkInvalidFunctions(ttContext, maxFunctionDefs) {
-      if (ttContext.tooComplexToFollowFunctions) {
-        return;
-      }
-
-      if (ttContext.functionsDefined.length > maxFunctionDefs) {
-        (0, _util.warn)("TT: more functions defined than expected");
-        ttContext.hintsValid = false;
-        return;
-      }
-
-      for (let j = 0, jj = ttContext.functionsUsed.length; j < jj; j++) {
-        if (j > maxFunctionDefs) {
-          (0, _util.warn)("TT: invalid function id: " + j);
-          ttContext.hintsValid = false;
-          return;
-        }
-
-        if (ttContext.functionsUsed[j] && !ttContext.functionsDefined[j]) {
-          (0, _util.warn)("TT: undefined function: " + j);
-          ttContext.hintsValid = false;
-          return;
-        }
-      }
-    }
-
-    function foldTTTable(table, content) {
-      if (content.length > 1) {
-        let newLength = 0;
-        let j, jj;
-
-        for (j = 0, jj = content.length; j < jj; j++) {
-          newLength += content[j].length;
-        }
-
-        newLength = newLength + 3 & ~3;
-        const result = new Uint8Array(newLength);
-        let pos = 0;
-
-        for (j = 0, jj = content.length; j < jj; j++) {
-          result.set(content[j], pos);
-          pos += content[j].length;
-        }
-
-        table.data = result;
-        table.length = newLength;
-      }
-    }
-
-    function sanitizeTTPrograms(fpgm, prep, cvt, maxFunctionDefs) {
-      const ttContext = {
-        functionsDefined: [],
-        functionsUsed: [],
-        functionsStackDeltas: [],
-        tooComplexToFollowFunctions: false,
-        hintsValid: true
-      };
-
-      if (fpgm) {
-        sanitizeTTProgram(fpgm, ttContext);
-      }
-
-      if (prep) {
-        sanitizeTTProgram(prep, ttContext);
-      }
-
-      if (fpgm) {
-        checkInvalidFunctions(ttContext, maxFunctionDefs);
-      }
-
-      if (cvt && cvt.length & 1) {
-        const cvtData = new Uint8Array(cvt.length + 1);
-        cvtData.set(cvt.data);
-        cvt.data = cvtData;
-      }
-
-      return ttContext.hintsValid;
-    }
-
-    font = new _stream.Stream(new Uint8Array(font.getBytes()));
-    let header, tables;
-
-    if (isTrueTypeCollectionFile(font)) {
-      const ttcData = readTrueTypeCollectionData(font, this.name);
-      header = ttcData.header;
-      tables = ttcData.tables;
-    } else {
-      header = readOpenTypeHeader(font);
-      tables = readTables(font, header.numTables);
-    }
-
-    let cff, cffFile;
-    const isTrueType = !tables["CFF "];
-
-    if (!isTrueType) {
-      const isComposite = properties.composite && ((properties.cidToGidMap || []).length > 0 || 
!(properties.cMap instanceof _cmap.IdentityCMap));
-
-      if (header.version === "OTTO" && !isComposite || !tables.head || !tables.hhea || !tables.maxp || 
!tables.post) {
-        cffFile = new _stream.Stream(tables["CFF "].data);
-        cff = new _cff_font.CFFFont(cffFile, properties);
-        adjustWidths(properties);
-        return this.convert(name, cff, properties);
-      }
-
-      delete tables.glyf;
-      delete tables.loca;
-      delete tables.fpgm;
-      delete tables.prep;
-      delete tables["cvt "];
-      this.isOpenType = true;
-    } else {
-      if (!tables.loca) {
-        throw new _util.FormatError('Required "loca" table is not found');
-      }
-
-      if (!tables.glyf) {
-        (0, _util.warn)('Required "glyf" table is not found -- trying to recover.');
-        tables.glyf = {
-          tag: "glyf",
-          data: new Uint8Array(0)
-        };
-      }
-
-      this.isOpenType = false;
-    }
-
-    if (!tables.maxp) {
-      throw new _util.FormatError('Required "maxp" table is not found');
-    }
-
-    font.pos = (font.start || 0) + tables.maxp.offset;
-    const version = font.getInt32();
-    const numGlyphs = font.getUint16();
-
-    if (properties.scaleFactors && properties.scaleFactors.length === numGlyphs && isTrueType) {
-      const {
-        scaleFactors
-      } = properties;
-      const isGlyphLocationsLong = int16(tables.head.data[50], tables.head.data[51]);
-      const glyphs = new _glyf.GlyfTable({
-        glyfTable: tables.glyf.data,
-        isGlyphLocationsLong,
-        locaTable: tables.loca.data,
-        numGlyphs
-      });
-      glyphs.scale(scaleFactors);
-      const {
-        glyf,
-        loca,
-        isLocationLong
-      } = glyphs.write();
-      tables.glyf.data = glyf;
-      tables.loca.data = loca;
-
-      if (isLocationLong !== !!isGlyphLocationsLong) {
-        tables.head.data[50] = 0;
-        tables.head.data[51] = isLocationLong ? 1 : 0;
-      }
-
-      const metrics = tables.hmtx.data;
-
-      for (let i = 0; i < numGlyphs; i++) {
-        const j = 4 * i;
-        const advanceWidth = Math.round(scaleFactors[i] * int16(metrics[j], metrics[j + 1]));
-        metrics[j] = advanceWidth >> 8 & 0xff;
-        metrics[j + 1] = advanceWidth & 0xff;
-        const lsb = Math.round(scaleFactors[i] * signedInt16(metrics[j + 2], metrics[j + 3]));
-        writeSignedInt16(metrics, j + 2, lsb);
-      }
-    }
-
-    let numGlyphsOut = numGlyphs + 1;
-    let dupFirstEntry = true;
-
-    if (numGlyphsOut > 0xffff) {
-      dupFirstEntry = false;
-      numGlyphsOut = numGlyphs;
-      (0, _util.warn)("Not enough space in glyfs to duplicate first glyph.");
-    }
-
-    let maxFunctionDefs = 0;
-    let maxSizeOfInstructions = 0;
-
-    if (version >= 0x00010000 && tables.maxp.length >= 22) {
-      font.pos += 8;
-      const maxZones = font.getUint16();
-
-      if (maxZones > 2) {
-        tables.maxp.data[14] = 0;
-        tables.maxp.data[15] = 2;
-      }
-
-      font.pos += 4;
-      maxFunctionDefs = font.getUint16();
-      font.pos += 4;
-      maxSizeOfInstructions = font.getUint16();
-    }
-
-    tables.maxp.data[4] = numGlyphsOut >> 8;
-    tables.maxp.data[5] = numGlyphsOut & 255;
-    const hintsValid = sanitizeTTPrograms(tables.fpgm, tables.prep, tables["cvt "], maxFunctionDefs);
-
-    if (!hintsValid) {
-      delete tables.fpgm;
-      delete tables.prep;
-      delete tables["cvt "];
-    }
-
-    sanitizeMetrics(font, tables.hhea, tables.hmtx, tables.head, numGlyphsOut, dupFirstEntry);
-
-    if (!tables.head) {
-      throw new _util.FormatError('Required "head" table is not found');
-    }
-
-    sanitizeHead(tables.head, numGlyphs, isTrueType ? tables.loca.length : 0);
-    let missingGlyphs = Object.create(null);
-
-    if (isTrueType) {
-      const isGlyphLocationsLong = int16(tables.head.data[50], tables.head.data[51]);
-      const glyphsInfo = sanitizeGlyphLocations(tables.loca, tables.glyf, numGlyphs, isGlyphLocationsLong, 
hintsValid, dupFirstEntry, maxSizeOfInstructions);
-      missingGlyphs = glyphsInfo.missingGlyphs;
-
-      if (version >= 0x00010000 && tables.maxp.length >= 22) {
-        tables.maxp.data[26] = glyphsInfo.maxSizeOfInstructions >> 8;
-        tables.maxp.data[27] = glyphsInfo.maxSizeOfInstructions & 255;
-      }
-    }
-
-    if (!tables.hhea) {
-      throw new _util.FormatError('Required "hhea" table is not found');
-    }
-
-    if (tables.hhea.data[10] === 0 && tables.hhea.data[11] === 0) {
-      tables.hhea.data[10] = 0xff;
-      tables.hhea.data[11] = 0xff;
-    }
-
-    const metricsOverride = {
-      unitsPerEm: int16(tables.head.data[18], tables.head.data[19]),
-      yMax: int16(tables.head.data[42], tables.head.data[43]),
-      yMin: signedInt16(tables.head.data[38], tables.head.data[39]),
-      ascent: signedInt16(tables.hhea.data[4], tables.hhea.data[5]),
-      descent: signedInt16(tables.hhea.data[6], tables.hhea.data[7]),
-      lineGap: signedInt16(tables.hhea.data[8], tables.hhea.data[9])
-    };
-    this.ascent = metricsOverride.ascent / metricsOverride.unitsPerEm;
-    this.descent = metricsOverride.descent / metricsOverride.unitsPerEm;
-    this.lineGap = metricsOverride.lineGap / metricsOverride.unitsPerEm;
-
-    if (this.cssFontInfo && this.cssFontInfo.lineHeight) {
-      this.lineHeight = this.cssFontInfo.lineHeight;
-    } else {
-      this.lineHeight = this.ascent - this.descent + this.lineGap;
-    }
-
-    if (tables.post) {
-      readPostScriptTable(tables.post, properties, numGlyphs);
-    }
-
-    tables.post = {
-      tag: "post",
-      data: createPostTable(properties)
-    };
-    const charCodeToGlyphId = [];
-
-    function hasGlyph(glyphId) {
-      return !missingGlyphs[glyphId];
-    }
-
-    if (properties.composite) {
-      const cidToGidMap = properties.cidToGidMap || [];
-      const isCidToGidMapEmpty = cidToGidMap.length === 0;
-      properties.cMap.forEach(function (charCode, cid) {
-        if (cid > 0xffff) {
-          throw new _util.FormatError("Max size of CID is 65,535");
-        }
-
-        let glyphId = -1;
-
-        if (isCidToGidMapEmpty) {
-          glyphId = cid;
-        } else if (cidToGidMap[cid] !== undefined) {
-          glyphId = cidToGidMap[cid];
-        }
-
-        if (glyphId >= 0 && glyphId < numGlyphs && hasGlyph(glyphId)) {
-          charCodeToGlyphId[charCode] = glyphId;
-        }
-      });
-    } else {
-      const cmapTable = readCmapTable(tables.cmap, font, this.isSymbolicFont, properties.hasEncoding);
-      const cmapPlatformId = cmapTable.platformId;
-      const cmapEncodingId = cmapTable.encodingId;
-      const cmapMappings = cmapTable.mappings;
-      const cmapMappingsLength = cmapMappings.length;
-      let baseEncoding = [];
-
-      if (properties.hasEncoding && (properties.baseEncodingName === "MacRomanEncoding" || 
properties.baseEncodingName === "WinAnsiEncoding")) {
-        baseEncoding = (0, _encodings.getEncoding)(properties.baseEncodingName);
-      }
-
-      if (properties.hasEncoding && !this.isSymbolicFont && (cmapPlatformId === 3 && cmapEncodingId === 1 || 
cmapPlatformId === 1 && cmapEncodingId === 0)) {
-        const glyphsUnicodeMap = (0, _glyphlist.getGlyphsUnicode)();
-
-        for (let charCode = 0; charCode < 256; charCode++) {
-          let glyphName;
-
-          if (this.differences[charCode] !== undefined) {
-            glyphName = this.differences[charCode];
-          } else if (baseEncoding[charCode] !== "") {
-            glyphName = baseEncoding[charCode];
-          } else {
-            glyphName = _encodings.StandardEncoding[charCode];
-          }
-
-          if (!glyphName) {
-            continue;
-          }
-
-          const standardGlyphName = (0, _fonts_utils.recoverGlyphName)(glyphName, glyphsUnicodeMap);
-          let unicodeOrCharCode;
-
-          if (cmapPlatformId === 3 && cmapEncodingId === 1) {
-            unicodeOrCharCode = glyphsUnicodeMap[standardGlyphName];
-          } else if (cmapPlatformId === 1 && cmapEncodingId === 0) {
-            unicodeOrCharCode = _encodings.MacRomanEncoding.indexOf(standardGlyphName);
-          }
-
-          for (let i = 0; i < cmapMappingsLength; ++i) {
-            if (cmapMappings[i].charCode !== unicodeOrCharCode) {
-              continue;
-            }
-
-            charCodeToGlyphId[charCode] = cmapMappings[i].glyphId;
-            break;
-          }
-        }
-      } else if (cmapPlatformId === 0) {
-        for (let i = 0; i < cmapMappingsLength; ++i) {
-          charCodeToGlyphId[cmapMappings[i].charCode] = cmapMappings[i].glyphId;
-        }
-      } else {
-        for (let i = 0; i < cmapMappingsLength; ++i) {
-          let charCode = cmapMappings[i].charCode;
-
-          if (cmapPlatformId === 3 && charCode >= 0xf000 && charCode <= 0xf0ff) {
-            charCode &= 0xff;
-          }
-
-          charCodeToGlyphId[charCode] = cmapMappings[i].glyphId;
-        }
-      }
-
-      if (properties.glyphNames && (baseEncoding.length || this.differences.length)) {
-        for (let i = 0; i < 256; ++i) {
-          if (charCodeToGlyphId[i] !== undefined) {
-            continue;
-          }
-
-          const glyphName = this.differences[i] || baseEncoding[i];
-
-          if (!glyphName) {
-            continue;
-          }
-
-          const glyphId = properties.glyphNames.indexOf(glyphName);
-
-          if (glyphId > 0 && hasGlyph(glyphId)) {
-            charCodeToGlyphId[i] = glyphId;
-          }
-        }
-      }
-    }
-
-    if (charCodeToGlyphId.length === 0) {
-      charCodeToGlyphId[0] = 0;
-    }
-
-    let glyphZeroId = numGlyphsOut - 1;
-
-    if (!dupFirstEntry) {
-      glyphZeroId = 0;
-    }
-
-    if (!properties.cssFontInfo) {
-      const newMapping = adjustMapping(charCodeToGlyphId, hasGlyph, glyphZeroId);
-      this.toFontChar = newMapping.toFontChar;
-      tables.cmap = {
-        tag: "cmap",
-        data: createCmapTable(newMapping.charCodeToGlyphId, numGlyphsOut)
-      };
-
-      if (!tables["OS/2"] || !validateOS2Table(tables["OS/2"], font)) {
-        tables["OS/2"] = {
-          tag: "OS/2",
-          data: createOS2Table(properties, newMapping.charCodeToGlyphId, metricsOverride)
-        };
-      }
-    }
-
-    if (!isTrueType) {
-      try {
-        cffFile = new _stream.Stream(tables["CFF "].data);
-        const parser = new _cff_parser.CFFParser(cffFile, properties, _fonts_utils.SEAC_ANALYSIS_ENABLED);
-        cff = parser.parse();
-        cff.duplicateFirstGlyph();
-        const compiler = new _cff_parser.CFFCompiler(cff);
-        tables["CFF "].data = compiler.compile();
-      } catch (e) {
-        (0, _util.warn)("Failed to compile font " + properties.loadedName);
-      }
-    }
-
-    if (!tables.name) {
-      tables.name = {
-        tag: "name",
-        data: createNameTable(this.name)
-      };
-    } else {
-      const namePrototype = readNameTable(tables.name);
-      tables.name.data = createNameTable(name, namePrototype);
-      this.psName = namePrototype[0][6] || null;
-    }
-
-    const builder = new _opentype_file_builder.OpenTypeFileBuilder(header.version);
-
-    for (const tableTag in tables) {
-      builder.addTable(tableTag, tables[tableTag].data);
-    }
-
-    return builder.toArray();
-  }
-
-  convert(fontName, font, properties) {
-    properties.fixedPitch = false;
-
-    if (properties.builtInEncoding) {
-      adjustToUnicode(properties, properties.builtInEncoding);
-    }
-
-    let glyphZeroId = 1;
-
-    if (font instanceof _cff_font.CFFFont) {
-      glyphZeroId = font.numGlyphs - 1;
-    }
-
-    const mapping = font.getGlyphMapping(properties);
-    let newMapping = null;
-    let newCharCodeToGlyphId = mapping;
-
-    if (!properties.cssFontInfo) {
-      newMapping = adjustMapping(mapping, font.hasGlyphId.bind(font), glyphZeroId);
-      this.toFontChar = newMapping.toFontChar;
-      newCharCodeToGlyphId = newMapping.charCodeToGlyphId;
-    }
-
-    const numGlyphs = font.numGlyphs;
-
-    function getCharCodes(charCodeToGlyphId, glyphId) {
-      let charCodes = null;
-
-      for (const charCode in charCodeToGlyphId) {
-        if (glyphId === charCodeToGlyphId[charCode]) {
-          if (!charCodes) {
-            charCodes = [];
-          }
-
-          charCodes.push(charCode | 0);
-        }
-      }
-
-      return charCodes;
-    }
-
-    function createCharCode(charCodeToGlyphId, glyphId) {
-      for (const charCode in charCodeToGlyphId) {
-        if (glyphId === charCodeToGlyphId[charCode]) {
-          return charCode | 0;
-        }
-      }
-
-      newMapping.charCodeToGlyphId[newMapping.nextAvailableFontCharCode] = glyphId;
-      return newMapping.nextAvailableFontCharCode++;
-    }
-
-    const seacs = font.seacs;
-
-    if (newMapping && _fonts_utils.SEAC_ANALYSIS_ENABLED && seacs && seacs.length) {
-      const matrix = properties.fontMatrix || _util.FONT_IDENTITY_MATRIX;
-      const charset = font.getCharset();
-      const seacMap = Object.create(null);
-
-      for (let glyphId in seacs) {
-        glyphId |= 0;
-        const seac = seacs[glyphId];
-        const baseGlyphName = _encodings.StandardEncoding[seac[2]];
-        const accentGlyphName = _encodings.StandardEncoding[seac[3]];
-        const baseGlyphId = charset.indexOf(baseGlyphName);
-        const accentGlyphId = charset.indexOf(accentGlyphName);
-
-        if (baseGlyphId < 0 || accentGlyphId < 0) {
-          continue;
-        }
-
-        const accentOffset = {
-          x: seac[0] * matrix[0] + seac[1] * matrix[2] + matrix[4],
-          y: seac[0] * matrix[1] + seac[1] * matrix[3] + matrix[5]
-        };
-        const charCodes = getCharCodes(mapping, glyphId);
-
-        if (!charCodes) {
-          continue;
-        }
-
-        for (let i = 0, ii = charCodes.length; i < ii; i++) {
-          const charCode = charCodes[i];
-          const charCodeToGlyphId = newMapping.charCodeToGlyphId;
-          const baseFontCharCode = createCharCode(charCodeToGlyphId, baseGlyphId);
-          const accentFontCharCode = createCharCode(charCodeToGlyphId, accentGlyphId);
-          seacMap[charCode] = {
-            baseFontCharCode,
-            accentFontCharCode,
-            accentOffset
-          };
-        }
-      }
-
-      properties.seacMap = seacMap;
-    }
-
-    const unitsPerEm = 1 / (properties.fontMatrix || _util.FONT_IDENTITY_MATRIX)[0];
-    const builder = new _opentype_file_builder.OpenTypeFileBuilder("\x4F\x54\x54\x4F");
-    builder.addTable("CFF ", font.data);
-    builder.addTable("OS/2", createOS2Table(properties, newCharCodeToGlyphId));
-    builder.addTable("cmap", createCmapTable(newCharCodeToGlyphId, numGlyphs));
-    builder.addTable("head", "\x00\x01\x00\x00" + "\x00\x00\x10\x00" + "\x00\x00\x00\x00" + 
"\x5F\x0F\x3C\xF5" + "\x00\x00" + safeString16(unitsPerEm) + "\x00\x00\x00\x00\x9e\x0b\x7e\x27" + 
"\x00\x00\x00\x00\x9e\x0b\x7e\x27" + "\x00\x00" + safeString16(properties.descent) + "\x0F\xFF" + 
safeString16(properties.ascent) + string16(properties.italicAngle ? 2 : 0) + "\x00\x11" + "\x00\x00" + 
"\x00\x00" + "\x00\x00");
-    builder.addTable("hhea", "\x00\x01\x00\x00" + safeString16(properties.ascent) + 
safeString16(properties.descent) + "\x00\x00" + "\xFF\xFF" + "\x00\x00" + "\x00\x00" + "\x00\x00" + 
safeString16(properties.capHeight) + safeString16(Math.tan(properties.italicAngle) * properties.xHeight) + 
"\x00\x00" + "\x00\x00" + "\x00\x00" + "\x00\x00" + "\x00\x00" + "\x00\x00" + string16(numGlyphs));
-    builder.addTable("hmtx", function fontFieldsHmtx() {
-      const charstrings = font.charstrings;
-      const cffWidths = font.cff ? font.cff.widths : null;
-      let hmtx = "\x00\x00\x00\x00";
-
-      for (let i = 1, ii = numGlyphs; i < ii; i++) {
-        let width = 0;
-
-        if (charstrings) {
-          const charstring = charstrings[i - 1];
-          width = "width" in charstring ? charstring.width : 0;
-        } else if (cffWidths) {
-          width = Math.ceil(cffWidths[i] || 0);
-        }
-
-        hmtx += string16(width) + string16(0);
-      }
-
-      return hmtx;
-    }());
-    builder.addTable("maxp", "\x00\x00\x50\x00" + string16(numGlyphs));
-    builder.addTable("name", createNameTable(fontName));
-    builder.addTable("post", createPostTable(properties));
-    return builder.toArray();
-  }
-
-  get spaceWidth() {
-    const possibleSpaceReplacements = ["space", "minus", "one", "i", "I"];
-    let width;
-
-    for (let i = 0, ii = possibleSpaceReplacements.length; i < ii; i++) {
-      const glyphName = possibleSpaceReplacements[i];
-
-      if (glyphName in this.widths) {
-        width = this.widths[glyphName];
-        break;
-      }
-
-      const glyphsUnicodeMap = (0, _glyphlist.getGlyphsUnicode)();
-      const glyphUnicode = glyphsUnicodeMap[glyphName];
-      let charcode = 0;
-
-      if (this.composite && this.cMap.contains(glyphUnicode)) {
-        charcode = this.cMap.lookup(glyphUnicode);
-      }
-
-      if (!charcode && this.toUnicode) {
-        charcode = this.toUnicode.charCodeOf(glyphUnicode);
-      }
-
-      if (charcode <= 0) {
-        charcode = glyphUnicode;
-      }
-
-      width = this.widths[charcode];
-
-      if (width) {
-        break;
-      }
-    }
-
-    width = width || this.defaultWidth;
-    return (0, _util.shadow)(this, "spaceWidth", width);
-  }
-
-  _charToGlyph(charcode, isSpace = false) {
-    let fontCharCode, width, operatorListId;
-    let widthCode = charcode;
-
-    if (this.cMap && this.cMap.contains(charcode)) {
-      widthCode = this.cMap.lookup(charcode);
-    }
-
-    width = this.widths[widthCode];
-    width = (0, _util.isNum)(width) ? width : this.defaultWidth;
-    const vmetric = this.vmetrics && this.vmetrics[widthCode];
-    let unicode = this.toUnicode.get(charcode) || charcode;
-
-    if (typeof unicode === "number") {
-      unicode = String.fromCharCode(unicode);
-    }
-
-    let isInFont = this.toFontChar[charcode] !== undefined;
-    fontCharCode = this.toFontChar[charcode] || charcode;
-
-    if (this.missingFile) {
-      const glyphName = this.differences[charcode] || this.defaultEncoding[charcode];
-
-      if ((glyphName === ".notdef" || glyphName === "") && this.type === "Type1") {
-        fontCharCode = 0x20;
-      }
-
-      fontCharCode = (0, _unicode.mapSpecialUnicodeValues)(fontCharCode);
-    }
-
-    if (this.isType3Font) {
-      operatorListId = fontCharCode;
-    }
-
-    let accent = null;
-
-    if (this.seacMap && this.seacMap[charcode]) {
-      isInFont = true;
-      const seac = this.seacMap[charcode];
-      fontCharCode = seac.baseFontCharCode;
-      accent = {
-        fontChar: String.fromCodePoint(seac.accentFontCharCode),
-        offset: seac.accentOffset
-      };
-    }
-
-    let fontChar = "";
-
-    if (typeof fontCharCode === "number") {
-      if (fontCharCode <= 0x10ffff) {
-        fontChar = String.fromCodePoint(fontCharCode);
-      } else {
-        (0, _util.warn)(`charToGlyph - invalid fontCharCode: ${fontCharCode}`);
-      }
-    }
-
-    let glyph = this._glyphCache[charcode];
-
-    if (!glyph || !glyph.matchesForCache(charcode, fontChar, unicode, accent, width, vmetric, 
operatorListId, isSpace, isInFont)) {
-      glyph = new Glyph(charcode, fontChar, unicode, accent, width, vmetric, operatorListId, isSpace, 
isInFont);
-      this._glyphCache[charcode] = glyph;
-    }
-
-    return glyph;
-  }
-
-  charsToGlyphs(chars) {
-    let glyphs = this._charsCache[chars];
-
-    if (glyphs) {
-      return glyphs;
-    }
-
-    glyphs = [];
-
-    if (this.cMap) {
-      const c = Object.create(null),
-            ii = chars.length;
-      let i = 0;
-
-      while (i < ii) {
-        this.cMap.readCharCode(chars, i, c);
-        const {
-          charcode,
-          length
-        } = c;
-        i += length;
-
-        const glyph = this._charToGlyph(charcode, length === 1 && chars.charCodeAt(i - 1) === 0x20);
-
-        glyphs.push(glyph);
-      }
-    } else {
-      for (let i = 0, ii = chars.length; i < ii; ++i) {
-        const charcode = chars.charCodeAt(i);
-
-        const glyph = this._charToGlyph(charcode, charcode === 0x20);
-
-        glyphs.push(glyph);
-      }
-    }
-
-    return this._charsCache[chars] = glyphs;
-  }
-
-  getCharPositions(chars) {
-    const positions = [];
-
-    if (this.cMap) {
-      const c = Object.create(null);
-      let i = 0;
-
-      while (i < chars.length) {
-        this.cMap.readCharCode(chars, i, c);
-        const length = c.length;
-        positions.push([i, i + length]);
-        i += length;
-      }
-    } else {
-      for (let i = 0, ii = chars.length; i < ii; ++i) {
-        positions.push([i, i + 1]);
-      }
-    }
-
-    return positions;
-  }
-
-  get glyphCacheValues() {
-    return Object.values(this._glyphCache);
-  }
-
-  encodeString(str) {
-    const buffers = [];
-    const currentBuf = [];
-
-    const hasCurrentBufErrors = () => buffers.length % 2 === 1;
-
-    for (let i = 0, ii = str.length; i < ii; i++) {
-      const unicode = str.codePointAt(i);
-
-      if (unicode > 0xd7ff && (unicode < 0xe000 || unicode > 0xfffd)) {
-        i++;
-      }
-
-      if (this.toUnicode) {
-        const char = String.fromCodePoint(unicode);
-        const charCode = this.toUnicode.charCodeOf(char);
-
-        if (charCode !== -1) {
-          if (hasCurrentBufErrors()) {
-            buffers.push(currentBuf.join(""));
-            currentBuf.length = 0;
-          }
-
-          const charCodeLength = this.cMap ? this.cMap.getCharCodeLength(charCode) : 1;
-
-          for (let j = charCodeLength - 1; j >= 0; j--) {
-            currentBuf.push(String.fromCharCode(charCode >> 8 * j & 0xff));
-          }
-
-          continue;
-        }
-      }
-
-      if (!hasCurrentBufErrors()) {
-        buffers.push(currentBuf.join(""));
-        currentBuf.length = 0;
-      }
-
-      currentBuf.push(String.fromCodePoint(unicode));
-    }
-
-    buffers.push(currentBuf.join(""));
-    return buffers;
-  }
-
-}
-
-exports.Font = Font;
-
-class ErrorFont {
-  constructor(error) {
-    this.error = error;
-    this.loadedName = "g_font_error";
-    this.missingFile = true;
-  }
-
-  charsToGlyphs() {
-    return [];
-  }
-
-  encodeString(chars) {
-    return [chars];
-  }
-
-  exportData(extraProperties = false) {
-    return {
-      error: this.error
-    };
-  }
-
-}
-
-exports.ErrorFont = ErrorFont;
-
-/***/ }),
-/* 35 */
-/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
-
-
-
-Object.defineProperty(exports, "__esModule", ({
-  value: true
-}));
-exports.CFFTopDict = exports.CFFStrings = exports.CFFStandardStrings = exports.CFFPrivateDict = 
exports.CFFParser = exports.CFFIndex = exports.CFFHeader = exports.CFFFDSelect = exports.CFFCompiler = 
exports.CFFCharset = exports.CFF = void 0;
-
-var _util = __w_pdfjs_require__(2);
-
-var _charsets = __w_pdfjs_require__(36);
-
-var _encodings = __w_pdfjs_require__(37);
-
-const MAX_SUBR_NESTING = 10;
-const CFFStandardStrings = [".notdef", "space", "exclam", "quotedbl", "numbersign", "dollar", "percent", 
"ampersand", "quoteright", "parenleft", "parenright", "asterisk", "plus", "comma", "hyphen", "period", 
"slash", "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "colon", 
"semicolon", "less", "equal", "greater", "question", "at", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", 
"K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "bracketleft", "backslash", 
"bracketright", "asciicircum", "underscore", "quoteleft", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", 
"k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "braceleft", "bar", 
"braceright", "asciitilde", "exclamdown", "cent", "sterling", "fraction", "yen", "florin", "section", 
"currency", "quotesingle", "quotedblleft", "guillemotleft", "guilsinglleft", "guilsinglright", "fi", "fl", 
"endash", "dagger", "daggerdbl", "periodcentered", "parag
 raph", "bullet", "quotesinglbase", "quotedblbase", "quotedblright", "guillemotright", "ellipsis", 
"perthousand", "questiondown", "grave", "acute", "circumflex", "tilde", "macron", "breve", "dotaccent", 
"dieresis", "ring", "cedilla", "hungarumlaut", "ogonek", "caron", "emdash", "AE", "ordfeminine", "Lslash", 
"Oslash", "OE", "ordmasculine", "ae", "dotlessi", "lslash", "oslash", "oe", "germandbls", "onesuperior", 
"logicalnot", "mu", "trademark", "Eth", "onehalf", "plusminus", "Thorn", "onequarter", "divide", "brokenbar", 
"degree", "thorn", "threequarters", "twosuperior", "registered", "minus", "eth", "multiply", "threesuperior", 
"copyright", "Aacute", "Acircumflex", "Adieresis", "Agrave", "Aring", "Atilde", "Ccedilla", "Eacute", 
"Ecircumflex", "Edieresis", "Egrave", "Iacute", "Icircumflex", "Idieresis", "Igrave", "Ntilde", "Oacute", 
"Ocircumflex", "Odieresis", "Ograve", "Otilde", "Scaron", "Uacute", "Ucircumflex", "Udieresis", "Ugrave", 
"Yacute", "Ydieresis", "Zcaron", "aacute", "acirc
 umflex", "adieresis", "agrave", "aring", "atilde", "ccedilla", "eacute", "ecircumflex", "edieresis", 
"egrave", "iacute", "icircumflex", "idieresis", "igrave", "ntilde", "oacute", "ocircumflex", "odieresis", 
"ograve", "otilde", "scaron", "uacute", "ucircumflex", "udieresis", "ugrave", "yacute", "ydieresis", 
"zcaron", "exclamsmall", "Hungarumlautsmall", "dollaroldstyle", "dollarsuperior", "ampersandsmall", 
"Acutesmall", "parenleftsuperior", "parenrightsuperior", "twodotenleader", "onedotenleader", "zerooldstyle", 
"oneoldstyle", "twooldstyle", "threeoldstyle", "fouroldstyle", "fiveoldstyle", "sixoldstyle", 
"sevenoldstyle", "eightoldstyle", "nineoldstyle", "commasuperior", "threequartersemdash", "periodsuperior", 
"questionsmall", "asuperior", "bsuperior", "centsuperior", "dsuperior", "esuperior", "isuperior", 
"lsuperior", "msuperior", "nsuperior", "osuperior", "rsuperior", "ssuperior", "tsuperior", "ff", "ffi", 
"ffl", "parenleftinferior", "parenrightinferior", "Circumflexsmall", "hyphen
 superior", "Gravesmall", "Asmall", "Bsmall", "Csmall", "Dsmall", "Esmall", "Fsmall", "Gsmall", "Hsmall", 
"Ismall", "Jsmall", "Ksmall", "Lsmall", "Msmall", "Nsmall", "Osmall", "Psmall", "Qsmall", "Rsmall", "Ssmall", 
"Tsmall", "Usmall", "Vsmall", "Wsmall", "Xsmall", "Ysmall", "Zsmall", "colonmonetary", "onefitted", "rupiah", 
"Tildesmall", "exclamdownsmall", "centoldstyle", "Lslashsmall", "Scaronsmall", "Zcaronsmall", 
"Dieresissmall", "Brevesmall", "Caronsmall", "Dotaccentsmall", "Macronsmall", "figuredash", "hypheninferior", 
"Ogoneksmall", "Ringsmall", "Cedillasmall", "questiondownsmall", "oneeighth", "threeeighths", "fiveeighths", 
"seveneighths", "onethird", "twothirds", "zerosuperior", "foursuperior", "fivesuperior", "sixsuperior", 
"sevensuperior", "eightsuperior", "ninesuperior", "zeroinferior", "oneinferior", "twoinferior", 
"threeinferior", "fourinferior", "fiveinferior", "sixinferior", "seveninferior", "eightinferior", 
"nineinferior", "centinferior", "dollarinferior", "periodinfe
 rior", "commainferior", "Agravesmall", "Aacutesmall", "Acircumflexsmall", "Atildesmall", "Adieresissmall", 
"Aringsmall", "AEsmall", "Ccedillasmall", "Egravesmall", "Eacutesmall", "Ecircumflexsmall", "Edieresissmall", 
"Igravesmall", "Iacutesmall", "Icircumflexsmall", "Idieresissmall", "Ethsmall", "Ntildesmall", "Ogravesmall", 
"Oacutesmall", "Ocircumflexsmall", "Otildesmall", "Odieresissmall", "OEsmall", "Oslashsmall", "Ugravesmall", 
"Uacutesmall", "Ucircumflexsmall", "Udieresissmall", "Yacutesmall", "Thornsmall", "Ydieresissmall", 
"001.000", "001.001", "001.002", "001.003", "Black", "Bold", "Book", "Light", "Medium", "Regular", "Roman", 
"Semibold"];
-exports.CFFStandardStrings = CFFStandardStrings;
-const NUM_STANDARD_CFF_STRINGS = 391;
-
-const CFFParser = function CFFParserClosure() {
-  const CharstringValidationData = [null, {
-    id: "hstem",
-    min: 2,
-    stackClearing: true,
-    stem: true
-  }, null, {
-    id: "vstem",
-    min: 2,
-    stackClearing: true,
-    stem: true
-  }, {
-    id: "vmoveto",
-    min: 1,
-    stackClearing: true
-  }, {
-    id: "rlineto",
-    min: 2,
-    resetStack: true
-  }, {
-    id: "hlineto",
-    min: 1,
-    resetStack: true
-  }, {
-    id: "vlineto",
-    min: 1,
-    resetStack: true
-  }, {
-    id: "rrcurveto",
-    min: 6,
-    resetStack: true
-  }, null, {
-    id: "callsubr",
-    min: 1,
-    undefStack: true
-  }, {
-    id: "return",
-    min: 0,
-    undefStack: true
-  }, null, null, {
-    id: "endchar",
-    min: 0,
-    stackClearing: true
-  }, null, null, null, {
-    id: "hstemhm",
-    min: 2,
-    stackClearing: true,
-    stem: true
-  }, {
-    id: "hintmask",
-    min: 0,
-    stackClearing: true
-  }, {
-    id: "cntrmask",
-    min: 0,
-    stackClearing: true
-  }, {
-    id: "rmoveto",
-    min: 2,
-    stackClearing: true
-  }, {
-    id: "hmoveto",
-    min: 1,
-    stackClearing: true
-  }, {
-    id: "vstemhm",
-    min: 2,
-    stackClearing: true,
-    stem: true
-  }, {
-    id: "rcurveline",
-    min: 8,
-    resetStack: true
-  }, {
-    id: "rlinecurve",
-    min: 8,
-    resetStack: true
-  }, {
-    id: "vvcurveto",
-    min: 4,
-    resetStack: true
-  }, {
-    id: "hhcurveto",
-    min: 4,
-    resetStack: true
-  }, null, {
-    id: "callgsubr",
-    min: 1,
-    undefStack: true
-  }, {
-    id: "vhcurveto",
-    min: 4,
-    resetStack: true
-  }, {
-    id: "hvcurveto",
-    min: 4,
-    resetStack: true
-  }];
-  const CharstringValidationData12 = [null, null, null, {
-    id: "and",
-    min: 2,
-    stackDelta: -1
-  }, {
-    id: "or",
-    min: 2,
-    stackDelta: -1
-  }, {
-    id: "not",
-    min: 1,
-    stackDelta: 0
-  }, null, null, null, {
-    id: "abs",
-    min: 1,
-    stackDelta: 0
-  }, {
-    id: "add",
-    min: 2,
-    stackDelta: -1,
-    stackFn: function stack_div(stack, index) {
-      stack[index - 2] = stack[index - 2] + stack[index - 1];
-    }
-  }, {
-    id: "sub",
-    min: 2,
-    stackDelta: -1,
-    stackFn: function stack_div(stack, index) {
-      stack[index - 2] = stack[index - 2] - stack[index - 1];
-    }
-  }, {
-    id: "div",
-    min: 2,
-    stackDelta: -1,
-    stackFn: function stack_div(stack, index) {
-      stack[index - 2] = stack[index - 2] / stack[index - 1];
-    }
-  }, null, {
-    id: "neg",
-    min: 1,
-    stackDelta: 0,
-    stackFn: function stack_div(stack, index) {
-      stack[index - 1] = -stack[index - 1];
-    }
-  }, {
-    id: "eq",
-    min: 2,
-    stackDelta: -1
-  }, null, null, {
-    id: "drop",
-    min: 1,
-    stackDelta: -1
-  }, null, {
-    id: "put",
-    min: 2,
-    stackDelta: -2
-  }, {
-    id: "get",
-    min: 1,
-    stackDelta: 0
-  }, {
-    id: "ifelse",
-    min: 4,
-    stackDelta: -3
-  }, {
-    id: "random",
-    min: 0,
-    stackDelta: 1
-  }, {
-    id: "mul",
-    min: 2,
-    stackDelta: -1,
-    stackFn: function stack_div(stack, index) {
-      stack[index - 2] = stack[index - 2] * stack[index - 1];
-    }
-  }, null, {
-    id: "sqrt",
-    min: 1,
-    stackDelta: 0
-  }, {
-    id: "dup",
-    min: 1,
-    stackDelta: 1
-  }, {
-    id: "exch",
-    min: 2,
-    stackDelta: 0
-  }, {
-    id: "index",
-    min: 2,
-    stackDelta: 0
-  }, {
-    id: "roll",
-    min: 3,
-    stackDelta: -2
-  }, null, null, null, {
-    id: "hflex",
-    min: 7,
-    resetStack: true
-  }, {
-    id: "flex",
-    min: 13,
-    resetStack: true
-  }, {
-    id: "hflex1",
-    min: 9,
-    resetStack: true
-  }, {
-    id: "flex1",
-    min: 11,
-    resetStack: true
-  }];
-
-  class CFFParser {
-    constructor(file, properties, seacAnalysisEnabled) {
-      this.bytes = file.getBytes();
-      this.properties = properties;
-      this.seacAnalysisEnabled = !!seacAnalysisEnabled;
-    }
-
-    parse() {
-      const properties = this.properties;
-      const cff = new CFF();
-      this.cff = cff;
-      const header = this.parseHeader();
-      const nameIndex = this.parseIndex(header.endPos);
-      const topDictIndex = this.parseIndex(nameIndex.endPos);
-      const stringIndex = this.parseIndex(topDictIndex.endPos);
-      const globalSubrIndex = this.parseIndex(stringIndex.endPos);
-      const topDictParsed = this.parseDict(topDictIndex.obj.get(0));
-      const topDict = this.createDict(CFFTopDict, topDictParsed, cff.strings);
-      cff.header = header.obj;
-      cff.names = this.parseNameIndex(nameIndex.obj);
-      cff.strings = this.parseStringIndex(stringIndex.obj);
-      cff.topDict = topDict;
-      cff.globalSubrIndex = globalSubrIndex.obj;
-      this.parsePrivateDict(cff.topDict);
-      cff.isCIDFont = topDict.hasName("ROS");
-      const charStringOffset = topDict.getByName("CharStrings");
-      const charStringIndex = this.parseIndex(charStringOffset).obj;
-      const fontMatrix = topDict.getByName("FontMatrix");
-
-      if (fontMatrix) {
-        properties.fontMatrix = fontMatrix;
-      }
-
-      const fontBBox = topDict.getByName("FontBBox");
-
-      if (fontBBox) {
-        properties.ascent = Math.max(fontBBox[3], fontBBox[1]);
-        properties.descent = Math.min(fontBBox[1], fontBBox[3]);
-        properties.ascentScaled = true;
-      }
-
-      let charset, encoding;
-
-      if (cff.isCIDFont) {
-        const fdArrayIndex = this.parseIndex(topDict.getByName("FDArray")).obj;
-
-        for (let i = 0, ii = fdArrayIndex.count; i < ii; ++i) {
-          const dictRaw = fdArrayIndex.get(i);
-          const fontDict = this.createDict(CFFTopDict, this.parseDict(dictRaw), cff.strings);
-          this.parsePrivateDict(fontDict);
-          cff.fdArray.push(fontDict);
-        }
-
-        encoding = null;
-        charset = this.parseCharsets(topDict.getByName("charset"), charStringIndex.count, cff.strings, true);
-        cff.fdSelect = this.parseFDSelect(topDict.getByName("FDSelect"), charStringIndex.count);
-      } else {
-        charset = this.parseCharsets(topDict.getByName("charset"), charStringIndex.count, cff.strings, 
false);
-        encoding = this.parseEncoding(topDict.getByName("Encoding"), properties, cff.strings, 
charset.charset);
-      }
-
-      cff.charset = charset;
-      cff.encoding = encoding;
-      const charStringsAndSeacs = this.parseCharStrings({
-        charStrings: charStringIndex,
-        localSubrIndex: topDict.privateDict.subrsIndex,
-        globalSubrIndex: globalSubrIndex.obj,
-        fdSelect: cff.fdSelect,
-        fdArray: cff.fdArray,
-        privateDict: topDict.privateDict
-      });
-      cff.charStrings = charStringsAndSeacs.charStrings;
-      cff.seacs = charStringsAndSeacs.seacs;
-      cff.widths = charStringsAndSeacs.widths;
-      return cff;
-    }
-
-    parseHeader() {
-      let bytes = this.bytes;
-      const bytesLength = bytes.length;
-      let offset = 0;
-
-      while (offset < bytesLength && bytes[offset] !== 1) {
-        ++offset;
-      }
-
-      if (offset >= bytesLength) {
-        throw new _util.FormatError("Invalid CFF header");
-      }
-
-      if (offset !== 0) {
-        (0, _util.info)("cff data is shifted");
-        bytes = bytes.subarray(offset);
-        this.bytes = bytes;
-      }
-
-      const major = bytes[0];
-      const minor = bytes[1];
-      const hdrSize = bytes[2];
-      const offSize = bytes[3];
-      const header = new CFFHeader(major, minor, hdrSize, offSize);
-      return {
-        obj: header,
-        endPos: hdrSize
-      };
-    }
-
-    parseDict(dict) {
-      let pos = 0;
-
-      function parseOperand() {
-        let value = dict[pos++];
-
-        if (value === 30) {
-          return parseFloatOperand();
-        } else if (value === 28) {
-          value = dict[pos++];
-          value = (value << 24 | dict[pos++] << 16) >> 16;
-          return value;
-        } else if (value === 29) {
-          value = dict[pos++];
-          value = value << 8 | dict[pos++];
-          value = value << 8 | dict[pos++];
-          value = value << 8 | dict[pos++];
-          return value;
-        } else if (value >= 32 && value <= 246) {
-          return value - 139;
-        } else if (value >= 247 && value <= 250) {
-          return (value - 247) * 256 + dict[pos++] + 108;
-        } else if (value >= 251 && value <= 254) {
-          return -((value - 251) * 256) - dict[pos++] - 108;
-        }
-
-        (0, _util.warn)('CFFParser_parseDict: "' + value + '" is a reserved command.');
-        return NaN;
-      }
-
-      function parseFloatOperand() {
-        let str = "";
-        const eof = 15;
-        const lookup = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", ".", "E", "E-", null, "-"];
-        const length = dict.length;
-
-        while (pos < length) {
-          const b = dict[pos++];
-          const b1 = b >> 4;
-          const b2 = b & 15;
-
-          if (b1 === eof) {
-            break;
-          }
-
-          str += lookup[b1];
-
-          if (b2 === eof) {
-            break;
-          }
-
-          str += lookup[b2];
-        }
-
-        return parseFloat(str);
-      }
-
-      let operands = [];
-      const entries = [];
-      pos = 0;
-      const end = dict.length;
-
-      while (pos < end) {
-        let b = dict[pos];
-
-        if (b <= 21) {
-          if (b === 12) {
-            b = b << 8 | dict[++pos];
-          }
-
-          entries.push([b, operands]);
-          operands = [];
-          ++pos;
-        } else {
-          operands.push(parseOperand());
-        }
-      }
-
-      return entries;
-    }
-
-    parseIndex(pos) {
-      const cffIndex = new CFFIndex();
-      const bytes = this.bytes;
-      const count = bytes[pos++] << 8 | bytes[pos++];
-      const offsets = [];
-      let end = pos;
-      let i, ii;
-
-      if (count !== 0) {
-        const offsetSize = bytes[pos++];
-        const startPos = pos + (count + 1) * offsetSize - 1;
-
-        for (i = 0, ii = count + 1; i < ii; ++i) {
-          let offset = 0;
-
-          for (let j = 0; j < offsetSize; ++j) {
-            offset <<= 8;
-            offset += bytes[pos++];
-          }
-
-          offsets.push(startPos + offset);
-        }
-
-        end = offsets[count];
-      }
-
-      for (i = 0, ii = offsets.length - 1; i < ii; ++i) {
-        const offsetStart = offsets[i];
-        const offsetEnd = offsets[i + 1];
-        cffIndex.add(bytes.subarray(offsetStart, offsetEnd));
-      }
-
-      return {
-        obj: cffIndex,
-        endPos: end
-      };
-    }
-
-    parseNameIndex(index) {
-      const names = [];
-
-      for (let i = 0, ii = index.count; i < ii; ++i) {
-        const name = index.get(i);
-        names.push((0, _util.bytesToString)(name));
-      }
-
-      return names;
-    }
-
-    parseStringIndex(index) {
-      const strings = new CFFStrings();
-
-      for (let i = 0, ii = index.count; i < ii; ++i) {
-        const data = index.get(i);
-        strings.add((0, _util.bytesToString)(data));
-      }
-
-      return strings;
-    }
-
-    createDict(Type, dict, strings) {
-      const cffDict = new Type(strings);
-
-      for (let i = 0, ii = dict.length; i < ii; ++i) {
-        const pair = dict[i];
-        const key = pair[0];
-        const value = pair[1];
-        cffDict.setByKey(key, value);
-      }
-
-      return cffDict;
-    }
-
-    parseCharString(state, data, localSubrIndex, globalSubrIndex) {
-      if (!data || state.callDepth > MAX_SUBR_NESTING) {
-        return false;
-      }
-
-      let stackSize = state.stackSize;
-      const stack = state.stack;
-      const length = data.length;
-
-      for (let j = 0; j < length;) {
-        const value = data[j++];
-        let validationCommand = null;
-
-        if (value === 12) {
-          const q = data[j++];
-
-          if (q === 0) {
-            data[j - 2] = 139;
-            data[j - 1] = 22;
-            stackSize = 0;
-          } else {
-            validationCommand = CharstringValidationData12[q];
-          }
-        } else if (value === 28) {
-          stack[stackSize] = (data[j] << 24 | data[j + 1] << 16) >> 16;
-          j += 2;
-          stackSize++;
-        } else if (value === 14) {
-          if (stackSize >= 4) {
-            stackSize -= 4;
-
-            if (this.seacAnalysisEnabled) {
-              state.seac = stack.slice(stackSize, stackSize + 4);
-              return false;
-            }
-          }
-
-          validationCommand = CharstringValidationData[value];
-        } else if (value >= 32 && value <= 246) {
-          stack[stackSize] = value - 139;
-          stackSize++;
-        } else if (value >= 247 && value <= 254) {
-          stack[stackSize] = value < 251 ? (value - 247 << 8) + data[j] + 108 : -(value - 251 << 8) - 
data[j] - 108;
-          j++;
-          stackSize++;
-        } else if (value === 255) {
-          stack[stackSize] = (data[j] << 24 | data[j + 1] << 16 | data[j + 2] << 8 | data[j + 3]) / 65536;
-          j += 4;
-          stackSize++;
-        } else if (value === 19 || value === 20) {
-          state.hints += stackSize >> 1;
-          j += state.hints + 7 >> 3;
-          stackSize %= 2;
-          validationCommand = CharstringValidationData[value];
-        } else if (value === 10 || value === 29) {
-          let subrsIndex;
-
-          if (value === 10) {
-            subrsIndex = localSubrIndex;
-          } else {
-            subrsIndex = globalSubrIndex;
-          }
-
-          if (!subrsIndex) {
-            validationCommand = CharstringValidationData[value];
-            (0, _util.warn)("Missing subrsIndex for " + validationCommand.id);
-            return false;
-          }
-
-          let bias = 32768;
-
-          if (subrsIndex.count < 1240) {
-            bias = 107;
-          } else if (subrsIndex.count < 33900) {
-            bias = 1131;
-          }
-
-          const subrNumber = stack[--stackSize] + bias;
-
-          if (subrNumber < 0 || subrNumber >= subrsIndex.count || isNaN(subrNumber)) {
-            validationCommand = CharstringValidationData[value];
-            (0, _util.warn)("Out of bounds subrIndex for " + validationCommand.id);
-            return false;
-          }
-
-          state.stackSize = stackSize;
-          state.callDepth++;
-          const valid = this.parseCharString(state, subrsIndex.get(subrNumber), localSubrIndex, 
globalSubrIndex);
-
-          if (!valid) {
-            return false;
-          }
-
-          state.callDepth--;
-          stackSize = state.stackSize;
-          continue;
-        } else if (value === 11) {
-          state.stackSize = stackSize;
-          return true;
-        } else if (value === 0 && j === data.length) {
-          data[j - 1] = 14;
-          validationCommand = CharstringValidationData[14];
-        } else {
-          validationCommand = CharstringValidationData[value];
-        }
-
-        if (validationCommand) {
-          if (validationCommand.stem) {
-            state.hints += stackSize >> 1;
-
-            if (value === 3 || value === 23) {
-              state.hasVStems = true;
-            } else if (state.hasVStems && (value === 1 || value === 18)) {
-              (0, _util.warn)("CFF stem hints are in wrong order");
-              data[j - 1] = value === 1 ? 3 : 23;
-            }
-          }
-
-          if ("min" in validationCommand) {
-            if (!state.undefStack && stackSize < validationCommand.min) {
-              (0, _util.warn)("Not enough parameters for " + validationCommand.id + "; actual: " + stackSize 
+ ", expected: " + validationCommand.min);
-
-              if (stackSize === 0) {
-                data[j - 1] = 14;
-                return true;
-              }
-
-              return false;
-            }
-          }
-
-          if (state.firstStackClearing && validationCommand.stackClearing) {
-            state.firstStackClearing = false;
-            stackSize -= validationCommand.min;
-
-            if (stackSize >= 2 && validationCommand.stem) {
-              stackSize %= 2;
-            } else if (stackSize > 1) {
-              (0, _util.warn)("Found too many parameters for stack-clearing command");
-            }
-
-            if (stackSize > 0) {
-              state.width = stack[stackSize - 1];
-            }
-          }
-
-          if ("stackDelta" in validationCommand) {
-            if ("stackFn" in validationCommand) {
-              validationCommand.stackFn(stack, stackSize);
-            }
-
-            stackSize += validationCommand.stackDelta;
-          } else if (validationCommand.stackClearing) {
-            stackSize = 0;
-          } else if (validationCommand.resetStack) {
-            stackSize = 0;
-            state.undefStack = false;
-          } else if (validationCommand.undefStack) {
-            stackSize = 0;
-            state.undefStack = true;
-            state.firstStackClearing = false;
-          }
-        }
-      }
-
-      state.stackSize = stackSize;
-      return true;
-    }
-
-    parseCharStrings({
-      charStrings,
-      localSubrIndex,
-      globalSubrIndex,
-      fdSelect,
-      fdArray,
-      privateDict
-    }) {
-      const seacs = [];
-      const widths = [];
-      const count = charStrings.count;
-
-      for (let i = 0; i < count; i++) {
-        const charstring = charStrings.get(i);
-        const state = {
-          callDepth: 0,
-          stackSize: 0,
-          stack: [],
-          undefStack: true,
-          hints: 0,
-          firstStackClearing: true,
-          seac: null,
-          width: null,
-          hasVStems: false
-        };
-        let valid = true;
-        let localSubrToUse = null;
-        let privateDictToUse = privateDict;
-
-        if (fdSelect && fdArray.length) {
-          const fdIndex = fdSelect.getFDIndex(i);
-
-          if (fdIndex === -1) {
-            (0, _util.warn)("Glyph index is not in fd select.");
-            valid = false;
-          }
-
-          if (fdIndex >= fdArray.length) {
-            (0, _util.warn)("Invalid fd index for glyph index.");
-            valid = false;
-          }
-
-          if (valid) {
-            privateDictToUse = fdArray[fdIndex].privateDict;
-            localSubrToUse = privateDictToUse.subrsIndex;
-          }
-        } else if (localSubrIndex) {
-          localSubrToUse = localSubrIndex;
-        }
-
-        if (valid) {
-          valid = this.parseCharString(state, charstring, localSubrToUse, globalSubrIndex);
-        }
-
-        if (state.width !== null) {
-          const nominalWidth = privateDictToUse.getByName("nominalWidthX");
-          widths[i] = nominalWidth + state.width;
-        } else {
-          const defaultWidth = privateDictToUse.getByName("defaultWidthX");
-          widths[i] = defaultWidth;
-        }
-
-        if (state.seac !== null) {
-          seacs[i] = state.seac;
-        }
-
-        if (!valid) {
-          charStrings.set(i, new Uint8Array([14]));
-        }
-      }
-
-      return {
-        charStrings,
-        seacs,
-        widths
-      };
-    }
-
-    emptyPrivateDictionary(parentDict) {
-      const privateDict = this.createDict(CFFPrivateDict, [], parentDict.strings);
-      parentDict.setByKey(18, [0, 0]);
-      parentDict.privateDict = privateDict;
-    }
-
-    parsePrivateDict(parentDict) {
-      if (!parentDict.hasName("Private")) {
-        this.emptyPrivateDictionary(parentDict);
-        return;
-      }
-
-      const privateOffset = parentDict.getByName("Private");
-
-      if (!Array.isArray(privateOffset) || privateOffset.length !== 2) {
-        parentDict.removeByName("Private");
-        return;
-      }
-
-      const size = privateOffset[0];
-      const offset = privateOffset[1];
-
-      if (size === 0 || offset >= this.bytes.length) {
-        this.emptyPrivateDictionary(parentDict);
-        return;
-      }
-
-      const privateDictEnd = offset + size;
-      const dictData = this.bytes.subarray(offset, privateDictEnd);
-      const dict = this.parseDict(dictData);
-      const privateDict = this.createDict(CFFPrivateDict, dict, parentDict.strings);
-      parentDict.privateDict = privateDict;
-
-      if (!privateDict.getByName("Subrs")) {
-        return;
-      }
-
-      const subrsOffset = privateDict.getByName("Subrs");
-      const relativeOffset = offset + subrsOffset;
-
-      if (subrsOffset === 0 || relativeOffset >= this.bytes.length) {
-        this.emptyPrivateDictionary(parentDict);
-        return;
-      }
-
-      const subrsIndex = this.parseIndex(relativeOffset);
-      privateDict.subrsIndex = subrsIndex.obj;
-    }
-
-    parseCharsets(pos, length, strings, cid) {
-      if (pos === 0) {
-        return new CFFCharset(true, CFFCharsetPredefinedTypes.ISO_ADOBE, _charsets.ISOAdobeCharset);
-      } else if (pos === 1) {
-        return new CFFCharset(true, CFFCharsetPredefinedTypes.EXPERT, _charsets.ExpertCharset);
-      } else if (pos === 2) {
-        return new CFFCharset(true, CFFCharsetPredefinedTypes.EXPERT_SUBSET, _charsets.ExpertSubsetCharset);
-      }
-
-      const bytes = this.bytes;
-      const start = pos;
-      const format = bytes[pos++];
-      const charset = [cid ? 0 : ".notdef"];
-      let id, count, i;
-      length -= 1;
-
-      switch (format) {
-        case 0:
-          for (i = 0; i < length; i++) {
-            id = bytes[pos++] << 8 | bytes[pos++];
-            charset.push(cid ? id : strings.get(id));
-          }
-
-          break;
-
-        case 1:
-          while (charset.length <= length) {
-            id = bytes[pos++] << 8 | bytes[pos++];
-            count = bytes[pos++];
-
-            for (i = 0; i <= count; i++) {
-              charset.push(cid ? id++ : strings.get(id++));
-            }
-          }
-
-          break;
-
-        case 2:
-          while (charset.length <= length) {
-            id = bytes[pos++] << 8 | bytes[pos++];
-            count = bytes[pos++] << 8 | bytes[pos++];
-
-            for (i = 0; i <= count; i++) {
-              charset.push(cid ? id++ : strings.get(id++));
-            }
-          }
-
-          break;
-
-        default:
-          throw new _util.FormatError("Unknown charset format");
-      }
-
-      const end = pos;
-      const raw = bytes.subarray(start, end);
-      return new CFFCharset(false, format, charset, raw);
-    }
-
-    parseEncoding(pos, properties, strings, charset) {
-      const encoding = Object.create(null);
-      const bytes = this.bytes;
-      let predefined = false;
-      let format, i, ii;
-      let raw = null;
-
-      function readSupplement() {
-        const supplementsCount = bytes[pos++];
-
-        for (i = 0; i < supplementsCount; i++) {
-          const code = bytes[pos++];
-          const sid = (bytes[pos++] << 8) + (bytes[pos++] & 0xff);
-          encoding[code] = charset.indexOf(strings.get(sid));
-        }
-      }
-
-      if (pos === 0 || pos === 1) {
-        predefined = true;
-        format = pos;
-        const baseEncoding = pos ? _encodings.ExpertEncoding : _encodings.StandardEncoding;
-
-        for (i = 0, ii = charset.length; i < ii; i++) {
-          const index = baseEncoding.indexOf(charset[i]);
-
-          if (index !== -1) {
-            encoding[index] = i;
-          }
-        }
-      } else {
-        const dataStart = pos;
-        format = bytes[pos++];
-
-        switch (format & 0x7f) {
-          case 0:
-            const glyphsCount = bytes[pos++];
-
-            for (i = 1; i <= glyphsCount; i++) {
-              encoding[bytes[pos++]] = i;
-            }
-
-            break;
-
-          case 1:
-            const rangesCount = bytes[pos++];
-            let gid = 1;
-
-            for (i = 0; i < rangesCount; i++) {
-              const start = bytes[pos++];
-              const left = bytes[pos++];
-
-              for (let j = start; j <= start + left; j++) {
-                encoding[j] = gid++;
-              }
-            }
-
-            break;
-
-          default:
-            throw new _util.FormatError(`Unknown encoding format: ${format} in CFF`);
-        }
-
-        const dataEnd = pos;
-
-        if (format & 0x80) {
-          bytes[dataStart] &= 0x7f;
-          readSupplement();
-        }
-
-        raw = bytes.subarray(dataStart, dataEnd);
-      }
-
-      format &= 0x7f;
-      return new CFFEncoding(predefined, format, encoding, raw);
-    }
-
-    parseFDSelect(pos, length) {
-      const bytes = this.bytes;
-      const format = bytes[pos++];
-      const fdSelect = [];
-      let i;
-
-      switch (format) {
-        case 0:
-          for (i = 0; i < length; ++i) {
-            const id = bytes[pos++];
-            fdSelect.push(id);
-          }
-
-          break;
-
-        case 3:
-          const rangesCount = bytes[pos++] << 8 | bytes[pos++];
-
-          for (i = 0; i < rangesCount; ++i) {
-            let first = bytes[pos++] << 8 | bytes[pos++];
-
-            if (i === 0 && first !== 0) {
-              (0, _util.warn)("parseFDSelect: The first range must have a first GID of 0" + " -- trying to 
recover.");
-              first = 0;
-            }
-
-            const fdIndex = bytes[pos++];
-            const next = bytes[pos] << 8 | bytes[pos + 1];
-
-            for (let j = first; j < next; ++j) {
-              fdSelect.push(fdIndex);
-            }
-          }
-
-          pos += 2;
-          break;
-
-        default:
-          throw new _util.FormatError(`parseFDSelect: Unknown format "${format}".`);
-      }
-
-      if (fdSelect.length !== length) {
-        throw new _util.FormatError("parseFDSelect: Invalid font data.");
-      }
-
-      return new CFFFDSelect(format, fdSelect);
-    }
-
-  }
-
-  return CFFParser;
-}();
-
-exports.CFFParser = CFFParser;
-
-class CFF {
-  constructor() {
-    this.header = null;
-    this.names = [];
-    this.topDict = null;
-    this.strings = new CFFStrings();
-    this.globalSubrIndex = null;
-    this.encoding = null;
-    this.charset = null;
-    this.charStrings = null;
-    this.fdArray = [];
-    this.fdSelect = null;
-    this.isCIDFont = false;
-  }
-
-  duplicateFirstGlyph() {
-    if (this.charStrings.count >= 65535) {
-      (0, _util.warn)("Not enough space in charstrings to duplicate first glyph.");
-      return;
-    }
-
-    const glyphZero = this.charStrings.get(0);
-    this.charStrings.add(glyphZero);
-
-    if (this.isCIDFont) {
-      this.fdSelect.fdSelect.push(this.fdSelect.fdSelect[0]);
-    }
-  }
-
-  hasGlyphId(id) {
-    if (id < 0 || id >= this.charStrings.count) {
-      return false;
-    }
-
-    const glyph = this.charStrings.get(id);
-    return glyph.length > 0;
-  }
-
-}
-
-exports.CFF = CFF;
-
-class CFFHeader {
-  constructor(major, minor, hdrSize, offSize) {
-    this.major = major;
-    this.minor = minor;
-    this.hdrSize = hdrSize;
-    this.offSize = offSize;
-  }
-
-}
-
-exports.CFFHeader = CFFHeader;
-
-class CFFStrings {
-  constructor() {
-    this.strings = [];
-  }
-
-  get(index) {
-    if (index >= 0 && index <= NUM_STANDARD_CFF_STRINGS - 1) {
-      return CFFStandardStrings[index];
-    }
-
-    if (index - NUM_STANDARD_CFF_STRINGS <= this.strings.length) {
-      return this.strings[index - NUM_STANDARD_CFF_STRINGS];
-    }
-
-    return CFFStandardStrings[0];
-  }
-
-  getSID(str) {
-    let index = CFFStandardStrings.indexOf(str);
-
-    if (index !== -1) {
-      return index;
-    }
-
-    index = this.strings.indexOf(str);
-
-    if (index !== -1) {
-      return index + NUM_STANDARD_CFF_STRINGS;
-    }
-
-    return -1;
-  }
-
-  add(value) {
-    this.strings.push(value);
-  }
-
-  get count() {
-    return this.strings.length;
-  }
-
-}
-
-exports.CFFStrings = CFFStrings;
-
-class CFFIndex {
-  constructor() {
-    this.objects = [];
-    this.length = 0;
-  }
-
-  add(data) {
-    this.length += data.length;
-    this.objects.push(data);
-  }
-
-  set(index, data) {
-    this.length += data.length - this.objects[index].length;
-    this.objects[index] = data;
-  }
-
-  get(index) {
-    return this.objects[index];
-  }
-
-  get count() {
-    return this.objects.length;
-  }
-
-}
-
-exports.CFFIndex = CFFIndex;
-
-class CFFDict {
-  constructor(tables, strings) {
-    this.keyToNameMap = tables.keyToNameMap;
-    this.nameToKeyMap = tables.nameToKeyMap;
-    this.defaults = tables.defaults;
-    this.types = tables.types;
-    this.opcodes = tables.opcodes;
-    this.order = tables.order;
-    this.strings = strings;
-    this.values = Object.create(null);
-  }
-
-  setByKey(key, value) {
-    if (!(key in this.keyToNameMap)) {
-      return false;
-    }
-
-    const valueLength = value.length;
-
-    if (valueLength === 0) {
-      return true;
-    }
-
-    for (let i = 0; i < valueLength; i++) {
-      if (isNaN(value[i])) {
-        (0, _util.warn)('Invalid CFFDict value: "' + value + '" for key "' + key + '".');
-        return true;
-      }
-    }
-
-    const type = this.types[key];
-
-    if (type === "num" || type === "sid" || type === "offset") {
-      value = value[0];
-    }
-
-    this.values[key] = value;
-    return true;
-  }
-
-  setByName(name, value) {
-    if (!(name in this.nameToKeyMap)) {
-      throw new _util.FormatError(`Invalid dictionary name "${name}"`);
-    }
-
-    this.values[this.nameToKeyMap[name]] = value;
-  }
-
-  hasName(name) {
-    return this.nameToKeyMap[name] in this.values;
-  }
-
-  getByName(name) {
-    if (!(name in this.nameToKeyMap)) {
-      throw new _util.FormatError(`Invalid dictionary name ${name}"`);
-    }
-
-    const key = this.nameToKeyMap[name];
-
-    if (!(key in this.values)) {
-      return this.defaults[key];
-    }
-
-    return this.values[key];
-  }
-
-  removeByName(name) {
-    delete this.values[this.nameToKeyMap[name]];
-  }
-
-  static createTables(layout) {
-    const tables = {
-      keyToNameMap: {},
-      nameToKeyMap: {},
-      defaults: {},
-      types: {},
-      opcodes: {},
-      order: []
-    };
-
-    for (let i = 0, ii = layout.length; i < ii; ++i) {
-      const entry = layout[i];
-      const key = Array.isArray(entry[0]) ? (entry[0][0] << 8) + entry[0][1] : entry[0];
-      tables.keyToNameMap[key] = entry[1];
-      tables.nameToKeyMap[entry[1]] = key;
-      tables.types[key] = entry[2];
-      tables.defaults[key] = entry[3];
-      tables.opcodes[key] = Array.isArray(entry[0]) ? entry[0] : [entry[0]];
-      tables.order.push(key);
-    }
-
-    return tables;
-  }
-
-}
-
-const CFFTopDict = function CFFTopDictClosure() {
-  const layout = [[[12, 30], "ROS", ["sid", "sid", "num"], null], [[12, 20], "SyntheticBase", "num", null], 
[0, "version", "sid", null], [1, "Notice", "sid", null], [[12, 0], "Copyright", "sid", null], [2, "FullName", 
"sid", null], [3, "FamilyName", "sid", null], [4, "Weight", "sid", null], [[12, 1], "isFixedPitch", "num", 
0], [[12, 2], "ItalicAngle", "num", 0], [[12, 3], "UnderlinePosition", "num", -100], [[12, 4], 
"UnderlineThickness", "num", 50], [[12, 5], "PaintType", "num", 0], [[12, 6], "CharstringType", "num", 2], 
[[12, 7], "FontMatrix", ["num", "num", "num", "num", "num", "num"], [0.001, 0, 0, 0.001, 0, 0]], [13, 
"UniqueID", "num", null], [5, "FontBBox", ["num", "num", "num", "num"], [0, 0, 0, 0]], [[12, 8], 
"StrokeWidth", "num", 0], [14, "XUID", "array", null], [15, "charset", "offset", 0], [16, "Encoding", 
"offset", 0], [17, "CharStrings", "offset", 0], [18, "Private", ["offset", "offset"], null], [[12, 21], 
"PostScript", "sid", null], [[12, 22], "BaseFontName", "sid", nul
 l], [[12, 23], "BaseFontBlend", "delta", null], [[12, 31], "CIDFontVersion", "num", 0], [[12, 32], 
"CIDFontRevision", "num", 0], [[12, 33], "CIDFontType", "num", 0], [[12, 34], "CIDCount", "num", 8720], [[12, 
35], "UIDBase", "num", null], [[12, 37], "FDSelect", "offset", null], [[12, 36], "FDArray", "offset", null], 
[[12, 38], "FontName", "sid", null]];
-  let tables = null;
-
-  class CFFTopDict extends CFFDict {
-    constructor(strings) {
-      if (tables === null) {
-        tables = CFFDict.createTables(layout);
-      }
-
-      super(tables, strings);
-      this.privateDict = null;
-    }
-
-  }
-
-  return CFFTopDict;
-}();
-
-exports.CFFTopDict = CFFTopDict;
-
-const CFFPrivateDict = function CFFPrivateDictClosure() {
-  const layout = [[6, "BlueValues", "delta", null], [7, "OtherBlues", "delta", null], [8, "FamilyBlues", 
"delta", null], [9, "FamilyOtherBlues", "delta", null], [[12, 9], "BlueScale", "num", 0.039625], [[12, 10], 
"BlueShift", "num", 7], [[12, 11], "BlueFuzz", "num", 1], [10, "StdHW", "num", null], [11, "StdVW", "num", 
null], [[12, 12], "StemSnapH", "delta", null], [[12, 13], "StemSnapV", "delta", null], [[12, 14], 
"ForceBold", "num", 0], [[12, 17], "LanguageGroup", "num", 0], [[12, 18], "ExpansionFactor", "num", 0.06], 
[[12, 19], "initialRandomSeed", "num", 0], [20, "defaultWidthX", "num", 0], [21, "nominalWidthX", "num", 0], 
[19, "Subrs", "offset", null]];
-  let tables = null;
-
-  class CFFPrivateDict extends CFFDict {
-    constructor(strings) {
-      if (tables === null) {
-        tables = CFFDict.createTables(layout);
-      }
-
-      super(tables, strings);
-      this.subrsIndex = null;
-    }
-
-  }
-
-  return CFFPrivateDict;
-}();
-
-exports.CFFPrivateDict = CFFPrivateDict;
-const CFFCharsetPredefinedTypes = {
-  ISO_ADOBE: 0,
-  EXPERT: 1,
-  EXPERT_SUBSET: 2
-};
-
-class CFFCharset {
-  constructor(predefined, format, charset, raw) {
-    this.predefined = predefined;
-    this.format = format;
-    this.charset = charset;
-    this.raw = raw;
-  }
-
-}
-
-exports.CFFCharset = CFFCharset;
-
-class CFFEncoding {
-  constructor(predefined, format, encoding, raw) {
-    this.predefined = predefined;
-    this.format = format;
-    this.encoding = encoding;
-    this.raw = raw;
-  }
-
-}
-
-class CFFFDSelect {
-  constructor(format, fdSelect) {
-    this.format = format;
-    this.fdSelect = fdSelect;
-  }
-
-  getFDIndex(glyphIndex) {
-    if (glyphIndex < 0 || glyphIndex >= this.fdSelect.length) {
-      return -1;
-    }
-
-    return this.fdSelect[glyphIndex];
-  }
-
-}
-
-exports.CFFFDSelect = CFFFDSelect;
-
-class CFFOffsetTracker {
-  constructor() {
-    this.offsets = Object.create(null);
-  }
-
-  isTracking(key) {
-    return key in this.offsets;
-  }
-
-  track(key, location) {
-    if (key in this.offsets) {
-      throw new _util.FormatError(`Already tracking location of ${key}`);
-    }
-
-    this.offsets[key] = location;
-  }
-
-  offset(value) {
-    for (const key in this.offsets) {
-      this.offsets[key] += value;
-    }
-  }
-
-  setEntryLocation(key, values, output) {
-    if (!(key in this.offsets)) {
-      throw new _util.FormatError(`Not tracking location of ${key}`);
-    }
-
-    const data = output.data;
-    const dataOffset = this.offsets[key];
-    const size = 5;
-
-    for (let i = 0, ii = values.length; i < ii; ++i) {
-      const offset0 = i * size + dataOffset;
-      const offset1 = offset0 + 1;
-      const offset2 = offset0 + 2;
-      const offset3 = offset0 + 3;
-      const offset4 = offset0 + 4;
-
-      if (data[offset0] !== 0x1d || data[offset1] !== 0 || data[offset2] !== 0 || data[offset3] !== 0 || 
data[offset4] !== 0) {
-        throw new _util.FormatError("writing to an offset that is not empty");
-      }
-
-      const value = values[i];
-      data[offset0] = 0x1d;
-      data[offset1] = value >> 24 & 0xff;
-      data[offset2] = value >> 16 & 0xff;
-      data[offset3] = value >> 8 & 0xff;
-      data[offset4] = value & 0xff;
-    }
-  }
-
-}
-
-class CFFCompiler {
-  constructor(cff) {
-    this.cff = cff;
-  }
-
-  compile() {
-    const cff = this.cff;
-    const output = {
-      data: [],
-      length: 0,
-      add: function CFFCompiler_add(data) {
-        this.data = this.data.concat(data);
-        this.length = this.data.length;
-      }
-    };
-    const header = this.compileHeader(cff.header);
-    output.add(header);
-    const nameIndex = this.compileNameIndex(cff.names);
-    output.add(nameIndex);
-
-    if (cff.isCIDFont) {
-      if (cff.topDict.hasName("FontMatrix")) {
-        const base = cff.topDict.getByName("FontMatrix");
-        cff.topDict.removeByName("FontMatrix");
-
-        for (let i = 0, ii = cff.fdArray.length; i < ii; i++) {
-          const subDict = cff.fdArray[i];
-          let matrix = base.slice(0);
-
-          if (subDict.hasName("FontMatrix")) {
-            matrix = _util.Util.transform(matrix, subDict.getByName("FontMatrix"));
-          }
-
-          subDict.setByName("FontMatrix", matrix);
-        }
-      }
-    }
-
-    const xuid = cff.topDict.getByName("XUID");
-
-    if (xuid && xuid.length > 16) {
-      cff.topDict.removeByName("XUID");
-    }
-
-    cff.topDict.setByName("charset", 0);
-    let compiled = this.compileTopDicts([cff.topDict], output.length, cff.isCIDFont);
-    output.add(compiled.output);
-    const topDictTracker = compiled.trackers[0];
-    const stringIndex = this.compileStringIndex(cff.strings.strings);
-    output.add(stringIndex);
-    const globalSubrIndex = this.compileIndex(cff.globalSubrIndex);
-    output.add(globalSubrIndex);
-
-    if (cff.encoding && cff.topDict.hasName("Encoding")) {
-      if (cff.encoding.predefined) {
-        topDictTracker.setEntryLocation("Encoding", [cff.encoding.format], output);
-      } else {
-        const encoding = this.compileEncoding(cff.encoding);
-        topDictTracker.setEntryLocation("Encoding", [output.length], output);
-        output.add(encoding);
-      }
-    }
-
-    const charset = this.compileCharset(cff.charset, cff.charStrings.count, cff.strings, cff.isCIDFont);
-    topDictTracker.setEntryLocation("charset", [output.length], output);
-    output.add(charset);
-    const charStrings = this.compileCharStrings(cff.charStrings);
-    topDictTracker.setEntryLocation("CharStrings", [output.length], output);
-    output.add(charStrings);
-
-    if (cff.isCIDFont) {
-      topDictTracker.setEntryLocation("FDSelect", [output.length], output);
-      const fdSelect = this.compileFDSelect(cff.fdSelect);
-      output.add(fdSelect);
-      compiled = this.compileTopDicts(cff.fdArray, output.length, true);
-      topDictTracker.setEntryLocation("FDArray", [output.length], output);
-      output.add(compiled.output);
-      const fontDictTrackers = compiled.trackers;
-      this.compilePrivateDicts(cff.fdArray, fontDictTrackers, output);
-    }
-
-    this.compilePrivateDicts([cff.topDict], [topDictTracker], output);
-    output.add([0]);
-    return output.data;
-  }
-
-  encodeNumber(value) {
-    if (Number.isInteger(value)) {
-      return this.encodeInteger(value);
-    }
-
-    return this.encodeFloat(value);
-  }
-
-  static get EncodeFloatRegExp() {
-    return (0, _util.shadow)(this, "EncodeFloatRegExp", /\.(\d*?)(?:9{5,20}|0{5,20})\d{0,2}(?:e(.+)|$)/);
-  }
-
-  encodeFloat(num) {
-    let value = num.toString();
-    const m = CFFCompiler.EncodeFloatRegExp.exec(value);
-
-    if (m) {
-      const epsilon = parseFloat("1e" + ((m[2] ? +m[2] : 0) + m[1].length));
-      value = (Math.round(num * epsilon) / epsilon).toString();
-    }
-
-    let nibbles = "";
-    let i, ii;
-
-    for (i = 0, ii = value.length; i < ii; ++i) {
-      const a = value[i];
-
-      if (a === "e") {
-        nibbles += value[++i] === "-" ? "c" : "b";
-      } else if (a === ".") {
-        nibbles += "a";
-      } else if (a === "-") {
-        nibbles += "e";
-      } else {
-        nibbles += a;
-      }
-    }
-
-    nibbles += nibbles.length & 1 ? "f" : "ff";
-    const out = [30];
-
-    for (i = 0, ii = nibbles.length; i < ii; i += 2) {
-      out.push(parseInt(nibbles.substring(i, i + 2), 16));
-    }
-
-    return out;
-  }
-
-  encodeInteger(value) {
-    let code;
-
-    if (value >= -107 && value <= 107) {
-      code = [value + 139];
-    } else if (value >= 108 && value <= 1131) {
-      value -= 108;
-      code = [(value >> 8) + 247, value & 0xff];
-    } else if (value >= -1131 && value <= -108) {
-      value = -value - 108;
-      code = [(value >> 8) + 251, value & 0xff];
-    } else if (value >= -32768 && value <= 32767) {
-      code = [0x1c, value >> 8 & 0xff, value & 0xff];
-    } else {
-      code = [0x1d, value >> 24 & 0xff, value >> 16 & 0xff, value >> 8 & 0xff, value & 0xff];
-    }
-
-    return code;
-  }
-
-  compileHeader(header) {
-    return [header.major, header.minor, 4, header.offSize];
-  }
-
-  compileNameIndex(names) {
-    const nameIndex = new CFFIndex();
-
-    for (let i = 0, ii = names.length; i < ii; ++i) {
-      const name = names[i];
-      const length = Math.min(name.length, 127);
-      let sanitizedName = new Array(length);
-
-      for (let j = 0; j < length; j++) {
-        let char = name[j];
-
-        if (char < "!" || char > "~" || char === "[" || char === "]" || char === "(" || char === ")" || char 
=== "{" || char === "}" || char === "<" || char === ">" || char === "/" || char === "%") {
-          char = "_";
-        }
-
-        sanitizedName[j] = char;
-      }
-
-      sanitizedName = sanitizedName.join("");
-
-      if (sanitizedName === "") {
-        sanitizedName = "Bad_Font_Name";
-      }
-
-      nameIndex.add((0, _util.stringToBytes)(sanitizedName));
-    }
-
-    return this.compileIndex(nameIndex);
-  }
-
-  compileTopDicts(dicts, length, removeCidKeys) {
-    const fontDictTrackers = [];
-    let fdArrayIndex = new CFFIndex();
-
-    for (let i = 0, ii = dicts.length; i < ii; ++i) {
-      const fontDict = dicts[i];
-
-      if (removeCidKeys) {
-        fontDict.removeByName("CIDFontVersion");
-        fontDict.removeByName("CIDFontRevision");
-        fontDict.removeByName("CIDFontType");
-        fontDict.removeByName("CIDCount");
-        fontDict.removeByName("UIDBase");
-      }
-
-      const fontDictTracker = new CFFOffsetTracker();
-      const fontDictData = this.compileDict(fontDict, fontDictTracker);
-      fontDictTrackers.push(fontDictTracker);
-      fdArrayIndex.add(fontDictData);
-      fontDictTracker.offset(length);
-    }
-
-    fdArrayIndex = this.compileIndex(fdArrayIndex, fontDictTrackers);
-    return {
-      trackers: fontDictTrackers,
-      output: fdArrayIndex
-    };
-  }
-
-  compilePrivateDicts(dicts, trackers, output) {
-    for (let i = 0, ii = dicts.length; i < ii; ++i) {
-      const fontDict = dicts[i];
-      const privateDict = fontDict.privateDict;
-
-      if (!privateDict || !fontDict.hasName("Private")) {
-        throw new _util.FormatError("There must be a private dictionary.");
-      }
-
-      const privateDictTracker = new CFFOffsetTracker();
-      const privateDictData = this.compileDict(privateDict, privateDictTracker);
-      let outputLength = output.length;
-      privateDictTracker.offset(outputLength);
-
-      if (!privateDictData.length) {
-        outputLength = 0;
-      }
-
-      trackers[i].setEntryLocation("Private", [privateDictData.length, outputLength], output);
-      output.add(privateDictData);
-
-      if (privateDict.subrsIndex && privateDict.hasName("Subrs")) {
-        const subrs = this.compileIndex(privateDict.subrsIndex);
-        privateDictTracker.setEntryLocation("Subrs", [privateDictData.length], output);
-        output.add(subrs);
-      }
-    }
-  }
-
-  compileDict(dict, offsetTracker) {
-    let out = [];
-    const order = dict.order;
-
-    for (let i = 0; i < order.length; ++i) {
-      const key = order[i];
-
-      if (!(key in dict.values)) {
-        continue;
-      }
-
-      let values = dict.values[key];
-      let types = dict.types[key];
-
-      if (!Array.isArray(types)) {
-        types = [types];
-      }
-
-      if (!Array.isArray(values)) {
-        values = [values];
-      }
-
-      if (values.length === 0) {
-        continue;
-      }
-
-      for (let j = 0, jj = types.length; j < jj; ++j) {
-        const type = types[j];
-        const value = values[j];
-
-        switch (type) {
-          case "num":
-          case "sid":
-            out = out.concat(this.encodeNumber(value));
-            break;
-
-          case "offset":
-            const name = dict.keyToNameMap[key];
-
-            if (!offsetTracker.isTracking(name)) {
-              offsetTracker.track(name, out.length);
-            }
-
-            out = out.concat([0x1d, 0, 0, 0, 0]);
-            break;
-
-          case "array":
-          case "delta":
-            out = out.concat(this.encodeNumber(value));
-
-            for (let k = 1, kk = values.length; k < kk; ++k) {
-              out = out.concat(this.encodeNumber(values[k]));
-            }
-
-            break;
-
-          default:
-            throw new _util.FormatError(`Unknown data type of ${type}`);
-        }
-      }
-
-      out = out.concat(dict.opcodes[key]);
-    }
-
-    return out;
-  }
-
-  compileStringIndex(strings) {
-    const stringIndex = new CFFIndex();
-
-    for (let i = 0, ii = strings.length; i < ii; ++i) {
-      stringIndex.add((0, _util.stringToBytes)(strings[i]));
-    }
-
-    return this.compileIndex(stringIndex);
-  }
-
-  compileGlobalSubrIndex() {
-    const globalSubrIndex = this.cff.globalSubrIndex;
-    this.out.writeByteArray(this.compileIndex(globalSubrIndex));
-  }
-
-  compileCharStrings(charStrings) {
-    const charStringsIndex = new CFFIndex();
-
-    for (let i = 0; i < charStrings.count; i++) {
-      const glyph = charStrings.get(i);
-
-      if (glyph.length === 0) {
-        charStringsIndex.add(new Uint8Array([0x8b, 0x0e]));
-        continue;
-      }
-
-      charStringsIndex.add(glyph);
-    }
-
-    return this.compileIndex(charStringsIndex);
-  }
-
-  compileCharset(charset, numGlyphs, strings, isCIDFont) {
-    let out;
-    const numGlyphsLessNotDef = numGlyphs - 1;
-
-    if (isCIDFont) {
-      out = new Uint8Array([2, 0, 0, numGlyphsLessNotDef >> 8 & 0xff, numGlyphsLessNotDef & 0xff]);
-    } else {
-      const length = 1 + numGlyphsLessNotDef * 2;
-      out = new Uint8Array(length);
-      out[0] = 0;
-      let charsetIndex = 0;
-      const numCharsets = charset.charset.length;
-      let warned = false;
-
-      for (let i = 1; i < out.length; i += 2) {
-        let sid = 0;
-
-        if (charsetIndex < numCharsets) {
-          const name = charset.charset[charsetIndex++];
-          sid = strings.getSID(name);
-
-          if (sid === -1) {
-            sid = 0;
-
-            if (!warned) {
-              warned = true;
-              (0, _util.warn)(`Couldn't find ${name} in CFF strings`);
-            }
-          }
-        }
-
-        out[i] = sid >> 8 & 0xff;
-        out[i + 1] = sid & 0xff;
-      }
-    }
-
-    return this.compileTypedArray(out);
-  }
-
-  compileEncoding(encoding) {
-    return this.compileTypedArray(encoding.raw);
-  }
-
-  compileFDSelect(fdSelect) {
-    const format = fdSelect.format;
-    let out, i;
-
-    switch (format) {
-      case 0:
-        out = new Uint8Array(1 + fdSelect.fdSelect.length);
-        out[0] = format;
-
-        for (i = 0; i < fdSelect.fdSelect.length; i++) {
-          out[i + 1] = fdSelect.fdSelect[i];
-        }
-
-        break;
-
-      case 3:
-        const start = 0;
-        let lastFD = fdSelect.fdSelect[0];
-        const ranges = [format, 0, 0, start >> 8 & 0xff, start & 0xff, lastFD];
-
-        for (i = 1; i < fdSelect.fdSelect.length; i++) {
-          const currentFD = fdSelect.fdSelect[i];
-
-          if (currentFD !== lastFD) {
-            ranges.push(i >> 8 & 0xff, i & 0xff, currentFD);
-            lastFD = currentFD;
-          }
-        }
-
-        const numRanges = (ranges.length - 3) / 3;
-        ranges[1] = numRanges >> 8 & 0xff;
-        ranges[2] = numRanges & 0xff;
-        ranges.push(i >> 8 & 0xff, i & 0xff);
-        out = new Uint8Array(ranges);
-        break;
-    }
-
-    return this.compileTypedArray(out);
-  }
-
-  compileTypedArray(data) {
-    const out = [];
-
-    for (let i = 0, ii = data.length; i < ii; ++i) {
-      out[i] = data[i];
-    }
-
-    return out;
-  }
-
-  compileIndex(index, trackers = []) {
-    const objects = index.objects;
-    const count = objects.length;
-
-    if (count === 0) {
-      return [0, 0, 0];
-    }
-
-    const data = [count >> 8 & 0xff, count & 0xff];
-    let lastOffset = 1,
-        i;
-
-    for (i = 0; i < count; ++i) {
-      lastOffset += objects[i].length;
-    }
-
-    let offsetSize;
-
-    if (lastOffset < 0x100) {
-      offsetSize = 1;
-    } else if (lastOffset < 0x10000) {
-      offsetSize = 2;
-    } else if (lastOffset < 0x1000000) {
-      offsetSize = 3;
-    } else {
-      offsetSize = 4;
-    }
-
-    data.push(offsetSize);
-    let relativeOffset = 1;
-
-    for (i = 0; i < count + 1; i++) {
-      if (offsetSize === 1) {
-        data.push(relativeOffset & 0xff);
-      } else if (offsetSize === 2) {
-        data.push(relativeOffset >> 8 & 0xff, relativeOffset & 0xff);
-      } else if (offsetSize === 3) {
-        data.push(relativeOffset >> 16 & 0xff, relativeOffset >> 8 & 0xff, relativeOffset & 0xff);
-      } else {
-        data.push(relativeOffset >>> 24 & 0xff, relativeOffset >> 16 & 0xff, relativeOffset >> 8 & 0xff, 
relativeOffset & 0xff);
-      }
-
-      if (objects[i]) {
-        relativeOffset += objects[i].length;
-      }
-    }
-
-    for (i = 0; i < count; i++) {
-      if (trackers[i]) {
-        trackers[i].offset(data.length);
-      }
-
-      for (let j = 0, jj = objects[i].length; j < jj; j++) {
-        data.push(objects[i][j]);
-      }
-    }
-
-    return data;
-  }
-
-}
-
-exports.CFFCompiler = CFFCompiler;
-
-/***/ }),
-/* 36 */
-/***/ ((__unused_webpack_module, exports) => {
-
-
-
-Object.defineProperty(exports, "__esModule", ({
-  value: true
-}));
-exports.ISOAdobeCharset = exports.ExpertSubsetCharset = exports.ExpertCharset = void 0;
-const ISOAdobeCharset = [".notdef", "space", "exclam", "quotedbl", "numbersign", "dollar", "percent", 
"ampersand", "quoteright", "parenleft", "parenright", "asterisk", "plus", "comma", "hyphen", "period", 
"slash", "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "colon", 
"semicolon", "less", "equal", "greater", "question", "at", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", 
"K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "bracketleft", "backslash", 
"bracketright", "asciicircum", "underscore", "quoteleft", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", 
"k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "braceleft", "bar", 
"braceright", "asciitilde", "exclamdown", "cent", "sterling", "fraction", "yen", "florin", "section", 
"currency", "quotesingle", "quotedblleft", "guillemotleft", "guilsinglleft", "guilsinglright", "fi", "fl", 
"endash", "dagger", "daggerdbl", "periodcentered", "paragrap
 h", "bullet", "quotesinglbase", "quotedblbase", "quotedblright", "guillemotright", "ellipsis", 
"perthousand", "questiondown", "grave", "acute", "circumflex", "tilde", "macron", "breve", "dotaccent", 
"dieresis", "ring", "cedilla", "hungarumlaut", "ogonek", "caron", "emdash", "AE", "ordfeminine", "Lslash", 
"Oslash", "OE", "ordmasculine", "ae", "dotlessi", "lslash", "oslash", "oe", "germandbls", "onesuperior", 
"logicalnot", "mu", "trademark", "Eth", "onehalf", "plusminus", "Thorn", "onequarter", "divide", "brokenbar", 
"degree", "thorn", "threequarters", "twosuperior", "registered", "minus", "eth", "multiply", "threesuperior", 
"copyright", "Aacute", "Acircumflex", "Adieresis", "Agrave", "Aring", "Atilde", "Ccedilla", "Eacute", 
"Ecircumflex", "Edieresis", "Egrave", "Iacute", "Icircumflex", "Idieresis", "Igrave", "Ntilde", "Oacute", 
"Ocircumflex", "Odieresis", "Ograve", "Otilde", "Scaron", "Uacute", "Ucircumflex", "Udieresis", "Ugrave", 
"Yacute", "Ydieresis", "Zcaron", "aacute", "acircumf
 lex", "adieresis", "agrave", "aring", "atilde", "ccedilla", "eacute", "ecircumflex", "edieresis", "egrave", 
"iacute", "icircumflex", "idieresis", "igrave", "ntilde", "oacute", "ocircumflex", "odieresis", "ograve", 
"otilde", "scaron", "uacute", "ucircumflex", "udieresis", "ugrave", "yacute", "ydieresis", "zcaron"];
-exports.ISOAdobeCharset = ISOAdobeCharset;
-const ExpertCharset = [".notdef", "space", "exclamsmall", "Hungarumlautsmall", "dollaroldstyle", 
"dollarsuperior", "ampersandsmall", "Acutesmall", "parenleftsuperior", "parenrightsuperior", 
"twodotenleader", "onedotenleader", "comma", "hyphen", "period", "fraction", "zerooldstyle", "oneoldstyle", 
"twooldstyle", "threeoldstyle", "fouroldstyle", "fiveoldstyle", "sixoldstyle", "sevenoldstyle", 
"eightoldstyle", "nineoldstyle", "colon", "semicolon", "commasuperior", "threequartersemdash", 
"periodsuperior", "questionsmall", "asuperior", "bsuperior", "centsuperior", "dsuperior", "esuperior", 
"isuperior", "lsuperior", "msuperior", "nsuperior", "osuperior", "rsuperior", "ssuperior", "tsuperior", "ff", 
"fi", "fl", "ffi", "ffl", "parenleftinferior", "parenrightinferior", "Circumflexsmall", "hyphensuperior", 
"Gravesmall", "Asmall", "Bsmall", "Csmall", "Dsmall", "Esmall", "Fsmall", "Gsmall", "Hsmall", "Ismall", 
"Jsmall", "Ksmall", "Lsmall", "Msmall", "Nsmall", "Osmall", "Psmall", "Qsmall", "Rsma
 ll", "Ssmall", "Tsmall", "Usmall", "Vsmall", "Wsmall", "Xsmall", "Ysmall", "Zsmall", "colonmonetary", 
"onefitted", "rupiah", "Tildesmall", "exclamdownsmall", "centoldstyle", "Lslashsmall", "Scaronsmall", 
"Zcaronsmall", "Dieresissmall", "Brevesmall", "Caronsmall", "Dotaccentsmall", "Macronsmall", "figuredash", 
"hypheninferior", "Ogoneksmall", "Ringsmall", "Cedillasmall", "onequarter", "onehalf", "threequarters", 
"questiondownsmall", "oneeighth", "threeeighths", "fiveeighths", "seveneighths", "onethird", "twothirds", 
"zerosuperior", "onesuperior", "twosuperior", "threesuperior", "foursuperior", "fivesuperior", "sixsuperior", 
"sevensuperior", "eightsuperior", "ninesuperior", "zeroinferior", "oneinferior", "twoinferior", 
"threeinferior", "fourinferior", "fiveinferior", "sixinferior", "seveninferior", "eightinferior", 
"nineinferior", "centinferior", "dollarinferior", "periodinferior", "commainferior", "Agravesmall", 
"Aacutesmall", "Acircumflexsmall", "Atildesmall", "Adieresissmall", "Ari
 ngsmall", "AEsmall", "Ccedillasmall", "Egravesmall", "Eacutesmall", "Ecircumflexsmall", "Edieresissmall", 
"Igravesmall", "Iacutesmall", "Icircumflexsmall", "Idieresissmall", "Ethsmall", "Ntildesmall", "Ogravesmall", 
"Oacutesmall", "Ocircumflexsmall", "Otildesmall", "Odieresissmall", "OEsmall", "Oslashsmall", "Ugravesmall", 
"Uacutesmall", "Ucircumflexsmall", "Udieresissmall", "Yacutesmall", "Thornsmall", "Ydieresissmall"];
-exports.ExpertCharset = ExpertCharset;
-const ExpertSubsetCharset = [".notdef", "space", "dollaroldstyle", "dollarsuperior", "parenleftsuperior", 
"parenrightsuperior", "twodotenleader", "onedotenleader", "comma", "hyphen", "period", "fraction", 
"zerooldstyle", "oneoldstyle", "twooldstyle", "threeoldstyle", "fouroldstyle", "fiveoldstyle", "sixoldstyle", 
"sevenoldstyle", "eightoldstyle", "nineoldstyle", "colon", "semicolon", "commasuperior", 
"threequartersemdash", "periodsuperior", "asuperior", "bsuperior", "centsuperior", "dsuperior", "esuperior", 
"isuperior", "lsuperior", "msuperior", "nsuperior", "osuperior", "rsuperior", "ssuperior", "tsuperior", "ff", 
"fi", "fl", "ffi", "ffl", "parenleftinferior", "parenrightinferior", "hyphensuperior", "colonmonetary", 
"onefitted", "rupiah", "centoldstyle", "figuredash", "hypheninferior", "onequarter", "onehalf", 
"threequarters", "oneeighth", "threeeighths", "fiveeighths", "seveneighths", "onethird", "twothirds", 
"zerosuperior", "onesuperior", "twosuperior", "threesuperior", "foursupe
 rior", "fivesuperior", "sixsuperior", "sevensuperior", "eightsuperior", "ninesuperior", "zeroinferior", 
"oneinferior", "twoinferior", "threeinferior", "fourinferior", "fiveinferior", "sixinferior", 
"seveninferior", "eightinferior", "nineinferior", "centinferior", "dollarinferior", "periodinferior", 
"commainferior"];
-exports.ExpertSubsetCharset = ExpertSubsetCharset;
-
-/***/ }),
-/* 37 */
-/***/ ((__unused_webpack_module, exports) => {
-
-
-
-Object.defineProperty(exports, "__esModule", ({
-  value: true
-}));
-exports.getEncoding = getEncoding;
-exports.ZapfDingbatsEncoding = exports.WinAnsiEncoding = exports.SymbolSetEncoding = 
exports.StandardEncoding = exports.MacRomanEncoding = exports.ExpertEncoding = void 0;
-const ExpertEncoding = ["", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", 
"", "", "", "", "", "", "", "", "", "", "", "space", "exclamsmall", "Hungarumlautsmall", "", 
"dollaroldstyle", "dollarsuperior", "ampersandsmall", "Acutesmall", "parenleftsuperior", 
"parenrightsuperior", "twodotenleader", "onedotenleader", "comma", "hyphen", "period", "fraction", 
"zerooldstyle", "oneoldstyle", "twooldstyle", "threeoldstyle", "fouroldstyle", "fiveoldstyle", "sixoldstyle", 
"sevenoldstyle", "eightoldstyle", "nineoldstyle", "colon", "semicolon", "commasuperior", 
"threequartersemdash", "periodsuperior", "questionsmall", "", "asuperior", "bsuperior", "centsuperior", 
"dsuperior", "esuperior", "", "", "", "isuperior", "", "", "lsuperior", "msuperior", "nsuperior", 
"osuperior", "", "", "rsuperior", "ssuperior", "tsuperior", "", "ff", "fi", "fl", "ffi", "ffl", 
"parenleftinferior", "", "parenrightinferior", "Circumflexsmall", "hyphensuperior", "Gravesmall", "Asmall", 
"Bs
 mall", "Csmall", "Dsmall", "Esmall", "Fsmall", "Gsmall", "Hsmall", "Ismall", "Jsmall", "Ksmall", "Lsmall", 
"Msmall", "Nsmall", "Osmall", "Psmall", "Qsmall", "Rsmall", "Ssmall", "Tsmall", "Usmall", "Vsmall", "Wsmall", 
"Xsmall", "Ysmall", "Zsmall", "colonmonetary", "onefitted", "rupiah", "Tildesmall", "", "", "", "", "", "", 
"", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", 
"", "exclamdownsmall", "centoldstyle", "Lslashsmall", "", "", "Scaronsmall", "Zcaronsmall", "Dieresissmall", 
"Brevesmall", "Caronsmall", "", "Dotaccentsmall", "", "", "Macronsmall", "", "", "figuredash", 
"hypheninferior", "", "", "Ogoneksmall", "Ringsmall", "Cedillasmall", "", "", "", "onequarter", "onehalf", 
"threequarters", "questiondownsmall", "oneeighth", "threeeighths", "fiveeighths", "seveneighths", "onethird", 
"twothirds", "", "", "zerosuperior", "onesuperior", "twosuperior", "threesuperior", "foursuperior", 
"fivesuperior", "sixsuperior", "sevensuperi
 or", "eightsuperior", "ninesuperior", "zeroinferior", "oneinferior", "twoinferior", "threeinferior", 
"fourinferior", "fiveinferior", "sixinferior", "seveninferior", "eightinferior", "nineinferior", 
"centinferior", "dollarinferior", "periodinferior", "commainferior", "Agravesmall", "Aacutesmall", 
"Acircumflexsmall", "Atildesmall", "Adieresissmall", "Aringsmall", "AEsmall", "Ccedillasmall", "Egravesmall", 
"Eacutesmall", "Ecircumflexsmall", "Edieresissmall", "Igravesmall", "Iacutesmall", "Icircumflexsmall", 
"Idieresissmall", "Ethsmall", "Ntildesmall", "Ogravesmall", "Oacutesmall", "Ocircumflexsmall", "Otildesmall", 
"Odieresissmall", "OEsmall", "Oslashsmall", "Ugravesmall", "Uacutesmall", "Ucircumflexsmall", 
"Udieresissmall", "Yacutesmall", "Thornsmall", "Ydieresissmall"];
-exports.ExpertEncoding = ExpertEncoding;
-const MacExpertEncoding = ["", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", 
"", "", "", "", "", "", "", "", "", "", "", "", "space", "exclamsmall", "Hungarumlautsmall", "centoldstyle", 
"dollaroldstyle", "dollarsuperior", "ampersandsmall", "Acutesmall", "parenleftsuperior", 
"parenrightsuperior", "twodotenleader", "onedotenleader", "comma", "hyphen", "period", "fraction", 
"zerooldstyle", "oneoldstyle", "twooldstyle", "threeoldstyle", "fouroldstyle", "fiveoldstyle", "sixoldstyle", 
"sevenoldstyle", "eightoldstyle", "nineoldstyle", "colon", "semicolon", "", "threequartersemdash", "", 
"questionsmall", "", "", "", "", "Ethsmall", "", "", "onequarter", "onehalf", "threequarters", "oneeighth", 
"threeeighths", "fiveeighths", "seveneighths", "onethird", "twothirds", "", "", "", "", "", "", "ff", "fi", 
"fl", "ffi", "ffl", "parenleftinferior", "", "parenrightinferior", "Circumflexsmall", "hypheninferior", 
"Gravesmall", "Asmall", "Bsmall", "Csmall", "Dsmall", "Esmal
 l", "Fsmall", "Gsmall", "Hsmall", "Ismall", "Jsmall", "Ksmall", "Lsmall", "Msmall", "Nsmall", "Osmall", 
"Psmall", "Qsmall", "Rsmall", "Ssmall", "Tsmall", "Usmall", "Vsmall", "Wsmall", "Xsmall", "Ysmall", "Zsmall", 
"colonmonetary", "onefitted", "rupiah", "Tildesmall", "", "", "asuperior", "centsuperior", "", "", "", "", 
"Aacutesmall", "Agravesmall", "Acircumflexsmall", "Adieresissmall", "Atildesmall", "Aringsmall", 
"Ccedillasmall", "Eacutesmall", "Egravesmall", "Ecircumflexsmall", "Edieresissmall", "Iacutesmall", 
"Igravesmall", "Icircumflexsmall", "Idieresissmall", "Ntildesmall", "Oacutesmall", "Ogravesmall", 
"Ocircumflexsmall", "Odieresissmall", "Otildesmall", "Uacutesmall", "Ugravesmall", "Ucircumflexsmall", 
"Udieresissmall", "", "eightsuperior", "fourinferior", "threeinferior", "sixinferior", "eightinferior", 
"seveninferior", "Scaronsmall", "", "centinferior", "twoinferior", "", "Dieresissmall", "", "Caronsmall", 
"osuperior", "fiveinferior", "", "commainferior", "periodinferior", 
 "Yacutesmall", "", "dollarinferior", "", "", "Thornsmall", "", "nineinferior", "zeroinferior", 
"Zcaronsmall", "AEsmall", "Oslashsmall", "questiondownsmall", "oneinferior", "Lslashsmall", "", "", "", "", 
"", "", "Cedillasmall", "", "", "", "", "", "OEsmall", "figuredash", "hyphensuperior", "", "", "", "", 
"exclamdownsmall", "", "Ydieresissmall", "", "onesuperior", "twosuperior", "threesuperior", "foursuperior", 
"fivesuperior", "sixsuperior", "sevensuperior", "ninesuperior", "zerosuperior", "", "esuperior", "rsuperior", 
"tsuperior", "", "", "isuperior", "ssuperior", "dsuperior", "", "", "", "", "", "lsuperior", "Ogoneksmall", 
"Brevesmall", "Macronsmall", "bsuperior", "nsuperior", "msuperior", "commasuperior", "periodsuperior", 
"Dotaccentsmall", "Ringsmall", "", "", "", ""];
-const MacRomanEncoding = ["", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", 
"", "", "", "", "", "", "", "", "", "", "", "", "space", "exclam", "quotedbl", "numbersign", "dollar", 
"percent", "ampersand", "quotesingle", "parenleft", "parenright", "asterisk", "plus", "comma", "hyphen", 
"period", "slash", "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "colon", 
"semicolon", "less", "equal", "greater", "question", "at", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", 
"K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "bracketleft", "backslash", 
"bracketright", "asciicircum", "underscore", "grave", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", 
"l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "braceleft", "bar", "braceright", 
"asciitilde", "", "Adieresis", "Aring", "Ccedilla", "Eacute", "Ntilde", "Odieresis", "Udieresis", "aacute", 
"agrave", "acircumflex", "adiere
 sis", "atilde", "aring", "ccedilla", "eacute", "egrave", "ecircumflex", "edieresis", "iacute", "igrave", 
"icircumflex", "idieresis", "ntilde", "oacute", "ograve", "ocircumflex", "odieresis", "otilde", "uacute", 
"ugrave", "ucircumflex", "udieresis", "dagger", "degree", "cent", "sterling", "section", "bullet", 
"paragraph", "germandbls", "registered", "copyright", "trademark", "acute", "dieresis", "notequal", "AE", 
"Oslash", "infinity", "plusminus", "lessequal", "greaterequal", "yen", "mu", "partialdiff", "summation", 
"product", "pi", "integral", "ordfeminine", "ordmasculine", "Omega", "ae", "oslash", "questiondown", 
"exclamdown", "logicalnot", "radical", "florin", "approxequal", "Delta", "guillemotleft", "guillemotright", 
"ellipsis", "space", "Agrave", "Atilde", "Otilde", "OE", "oe", "endash", "emdash", "quotedblleft", 
"quotedblright", "quoteleft", "quoteright", "divide", "lozenge", "ydieresis", "Ydieresis", "fraction", 
"currency", "guilsinglleft", "guilsinglright", "fi", "fl", "dagge
 rdbl", "periodcentered", "quotesinglbase", "quotedblbase", "perthousand", "Acircumflex", "Ecircumflex", 
"Aacute", "Edieresis", "Egrave", "Iacute", "Icircumflex", "Idieresis", "Igrave", "Oacute", "Ocircumflex", 
"apple", "Ograve", "Uacute", "Ucircumflex", "Ugrave", "dotlessi", "circumflex", "tilde", "macron", "breve", 
"dotaccent", "ring", "cedilla", "hungarumlaut", "ogonek", "caron"];
-exports.MacRomanEncoding = MacRomanEncoding;
-const StandardEncoding = ["", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", 
"", "", "", "", "", "", "", "", "", "", "", "", "space", "exclam", "quotedbl", "numbersign", "dollar", 
"percent", "ampersand", "quoteright", "parenleft", "parenright", "asterisk", "plus", "comma", "hyphen", 
"period", "slash", "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "colon", 
"semicolon", "less", "equal", "greater", "question", "at", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", 
"K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "bracketleft", "backslash", 
"bracketright", "asciicircum", "underscore", "quoteleft", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", 
"k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "braceleft", "bar", 
"braceright", "asciitilde", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", 
"", "", "", "", "", "", "", "", "", "", "",
  "", "", "", "exclamdown", "cent", "sterling", "fraction", "yen", "florin", "section", "currency", 
"quotesingle", "quotedblleft", "guillemotleft", "guilsinglleft", "guilsinglright", "fi", "fl", "", "endash", 
"dagger", "daggerdbl", "periodcentered", "", "paragraph", "bullet", "quotesinglbase", "quotedblbase", 
"quotedblright", "guillemotright", "ellipsis", "perthousand", "", "questiondown", "", "grave", "acute", 
"circumflex", "tilde", "macron", "breve", "dotaccent", "dieresis", "", "ring", "cedilla", "", "hungarumlaut", 
"ogonek", "caron", "emdash", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "AE", "", 
"ordfeminine", "", "", "", "", "Lslash", "Oslash", "OE", "ordmasculine", "", "", "", "", "", "ae", "", "", 
"", "dotlessi", "", "", "lslash", "oslash", "oe", "germandbls", "", "", "", ""];
-exports.StandardEncoding = StandardEncoding;
-const WinAnsiEncoding = ["", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", 
"", "", "", "", "", "", "", "", "", "", "", "space", "exclam", "quotedbl", "numbersign", "dollar", "percent", 
"ampersand", "quotesingle", "parenleft", "parenright", "asterisk", "plus", "comma", "hyphen", "period", 
"slash", "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "colon", 
"semicolon", "less", "equal", "greater", "question", "at", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", 
"K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "bracketleft", "backslash", 
"bracketright", "asciicircum", "underscore", "grave", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", 
"l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "braceleft", "bar", "braceright", 
"asciitilde", "bullet", "Euro", "bullet", "quotesinglbase", "florin", "quotedblbase", "ellipsis", "dagger", 
"daggerdbl", "circumflex", "perth
 ousand", "Scaron", "guilsinglleft", "OE", "bullet", "Zcaron", "bullet", "bullet", "quoteleft", "quoteright", 
"quotedblleft", "quotedblright", "bullet", "endash", "emdash", "tilde", "trademark", "scaron", 
"guilsinglright", "oe", "bullet", "zcaron", "Ydieresis", "space", "exclamdown", "cent", "sterling", 
"currency", "yen", "brokenbar", "section", "dieresis", "copyright", "ordfeminine", "guillemotleft", 
"logicalnot", "hyphen", "registered", "macron", "degree", "plusminus", "twosuperior", "threesuperior", 
"acute", "mu", "paragraph", "periodcentered", "cedilla", "onesuperior", "ordmasculine", "guillemotright", 
"onequarter", "onehalf", "threequarters", "questiondown", "Agrave", "Aacute", "Acircumflex", "Atilde", 
"Adieresis", "Aring", "AE", "Ccedilla", "Egrave", "Eacute", "Ecircumflex", "Edieresis", "Igrave", "Iacute", 
"Icircumflex", "Idieresis", "Eth", "Ntilde", "Ograve", "Oacute", "Ocircumflex", "Otilde", "Odieresis", 
"multiply", "Oslash", "Ugrave", "Uacute", "Ucircumflex", "Udieresis", 
 "Yacute", "Thorn", "germandbls", "agrave", "aacute", "acircumflex", "atilde", "adieresis", "aring", "ae", 
"ccedilla", "egrave", "eacute", "ecircumflex", "edieresis", "igrave", "iacute", "icircumflex", "idieresis", 
"eth", "ntilde", "ograve", "oacute", "ocircumflex", "otilde", "odieresis", "divide", "oslash", "ugrave", 
"uacute", "ucircumflex", "udieresis", "yacute", "thorn", "ydieresis"];
-exports.WinAnsiEncoding = WinAnsiEncoding;
-const SymbolSetEncoding = ["", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", 
"", "", "", "", "", "", "", "", "", "", "", "", "space", "exclam", "universal", "numbersign", "existential", 
"percent", "ampersand", "suchthat", "parenleft", "parenright", "asteriskmath", "plus", "comma", "minus", 
"period", "slash", "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "colon", 
"semicolon", "less", "equal", "greater", "question", "congruent", "Alpha", "Beta", "Chi", "Delta", "Epsilon", 
"Phi", "Gamma", "Eta", "Iota", "theta1", "Kappa", "Lambda", "Mu", "Nu", "Omicron", "Pi", "Theta", "Rho", 
"Sigma", "Tau", "Upsilon", "sigma1", "Omega", "Xi", "Psi", "Zeta", "bracketleft", "therefore", 
"bracketright", "perpendicular", "underscore", "radicalex", "alpha", "beta", "chi", "delta", "epsilon", 
"phi", "gamma", "eta", "iota", "phi1", "kappa", "lambda", "mu", "nu", "omicron", "pi", "theta", "rho", 
"sigma", "tau", "upsilon", "omega1", "omega", "xi",
  "psi", "zeta", "braceleft", "bar", "braceright", "similar", "", "", "", "", "", "", "", "", "", "", "", "", 
"", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "Euro", "Upsilon1", 
"minute", "lessequal", "fraction", "infinity", "florin", "club", "diamond", "heart", "spade", "arrowboth", 
"arrowleft", "arrowup", "arrowright", "arrowdown", "degree", "plusminus", "second", "greaterequal", 
"multiply", "proportional", "partialdiff", "bullet", "divide", "notequal", "equivalence", "approxequal", 
"ellipsis", "arrowvertex", "arrowhorizex", "carriagereturn", "aleph", "Ifraktur", "Rfraktur", "weierstrass", 
"circlemultiply", "circleplus", "emptyset", "intersection", "union", "propersuperset", "reflexsuperset", 
"notsubset", "propersubset", "reflexsubset", "element", "notelement", "angle", "gradient", "registerserif", 
"copyrightserif", "trademarkserif", "product", "radical", "dotmath", "logicalnot", "logicaland", "logicalor", 
"arrowdblboth", "arrowdblleft", "arrowdb
 lup", "arrowdblright", "arrowdbldown", "lozenge", "angleleft", "registersans", "copyrightsans", 
"trademarksans", "summation", "parenlefttp", "parenleftex", "parenleftbt", "bracketlefttp", "bracketleftex", 
"bracketleftbt", "bracelefttp", "braceleftmid", "braceleftbt", "braceex", "", "angleright", "integral", 
"integraltp", "integralex", "integralbt", "parenrighttp", "parenrightex", "parenrightbt", "bracketrighttp", 
"bracketrightex", "bracketrightbt", "bracerighttp", "bracerightmid", "bracerightbt", ""];
-exports.SymbolSetEncoding = SymbolSetEncoding;
-const ZapfDingbatsEncoding = ["", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", 
"", "", "", "", "", "", "", "", "", "", "", "", "", "space", "a1", "a2", "a202", "a3", "a4", "a5", "a119", 
"a118", "a117", "a11", "a12", "a13", "a14", "a15", "a16", "a105", "a17", "a18", "a19", "a20", "a21", "a22", 
"a23", "a24", "a25", "a26", "a27", "a28", "a6", "a7", "a8", "a9", "a10", "a29", "a30", "a31", "a32", "a33", 
"a34", "a35", "a36", "a37", "a38", "a39", "a40", "a41", "a42", "a43", "a44", "a45", "a46", "a47", "a48", 
"a49", "a50", "a51", "a52", "a53", "a54", "a55", "a56", "a57", "a58", "a59", "a60", "a61", "a62", "a63", 
"a64", "a65", "a66", "a67", "a68", "a69", "a70", "a71", "a72", "a73", "a74", "a203", "a75", "a204", "a76", 
"a77", "a78", "a79", "a81", "a82", "a83", "a84", "a97", "a98", "a99", "a100", "", "a89", "a90", "a93", "a94", 
"a91", "a92", "a205", "a85", "a206", "a86", "a87", "a88", "a95", "a96", "", "", "", "", "", "", "", "", "", 
"", "", "", "", "", "", "", "", "
 ", "", "a101", "a102", "a103", "a104", "a106", "a107", "a108", "a112", "a111", "a110", "a109", "a120", 
"a121", "a122", "a123", "a124", "a125", "a126", "a127", "a128", "a129", "a130", "a131", "a132", "a133", 
"a134", "a135", "a136", "a137", "a138", "a139", "a140", "a141", "a142", "a143", "a144", "a145", "a146", 
"a147", "a148", "a149", "a150", "a151", "a152", "a153", "a154", "a155", "a156", "a157", "a158", "a159", 
"a160", "a161", "a163", "a164", "a196", "a165", "a192", "a166", "a167", "a168", "a169", "a170", "a171", 
"a172", "a173", "a162", "a174", "a175", "a176", "a177", "a178", "a179", "a193", "a180", "a199", "a181", 
"a200", "a182", "", "a201", "a183", "a184", "a197", "a185", "a194", "a198", "a186", "a195", "a187", "a188", 
"a189", "a190", "a191", ""];
-exports.ZapfDingbatsEncoding = ZapfDingbatsEncoding;
-
-function getEncoding(encodingName) {
-  switch (encodingName) {
-    case "WinAnsiEncoding":
-      return WinAnsiEncoding;
-
-    case "StandardEncoding":
-      return StandardEncoding;
-
-    case "MacRomanEncoding":
-      return MacRomanEncoding;
-
-    case "SymbolSetEncoding":
-      return SymbolSetEncoding;
-
-    case "ZapfDingbatsEncoding":
-      return ZapfDingbatsEncoding;
-
-    case "ExpertEncoding":
-      return ExpertEncoding;
-
-    case "MacExpertEncoding":
-      return MacExpertEncoding;
-
-    default:
-      return null;
-  }
-}
-
-/***/ }),
-/* 38 */
-/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
-
-
-
-Object.defineProperty(exports, "__esModule", ({
-  value: true
-}));
-exports.getFontType = getFontType;
-exports.normalizeFontName = normalizeFontName;
-exports.recoverGlyphName = recoverGlyphName;
-exports.type1FontGlyphMapping = type1FontGlyphMapping;
-exports.SEAC_ANALYSIS_ENABLED = exports.MacStandardGlyphOrdering = exports.FontFlags = void 0;
-
-var _util = __w_pdfjs_require__(2);
-
-var _encodings = __w_pdfjs_require__(37);
-
-var _glyphlist = __w_pdfjs_require__(39);
-
-var _unicode = __w_pdfjs_require__(40);
-
-const SEAC_ANALYSIS_ENABLED = true;
-exports.SEAC_ANALYSIS_ENABLED = SEAC_ANALYSIS_ENABLED;
-const FontFlags = {
-  FixedPitch: 1,
-  Serif: 2,
-  Symbolic: 4,
-  Script: 8,
-  Nonsymbolic: 32,
-  Italic: 64,
-  AllCap: 65536,
-  SmallCap: 131072,
-  ForceBold: 262144
-};
-exports.FontFlags = FontFlags;
-const MacStandardGlyphOrdering = [".notdef", ".null", "nonmarkingreturn", "space", "exclam", "quotedbl", 
"numbersign", "dollar", "percent", "ampersand", "quotesingle", "parenleft", "parenright", "asterisk", "plus", 
"comma", "hyphen", "period", "slash", "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", 
"nine", "colon", "semicolon", "less", "equal", "greater", "question", "at", "A", "B", "C", "D", "E", "F", 
"G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", 
"bracketleft", "backslash", "bracketright", "asciicircum", "underscore", "grave", "a", "b", "c", "d", "e", 
"f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", 
"braceleft", "bar", "braceright", "asciitilde", "Adieresis", "Aring", "Ccedilla", "Eacute", "Ntilde", 
"Odieresis", "Udieresis", "aacute", "agrave", "acircumflex", "adieresis", "atilde", "aring", "ccedilla", 
"eacute", "egrave", "ecircumflex", "edieresis",
  "iacute", "igrave", "icircumflex", "idieresis", "ntilde", "oacute", "ograve", "ocircumflex", "odieresis", 
"otilde", "uacute", "ugrave", "ucircumflex", "udieresis", "dagger", "degree", "cent", "sterling", "section", 
"bullet", "paragraph", "germandbls", "registered", "copyright", "trademark", "acute", "dieresis", "notequal", 
"AE", "Oslash", "infinity", "plusminus", "lessequal", "greaterequal", "yen", "mu", "partialdiff", 
"summation", "product", "pi", "integral", "ordfeminine", "ordmasculine", "Omega", "ae", "oslash", 
"questiondown", "exclamdown", "logicalnot", "radical", "florin", "approxequal", "Delta", "guillemotleft", 
"guillemotright", "ellipsis", "nonbreakingspace", "Agrave", "Atilde", "Otilde", "OE", "oe", "endash", 
"emdash", "quotedblleft", "quotedblright", "quoteleft", "quoteright", "divide", "lozenge", "ydieresis", 
"Ydieresis", "fraction", "currency", "guilsinglleft", "guilsinglright", "fi", "fl", "daggerdbl", 
"periodcentered", "quotesinglbase", "quotedblbase", "perthousand",
  "Acircumflex", "Ecircumflex", "Aacute", "Edieresis", "Egrave", "Iacute", "Icircumflex", "Idieresis", 
"Igrave", "Oacute", "Ocircumflex", "apple", "Ograve", "Uacute", "Ucircumflex", "Ugrave", "dotlessi", 
"circumflex", "tilde", "macron", "breve", "dotaccent", "ring", "cedilla", "hungarumlaut", "ogonek", "caron", 
"Lslash", "lslash", "Scaron", "scaron", "Zcaron", "zcaron", "brokenbar", "Eth", "eth", "Yacute", "yacute", 
"Thorn", "thorn", "minus", "multiply", "onesuperior", "twosuperior", "threesuperior", "onehalf", 
"onequarter", "threequarters", "franc", "Gbreve", "gbreve", "Idotaccent", "Scedilla", "scedilla", "Cacute", 
"cacute", "Ccaron", "ccaron", "dcroat"];
-exports.MacStandardGlyphOrdering = MacStandardGlyphOrdering;
-
-function getFontType(type, subtype, isStandardFont = false) {
-  switch (type) {
-    case "Type1":
-      if (isStandardFont) {
-        return _util.FontType.TYPE1STANDARD;
-      }
-
-      return subtype === "Type1C" ? _util.FontType.TYPE1C : _util.FontType.TYPE1;
-
-    case "CIDFontType0":
-      return subtype === "CIDFontType0C" ? _util.FontType.CIDFONTTYPE0C : _util.FontType.CIDFONTTYPE0;
-
-    case "OpenType":
-      return _util.FontType.OPENTYPE;
-
-    case "TrueType":
-      return _util.FontType.TRUETYPE;
-
-    case "CIDFontType2":
-      return _util.FontType.CIDFONTTYPE2;
-
-    case "MMType1":
-      return _util.FontType.MMTYPE1;
-
-    case "Type0":
-      return _util.FontType.TYPE0;
-
-    default:
-      return _util.FontType.UNKNOWN;
-  }
-}
-
-function recoverGlyphName(name, glyphsUnicodeMap) {
-  if (glyphsUnicodeMap[name] !== undefined) {
-    return name;
-  }
-
-  const unicode = (0, _unicode.getUnicodeForGlyph)(name, glyphsUnicodeMap);
-
-  if (unicode !== -1) {
-    for (const key in glyphsUnicodeMap) {
-      if (glyphsUnicodeMap[key] === unicode) {
-        return key;
-      }
-    }
-  }
-
-  (0, _util.info)("Unable to recover a standard glyph name for: " + name);
-  return name;
-}
-
-function type1FontGlyphMapping(properties, builtInEncoding, glyphNames) {
-  const charCodeToGlyphId = Object.create(null);
-  let glyphId, charCode, baseEncoding;
-  const isSymbolicFont = !!(properties.flags & FontFlags.Symbolic);
-
-  if (properties.isInternalFont) {
-    baseEncoding = builtInEncoding;
-
-    for (charCode = 0; charCode < baseEncoding.length; charCode++) {
-      glyphId = glyphNames.indexOf(baseEncoding[charCode]);
-
-      if (glyphId >= 0) {
-        charCodeToGlyphId[charCode] = glyphId;
-      } else {
-        charCodeToGlyphId[charCode] = 0;
-      }
-    }
-  } else if (properties.baseEncodingName) {
-    baseEncoding = (0, _encodings.getEncoding)(properties.baseEncodingName);
-
-    for (charCode = 0; charCode < baseEncoding.length; charCode++) {
-      glyphId = glyphNames.indexOf(baseEncoding[charCode]);
-
-      if (glyphId >= 0) {
-        charCodeToGlyphId[charCode] = glyphId;
-      } else {
-        charCodeToGlyphId[charCode] = 0;
-      }
-    }
-  } else if (isSymbolicFont) {
-    for (charCode in builtInEncoding) {
-      charCodeToGlyphId[charCode] = builtInEncoding[charCode];
-    }
-  } else {
-    baseEncoding = _encodings.StandardEncoding;
-
-    for (charCode = 0; charCode < baseEncoding.length; charCode++) {
-      glyphId = glyphNames.indexOf(baseEncoding[charCode]);
-
-      if (glyphId >= 0) {
-        charCodeToGlyphId[charCode] = glyphId;
-      } else {
-        charCodeToGlyphId[charCode] = 0;
-      }
-    }
-  }
-
-  const differences = properties.differences;
-  let glyphsUnicodeMap;
-
-  if (differences) {
-    for (charCode in differences) {
-      const glyphName = differences[charCode];
-      glyphId = glyphNames.indexOf(glyphName);
-
-      if (glyphId === -1) {
-        if (!glyphsUnicodeMap) {
-          glyphsUnicodeMap = (0, _glyphlist.getGlyphsUnicode)();
-        }
-
-        const standardGlyphName = recoverGlyphName(glyphName, glyphsUnicodeMap);
-
-        if (standardGlyphName !== glyphName) {
-          glyphId = glyphNames.indexOf(standardGlyphName);
-        }
-      }
-
-      if (glyphId >= 0) {
-        charCodeToGlyphId[charCode] = glyphId;
-      } else {
-        charCodeToGlyphId[charCode] = 0;
-      }
-    }
-  }
-
-  return charCodeToGlyphId;
-}
-
-function normalizeFontName(name) {
-  return name.replace(/[,_]/g, "-").replace(/\s/g, "");
-}
-
-/***/ }),
-/* 39 */
-/***/ ((__unused_webpack_module, __webpack_exports__, __w_pdfjs_require__) => {
-
-__w_pdfjs_require__.r(__webpack_exports__);
-/* harmony export */ __w_pdfjs_require__.d(__webpack_exports__, {
-/* harmony export */   "getDingbatsGlyphsUnicode": () => (/* binding */ getDingbatsGlyphsUnicode),
-/* harmony export */   "getGlyphsUnicode": () => (/* binding */ getGlyphsUnicode)
-/* harmony export */ });
-/* harmony import */ var _core_utils_js__WEBPACK_IMPORTED_MODULE_0__ = __w_pdfjs_require__(9);
+__w_pdfjs_require__.r(__webpack_exports__);
+/* harmony export */ __w_pdfjs_require__.d(__webpack_exports__, {
+/* harmony export */   "getDingbatsGlyphsUnicode": () => (/* binding */ getDingbatsGlyphsUnicode),
+/* harmony export */   "getGlyphsUnicode": () => (/* binding */ getGlyphsUnicode)
+/* harmony export */ });
+/* harmony import */ var _core_utils_js__WEBPACK_IMPORTED_MODULE_0__ = __w_pdfjs_require__(9);
 
 const getGlyphsUnicode = (0,_core_utils_js__WEBPACK_IMPORTED_MODULE_0__.getArrayLookupTableFactory)(function 
() {
  return [
@@ -37041,7 +14536,7 @@ const getDingbatsGlyphsUnicode = (0,_core_utils_js__WEBPACK_IMPORTED_MODULE_0__.
 
 
 /***/ }),
-/* 40 */
+/* 21 */
 /***/ ((__unused_webpack_module, __webpack_exports__, __w_pdfjs_require__) => {
 
 __w_pdfjs_require__.r(__webpack_exports__);
@@ -40389,21 +17884,23297 @@ const getNormalizedUnicodes = (0,_core_utils_js__WEBPACK_IMPORTED_MODULE_0__.get
   "\u0644\u0627"
  ];
 });
-function reverseIfRtl(chars) {
- const charsLength = chars.length;
- if (charsLength <= 1 || !isRTLRangeFor(chars.charCodeAt(0))) {
-  return chars;
- }
- const buf = [];
- for (let ii = charsLength - 1; ii >= 0; ii--) {
-  buf.push(chars[ii]);
- }
- return buf.join("");
+function reverseIfRtl(chars) {
+ const charsLength = chars.length;
+ if (charsLength <= 1 || !isRTLRangeFor(chars.charCodeAt(0))) {
+  return chars;
+ }
+ const buf = [];
+ for (let ii = charsLength - 1; ii >= 0; ii--) {
+  buf.push(chars[ii]);
+ }
+ return buf.join("");
+}
+
+
+/***/ }),
+/* 22 */
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
+
+
+
+Object.defineProperty(exports, "__esModule", ({
+  value: true
+}));
+exports.getQuadPoints = getQuadPoints;
+exports.MarkupAnnotation = exports.AnnotationFactory = exports.AnnotationBorderStyle = exports.Annotation = 
void 0;
+
+var _util = __w_pdfjs_require__(2);
+
+var _core_utils = __w_pdfjs_require__(9);
+
+var _default_appearance = __w_pdfjs_require__(23);
+
+var _primitives = __w_pdfjs_require__(5);
+
+var _bidi = __w_pdfjs_require__(59);
+
+var _catalog = __w_pdfjs_require__(64);
+
+var _colorspace = __w_pdfjs_require__(24);
+
+var _file_spec = __w_pdfjs_require__(66);
+
+var _object_loader = __w_pdfjs_require__(70);
+
+var _operator_list = __w_pdfjs_require__(62);
+
+var _stream = __w_pdfjs_require__(10);
+
+var _writer = __w_pdfjs_require__(71);
+
+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]));
+  }
+
+  static _create(xref, ref, pdfManager, idFactory, acroForm, collectFields, pageIndex = -1) {
+    const dict = xref.fetchIfRef(ref);
+
+    if (!(0, _primitives.isDict)(dict)) {
+      return undefined;
+    }
+
+    const id = (0, _primitives.isRef)(ref) ? ref.toString() : `annot_${idFactory.createObjId()}`;
+    let subtype = dict.get("Subtype");
+    subtype = (0, _primitives.isName)(subtype) ? subtype.name : null;
+    const parameters = {
+      xref,
+      ref,
+      dict,
+      subtype,
+      id,
+      pdfManager,
+      acroForm: acroForm instanceof _primitives.Dict ? acroForm : _primitives.Dict.empty,
+      collectFields,
+      pageIndex
+    };
+
+    switch (subtype) {
+      case "Link":
+        return new LinkAnnotation(parameters);
+
+      case "Text":
+        return new TextAnnotation(parameters);
+
+      case "Widget":
+        let fieldType = (0, _core_utils.getInheritableProperty)({
+          dict,
+          key: "FT"
+        });
+        fieldType = (0, _primitives.isName)(fieldType) ? fieldType.name : null;
+
+        switch (fieldType) {
+          case "Tx":
+            return new TextWidgetAnnotation(parameters);
+
+          case "Btn":
+            return new ButtonWidgetAnnotation(parameters);
+
+          case "Ch":
+            return new ChoiceWidgetAnnotation(parameters);
+
+          case "Sig":
+            return new SignatureWidgetAnnotation(parameters);
+        }
+
+        (0, _util.warn)(`Unimplemented widget field type "${fieldType}", ` + "falling back to base field 
type.");
+        return new WidgetAnnotation(parameters);
+
+      case "Popup":
+        return new PopupAnnotation(parameters);
+
+      case "FreeText":
+        return new FreeTextAnnotation(parameters);
+
+      case "Line":
+        return new LineAnnotation(parameters);
+
+      case "Square":
+        return new SquareAnnotation(parameters);
+
+      case "Circle":
+        return new CircleAnnotation(parameters);
+
+      case "PolyLine":
+        return new PolylineAnnotation(parameters);
+
+      case "Polygon":
+        return new PolygonAnnotation(parameters);
+
+      case "Caret":
+        return new CaretAnnotation(parameters);
+
+      case "Ink":
+        return new InkAnnotation(parameters);
+
+      case "Highlight":
+        return new HighlightAnnotation(parameters);
+
+      case "Underline":
+        return new UnderlineAnnotation(parameters);
+
+      case "Squiggly":
+        return new SquigglyAnnotation(parameters);
+
+      case "StrikeOut":
+        return new StrikeOutAnnotation(parameters);
+
+      case "Stamp":
+        return new StampAnnotation(parameters);
+
+      case "FileAttachment":
+        return new FileAttachmentAnnotation(parameters);
+
+      default:
+        if (!collectFields) {
+          if (!subtype) {
+            (0, _util.warn)("Annotation is missing the required /Subtype.");
+          } else {
+            (0, _util.warn)(`Unimplemented annotation type "${subtype}", ` + "falling back to base 
annotation.");
+          }
+        }
+
+        return new Annotation(parameters);
+    }
+  }
+
+  static async _getPageIndex(xref, ref, pdfManager) {
+    try {
+      const annotDict = await xref.fetchIfRefAsync(ref);
+
+      if (!(0, _primitives.isDict)(annotDict)) {
+        return -1;
+      }
+
+      const pageRef = annotDict.getRaw("P");
+
+      if (!(0, _primitives.isRef)(pageRef)) {
+        return -1;
+      }
+
+      const pageIndex = await pdfManager.ensureCatalog("getPageIndex", [pageRef]);
+      return pageIndex;
+    } catch (ex) {
+      (0, _util.warn)(`_getPageIndex: "${ex}".`);
+      return -1;
+    }
+  }
+
+}
+
+exports.AnnotationFactory = AnnotationFactory;
+
+function getRgbColor(color, defaultColor = new Uint8ClampedArray(3)) {
+  if (!Array.isArray(color)) {
+    return defaultColor;
+  }
+
+  const rgbColor = defaultColor || new Uint8ClampedArray(3);
+
+  switch (color.length) {
+    case 0:
+      return null;
+
+    case 1:
+      _colorspace.ColorSpace.singletons.gray.getRgbItem(color, 0, rgbColor, 0);
+
+      return rgbColor;
+
+    case 3:
+      _colorspace.ColorSpace.singletons.rgb.getRgbItem(color, 0, rgbColor, 0);
+
+      return rgbColor;
+
+    case 4:
+      _colorspace.ColorSpace.singletons.cmyk.getRgbItem(color, 0, rgbColor, 0);
+
+      return rgbColor;
+
+    default:
+      return defaultColor;
+  }
+}
+
+function getQuadPoints(dict, rect) {
+  if (!dict.has("QuadPoints")) {
+    return null;
+  }
+
+  const quadPoints = dict.getArray("QuadPoints");
+
+  if (!Array.isArray(quadPoints) || quadPoints.length === 0 || quadPoints.length % 8 > 0) {
+    return null;
+  }
+
+  const quadPointsLists = [];
+
+  for (let i = 0, ii = quadPoints.length / 8; i < ii; i++) {
+    quadPointsLists.push([]);
+
+    for (let j = i * 8, jj = i * 8 + 8; j < jj; j += 2) {
+      const x = quadPoints[j];
+      const y = quadPoints[j + 1];
+
+      if (rect !== null && (x < rect[0] || x > rect[2] || y < rect[1] || y > rect[3])) {
+        return null;
+      }
+
+      quadPointsLists[i].push({
+        x,
+        y
+      });
+    }
+  }
+
+  return quadPointsLists.map(quadPointsList => {
+    const [minX, maxX, minY, maxY] = quadPointsList.reduce(([mX, MX, mY, MY], quadPoint) => [Math.min(mX, 
quadPoint.x), Math.max(MX, quadPoint.x), Math.min(mY, quadPoint.y), Math.max(MY, quadPoint.y)], 
[Number.MAX_VALUE, Number.MIN_VALUE, Number.MAX_VALUE, Number.MIN_VALUE]);
+    return [{
+      x: minX,
+      y: maxY
+    }, {
+      x: maxX,
+      y: maxY
+    }, {
+      x: minX,
+      y: minY
+    }, {
+      x: maxX,
+      y: minY
+    }];
+  });
+}
+
+function getTransformMatrix(rect, bbox, matrix) {
+  const [minX, minY, maxX, maxY] = _util.Util.getAxialAlignedBoundingBox(bbox, matrix);
+
+  if (minX === maxX || minY === maxY) {
+    return [1, 0, 0, 1, rect[0], rect[1]];
+  }
+
+  const xRatio = (rect[2] - rect[0]) / (maxX - minX);
+  const yRatio = (rect[3] - rect[1]) / (maxY - minY);
+  return [xRatio, 0, 0, yRatio, rect[0] - minX * xRatio, rect[1] - minY * yRatio];
+}
+
+class Annotation {
+  constructor(params) {
+    const dict = params.dict;
+    this.setTitle(dict.get("T"));
+    this.setContents(dict.get("Contents"));
+    this.setModificationDate(dict.get("M"));
+    this.setFlags(dict.get("F"));
+    this.setRectangle(dict.getArray("Rect"));
+    this.setColor(dict.getArray("C"));
+    this.setBorderStyle(dict);
+    this.setAppearance(dict);
+    this.setBorderAndBackgroundColors(dict.get("MK"));
+    this._streams = [];
+
+    if (this.appearance) {
+      this._streams.push(this.appearance);
+    }
+
+    this.data = {
+      annotationFlags: this.flags,
+      borderStyle: this.borderStyle,
+      color: this.color,
+      backgroundColor: this.backgroundColor,
+      borderColor: this.borderColor,
+      contentsObj: this._contents,
+      hasAppearance: !!this.appearance,
+      id: params.id,
+      modificationDate: this.modificationDate,
+      rect: this.rectangle,
+      subtype: params.subtype
+    };
+
+    if (params.collectFields) {
+      const kids = dict.get("Kids");
+
+      if (Array.isArray(kids)) {
+        const kidIds = [];
+
+        for (const kid of kids) {
+          if ((0, _primitives.isRef)(kid)) {
+            kidIds.push(kid.toString());
+          }
+        }
+
+        if (kidIds.length !== 0) {
+          this.data.kidIds = kidIds;
+        }
+      }
+
+      this.data.actions = (0, _core_utils.collectActions)(params.xref, dict, 
_util.AnnotationActionEventType);
+      this.data.fieldName = this._constructFieldName(dict);
+      this.data.pageIndex = params.pageIndex;
+    }
+
+    this._fallbackFontDict = null;
+  }
+
+  _hasFlag(flags, flag) {
+    return !!(flags & flag);
+  }
+
+  _isViewable(flags) {
+    return !this._hasFlag(flags, _util.AnnotationFlag.INVISIBLE) && !this._hasFlag(flags, 
_util.AnnotationFlag.NOVIEW);
+  }
+
+  _isPrintable(flags) {
+    return this._hasFlag(flags, _util.AnnotationFlag.PRINT) && !this._hasFlag(flags, 
_util.AnnotationFlag.INVISIBLE);
+  }
+
+  mustBeViewed(annotationStorage) {
+    const storageEntry = annotationStorage && annotationStorage.get(this.data.id);
+
+    if (storageEntry && storageEntry.hidden !== undefined) {
+      return !storageEntry.hidden;
+    }
+
+    return this.viewable && !this._hasFlag(this.flags, _util.AnnotationFlag.HIDDEN);
+  }
+
+  mustBePrinted(annotationStorage) {
+    const storageEntry = annotationStorage && annotationStorage.get(this.data.id);
+
+    if (storageEntry && storageEntry.print !== undefined) {
+      return storageEntry.print;
+    }
+
+    return this.printable;
+  }
+
+  get viewable() {
+    if (this.data.quadPoints === null) {
+      return false;
+    }
+
+    if (this.flags === 0) {
+      return true;
+    }
+
+    return this._isViewable(this.flags);
+  }
+
+  get printable() {
+    if (this.data.quadPoints === null) {
+      return false;
+    }
+
+    if (this.flags === 0) {
+      return false;
+    }
+
+    return this._isPrintable(this.flags);
+  }
+
+  _parseStringHelper(data) {
+    const str = typeof data === "string" ? (0, _util.stringToPDFString)(data) : "";
+    const dir = str && (0, _bidi.bidi)(str).dir === "rtl" ? "rtl" : "ltr";
+    return {
+      str,
+      dir
+    };
+  }
+
+  setTitle(title) {
+    this._title = this._parseStringHelper(title);
+  }
+
+  setContents(contents) {
+    this._contents = this._parseStringHelper(contents);
+  }
+
+  setModificationDate(modificationDate) {
+    this.modificationDate = (0, _util.isString)(modificationDate) ? modificationDate : null;
+  }
+
+  setFlags(flags) {
+    this.flags = Number.isInteger(flags) && flags > 0 ? flags : 0;
+  }
+
+  hasFlag(flag) {
+    return this._hasFlag(this.flags, flag);
+  }
+
+  setRectangle(rectangle) {
+    if (Array.isArray(rectangle) && rectangle.length === 4) {
+      this.rectangle = _util.Util.normalizeRect(rectangle);
+    } else {
+      this.rectangle = [0, 0, 0, 0];
+    }
+  }
+
+  setColor(color) {
+    this.color = getRgbColor(color);
+  }
+
+  setBorderAndBackgroundColors(mk) {
+    if (mk instanceof _primitives.Dict) {
+      this.borderColor = getRgbColor(mk.getArray("BC"), null);
+      this.backgroundColor = getRgbColor(mk.getArray("BG"), null);
+    } else {
+      this.borderColor = this.backgroundColor = null;
+    }
+  }
+
+  setBorderStyle(borderStyle) {
+    this.borderStyle = new AnnotationBorderStyle();
+
+    if (!(0, _primitives.isDict)(borderStyle)) {
+      return;
+    }
+
+    if (borderStyle.has("BS")) {
+      const dict = borderStyle.get("BS");
+      const dictType = dict.get("Type");
+
+      if (!dictType || (0, _primitives.isName)(dictType, "Border")) {
+        this.borderStyle.setWidth(dict.get("W"), this.rectangle);
+        this.borderStyle.setStyle(dict.get("S"));
+        this.borderStyle.setDashArray(dict.getArray("D"));
+      }
+    } else if (borderStyle.has("Border")) {
+      const array = borderStyle.getArray("Border");
+
+      if (Array.isArray(array) && array.length >= 3) {
+        this.borderStyle.setHorizontalCornerRadius(array[0]);
+        this.borderStyle.setVerticalCornerRadius(array[1]);
+        this.borderStyle.setWidth(array[2], this.rectangle);
+
+        if (array.length === 4) {
+          this.borderStyle.setDashArray(array[3]);
+        }
+      }
+    } else {
+      this.borderStyle.setWidth(0);
+    }
+  }
+
+  setAppearance(dict) {
+    this.appearance = null;
+    const appearanceStates = dict.get("AP");
+
+    if (!(0, _primitives.isDict)(appearanceStates)) {
+      return;
+    }
+
+    const normalAppearanceState = appearanceStates.get("N");
+
+    if ((0, _primitives.isStream)(normalAppearanceState)) {
+      this.appearance = normalAppearanceState;
+      return;
+    }
+
+    if (!(0, _primitives.isDict)(normalAppearanceState)) {
+      return;
+    }
+
+    const as = dict.get("AS");
+
+    if (!(0, _primitives.isName)(as) || !normalAppearanceState.has(as.name)) {
+      return;
+    }
+
+    this.appearance = normalAppearanceState.get(as.name);
+  }
+
+  loadResources(keys) {
+    return this.appearance.dict.getAsync("Resources").then(resources => {
+      if (!resources) {
+        return undefined;
+      }
+
+      const objectLoader = new _object_loader.ObjectLoader(resources, keys, resources.xref);
+      return objectLoader.load().then(function () {
+        return resources;
+      });
+    });
+  }
+
+  getOperatorList(evaluator, task, renderForms, annotationStorage) {
+    if (!this.appearance) {
+      return Promise.resolve(new _operator_list.OperatorList());
+    }
+
+    const appearance = this.appearance;
+    const data = this.data;
+    const appearanceDict = appearance.dict;
+    const resourcesPromise = this.loadResources(["ExtGState", "ColorSpace", "Pattern", "Shading", "XObject", 
"Font"]);
+    const bbox = appearanceDict.getArray("BBox") || [0, 0, 1, 1];
+    const matrix = appearanceDict.getArray("Matrix") || [1, 0, 0, 1, 0, 0];
+    const transform = getTransformMatrix(data.rect, bbox, matrix);
+    return resourcesPromise.then(resources => {
+      const opList = new _operator_list.OperatorList();
+      opList.addOp(_util.OPS.beginAnnotation, [data.id, data.rect, transform, matrix]);
+      return evaluator.getOperatorList({
+        stream: appearance,
+        task,
+        resources,
+        operatorList: opList,
+        fallbackFontDict: this._fallbackFontDict
+      }).then(() => {
+        opList.addOp(_util.OPS.endAnnotation, []);
+        this.reset();
+        return opList;
+      });
+    });
+  }
+
+  async save(evaluator, task, annotationStorage) {
+    return null;
+  }
+
+  getFieldObject() {
+    if (this.data.kidIds) {
+      return {
+        id: this.data.id,
+        actions: this.data.actions,
+        name: this.data.fieldName,
+        strokeColor: this.data.borderColor,
+        fillColor: this.data.backgroundColor,
+        type: "",
+        kidIds: this.data.kidIds,
+        page: this.data.pageIndex
+      };
+    }
+
+    return null;
+  }
+
+  reset() {
+    for (const stream of this._streams) {
+      stream.reset();
+    }
+  }
+
+  _constructFieldName(dict) {
+    if (!dict.has("T") && !dict.has("Parent")) {
+      (0, _util.warn)("Unknown field name, falling back to empty field name.");
+      return "";
+    }
+
+    if (!dict.has("Parent")) {
+      return (0, _util.stringToPDFString)(dict.get("T"));
+    }
+
+    const fieldName = [];
+
+    if (dict.has("T")) {
+      fieldName.unshift((0, _util.stringToPDFString)(dict.get("T")));
+    }
+
+    let loopDict = dict;
+    const visited = new _primitives.RefSet();
+
+    if (dict.objId) {
+      visited.put(dict.objId);
+    }
+
+    while (loopDict.has("Parent")) {
+      loopDict = loopDict.get("Parent");
+
+      if (!(loopDict instanceof _primitives.Dict) || loopDict.objId && visited.has(loopDict.objId)) {
+        break;
+      }
+
+      if (loopDict.objId) {
+        visited.put(loopDict.objId);
+      }
+
+      if (loopDict.has("T")) {
+        fieldName.unshift((0, _util.stringToPDFString)(loopDict.get("T")));
+      }
+    }
+
+    return fieldName.join(".");
+  }
+
+}
+
+exports.Annotation = Annotation;
+
+class AnnotationBorderStyle {
+  constructor() {
+    this.width = 1;
+    this.style = _util.AnnotationBorderStyleType.SOLID;
+    this.dashArray = [3];
+    this.horizontalCornerRadius = 0;
+    this.verticalCornerRadius = 0;
+  }
+
+  setWidth(width, rect = [0, 0, 0, 0]) {
+    if ((0, _primitives.isName)(width)) {
+      this.width = 0;
+      return;
+    }
+
+    if (Number.isInteger(width)) {
+      if (width > 0) {
+        const maxWidth = (rect[2] - rect[0]) / 2;
+        const maxHeight = (rect[3] - rect[1]) / 2;
+
+        if (maxWidth > 0 && maxHeight > 0 && (width > maxWidth || width > maxHeight)) {
+          (0, _util.warn)(`AnnotationBorderStyle.setWidth - ignoring width: ${width}`);
+          width = 1;
+        }
+      }
+
+      this.width = width;
+    }
+  }
+
+  setStyle(style) {
+    if (!(0, _primitives.isName)(style)) {
+      return;
+    }
+
+    switch (style.name) {
+      case "S":
+        this.style = _util.AnnotationBorderStyleType.SOLID;
+        break;
+
+      case "D":
+        this.style = _util.AnnotationBorderStyleType.DASHED;
+        break;
+
+      case "B":
+        this.style = _util.AnnotationBorderStyleType.BEVELED;
+        break;
+
+      case "I":
+        this.style = _util.AnnotationBorderStyleType.INSET;
+        break;
+
+      case "U":
+        this.style = _util.AnnotationBorderStyleType.UNDERLINE;
+        break;
+
+      default:
+        break;
+    }
+  }
+
+  setDashArray(dashArray) {
+    if (Array.isArray(dashArray) && dashArray.length > 0) {
+      let isValid = true;
+      let allZeros = true;
+
+      for (const element of dashArray) {
+        const validNumber = +element >= 0;
+
+        if (!validNumber) {
+          isValid = false;
+          break;
+        } else if (element > 0) {
+          allZeros = false;
+        }
+      }
+
+      if (isValid && !allZeros) {
+        this.dashArray = dashArray;
+      } else {
+        this.width = 0;
+      }
+    } else if (dashArray) {
+      this.width = 0;
+    }
+  }
+
+  setHorizontalCornerRadius(radius) {
+    if (Number.isInteger(radius)) {
+      this.horizontalCornerRadius = radius;
+    }
+  }
+
+  setVerticalCornerRadius(radius) {
+    if (Number.isInteger(radius)) {
+      this.verticalCornerRadius = radius;
+    }
+  }
+
+}
+
+exports.AnnotationBorderStyle = AnnotationBorderStyle;
+
+class MarkupAnnotation extends Annotation {
+  constructor(parameters) {
+    super(parameters);
+    const dict = parameters.dict;
+
+    if (dict.has("IRT")) {
+      const rawIRT = dict.getRaw("IRT");
+      this.data.inReplyTo = (0, _primitives.isRef)(rawIRT) ? rawIRT.toString() : null;
+      const rt = dict.get("RT");
+      this.data.replyType = (0, _primitives.isName)(rt) ? rt.name : _util.AnnotationReplyType.REPLY;
+    }
+
+    if (this.data.replyType === _util.AnnotationReplyType.GROUP) {
+      const parent = dict.get("IRT");
+      this.setTitle(parent.get("T"));
+      this.data.titleObj = this._title;
+      this.setContents(parent.get("Contents"));
+      this.data.contentsObj = this._contents;
+
+      if (!parent.has("CreationDate")) {
+        this.data.creationDate = null;
+      } else {
+        this.setCreationDate(parent.get("CreationDate"));
+        this.data.creationDate = this.creationDate;
+      }
+
+      if (!parent.has("M")) {
+        this.data.modificationDate = null;
+      } else {
+        this.setModificationDate(parent.get("M"));
+        this.data.modificationDate = this.modificationDate;
+      }
+
+      this.data.hasPopup = parent.has("Popup");
+
+      if (!parent.has("C")) {
+        this.data.color = null;
+      } else {
+        this.setColor(parent.getArray("C"));
+        this.data.color = this.color;
+      }
+    } else {
+      this.data.titleObj = this._title;
+      this.setCreationDate(dict.get("CreationDate"));
+      this.data.creationDate = this.creationDate;
+      this.data.hasPopup = dict.has("Popup");
+
+      if (!dict.has("C")) {
+        this.data.color = null;
+      }
+    }
+  }
+
+  setCreationDate(creationDate) {
+    this.creationDate = (0, _util.isString)(creationDate) ? creationDate : null;
+  }
+
+  _setDefaultAppearance({
+    xref,
+    extra,
+    strokeColor,
+    fillColor,
+    blendMode,
+    strokeAlpha,
+    fillAlpha,
+    pointsCallback
+  }) {
+    let minX = Number.MAX_VALUE;
+    let minY = Number.MAX_VALUE;
+    let maxX = Number.MIN_VALUE;
+    let maxY = Number.MIN_VALUE;
+    const buffer = ["q"];
+
+    if (extra) {
+      buffer.push(extra);
+    }
+
+    if (strokeColor) {
+      buffer.push(`${strokeColor[0]} ${strokeColor[1]} ${strokeColor[2]} RG`);
+    }
+
+    if (fillColor) {
+      buffer.push(`${fillColor[0]} ${fillColor[1]} ${fillColor[2]} rg`);
+    }
+
+    let pointsArray = this.data.quadPoints;
+
+    if (!pointsArray) {
+      pointsArray = [[{
+        x: this.rectangle[0],
+        y: this.rectangle[3]
+      }, {
+        x: this.rectangle[2],
+        y: this.rectangle[3]
+      }, {
+        x: this.rectangle[0],
+        y: this.rectangle[1]
+      }, {
+        x: this.rectangle[2],
+        y: this.rectangle[1]
+      }]];
+    }
+
+    for (const points of pointsArray) {
+      const [mX, MX, mY, MY] = pointsCallback(buffer, points);
+      minX = Math.min(minX, mX);
+      maxX = Math.max(maxX, MX);
+      minY = Math.min(minY, mY);
+      maxY = Math.max(maxY, MY);
+    }
+
+    buffer.push("Q");
+    const formDict = new _primitives.Dict(xref);
+    const appearanceStreamDict = new _primitives.Dict(xref);
+    appearanceStreamDict.set("Subtype", _primitives.Name.get("Form"));
+    const appearanceStream = new _stream.StringStream(buffer.join(" "));
+    appearanceStream.dict = appearanceStreamDict;
+    formDict.set("Fm0", appearanceStream);
+    const gsDict = new _primitives.Dict(xref);
+
+    if (blendMode) {
+      gsDict.set("BM", _primitives.Name.get(blendMode));
+    }
+
+    if (typeof strokeAlpha === "number") {
+      gsDict.set("CA", strokeAlpha);
+    }
+
+    if (typeof fillAlpha === "number") {
+      gsDict.set("ca", fillAlpha);
+    }
+
+    const stateDict = new _primitives.Dict(xref);
+    stateDict.set("GS0", gsDict);
+    const resources = new _primitives.Dict(xref);
+    resources.set("ExtGState", stateDict);
+    resources.set("XObject", formDict);
+    const appearanceDict = new _primitives.Dict(xref);
+    appearanceDict.set("Resources", resources);
+    const bbox = this.data.rect = [minX, minY, maxX, maxY];
+    appearanceDict.set("BBox", bbox);
+    this.appearance = new _stream.StringStream("/GS0 gs /Fm0 Do");
+    this.appearance.dict = appearanceDict;
+
+    this._streams.push(this.appearance, appearanceStream);
+  }
+
+}
+
+exports.MarkupAnnotation = MarkupAnnotation;
+
+class WidgetAnnotation extends Annotation {
+  constructor(params) {
+    super(params);
+    const dict = params.dict;
+    const data = this.data;
+    this.ref = params.ref;
+    data.annotationType = _util.AnnotationType.WIDGET;
+
+    if (data.fieldName === undefined) {
+      data.fieldName = this._constructFieldName(dict);
+    }
+
+    if (data.actions === undefined) {
+      data.actions = (0, _core_utils.collectActions)(params.xref, dict, _util.AnnotationActionEventType);
+    }
+
+    const fieldValue = (0, _core_utils.getInheritableProperty)({
+      dict,
+      key: "V",
+      getArray: true
+    });
+    data.fieldValue = this._decodeFormValue(fieldValue);
+    const defaultFieldValue = (0, _core_utils.getInheritableProperty)({
+      dict,
+      key: "DV",
+      getArray: true
+    });
+    data.defaultFieldValue = this._decodeFormValue(defaultFieldValue);
+
+    if (fieldValue === undefined && data.defaultFieldValue !== null) {
+      data.fieldValue = data.defaultFieldValue;
+    }
+
+    data.alternativeText = (0, _util.stringToPDFString)(dict.get("TU") || "");
+    const defaultAppearance = (0, _core_utils.getInheritableProperty)({
+      dict,
+      key: "DA"
+    }) || params.acroForm.get("DA");
+    this._defaultAppearance = (0, _util.isString)(defaultAppearance) ? defaultAppearance : "";
+    data.defaultAppearanceData = (0, _default_appearance.parseDefaultAppearance)(this._defaultAppearance);
+    const fieldType = (0, _core_utils.getInheritableProperty)({
+      dict,
+      key: "FT"
+    });
+    data.fieldType = (0, _primitives.isName)(fieldType) ? fieldType.name : null;
+    const localResources = (0, _core_utils.getInheritableProperty)({
+      dict,
+      key: "DR"
+    });
+    const acroFormResources = params.acroForm.get("DR");
+    const appearanceResources = this.appearance && this.appearance.dict.get("Resources");
+    this._fieldResources = {
+      localResources,
+      acroFormResources,
+      appearanceResources,
+      mergedResources: _primitives.Dict.merge({
+        xref: params.xref,
+        dictArray: [localResources, appearanceResources, acroFormResources],
+        mergeSubDicts: true
+      })
+    };
+    data.fieldFlags = (0, _core_utils.getInheritableProperty)({
+      dict,
+      key: "Ff"
+    });
+
+    if (!Number.isInteger(data.fieldFlags) || data.fieldFlags < 0) {
+      data.fieldFlags = 0;
+    }
+
+    data.readOnly = this.hasFieldFlag(_util.AnnotationFieldFlag.READONLY);
+    data.hidden = this._hasFlag(data.annotationFlags, _util.AnnotationFlag.HIDDEN);
+  }
+
+  _decodeFormValue(formValue) {
+    if (Array.isArray(formValue)) {
+      return formValue.filter(item => (0, _util.isString)(item)).map(item => (0, 
_util.stringToPDFString)(item));
+    } else if ((0, _primitives.isName)(formValue)) {
+      return (0, _util.stringToPDFString)(formValue.name);
+    } else if ((0, _util.isString)(formValue)) {
+      return (0, _util.stringToPDFString)(formValue);
+    }
+
+    return null;
+  }
+
+  hasFieldFlag(flag) {
+    return !!(this.data.fieldFlags & flag);
+  }
+
+  getOperatorList(evaluator, task, renderForms, annotationStorage) {
+    if (renderForms && !(this instanceof SignatureWidgetAnnotation)) {
+      return Promise.resolve(new _operator_list.OperatorList());
+    }
+
+    if (!this._hasText) {
+      return super.getOperatorList(evaluator, task, renderForms, annotationStorage);
+    }
+
+    return this._getAppearance(evaluator, task, annotationStorage).then(content => {
+      if (this.appearance && content === null) {
+        return super.getOperatorList(evaluator, task, renderForms, annotationStorage);
+      }
+
+      const operatorList = new _operator_list.OperatorList();
+
+      if (!this._defaultAppearance || content === null) {
+        return operatorList;
+      }
+
+      const matrix = [1, 0, 0, 1, 0, 0];
+      const bbox = [0, 0, this.data.rect[2] - this.data.rect[0], this.data.rect[3] - this.data.rect[1]];
+      const transform = getTransformMatrix(this.data.rect, bbox, matrix);
+      operatorList.addOp(_util.OPS.beginAnnotation, [this.data.id, this.data.rect, transform, matrix]);
+      const stream = new _stream.StringStream(content);
+      return evaluator.getOperatorList({
+        stream,
+        task,
+        resources: this._fieldResources.mergedResources,
+        operatorList
+      }).then(function () {
+        operatorList.addOp(_util.OPS.endAnnotation, []);
+        return operatorList;
+      });
+    });
+  }
+
+  async save(evaluator, task, annotationStorage) {
+    if (!annotationStorage) {
+      return null;
+    }
+
+    const storageEntry = annotationStorage.get(this.data.id);
+    const value = storageEntry && storageEntry.value;
+
+    if (value === this.data.fieldValue || value === undefined) {
+      return null;
+    }
+
+    let appearance = await this._getAppearance(evaluator, task, annotationStorage);
+
+    if (appearance === null) {
+      return null;
+    }
+
+    const {
+      xref
+    } = evaluator;
+    const dict = xref.fetchIfRef(this.ref);
+
+    if (!(0, _primitives.isDict)(dict)) {
+      return null;
+    }
+
+    const bbox = [0, 0, this.data.rect[2] - this.data.rect[0], this.data.rect[3] - this.data.rect[1]];
+    const xfa = {
+      path: (0, _util.stringToPDFString)(dict.get("T") || ""),
+      value
+    };
+    const newRef = xref.getNewRef();
+    const AP = new _primitives.Dict(xref);
+    AP.set("N", newRef);
+    const encrypt = xref.encrypt;
+    let originalTransform = null;
+    let newTransform = null;
+
+    if (encrypt) {
+      originalTransform = encrypt.createCipherTransform(this.ref.num, this.ref.gen);
+      newTransform = encrypt.createCipherTransform(newRef.num, newRef.gen);
+      appearance = newTransform.encryptString(appearance);
+    }
+
+    dict.set("V", (0, _util.isAscii)(value) ? value : (0, _util.stringToUTF16BEString)(value));
+    dict.set("AP", AP);
+    dict.set("M", `D:${(0, _util.getModificationDate)()}`);
+    const appearanceDict = new _primitives.Dict(xref);
+    appearanceDict.set("Length", appearance.length);
+    appearanceDict.set("Subtype", _primitives.Name.get("Form"));
+    appearanceDict.set("Resources", this._getSaveFieldResources(xref));
+    appearanceDict.set("BBox", bbox);
+    const bufferOriginal = [`${this.ref.num} ${this.ref.gen} obj\n`];
+    (0, _writer.writeDict)(dict, bufferOriginal, originalTransform);
+    bufferOriginal.push("\nendobj\n");
+    const bufferNew = [`${newRef.num} ${newRef.gen} obj\n`];
+    (0, _writer.writeDict)(appearanceDict, bufferNew, newTransform);
+    bufferNew.push(" stream\n", appearance, "\nendstream\nendobj\n");
+    return [{
+      ref: this.ref,
+      data: bufferOriginal.join(""),
+      xfa
+    }, {
+      ref: newRef,
+      data: bufferNew.join(""),
+      xfa: null
+    }];
+  }
+
+  async _getAppearance(evaluator, task, annotationStorage) {
+    const isPassword = this.hasFieldFlag(_util.AnnotationFieldFlag.PASSWORD);
+
+    if (!annotationStorage || isPassword) {
+      return null;
+    }
+
+    const storageEntry = annotationStorage.get(this.data.id);
+    let value = storageEntry && storageEntry.value;
+
+    if (value === undefined) {
+      return null;
+    }
+
+    value = value.trim();
+
+    if (value === "") {
+      return "";
+    }
+
+    let lineCount = -1;
+
+    if (this.data.multiLine) {
+      lineCount = value.split(/\r\n|\r|\n/).length;
+    }
+
+    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];
+
+    if (!this._defaultAppearance) {
+      this.data.defaultAppearanceData = (0, 
_default_appearance.parseDefaultAppearance)(this._defaultAppearance = "/Helvetica 0 Tf 0 g");
+    }
+
+    const [defaultAppearance, fontSize] = this._computeFontSize(totalHeight, lineCount);
+
+    const font = await this._getFontData(evaluator, task);
+    let descent = font.descent;
+
+    if (isNaN(descent)) {
+      descent = 0;
+    }
+
+    const vPadding = defaultPadding + Math.abs(descent) * fontSize;
+    const alignment = this.data.textAlignment;
+
+    if (this.data.multiLine) {
+      return this._getMultilineAppearance(defaultAppearance, value, font, fontSize, totalWidth, totalHeight, 
alignment, hPadding, vPadding);
+    }
+
+    const encodedString = font.encodeString(value).join("");
+
+    if (this.data.comb) {
+      return this._getCombAppearance(defaultAppearance, font, encodedString, totalWidth, hPadding, vPadding);
+    }
+
+    if (alignment === 0 || alignment > 2) {
+      return "/Tx BMC q BT " + defaultAppearance + ` 1 0 0 1 ${hPadding} ${vPadding} Tm (${(0, 
_util.escapeString)(encodedString)}) Tj` + " ET Q EMC";
+    }
+
+    const renderedText = this._renderText(encodedString, font, fontSize, totalWidth, alignment, hPadding, 
vPadding);
+
+    return "/Tx BMC q BT " + defaultAppearance + ` 1 0 0 1 0 0 Tm ${renderedText}` + " ET Q EMC";
+  }
+
+  async _getFontData(evaluator, task) {
+    const operatorList = new _operator_list.OperatorList();
+    const initialState = {
+      font: null,
+
+      clone() {
+        return this;
+      }
+
+    };
+    const {
+      fontName,
+      fontSize
+    } = this.data.defaultAppearanceData;
+    await evaluator.handleSetFont(this._fieldResources.mergedResources, [fontName && 
_primitives.Name.get(fontName), fontSize], null, operatorList, task, initialState, null);
+    return initialState.font;
+  }
+
+  _computeFontSize(height, lineCount) {
+    let {
+      fontSize
+    } = this.data.defaultAppearanceData;
+
+    if (!fontSize) {
+      const roundWithOneDigit = x => Math.round(x * 10) / 10;
+
+      const FONT_FACTOR = 0.8;
+
+      if (lineCount === -1) {
+        fontSize = roundWithOneDigit(FONT_FACTOR * height);
+      } else {
+        fontSize = 10;
+        let lineHeight = fontSize / FONT_FACTOR;
+        let numberOfLines = Math.round(height / lineHeight);
+        numberOfLines = Math.max(numberOfLines, lineCount);
+        lineHeight = height / numberOfLines;
+        fontSize = roundWithOneDigit(FONT_FACTOR * lineHeight);
+      }
+
+      const {
+        fontName,
+        fontColor
+      } = this.data.defaultAppearanceData;
+      this._defaultAppearance = (0, _default_appearance.createDefaultAppearance)({
+        fontSize,
+        fontName,
+        fontColor
+      });
+    }
+
+    return [this._defaultAppearance, fontSize];
+  }
+
+  _renderText(text, font, fontSize, totalWidth, alignment, hPadding, vPadding) {
+    const glyphs = font.charsToGlyphs(text);
+    const scale = fontSize / 1000;
+    let width = 0;
+
+    for (const glyph of glyphs) {
+      width += glyph.width * scale;
+    }
+
+    let shift;
+
+    if (alignment === 1) {
+      shift = (totalWidth - width) / 2;
+    } else if (alignment === 2) {
+      shift = totalWidth - width - hPadding;
+    } else {
+      shift = hPadding;
+    }
+
+    shift = shift.toFixed(2);
+    vPadding = vPadding.toFixed(2);
+    return `${shift} ${vPadding} Td (${(0, _util.escapeString)(text)}) Tj`;
+  }
+
+  _getSaveFieldResources(xref) {
+    const {
+      localResources,
+      appearanceResources,
+      acroFormResources
+    } = this._fieldResources;
+    const fontName = this.data.defaultAppearanceData && this.data.defaultAppearanceData.fontName;
+
+    if (!fontName) {
+      return localResources || _primitives.Dict.empty;
+    }
+
+    for (const resources of [localResources, appearanceResources]) {
+      if (resources instanceof _primitives.Dict) {
+        const localFont = resources.get("Font");
+
+        if (localFont instanceof _primitives.Dict && localFont.has(fontName)) {
+          return resources;
+        }
+      }
+    }
+
+    if (acroFormResources instanceof _primitives.Dict) {
+      const acroFormFont = acroFormResources.get("Font");
+
+      if (acroFormFont instanceof _primitives.Dict && acroFormFont.has(fontName)) {
+        const subFontDict = new _primitives.Dict(xref);
+        subFontDict.set(fontName, acroFormFont.getRaw(fontName));
+        const subResourcesDict = new _primitives.Dict(xref);
+        subResourcesDict.set("Font", subFontDict);
+        return _primitives.Dict.merge({
+          xref,
+          dictArray: [subResourcesDict, localResources],
+          mergeSubDicts: true
+        });
+      }
+    }
+
+    return localResources || _primitives.Dict.empty;
+  }
+
+  getFieldObject() {
+    return null;
+  }
+
+}
+
+class TextWidgetAnnotation extends WidgetAnnotation {
+  constructor(params) {
+    super(params);
+    this._hasText = true;
+    const dict = params.dict;
+
+    if (!(0, _util.isString)(this.data.fieldValue)) {
+      this.data.fieldValue = "";
+    }
+
+    let alignment = (0, _core_utils.getInheritableProperty)({
+      dict,
+      key: "Q"
+    });
+
+    if (!Number.isInteger(alignment) || alignment < 0 || alignment > 2) {
+      alignment = null;
+    }
+
+    this.data.textAlignment = alignment;
+    let maximumLength = (0, _core_utils.getInheritableProperty)({
+      dict,
+      key: "MaxLen"
+    });
+
+    if (!Number.isInteger(maximumLength) || maximumLength < 0) {
+      maximumLength = null;
+    }
+
+    this.data.maxLen = maximumLength;
+    this.data.multiLine = this.hasFieldFlag(_util.AnnotationFieldFlag.MULTILINE);
+    this.data.comb = this.hasFieldFlag(_util.AnnotationFieldFlag.COMB) && 
!this.hasFieldFlag(_util.AnnotationFieldFlag.MULTILINE) && 
!this.hasFieldFlag(_util.AnnotationFieldFlag.PASSWORD) && 
!this.hasFieldFlag(_util.AnnotationFieldFlag.FILESELECT) && this.data.maxLen !== null;
+  }
+
+  _getCombAppearance(defaultAppearance, font, text, width, hPadding, vPadding) {
+    const combWidth = (width / this.data.maxLen).toFixed(2);
+    const buf = [];
+    const positions = font.getCharPositions(text);
+
+    for (const [start, end] of positions) {
+      buf.push(`(${(0, _util.escapeString)(text.substring(start, end))}) Tj`);
+    }
+
+    const renderedComb = buf.join(` ${combWidth} 0 Td `);
+    return "/Tx BMC q BT " + defaultAppearance + ` 1 0 0 1 ${hPadding} ${vPadding} Tm ${renderedComb}` + " 
ET Q EMC";
+  }
+
+  _getMultilineAppearance(defaultAppearance, text, font, fontSize, width, height, alignment, hPadding, 
vPadding) {
+    const lines = text.split(/\r\n|\r|\n/);
+    const buf = [];
+    const totalWidth = width - 2 * hPadding;
+
+    for (const line of lines) {
+      const chunks = this._splitLine(line, font, fontSize, totalWidth);
+
+      for (const chunk of chunks) {
+        const padding = buf.length === 0 ? hPadding : 0;
+        buf.push(this._renderText(chunk, font, fontSize, width, alignment, padding, -fontSize));
+      }
+    }
+
+    const renderedText = buf.join("\n");
+    return "/Tx BMC q BT " + defaultAppearance + ` 1 0 0 1 0 ${height} Tm ${renderedText}` + " ET Q EMC";
+  }
+
+  _splitLine(line, font, fontSize, width) {
+    line = font.encodeString(line).join("");
+    const glyphs = font.charsToGlyphs(line);
+
+    if (glyphs.length <= 1) {
+      return [line];
+    }
+
+    const positions = font.getCharPositions(line);
+    const scale = fontSize / 1000;
+    const chunks = [];
+    let lastSpacePosInStringStart = -1,
+        lastSpacePosInStringEnd = -1,
+        lastSpacePos = -1,
+        startChunk = 0,
+        currentWidth = 0;
+
+    for (let i = 0, ii = glyphs.length; i < ii; i++) {
+      const [start, end] = positions[i];
+      const glyph = glyphs[i];
+      const glyphWidth = glyph.width * scale;
+
+      if (glyph.unicode === " ") {
+        if (currentWidth + glyphWidth > width) {
+          chunks.push(line.substring(startChunk, start));
+          startChunk = start;
+          currentWidth = glyphWidth;
+          lastSpacePosInStringStart = -1;
+          lastSpacePos = -1;
+        } else {
+          currentWidth += glyphWidth;
+          lastSpacePosInStringStart = start;
+          lastSpacePosInStringEnd = end;
+          lastSpacePos = i;
+        }
+      } else {
+        if (currentWidth + glyphWidth > width) {
+          if (lastSpacePosInStringStart !== -1) {
+            chunks.push(line.substring(startChunk, lastSpacePosInStringEnd));
+            startChunk = lastSpacePosInStringEnd;
+            i = lastSpacePos + 1;
+            lastSpacePosInStringStart = -1;
+            currentWidth = 0;
+          } else {
+            chunks.push(line.substring(startChunk, start));
+            startChunk = start;
+            currentWidth = glyphWidth;
+          }
+        } else {
+          currentWidth += glyphWidth;
+        }
+      }
+    }
+
+    if (startChunk < line.length) {
+      chunks.push(line.substring(startChunk, line.length));
+    }
+
+    return chunks;
+  }
+
+  getFieldObject() {
+    return {
+      id: this.data.id,
+      value: this.data.fieldValue,
+      defaultValue: this.data.defaultFieldValue,
+      multiline: this.data.multiLine,
+      password: this.hasFieldFlag(_util.AnnotationFieldFlag.PASSWORD),
+      charLimit: this.data.maxLen,
+      comb: this.data.comb,
+      editable: !this.data.readOnly,
+      hidden: this.data.hidden,
+      name: this.data.fieldName,
+      rect: this.data.rect,
+      actions: this.data.actions,
+      page: this.data.pageIndex,
+      strokeColor: this.data.borderColor,
+      fillColor: this.data.backgroundColor,
+      type: "text"
+    };
+  }
+
+}
+
+class ButtonWidgetAnnotation extends WidgetAnnotation {
+  constructor(params) {
+    super(params);
+    this.checkedAppearance = null;
+    this.uncheckedAppearance = null;
+    this.data.checkBox = !this.hasFieldFlag(_util.AnnotationFieldFlag.RADIO) && 
!this.hasFieldFlag(_util.AnnotationFieldFlag.PUSHBUTTON);
+    this.data.radioButton = this.hasFieldFlag(_util.AnnotationFieldFlag.RADIO) && 
!this.hasFieldFlag(_util.AnnotationFieldFlag.PUSHBUTTON);
+    this.data.pushButton = this.hasFieldFlag(_util.AnnotationFieldFlag.PUSHBUTTON);
+    this.data.isTooltipOnly = false;
+
+    if (this.data.checkBox) {
+      this._processCheckBox(params);
+    } else if (this.data.radioButton) {
+      this._processRadioButton(params);
+    } else if (this.data.pushButton) {
+      this._processPushButton(params);
+    } else {
+      (0, _util.warn)("Invalid field flags for button widget annotation");
+    }
+  }
+
+  async getOperatorList(evaluator, task, renderForms, annotationStorage) {
+    if (this.data.pushButton) {
+      return super.getOperatorList(evaluator, task, false, annotationStorage);
+    }
+
+    let value = null;
+
+    if (annotationStorage) {
+      const storageEntry = annotationStorage.get(this.data.id);
+      value = storageEntry ? storageEntry.value : null;
+    }
+
+    if (value === null) {
+      if (this.appearance) {
+        return super.getOperatorList(evaluator, task, renderForms, annotationStorage);
+      }
+
+      if (this.data.checkBox) {
+        value = this.data.fieldValue === this.data.exportValue;
+      } else {
+        value = this.data.fieldValue === this.data.buttonValue;
+      }
+    }
+
+    const appearance = value ? this.checkedAppearance : this.uncheckedAppearance;
+
+    if (appearance) {
+      const savedAppearance = this.appearance;
+      this.appearance = appearance;
+      const operatorList = super.getOperatorList(evaluator, task, renderForms, annotationStorage);
+      this.appearance = savedAppearance;
+      return operatorList;
+    }
+
+    return new _operator_list.OperatorList();
+  }
+
+  async save(evaluator, task, annotationStorage) {
+    if (this.data.checkBox) {
+      return this._saveCheckbox(evaluator, task, annotationStorage);
+    }
+
+    if (this.data.radioButton) {
+      return this._saveRadioButton(evaluator, task, annotationStorage);
+    }
+
+    return null;
+  }
+
+  async _saveCheckbox(evaluator, task, annotationStorage) {
+    if (!annotationStorage) {
+      return null;
+    }
+
+    const storageEntry = annotationStorage.get(this.data.id);
+    const value = storageEntry && storageEntry.value;
+
+    if (value === undefined) {
+      return null;
+    }
+
+    const defaultValue = this.data.fieldValue === this.data.exportValue;
+
+    if (defaultValue === value) {
+      return null;
+    }
+
+    const dict = evaluator.xref.fetchIfRef(this.ref);
+
+    if (!(0, _primitives.isDict)(dict)) {
+      return null;
+    }
+
+    const xfa = {
+      path: (0, _util.stringToPDFString)(dict.get("T") || ""),
+      value: value ? this.data.exportValue : ""
+    };
+
+    const name = _primitives.Name.get(value ? this.data.exportValue : "Off");
+
+    dict.set("V", name);
+    dict.set("AS", name);
+    dict.set("M", `D:${(0, _util.getModificationDate)()}`);
+    const encrypt = evaluator.xref.encrypt;
+    let originalTransform = null;
+
+    if (encrypt) {
+      originalTransform = encrypt.createCipherTransform(this.ref.num, this.ref.gen);
+    }
+
+    const buffer = [`${this.ref.num} ${this.ref.gen} obj\n`];
+    (0, _writer.writeDict)(dict, buffer, originalTransform);
+    buffer.push("\nendobj\n");
+    return [{
+      ref: this.ref,
+      data: buffer.join(""),
+      xfa
+    }];
+  }
+
+  async _saveRadioButton(evaluator, task, annotationStorage) {
+    if (!annotationStorage) {
+      return null;
+    }
+
+    const storageEntry = annotationStorage.get(this.data.id);
+    const value = storageEntry && storageEntry.value;
+
+    if (value === undefined) {
+      return null;
+    }
+
+    const defaultValue = this.data.fieldValue === this.data.buttonValue;
+
+    if (defaultValue === value) {
+      return null;
+    }
+
+    const dict = evaluator.xref.fetchIfRef(this.ref);
+
+    if (!(0, _primitives.isDict)(dict)) {
+      return null;
+    }
+
+    const xfa = {
+      path: (0, _util.stringToPDFString)(dict.get("T") || ""),
+      value: value ? this.data.buttonValue : ""
+    };
+
+    const name = _primitives.Name.get(value ? this.data.buttonValue : "Off");
+
+    let parentBuffer = null;
+    const encrypt = evaluator.xref.encrypt;
+
+    if (value) {
+      if ((0, _primitives.isRef)(this.parent)) {
+        const parent = evaluator.xref.fetch(this.parent);
+        let parentTransform = null;
+
+        if (encrypt) {
+          parentTransform = encrypt.createCipherTransform(this.parent.num, this.parent.gen);
+        }
+
+        parent.set("V", name);
+        parentBuffer = [`${this.parent.num} ${this.parent.gen} obj\n`];
+        (0, _writer.writeDict)(parent, parentBuffer, parentTransform);
+        parentBuffer.push("\nendobj\n");
+      } else if ((0, _primitives.isDict)(this.parent)) {
+        this.parent.set("V", name);
+      }
+    }
+
+    dict.set("AS", name);
+    dict.set("M", `D:${(0, _util.getModificationDate)()}`);
+    let originalTransform = null;
+
+    if (encrypt) {
+      originalTransform = encrypt.createCipherTransform(this.ref.num, this.ref.gen);
+    }
+
+    const buffer = [`${this.ref.num} ${this.ref.gen} obj\n`];
+    (0, _writer.writeDict)(dict, buffer, originalTransform);
+    buffer.push("\nendobj\n");
+    const newRefs = [{
+      ref: this.ref,
+      data: buffer.join(""),
+      xfa
+    }];
+
+    if (parentBuffer !== null) {
+      newRefs.push({
+        ref: this.parent,
+        data: parentBuffer.join(""),
+        xfa: null
+      });
+    }
+
+    return newRefs;
+  }
+
+  _getDefaultCheckedAppearance(params, type) {
+    const width = this.data.rect[2] - this.data.rect[0];
+    const height = this.data.rect[3] - this.data.rect[1];
+    const bbox = [0, 0, width, height];
+    const FONT_RATIO = 0.8;
+    const fontSize = Math.min(width, height) * FONT_RATIO;
+    let metrics, char;
+
+    if (type === "check") {
+      metrics = {
+        width: 0.755 * fontSize,
+        height: 0.705 * fontSize
+      };
+      char = "\x33";
+    } else if (type === "disc") {
+      metrics = {
+        width: 0.791 * fontSize,
+        height: 0.705 * fontSize
+      };
+      char = "\x6C";
+    } else {
+      (0, _util.unreachable)(`_getDefaultCheckedAppearance - unsupported type: ${type}`);
+    }
+
+    const xShift = (width - metrics.width) / 2;
+    const yShift = (height - metrics.height) / 2;
+    const appearance = `q BT /PdfJsZaDb ${fontSize} Tf 0 g ${xShift} ${yShift} Td (${char}) Tj ET Q`;
+    const appearanceStreamDict = new _primitives.Dict(params.xref);
+    appearanceStreamDict.set("FormType", 1);
+    appearanceStreamDict.set("Subtype", _primitives.Name.get("Form"));
+    appearanceStreamDict.set("Type", _primitives.Name.get("XObject"));
+    appearanceStreamDict.set("BBox", bbox);
+    appearanceStreamDict.set("Matrix", [1, 0, 0, 1, 0, 0]);
+    appearanceStreamDict.set("Length", appearance.length);
+    const resources = new _primitives.Dict(params.xref);
+    const font = new _primitives.Dict(params.xref);
+    font.set("PdfJsZaDb", this.fallbackFontDict);
+    resources.set("Font", font);
+    appearanceStreamDict.set("Resources", resources);
+    this.checkedAppearance = new _stream.StringStream(appearance);
+    this.checkedAppearance.dict = appearanceStreamDict;
+
+    this._streams.push(this.checkedAppearance);
+  }
+
+  _processCheckBox(params) {
+    const customAppearance = params.dict.get("AP");
+
+    if (!(0, _primitives.isDict)(customAppearance)) {
+      return;
+    }
+
+    const normalAppearance = customAppearance.get("N");
+
+    if (!(0, _primitives.isDict)(normalAppearance)) {
+      return;
+    }
+
+    const asValue = this._decodeFormValue(params.dict.get("AS"));
+
+    if (typeof asValue === "string") {
+      this.data.fieldValue = asValue;
+    }
+
+    const yes = this.data.fieldValue !== null && this.data.fieldValue !== "Off" ? this.data.fieldValue : 
"Yes";
+    const exportValues = normalAppearance.getKeys();
+
+    if (exportValues.length === 0) {
+      exportValues.push("Off", yes);
+    } else if (exportValues.length === 1) {
+      if (exportValues[0] === "Off") {
+        exportValues.push(yes);
+      } else {
+        exportValues.unshift("Off");
+      }
+    } else if (exportValues.includes(yes)) {
+      exportValues.length = 0;
+      exportValues.push("Off", yes);
+    } else {
+      const otherYes = exportValues.find(v => v !== "Off");
+      exportValues.length = 0;
+      exportValues.push("Off", otherYes);
+    }
+
+    if (!exportValues.includes(this.data.fieldValue)) {
+      this.data.fieldValue = "Off";
+    }
+
+    this.data.exportValue = exportValues[1];
+    this.checkedAppearance = normalAppearance.get(this.data.exportValue) || null;
+    this.uncheckedAppearance = normalAppearance.get("Off") || null;
+
+    if (this.checkedAppearance) {
+      this._streams.push(this.checkedAppearance);
+    } else {
+      this._getDefaultCheckedAppearance(params, "check");
+    }
+
+    if (this.uncheckedAppearance) {
+      this._streams.push(this.uncheckedAppearance);
+    }
+
+    this._fallbackFontDict = this.fallbackFontDict;
+  }
+
+  _processRadioButton(params) {
+    this.data.fieldValue = this.data.buttonValue = null;
+    const fieldParent = params.dict.get("Parent");
+
+    if ((0, _primitives.isDict)(fieldParent)) {
+      this.parent = params.dict.getRaw("Parent");
+      const fieldParentValue = fieldParent.get("V");
+
+      if ((0, _primitives.isName)(fieldParentValue)) {
+        this.data.fieldValue = this._decodeFormValue(fieldParentValue);
+      }
+    }
+
+    const appearanceStates = params.dict.get("AP");
+
+    if (!(0, _primitives.isDict)(appearanceStates)) {
+      return;
+    }
+
+    const normalAppearance = appearanceStates.get("N");
+
+    if (!(0, _primitives.isDict)(normalAppearance)) {
+      return;
+    }
+
+    for (const key of normalAppearance.getKeys()) {
+      if (key !== "Off") {
+        this.data.buttonValue = this._decodeFormValue(key);
+        break;
+      }
+    }
+
+    this.checkedAppearance = normalAppearance.get(this.data.buttonValue) || null;
+    this.uncheckedAppearance = normalAppearance.get("Off") || null;
+
+    if (this.checkedAppearance) {
+      this._streams.push(this.checkedAppearance);
+    } else {
+      this._getDefaultCheckedAppearance(params, "disc");
+    }
+
+    if (this.uncheckedAppearance) {
+      this._streams.push(this.uncheckedAppearance);
+    }
+
+    this._fallbackFontDict = this.fallbackFontDict;
+  }
+
+  _processPushButton(params) {
+    if (!params.dict.has("A") && !params.dict.has("AA") && !this.data.alternativeText) {
+      (0, _util.warn)("Push buttons without action dictionaries are not supported");
+      return;
+    }
+
+    this.data.isTooltipOnly = !params.dict.has("A") && !params.dict.has("AA");
+
+    _catalog.Catalog.parseDestDictionary({
+      destDict: params.dict,
+      resultObj: this.data,
+      docBaseUrl: params.pdfManager.docBaseUrl
+    });
+  }
+
+  getFieldObject() {
+    let type = "button";
+    let exportValues;
+
+    if (this.data.checkBox) {
+      type = "checkbox";
+      exportValues = this.data.exportValue;
+    } else if (this.data.radioButton) {
+      type = "radiobutton";
+      exportValues = this.data.buttonValue;
+    }
+
+    return {
+      id: this.data.id,
+      value: this.data.fieldValue || "Off",
+      defaultValue: this.data.defaultFieldValue,
+      exportValues,
+      editable: !this.data.readOnly,
+      name: this.data.fieldName,
+      rect: this.data.rect,
+      hidden: this.data.hidden,
+      actions: this.data.actions,
+      page: this.data.pageIndex,
+      strokeColor: this.data.borderColor,
+      fillColor: this.data.backgroundColor,
+      type
+    };
+  }
+
+  get fallbackFontDict() {
+    const dict = new _primitives.Dict();
+    dict.set("BaseFont", _primitives.Name.get("ZapfDingbats"));
+    dict.set("Type", _primitives.Name.get("FallbackType"));
+    dict.set("Subtype", _primitives.Name.get("FallbackType"));
+    dict.set("Encoding", _primitives.Name.get("ZapfDingbatsEncoding"));
+    return (0, _util.shadow)(this, "fallbackFontDict", dict);
+  }
+
+}
+
+class ChoiceWidgetAnnotation extends WidgetAnnotation {
+  constructor(params) {
+    super(params);
+    this.data.options = [];
+    const options = (0, _core_utils.getInheritableProperty)({
+      dict: params.dict,
+      key: "Opt"
+    });
+
+    if (Array.isArray(options)) {
+      const xref = params.xref;
+
+      for (let i = 0, ii = options.length; i < ii; i++) {
+        const option = xref.fetchIfRef(options[i]);
+        const isOptionArray = Array.isArray(option);
+        this.data.options[i] = {
+          exportValue: this._decodeFormValue(isOptionArray ? xref.fetchIfRef(option[0]) : option),
+          displayValue: this._decodeFormValue(isOptionArray ? xref.fetchIfRef(option[1]) : option)
+        };
+      }
+    }
+
+    if ((0, _util.isString)(this.data.fieldValue)) {
+      this.data.fieldValue = [this.data.fieldValue];
+    } else if (!this.data.fieldValue) {
+      this.data.fieldValue = [];
+    }
+
+    this.data.combo = this.hasFieldFlag(_util.AnnotationFieldFlag.COMBO);
+    this.data.multiSelect = this.hasFieldFlag(_util.AnnotationFieldFlag.MULTISELECT);
+    this._hasText = true;
+  }
+
+  getFieldObject() {
+    const type = this.data.combo ? "combobox" : "listbox";
+    const value = this.data.fieldValue.length > 0 ? this.data.fieldValue[0] : null;
+    return {
+      id: this.data.id,
+      value,
+      defaultValue: this.data.defaultFieldValue,
+      editable: !this.data.readOnly,
+      name: this.data.fieldName,
+      rect: this.data.rect,
+      numItems: this.data.fieldValue.length,
+      multipleSelection: this.data.multiSelect,
+      hidden: this.data.hidden,
+      actions: this.data.actions,
+      items: this.data.options,
+      page: this.data.pageIndex,
+      strokeColor: this.data.borderColor,
+      fillColor: this.data.backgroundColor,
+      type
+    };
+  }
+
+}
+
+class SignatureWidgetAnnotation extends WidgetAnnotation {
+  constructor(params) {
+    super(params);
+    this.data.fieldValue = null;
+  }
+
+  getFieldObject() {
+    return {
+      id: this.data.id,
+      value: null,
+      page: this.data.pageIndex,
+      type: "signature"
+    };
+  }
+
+}
+
+class TextAnnotation extends MarkupAnnotation {
+  constructor(parameters) {
+    const DEFAULT_ICON_SIZE = 22;
+    super(parameters);
+    const dict = parameters.dict;
+    this.data.annotationType = _util.AnnotationType.TEXT;
+
+    if (this.data.hasAppearance) {
+      this.data.name = "NoIcon";
+    } else {
+      this.data.rect[1] = this.data.rect[3] - DEFAULT_ICON_SIZE;
+      this.data.rect[2] = this.data.rect[0] + DEFAULT_ICON_SIZE;
+      this.data.name = dict.has("Name") ? dict.get("Name").name : "Note";
+    }
+
+    if (dict.has("State")) {
+      this.data.state = dict.get("State") || null;
+      this.data.stateModel = dict.get("StateModel") || null;
+    } else {
+      this.data.state = null;
+      this.data.stateModel = null;
+    }
+  }
+
+}
+
+class LinkAnnotation extends Annotation {
+  constructor(params) {
+    super(params);
+    this.data.annotationType = _util.AnnotationType.LINK;
+    const quadPoints = getQuadPoints(params.dict, this.rectangle);
+
+    if (quadPoints) {
+      this.data.quadPoints = quadPoints;
+    }
+
+    _catalog.Catalog.parseDestDictionary({
+      destDict: params.dict,
+      resultObj: this.data,
+      docBaseUrl: params.pdfManager.docBaseUrl
+    });
+  }
+
+}
+
+class PopupAnnotation extends Annotation {
+  constructor(parameters) {
+    super(parameters);
+    this.data.annotationType = _util.AnnotationType.POPUP;
+    let parentItem = parameters.dict.get("Parent");
+
+    if (!parentItem) {
+      (0, _util.warn)("Popup annotation has a missing or invalid parent annotation.");
+      return;
+    }
+
+    const parentSubtype = parentItem.get("Subtype");
+    this.data.parentType = (0, _primitives.isName)(parentSubtype) ? parentSubtype.name : null;
+    const rawParent = parameters.dict.getRaw("Parent");
+    this.data.parentId = (0, _primitives.isRef)(rawParent) ? rawParent.toString() : null;
+    const parentRect = parentItem.getArray("Rect");
+
+    if (Array.isArray(parentRect) && parentRect.length === 4) {
+      this.data.parentRect = _util.Util.normalizeRect(parentRect);
+    } else {
+      this.data.parentRect = [0, 0, 0, 0];
+    }
+
+    const rt = parentItem.get("RT");
+
+    if ((0, _primitives.isName)(rt, _util.AnnotationReplyType.GROUP)) {
+      parentItem = parentItem.get("IRT");
+    }
+
+    if (!parentItem.has("M")) {
+      this.data.modificationDate = null;
+    } else {
+      this.setModificationDate(parentItem.get("M"));
+      this.data.modificationDate = this.modificationDate;
+    }
+
+    if (!parentItem.has("C")) {
+      this.data.color = null;
+    } else {
+      this.setColor(parentItem.getArray("C"));
+      this.data.color = this.color;
+    }
+
+    if (!this.viewable) {
+      const parentFlags = parentItem.get("F");
+
+      if (this._isViewable(parentFlags)) {
+        this.setFlags(parentFlags);
+      }
+    }
+
+    this.setTitle(parentItem.get("T"));
+    this.data.titleObj = this._title;
+    this.setContents(parentItem.get("Contents"));
+    this.data.contentsObj = this._contents;
+  }
+
+}
+
+class FreeTextAnnotation extends MarkupAnnotation {
+  constructor(parameters) {
+    super(parameters);
+    this.data.annotationType = _util.AnnotationType.FREETEXT;
+  }
+
+}
+
+class LineAnnotation extends MarkupAnnotation {
+  constructor(parameters) {
+    super(parameters);
+    this.data.annotationType = _util.AnnotationType.LINE;
+    const lineCoordinates = parameters.dict.getArray("L");
+    this.data.lineCoordinates = _util.Util.normalizeRect(lineCoordinates);
+
+    if (!this.appearance) {
+      const strokeColor = this.color ? Array.from(this.color).map(c => c / 255) : [0, 0, 0];
+      const strokeAlpha = parameters.dict.get("CA");
+      let fillColor = null,
+          interiorColor = parameters.dict.getArray("IC");
+
+      if (interiorColor) {
+        interiorColor = getRgbColor(interiorColor, null);
+        fillColor = interiorColor ? Array.from(interiorColor).map(c => c / 255) : null;
+      }
+
+      const fillAlpha = fillColor ? strokeAlpha : null;
+      const borderWidth = this.borderStyle.width || 1,
+            borderAdjust = 2 * borderWidth;
+      const bbox = [this.data.lineCoordinates[0] - borderAdjust, this.data.lineCoordinates[1] - 
borderAdjust, this.data.lineCoordinates[2] + borderAdjust, this.data.lineCoordinates[3] + borderAdjust];
+
+      if (!_util.Util.intersect(this.rectangle, bbox)) {
+        this.rectangle = bbox;
+      }
+
+      this._setDefaultAppearance({
+        xref: parameters.xref,
+        extra: `${borderWidth} w`,
+        strokeColor,
+        fillColor,
+        strokeAlpha,
+        fillAlpha,
+        pointsCallback: (buffer, points) => {
+          buffer.push(`${lineCoordinates[0]} ${lineCoordinates[1]} m`, `${lineCoordinates[2]} 
${lineCoordinates[3]} l`, "S");
+          return [points[0].x - borderWidth, points[1].x + borderWidth, points[3].y - borderWidth, 
points[1].y + borderWidth];
+        }
+      });
+    }
+  }
+
+}
+
+class SquareAnnotation extends MarkupAnnotation {
+  constructor(parameters) {
+    super(parameters);
+    this.data.annotationType = _util.AnnotationType.SQUARE;
+
+    if (!this.appearance) {
+      const strokeColor = this.color ? Array.from(this.color).map(c => c / 255) : [0, 0, 0];
+      const strokeAlpha = parameters.dict.get("CA");
+      let fillColor = null,
+          interiorColor = parameters.dict.getArray("IC");
+
+      if (interiorColor) {
+        interiorColor = getRgbColor(interiorColor, null);
+        fillColor = interiorColor ? Array.from(interiorColor).map(c => c / 255) : null;
+      }
+
+      const fillAlpha = fillColor ? strokeAlpha : null;
+
+      this._setDefaultAppearance({
+        xref: parameters.xref,
+        extra: `${this.borderStyle.width} w`,
+        strokeColor,
+        fillColor,
+        strokeAlpha,
+        fillAlpha,
+        pointsCallback: (buffer, points) => {
+          const x = points[2].x + this.borderStyle.width / 2;
+          const y = points[2].y + this.borderStyle.width / 2;
+          const width = points[3].x - points[2].x - this.borderStyle.width;
+          const height = points[1].y - points[3].y - this.borderStyle.width;
+          buffer.push(`${x} ${y} ${width} ${height} re`);
+
+          if (fillColor) {
+            buffer.push("B");
+          } else {
+            buffer.push("S");
+          }
+
+          return [points[0].x, points[1].x, points[3].y, points[1].y];
+        }
+      });
+    }
+  }
+
+}
+
+class CircleAnnotation extends MarkupAnnotation {
+  constructor(parameters) {
+    super(parameters);
+    this.data.annotationType = _util.AnnotationType.CIRCLE;
+
+    if (!this.appearance) {
+      const strokeColor = this.color ? Array.from(this.color).map(c => c / 255) : [0, 0, 0];
+      const strokeAlpha = parameters.dict.get("CA");
+      let fillColor = null;
+      let interiorColor = parameters.dict.getArray("IC");
+
+      if (interiorColor) {
+        interiorColor = getRgbColor(interiorColor, null);
+        fillColor = interiorColor ? Array.from(interiorColor).map(c => c / 255) : null;
+      }
+
+      const fillAlpha = fillColor ? strokeAlpha : null;
+      const controlPointsDistance = 4 / 3 * Math.tan(Math.PI / (2 * 4));
+
+      this._setDefaultAppearance({
+        xref: parameters.xref,
+        extra: `${this.borderStyle.width} w`,
+        strokeColor,
+        fillColor,
+        strokeAlpha,
+        fillAlpha,
+        pointsCallback: (buffer, points) => {
+          const x0 = points[0].x + this.borderStyle.width / 2;
+          const y0 = points[0].y - this.borderStyle.width / 2;
+          const x1 = points[3].x - this.borderStyle.width / 2;
+          const y1 = points[3].y + this.borderStyle.width / 2;
+          const xMid = x0 + (x1 - x0) / 2;
+          const yMid = y0 + (y1 - y0) / 2;
+          const xOffset = (x1 - x0) / 2 * controlPointsDistance;
+          const yOffset = (y1 - y0) / 2 * controlPointsDistance;
+          buffer.push(`${xMid} ${y1} m`, `${xMid + xOffset} ${y1} ${x1} ${yMid + yOffset} ${x1} ${yMid} c`, 
`${x1} ${yMid - yOffset} ${xMid + xOffset} ${y0} ${xMid} ${y0} c`, `${xMid - xOffset} ${y0} ${x0} ${yMid - 
yOffset} ${x0} ${yMid} c`, `${x0} ${yMid + yOffset} ${xMid - xOffset} ${y1} ${xMid} ${y1} c`, "h");
+
+          if (fillColor) {
+            buffer.push("B");
+          } else {
+            buffer.push("S");
+          }
+
+          return [points[0].x, points[1].x, points[3].y, points[1].y];
+        }
+      });
+    }
+  }
+
+}
+
+class PolylineAnnotation extends MarkupAnnotation {
+  constructor(parameters) {
+    super(parameters);
+    this.data.annotationType = _util.AnnotationType.POLYLINE;
+    this.data.vertices = [];
+    const rawVertices = parameters.dict.getArray("Vertices");
+
+    if (!Array.isArray(rawVertices)) {
+      return;
+    }
+
+    for (let i = 0, ii = rawVertices.length; i < ii; i += 2) {
+      this.data.vertices.push({
+        x: rawVertices[i],
+        y: rawVertices[i + 1]
+      });
+    }
+
+    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 borderWidth = this.borderStyle.width || 1,
+            borderAdjust = 2 * borderWidth;
+      const bbox = [Infinity, Infinity, -Infinity, -Infinity];
+
+      for (const vertex of this.data.vertices) {
+        bbox[0] = Math.min(bbox[0], vertex.x - borderAdjust);
+        bbox[1] = Math.min(bbox[1], vertex.y - borderAdjust);
+        bbox[2] = Math.max(bbox[2], vertex.x + borderAdjust);
+        bbox[3] = Math.max(bbox[3], vertex.y + borderAdjust);
+      }
+
+      if (!_util.Util.intersect(this.rectangle, bbox)) {
+        this.rectangle = bbox;
+      }
+
+      this._setDefaultAppearance({
+        xref: parameters.xref,
+        extra: `${borderWidth} w`,
+        strokeColor,
+        strokeAlpha,
+        pointsCallback: (buffer, points) => {
+          const vertices = this.data.vertices;
+
+          for (let i = 0, ii = vertices.length; i < ii; i++) {
+            buffer.push(`${vertices[i].x} ${vertices[i].y} ${i === 0 ? "m" : "l"}`);
+          }
+
+          buffer.push("S");
+          return [points[0].x, points[1].x, points[3].y, points[1].y];
+        }
+      });
+    }
+  }
+
+}
+
+class PolygonAnnotation extends PolylineAnnotation {
+  constructor(parameters) {
+    super(parameters);
+    this.data.annotationType = _util.AnnotationType.POLYGON;
+  }
+
+}
+
+class CaretAnnotation extends MarkupAnnotation {
+  constructor(parameters) {
+    super(parameters);
+    this.data.annotationType = _util.AnnotationType.CARET;
+  }
+
+}
+
+class InkAnnotation extends MarkupAnnotation {
+  constructor(parameters) {
+    super(parameters);
+    this.data.annotationType = _util.AnnotationType.INK;
+    this.data.inkLists = [];
+    const rawInkLists = parameters.dict.getArray("InkList");
+
+    if (!Array.isArray(rawInkLists)) {
+      return;
+    }
+
+    const xref = parameters.xref;
+
+    for (let i = 0, ii = rawInkLists.length; i < ii; ++i) {
+      this.data.inkLists.push([]);
+
+      for (let j = 0, jj = rawInkLists[i].length; j < jj; j += 2) {
+        this.data.inkLists[i].push({
+          x: xref.fetchIfRef(rawInkLists[i][j]),
+          y: xref.fetchIfRef(rawInkLists[i][j + 1])
+        });
+      }
+    }
+
+    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 borderWidth = this.borderStyle.width || 1,
+            borderAdjust = 2 * borderWidth;
+      const bbox = [Infinity, Infinity, -Infinity, -Infinity];
+
+      for (const inkLists of this.data.inkLists) {
+        for (const vertex of inkLists) {
+          bbox[0] = Math.min(bbox[0], vertex.x - borderAdjust);
+          bbox[1] = Math.min(bbox[1], vertex.y - borderAdjust);
+          bbox[2] = Math.max(bbox[2], vertex.x + borderAdjust);
+          bbox[3] = Math.max(bbox[3], vertex.y + borderAdjust);
+        }
+      }
+
+      if (!_util.Util.intersect(this.rectangle, bbox)) {
+        this.rectangle = bbox;
+      }
+
+      this._setDefaultAppearance({
+        xref: parameters.xref,
+        extra: `${borderWidth} w`,
+        strokeColor,
+        strokeAlpha,
+        pointsCallback: (buffer, points) => {
+          for (const inkList of this.data.inkLists) {
+            for (let i = 0, ii = inkList.length; i < ii; i++) {
+              buffer.push(`${inkList[i].x} ${inkList[i].y} ${i === 0 ? "m" : "l"}`);
+            }
+
+            buffer.push("S");
+          }
+
+          return [points[0].x, points[1].x, points[3].y, points[1].y];
+        }
+      });
+    }
+  }
+
+}
+
+class HighlightAnnotation extends MarkupAnnotation {
+  constructor(parameters) {
+    super(parameters);
+    this.data.annotationType = _util.AnnotationType.HIGHLIGHT;
+    const quadPoints = this.data.quadPoints = getQuadPoints(parameters.dict, null);
+
+    if (quadPoints) {
+      const resources = this.appearance && this.appearance.dict.get("Resources");
+
+      if (!this.appearance || !(resources && resources.has("ExtGState"))) {
+        if (this.appearance) {
+          (0, _util.warn)("HighlightAnnotation - ignoring built-in appearance stream.");
+        }
+
+        const fillColor = this.color ? Array.from(this.color).map(c => c / 255) : [1, 1, 0];
+        const fillAlpha = parameters.dict.get("CA");
+
+        this._setDefaultAppearance({
+          xref: parameters.xref,
+          fillColor,
+          blendMode: "Multiply",
+          fillAlpha,
+          pointsCallback: (buffer, points) => {
+            buffer.push(`${points[0].x} ${points[0].y} m`, `${points[1].x} ${points[1].y} l`, 
`${points[3].x} ${points[3].y} l`, `${points[2].x} ${points[2].y} l`, "f");
+            return [points[0].x, points[1].x, points[3].y, points[1].y];
+          }
+        });
+      }
+    } else {
+      this.data.hasPopup = false;
+    }
+  }
+
+}
+
+class UnderlineAnnotation extends MarkupAnnotation {
+  constructor(parameters) {
+    super(parameters);
+    this.data.annotationType = _util.AnnotationType.UNDERLINE;
+    const quadPoints = this.data.quadPoints = getQuadPoints(parameters.dict, null);
+
+    if (quadPoints) {
+      if (!this.appearance) {
+        const strokeColor = this.color ? Array.from(this.color).map(c => c / 255) : [0, 0, 0];
+        const strokeAlpha = parameters.dict.get("CA");
+
+        this._setDefaultAppearance({
+          xref: parameters.xref,
+          extra: "[] 0 d 1 w",
+          strokeColor,
+          strokeAlpha,
+          pointsCallback: (buffer, points) => {
+            buffer.push(`${points[2].x} ${points[2].y} m`, `${points[3].x} ${points[3].y} l`, "S");
+            return [points[0].x, points[1].x, points[3].y, points[1].y];
+          }
+        });
+      }
+    } else {
+      this.data.hasPopup = false;
+    }
+  }
+
+}
+
+class SquigglyAnnotation extends MarkupAnnotation {
+  constructor(parameters) {
+    super(parameters);
+    this.data.annotationType = _util.AnnotationType.SQUIGGLY;
+    const quadPoints = this.data.quadPoints = getQuadPoints(parameters.dict, null);
+
+    if (quadPoints) {
+      if (!this.appearance) {
+        const strokeColor = this.color ? Array.from(this.color).map(c => c / 255) : [0, 0, 0];
+        const strokeAlpha = parameters.dict.get("CA");
+
+        this._setDefaultAppearance({
+          xref: parameters.xref,
+          extra: "[] 0 d 1 w",
+          strokeColor,
+          strokeAlpha,
+          pointsCallback: (buffer, points) => {
+            const dy = (points[0].y - points[2].y) / 6;
+            let shift = dy;
+            let x = points[2].x;
+            const y = points[2].y;
+            const xEnd = points[3].x;
+            buffer.push(`${x} ${y + shift} m`);
+
+            do {
+              x += 2;
+              shift = shift === 0 ? dy : 0;
+              buffer.push(`${x} ${y + shift} l`);
+            } while (x < xEnd);
+
+            buffer.push("S");
+            return [points[2].x, xEnd, y - 2 * dy, y + 2 * dy];
+          }
+        });
+      }
+    } else {
+      this.data.hasPopup = false;
+    }
+  }
+
+}
+
+class StrikeOutAnnotation extends MarkupAnnotation {
+  constructor(parameters) {
+    super(parameters);
+    this.data.annotationType = _util.AnnotationType.STRIKEOUT;
+    const quadPoints = this.data.quadPoints = getQuadPoints(parameters.dict, null);
+
+    if (quadPoints) {
+      if (!this.appearance) {
+        const strokeColor = this.color ? Array.from(this.color).map(c => c / 255) : [0, 0, 0];
+        const strokeAlpha = parameters.dict.get("CA");
+
+        this._setDefaultAppearance({
+          xref: parameters.xref,
+          extra: "[] 0 d 1 w",
+          strokeColor,
+          strokeAlpha,
+          pointsCallback: (buffer, points) => {
+            buffer.push(`${(points[0].x + points[2].x) / 2} ` + `${(points[0].y + points[2].y) / 2} m`, 
`${(points[1].x + points[3].x) / 2} ` + `${(points[1].y + points[3].y) / 2} l`, "S");
+            return [points[0].x, points[1].x, points[3].y, points[1].y];
+          }
+        });
+      }
+    } else {
+      this.data.hasPopup = false;
+    }
+  }
+
+}
+
+class StampAnnotation extends MarkupAnnotation {
+  constructor(parameters) {
+    super(parameters);
+    this.data.annotationType = _util.AnnotationType.STAMP;
+  }
+
+}
+
+class FileAttachmentAnnotation extends MarkupAnnotation {
+  constructor(parameters) {
+    super(parameters);
+    const file = new _file_spec.FileSpec(parameters.dict.get("FS"), parameters.xref);
+    this.data.annotationType = _util.AnnotationType.FILEATTACHMENT;
+    this.data.file = file.serializable;
+  }
+
+}
+
+/***/ }),
+/* 23 */
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
+
+
+
+Object.defineProperty(exports, "__esModule", ({
+  value: true
+}));
+exports.createDefaultAppearance = createDefaultAppearance;
+exports.parseDefaultAppearance = parseDefaultAppearance;
+
+var _util = __w_pdfjs_require__(2);
+
+var _colorspace = __w_pdfjs_require__(24);
+
+var _core_utils = __w_pdfjs_require__(9);
+
+var _evaluator = __w_pdfjs_require__(25);
+
+var _primitives = __w_pdfjs_require__(5);
+
+var _stream = __w_pdfjs_require__(10);
+
+class DefaultAppearanceEvaluator extends _evaluator.EvaluatorPreprocessor {
+  constructor(str) {
+    super(new _stream.StringStream(str));
+  }
+
+  parse() {
+    const operation = {
+      fn: 0,
+      args: []
+    };
+    const result = {
+      fontSize: 0,
+      fontName: "",
+      fontColor: new Uint8ClampedArray(3)
+    };
+
+    try {
+      while (true) {
+        operation.args.length = 0;
+
+        if (!this.read(operation)) {
+          break;
+        }
+
+        if (this.savedStatesDepth !== 0) {
+          continue;
+        }
+
+        const {
+          fn,
+          args
+        } = operation;
+
+        switch (fn | 0) {
+          case _util.OPS.setFont:
+            const [fontName, fontSize] = args;
+
+            if (fontName instanceof _primitives.Name) {
+              result.fontName = fontName.name;
+            }
+
+            if (typeof fontSize === "number" && fontSize > 0) {
+              result.fontSize = fontSize;
+            }
+
+            break;
+
+          case _util.OPS.setFillRGBColor:
+            _colorspace.ColorSpace.singletons.rgb.getRgbItem(args, 0, result.fontColor, 0);
+
+            break;
+
+          case _util.OPS.setFillGray:
+            _colorspace.ColorSpace.singletons.gray.getRgbItem(args, 0, result.fontColor, 0);
+
+            break;
+
+          case _util.OPS.setFillColorSpace:
+            _colorspace.ColorSpace.singletons.cmyk.getRgbItem(args, 0, result.fontColor, 0);
+
+            break;
+        }
+      }
+    } catch (reason) {
+      (0, _util.warn)(`parseDefaultAppearance - ignoring errors: "${reason}".`);
+    }
+
+    return result;
+  }
+
+}
+
+function parseDefaultAppearance(str) {
+  return new DefaultAppearanceEvaluator(str).parse();
+}
+
+function createDefaultAppearance({
+  fontSize,
+  fontName,
+  fontColor
+}) {
+  let colorCmd;
+
+  if (fontColor.every(c => c === 0)) {
+    colorCmd = "0 g";
+  } else {
+    colorCmd = Array.from(fontColor).map(c => (c / 255).toFixed(2)).join(" ") + " rg";
+  }
+
+  return `/${(0, _core_utils.escapePDFName)(fontName)} ${fontSize} Tf ${colorCmd}`;
+}
+
+/***/ }),
+/* 24 */
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
+
+
+
+Object.defineProperty(exports, "__esModule", ({
+  value: true
+}));
+exports.ColorSpace = void 0;
+
+var _util = __w_pdfjs_require__(2);
+
+var _primitives = __w_pdfjs_require__(5);
+
+var _core_utils = __w_pdfjs_require__(9);
+
+function resizeRgbImage(src, dest, w1, h1, w2, h2, alpha01) {
+  const COMPONENTS = 3;
+  alpha01 = alpha01 !== 1 ? 0 : alpha01;
+  const xRatio = w1 / w2;
+  const yRatio = h1 / h2;
+  let newIndex = 0,
+      oldIndex;
+  const xScaled = new Uint16Array(w2);
+  const w1Scanline = w1 * COMPONENTS;
+
+  for (let i = 0; i < w2; i++) {
+    xScaled[i] = Math.floor(i * xRatio) * COMPONENTS;
+  }
+
+  for (let i = 0; i < h2; i++) {
+    const py = Math.floor(i * yRatio) * w1Scanline;
+
+    for (let j = 0; j < w2; j++) {
+      oldIndex = py + xScaled[j];
+      dest[newIndex++] = src[oldIndex++];
+      dest[newIndex++] = src[oldIndex++];
+      dest[newIndex++] = src[oldIndex++];
+      newIndex += alpha01;
+    }
+  }
+}
+
+class ColorSpace {
+  constructor(name, numComps) {
+    if (this.constructor === ColorSpace) {
+      (0, _util.unreachable)("Cannot initialize ColorSpace.");
+    }
+
+    this.name = name;
+    this.numComps = numComps;
+  }
+
+  getRgb(src, srcOffset) {
+    const rgb = new Uint8ClampedArray(3);
+    this.getRgbItem(src, srcOffset, rgb, 0);
+    return rgb;
+  }
+
+  getRgbItem(src, srcOffset, dest, destOffset) {
+    (0, _util.unreachable)("Should not call ColorSpace.getRgbItem");
+  }
+
+  getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {
+    (0, _util.unreachable)("Should not call ColorSpace.getRgbBuffer");
+  }
+
+  getOutputLength(inputLength, alpha01) {
+    (0, _util.unreachable)("Should not call ColorSpace.getOutputLength");
+  }
+
+  isPassthrough(bits) {
+    return false;
+  }
+
+  isDefaultDecode(decodeMap, bpc) {
+    return ColorSpace.isDefaultDecode(decodeMap, this.numComps);
+  }
+
+  fillRgb(dest, originalWidth, originalHeight, width, height, actualHeight, bpc, comps, alpha01) {
+    const count = originalWidth * originalHeight;
+    let rgbBuf = null;
+    const numComponentColors = 1 << bpc;
+    const needsResizing = originalHeight !== height || originalWidth !== width;
+
+    if (this.isPassthrough(bpc)) {
+      rgbBuf = comps;
+    } else if (this.numComps === 1 && count > numComponentColors && this.name !== "DeviceGray" && this.name 
!== "DeviceRGB") {
+      const allColors = bpc <= 8 ? new Uint8Array(numComponentColors) : new Uint16Array(numComponentColors);
+
+      for (let i = 0; i < numComponentColors; i++) {
+        allColors[i] = i;
+      }
+
+      const colorMap = new Uint8ClampedArray(numComponentColors * 3);
+      this.getRgbBuffer(allColors, 0, numComponentColors, colorMap, 0, bpc, 0);
+
+      if (!needsResizing) {
+        let destPos = 0;
+
+        for (let i = 0; i < count; ++i) {
+          const key = comps[i] * 3;
+          dest[destPos++] = colorMap[key];
+          dest[destPos++] = colorMap[key + 1];
+          dest[destPos++] = colorMap[key + 2];
+          destPos += alpha01;
+        }
+      } else {
+        rgbBuf = new Uint8Array(count * 3);
+        let rgbPos = 0;
+
+        for (let i = 0; i < count; ++i) {
+          const key = comps[i] * 3;
+          rgbBuf[rgbPos++] = colorMap[key];
+          rgbBuf[rgbPos++] = colorMap[key + 1];
+          rgbBuf[rgbPos++] = colorMap[key + 2];
+        }
+      }
+    } else {
+      if (!needsResizing) {
+        this.getRgbBuffer(comps, 0, width * actualHeight, dest, 0, bpc, alpha01);
+      } else {
+        rgbBuf = new Uint8ClampedArray(count * 3);
+        this.getRgbBuffer(comps, 0, count, rgbBuf, 0, bpc, 0);
+      }
+    }
+
+    if (rgbBuf) {
+      if (needsResizing) {
+        resizeRgbImage(rgbBuf, dest, originalWidth, originalHeight, width, height, alpha01);
+      } else {
+        let destPos = 0,
+            rgbPos = 0;
+
+        for (let i = 0, ii = width * actualHeight; i < ii; i++) {
+          dest[destPos++] = rgbBuf[rgbPos++];
+          dest[destPos++] = rgbBuf[rgbPos++];
+          dest[destPos++] = rgbBuf[rgbPos++];
+          destPos += alpha01;
+        }
+      }
+    }
+  }
+
+  get usesZeroToOneRange() {
+    return (0, _util.shadow)(this, "usesZeroToOneRange", true);
+  }
+
+  static _cache(cacheKey, xref, localColorSpaceCache, parsedColorSpace) {
+    if (!localColorSpaceCache) {
+      throw new Error('ColorSpace._cache - expected "localColorSpaceCache" argument.');
+    }
+
+    if (!parsedColorSpace) {
+      throw new Error('ColorSpace._cache - expected "parsedColorSpace" argument.');
+    }
+
+    let csName, csRef;
+
+    if (cacheKey instanceof _primitives.Ref) {
+      csRef = cacheKey;
+      cacheKey = xref.fetch(cacheKey);
+    }
+
+    if (cacheKey instanceof _primitives.Name) {
+      csName = cacheKey.name;
+    }
+
+    if (csName || csRef) {
+      localColorSpaceCache.set(csName, csRef, parsedColorSpace);
+    }
+  }
+
+  static getCached(cacheKey, xref, localColorSpaceCache) {
+    if (!localColorSpaceCache) {
+      throw new Error('ColorSpace.getCached - expected "localColorSpaceCache" argument.');
+    }
+
+    if (cacheKey instanceof _primitives.Ref) {
+      const localColorSpace = localColorSpaceCache.getByRef(cacheKey);
+
+      if (localColorSpace) {
+        return localColorSpace;
+      }
+
+      try {
+        cacheKey = xref.fetch(cacheKey);
+      } catch (ex) {
+        if (ex instanceof _core_utils.MissingDataException) {
+          throw ex;
+        }
+      }
+    }
+
+    if (cacheKey instanceof _primitives.Name) {
+      const localColorSpace = localColorSpaceCache.getByName(cacheKey.name);
+
+      if (localColorSpace) {
+        return localColorSpace;
+      }
+    }
+
+    return null;
+  }
+
+  static async parseAsync({
+    cs,
+    xref,
+    resources = null,
+    pdfFunctionFactory,
+    localColorSpaceCache
+  }) {
+    const parsedColorSpace = this._parse(cs, xref, resources, pdfFunctionFactory);
+
+    this._cache(cs, xref, localColorSpaceCache, parsedColorSpace);
+
+    return parsedColorSpace;
+  }
+
+  static parse({
+    cs,
+    xref,
+    resources = null,
+    pdfFunctionFactory,
+    localColorSpaceCache
+  }) {
+    const cachedColorSpace = this.getCached(cs, xref, localColorSpaceCache);
+
+    if (cachedColorSpace) {
+      return cachedColorSpace;
+    }
+
+    const parsedColorSpace = this._parse(cs, xref, resources, pdfFunctionFactory);
+
+    this._cache(cs, xref, localColorSpaceCache, parsedColorSpace);
+
+    return parsedColorSpace;
+  }
+
+  static _parse(cs, xref, resources = null, pdfFunctionFactory) {
+    cs = xref.fetchIfRef(cs);
+
+    if ((0, _primitives.isName)(cs)) {
+      switch (cs.name) {
+        case "DeviceGray":
+        case "G":
+          return this.singletons.gray;
+
+        case "DeviceRGB":
+        case "RGB":
+          return this.singletons.rgb;
+
+        case "DeviceCMYK":
+        case "CMYK":
+          return this.singletons.cmyk;
+
+        case "Pattern":
+          return new PatternCS(null);
+
+        default:
+          if ((0, _primitives.isDict)(resources)) {
+            const colorSpaces = resources.get("ColorSpace");
+
+            if ((0, _primitives.isDict)(colorSpaces)) {
+              const resourcesCS = colorSpaces.get(cs.name);
+
+              if (resourcesCS) {
+                if ((0, _primitives.isName)(resourcesCS)) {
+                  return this._parse(resourcesCS, xref, resources, pdfFunctionFactory);
+                }
+
+                cs = resourcesCS;
+                break;
+              }
+            }
+          }
+
+          throw new _util.FormatError(`Unrecognized ColorSpace: ${cs.name}`);
+      }
+    }
+
+    if (Array.isArray(cs)) {
+      const mode = xref.fetchIfRef(cs[0]).name;
+      let params, numComps, baseCS, whitePoint, blackPoint, gamma;
+
+      switch (mode) {
+        case "DeviceGray":
+        case "G":
+          return this.singletons.gray;
+
+        case "DeviceRGB":
+        case "RGB":
+          return this.singletons.rgb;
+
+        case "DeviceCMYK":
+        case "CMYK":
+          return this.singletons.cmyk;
+
+        case "CalGray":
+          params = xref.fetchIfRef(cs[1]);
+          whitePoint = params.getArray("WhitePoint");
+          blackPoint = params.getArray("BlackPoint");
+          gamma = params.get("Gamma");
+          return new CalGrayCS(whitePoint, blackPoint, gamma);
+
+        case "CalRGB":
+          params = xref.fetchIfRef(cs[1]);
+          whitePoint = params.getArray("WhitePoint");
+          blackPoint = params.getArray("BlackPoint");
+          gamma = params.getArray("Gamma");
+          const matrix = params.getArray("Matrix");
+          return new CalRGBCS(whitePoint, blackPoint, gamma, matrix);
+
+        case "ICCBased":
+          const stream = xref.fetchIfRef(cs[1]);
+          const dict = stream.dict;
+          numComps = dict.get("N");
+          const alt = dict.get("Alternate");
+
+          if (alt) {
+            const altCS = this._parse(alt, xref, resources, pdfFunctionFactory);
+
+            if (altCS.numComps === numComps) {
+              return altCS;
+            }
+
+            (0, _util.warn)("ICCBased color space: Ignoring incorrect /Alternate entry.");
+          }
+
+          if (numComps === 1) {
+            return this.singletons.gray;
+          } else if (numComps === 3) {
+            return this.singletons.rgb;
+          } else if (numComps === 4) {
+            return this.singletons.cmyk;
+          }
+
+          break;
+
+        case "Pattern":
+          baseCS = cs[1] || null;
+
+          if (baseCS) {
+            baseCS = this._parse(baseCS, xref, resources, pdfFunctionFactory);
+          }
+
+          return new PatternCS(baseCS);
+
+        case "Indexed":
+        case "I":
+          baseCS = this._parse(cs[1], xref, resources, pdfFunctionFactory);
+          const hiVal = xref.fetchIfRef(cs[2]) + 1;
+          const lookup = xref.fetchIfRef(cs[3]);
+          return new IndexedCS(baseCS, hiVal, lookup);
+
+        case "Separation":
+        case "DeviceN":
+          const name = xref.fetchIfRef(cs[1]);
+          numComps = Array.isArray(name) ? name.length : 1;
+          baseCS = this._parse(cs[2], xref, resources, pdfFunctionFactory);
+          const tintFn = pdfFunctionFactory.create(cs[3]);
+          return new AlternateCS(numComps, baseCS, tintFn);
+
+        case "Lab":
+          params = xref.fetchIfRef(cs[1]);
+          whitePoint = params.getArray("WhitePoint");
+          blackPoint = params.getArray("BlackPoint");
+          const range = params.getArray("Range");
+          return new LabCS(whitePoint, blackPoint, range);
+
+        default:
+          throw new _util.FormatError(`Unimplemented ColorSpace object: ${mode}`);
+      }
+    }
+
+    throw new _util.FormatError(`Unrecognized ColorSpace object: ${cs}`);
+  }
+
+  static isDefaultDecode(decode, numComps) {
+    if (!Array.isArray(decode)) {
+      return true;
+    }
+
+    if (numComps * 2 !== decode.length) {
+      (0, _util.warn)("The decode map is not the correct length");
+      return true;
+    }
+
+    for (let i = 0, ii = decode.length; i < ii; i += 2) {
+      if (decode[i] !== 0 || decode[i + 1] !== 1) {
+        return false;
+      }
+    }
+
+    return true;
+  }
+
+  static get singletons() {
+    return (0, _util.shadow)(this, "singletons", {
+      get gray() {
+        return (0, _util.shadow)(this, "gray", new DeviceGrayCS());
+      },
+
+      get rgb() {
+        return (0, _util.shadow)(this, "rgb", new DeviceRgbCS());
+      },
+
+      get cmyk() {
+        return (0, _util.shadow)(this, "cmyk", new DeviceCmykCS());
+      }
+
+    });
+  }
+
+}
+
+exports.ColorSpace = ColorSpace;
+
+class AlternateCS extends ColorSpace {
+  constructor(numComps, base, tintFn) {
+    super("Alternate", numComps);
+    this.base = base;
+    this.tintFn = tintFn;
+    this.tmpBuf = new Float32Array(base.numComps);
+  }
+
+  getRgbItem(src, srcOffset, dest, destOffset) {
+    const tmpBuf = this.tmpBuf;
+    this.tintFn(src, srcOffset, tmpBuf, 0);
+    this.base.getRgbItem(tmpBuf, 0, dest, destOffset);
+  }
+
+  getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {
+    const tintFn = this.tintFn;
+    const base = this.base;
+    const scale = 1 / ((1 << bits) - 1);
+    const baseNumComps = base.numComps;
+    const usesZeroToOneRange = base.usesZeroToOneRange;
+    const isPassthrough = (base.isPassthrough(8) || !usesZeroToOneRange) && alpha01 === 0;
+    let pos = isPassthrough ? destOffset : 0;
+    const baseBuf = isPassthrough ? dest : new Uint8ClampedArray(baseNumComps * count);
+    const numComps = this.numComps;
+    const scaled = new Float32Array(numComps);
+    const tinted = new Float32Array(baseNumComps);
+    let i, j;
+
+    for (i = 0; i < count; i++) {
+      for (j = 0; j < numComps; j++) {
+        scaled[j] = src[srcOffset++] * scale;
+      }
+
+      tintFn(scaled, 0, tinted, 0);
+
+      if (usesZeroToOneRange) {
+        for (j = 0; j < baseNumComps; j++) {
+          baseBuf[pos++] = tinted[j] * 255;
+        }
+      } else {
+        base.getRgbItem(tinted, 0, baseBuf, pos);
+        pos += baseNumComps;
+      }
+    }
+
+    if (!isPassthrough) {
+      base.getRgbBuffer(baseBuf, 0, count, dest, destOffset, 8, alpha01);
+    }
+  }
+
+  getOutputLength(inputLength, alpha01) {
+    return this.base.getOutputLength(inputLength * this.base.numComps / this.numComps, alpha01);
+  }
+
+}
+
+class PatternCS extends ColorSpace {
+  constructor(baseCS) {
+    super("Pattern", null);
+    this.base = baseCS;
+  }
+
+  isDefaultDecode(decodeMap, bpc) {
+    (0, _util.unreachable)("Should not call PatternCS.isDefaultDecode");
+  }
+
+}
+
+class IndexedCS extends ColorSpace {
+  constructor(base, highVal, lookup) {
+    super("Indexed", 1);
+    this.base = base;
+    this.highVal = highVal;
+    const length = base.numComps * highVal;
+    this.lookup = new Uint8Array(length);
+
+    if ((0, _primitives.isStream)(lookup)) {
+      const bytes = lookup.getBytes(length);
+      this.lookup.set(bytes);
+    } else if (typeof lookup === "string") {
+      for (let i = 0; i < length; ++i) {
+        this.lookup[i] = lookup.charCodeAt(i) & 0xff;
+      }
+    } else {
+      throw new _util.FormatError(`IndexedCS - unrecognized lookup table: ${lookup}`);
+    }
+  }
+
+  getRgbItem(src, srcOffset, dest, destOffset) {
+    const numComps = this.base.numComps;
+    const start = src[srcOffset] * numComps;
+    this.base.getRgbBuffer(this.lookup, start, 1, dest, destOffset, 8, 0);
+  }
+
+  getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {
+    const base = this.base;
+    const numComps = base.numComps;
+    const outputDelta = base.getOutputLength(numComps, alpha01);
+    const lookup = this.lookup;
+
+    for (let i = 0; i < count; ++i) {
+      const lookupPos = src[srcOffset++] * numComps;
+      base.getRgbBuffer(lookup, lookupPos, 1, dest, destOffset, 8, alpha01);
+      destOffset += outputDelta;
+    }
+  }
+
+  getOutputLength(inputLength, alpha01) {
+    return this.base.getOutputLength(inputLength * this.base.numComps, alpha01);
+  }
+
+  isDefaultDecode(decodeMap, bpc) {
+    if (!Array.isArray(decodeMap)) {
+      return true;
+    }
+
+    if (decodeMap.length !== 2) {
+      (0, _util.warn)("Decode map length is not correct");
+      return true;
+    }
+
+    if (!Number.isInteger(bpc) || bpc < 1) {
+      (0, _util.warn)("Bits per component is not correct");
+      return true;
+    }
+
+    return decodeMap[0] === 0 && decodeMap[1] === (1 << bpc) - 1;
+  }
+
+}
+
+class DeviceGrayCS extends ColorSpace {
+  constructor() {
+    super("DeviceGray", 1);
+  }
+
+  getRgbItem(src, srcOffset, dest, destOffset) {
+    const c = src[srcOffset] * 255;
+    dest[destOffset] = dest[destOffset + 1] = dest[destOffset + 2] = c;
+  }
+
+  getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {
+    const scale = 255 / ((1 << bits) - 1);
+    let j = srcOffset,
+        q = destOffset;
+
+    for (let i = 0; i < count; ++i) {
+      const c = scale * src[j++];
+      dest[q++] = c;
+      dest[q++] = c;
+      dest[q++] = c;
+      q += alpha01;
+    }
+  }
+
+  getOutputLength(inputLength, alpha01) {
+    return inputLength * (3 + alpha01);
+  }
+
+}
+
+class DeviceRgbCS extends ColorSpace {
+  constructor() {
+    super("DeviceRGB", 3);
+  }
+
+  getRgbItem(src, srcOffset, dest, destOffset) {
+    dest[destOffset] = src[srcOffset] * 255;
+    dest[destOffset + 1] = src[srcOffset + 1] * 255;
+    dest[destOffset + 2] = src[srcOffset + 2] * 255;
+  }
+
+  getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {
+    if (bits === 8 && alpha01 === 0) {
+      dest.set(src.subarray(srcOffset, srcOffset + count * 3), destOffset);
+      return;
+    }
+
+    const scale = 255 / ((1 << bits) - 1);
+    let j = srcOffset,
+        q = destOffset;
+
+    for (let i = 0; i < count; ++i) {
+      dest[q++] = scale * src[j++];
+      dest[q++] = scale * src[j++];
+      dest[q++] = scale * src[j++];
+      q += alpha01;
+    }
+  }
+
+  getOutputLength(inputLength, alpha01) {
+    return inputLength * (3 + alpha01) / 3 | 0;
+  }
+
+  isPassthrough(bits) {
+    return bits === 8;
+  }
+
+}
+
+const DeviceCmykCS = function DeviceCmykCSClosure() {
+  function convertToRgb(src, srcOffset, srcScale, dest, destOffset) {
+    const c = src[srcOffset] * srcScale;
+    const m = src[srcOffset + 1] * srcScale;
+    const y = src[srcOffset + 2] * srcScale;
+    const k = src[srcOffset + 3] * srcScale;
+    dest[destOffset] = 255 + c * (-4.387332384609988 * c + 54.48615194189176 * m + 18.82290502165302 * y + 
212.25662451639585 * k + -285.2331026137004) + m * (1.7149763477362134 * m - 5.6096736904047315 * y + 
-17.873870861415444 * k - 5.497006427196366) + y * (-2.5217340131683033 * y - 21.248923337353073 * k + 
17.5119270841813) + k * (-21.86122147463605 * k - 189.48180835922747);
+    dest[destOffset + 1] = 255 + c * (8.841041422036149 * c + 60.118027045597366 * m + 6.871425592049007 * y 
+ 31.159100130055922 * k + -79.2970844816548) + m * (-15.310361306967817 * m + 17.575251261109482 * y + 
131.35250912493976 * k - 190.9453302588951) + y * (4.444339102852739 * y + 9.8632861493405 * k - 
24.86741582555878) + k * (-20.737325471181034 * k - 187.80453709719578);
+    dest[destOffset + 2] = 255 + c * (0.8842522430003296 * c + 8.078677503112928 * m + 30.89978309703729 * y 
- 0.23883238689178934 * k + -14.183576799673286) + m * (10.49593273432072 * m + 63.02378494754052 * y + 
50.606957656360734 * k - 112.23884253719248) + y * (0.03296041114873217 * y + 115.60384449646641 * k + 
-193.58209356861505) + k * (-22.33816807309886 * k - 180.12613974708367);
+  }
+
+  class DeviceCmykCS extends ColorSpace {
+    constructor() {
+      super("DeviceCMYK", 4);
+    }
+
+    getRgbItem(src, srcOffset, dest, destOffset) {
+      convertToRgb(src, srcOffset, 1, dest, destOffset);
+    }
+
+    getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {
+      const scale = 1 / ((1 << bits) - 1);
+
+      for (let i = 0; i < count; i++) {
+        convertToRgb(src, srcOffset, scale, dest, destOffset);
+        srcOffset += 4;
+        destOffset += 3 + alpha01;
+      }
+    }
+
+    getOutputLength(inputLength, alpha01) {
+      return inputLength / 4 * (3 + alpha01) | 0;
+    }
+
+  }
+
+  return DeviceCmykCS;
+}();
+
+const CalGrayCS = function CalGrayCSClosure() {
+  function convertToRgb(cs, src, srcOffset, dest, destOffset, scale) {
+    const A = src[srcOffset] * scale;
+    const AG = A ** cs.G;
+    const L = cs.YW * AG;
+    const val = Math.max(295.8 * L ** 0.333333333333333333 - 40.8, 0);
+    dest[destOffset] = val;
+    dest[destOffset + 1] = val;
+    dest[destOffset + 2] = val;
+  }
+
+  class CalGrayCS extends ColorSpace {
+    constructor(whitePoint, blackPoint, gamma) {
+      super("CalGray", 1);
+
+      if (!whitePoint) {
+        throw new _util.FormatError("WhitePoint missing - required for color space CalGray");
+      }
+
+      blackPoint = blackPoint || [0, 0, 0];
+      gamma = gamma || 1;
+      this.XW = whitePoint[0];
+      this.YW = whitePoint[1];
+      this.ZW = whitePoint[2];
+      this.XB = blackPoint[0];
+      this.YB = blackPoint[1];
+      this.ZB = blackPoint[2];
+      this.G = gamma;
+
+      if (this.XW < 0 || this.ZW < 0 || this.YW !== 1) {
+        throw new _util.FormatError(`Invalid WhitePoint components for ${this.name}` + ", no fallback 
available");
+      }
+
+      if (this.XB < 0 || this.YB < 0 || this.ZB < 0) {
+        (0, _util.info)(`Invalid BlackPoint for ${this.name}, falling back to default.`);
+        this.XB = this.YB = this.ZB = 0;
+      }
+
+      if (this.XB !== 0 || this.YB !== 0 || this.ZB !== 0) {
+        (0, _util.warn)(`${this.name}, BlackPoint: XB: ${this.XB}, YB: ${this.YB}, ` + `ZB: ${this.ZB}, only 
default values are supported.`);
+      }
+
+      if (this.G < 1) {
+        (0, _util.info)(`Invalid Gamma: ${this.G} for ${this.name}, ` + "falling back to default.");
+        this.G = 1;
+      }
+    }
+
+    getRgbItem(src, srcOffset, dest, destOffset) {
+      convertToRgb(this, src, srcOffset, dest, destOffset, 1);
+    }
+
+    getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {
+      const scale = 1 / ((1 << bits) - 1);
+
+      for (let i = 0; i < count; ++i) {
+        convertToRgb(this, src, srcOffset, dest, destOffset, scale);
+        srcOffset += 1;
+        destOffset += 3 + alpha01;
+      }
+    }
+
+    getOutputLength(inputLength, alpha01) {
+      return inputLength * (3 + alpha01);
+    }
+
+  }
+
+  return CalGrayCS;
+}();
+
+const CalRGBCS = function CalRGBCSClosure() {
+  const BRADFORD_SCALE_MATRIX = new Float32Array([0.8951, 0.2664, -0.1614, -0.7502, 1.7135, 0.0367, 0.0389, 
-0.0685, 1.0296]);
+  const BRADFORD_SCALE_INVERSE_MATRIX = new Float32Array([0.9869929, -0.1470543, 0.1599627, 0.4323053, 
0.5183603, 0.0492912, -0.0085287, 0.0400428, 0.9684867]);
+  const SRGB_D65_XYZ_TO_RGB_MATRIX = new Float32Array([3.2404542, -1.5371385, -0.4985314, -0.9692660, 
1.8760108, 0.0415560, 0.0556434, -0.2040259, 1.0572252]);
+  const FLAT_WHITEPOINT_MATRIX = new Float32Array([1, 1, 1]);
+  const tempNormalizeMatrix = new Float32Array(3);
+  const tempConvertMatrix1 = new Float32Array(3);
+  const tempConvertMatrix2 = new Float32Array(3);
+  const DECODE_L_CONSTANT = ((8 + 16) / 116) ** 3 / 8.0;
+
+  function matrixProduct(a, b, result) {
+    result[0] = a[0] * b[0] + a[1] * b[1] + a[2] * b[2];
+    result[1] = a[3] * b[0] + a[4] * b[1] + a[5] * b[2];
+    result[2] = a[6] * b[0] + a[7] * b[1] + a[8] * b[2];
+  }
+
+  function convertToFlat(sourceWhitePoint, LMS, result) {
+    result[0] = LMS[0] * 1 / sourceWhitePoint[0];
+    result[1] = LMS[1] * 1 / sourceWhitePoint[1];
+    result[2] = LMS[2] * 1 / sourceWhitePoint[2];
+  }
+
+  function convertToD65(sourceWhitePoint, LMS, result) {
+    const D65X = 0.95047;
+    const D65Y = 1;
+    const D65Z = 1.08883;
+    result[0] = LMS[0] * D65X / sourceWhitePoint[0];
+    result[1] = LMS[1] * D65Y / sourceWhitePoint[1];
+    result[2] = LMS[2] * D65Z / sourceWhitePoint[2];
+  }
+
+  function sRGBTransferFunction(color) {
+    if (color <= 0.0031308) {
+      return adjustToRange(0, 1, 12.92 * color);
+    }
+
+    if (color >= 0.99554525) {
+      return 1;
+    }
+
+    return adjustToRange(0, 1, (1 + 0.055) * color ** (1 / 2.4) - 0.055);
+  }
+
+  function adjustToRange(min, max, value) {
+    return Math.max(min, Math.min(max, value));
+  }
+
+  function decodeL(L) {
+    if (L < 0) {
+      return -decodeL(-L);
+    }
+
+    if (L > 8.0) {
+      return ((L + 16) / 116) ** 3;
+    }
+
+    return L * DECODE_L_CONSTANT;
+  }
+
+  function compensateBlackPoint(sourceBlackPoint, XYZ_Flat, result) {
+    if (sourceBlackPoint[0] === 0 && sourceBlackPoint[1] === 0 && sourceBlackPoint[2] === 0) {
+      result[0] = XYZ_Flat[0];
+      result[1] = XYZ_Flat[1];
+      result[2] = XYZ_Flat[2];
+      return;
+    }
+
+    const zeroDecodeL = decodeL(0);
+    const X_DST = zeroDecodeL;
+    const X_SRC = decodeL(sourceBlackPoint[0]);
+    const Y_DST = zeroDecodeL;
+    const Y_SRC = decodeL(sourceBlackPoint[1]);
+    const Z_DST = zeroDecodeL;
+    const Z_SRC = decodeL(sourceBlackPoint[2]);
+    const X_Scale = (1 - X_DST) / (1 - X_SRC);
+    const X_Offset = 1 - X_Scale;
+    const Y_Scale = (1 - Y_DST) / (1 - Y_SRC);
+    const Y_Offset = 1 - Y_Scale;
+    const Z_Scale = (1 - Z_DST) / (1 - Z_SRC);
+    const Z_Offset = 1 - Z_Scale;
+    result[0] = XYZ_Flat[0] * X_Scale + X_Offset;
+    result[1] = XYZ_Flat[1] * Y_Scale + Y_Offset;
+    result[2] = XYZ_Flat[2] * Z_Scale + Z_Offset;
+  }
+
+  function normalizeWhitePointToFlat(sourceWhitePoint, XYZ_In, result) {
+    if (sourceWhitePoint[0] === 1 && sourceWhitePoint[2] === 1) {
+      result[0] = XYZ_In[0];
+      result[1] = XYZ_In[1];
+      result[2] = XYZ_In[2];
+      return;
+    }
+
+    const LMS = result;
+    matrixProduct(BRADFORD_SCALE_MATRIX, XYZ_In, LMS);
+    const LMS_Flat = tempNormalizeMatrix;
+    convertToFlat(sourceWhitePoint, LMS, LMS_Flat);
+    matrixProduct(BRADFORD_SCALE_INVERSE_MATRIX, LMS_Flat, result);
+  }
+
+  function normalizeWhitePointToD65(sourceWhitePoint, XYZ_In, result) {
+    const LMS = result;
+    matrixProduct(BRADFORD_SCALE_MATRIX, XYZ_In, LMS);
+    const LMS_D65 = tempNormalizeMatrix;
+    convertToD65(sourceWhitePoint, LMS, LMS_D65);
+    matrixProduct(BRADFORD_SCALE_INVERSE_MATRIX, LMS_D65, result);
+  }
+
+  function convertToRgb(cs, src, srcOffset, dest, destOffset, scale) {
+    const A = adjustToRange(0, 1, src[srcOffset] * scale);
+    const B = adjustToRange(0, 1, src[srcOffset + 1] * scale);
+    const C = adjustToRange(0, 1, src[srcOffset + 2] * scale);
+    const AGR = A === 1 ? 1 : A ** cs.GR;
+    const BGG = B === 1 ? 1 : B ** cs.GG;
+    const CGB = C === 1 ? 1 : C ** cs.GB;
+    const X = cs.MXA * AGR + cs.MXB * BGG + cs.MXC * CGB;
+    const Y = cs.MYA * AGR + cs.MYB * BGG + cs.MYC * CGB;
+    const Z = cs.MZA * AGR + cs.MZB * BGG + cs.MZC * CGB;
+    const XYZ = tempConvertMatrix1;
+    XYZ[0] = X;
+    XYZ[1] = Y;
+    XYZ[2] = Z;
+    const XYZ_Flat = tempConvertMatrix2;
+    normalizeWhitePointToFlat(cs.whitePoint, XYZ, XYZ_Flat);
+    const XYZ_Black = tempConvertMatrix1;
+    compensateBlackPoint(cs.blackPoint, XYZ_Flat, XYZ_Black);
+    const XYZ_D65 = tempConvertMatrix2;
+    normalizeWhitePointToD65(FLAT_WHITEPOINT_MATRIX, XYZ_Black, XYZ_D65);
+    const SRGB = tempConvertMatrix1;
+    matrixProduct(SRGB_D65_XYZ_TO_RGB_MATRIX, XYZ_D65, SRGB);
+    dest[destOffset] = sRGBTransferFunction(SRGB[0]) * 255;
+    dest[destOffset + 1] = sRGBTransferFunction(SRGB[1]) * 255;
+    dest[destOffset + 2] = sRGBTransferFunction(SRGB[2]) * 255;
+  }
+
+  class CalRGBCS extends ColorSpace {
+    constructor(whitePoint, blackPoint, gamma, matrix) {
+      super("CalRGB", 3);
+
+      if (!whitePoint) {
+        throw new _util.FormatError("WhitePoint missing - required for color space CalRGB");
+      }
+
+      blackPoint = blackPoint || new Float32Array(3);
+      gamma = gamma || new Float32Array([1, 1, 1]);
+      matrix = matrix || new Float32Array([1, 0, 0, 0, 1, 0, 0, 0, 1]);
+      const XW = whitePoint[0];
+      const YW = whitePoint[1];
+      const ZW = whitePoint[2];
+      this.whitePoint = whitePoint;
+      const XB = blackPoint[0];
+      const YB = blackPoint[1];
+      const ZB = blackPoint[2];
+      this.blackPoint = blackPoint;
+      this.GR = gamma[0];
+      this.GG = gamma[1];
+      this.GB = gamma[2];
+      this.MXA = matrix[0];
+      this.MYA = matrix[1];
+      this.MZA = matrix[2];
+      this.MXB = matrix[3];
+      this.MYB = matrix[4];
+      this.MZB = matrix[5];
+      this.MXC = matrix[6];
+      this.MYC = matrix[7];
+      this.MZC = matrix[8];
+
+      if (XW < 0 || ZW < 0 || YW !== 1) {
+        throw new _util.FormatError(`Invalid WhitePoint components for ${this.name}` + ", no fallback 
available");
+      }
+
+      if (XB < 0 || YB < 0 || ZB < 0) {
+        (0, _util.info)(`Invalid BlackPoint for ${this.name} [${XB}, ${YB}, ${ZB}], ` + "falling back to 
default.");
+        this.blackPoint = new Float32Array(3);
+      }
+
+      if (this.GR < 0 || this.GG < 0 || this.GB < 0) {
+        (0, _util.info)(`Invalid Gamma [${this.GR}, ${this.GG}, ${this.GB}] for ` + `${this.name}, falling 
back to default.`);
+        this.GR = this.GG = this.GB = 1;
+      }
+    }
+
+    getRgbItem(src, srcOffset, dest, destOffset) {
+      convertToRgb(this, src, srcOffset, dest, destOffset, 1);
+    }
+
+    getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {
+      const scale = 1 / ((1 << bits) - 1);
+
+      for (let i = 0; i < count; ++i) {
+        convertToRgb(this, src, srcOffset, dest, destOffset, scale);
+        srcOffset += 3;
+        destOffset += 3 + alpha01;
+      }
+    }
+
+    getOutputLength(inputLength, alpha01) {
+      return inputLength * (3 + alpha01) / 3 | 0;
+    }
+
+  }
+
+  return CalRGBCS;
+}();
+
+const LabCS = function LabCSClosure() {
+  function fn_g(x) {
+    let result;
+
+    if (x >= 6 / 29) {
+      result = x ** 3;
+    } else {
+      result = 108 / 841 * (x - 4 / 29);
+    }
+
+    return result;
+  }
+
+  function decode(value, high1, low2, high2) {
+    return low2 + value * (high2 - low2) / high1;
+  }
+
+  function convertToRgb(cs, src, srcOffset, maxVal, dest, destOffset) {
+    let Ls = src[srcOffset];
+    let as = src[srcOffset + 1];
+    let bs = src[srcOffset + 2];
+
+    if (maxVal !== false) {
+      Ls = decode(Ls, maxVal, 0, 100);
+      as = decode(as, maxVal, cs.amin, cs.amax);
+      bs = decode(bs, maxVal, cs.bmin, cs.bmax);
+    }
+
+    if (as > cs.amax) {
+      as = cs.amax;
+    } else if (as < cs.amin) {
+      as = cs.amin;
+    }
+
+    if (bs > cs.bmax) {
+      bs = cs.bmax;
+    } else if (bs < cs.bmin) {
+      bs = cs.bmin;
+    }
+
+    const M = (Ls + 16) / 116;
+    const L = M + as / 500;
+    const N = M - bs / 200;
+    const X = cs.XW * fn_g(L);
+    const Y = cs.YW * fn_g(M);
+    const Z = cs.ZW * fn_g(N);
+    let r, g, b;
+
+    if (cs.ZW < 1) {
+      r = X * 3.1339 + Y * -1.617 + Z * -0.4906;
+      g = X * -0.9785 + Y * 1.916 + Z * 0.0333;
+      b = X * 0.072 + Y * -0.229 + Z * 1.4057;
+    } else {
+      r = X * 3.2406 + Y * -1.5372 + Z * -0.4986;
+      g = X * -0.9689 + Y * 1.8758 + Z * 0.0415;
+      b = X * 0.0557 + Y * -0.204 + Z * 1.057;
+    }
+
+    dest[destOffset] = Math.sqrt(r) * 255;
+    dest[destOffset + 1] = Math.sqrt(g) * 255;
+    dest[destOffset + 2] = Math.sqrt(b) * 255;
+  }
+
+  class LabCS extends ColorSpace {
+    constructor(whitePoint, blackPoint, range) {
+      super("Lab", 3);
+
+      if (!whitePoint) {
+        throw new _util.FormatError("WhitePoint missing - required for color space Lab");
+      }
+
+      blackPoint = blackPoint || [0, 0, 0];
+      range = range || [-100, 100, -100, 100];
+      this.XW = whitePoint[0];
+      this.YW = whitePoint[1];
+      this.ZW = whitePoint[2];
+      this.amin = range[0];
+      this.amax = range[1];
+      this.bmin = range[2];
+      this.bmax = range[3];
+      this.XB = blackPoint[0];
+      this.YB = blackPoint[1];
+      this.ZB = blackPoint[2];
+
+      if (this.XW < 0 || this.ZW < 0 || this.YW !== 1) {
+        throw new _util.FormatError("Invalid WhitePoint components, no fallback available");
+      }
+
+      if (this.XB < 0 || this.YB < 0 || this.ZB < 0) {
+        (0, _util.info)("Invalid BlackPoint, falling back to default");
+        this.XB = this.YB = this.ZB = 0;
+      }
+
+      if (this.amin > this.amax || this.bmin > this.bmax) {
+        (0, _util.info)("Invalid Range, falling back to defaults");
+        this.amin = -100;
+        this.amax = 100;
+        this.bmin = -100;
+        this.bmax = 100;
+      }
+    }
+
+    getRgbItem(src, srcOffset, dest, destOffset) {
+      convertToRgb(this, src, srcOffset, false, dest, destOffset);
+    }
+
+    getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {
+      const maxVal = (1 << bits) - 1;
+
+      for (let i = 0; i < count; i++) {
+        convertToRgb(this, src, srcOffset, maxVal, dest, destOffset);
+        srcOffset += 3;
+        destOffset += 3 + alpha01;
+      }
+    }
+
+    getOutputLength(inputLength, alpha01) {
+      return inputLength * (3 + alpha01) / 3 | 0;
+    }
+
+    isDefaultDecode(decodeMap, bpc) {
+      return true;
+    }
+
+    get usesZeroToOneRange() {
+      return (0, _util.shadow)(this, "usesZeroToOneRange", false);
+    }
+
+  }
+
+  return LabCS;
+}();
+
+/***/ }),
+/* 25 */
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
+
+
+
+Object.defineProperty(exports, "__esModule", ({
+  value: true
+}));
+exports.PartialEvaluator = exports.EvaluatorPreprocessor = void 0;
+
+var _util = __w_pdfjs_require__(2);
+
+var _cmap = __w_pdfjs_require__(26);
+
+var _primitives = __w_pdfjs_require__(5);
+
+var _fonts = __w_pdfjs_require__(44);
+
+var _fonts_utils = __w_pdfjs_require__(18);
+
+var _encodings = __w_pdfjs_require__(19);
+
+var _standard_fonts = __w_pdfjs_require__(47);
+
+var _unicode = __w_pdfjs_require__(21);
+
+var _pattern = __w_pdfjs_require__(55);
+
+var _xfa_fonts = __w_pdfjs_require__(12);
+
+var _to_unicode_map = __w_pdfjs_require__(48);
+
+var _function = __w_pdfjs_require__(56);
+
+var _parser = __w_pdfjs_require__(27);
+
+var _image_utils = __w_pdfjs_require__(58);
+
+var _stream = __w_pdfjs_require__(10);
+
+var _bidi = __w_pdfjs_require__(59);
+
+var _colorspace = __w_pdfjs_require__(24);
+
+var _decode_stream = __w_pdfjs_require__(29);
+
+var _glyphlist = __w_pdfjs_require__(20);
+
+var _core_utils = __w_pdfjs_require__(9);
+
+var _metrics = __w_pdfjs_require__(60);
+
+var _murmurhash = __w_pdfjs_require__(61);
+
+var _operator_list = __w_pdfjs_require__(62);
+
+var _image = __w_pdfjs_require__(63);
+
+const DefaultPartialEvaluatorOptions = Object.freeze({
+  maxImageSize: -1,
+  disableFontFace: false,
+  ignoreErrors: false,
+  isEvalSupported: true,
+  fontExtraProperties: false,
+  useSystemFonts: true,
+  cMapUrl: null,
+  standardFontDataUrl: null
+});
+const PatternType = {
+  TILING: 1,
+  SHADING: 2
+};
+const TEXT_CHUNK_BATCH_SIZE = 10;
+const deferred = Promise.resolve();
+
+function normalizeBlendMode(value, parsingArray = false) {
+  if (Array.isArray(value)) {
+    for (let i = 0, ii = value.length; i < ii; i++) {
+      const maybeBM = normalizeBlendMode(value[i], true);
+
+      if (maybeBM) {
+        return maybeBM;
+      }
+    }
+
+    (0, _util.warn)(`Unsupported blend mode Array: ${value}`);
+    return "source-over";
+  }
+
+  if (!(0, _primitives.isName)(value)) {
+    if (parsingArray) {
+      return null;
+    }
+
+    return "source-over";
+  }
+
+  switch (value.name) {
+    case "Normal":
+    case "Compatible":
+      return "source-over";
+
+    case "Multiply":
+      return "multiply";
+
+    case "Screen":
+      return "screen";
+
+    case "Overlay":
+      return "overlay";
+
+    case "Darken":
+      return "darken";
+
+    case "Lighten":
+      return "lighten";
+
+    case "ColorDodge":
+      return "color-dodge";
+
+    case "ColorBurn":
+      return "color-burn";
+
+    case "HardLight":
+      return "hard-light";
+
+    case "SoftLight":
+      return "soft-light";
+
+    case "Difference":
+      return "difference";
+
+    case "Exclusion":
+      return "exclusion";
+
+    case "Hue":
+      return "hue";
+
+    case "Saturation":
+      return "saturation";
+
+    case "Color":
+      return "color";
+
+    case "Luminosity":
+      return "luminosity";
+  }
+
+  if (parsingArray) {
+    return null;
+  }
+
+  (0, _util.warn)(`Unsupported blend mode: ${value.name}`);
+  return "source-over";
+}
+
+class TimeSlotManager {
+  static get TIME_SLOT_DURATION_MS() {
+    return (0, _util.shadow)(this, "TIME_SLOT_DURATION_MS", 20);
+  }
+
+  static get CHECK_TIME_EVERY() {
+    return (0, _util.shadow)(this, "CHECK_TIME_EVERY", 100);
+  }
+
+  constructor() {
+    this.reset();
+  }
+
+  check() {
+    if (++this.checked < TimeSlotManager.CHECK_TIME_EVERY) {
+      return false;
+    }
+
+    this.checked = 0;
+    return this.endTime <= Date.now();
+  }
+
+  reset() {
+    this.endTime = Date.now() + TimeSlotManager.TIME_SLOT_DURATION_MS;
+    this.checked = 0;
+  }
+
+}
+
+class PartialEvaluator {
+  constructor({
+    xref,
+    handler,
+    pageIndex,
+    idFactory,
+    fontCache,
+    builtInCMapCache,
+    standardFontDataCache,
+    globalImageCache,
+    options = null
+  }) {
+    this.xref = xref;
+    this.handler = handler;
+    this.pageIndex = pageIndex;
+    this.idFactory = idFactory;
+    this.fontCache = fontCache;
+    this.builtInCMapCache = builtInCMapCache;
+    this.standardFontDataCache = standardFontDataCache;
+    this.globalImageCache = globalImageCache;
+    this.options = options || DefaultPartialEvaluatorOptions;
+    this.parsingType3Font = false;
+    this._fetchBuiltInCMapBound = this.fetchBuiltInCMap.bind(this);
+  }
+
+  get _pdfFunctionFactory() {
+    const pdfFunctionFactory = new _function.PDFFunctionFactory({
+      xref: this.xref,
+      isEvalSupported: this.options.isEvalSupported
+    });
+    return (0, _util.shadow)(this, "_pdfFunctionFactory", pdfFunctionFactory);
+  }
+
+  clone(newOptions = null) {
+    const newEvaluator = Object.create(this);
+    newEvaluator.options = Object.assign(Object.create(null), this.options, newOptions);
+    return newEvaluator;
+  }
+
+  hasBlendModes(resources, nonBlendModesSet) {
+    if (!(resources instanceof _primitives.Dict)) {
+      return false;
+    }
+
+    if (resources.objId && nonBlendModesSet.has(resources.objId)) {
+      return false;
+    }
+
+    const processed = new _primitives.RefSet(nonBlendModesSet);
+
+    if (resources.objId) {
+      processed.put(resources.objId);
+    }
+
+    const nodes = [resources],
+          xref = this.xref;
+
+    while (nodes.length) {
+      const node = nodes.shift();
+      const graphicStates = node.get("ExtGState");
+
+      if (graphicStates instanceof _primitives.Dict) {
+        for (let graphicState of graphicStates.getRawValues()) {
+          if (graphicState instanceof _primitives.Ref) {
+            if (processed.has(graphicState)) {
+              continue;
+            }
+
+            try {
+              graphicState = xref.fetch(graphicState);
+            } catch (ex) {
+              processed.put(graphicState);
+              (0, _util.info)(`hasBlendModes - ignoring ExtGState: "${ex}".`);
+              continue;
+            }
+          }
+
+          if (!(graphicState instanceof _primitives.Dict)) {
+            continue;
+          }
+
+          if (graphicState.objId) {
+            processed.put(graphicState.objId);
+          }
+
+          const bm = graphicState.get("BM");
+
+          if (bm instanceof _primitives.Name) {
+            if (bm.name !== "Normal") {
+              return true;
+            }
+
+            continue;
+          }
+
+          if (bm !== undefined && Array.isArray(bm)) {
+            for (const element of bm) {
+              if (element instanceof _primitives.Name && element.name !== "Normal") {
+                return true;
+              }
+            }
+          }
+        }
+      }
+
+      const xObjects = node.get("XObject");
+
+      if (!(xObjects instanceof _primitives.Dict)) {
+        continue;
+      }
+
+      for (let xObject of xObjects.getRawValues()) {
+        if (xObject instanceof _primitives.Ref) {
+          if (processed.has(xObject)) {
+            continue;
+          }
+
+          try {
+            xObject = xref.fetch(xObject);
+          } catch (ex) {
+            processed.put(xObject);
+            (0, _util.info)(`hasBlendModes - ignoring XObject: "${ex}".`);
+            continue;
+          }
+        }
+
+        if (!(0, _primitives.isStream)(xObject)) {
+          continue;
+        }
+
+        if (xObject.dict.objId) {
+          processed.put(xObject.dict.objId);
+        }
+
+        const xResources = xObject.dict.get("Resources");
+
+        if (!(xResources instanceof _primitives.Dict)) {
+          continue;
+        }
+
+        if (xResources.objId && processed.has(xResources.objId)) {
+          continue;
+        }
+
+        nodes.push(xResources);
+
+        if (xResources.objId) {
+          processed.put(xResources.objId);
+        }
+      }
+    }
+
+    processed.forEach(ref => {
+      nonBlendModesSet.put(ref);
+    });
+    return false;
+  }
+
+  async fetchBuiltInCMap(name) {
+    const cachedData = this.builtInCMapCache.get(name);
+
+    if (cachedData) {
+      return cachedData;
+    }
+
+    let data;
+
+    if (this.options.cMapUrl !== null) {
+      const url = `${this.options.cMapUrl}${name}.bcmap`;
+      const response = await fetch(url);
+
+      if (!response.ok) {
+        throw new Error(`fetchBuiltInCMap: failed to fetch file "${url}" with "${response.statusText}".`);
+      }
+
+      data = {
+        cMapData: new Uint8Array(await response.arrayBuffer()),
+        compressionType: _util.CMapCompressionType.BINARY
+      };
+    } else {
+      data = await this.handler.sendWithPromise("FetchBuiltInCMap", {
+        name
+      });
+    }
+
+    if (data.compressionType !== _util.CMapCompressionType.NONE) {
+      this.builtInCMapCache.set(name, data);
+    }
+
+    return data;
+  }
+
+  async fetchStandardFontData(name) {
+    const cachedData = this.standardFontDataCache.get(name);
+
+    if (cachedData) {
+      return new _stream.Stream(cachedData);
+    }
+
+    if (this.options.useSystemFonts && name !== "Symbol" && name !== "ZapfDingbats") {
+      return null;
+    }
+
+    const standardFontNameToFileName = (0, _standard_fonts.getFontNameToFileMap)(),
+          filename = standardFontNameToFileName[name];
+    let data;
+
+    if (this.options.standardFontDataUrl !== null) {
+      const url = `${this.options.standardFontDataUrl}${filename}`;
+      const response = await fetch(url);
+
+      if (!response.ok) {
+        (0, _util.warn)(`fetchStandardFontData: failed to fetch file "${url}" with 
"${response.statusText}".`);
+      } else {
+        data = await response.arrayBuffer();
+      }
+    } else {
+      try {
+        data = await this.handler.sendWithPromise("FetchStandardFontData", {
+          filename
+        });
+      } catch (e) {
+        (0, _util.warn)(`fetchStandardFontData: failed to fetch file "${filename}" with "${e}".`);
+      }
+    }
+
+    if (!data) {
+      return null;
+    }
+
+    this.standardFontDataCache.set(name, data);
+    return new _stream.Stream(data);
+  }
+
+  async buildFormXObject(resources, xobj, smask, operatorList, task, initialState, localColorSpaceCache) {
+    const dict = xobj.dict;
+    const matrix = dict.getArray("Matrix");
+    let bbox = dict.getArray("BBox");
+
+    if (Array.isArray(bbox) && bbox.length === 4) {
+      bbox = _util.Util.normalizeRect(bbox);
+    } else {
+      bbox = null;
+    }
+
+    let optionalContent, groupOptions;
+
+    if (dict.has("OC")) {
+      optionalContent = await this.parseMarkedContentProps(dict.get("OC"), resources);
+    }
+
+    if (optionalContent !== undefined) {
+      operatorList.addOp(_util.OPS.beginMarkedContentProps, ["OC", optionalContent]);
+    }
+
+    const group = dict.get("Group");
+
+    if (group) {
+      groupOptions = {
+        matrix,
+        bbox,
+        smask,
+        isolated: false,
+        knockout: false
+      };
+      const groupSubtype = group.get("S");
+      let colorSpace = null;
+
+      if ((0, _primitives.isName)(groupSubtype, "Transparency")) {
+        groupOptions.isolated = group.get("I") || false;
+        groupOptions.knockout = group.get("K") || false;
+
+        if (group.has("CS")) {
+          const cs = group.getRaw("CS");
+
+          const cachedColorSpace = _colorspace.ColorSpace.getCached(cs, this.xref, localColorSpaceCache);
+
+          if (cachedColorSpace) {
+            colorSpace = cachedColorSpace;
+          } else {
+            colorSpace = await this.parseColorSpace({
+              cs,
+              resources,
+              localColorSpaceCache
+            });
+          }
+        }
+      }
+
+      if (smask && smask.backdrop) {
+        colorSpace = colorSpace || _colorspace.ColorSpace.singletons.rgb;
+        smask.backdrop = colorSpace.getRgb(smask.backdrop, 0);
+      }
+
+      operatorList.addOp(_util.OPS.beginGroup, [groupOptions]);
+    }
+
+    operatorList.addOp(_util.OPS.paintFormXObjectBegin, [matrix, bbox]);
+    return this.getOperatorList({
+      stream: xobj,
+      task,
+      resources: dict.get("Resources") || resources,
+      operatorList,
+      initialState
+    }).then(function () {
+      operatorList.addOp(_util.OPS.paintFormXObjectEnd, []);
+
+      if (group) {
+        operatorList.addOp(_util.OPS.endGroup, [groupOptions]);
+      }
+
+      if (optionalContent !== undefined) {
+        operatorList.addOp(_util.OPS.endMarkedContent, []);
+      }
+    });
+  }
+
+  _sendImgData(objId, imgData, cacheGlobally = false) {
+    const transfers = imgData ? [imgData.data.buffer] : null;
+
+    if (this.parsingType3Font || cacheGlobally) {
+      return this.handler.send("commonobj", [objId, "Image", imgData], transfers);
+    }
+
+    return this.handler.send("obj", [objId, this.pageIndex, "Image", imgData], transfers);
+  }
+
+  async buildPaintImageXObject({
+    resources,
+    image,
+    isInline = false,
+    operatorList,
+    cacheKey,
+    localImageCache,
+    localColorSpaceCache
+  }) {
+    const dict = image.dict;
+    const imageRef = dict.objId;
+    const w = dict.get("Width", "W");
+    const h = dict.get("Height", "H");
+
+    if (!(w && (0, _util.isNum)(w)) || !(h && (0, _util.isNum)(h))) {
+      (0, _util.warn)("Image dimensions are missing, or not numbers.");
+      return;
+    }
+
+    const maxImageSize = this.options.maxImageSize;
+
+    if (maxImageSize !== -1 && w * h > maxImageSize) {
+      (0, _util.warn)("Image exceeded maximum allowed size and was removed.");
+      return;
+    }
+
+    let optionalContent;
+
+    if (dict.has("OC")) {
+      optionalContent = await this.parseMarkedContentProps(dict.get("OC"), resources);
+    }
+
+    if (optionalContent !== undefined) {
+      operatorList.addOp(_util.OPS.beginMarkedContentProps, ["OC", optionalContent]);
+    }
+
+    const imageMask = dict.get("ImageMask", "IM") || false;
+    const interpolate = dict.get("Interpolate", "I");
+    let imgData, args;
+
+    if (imageMask) {
+      const width = dict.get("Width", "W");
+      const height = dict.get("Height", "H");
+      const bitStrideLength = width + 7 >> 3;
+      const imgArray = image.getBytes(bitStrideLength * height, true);
+      const decode = dict.getArray("Decode", "D");
+      imgData = _image.PDFImage.createMask({
+        imgArray,
+        width,
+        height,
+        imageIsFromDecodeStream: image instanceof _decode_stream.DecodeStream,
+        inverseDecode: !!decode && decode[0] > 0,
+        interpolate
+      });
+      imgData.cached = !!cacheKey;
+      args = [imgData];
+      operatorList.addOp(_util.OPS.paintImageMaskXObject, args);
+
+      if (cacheKey) {
+        localImageCache.set(cacheKey, imageRef, {
+          fn: _util.OPS.paintImageMaskXObject,
+          args
+        });
+      }
+
+      if (optionalContent !== undefined) {
+        operatorList.addOp(_util.OPS.endMarkedContent, []);
+      }
+
+      return;
+    }
+
+    const softMask = dict.get("SMask", "SM") || false;
+    const mask = dict.get("Mask") || false;
+    const SMALL_IMAGE_DIMENSIONS = 200;
+
+    if (isInline && !softMask && !mask && w + h < SMALL_IMAGE_DIMENSIONS) {
+      const imageObj = new _image.PDFImage({
+        xref: this.xref,
+        res: resources,
+        image,
+        isInline,
+        pdfFunctionFactory: this._pdfFunctionFactory,
+        localColorSpaceCache
+      });
+      imgData = imageObj.createImageData(true);
+      operatorList.addOp(_util.OPS.paintInlineImageXObject, [imgData]);
+
+      if (optionalContent !== undefined) {
+        operatorList.addOp(_util.OPS.endMarkedContent, []);
+      }
+
+      return;
+    }
+
+    let objId = `img_${this.idFactory.createObjId()}`,
+        cacheGlobally = false;
+
+    if (this.parsingType3Font) {
+      objId = `${this.idFactory.getDocId()}_type3_${objId}`;
+    } else if (imageRef) {
+      cacheGlobally = this.globalImageCache.shouldCache(imageRef, this.pageIndex);
+
+      if (cacheGlobally) {
+        objId = `${this.idFactory.getDocId()}_${objId}`;
+      }
+    }
+
+    operatorList.addDependency(objId);
+    args = [objId, w, h];
+
+    _image.PDFImage.buildImage({
+      xref: this.xref,
+      res: resources,
+      image,
+      isInline,
+      pdfFunctionFactory: this._pdfFunctionFactory,
+      localColorSpaceCache
+    }).then(imageObj => {
+      imgData = imageObj.createImageData(false);
+
+      if (cacheKey && imageRef && cacheGlobally) {
+        this.globalImageCache.addByteSize(imageRef, imgData.data.length);
+      }
+
+      return this._sendImgData(objId, imgData, cacheGlobally);
+    }).catch(reason => {
+      (0, _util.warn)(`Unable to decode image "${objId}": "${reason}".`);
+      return this._sendImgData(objId, null, cacheGlobally);
+    });
+
+    operatorList.addOp(_util.OPS.paintImageXObject, args);
+
+    if (cacheKey) {
+      localImageCache.set(cacheKey, imageRef, {
+        fn: _util.OPS.paintImageXObject,
+        args
+      });
+
+      if (imageRef) {
+        (0, _util.assert)(!isInline, "Cannot cache an inline image globally.");
+        this.globalImageCache.addPageIndex(imageRef, this.pageIndex);
+
+        if (cacheGlobally) {
+          this.globalImageCache.setData(imageRef, {
+            objId,
+            fn: _util.OPS.paintImageXObject,
+            args,
+            byteSize: 0
+          });
+        }
+      }
+    }
+
+    if (optionalContent !== undefined) {
+      operatorList.addOp(_util.OPS.endMarkedContent, []);
+    }
+  }
+
+  handleSMask(smask, resources, operatorList, task, stateManager, localColorSpaceCache) {
+    const smaskContent = smask.get("G");
+    const smaskOptions = {
+      subtype: smask.get("S").name,
+      backdrop: smask.get("BC")
+    };
+    const transferObj = smask.get("TR");
+
+    if ((0, _function.isPDFFunction)(transferObj)) {
+      const transferFn = this._pdfFunctionFactory.create(transferObj);
+
+      const transferMap = new Uint8Array(256);
+      const tmp = new Float32Array(1);
+
+      for (let i = 0; i < 256; i++) {
+        tmp[0] = i / 255;
+        transferFn(tmp, 0, tmp, 0);
+        transferMap[i] = tmp[0] * 255 | 0;
+      }
+
+      smaskOptions.transferMap = transferMap;
+    }
+
+    return this.buildFormXObject(resources, smaskContent, smaskOptions, operatorList, task, 
stateManager.state.clone(), localColorSpaceCache);
+  }
+
+  handleTransferFunction(tr) {
+    let transferArray;
+
+    if (Array.isArray(tr)) {
+      transferArray = tr;
+    } else if ((0, _function.isPDFFunction)(tr)) {
+      transferArray = [tr];
+    } else {
+      return null;
+    }
+
+    const transferMaps = [];
+    let numFns = 0,
+        numEffectfulFns = 0;
+
+    for (const entry of transferArray) {
+      const transferObj = this.xref.fetchIfRef(entry);
+      numFns++;
+
+      if ((0, _primitives.isName)(transferObj, "Identity")) {
+        transferMaps.push(null);
+        continue;
+      } else if (!(0, _function.isPDFFunction)(transferObj)) {
+        return null;
+      }
+
+      const transferFn = this._pdfFunctionFactory.create(transferObj);
+
+      const transferMap = new Uint8Array(256),
+            tmp = new Float32Array(1);
+
+      for (let j = 0; j < 256; j++) {
+        tmp[0] = j / 255;
+        transferFn(tmp, 0, tmp, 0);
+        transferMap[j] = tmp[0] * 255 | 0;
+      }
+
+      transferMaps.push(transferMap);
+      numEffectfulFns++;
+    }
+
+    if (!(numFns === 1 || numFns === 4)) {
+      return null;
+    }
+
+    if (numEffectfulFns === 0) {
+      return null;
+    }
+
+    return transferMaps;
+  }
+
+  handleTilingType(fn, color, resources, pattern, patternDict, operatorList, task, localTilingPatternCache) {
+    const tilingOpList = new _operator_list.OperatorList();
+
+    const patternResources = _primitives.Dict.merge({
+      xref: this.xref,
+      dictArray: [patternDict.get("Resources"), resources]
+    });
+
+    return this.getOperatorList({
+      stream: pattern,
+      task,
+      resources: patternResources,
+      operatorList: tilingOpList
+    }).then(function () {
+      const operatorListIR = tilingOpList.getIR();
+      const tilingPatternIR = (0, _pattern.getTilingPatternIR)(operatorListIR, patternDict, color);
+      operatorList.addDependencies(tilingOpList.dependencies);
+      operatorList.addOp(fn, tilingPatternIR);
+
+      if (patternDict.objId) {
+        localTilingPatternCache.set(null, patternDict.objId, {
+          operatorListIR,
+          dict: patternDict
+        });
+      }
+    }).catch(reason => {
+      if (reason instanceof _util.AbortException) {
+        return;
+      }
+
+      if (this.options.ignoreErrors) {
+        this.handler.send("UnsupportedFeature", {
+          featureId: _util.UNSUPPORTED_FEATURES.errorTilingPattern
+        });
+        (0, _util.warn)(`handleTilingType - ignoring pattern: "${reason}".`);
+        return;
+      }
+
+      throw reason;
+    });
+  }
+
+  handleSetFont(resources, fontArgs, fontRef, operatorList, task, state, fallbackFontDict = null, 
cssFontInfo = null) {
+    const fontName = fontArgs && fontArgs[0] instanceof _primitives.Name ? fontArgs[0].name : null;
+    return this.loadFont(fontName, fontRef, resources, fallbackFontDict, cssFontInfo).then(translated => {
+      if (!translated.font.isType3Font) {
+        return translated;
+      }
+
+      return translated.loadType3Data(this, resources, task).then(function () {
+        operatorList.addDependencies(translated.type3Dependencies);
+        return translated;
+      }).catch(reason => {
+        this.handler.send("UnsupportedFeature", {
+          featureId: _util.UNSUPPORTED_FEATURES.errorFontLoadType3
+        });
+        return new TranslatedFont({
+          loadedName: "g_font_error",
+          font: new _fonts.ErrorFont(`Type3 font load error: ${reason}`),
+          dict: translated.font,
+          evaluatorOptions: this.options
+        });
+      });
+    }).then(translated => {
+      state.font = translated.font;
+      translated.send(this.handler);
+      return translated.loadedName;
+    });
+  }
+
+  handleText(chars, state) {
+    const font = state.font;
+    const glyphs = font.charsToGlyphs(chars);
+
+    if (font.data) {
+      const isAddToPathSet = !!(state.textRenderingMode & _util.TextRenderingMode.ADD_TO_PATH_FLAG);
+
+      if (isAddToPathSet || state.fillColorSpace.name === "Pattern" || font.disableFontFace || 
this.options.disableFontFace) {
+        PartialEvaluator.buildFontPaths(font, glyphs, this.handler, this.options);
+      }
+    }
+
+    return glyphs;
+  }
+
+  ensureStateFont(state) {
+    if (state.font) {
+      return;
+    }
+
+    const reason = new _util.FormatError("Missing setFont (Tf) operator before text rendering operator.");
+
+    if (this.options.ignoreErrors) {
+      this.handler.send("UnsupportedFeature", {
+        featureId: _util.UNSUPPORTED_FEATURES.errorFontState
+      });
+      (0, _util.warn)(`ensureStateFont: "${reason}".`);
+      return;
+    }
+
+    throw reason;
+  }
+
+  async setGState({
+    resources,
+    gState,
+    operatorList,
+    cacheKey,
+    task,
+    stateManager,
+    localGStateCache,
+    localColorSpaceCache
+  }) {
+    const gStateRef = gState.objId;
+    let isSimpleGState = true;
+    const gStateObj = [];
+    const gStateKeys = gState.getKeys();
+    let promise = Promise.resolve();
+
+    for (let i = 0, ii = gStateKeys.length; i < ii; i++) {
+      const key = gStateKeys[i];
+      const value = gState.get(key);
+
+      switch (key) {
+        case "Type":
+          break;
+
+        case "LW":
+        case "LC":
+        case "LJ":
+        case "ML":
+        case "D":
+        case "RI":
+        case "FL":
+        case "CA":
+        case "ca":
+          gStateObj.push([key, value]);
+          break;
+
+        case "Font":
+          isSimpleGState = false;
+          promise = promise.then(() => {
+            return this.handleSetFont(resources, null, value[0], operatorList, task, 
stateManager.state).then(function (loadedName) {
+              operatorList.addDependency(loadedName);
+              gStateObj.push([key, [loadedName, value[1]]]);
+            });
+          });
+          break;
+
+        case "BM":
+          gStateObj.push([key, normalizeBlendMode(value)]);
+          break;
+
+        case "SMask":
+          if ((0, _primitives.isName)(value, "None")) {
+            gStateObj.push([key, false]);
+            break;
+          }
+
+          if ((0, _primitives.isDict)(value)) {
+            isSimpleGState = false;
+            promise = promise.then(() => {
+              return this.handleSMask(value, resources, operatorList, task, stateManager, 
localColorSpaceCache);
+            });
+            gStateObj.push([key, true]);
+          } else {
+            (0, _util.warn)("Unsupported SMask type");
+          }
+
+          break;
+
+        case "TR":
+          const transferMaps = this.handleTransferFunction(value);
+          gStateObj.push([key, transferMaps]);
+          break;
+
+        case "OP":
+        case "op":
+        case "OPM":
+        case "BG":
+        case "BG2":
+        case "UCR":
+        case "UCR2":
+        case "TR2":
+        case "HT":
+        case "SM":
+        case "SA":
+        case "AIS":
+        case "TK":
+          (0, _util.info)("graphic state operator " + key);
+          break;
+
+        default:
+          (0, _util.info)("Unknown graphic state operator " + key);
+          break;
+      }
+    }
+
+    return promise.then(function () {
+      if (gStateObj.length > 0) {
+        operatorList.addOp(_util.OPS.setGState, [gStateObj]);
+      }
+
+      if (isSimpleGState) {
+        localGStateCache.set(cacheKey, gStateRef, gStateObj);
+      }
+    });
+  }
+
+  loadFont(fontName, font, resources, fallbackFontDict = null, cssFontInfo = null) {
+    const errorFont = async () => {
+      return new TranslatedFont({
+        loadedName: "g_font_error",
+        font: new _fonts.ErrorFont(`Font "${fontName}" is not available.`),
+        dict: font,
+        evaluatorOptions: this.options
+      });
+    };
+
+    const xref = this.xref;
+    let fontRef;
+
+    if (font) {
+      if (!(0, _primitives.isRef)(font)) {
+        throw new _util.FormatError('The "font" object should be a reference.');
+      }
+
+      fontRef = font;
+    } else {
+      const fontRes = resources.get("Font");
+
+      if (fontRes) {
+        fontRef = fontRes.getRaw(fontName);
+      }
+    }
+
+    if (!fontRef) {
+      const partialMsg = `Font "${fontName || font && font.toString()}" is not available`;
+
+      if (!this.options.ignoreErrors && !this.parsingType3Font) {
+        (0, _util.warn)(`${partialMsg}.`);
+        return errorFont();
+      }
+
+      this.handler.send("UnsupportedFeature", {
+        featureId: _util.UNSUPPORTED_FEATURES.errorFontMissing
+      });
+      (0, _util.warn)(`${partialMsg} -- attempting to fallback to a default font.`);
+
+      if (fallbackFontDict) {
+        fontRef = fallbackFontDict;
+      } else {
+        fontRef = PartialEvaluator.fallbackFontDict;
+      }
+    }
+
+    if (this.fontCache.has(fontRef)) {
+      return this.fontCache.get(fontRef);
+    }
+
+    font = xref.fetchIfRef(fontRef);
+
+    if (!(0, _primitives.isDict)(font)) {
+      return errorFont();
+    }
+
+    if (font.cacheKey && this.fontCache.has(font.cacheKey)) {
+      return this.fontCache.get(font.cacheKey);
+    }
+
+    const fontCapability = (0, _util.createPromiseCapability)();
+    let preEvaluatedFont;
+
+    try {
+      preEvaluatedFont = this.preEvaluateFont(font);
+      preEvaluatedFont.cssFontInfo = cssFontInfo;
+    } catch (reason) {
+      (0, _util.warn)(`loadFont - preEvaluateFont failed: "${reason}".`);
+      return errorFont();
+    }
+
+    const {
+      descriptor,
+      hash
+    } = preEvaluatedFont;
+    const fontRefIsRef = (0, _primitives.isRef)(fontRef);
+    let fontID;
+
+    if (fontRefIsRef) {
+      fontID = `f${fontRef.toString()}`;
+    }
+
+    if (hash && (0, _primitives.isDict)(descriptor)) {
+      if (!descriptor.fontAliases) {
+        descriptor.fontAliases = Object.create(null);
+      }
+
+      const fontAliases = descriptor.fontAliases;
+
+      if (fontAliases[hash]) {
+        const aliasFontRef = fontAliases[hash].aliasRef;
+
+        if (fontRefIsRef && aliasFontRef && this.fontCache.has(aliasFontRef)) {
+          this.fontCache.putAlias(fontRef, aliasFontRef);
+          return this.fontCache.get(fontRef);
+        }
+      } else {
+        fontAliases[hash] = {
+          fontID: this.idFactory.createFontId()
+        };
+      }
+
+      if (fontRefIsRef) {
+        fontAliases[hash].aliasRef = fontRef;
+      }
+
+      fontID = fontAliases[hash].fontID;
+    }
+
+    if (fontRefIsRef) {
+      this.fontCache.put(fontRef, fontCapability.promise);
+    } else {
+      if (!fontID) {
+        fontID = this.idFactory.createFontId();
+      }
+
+      font.cacheKey = `cacheKey_${fontID}`;
+      this.fontCache.put(font.cacheKey, fontCapability.promise);
+    }
+
+    (0, _util.assert)(fontID && fontID.startsWith("f"), 'The "fontID" must be (correctly) defined.');
+    font.loadedName = `${this.idFactory.getDocId()}_${fontID}`;
+    this.translateFont(preEvaluatedFont).then(translatedFont => {
+      if (translatedFont.fontType !== undefined) {
+        const xrefFontStats = xref.stats.fontTypes;
+        xrefFontStats[translatedFont.fontType] = true;
+      }
+
+      fontCapability.resolve(new TranslatedFont({
+        loadedName: font.loadedName,
+        font: translatedFont,
+        dict: font,
+        evaluatorOptions: this.options
+      }));
+    }).catch(reason => {
+      this.handler.send("UnsupportedFeature", {
+        featureId: _util.UNSUPPORTED_FEATURES.errorFontTranslate
+      });
+      (0, _util.warn)(`loadFont - translateFont failed: "${reason}".`);
+
+      try {
+        const fontFile3 = descriptor && descriptor.get("FontFile3");
+        const subtype = fontFile3 && fontFile3.get("Subtype");
+        const fontType = (0, _fonts_utils.getFontType)(preEvaluatedFont.type, subtype && subtype.name);
+        const xrefFontStats = xref.stats.fontTypes;
+        xrefFontStats[fontType] = true;
+      } catch (ex) {}
+
+      fontCapability.resolve(new TranslatedFont({
+        loadedName: font.loadedName,
+        font: new _fonts.ErrorFont(reason instanceof Error ? reason.message : reason),
+        dict: font,
+        evaluatorOptions: this.options
+      }));
+    });
+    return fontCapability.promise;
+  }
+
+  buildPath(operatorList, fn, args, parsingText = false) {
+    const lastIndex = operatorList.length - 1;
+
+    if (!args) {
+      args = [];
+    }
+
+    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]);
+
+      if (parsingText) {
+        operatorList.addOp(_util.OPS.restore, null);
+      }
+    } else {
+      const opArgs = operatorList.argsArray[lastIndex];
+      opArgs[0].push(fn);
+      Array.prototype.push.apply(opArgs[1], args);
+    }
+  }
+
+  parseColorSpace({
+    cs,
+    resources,
+    localColorSpaceCache
+  }) {
+    return _colorspace.ColorSpace.parseAsync({
+      cs,
+      xref: this.xref,
+      resources,
+      pdfFunctionFactory: this._pdfFunctionFactory,
+      localColorSpaceCache
+    }).catch(reason => {
+      if (reason instanceof _util.AbortException) {
+        return null;
+      }
+
+      if (this.options.ignoreErrors) {
+        this.handler.send("UnsupportedFeature", {
+          featureId: _util.UNSUPPORTED_FEATURES.errorColorSpace
+        });
+        (0, _util.warn)(`parseColorSpace - ignoring ColorSpace: "${reason}".`);
+        return null;
+      }
+
+      throw reason;
+    });
+  }
+
+  parseShading({
+    shading,
+    resources,
+    localColorSpaceCache,
+    localShadingPatternCache
+  }) {
+    let id = localShadingPatternCache.get(shading);
+
+    if (!id) {
+      var shadingFill = _pattern.Pattern.parseShading(shading, this.xref, resources, this.handler, 
this._pdfFunctionFactory, localColorSpaceCache);
+
+      const patternIR = shadingFill.getIR();
+      id = `pattern_${this.idFactory.createObjId()}`;
+      localShadingPatternCache.set(shading, id);
+      this.handler.send("obj", [id, this.pageIndex, "Pattern", patternIR]);
+    }
+
+    return id;
+  }
+
+  handleColorN(operatorList, fn, args, cs, patterns, resources, task, localColorSpaceCache, 
localTilingPatternCache, localShadingPatternCache) {
+    const patternName = args.pop();
+
+    if (patternName instanceof _primitives.Name) {
+      const rawPattern = patterns.getRaw(patternName.name);
+      const localTilingPattern = rawPattern instanceof _primitives.Ref && 
localTilingPatternCache.getByRef(rawPattern);
+
+      if (localTilingPattern) {
+        try {
+          const color = cs.base ? cs.base.getRgb(args, 0) : null;
+          const tilingPatternIR = (0, _pattern.getTilingPatternIR)(localTilingPattern.operatorListIR, 
localTilingPattern.dict, color);
+          operatorList.addOp(fn, tilingPatternIR);
+          return undefined;
+        } catch (ex) {}
+      }
+
+      const pattern = this.xref.fetchIfRef(rawPattern);
+
+      if (pattern) {
+        const dict = (0, _primitives.isStream)(pattern) ? pattern.dict : pattern;
+        const typeNum = dict.get("PatternType");
+
+        if (typeNum === PatternType.TILING) {
+          const color = cs.base ? cs.base.getRgb(args, 0) : null;
+          return this.handleTilingType(fn, color, resources, pattern, dict, operatorList, task, 
localTilingPatternCache);
+        } else if (typeNum === PatternType.SHADING) {
+          const shading = dict.get("Shading");
+          const matrix = dict.getArray("Matrix");
+          const objId = this.parseShading({
+            shading,
+            resources,
+            localColorSpaceCache,
+            localShadingPatternCache
+          });
+          operatorList.addOp(fn, ["Shading", objId, matrix]);
+          return undefined;
+        }
+
+        throw new _util.FormatError(`Unknown PatternType: ${typeNum}`);
+      }
+    }
+
+    throw new _util.FormatError(`Unknown PatternName: ${patternName}`);
+  }
+
+  _parseVisibilityExpression(array, nestingCounter, currentResult) {
+    const MAX_NESTING = 10;
+
+    if (++nestingCounter > MAX_NESTING) {
+      (0, _util.warn)("Visibility expression is too deeply nested");
+      return;
+    }
+
+    const length = array.length;
+    const operator = this.xref.fetchIfRef(array[0]);
+
+    if (length < 2 || !(0, _primitives.isName)(operator)) {
+      (0, _util.warn)("Invalid visibility expression");
+      return;
+    }
+
+    switch (operator.name) {
+      case "And":
+      case "Or":
+      case "Not":
+        currentResult.push(operator.name);
+        break;
+
+      default:
+        (0, _util.warn)(`Invalid operator ${operator.name} in visibility expression`);
+        return;
+    }
+
+    for (let i = 1; i < length; i++) {
+      const raw = array[i];
+      const object = this.xref.fetchIfRef(raw);
+
+      if (Array.isArray(object)) {
+        const nestedResult = [];
+        currentResult.push(nestedResult);
+
+        this._parseVisibilityExpression(object, nestingCounter, nestedResult);
+      } else if ((0, _primitives.isRef)(raw)) {
+        currentResult.push(raw.toString());
+      }
+    }
+  }
+
+  async parseMarkedContentProps(contentProperties, resources) {
+    let optionalContent;
+
+    if ((0, _primitives.isName)(contentProperties)) {
+      const properties = resources.get("Properties");
+      optionalContent = properties.get(contentProperties.name);
+    } else if ((0, _primitives.isDict)(contentProperties)) {
+      optionalContent = contentProperties;
+    } else {
+      throw new _util.FormatError("Optional content properties malformed.");
+    }
+
+    const optionalContentType = optionalContent.get("Type").name;
+
+    if (optionalContentType === "OCG") {
+      return {
+        type: optionalContentType,
+        id: optionalContent.objId
+      };
+    } else if (optionalContentType === "OCMD") {
+      const expression = optionalContent.get("VE");
+
+      if (Array.isArray(expression)) {
+        const result = [];
+
+        this._parseVisibilityExpression(expression, 0, result);
+
+        if (result.length > 0) {
+          return {
+            type: "OCMD",
+            expression: result
+          };
+        }
+      }
+
+      const optionalContentGroups = optionalContent.get("OCGs");
+
+      if (Array.isArray(optionalContentGroups) || (0, _primitives.isDict)(optionalContentGroups)) {
+        const groupIds = [];
+
+        if (Array.isArray(optionalContentGroups)) {
+          for (const ocg of optionalContentGroups) {
+            groupIds.push(ocg.toString());
+          }
+        } else {
+          groupIds.push(optionalContentGroups.objId);
+        }
+
+        return {
+          type: optionalContentType,
+          ids: groupIds,
+          policy: (0, _primitives.isName)(optionalContent.get("P")) ? optionalContent.get("P").name : null,
+          expression: null
+        };
+      } else if ((0, _primitives.isRef)(optionalContentGroups)) {
+        return {
+          type: optionalContentType,
+          id: optionalContentGroups.toString()
+        };
+      }
+    }
+
+    return null;
+  }
+
+  getOperatorList({
+    stream,
+    task,
+    resources,
+    operatorList,
+    initialState = null,
+    fallbackFontDict = null
+  }) {
+    resources = resources || _primitives.Dict.empty;
+    initialState = initialState || new EvalState();
+
+    if (!operatorList) {
+      throw new Error('getOperatorList: missing "operatorList" parameter');
+    }
+
+    const self = this;
+    const xref = this.xref;
+    let parsingText = false;
+    const localImageCache = new _image_utils.LocalImageCache();
+    const localColorSpaceCache = new _image_utils.LocalColorSpaceCache();
+    const localGStateCache = new _image_utils.LocalGStateCache();
+    const localTilingPatternCache = new _image_utils.LocalTilingPatternCache();
+    const localShadingPatternCache = new Map();
+
+    const xobjs = resources.get("XObject") || _primitives.Dict.empty;
+
+    const patterns = resources.get("Pattern") || _primitives.Dict.empty;
+
+    const stateManager = new StateManager(initialState);
+    const preprocessor = new EvaluatorPreprocessor(stream, xref, stateManager);
+    const timeSlotManager = new TimeSlotManager();
+
+    function closePendingRestoreOPS(argument) {
+      for (let i = 0, ii = preprocessor.savedStatesDepth; i < ii; i++) {
+        operatorList.addOp(_util.OPS.restore, []);
+      }
+    }
+
+    return new Promise(function promiseBody(resolve, reject) {
+      const next = function (promise) {
+        Promise.all([promise, operatorList.ready]).then(function () {
+          try {
+            promiseBody(resolve, reject);
+          } catch (ex) {
+            reject(ex);
+          }
+        }, reject);
+      };
+
+      task.ensureNotTerminated();
+      timeSlotManager.reset();
+      const operation = {};
+      let stop, i, ii, cs, name, isValidName;
+
+      while (!(stop = timeSlotManager.check())) {
+        operation.args = null;
+
+        if (!preprocessor.read(operation)) {
+          break;
+        }
+
+        let args = operation.args;
+        let fn = operation.fn;
+
+        switch (fn | 0) {
+          case _util.OPS.paintXObject:
+            isValidName = args[0] instanceof _primitives.Name;
+            name = args[0].name;
+
+            if (isValidName) {
+              const localImage = localImageCache.getByName(name);
+
+              if (localImage) {
+                operatorList.addOp(localImage.fn, localImage.args);
+                args = null;
+                continue;
+              }
+            }
+
+            next(new Promise(function (resolveXObject, rejectXObject) {
+              if (!isValidName) {
+                throw new _util.FormatError("XObject must be referred to by name.");
+              }
+
+              let xobj = xobjs.getRaw(name);
+
+              if (xobj instanceof _primitives.Ref) {
+                const localImage = localImageCache.getByRef(xobj);
+
+                if (localImage) {
+                  operatorList.addOp(localImage.fn, localImage.args);
+                  resolveXObject();
+                  return;
+                }
+
+                const globalImage = self.globalImageCache.getData(xobj, self.pageIndex);
+
+                if (globalImage) {
+                  operatorList.addDependency(globalImage.objId);
+                  operatorList.addOp(globalImage.fn, globalImage.args);
+                  resolveXObject();
+                  return;
+                }
+
+                xobj = xref.fetch(xobj);
+              }
+
+              if (!(0, _primitives.isStream)(xobj)) {
+                throw new _util.FormatError("XObject should be a stream");
+              }
+
+              const type = xobj.dict.get("Subtype");
+
+              if (!(0, _primitives.isName)(type)) {
+                throw new _util.FormatError("XObject should have a Name subtype");
+              }
+
+              if (type.name === "Form") {
+                stateManager.save();
+                self.buildFormXObject(resources, xobj, null, operatorList, task, stateManager.state.clone(), 
localColorSpaceCache).then(function () {
+                  stateManager.restore();
+                  resolveXObject();
+                }, rejectXObject);
+                return;
+              } else if (type.name === "Image") {
+                self.buildPaintImageXObject({
+                  resources,
+                  image: xobj,
+                  operatorList,
+                  cacheKey: name,
+                  localImageCache,
+                  localColorSpaceCache
+                }).then(resolveXObject, rejectXObject);
+                return;
+              } else if (type.name === "PS") {
+                (0, _util.info)("Ignored XObject subtype PS");
+              } else {
+                throw new _util.FormatError(`Unhandled XObject subtype ${type.name}`);
+              }
+
+              resolveXObject();
+            }).catch(function (reason) {
+              if (reason instanceof _util.AbortException) {
+                return;
+              }
+
+              if (self.options.ignoreErrors) {
+                self.handler.send("UnsupportedFeature", {
+                  featureId: _util.UNSUPPORTED_FEATURES.errorXObject
+                });
+                (0, _util.warn)(`getOperatorList - ignoring XObject: "${reason}".`);
+                return;
+              }
+
+              throw reason;
+            }));
+            return;
+
+          case _util.OPS.setFont:
+            var fontSize = args[1];
+            next(self.handleSetFont(resources, args, null, operatorList, task, stateManager.state, 
fallbackFontDict).then(function (loadedName) {
+              operatorList.addDependency(loadedName);
+              operatorList.addOp(_util.OPS.setFont, [loadedName, fontSize]);
+            }));
+            return;
+
+          case _util.OPS.beginText:
+            parsingText = true;
+            break;
+
+          case _util.OPS.endText:
+            parsingText = false;
+            break;
+
+          case _util.OPS.endInlineImage:
+            var cacheKey = args[0].cacheKey;
+
+            if (cacheKey) {
+              const localImage = localImageCache.getByName(cacheKey);
+
+              if (localImage) {
+                operatorList.addOp(localImage.fn, localImage.args);
+                args = null;
+                continue;
+              }
+            }
+
+            next(self.buildPaintImageXObject({
+              resources,
+              image: args[0],
+              isInline: true,
+              operatorList,
+              cacheKey,
+              localImageCache,
+              localColorSpaceCache
+            }));
+            return;
+
+          case _util.OPS.showText:
+            if (!stateManager.state.font) {
+              self.ensureStateFont(stateManager.state);
+              continue;
+            }
+
+            args[0] = self.handleText(args[0], stateManager.state);
+            break;
+
+          case _util.OPS.showSpacedText:
+            if (!stateManager.state.font) {
+              self.ensureStateFont(stateManager.state);
+              continue;
+            }
+
+            var arr = args[0];
+            var combinedGlyphs = [];
+            var arrLength = arr.length;
+            var state = stateManager.state;
+
+            for (i = 0; i < arrLength; ++i) {
+              const arrItem = arr[i];
+
+              if ((0, _util.isString)(arrItem)) {
+                Array.prototype.push.apply(combinedGlyphs, self.handleText(arrItem, state));
+              } else if ((0, _util.isNum)(arrItem)) {
+                combinedGlyphs.push(arrItem);
+              }
+            }
+
+            args[0] = combinedGlyphs;
+            fn = _util.OPS.showText;
+            break;
+
+          case _util.OPS.nextLineShowText:
+            if (!stateManager.state.font) {
+              self.ensureStateFont(stateManager.state);
+              continue;
+            }
+
+            operatorList.addOp(_util.OPS.nextLine);
+            args[0] = self.handleText(args[0], stateManager.state);
+            fn = _util.OPS.showText;
+            break;
+
+          case _util.OPS.nextLineSetSpacingShowText:
+            if (!stateManager.state.font) {
+              self.ensureStateFont(stateManager.state);
+              continue;
+            }
+
+            operatorList.addOp(_util.OPS.nextLine);
+            operatorList.addOp(_util.OPS.setWordSpacing, [args.shift()]);
+            operatorList.addOp(_util.OPS.setCharSpacing, [args.shift()]);
+            args[0] = self.handleText(args[0], stateManager.state);
+            fn = _util.OPS.showText;
+            break;
+
+          case _util.OPS.setTextRenderingMode:
+            stateManager.state.textRenderingMode = args[0];
+            break;
+
+          case _util.OPS.setFillColorSpace:
+            {
+              const cachedColorSpace = _colorspace.ColorSpace.getCached(args[0], xref, localColorSpaceCache);
+
+              if (cachedColorSpace) {
+                stateManager.state.fillColorSpace = cachedColorSpace;
+                continue;
+              }
+
+              next(self.parseColorSpace({
+                cs: args[0],
+                resources,
+                localColorSpaceCache
+              }).then(function (colorSpace) {
+                if (colorSpace) {
+                  stateManager.state.fillColorSpace = colorSpace;
+                }
+              }));
+              return;
+            }
+
+          case _util.OPS.setStrokeColorSpace:
+            {
+              const cachedColorSpace = _colorspace.ColorSpace.getCached(args[0], xref, localColorSpaceCache);
+
+              if (cachedColorSpace) {
+                stateManager.state.strokeColorSpace = cachedColorSpace;
+                continue;
+              }
+
+              next(self.parseColorSpace({
+                cs: args[0],
+                resources,
+                localColorSpaceCache
+              }).then(function (colorSpace) {
+                if (colorSpace) {
+                  stateManager.state.strokeColorSpace = colorSpace;
+                }
+              }));
+              return;
+            }
+
+          case _util.OPS.setFillColor:
+            cs = stateManager.state.fillColorSpace;
+            args = cs.getRgb(args, 0);
+            fn = _util.OPS.setFillRGBColor;
+            break;
+
+          case _util.OPS.setStrokeColor:
+            cs = stateManager.state.strokeColorSpace;
+            args = cs.getRgb(args, 0);
+            fn = _util.OPS.setStrokeRGBColor;
+            break;
+
+          case _util.OPS.setFillGray:
+            stateManager.state.fillColorSpace = _colorspace.ColorSpace.singletons.gray;
+            args = _colorspace.ColorSpace.singletons.gray.getRgb(args, 0);
+            fn = _util.OPS.setFillRGBColor;
+            break;
+
+          case _util.OPS.setStrokeGray:
+            stateManager.state.strokeColorSpace = _colorspace.ColorSpace.singletons.gray;
+            args = _colorspace.ColorSpace.singletons.gray.getRgb(args, 0);
+            fn = _util.OPS.setStrokeRGBColor;
+            break;
+
+          case _util.OPS.setFillCMYKColor:
+            stateManager.state.fillColorSpace = _colorspace.ColorSpace.singletons.cmyk;
+            args = _colorspace.ColorSpace.singletons.cmyk.getRgb(args, 0);
+            fn = _util.OPS.setFillRGBColor;
+            break;
+
+          case _util.OPS.setStrokeCMYKColor:
+            stateManager.state.strokeColorSpace = _colorspace.ColorSpace.singletons.cmyk;
+            args = _colorspace.ColorSpace.singletons.cmyk.getRgb(args, 0);
+            fn = _util.OPS.setStrokeRGBColor;
+            break;
+
+          case _util.OPS.setFillRGBColor:
+            stateManager.state.fillColorSpace = _colorspace.ColorSpace.singletons.rgb;
+            args = _colorspace.ColorSpace.singletons.rgb.getRgb(args, 0);
+            break;
+
+          case _util.OPS.setStrokeRGBColor:
+            stateManager.state.strokeColorSpace = _colorspace.ColorSpace.singletons.rgb;
+            args = _colorspace.ColorSpace.singletons.rgb.getRgb(args, 0);
+            break;
+
+          case _util.OPS.setFillColorN:
+            cs = stateManager.state.fillColorSpace;
+
+            if (cs.name === "Pattern") {
+              next(self.handleColorN(operatorList, _util.OPS.setFillColorN, args, cs, patterns, resources, 
task, localColorSpaceCache, localTilingPatternCache, localShadingPatternCache));
+              return;
+            }
+
+            args = cs.getRgb(args, 0);
+            fn = _util.OPS.setFillRGBColor;
+            break;
+
+          case _util.OPS.setStrokeColorN:
+            cs = stateManager.state.strokeColorSpace;
+
+            if (cs.name === "Pattern") {
+              next(self.handleColorN(operatorList, _util.OPS.setStrokeColorN, args, cs, patterns, resources, 
task, localColorSpaceCache, localTilingPatternCache, localShadingPatternCache));
+              return;
+            }
+
+            args = cs.getRgb(args, 0);
+            fn = _util.OPS.setStrokeRGBColor;
+            break;
+
+          case _util.OPS.shadingFill:
+            var shadingRes = resources.get("Shading");
+
+            if (!shadingRes) {
+              throw new _util.FormatError("No shading resource found");
+            }
+
+            var shading = shadingRes.get(args[0].name);
+
+            if (!shading) {
+              throw new _util.FormatError("No shading object found");
+            }
+
+            const patternId = self.parseShading({
+              shading,
+              resources,
+              localColorSpaceCache,
+              localShadingPatternCache
+            });
+            args = [patternId];
+            fn = _util.OPS.shadingFill;
+            break;
+
+          case _util.OPS.setGState:
+            isValidName = args[0] instanceof _primitives.Name;
+            name = args[0].name;
+
+            if (isValidName) {
+              const localGStateObj = localGStateCache.getByName(name);
+
+              if (localGStateObj) {
+                if (localGStateObj.length > 0) {
+                  operatorList.addOp(_util.OPS.setGState, [localGStateObj]);
+                }
+
+                args = null;
+                continue;
+              }
+            }
+
+            next(new Promise(function (resolveGState, rejectGState) {
+              if (!isValidName) {
+                throw new _util.FormatError("GState must be referred to by name.");
+              }
+
+              const extGState = resources.get("ExtGState");
+
+              if (!(extGState instanceof _primitives.Dict)) {
+                throw new _util.FormatError("ExtGState should be a dictionary.");
+              }
+
+              const gState = extGState.get(name);
+
+              if (!(gState instanceof _primitives.Dict)) {
+                throw new _util.FormatError("GState should be a dictionary.");
+              }
+
+              self.setGState({
+                resources,
+                gState,
+                operatorList,
+                cacheKey: name,
+                task,
+                stateManager,
+                localGStateCache,
+                localColorSpaceCache
+              }).then(resolveGState, rejectGState);
+            }).catch(function (reason) {
+              if (reason instanceof _util.AbortException) {
+                return;
+              }
+
+              if (self.options.ignoreErrors) {
+                self.handler.send("UnsupportedFeature", {
+                  featureId: _util.UNSUPPORTED_FEATURES.errorExtGState
+                });
+                (0, _util.warn)(`getOperatorList - ignoring ExtGState: "${reason}".`);
+                return;
+              }
+
+              throw reason;
+            }));
+            return;
+
+          case _util.OPS.moveTo:
+          case _util.OPS.lineTo:
+          case _util.OPS.curveTo:
+          case _util.OPS.curveTo2:
+          case _util.OPS.curveTo3:
+          case _util.OPS.closePath:
+          case _util.OPS.rectangle:
+            self.buildPath(operatorList, fn, args, parsingText);
+            continue;
+
+          case _util.OPS.markPoint:
+          case _util.OPS.markPointProps:
+          case _util.OPS.beginCompat:
+          case _util.OPS.endCompat:
+            continue;
+
+          case _util.OPS.beginMarkedContentProps:
+            if (!(0, _primitives.isName)(args[0])) {
+              (0, _util.warn)(`Expected name for beginMarkedContentProps arg0=${args[0]}`);
+              continue;
+            }
+
+            if (args[0].name === "OC") {
+              next(self.parseMarkedContentProps(args[1], resources).then(data => {
+                operatorList.addOp(_util.OPS.beginMarkedContentProps, ["OC", data]);
+              }).catch(reason => {
+                if (reason instanceof _util.AbortException) {
+                  return;
+                }
+
+                if (self.options.ignoreErrors) {
+                  self.handler.send("UnsupportedFeature", {
+                    featureId: _util.UNSUPPORTED_FEATURES.errorMarkedContent
+                  });
+                  (0, _util.warn)(`getOperatorList - ignoring beginMarkedContentProps: "${reason}".`);
+                  return;
+                }
+
+                throw reason;
+              }));
+              return;
+            }
+
+            args = [args[0].name, args[1] instanceof _primitives.Dict ? args[1].get("MCID") : null];
+            break;
+
+          case _util.OPS.beginMarkedContent:
+          case _util.OPS.endMarkedContent:
+          default:
+            if (args !== null) {
+              for (i = 0, ii = args.length; i < ii; i++) {
+                if (args[i] instanceof _primitives.Dict) {
+                  break;
+                }
+              }
+
+              if (i < ii) {
+                (0, _util.warn)("getOperatorList - ignoring operator: " + fn);
+                continue;
+              }
+            }
+
+        }
+
+        operatorList.addOp(fn, args);
+      }
+
+      if (stop) {
+        next(deferred);
+        return;
+      }
+
+      closePendingRestoreOPS();
+      resolve();
+    }).catch(reason => {
+      if (reason instanceof _util.AbortException) {
+        return;
+      }
+
+      if (this.options.ignoreErrors) {
+        this.handler.send("UnsupportedFeature", {
+          featureId: _util.UNSUPPORTED_FEATURES.errorOperatorList
+        });
+        (0, _util.warn)(`getOperatorList - ignoring errors during "${task.name}" ` + `task: "${reason}".`);
+        closePendingRestoreOPS();
+        return;
+      }
+
+      throw reason;
+    });
+  }
+
+  getTextContent({
+    stream,
+    task,
+    resources,
+    stateManager = null,
+    normalizeWhitespace = false,
+    combineTextItems = false,
+    includeMarkedContent = false,
+    sink,
+    seenStyles = new Set()
+  }) {
+    resources = resources || _primitives.Dict.empty;
+    stateManager = stateManager || new StateManager(new TextState());
+    const WhitespaceRegexp = /\s/g;
+    const textContent = {
+      items: [],
+      styles: Object.create(null)
+    };
+    const textContentItem = {
+      initialized: false,
+      str: [],
+      totalWidth: 0,
+      totalHeight: 0,
+      width: 0,
+      height: 0,
+      vertical: false,
+      lastCharSize: 0,
+      prevTransform: null,
+      textAdvanceScale: 0,
+      spaceWidth: 0,
+      spaceInFlowMin: 0,
+      spaceInFlowMax: 0,
+      trackingSpaceMin: Infinity,
+      transform: null,
+      fontName: null,
+      hasEOL: false,
+      isLastCharWhiteSpace: false
+    };
+    const TRACKING_SPACE_FACTOR = 0.3;
+    const SPACE_IN_FLOW_MIN_FACTOR = 0.3;
+    const SPACE_IN_FLOW_MAX_FACTOR = 1.3;
+    const self = this;
+    const xref = this.xref;
+    const showSpacedTextBuffer = [];
+    let xobjs = null;
+    const emptyXObjectCache = new _image_utils.LocalImageCache();
+    const emptyGStateCache = new _image_utils.LocalGStateCache();
+    const preprocessor = new EvaluatorPreprocessor(stream, xref, stateManager);
+    let textState;
+
+    function getCurrentTextTransform() {
+      const font = textState.font;
+      const tsm = [textState.fontSize * textState.textHScale, 0, 0, textState.fontSize, 0, 
textState.textRise];
+
+      if (font.isType3Font && (textState.fontSize <= 1 || font.isCharBBox) && !(0, 
_util.isArrayEqual)(textState.fontMatrix, _util.FONT_IDENTITY_MATRIX)) {
+        const glyphHeight = font.bbox[3] - font.bbox[1];
+
+        if (glyphHeight > 0) {
+          tsm[3] *= glyphHeight * textState.fontMatrix[3];
+        }
+      }
+
+      return _util.Util.transform(textState.ctm, _util.Util.transform(textState.textMatrix, tsm));
+    }
+
+    function ensureTextContentItem() {
+      if (textContentItem.initialized) {
+        return textContentItem;
+      }
+
+      const font = textState.font,
+            loadedName = font.loadedName;
+
+      if (!seenStyles.has(loadedName)) {
+        seenStyles.add(loadedName);
+        textContent.styles[loadedName] = {
+          fontFamily: font.fallbackName,
+          ascent: font.ascent,
+          descent: font.descent,
+          vertical: font.vertical
+        };
+      }
+
+      textContentItem.fontName = loadedName;
+      const trm = textContentItem.transform = getCurrentTextTransform();
+
+      if (!font.vertical) {
+        textContentItem.width = textContentItem.totalWidth = 0;
+        textContentItem.height = textContentItem.totalHeight = Math.hypot(trm[2], trm[3]);
+        textContentItem.vertical = false;
+      } else {
+        textContentItem.width = textContentItem.totalWidth = Math.hypot(trm[0], trm[1]);
+        textContentItem.height = textContentItem.totalHeight = 0;
+        textContentItem.vertical = true;
+      }
+
+      const scaleLineX = Math.hypot(textState.textLineMatrix[0], textState.textLineMatrix[1]);
+      const scaleCtmX = Math.hypot(textState.ctm[0], textState.ctm[1]);
+      textContentItem.textAdvanceScale = scaleCtmX * scaleLineX;
+      textContentItem.lastCharSize = textContentItem.lastCharSize || 0;
+      const spaceWidth = font.spaceWidth / 1000 * textState.fontSize;
+
+      if (spaceWidth) {
+        textContentItem.spaceWidth = spaceWidth;
+        textContentItem.trackingSpaceMin = spaceWidth * TRACKING_SPACE_FACTOR;
+        textContentItem.spaceInFlowMin = spaceWidth * SPACE_IN_FLOW_MIN_FACTOR;
+        textContentItem.spaceInFlowMax = spaceWidth * SPACE_IN_FLOW_MAX_FACTOR;
+      } else {
+        textContentItem.spaceWidth = 0;
+        textContentItem.trackingSpaceMin = Infinity;
+      }
+
+      textContentItem.hasEOL = false;
+      textContentItem.initialized = true;
+      return textContentItem;
+    }
+
+    function updateAdvanceScale() {
+      if (!textContentItem.initialized) {
+        return;
+      }
+
+      const scaleLineX = Math.hypot(textState.textLineMatrix[0], textState.textLineMatrix[1]);
+      const scaleCtmX = Math.hypot(textState.ctm[0], textState.ctm[1]);
+      const scaleFactor = scaleCtmX * scaleLineX;
+
+      if (scaleFactor === textContentItem.textAdvanceScale) {
+        return;
+      }
+
+      if (!textContentItem.vertical) {
+        textContentItem.totalWidth += textContentItem.width * textContentItem.textAdvanceScale;
+        textContentItem.width = 0;
+      } else {
+        textContentItem.totalHeight += textContentItem.height * textContentItem.textAdvanceScale;
+        textContentItem.height = 0;
+      }
+
+      textContentItem.textAdvanceScale = scaleFactor;
+    }
+
+    function replaceWhitespace(str) {
+      const ii = str.length;
+      let i = 0,
+          code;
+
+      while (i < ii && (code = str.charCodeAt(i)) >= 0x20 && code <= 0x7f) {
+        i++;
+      }
+
+      return i < ii ? str.replace(WhitespaceRegexp, " ") : str;
+    }
+
+    function runBidiTransform(textChunk) {
+      const text = textChunk.str.join("");
+      const bidiResult = (0, _bidi.bidi)(text, -1, textChunk.vertical);
+      const str = normalizeWhitespace ? replaceWhitespace(bidiResult.str) : bidiResult.str;
+      return {
+        str,
+        dir: bidiResult.dir,
+        width: textChunk.totalWidth,
+        height: textChunk.totalHeight,
+        transform: textChunk.transform,
+        fontName: textChunk.fontName,
+        hasEOL: textChunk.hasEOL
+      };
+    }
+
+    function handleSetFont(fontName, fontRef) {
+      return self.loadFont(fontName, fontRef, resources).then(function (translated) {
+        if (!translated.font.isType3Font) {
+          return translated;
+        }
+
+        return translated.loadType3Data(self, resources, task).catch(function () {}).then(function () {
+          return translated;
+        });
+      }).then(function (translated) {
+        textState.font = translated.font;
+        textState.fontMatrix = translated.font.fontMatrix || _util.FONT_IDENTITY_MATRIX;
+      });
+    }
+
+    function compareWithLastPosition(fontSize) {
+      if (!combineTextItems || !textState.font || !textContentItem.prevTransform) {
+        return;
+      }
+
+      const currentTransform = getCurrentTextTransform();
+      const posX = currentTransform[4];
+      const posY = currentTransform[5];
+      const lastPosX = textContentItem.prevTransform[4];
+      const lastPosY = textContentItem.prevTransform[5];
+
+      if (lastPosX === posX && lastPosY === posY) {
+        return;
+      }
+
+      const advanceX = (posX - lastPosX) / textContentItem.textAdvanceScale;
+      const advanceY = (posY - lastPosY) / textContentItem.textAdvanceScale;
+      const HALF_LAST_CHAR = -0.5 * textContentItem.lastCharSize;
+
+      if (textState.font.vertical) {
+        if (Math.abs(advanceX) > textContentItem.width / textContentItem.textAdvanceScale) {
+          appendEOL();
+          return;
+        }
+
+        if (HALF_LAST_CHAR > advanceY) {
+          return;
+        }
+
+        if (advanceY > textContentItem.trackingSpaceMin) {
+          textContentItem.height += advanceY;
+        } else if (!addFakeSpaces(advanceY, 0, textContentItem.prevTransform)) {
+          if (textContentItem.str.length === 0) {
+            textContent.items.push({
+              str: " ",
+              dir: "ltr",
+              width: 0,
+              height: advanceY,
+              transform: textContentItem.prevTransform,
+              fontName: textContentItem.fontName,
+              hasEOL: false
+            });
+            textContentItem.isLastCharWhiteSpace = true;
+          } else {
+            textContentItem.height += advanceY;
+          }
+        }
+
+        return;
+      }
+
+      if (Math.abs(advanceY) > textContentItem.height / textContentItem.textAdvanceScale) {
+        appendEOL();
+        return;
+      }
+
+      if (HALF_LAST_CHAR > advanceX) {
+        return;
+      }
+
+      if (advanceX <= textContentItem.trackingSpaceMin) {
+        textContentItem.width += advanceX;
+      } else if (!addFakeSpaces(advanceX, 0, textContentItem.prevTransform)) {
+        if (textContentItem.str.length === 0) {
+          textContent.items.push({
+            str: " ",
+            dir: "ltr",
+            width: advanceX,
+            height: 0,
+            transform: textContentItem.prevTransform,
+            fontName: textContentItem.fontName,
+            hasEOL: false
+          });
+          textContentItem.isLastCharWhiteSpace = true;
+        } else {
+          textContentItem.width += advanceX;
+        }
+      }
+    }
+
+    function buildTextContentItem({
+      chars,
+      extraSpacing,
+      isFirstChunk
+    }) {
+      const font = textState.font;
+
+      if (!chars) {
+        const charSpacing = textState.charSpacing + extraSpacing;
+
+        if (charSpacing) {
+          if (!font.vertical) {
+            textState.translateTextMatrix(charSpacing * textState.textHScale, 0);
+          } else {
+            textState.translateTextMatrix(0, charSpacing);
+          }
+        }
+
+        return;
+      }
+
+      const NormalizedUnicodes = (0, _unicode.getNormalizedUnicodes)();
+      const glyphs = font.charsToGlyphs(chars);
+      const scale = textState.fontMatrix[0] * textState.fontSize;
+
+      if (isFirstChunk) {
+        compareWithLastPosition(scale);
+      }
+
+      let textChunk = ensureTextContentItem();
+      let size = 0;
+      let lastCharSize = 0;
+
+      for (let i = 0, ii = glyphs.length; i < ii; i++) {
+        const glyph = glyphs[i];
+        let charSpacing = textState.charSpacing + (i === ii - 1 ? extraSpacing : 0);
+        let glyphUnicode = glyph.unicode;
+
+        if (glyph.isSpace) {
+          charSpacing += textState.wordSpacing;
+          textChunk.isLastCharWhiteSpace = true;
+        } else {
+          glyphUnicode = NormalizedUnicodes[glyphUnicode] || glyphUnicode;
+          glyphUnicode = (0, _unicode.reverseIfRtl)(glyphUnicode);
+          textChunk.isLastCharWhiteSpace = false;
+        }
+
+        textChunk.str.push(glyphUnicode);
+        const glyphWidth = font.vertical && glyph.vmetric ? glyph.vmetric[0] : glyph.width;
+        let scaledDim = glyphWidth * scale;
+
+        if (!font.vertical) {
+          scaledDim *= textState.textHScale;
+          textState.translateTextMatrix(scaledDim, 0);
+        } else {
+          textState.translateTextMatrix(0, scaledDim);
+          scaledDim = Math.abs(scaledDim);
+        }
+
+        size += scaledDim;
+
+        if (charSpacing) {
+          if (!font.vertical) {
+            charSpacing *= textState.textHScale;
+          }
+
+          scaledDim += charSpacing;
+          const wasSplit = charSpacing > textContentItem.trackingSpaceMin && addFakeSpaces(charSpacing, 
size);
+
+          if (!font.vertical) {
+            textState.translateTextMatrix(charSpacing, 0);
+          } else {
+            textState.translateTextMatrix(0, charSpacing);
+          }
+
+          if (wasSplit) {
+            textChunk = ensureTextContentItem();
+            size = 0;
+          } else {
+            size += charSpacing;
+          }
+        }
+
+        lastCharSize = scaledDim;
+      }
+
+      textChunk.lastCharSize = lastCharSize;
+
+      if (!font.vertical) {
+        textChunk.width += size;
+      } else {
+        textChunk.height += size;
+      }
+
+      textChunk.prevTransform = getCurrentTextTransform();
+    }
+
+    function appendEOL() {
+      if (textContentItem.initialized) {
+        textContentItem.hasEOL = true;
+        flushTextContentItem();
+      } else {
+        textContent.items.push({
+          str: "",
+          dir: "ltr",
+          width: 0,
+          height: 0,
+          transform: getCurrentTextTransform(),
+          fontName: textState.font.loadedName,
+          hasEOL: true
+        });
+      }
+
+      textContentItem.isLastCharWhiteSpace = false;
+      textContentItem.lastCharSize = 0;
+    }
+
+    function addFakeSpaces(width, size, transf = null) {
+      if (textContentItem.spaceInFlowMin <= width && width <= textContentItem.spaceInFlowMax) {
+        if (textContentItem.initialized) {
+          textContentItem.str.push(" ");
+          textContentItem.isLastCharWhiteSpace = true;
+        }
+
+        return false;
+      }
+
+      const fontName = textContentItem.fontName;
+      let height = 0;
+      width *= textContentItem.textAdvanceScale;
+
+      if (!textContentItem.vertical) {
+        textContentItem.width += size;
+      } else {
+        textContentItem.height += size;
+        height = width;
+        width = 0;
+      }
+
+      flushTextContentItem();
+
+      if (textContentItem.isLastCharWhiteSpace) {
+        return true;
+      }
+
+      textContentItem.isLastCharWhiteSpace = true;
+      textContent.items.push({
+        str: " ",
+        dir: "ltr",
+        width,
+        height,
+        transform: transf ? transf : getCurrentTextTransform(),
+        fontName,
+        hasEOL: false
+      });
+      return true;
+    }
+
+    function flushTextContentItem() {
+      if (!textContentItem.initialized || !textContentItem.str) {
+        return;
+      }
+
+      if (!textContentItem.vertical) {
+        textContentItem.totalWidth += textContentItem.width * textContentItem.textAdvanceScale;
+      } else {
+        textContentItem.totalHeight += textContentItem.height * textContentItem.textAdvanceScale;
+      }
+
+      textContent.items.push(runBidiTransform(textContentItem));
+      textContentItem.initialized = false;
+      textContentItem.str.length = 0;
+    }
+
+    function enqueueChunk(batch = false) {
+      const length = textContent.items.length;
+
+      if (length === 0) {
+        return;
+      }
+
+      if (batch && length < TEXT_CHUNK_BATCH_SIZE) {
+        return;
+      }
+
+      sink.enqueue(textContent, length);
+      textContent.items = [];
+      textContent.styles = Object.create(null);
+    }
+
+    const timeSlotManager = new TimeSlotManager();
+    return new Promise(function promiseBody(resolve, reject) {
+      const next = function (promise) {
+        enqueueChunk(true);
+        Promise.all([promise, sink.ready]).then(function () {
+          try {
+            promiseBody(resolve, reject);
+          } catch (ex) {
+            reject(ex);
+          }
+        }, reject);
+      };
+
+      task.ensureNotTerminated();
+      timeSlotManager.reset();
+      const operation = {};
+      let stop,
+          args = [];
+
+      while (!(stop = timeSlotManager.check())) {
+        args.length = 0;
+        operation.args = args;
+
+        if (!preprocessor.read(operation)) {
+          break;
+        }
+
+        textState = stateManager.state;
+        const fn = operation.fn;
+        args = operation.args;
+
+        switch (fn | 0) {
+          case _util.OPS.setFont:
+            var fontNameArg = args[0].name,
+                fontSizeArg = args[1];
+
+            if (textState.font && fontNameArg === textState.fontName && fontSizeArg === textState.fontSize) {
+              break;
+            }
+
+            flushTextContentItem();
+            textState.fontName = fontNameArg;
+            textState.fontSize = fontSizeArg;
+            next(handleSetFont(fontNameArg, null));
+            return;
+
+          case _util.OPS.setTextRise:
+            flushTextContentItem();
+            textState.textRise = args[0];
+            break;
+
+          case _util.OPS.setHScale:
+            flushTextContentItem();
+            textState.textHScale = args[0] / 100;
+            break;
+
+          case _util.OPS.setLeading:
+            flushTextContentItem();
+            textState.leading = args[0];
+            break;
+
+          case _util.OPS.moveText:
+            textState.translateTextLineMatrix(args[0], args[1]);
+            textState.textMatrix = textState.textLineMatrix.slice();
+            break;
+
+          case _util.OPS.setLeadingMoveText:
+            flushTextContentItem();
+            textState.leading = -args[1];
+            textState.translateTextLineMatrix(args[0], args[1]);
+            textState.textMatrix = textState.textLineMatrix.slice();
+            break;
+
+          case _util.OPS.nextLine:
+            appendEOL();
+            textState.carriageReturn();
+            break;
+
+          case _util.OPS.setTextMatrix:
+            textState.setTextMatrix(args[0], args[1], args[2], args[3], args[4], args[5]);
+            textState.setTextLineMatrix(args[0], args[1], args[2], args[3], args[4], args[5]);
+            updateAdvanceScale();
+            break;
+
+          case _util.OPS.setCharSpacing:
+            textState.charSpacing = args[0];
+            break;
+
+          case _util.OPS.setWordSpacing:
+            textState.wordSpacing = args[0];
+            break;
+
+          case _util.OPS.beginText:
+            flushTextContentItem();
+            textState.textMatrix = _util.IDENTITY_MATRIX.slice();
+            textState.textLineMatrix = _util.IDENTITY_MATRIX.slice();
+            break;
+
+          case _util.OPS.showSpacedText:
+            if (!stateManager.state.font) {
+              self.ensureStateFont(stateManager.state);
+              continue;
+            }
+
+            const spaceFactor = (textState.font.vertical ? 1 : -1) * textState.fontSize / 1000;
+            const elements = args[0];
+            let isFirstChunk = true;
+
+            for (let i = 0, ii = elements.length; i < ii - 1; i++) {
+              const item = elements[i];
+
+              if (typeof item === "string") {
+                showSpacedTextBuffer.push(item);
+              } else if (typeof item === "number" && item !== 0) {
+                const str = showSpacedTextBuffer.join("");
+                showSpacedTextBuffer.length = 0;
+                buildTextContentItem({
+                  chars: str,
+                  extraSpacing: item * spaceFactor,
+                  isFirstChunk
+                });
+
+                if (str && isFirstChunk) {
+                  isFirstChunk = false;
+                }
+              }
+            }
+
+            const item = elements[elements.length - 1];
+
+            if (typeof item === "string") {
+              showSpacedTextBuffer.push(item);
+            }
+
+            if (showSpacedTextBuffer.length > 0) {
+              const str = showSpacedTextBuffer.join("");
+              showSpacedTextBuffer.length = 0;
+              buildTextContentItem({
+                chars: str,
+                extraSpacing: 0,
+                isFirstChunk
+              });
+            }
+
+            break;
+
+          case _util.OPS.showText:
+            if (!stateManager.state.font) {
+              self.ensureStateFont(stateManager.state);
+              continue;
+            }
+
+            buildTextContentItem({
+              chars: args[0],
+              extraSpacing: 0,
+              isFirstChunk: true
+            });
+            break;
+
+          case _util.OPS.nextLineShowText:
+            if (!stateManager.state.font) {
+              self.ensureStateFont(stateManager.state);
+              continue;
+            }
+
+            textContentItem.hasEOL = true;
+            flushTextContentItem();
+            textState.carriageReturn();
+            buildTextContentItem({
+              chars: args[0],
+              extraSpacing: 0,
+              isFirstChunk: true
+            });
+            break;
+
+          case _util.OPS.nextLineSetSpacingShowText:
+            if (!stateManager.state.font) {
+              self.ensureStateFont(stateManager.state);
+              continue;
+            }
+
+            textContentItem.hasEOL = true;
+            flushTextContentItem();
+            textState.wordSpacing = args[0];
+            textState.charSpacing = args[1];
+            textState.carriageReturn();
+            buildTextContentItem({
+              chars: args[2],
+              extraSpacing: 0,
+              isFirstChunk: true
+            });
+            break;
+
+          case _util.OPS.paintXObject:
+            flushTextContentItem();
+
+            if (!xobjs) {
+              xobjs = resources.get("XObject") || _primitives.Dict.empty;
+            }
+
+            var isValidName = args[0] instanceof _primitives.Name;
+            var name = args[0].name;
+
+            if (isValidName && emptyXObjectCache.getByName(name)) {
+              break;
+            }
+
+            next(new Promise(function (resolveXObject, rejectXObject) {
+              if (!isValidName) {
+                throw new _util.FormatError("XObject must be referred to by name.");
+              }
+
+              let xobj = xobjs.getRaw(name);
+
+              if (xobj instanceof _primitives.Ref) {
+                if (emptyXObjectCache.getByRef(xobj)) {
+                  resolveXObject();
+                  return;
+                }
+
+                const globalImage = self.globalImageCache.getData(xobj, self.pageIndex);
+
+                if (globalImage) {
+                  resolveXObject();
+                  return;
+                }
+
+                xobj = xref.fetch(xobj);
+              }
+
+              if (!(0, _primitives.isStream)(xobj)) {
+                throw new _util.FormatError("XObject should be a stream");
+              }
+
+              const type = xobj.dict.get("Subtype");
+
+              if (!(0, _primitives.isName)(type)) {
+                throw new _util.FormatError("XObject should have a Name subtype");
+              }
+
+              if (type.name !== "Form") {
+                emptyXObjectCache.set(name, xobj.dict.objId, true);
+                resolveXObject();
+                return;
+              }
+
+              const currentState = stateManager.state.clone();
+              const xObjStateManager = new StateManager(currentState);
+              const matrix = xobj.dict.getArray("Matrix");
+
+              if (Array.isArray(matrix) && matrix.length === 6) {
+                xObjStateManager.transform(matrix);
+              }
+
+              enqueueChunk();
+              const sinkWrapper = {
+                enqueueInvoked: false,
+
+                enqueue(chunk, size) {
+                  this.enqueueInvoked = true;
+                  sink.enqueue(chunk, size);
+                },
+
+                get desiredSize() {
+                  return sink.desiredSize;
+                },
+
+                get ready() {
+                  return sink.ready;
+                }
+
+              };
+              self.getTextContent({
+                stream: xobj,
+                task,
+                resources: xobj.dict.get("Resources") || resources,
+                stateManager: xObjStateManager,
+                normalizeWhitespace,
+                combineTextItems,
+                includeMarkedContent,
+                sink: sinkWrapper,
+                seenStyles
+              }).then(function () {
+                if (!sinkWrapper.enqueueInvoked) {
+                  emptyXObjectCache.set(name, xobj.dict.objId, true);
+                }
+
+                resolveXObject();
+              }, rejectXObject);
+            }).catch(function (reason) {
+              if (reason instanceof _util.AbortException) {
+                return;
+              }
+
+              if (self.options.ignoreErrors) {
+                (0, _util.warn)(`getTextContent - ignoring XObject: "${reason}".`);
+                return;
+              }
+
+              throw reason;
+            }));
+            return;
+
+          case _util.OPS.setGState:
+            isValidName = args[0] instanceof _primitives.Name;
+            name = args[0].name;
+
+            if (isValidName && emptyGStateCache.getByName(name)) {
+              break;
+            }
+
+            next(new Promise(function (resolveGState, rejectGState) {
+              if (!isValidName) {
+                throw new _util.FormatError("GState must be referred to by name.");
+              }
+
+              const extGState = resources.get("ExtGState");
+
+              if (!(extGState instanceof _primitives.Dict)) {
+                throw new _util.FormatError("ExtGState should be a dictionary.");
+              }
+
+              const gState = extGState.get(name);
+
+              if (!(gState instanceof _primitives.Dict)) {
+                throw new _util.FormatError("GState should be a dictionary.");
+              }
+
+              const gStateFont = gState.get("Font");
+
+              if (!gStateFont) {
+                emptyGStateCache.set(name, gState.objId, true);
+                resolveGState();
+                return;
+              }
+
+              flushTextContentItem();
+              textState.fontName = null;
+              textState.fontSize = gStateFont[1];
+              handleSetFont(null, gStateFont[0]).then(resolveGState, rejectGState);
+            }).catch(function (reason) {
+              if (reason instanceof _util.AbortException) {
+                return;
+              }
+
+              if (self.options.ignoreErrors) {
+                (0, _util.warn)(`getTextContent - ignoring ExtGState: "${reason}".`);
+                return;
+              }
+
+              throw reason;
+            }));
+            return;
+
+          case _util.OPS.beginMarkedContent:
+            if (includeMarkedContent) {
+              textContent.items.push({
+                type: "beginMarkedContent",
+                tag: (0, _primitives.isName)(args[0]) ? args[0].name : null
+              });
+            }
+
+            break;
+
+          case _util.OPS.beginMarkedContentProps:
+            if (includeMarkedContent) {
+              flushTextContentItem();
+              let mcid = null;
+
+              if ((0, _primitives.isDict)(args[1])) {
+                mcid = args[1].get("MCID");
+              }
+
+              textContent.items.push({
+                type: "beginMarkedContentProps",
+                id: Number.isInteger(mcid) ? `${self.idFactory.getPageObjId()}_mcid${mcid}` : null,
+                tag: (0, _primitives.isName)(args[0]) ? args[0].name : null
+              });
+            }
+
+            break;
+
+          case _util.OPS.endMarkedContent:
+            if (includeMarkedContent) {
+              flushTextContentItem();
+              textContent.items.push({
+                type: "endMarkedContent"
+              });
+            }
+
+            break;
+        }
+
+        if (textContent.items.length >= sink.desiredSize) {
+          stop = true;
+          break;
+        }
+      }
+
+      if (stop) {
+        next(deferred);
+        return;
+      }
+
+      flushTextContentItem();
+      enqueueChunk();
+      resolve();
+    }).catch(reason => {
+      if (reason instanceof _util.AbortException) {
+        return;
+      }
+
+      if (this.options.ignoreErrors) {
+        (0, _util.warn)(`getTextContent - ignoring errors during "${task.name}" ` + `task: "${reason}".`);
+        flushTextContentItem();
+        enqueueChunk();
+        return;
+      }
+
+      throw reason;
+    });
+  }
+
+  extractDataStructures(dict, baseDict, properties) {
+    const xref = this.xref;
+    let cidToGidBytes;
+    const toUnicodePromise = this.readToUnicode(properties.toUnicode || dict.get("ToUnicode") || 
baseDict.get("ToUnicode"));
+
+    if (properties.composite) {
+      const cidSystemInfo = dict.get("CIDSystemInfo");
+
+      if ((0, _primitives.isDict)(cidSystemInfo)) {
+        properties.cidSystemInfo = {
+          registry: (0, _util.stringToPDFString)(cidSystemInfo.get("Registry")),
+          ordering: (0, _util.stringToPDFString)(cidSystemInfo.get("Ordering")),
+          supplement: cidSystemInfo.get("Supplement")
+        };
+      }
+
+      const cidToGidMap = dict.get("CIDToGIDMap");
+
+      if ((0, _primitives.isStream)(cidToGidMap)) {
+        cidToGidBytes = cidToGidMap.getBytes();
+      }
+    }
+
+    const differences = [];
+    let baseEncodingName = null;
+    let encoding;
+
+    if (dict.has("Encoding")) {
+      encoding = dict.get("Encoding");
+
+      if ((0, _primitives.isDict)(encoding)) {
+        baseEncodingName = encoding.get("BaseEncoding");
+        baseEncodingName = (0, _primitives.isName)(baseEncodingName) ? baseEncodingName.name : null;
+
+        if (encoding.has("Differences")) {
+          const diffEncoding = encoding.get("Differences");
+          let index = 0;
+
+          for (let j = 0, jj = diffEncoding.length; j < jj; j++) {
+            const data = xref.fetchIfRef(diffEncoding[j]);
+
+            if ((0, _util.isNum)(data)) {
+              index = data;
+            } else if ((0, _primitives.isName)(data)) {
+              differences[index++] = data.name;
+            } else {
+              throw new _util.FormatError(`Invalid entry in 'Differences' array: ${data}`);
+            }
+          }
+        }
+      } else if ((0, _primitives.isName)(encoding)) {
+        baseEncodingName = encoding.name;
+      } else {
+        throw new _util.FormatError("Encoding is not a Name nor a Dict");
+      }
+
+      if (baseEncodingName !== "MacRomanEncoding" && baseEncodingName !== "MacExpertEncoding" && 
baseEncodingName !== "WinAnsiEncoding") {
+        baseEncodingName = null;
+      }
+    }
+
+    if (baseEncodingName) {
+      properties.defaultEncoding = (0, _encodings.getEncoding)(baseEncodingName);
+    } else {
+      const isSymbolicFont = !!(properties.flags & _fonts_utils.FontFlags.Symbolic);
+      const isNonsymbolicFont = !!(properties.flags & _fonts_utils.FontFlags.Nonsymbolic);
+      encoding = _encodings.StandardEncoding;
+
+      if (properties.type === "TrueType" && !isNonsymbolicFont) {
+        encoding = _encodings.WinAnsiEncoding;
+      }
+
+      if (isSymbolicFont) {
+        encoding = _encodings.MacRomanEncoding;
+
+        if (!properties.file || properties.isInternalFont) {
+          if (/Symbol/i.test(properties.name)) {
+            encoding = _encodings.SymbolSetEncoding;
+          } else if (/Dingbats|Wingdings/i.test(properties.name)) {
+            encoding = _encodings.ZapfDingbatsEncoding;
+          }
+        }
+      }
+
+      properties.defaultEncoding = encoding;
+    }
+
+    properties.differences = differences;
+    properties.baseEncodingName = baseEncodingName;
+    properties.hasEncoding = !!baseEncodingName || differences.length > 0;
+    properties.dict = dict;
+    return toUnicodePromise.then(readToUnicode => {
+      properties.toUnicode = readToUnicode;
+      return this.buildToUnicode(properties);
+    }).then(builtToUnicode => {
+      properties.toUnicode = builtToUnicode;
+
+      if (cidToGidBytes) {
+        properties.cidToGidMap = this.readCidToGidMap(cidToGidBytes, builtToUnicode);
+      }
+
+      return properties;
+    });
+  }
+
+  _simpleFontToUnicode(properties, forceGlyphs = false) {
+    (0, _util.assert)(!properties.composite, "Must be a simple font.");
+    const toUnicode = [];
+    const encoding = properties.defaultEncoding.slice();
+    const baseEncodingName = properties.baseEncodingName;
+    const differences = properties.differences;
+
+    for (const charcode in differences) {
+      const glyphName = differences[charcode];
+
+      if (glyphName === ".notdef") {
+        continue;
+      }
+
+      encoding[charcode] = glyphName;
+    }
+
+    const glyphsUnicodeMap = (0, _glyphlist.getGlyphsUnicode)();
+
+    for (const charcode in encoding) {
+      let glyphName = encoding[charcode];
+
+      if (glyphName === "") {
+        continue;
+      } else if (glyphsUnicodeMap[glyphName] === undefined) {
+        let code = 0;
+
+        switch (glyphName[0]) {
+          case "G":
+            if (glyphName.length === 3) {
+              code = parseInt(glyphName.substring(1), 16);
+            }
+
+            break;
+
+          case "g":
+            if (glyphName.length === 5) {
+              code = parseInt(glyphName.substring(1), 16);
+            }
+
+            break;
+
+          case "C":
+          case "c":
+            if (glyphName.length >= 3 && glyphName.length <= 4) {
+              const codeStr = glyphName.substring(1);
+
+              if (forceGlyphs) {
+                code = parseInt(codeStr, 16);
+                break;
+              }
+
+              code = +codeStr;
+
+              if (Number.isNaN(code) && Number.isInteger(parseInt(codeStr, 16))) {
+                return this._simpleFontToUnicode(properties, true);
+              }
+            }
+
+            break;
+
+          default:
+            const unicode = (0, _unicode.getUnicodeForGlyph)(glyphName, glyphsUnicodeMap);
+
+            if (unicode !== -1) {
+              code = unicode;
+            }
+
+        }
+
+        if (code > 0 && code <= 0x10ffff && Number.isInteger(code)) {
+          if (baseEncodingName && code === +charcode) {
+            const baseEncoding = (0, _encodings.getEncoding)(baseEncodingName);
+
+            if (baseEncoding && (glyphName = baseEncoding[charcode])) {
+              toUnicode[charcode] = String.fromCharCode(glyphsUnicodeMap[glyphName]);
+              continue;
+            }
+          }
+
+          toUnicode[charcode] = String.fromCodePoint(code);
+        }
+
+        continue;
+      }
+
+      toUnicode[charcode] = String.fromCharCode(glyphsUnicodeMap[glyphName]);
+    }
+
+    return toUnicode;
+  }
+
+  async buildToUnicode(properties) {
+    properties.hasIncludedToUnicodeMap = !!properties.toUnicode && properties.toUnicode.length > 0;
+
+    if (properties.hasIncludedToUnicodeMap) {
+      if (!properties.composite && properties.hasEncoding) {
+        properties.fallbackToUnicode = this._simpleFontToUnicode(properties);
+      }
+
+      return properties.toUnicode;
+    }
+
+    if (!properties.composite) {
+      return new _to_unicode_map.ToUnicodeMap(this._simpleFontToUnicode(properties));
+    }
+
+    if (properties.composite && (properties.cMap.builtInCMap && !(properties.cMap instanceof 
_cmap.IdentityCMap) || properties.cidSystemInfo.registry === "Adobe" && (properties.cidSystemInfo.ordering 
=== "GB1" || properties.cidSystemInfo.ordering === "CNS1" || properties.cidSystemInfo.ordering === "Japan1" 
|| properties.cidSystemInfo.ordering === "Korea1"))) {
+      const {
+        registry,
+        ordering
+      } = properties.cidSystemInfo;
+
+      const ucs2CMapName = _primitives.Name.get(`${registry}-${ordering}-UCS2`);
+
+      const ucs2CMap = await _cmap.CMapFactory.create({
+        encoding: ucs2CMapName,
+        fetchBuiltInCMap: this._fetchBuiltInCMapBound,
+        useCMap: null
+      });
+      const toUnicode = [];
+      properties.cMap.forEach(function (charcode, cid) {
+        if (cid > 0xffff) {
+          throw new _util.FormatError("Max size of CID is 65,535");
+        }
+
+        const ucs2 = ucs2CMap.lookup(cid);
+
+        if (ucs2) {
+          toUnicode[charcode] = String.fromCharCode((ucs2.charCodeAt(0) << 8) + ucs2.charCodeAt(1));
+        }
+      });
+      return new _to_unicode_map.ToUnicodeMap(toUnicode);
+    }
+
+    return new _to_unicode_map.IdentityToUnicodeMap(properties.firstChar, properties.lastChar);
+  }
+
+  readToUnicode(cmapObj) {
+    if (!cmapObj) {
+      return Promise.resolve(null);
+    }
+
+    if ((0, _primitives.isName)(cmapObj)) {
+      return _cmap.CMapFactory.create({
+        encoding: cmapObj,
+        fetchBuiltInCMap: this._fetchBuiltInCMapBound,
+        useCMap: null
+      }).then(function (cmap) {
+        if (cmap instanceof _cmap.IdentityCMap) {
+          return new _to_unicode_map.IdentityToUnicodeMap(0, 0xffff);
+        }
+
+        return new _to_unicode_map.ToUnicodeMap(cmap.getMap());
+      });
+    } else if ((0, _primitives.isStream)(cmapObj)) {
+      return _cmap.CMapFactory.create({
+        encoding: cmapObj,
+        fetchBuiltInCMap: this._fetchBuiltInCMapBound,
+        useCMap: null
+      }).then(function (cmap) {
+        if (cmap instanceof _cmap.IdentityCMap) {
+          return new _to_unicode_map.IdentityToUnicodeMap(0, 0xffff);
+        }
+
+        const map = new Array(cmap.length);
+        cmap.forEach(function (charCode, token) {
+          if (typeof token === "number") {
+            map[charCode] = String.fromCodePoint(token);
+            return;
+          }
+
+          const str = [];
+
+          for (let k = 0; k < token.length; k += 2) {
+            const w1 = token.charCodeAt(k) << 8 | token.charCodeAt(k + 1);
+
+            if ((w1 & 0xf800) !== 0xd800) {
+              str.push(w1);
+              continue;
+            }
+
+            k += 2;
+            const w2 = token.charCodeAt(k) << 8 | token.charCodeAt(k + 1);
+            str.push(((w1 & 0x3ff) << 10) + (w2 & 0x3ff) + 0x10000);
+          }
+
+          map[charCode] = String.fromCodePoint.apply(String, str);
+        });
+        return new _to_unicode_map.ToUnicodeMap(map);
+      }, reason => {
+        if (reason instanceof _util.AbortException) {
+          return null;
+        }
+
+        if (this.options.ignoreErrors) {
+          this.handler.send("UnsupportedFeature", {
+            featureId: _util.UNSUPPORTED_FEATURES.errorFontToUnicode
+          });
+          (0, _util.warn)(`readToUnicode - ignoring ToUnicode data: "${reason}".`);
+          return null;
+        }
+
+        throw reason;
+      });
+    }
+
+    return Promise.resolve(null);
+  }
+
+  readCidToGidMap(glyphsData, toUnicode) {
+    const result = [];
+
+    for (let j = 0, jj = glyphsData.length; j < jj; j++) {
+      const glyphID = glyphsData[j++] << 8 | glyphsData[j];
+      const code = j >> 1;
+
+      if (glyphID === 0 && !toUnicode.has(code)) {
+        continue;
+      }
+
+      result[code] = glyphID;
+    }
+
+    return result;
+  }
+
+  extractWidths(dict, descriptor, properties) {
+    const xref = this.xref;
+    let glyphsWidths = [];
+    let defaultWidth = 0;
+    const glyphsVMetrics = [];
+    let defaultVMetrics;
+    let i, ii, j, jj, start, code, widths;
+
+    if (properties.composite) {
+      defaultWidth = dict.has("DW") ? dict.get("DW") : 1000;
+      widths = dict.get("W");
+
+      if (widths) {
+        for (i = 0, ii = widths.length; i < ii; i++) {
+          start = xref.fetchIfRef(widths[i++]);
+          code = xref.fetchIfRef(widths[i]);
+
+          if (Array.isArray(code)) {
+            for (j = 0, jj = code.length; j < jj; j++) {
+              glyphsWidths[start++] = xref.fetchIfRef(code[j]);
+            }
+          } else {
+            const width = xref.fetchIfRef(widths[++i]);
+
+            for (j = start; j <= code; j++) {
+              glyphsWidths[j] = width;
+            }
+          }
+        }
+      }
+
+      if (properties.vertical) {
+        let vmetrics = dict.getArray("DW2") || [880, -1000];
+        defaultVMetrics = [vmetrics[1], defaultWidth * 0.5, vmetrics[0]];
+        vmetrics = dict.get("W2");
+
+        if (vmetrics) {
+          for (i = 0, ii = vmetrics.length; i < ii; i++) {
+            start = xref.fetchIfRef(vmetrics[i++]);
+            code = xref.fetchIfRef(vmetrics[i]);
+
+            if (Array.isArray(code)) {
+              for (j = 0, jj = code.length; j < jj; j++) {
+                glyphsVMetrics[start++] = [xref.fetchIfRef(code[j++]), xref.fetchIfRef(code[j++]), 
xref.fetchIfRef(code[j])];
+              }
+            } else {
+              const vmetric = [xref.fetchIfRef(vmetrics[++i]), xref.fetchIfRef(vmetrics[++i]), 
xref.fetchIfRef(vmetrics[++i])];
+
+              for (j = start; j <= code; j++) {
+                glyphsVMetrics[j] = vmetric;
+              }
+            }
+          }
+        }
+      }
+    } else {
+      const firstChar = properties.firstChar;
+      widths = dict.get("Widths");
+
+      if (widths) {
+        j = firstChar;
+
+        for (i = 0, ii = widths.length; i < ii; i++) {
+          glyphsWidths[j++] = xref.fetchIfRef(widths[i]);
+        }
+
+        defaultWidth = parseFloat(descriptor.get("MissingWidth")) || 0;
+      } else {
+        const baseFontName = dict.get("BaseFont");
+
+        if ((0, _primitives.isName)(baseFontName)) {
+          const metrics = this.getBaseFontMetrics(baseFontName.name);
+          glyphsWidths = this.buildCharCodeToWidth(metrics.widths, properties);
+          defaultWidth = metrics.defaultWidth;
+        }
+      }
+    }
+
+    let isMonospace = true;
+    let firstWidth = defaultWidth;
+
+    for (const glyph in glyphsWidths) {
+      const glyphWidth = glyphsWidths[glyph];
+
+      if (!glyphWidth) {
+        continue;
+      }
+
+      if (!firstWidth) {
+        firstWidth = glyphWidth;
+        continue;
+      }
+
+      if (firstWidth !== glyphWidth) {
+        isMonospace = false;
+        break;
+      }
+    }
+
+    if (isMonospace) {
+      properties.flags |= _fonts_utils.FontFlags.FixedPitch;
+    }
+
+    properties.defaultWidth = defaultWidth;
+    properties.widths = glyphsWidths;
+    properties.defaultVMetrics = defaultVMetrics;
+    properties.vmetrics = glyphsVMetrics;
+  }
+
+  isSerifFont(baseFontName) {
+    const fontNameWoStyle = baseFontName.split("-")[0];
+    return fontNameWoStyle in (0, _standard_fonts.getSerifFonts)() || fontNameWoStyle.search(/serif/gi) !== 
-1;
+  }
+
+  getBaseFontMetrics(name) {
+    let defaultWidth = 0;
+    let widths = Object.create(null);
+    let monospace = false;
+    const stdFontMap = (0, _standard_fonts.getStdFontMap)();
+    let lookupName = stdFontMap[name] || name;
+    const Metrics = (0, _metrics.getMetrics)();
+
+    if (!(lookupName in Metrics)) {
+      if (this.isSerifFont(name)) {
+        lookupName = "Times-Roman";
+      } else {
+        lookupName = "Helvetica";
+      }
+    }
+
+    const glyphWidths = Metrics[lookupName];
+
+    if ((0, _util.isNum)(glyphWidths)) {
+      defaultWidth = glyphWidths;
+      monospace = true;
+    } else {
+      widths = glyphWidths();
+    }
+
+    return {
+      defaultWidth,
+      monospace,
+      widths
+    };
+  }
+
+  buildCharCodeToWidth(widthsByGlyphName, properties) {
+    const widths = Object.create(null);
+    const differences = properties.differences;
+    const encoding = properties.defaultEncoding;
+
+    for (let charCode = 0; charCode < 256; charCode++) {
+      if (charCode in differences && widthsByGlyphName[differences[charCode]]) {
+        widths[charCode] = widthsByGlyphName[differences[charCode]];
+        continue;
+      }
+
+      if (charCode in encoding && widthsByGlyphName[encoding[charCode]]) {
+        widths[charCode] = widthsByGlyphName[encoding[charCode]];
+        continue;
+      }
+    }
+
+    return widths;
+  }
+
+  preEvaluateFont(dict) {
+    const baseDict = dict;
+    let type = dict.get("Subtype");
+
+    if (!(0, _primitives.isName)(type)) {
+      throw new _util.FormatError("invalid font Subtype");
+    }
+
+    let composite = false;
+    let hash, toUnicode;
+
+    if (type.name === "Type0") {
+      const df = dict.get("DescendantFonts");
+
+      if (!df) {
+        throw new _util.FormatError("Descendant fonts are not specified");
+      }
+
+      dict = Array.isArray(df) ? this.xref.fetchIfRef(df[0]) : df;
+
+      if (!(dict instanceof _primitives.Dict)) {
+        throw new _util.FormatError("Descendant font is not a dictionary.");
+      }
+
+      type = dict.get("Subtype");
+
+      if (!(0, _primitives.isName)(type)) {
+        throw new _util.FormatError("invalid font Subtype");
+      }
+
+      composite = true;
+    }
+
+    const firstChar = dict.get("FirstChar") || 0,
+          lastChar = dict.get("LastChar") || (composite ? 0xffff : 0xff);
+    const descriptor = dict.get("FontDescriptor");
+
+    if (descriptor) {
+      hash = new _murmurhash.MurmurHash3_64();
+      const encoding = baseDict.getRaw("Encoding");
+
+      if ((0, _primitives.isName)(encoding)) {
+        hash.update(encoding.name);
+      } else if ((0, _primitives.isRef)(encoding)) {
+        hash.update(encoding.toString());
+      } else if ((0, _primitives.isDict)(encoding)) {
+        for (const entry of encoding.getRawValues()) {
+          if ((0, _primitives.isName)(entry)) {
+            hash.update(entry.name);
+          } else if ((0, _primitives.isRef)(entry)) {
+            hash.update(entry.toString());
+          } else if (Array.isArray(entry)) {
+            const diffLength = entry.length,
+                  diffBuf = new Array(diffLength);
+
+            for (let j = 0; j < diffLength; j++) {
+              const diffEntry = entry[j];
+
+              if ((0, _primitives.isName)(diffEntry)) {
+                diffBuf[j] = diffEntry.name;
+              } else if ((0, _util.isNum)(diffEntry) || (0, _primitives.isRef)(diffEntry)) {
+                diffBuf[j] = diffEntry.toString();
+              }
+            }
+
+            hash.update(diffBuf.join());
+          }
+        }
+      }
+
+      hash.update(`${firstChar}-${lastChar}`);
+      toUnicode = dict.get("ToUnicode") || baseDict.get("ToUnicode");
+
+      if ((0, _primitives.isStream)(toUnicode)) {
+        const stream = toUnicode.str || toUnicode;
+        const uint8array = stream.buffer ? new Uint8Array(stream.buffer.buffer, 0, stream.bufferLength) : 
new Uint8Array(stream.bytes.buffer, stream.start, stream.end - stream.start);
+        hash.update(uint8array);
+      } else if ((0, _primitives.isName)(toUnicode)) {
+        hash.update(toUnicode.name);
+      }
+
+      const widths = dict.get("Widths") || baseDict.get("Widths");
+
+      if (Array.isArray(widths)) {
+        const widthsBuf = [];
+
+        for (const entry of widths) {
+          if ((0, _util.isNum)(entry) || (0, _primitives.isRef)(entry)) {
+            widthsBuf.push(entry.toString());
+          }
+        }
+
+        hash.update(widthsBuf.join());
+      }
+
+      if (composite) {
+        hash.update("compositeFont");
+        const compositeWidths = dict.get("W") || baseDict.get("W");
+
+        if (Array.isArray(compositeWidths)) {
+          const widthsBuf = [];
+
+          for (const entry of compositeWidths) {
+            if ((0, _util.isNum)(entry) || (0, _primitives.isRef)(entry)) {
+              widthsBuf.push(entry.toString());
+            } else if (Array.isArray(entry)) {
+              const subWidthsBuf = [];
+
+              for (const element of entry) {
+                if ((0, _util.isNum)(element) || (0, _primitives.isRef)(element)) {
+                  subWidthsBuf.push(element.toString());
+                }
+              }
+
+              widthsBuf.push(`[${subWidthsBuf.join()}]`);
+            }
+          }
+
+          hash.update(widthsBuf.join());
+        }
+      }
+    }
+
+    return {
+      descriptor,
+      dict,
+      baseDict,
+      composite,
+      type: type.name,
+      firstChar,
+      lastChar,
+      toUnicode,
+      hash: hash ? hash.hexdigest() : ""
+    };
+  }
+
+  async translateFont({
+    descriptor,
+    dict,
+    baseDict,
+    composite,
+    type,
+    firstChar,
+    lastChar,
+    toUnicode,
+    cssFontInfo
+  }) {
+    const isType3Font = type === "Type3";
+    let properties;
+
+    if (!descriptor) {
+      if (isType3Font) {
+        descriptor = new _primitives.Dict(null);
+        descriptor.set("FontName", _primitives.Name.get(type));
+        descriptor.set("FontBBox", dict.getArray("FontBBox") || [0, 0, 0, 0]);
+      } else {
+        let baseFontName = dict.get("BaseFont");
+
+        if (!(0, _primitives.isName)(baseFontName)) {
+          throw new _util.FormatError("Base font is not specified");
+        }
+
+        baseFontName = baseFontName.name.replace(/[,_]/g, "-");
+        const metrics = this.getBaseFontMetrics(baseFontName);
+        const fontNameWoStyle = baseFontName.split("-")[0];
+        const flags = (this.isSerifFont(fontNameWoStyle) ? _fonts_utils.FontFlags.Serif : 0) | 
(metrics.monospace ? _fonts_utils.FontFlags.FixedPitch : 0) | ((0, 
_standard_fonts.getSymbolsFonts)()[fontNameWoStyle] ? _fonts_utils.FontFlags.Symbolic : 
_fonts_utils.FontFlags.Nonsymbolic);
+        properties = {
+          type,
+          name: baseFontName,
+          loadedName: baseDict.loadedName,
+          widths: metrics.widths,
+          defaultWidth: metrics.defaultWidth,
+          isSimulatedFlags: true,
+          flags,
+          firstChar,
+          lastChar,
+          toUnicode,
+          xHeight: 0,
+          capHeight: 0,
+          italicAngle: 0,
+          isType3Font
+        };
+        const widths = dict.get("Widths");
+        const standardFontName = (0, _standard_fonts.getStandardFontName)(baseFontName);
+        let file = null;
+
+        if (standardFontName) {
+          properties.isStandardFont = true;
+          file = await this.fetchStandardFontData(standardFontName);
+          properties.isInternalFont = !!file;
+        }
+
+        return this.extractDataStructures(dict, dict, properties).then(newProperties => {
+          if (widths) {
+            const glyphWidths = [];
+            let j = firstChar;
+
+            for (let i = 0, ii = widths.length; i < ii; i++) {
+              glyphWidths[j++] = this.xref.fetchIfRef(widths[i]);
+            }
+
+            newProperties.widths = glyphWidths;
+          } else {
+            newProperties.widths = this.buildCharCodeToWidth(metrics.widths, newProperties);
+          }
+
+          return new _fonts.Font(baseFontName, file, newProperties);
+        });
+      }
+    }
+
+    let fontName = descriptor.get("FontName");
+    let baseFont = dict.get("BaseFont");
+
+    if ((0, _util.isString)(fontName)) {
+      fontName = _primitives.Name.get(fontName);
+    }
+
+    if ((0, _util.isString)(baseFont)) {
+      baseFont = _primitives.Name.get(baseFont);
+    }
+
+    if (!isType3Font) {
+      const fontNameStr = fontName && fontName.name;
+      const baseFontStr = baseFont && baseFont.name;
+
+      if (fontNameStr !== baseFontStr) {
+        (0, _util.info)(`The FontDescriptor's FontName is "${fontNameStr}" but ` + `should be the same as 
the Font's BaseFont "${baseFontStr}".`);
+
+        if (fontNameStr && baseFontStr && baseFontStr.startsWith(fontNameStr)) {
+          fontName = baseFont;
+        }
+      }
+    }
+
+    fontName = fontName || baseFont;
+
+    if (!(0, _primitives.isName)(fontName)) {
+      throw new _util.FormatError("invalid font name");
+    }
+
+    let fontFile, subtype, length1, length2, length3;
+
+    try {
+      fontFile = descriptor.get("FontFile", "FontFile2", "FontFile3");
+    } catch (ex) {
+      if (!this.options.ignoreErrors) {
+        throw ex;
+      }
+
+      (0, _util.warn)(`translateFont - fetching "${fontName.name}" font file: "${ex}".`);
+      fontFile = new _stream.NullStream();
+    }
+
+    let isStandardFont = false;
+    let isInternalFont = false;
+    let glyphScaleFactors = null;
+
+    if (fontFile) {
+      if (fontFile.dict) {
+        const subtypeEntry = fontFile.dict.get("Subtype");
+
+        if (subtypeEntry instanceof _primitives.Name) {
+          subtype = subtypeEntry.name;
+        }
+
+        length1 = fontFile.dict.get("Length1");
+        length2 = fontFile.dict.get("Length2");
+        length3 = fontFile.dict.get("Length3");
+      }
+    } else if (cssFontInfo) {
+      const standardFontName = (0, _xfa_fonts.getXfaFontName)(fontName.name);
+
+      if (standardFontName) {
+        cssFontInfo.fontFamily = `${cssFontInfo.fontFamily}-PdfJS-XFA`;
+        cssFontInfo.metrics = standardFontName.metrics || null;
+        glyphScaleFactors = standardFontName.factors || null;
+        fontFile = await this.fetchStandardFontData(standardFontName.name);
+        isInternalFont = !!fontFile;
+        baseDict = dict = (0, _xfa_fonts.getXfaFontDict)(fontName.name);
+        composite = true;
+      }
+    } else if (!isType3Font) {
+      const standardFontName = (0, _standard_fonts.getStandardFontName)(fontName.name);
+
+      if (standardFontName) {
+        isStandardFont = true;
+        fontFile = await this.fetchStandardFontData(standardFontName);
+        isInternalFont = !!fontFile;
+      }
+    }
+
+    properties = {
+      type,
+      name: fontName.name,
+      subtype,
+      file: fontFile,
+      length1,
+      length2,
+      length3,
+      isStandardFont,
+      isInternalFont,
+      loadedName: baseDict.loadedName,
+      composite,
+      fixedPitch: false,
+      fontMatrix: dict.getArray("FontMatrix") || _util.FONT_IDENTITY_MATRIX,
+      firstChar,
+      lastChar,
+      toUnicode,
+      bbox: descriptor.getArray("FontBBox") || dict.getArray("FontBBox"),
+      ascent: descriptor.get("Ascent"),
+      descent: descriptor.get("Descent"),
+      xHeight: descriptor.get("XHeight") || 0,
+      capHeight: descriptor.get("CapHeight") || 0,
+      flags: descriptor.get("Flags"),
+      italicAngle: descriptor.get("ItalicAngle") || 0,
+      isType3Font,
+      cssFontInfo,
+      scaleFactors: glyphScaleFactors
+    };
+
+    if (composite) {
+      const cidEncoding = baseDict.get("Encoding");
+
+      if ((0, _primitives.isName)(cidEncoding)) {
+        properties.cidEncoding = cidEncoding.name;
+      }
+
+      const cMap = await _cmap.CMapFactory.create({
+        encoding: cidEncoding,
+        fetchBuiltInCMap: this._fetchBuiltInCMapBound,
+        useCMap: null
+      });
+      properties.cMap = cMap;
+      properties.vertical = properties.cMap.vertical;
+    }
+
+    return this.extractDataStructures(dict, baseDict, properties).then(newProperties => {
+      this.extractWidths(dict, descriptor, newProperties);
+      return new _fonts.Font(fontName.name, fontFile, newProperties);
+    });
+  }
+
+  static buildFontPaths(font, glyphs, handler, evaluatorOptions) {
+    function buildPath(fontChar) {
+      const glyphName = `${font.loadedName}_path_${fontChar}`;
+
+      try {
+        if (font.renderer.hasBuiltPath(fontChar)) {
+          return;
+        }
+
+        handler.send("commonobj", [glyphName, "FontPath", font.renderer.getPathJs(fontChar)]);
+      } catch (reason) {
+        if (evaluatorOptions.ignoreErrors) {
+          handler.send("UnsupportedFeature", {
+            featureId: _util.UNSUPPORTED_FEATURES.errorFontBuildPath
+          });
+          (0, _util.warn)(`buildFontPaths - ignoring ${glyphName} glyph: "${reason}".`);
+          return;
+        }
+
+        throw reason;
+      }
+    }
+
+    for (const glyph of glyphs) {
+      buildPath(glyph.fontChar);
+      const accent = glyph.accent;
+
+      if (accent && accent.fontChar) {
+        buildPath(accent.fontChar);
+      }
+    }
+  }
+
+  static get fallbackFontDict() {
+    const dict = new _primitives.Dict();
+    dict.set("BaseFont", _primitives.Name.get("PDFJS-FallbackFont"));
+    dict.set("Type", _primitives.Name.get("FallbackType"));
+    dict.set("Subtype", _primitives.Name.get("FallbackType"));
+    dict.set("Encoding", _primitives.Name.get("WinAnsiEncoding"));
+    return (0, _util.shadow)(this, "fallbackFontDict", dict);
+  }
+
+}
+
+exports.PartialEvaluator = PartialEvaluator;
+
+class TranslatedFont {
+  constructor({
+    loadedName,
+    font,
+    dict,
+    evaluatorOptions
+  }) {
+    this.loadedName = loadedName;
+    this.font = font;
+    this.dict = dict;
+    this._evaluatorOptions = evaluatorOptions || DefaultPartialEvaluatorOptions;
+    this.type3Loaded = null;
+    this.type3Dependencies = font.isType3Font ? new Set() : null;
+    this.sent = false;
+  }
+
+  send(handler) {
+    if (this.sent) {
+      return;
+    }
+
+    this.sent = true;
+    handler.send("commonobj", [this.loadedName, "Font", 
this.font.exportData(this._evaluatorOptions.fontExtraProperties)]);
+  }
+
+  fallback(handler) {
+    if (!this.font.data) {
+      return;
+    }
+
+    this.font.disableFontFace = true;
+    PartialEvaluator.buildFontPaths(this.font, this.font.glyphCacheValues, handler, this._evaluatorOptions);
+  }
+
+  loadType3Data(evaluator, resources, task) {
+    if (this.type3Loaded) {
+      return this.type3Loaded;
+    }
+
+    if (!this.font.isType3Font) {
+      throw new Error("Must be a Type3 font.");
+    }
+
+    const type3Evaluator = evaluator.clone({
+      ignoreErrors: false
+    });
+    type3Evaluator.parsingType3Font = true;
+    const translatedFont = this.font,
+          type3Dependencies = this.type3Dependencies;
+    let loadCharProcsPromise = Promise.resolve();
+    const charProcs = this.dict.get("CharProcs");
+    const fontResources = this.dict.get("Resources") || resources;
+    const charProcOperatorList = Object.create(null);
+    const isEmptyBBox = !translatedFont.bbox || (0, _util.isArrayEqual)(translatedFont.bbox, [0, 0, 0, 0]);
+
+    for (const key of charProcs.getKeys()) {
+      loadCharProcsPromise = loadCharProcsPromise.then(() => {
+        const glyphStream = charProcs.get(key);
+        const operatorList = new _operator_list.OperatorList();
+        return type3Evaluator.getOperatorList({
+          stream: glyphStream,
+          task,
+          resources: fontResources,
+          operatorList
+        }).then(() => {
+          if (operatorList.fnArray[0] === _util.OPS.setCharWidthAndBounds) {
+            this._removeType3ColorOperators(operatorList, isEmptyBBox);
+          }
+
+          charProcOperatorList[key] = operatorList.getIR();
+
+          for (const dependency of operatorList.dependencies) {
+            type3Dependencies.add(dependency);
+          }
+        }).catch(function (reason) {
+          (0, _util.warn)(`Type3 font resource "${key}" is not available.`);
+          const dummyOperatorList = new _operator_list.OperatorList();
+          charProcOperatorList[key] = dummyOperatorList.getIR();
+        });
+      });
+    }
+
+    this.type3Loaded = loadCharProcsPromise.then(() => {
+      translatedFont.charProcOperatorList = charProcOperatorList;
+
+      if (this._bbox) {
+        translatedFont.isCharBBox = true;
+        translatedFont.bbox = this._bbox;
+      }
+    });
+    return this.type3Loaded;
+  }
+
+  _removeType3ColorOperators(operatorList, isEmptyBBox = false) {
+    if (isEmptyBBox) {
+      if (!this._bbox) {
+        this._bbox = [Infinity, Infinity, -Infinity, -Infinity];
+      }
+
+      const charBBox = _util.Util.normalizeRect(operatorList.argsArray[0].slice(2));
+
+      this._bbox[0] = Math.min(this._bbox[0], charBBox[0]);
+      this._bbox[1] = Math.min(this._bbox[1], charBBox[1]);
+      this._bbox[2] = Math.max(this._bbox[2], charBBox[2]);
+      this._bbox[3] = Math.max(this._bbox[3], charBBox[3]);
+    }
+
+    let i = 1,
+        ii = operatorList.length;
+
+    while (i < ii) {
+      switch (operatorList.fnArray[i]) {
+        case _util.OPS.setStrokeColorSpace:
+        case _util.OPS.setFillColorSpace:
+        case _util.OPS.setStrokeColor:
+        case _util.OPS.setStrokeColorN:
+        case _util.OPS.setFillColor:
+        case _util.OPS.setFillColorN:
+        case _util.OPS.setStrokeGray:
+        case _util.OPS.setFillGray:
+        case _util.OPS.setStrokeRGBColor:
+        case _util.OPS.setFillRGBColor:
+        case _util.OPS.setStrokeCMYKColor:
+        case _util.OPS.setFillCMYKColor:
+        case _util.OPS.shadingFill:
+        case _util.OPS.setRenderingIntent:
+          operatorList.fnArray.splice(i, 1);
+          operatorList.argsArray.splice(i, 1);
+          ii--;
+          continue;
+
+        case _util.OPS.setGState:
+          const [gStateObj] = operatorList.argsArray[i];
+          let j = 0,
+              jj = gStateObj.length;
+
+          while (j < jj) {
+            const [gStateKey] = gStateObj[j];
+
+            switch (gStateKey) {
+              case "TR":
+              case "TR2":
+              case "HT":
+              case "BG":
+              case "BG2":
+              case "UCR":
+              case "UCR2":
+                gStateObj.splice(j, 1);
+                jj--;
+                continue;
+            }
+
+            j++;
+          }
+
+          break;
+      }
+
+      i++;
+    }
+  }
+
+}
+
+class StateManager {
+  constructor(initialState = new EvalState()) {
+    this.state = initialState;
+    this.stateStack = [];
+  }
+
+  save() {
+    const old = this.state;
+    this.stateStack.push(this.state);
+    this.state = old.clone();
+  }
+
+  restore() {
+    const prev = this.stateStack.pop();
+
+    if (prev) {
+      this.state = prev;
+    }
+  }
+
+  transform(args) {
+    this.state.ctm = _util.Util.transform(this.state.ctm, args);
+  }
+
+}
+
+class TextState {
+  constructor() {
+    this.ctm = new Float32Array(_util.IDENTITY_MATRIX);
+    this.fontName = null;
+    this.fontSize = 0;
+    this.font = null;
+    this.fontMatrix = _util.FONT_IDENTITY_MATRIX;
+    this.textMatrix = _util.IDENTITY_MATRIX.slice();
+    this.textLineMatrix = _util.IDENTITY_MATRIX.slice();
+    this.charSpacing = 0;
+    this.wordSpacing = 0;
+    this.leading = 0;
+    this.textHScale = 1;
+    this.textRise = 0;
+  }
+
+  setTextMatrix(a, b, c, d, e, f) {
+    const m = this.textMatrix;
+    m[0] = a;
+    m[1] = b;
+    m[2] = c;
+    m[3] = d;
+    m[4] = e;
+    m[5] = f;
+  }
+
+  setTextLineMatrix(a, b, c, d, e, f) {
+    const m = this.textLineMatrix;
+    m[0] = a;
+    m[1] = b;
+    m[2] = c;
+    m[3] = d;
+    m[4] = e;
+    m[5] = f;
+  }
+
+  translateTextMatrix(x, y) {
+    const m = this.textMatrix;
+    m[4] = m[0] * x + m[2] * y + m[4];
+    m[5] = m[1] * x + m[3] * y + m[5];
+  }
+
+  translateTextLineMatrix(x, y) {
+    const m = this.textLineMatrix;
+    m[4] = m[0] * x + m[2] * y + m[4];
+    m[5] = m[1] * x + m[3] * y + m[5];
+  }
+
+  carriageReturn() {
+    this.translateTextLineMatrix(0, -this.leading);
+    this.textMatrix = this.textLineMatrix.slice();
+  }
+
+  clone() {
+    const clone = Object.create(this);
+    clone.textMatrix = this.textMatrix.slice();
+    clone.textLineMatrix = this.textLineMatrix.slice();
+    clone.fontMatrix = this.fontMatrix.slice();
+    return clone;
+  }
+
+}
+
+class EvalState {
+  constructor() {
+    this.ctm = new Float32Array(_util.IDENTITY_MATRIX);
+    this.font = null;
+    this.textRenderingMode = _util.TextRenderingMode.FILL;
+    this.fillColorSpace = _colorspace.ColorSpace.singletons.gray;
+    this.strokeColorSpace = _colorspace.ColorSpace.singletons.gray;
+  }
+
+  clone() {
+    return Object.create(this);
+  }
+
+}
+
+class EvaluatorPreprocessor {
+  static get opMap() {
+    const getOPMap = (0, _core_utils.getLookupTableFactory)(function (t) {
+      t.w = {
+        id: _util.OPS.setLineWidth,
+        numArgs: 1,
+        variableArgs: false
+      };
+      t.J = {
+        id: _util.OPS.setLineCap,
+        numArgs: 1,
+        variableArgs: false
+      };
+      t.j = {
+        id: _util.OPS.setLineJoin,
+        numArgs: 1,
+        variableArgs: false
+      };
+      t.M = {
+        id: _util.OPS.setMiterLimit,
+        numArgs: 1,
+        variableArgs: false
+      };
+      t.d = {
+        id: _util.OPS.setDash,
+        numArgs: 2,
+        variableArgs: false
+      };
+      t.ri = {
+        id: _util.OPS.setRenderingIntent,
+        numArgs: 1,
+        variableArgs: false
+      };
+      t.i = {
+        id: _util.OPS.setFlatness,
+        numArgs: 1,
+        variableArgs: false
+      };
+      t.gs = {
+        id: _util.OPS.setGState,
+        numArgs: 1,
+        variableArgs: false
+      };
+      t.q = {
+        id: _util.OPS.save,
+        numArgs: 0,
+        variableArgs: false
+      };
+      t.Q = {
+        id: _util.OPS.restore,
+        numArgs: 0,
+        variableArgs: false
+      };
+      t.cm = {
+        id: _util.OPS.transform,
+        numArgs: 6,
+        variableArgs: false
+      };
+      t.m = {
+        id: _util.OPS.moveTo,
+        numArgs: 2,
+        variableArgs: false
+      };
+      t.l = {
+        id: _util.OPS.lineTo,
+        numArgs: 2,
+        variableArgs: false
+      };
+      t.c = {
+        id: _util.OPS.curveTo,
+        numArgs: 6,
+        variableArgs: false
+      };
+      t.v = {
+        id: _util.OPS.curveTo2,
+        numArgs: 4,
+        variableArgs: false
+      };
+      t.y = {
+        id: _util.OPS.curveTo3,
+        numArgs: 4,
+        variableArgs: false
+      };
+      t.h = {
+        id: _util.OPS.closePath,
+        numArgs: 0,
+        variableArgs: false
+      };
+      t.re = {
+        id: _util.OPS.rectangle,
+        numArgs: 4,
+        variableArgs: false
+      };
+      t.S = {
+        id: _util.OPS.stroke,
+        numArgs: 0,
+        variableArgs: false
+      };
+      t.s = {
+        id: _util.OPS.closeStroke,
+        numArgs: 0,
+        variableArgs: false
+      };
+      t.f = {
+        id: _util.OPS.fill,
+        numArgs: 0,
+        variableArgs: false
+      };
+      t.F = {
+        id: _util.OPS.fill,
+        numArgs: 0,
+        variableArgs: false
+      };
+      t["f*"] = {
+        id: _util.OPS.eoFill,
+        numArgs: 0,
+        variableArgs: false
+      };
+      t.B = {
+        id: _util.OPS.fillStroke,
+        numArgs: 0,
+        variableArgs: false
+      };
+      t["B*"] = {
+        id: _util.OPS.eoFillStroke,
+        numArgs: 0,
+        variableArgs: false
+      };
+      t.b = {
+        id: _util.OPS.closeFillStroke,
+        numArgs: 0,
+        variableArgs: false
+      };
+      t["b*"] = {
+        id: _util.OPS.closeEOFillStroke,
+        numArgs: 0,
+        variableArgs: false
+      };
+      t.n = {
+        id: _util.OPS.endPath,
+        numArgs: 0,
+        variableArgs: false
+      };
+      t.W = {
+        id: _util.OPS.clip,
+        numArgs: 0,
+        variableArgs: false
+      };
+      t["W*"] = {
+        id: _util.OPS.eoClip,
+        numArgs: 0,
+        variableArgs: false
+      };
+      t.BT = {
+        id: _util.OPS.beginText,
+        numArgs: 0,
+        variableArgs: false
+      };
+      t.ET = {
+        id: _util.OPS.endText,
+        numArgs: 0,
+        variableArgs: false
+      };
+      t.Tc = {
+        id: _util.OPS.setCharSpacing,
+        numArgs: 1,
+        variableArgs: false
+      };
+      t.Tw = {
+        id: _util.OPS.setWordSpacing,
+        numArgs: 1,
+        variableArgs: false
+      };
+      t.Tz = {
+        id: _util.OPS.setHScale,
+        numArgs: 1,
+        variableArgs: false
+      };
+      t.TL = {
+        id: _util.OPS.setLeading,
+        numArgs: 1,
+        variableArgs: false
+      };
+      t.Tf = {
+        id: _util.OPS.setFont,
+        numArgs: 2,
+        variableArgs: false
+      };
+      t.Tr = {
+        id: _util.OPS.setTextRenderingMode,
+        numArgs: 1,
+        variableArgs: false
+      };
+      t.Ts = {
+        id: _util.OPS.setTextRise,
+        numArgs: 1,
+        variableArgs: false
+      };
+      t.Td = {
+        id: _util.OPS.moveText,
+        numArgs: 2,
+        variableArgs: false
+      };
+      t.TD = {
+        id: _util.OPS.setLeadingMoveText,
+        numArgs: 2,
+        variableArgs: false
+      };
+      t.Tm = {
+        id: _util.OPS.setTextMatrix,
+        numArgs: 6,
+        variableArgs: false
+      };
+      t["T*"] = {
+        id: _util.OPS.nextLine,
+        numArgs: 0,
+        variableArgs: false
+      };
+      t.Tj = {
+        id: _util.OPS.showText,
+        numArgs: 1,
+        variableArgs: false
+      };
+      t.TJ = {
+        id: _util.OPS.showSpacedText,
+        numArgs: 1,
+        variableArgs: false
+      };
+      t["'"] = {
+        id: _util.OPS.nextLineShowText,
+        numArgs: 1,
+        variableArgs: false
+      };
+      t['"'] = {
+        id: _util.OPS.nextLineSetSpacingShowText,
+        numArgs: 3,
+        variableArgs: false
+      };
+      t.d0 = {
+        id: _util.OPS.setCharWidth,
+        numArgs: 2,
+        variableArgs: false
+      };
+      t.d1 = {
+        id: _util.OPS.setCharWidthAndBounds,
+        numArgs: 6,
+        variableArgs: false
+      };
+      t.CS = {
+        id: _util.OPS.setStrokeColorSpace,
+        numArgs: 1,
+        variableArgs: false
+      };
+      t.cs = {
+        id: _util.OPS.setFillColorSpace,
+        numArgs: 1,
+        variableArgs: false
+      };
+      t.SC = {
+        id: _util.OPS.setStrokeColor,
+        numArgs: 4,
+        variableArgs: true
+      };
+      t.SCN = {
+        id: _util.OPS.setStrokeColorN,
+        numArgs: 33,
+        variableArgs: true
+      };
+      t.sc = {
+        id: _util.OPS.setFillColor,
+        numArgs: 4,
+        variableArgs: true
+      };
+      t.scn = {
+        id: _util.OPS.setFillColorN,
+        numArgs: 33,
+        variableArgs: true
+      };
+      t.G = {
+        id: _util.OPS.setStrokeGray,
+        numArgs: 1,
+        variableArgs: false
+      };
+      t.g = {
+        id: _util.OPS.setFillGray,
+        numArgs: 1,
+        variableArgs: false
+      };
+      t.RG = {
+        id: _util.OPS.setStrokeRGBColor,
+        numArgs: 3,
+        variableArgs: false
+      };
+      t.rg = {
+        id: _util.OPS.setFillRGBColor,
+        numArgs: 3,
+        variableArgs: false
+      };
+      t.K = {
+        id: _util.OPS.setStrokeCMYKColor,
+        numArgs: 4,
+        variableArgs: false
+      };
+      t.k = {
+        id: _util.OPS.setFillCMYKColor,
+        numArgs: 4,
+        variableArgs: false
+      };
+      t.sh = {
+        id: _util.OPS.shadingFill,
+        numArgs: 1,
+        variableArgs: false
+      };
+      t.BI = {
+        id: _util.OPS.beginInlineImage,
+        numArgs: 0,
+        variableArgs: false
+      };
+      t.ID = {
+        id: _util.OPS.beginImageData,
+        numArgs: 0,
+        variableArgs: false
+      };
+      t.EI = {
+        id: _util.OPS.endInlineImage,
+        numArgs: 1,
+        variableArgs: false
+      };
+      t.Do = {
+        id: _util.OPS.paintXObject,
+        numArgs: 1,
+        variableArgs: false
+      };
+      t.MP = {
+        id: _util.OPS.markPoint,
+        numArgs: 1,
+        variableArgs: false
+      };
+      t.DP = {
+        id: _util.OPS.markPointProps,
+        numArgs: 2,
+        variableArgs: false
+      };
+      t.BMC = {
+        id: _util.OPS.beginMarkedContent,
+        numArgs: 1,
+        variableArgs: false
+      };
+      t.BDC = {
+        id: _util.OPS.beginMarkedContentProps,
+        numArgs: 2,
+        variableArgs: false
+      };
+      t.EMC = {
+        id: _util.OPS.endMarkedContent,
+        numArgs: 0,
+        variableArgs: false
+      };
+      t.BX = {
+        id: _util.OPS.beginCompat,
+        numArgs: 0,
+        variableArgs: false
+      };
+      t.EX = {
+        id: _util.OPS.endCompat,
+        numArgs: 0,
+        variableArgs: false
+      };
+      t.BM = null;
+      t.BD = null;
+      t.true = null;
+      t.fa = null;
+      t.fal = null;
+      t.fals = null;
+      t.false = null;
+      t.nu = null;
+      t.nul = null;
+      t.null = null;
+    });
+    return (0, _util.shadow)(this, "opMap", getOPMap());
+  }
+
+  static get MAX_INVALID_PATH_OPS() {
+    return (0, _util.shadow)(this, "MAX_INVALID_PATH_OPS", 20);
+  }
+
+  constructor(stream, xref, stateManager = new StateManager()) {
+    this.parser = new _parser.Parser({
+      lexer: new _parser.Lexer(stream, EvaluatorPreprocessor.opMap),
+      xref
+    });
+    this.stateManager = stateManager;
+    this.nonProcessedArgs = [];
+    this._numInvalidPathOPS = 0;
+  }
+
+  get savedStatesDepth() {
+    return this.stateManager.stateStack.length;
+  }
+
+  read(operation) {
+    let args = operation.args;
+
+    while (true) {
+      const obj = this.parser.getObj();
+
+      if (obj instanceof _primitives.Cmd) {
+        const cmd = obj.cmd;
+        const opSpec = EvaluatorPreprocessor.opMap[cmd];
+
+        if (!opSpec) {
+          (0, _util.warn)(`Unknown command "${cmd}".`);
+          continue;
+        }
+
+        const fn = opSpec.id;
+        const numArgs = opSpec.numArgs;
+        let argsLength = args !== null ? args.length : 0;
+
+        if (!opSpec.variableArgs) {
+          if (argsLength !== numArgs) {
+            const nonProcessedArgs = this.nonProcessedArgs;
+
+            while (argsLength > numArgs) {
+              nonProcessedArgs.push(args.shift());
+              argsLength--;
+            }
+
+            while (argsLength < numArgs && nonProcessedArgs.length !== 0) {
+              if (args === null) {
+                args = [];
+              }
+
+              args.unshift(nonProcessedArgs.pop());
+              argsLength++;
+            }
+          }
+
+          if (argsLength < numArgs) {
+            const partialMsg = `command ${cmd}: expected ${numArgs} args, ` + `but received ${argsLength} 
args.`;
+
+            if (fn >= _util.OPS.moveTo && fn <= _util.OPS.endPath && ++this._numInvalidPathOPS > 
EvaluatorPreprocessor.MAX_INVALID_PATH_OPS) {
+              throw new _util.FormatError(`Invalid ${partialMsg}`);
+            }
+
+            (0, _util.warn)(`Skipping ${partialMsg}`);
+
+            if (args !== null) {
+              args.length = 0;
+            }
+
+            continue;
+          }
+        } else if (argsLength > numArgs) {
+          (0, _util.info)(`Command ${cmd}: expected [0, ${numArgs}] args, ` + `but received ${argsLength} 
args.`);
+        }
+
+        this.preprocessCommand(fn, args);
+        operation.fn = fn;
+        operation.args = args;
+        return true;
+      }
+
+      if (obj === _primitives.EOF) {
+        return false;
+      }
+
+      if (obj !== null) {
+        if (args === null) {
+          args = [];
+        }
+
+        args.push(obj);
+
+        if (args.length > 33) {
+          throw new _util.FormatError("Too many arguments");
+        }
+      }
+    }
+  }
+
+  preprocessCommand(fn, args) {
+    switch (fn | 0) {
+      case _util.OPS.save:
+        this.stateManager.save();
+        break;
+
+      case _util.OPS.restore:
+        this.stateManager.restore();
+        break;
+
+      case _util.OPS.transform:
+        this.stateManager.transform(args);
+        break;
+    }
+  }
+
+}
+
+exports.EvaluatorPreprocessor = EvaluatorPreprocessor;
+
+/***/ }),
+/* 26 */
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
+
+
+
+Object.defineProperty(exports, "__esModule", ({
+  value: true
+}));
+exports.IdentityCMap = exports.CMapFactory = exports.CMap = void 0;
+
+var _util = __w_pdfjs_require__(2);
+
+var _primitives = __w_pdfjs_require__(5);
+
+var _parser = __w_pdfjs_require__(27);
+
+var _core_utils = __w_pdfjs_require__(9);
+
+var _stream = __w_pdfjs_require__(10);
+
+const BUILT_IN_CMAPS = ["Adobe-GB1-UCS2", "Adobe-CNS1-UCS2", "Adobe-Japan1-UCS2", "Adobe-Korea1-UCS2", 
"78-EUC-H", "78-EUC-V", "78-H", "78-RKSJ-H", "78-RKSJ-V", "78-V", "78ms-RKSJ-H", "78ms-RKSJ-V", 
"83pv-RKSJ-H", "90ms-RKSJ-H", "90ms-RKSJ-V", "90msp-RKSJ-H", "90msp-RKSJ-V", "90pv-RKSJ-H", "90pv-RKSJ-V", 
"Add-H", "Add-RKSJ-H", "Add-RKSJ-V", "Add-V", "Adobe-CNS1-0", "Adobe-CNS1-1", "Adobe-CNS1-2", "Adobe-CNS1-3", 
"Adobe-CNS1-4", "Adobe-CNS1-5", "Adobe-CNS1-6", "Adobe-GB1-0", "Adobe-GB1-1", "Adobe-GB1-2", "Adobe-GB1-3", 
"Adobe-GB1-4", "Adobe-GB1-5", "Adobe-Japan1-0", "Adobe-Japan1-1", "Adobe-Japan1-2", "Adobe-Japan1-3", 
"Adobe-Japan1-4", "Adobe-Japan1-5", "Adobe-Japan1-6", "Adobe-Korea1-0", "Adobe-Korea1-1", "Adobe-Korea1-2", 
"B5-H", "B5-V", "B5pc-H", "B5pc-V", "CNS-EUC-H", "CNS-EUC-V", "CNS1-H", "CNS1-V", "CNS2-H", "CNS2-V", 
"ETHK-B5-H", "ETHK-B5-V", "ETen-B5-H", "ETen-B5-V", "ETenms-B5-H", "ETenms-B5-V", "EUC-H", "EUC-V", "Ext-H", 
"Ext-RKSJ-H", "Ext-RKSJ-V", "Ext-V", "GB-EUC-H", "GB
 -EUC-V", "GB-H", "GB-V", "GBK-EUC-H", "GBK-EUC-V", "GBK2K-H", "GBK2K-V", "GBKp-EUC-H", "GBKp-EUC-V", 
"GBT-EUC-H", "GBT-EUC-V", "GBT-H", "GBT-V", "GBTpc-EUC-H", "GBTpc-EUC-V", "GBpc-EUC-H", "GBpc-EUC-V", "H", 
"HKdla-B5-H", "HKdla-B5-V", "HKdlb-B5-H", "HKdlb-B5-V", "HKgccs-B5-H", "HKgccs-B5-V", "HKm314-B5-H", 
"HKm314-B5-V", "HKm471-B5-H", "HKm471-B5-V", "HKscs-B5-H", "HKscs-B5-V", "Hankaku", "Hiragana", "KSC-EUC-H", 
"KSC-EUC-V", "KSC-H", "KSC-Johab-H", "KSC-Johab-V", "KSC-V", "KSCms-UHC-H", "KSCms-UHC-HW-H", 
"KSCms-UHC-HW-V", "KSCms-UHC-V", "KSCpc-EUC-H", "KSCpc-EUC-V", "Katakana", "NWP-H", "NWP-V", "RKSJ-H", 
"RKSJ-V", "Roman", "UniCNS-UCS2-H", "UniCNS-UCS2-V", "UniCNS-UTF16-H", "UniCNS-UTF16-V", "UniCNS-UTF32-H", 
"UniCNS-UTF32-V", "UniCNS-UTF8-H", "UniCNS-UTF8-V", "UniGB-UCS2-H", "UniGB-UCS2-V", "UniGB-UTF16-H", 
"UniGB-UTF16-V", "UniGB-UTF32-H", "UniGB-UTF32-V", "UniGB-UTF8-H", "UniGB-UTF8-V", "UniJIS-UCS2-H", 
"UniJIS-UCS2-HW-H", "UniJIS-UCS2-HW-V", "UniJIS-UCS2-V", "UniJIS-UTF16-H",
  "UniJIS-UTF16-V", "UniJIS-UTF32-H", "UniJIS-UTF32-V", "UniJIS-UTF8-H", "UniJIS-UTF8-V", 
"UniJIS2004-UTF16-H", "UniJIS2004-UTF16-V", "UniJIS2004-UTF32-H", "UniJIS2004-UTF32-V", "UniJIS2004-UTF8-H", 
"UniJIS2004-UTF8-V", "UniJISPro-UCS2-HW-V", "UniJISPro-UCS2-V", "UniJISPro-UTF8-V", "UniJISX0213-UTF32-H", 
"UniJISX0213-UTF32-V", "UniJISX02132004-UTF32-H", "UniJISX02132004-UTF32-V", "UniKS-UCS2-H", "UniKS-UCS2-V", 
"UniKS-UTF16-H", "UniKS-UTF16-V", "UniKS-UTF32-H", "UniKS-UTF32-V", "UniKS-UTF8-H", "UniKS-UTF8-V", "V", 
"WP-Symbol"];
+const MAX_MAP_RANGE = 2 ** 24 - 1;
+
+class CMap {
+  constructor(builtInCMap = false) {
+    this.codespaceRanges = [[], [], [], []];
+    this.numCodespaceRanges = 0;
+    this._map = [];
+    this.name = "";
+    this.vertical = false;
+    this.useCMap = null;
+    this.builtInCMap = builtInCMap;
+  }
+
+  addCodespaceRange(n, low, high) {
+    this.codespaceRanges[n - 1].push(low, high);
+    this.numCodespaceRanges++;
+  }
+
+  mapCidRange(low, high, dstLow) {
+    if (high - low > MAX_MAP_RANGE) {
+      throw new Error("mapCidRange - ignoring data above MAX_MAP_RANGE.");
+    }
+
+    while (low <= high) {
+      this._map[low++] = dstLow++;
+    }
+  }
+
+  mapBfRange(low, high, dstLow) {
+    if (high - low > MAX_MAP_RANGE) {
+      throw new Error("mapBfRange - ignoring data above MAX_MAP_RANGE.");
+    }
+
+    const lastByte = dstLow.length - 1;
+
+    while (low <= high) {
+      this._map[low++] = dstLow;
+      dstLow = dstLow.substring(0, lastByte) + String.fromCharCode(dstLow.charCodeAt(lastByte) + 1);
+    }
+  }
+
+  mapBfRangeToArray(low, high, array) {
+    if (high - low > MAX_MAP_RANGE) {
+      throw new Error("mapBfRangeToArray - ignoring data above MAX_MAP_RANGE.");
+    }
+
+    const ii = array.length;
+    let i = 0;
+
+    while (low <= high && i < ii) {
+      this._map[low] = array[i++];
+      ++low;
+    }
+  }
+
+  mapOne(src, dst) {
+    this._map[src] = dst;
+  }
+
+  lookup(code) {
+    return this._map[code];
+  }
+
+  contains(code) {
+    return this._map[code] !== undefined;
+  }
+
+  forEach(callback) {
+    const map = this._map;
+    const length = map.length;
+
+    if (length <= 0x10000) {
+      for (let i = 0; i < length; i++) {
+        if (map[i] !== undefined) {
+          callback(i, map[i]);
+        }
+      }
+    } else {
+      for (const i in map) {
+        callback(i, map[i]);
+      }
+    }
+  }
+
+  charCodeOf(value) {
+    const map = this._map;
+
+    if (map.length <= 0x10000) {
+      return map.indexOf(value);
+    }
+
+    for (const charCode in map) {
+      if (map[charCode] === value) {
+        return charCode | 0;
+      }
+    }
+
+    return -1;
+  }
+
+  getMap() {
+    return this._map;
+  }
+
+  readCharCode(str, offset, out) {
+    let c = 0;
+    const codespaceRanges = this.codespaceRanges;
+
+    for (let n = 0, nn = codespaceRanges.length; n < nn; n++) {
+      c = (c << 8 | str.charCodeAt(offset + n)) >>> 0;
+      const codespaceRange = codespaceRanges[n];
+
+      for (let k = 0, kk = codespaceRange.length; k < kk;) {
+        const low = codespaceRange[k++];
+        const high = codespaceRange[k++];
+
+        if (c >= low && c <= high) {
+          out.charcode = c;
+          out.length = n + 1;
+          return;
+        }
+      }
+    }
+
+    out.charcode = 0;
+    out.length = 1;
+  }
+
+  getCharCodeLength(charCode) {
+    const codespaceRanges = this.codespaceRanges;
+
+    for (let n = 0, nn = codespaceRanges.length; n < nn; n++) {
+      const codespaceRange = codespaceRanges[n];
+
+      for (let k = 0, kk = codespaceRange.length; k < kk;) {
+        const low = codespaceRange[k++];
+        const high = codespaceRange[k++];
+
+        if (charCode >= low && charCode <= high) {
+          return n + 1;
+        }
+      }
+    }
+
+    return 1;
+  }
+
+  get length() {
+    return this._map.length;
+  }
+
+  get isIdentityCMap() {
+    if (!(this.name === "Identity-H" || this.name === "Identity-V")) {
+      return false;
+    }
+
+    if (this._map.length !== 0x10000) {
+      return false;
+    }
+
+    for (let i = 0; i < 0x10000; i++) {
+      if (this._map[i] !== i) {
+        return false;
+      }
+    }
+
+    return true;
+  }
+
+}
+
+exports.CMap = CMap;
+
+class IdentityCMap extends CMap {
+  constructor(vertical, n) {
+    super();
+    this.vertical = vertical;
+    this.addCodespaceRange(n, 0, 0xffff);
+  }
+
+  mapCidRange(low, high, dstLow) {
+    (0, _util.unreachable)("should not call mapCidRange");
+  }
+
+  mapBfRange(low, high, dstLow) {
+    (0, _util.unreachable)("should not call mapBfRange");
+  }
+
+  mapBfRangeToArray(low, high, array) {
+    (0, _util.unreachable)("should not call mapBfRangeToArray");
+  }
+
+  mapOne(src, dst) {
+    (0, _util.unreachable)("should not call mapCidOne");
+  }
+
+  lookup(code) {
+    return Number.isInteger(code) && code <= 0xffff ? code : undefined;
+  }
+
+  contains(code) {
+    return Number.isInteger(code) && code <= 0xffff;
+  }
+
+  forEach(callback) {
+    for (let i = 0; i <= 0xffff; i++) {
+      callback(i, i);
+    }
+  }
+
+  charCodeOf(value) {
+    return Number.isInteger(value) && value <= 0xffff ? value : -1;
+  }
+
+  getMap() {
+    const map = new Array(0x10000);
+
+    for (let i = 0; i <= 0xffff; i++) {
+      map[i] = i;
+    }
+
+    return map;
+  }
+
+  get length() {
+    return 0x10000;
+  }
+
+  get isIdentityCMap() {
+    (0, _util.unreachable)("should not access .isIdentityCMap");
+  }
+
+}
+
+exports.IdentityCMap = IdentityCMap;
+
+const BinaryCMapReader = function BinaryCMapReaderClosure() {
+  function hexToInt(a, size) {
+    let n = 0;
+
+    for (let i = 0; i <= size; i++) {
+      n = n << 8 | a[i];
+    }
+
+    return n >>> 0;
+  }
+
+  function hexToStr(a, size) {
+    if (size === 1) {
+      return String.fromCharCode(a[0], a[1]);
+    }
+
+    if (size === 3) {
+      return String.fromCharCode(a[0], a[1], a[2], a[3]);
+    }
+
+    return String.fromCharCode.apply(null, a.subarray(0, size + 1));
+  }
+
+  function addHex(a, b, size) {
+    let c = 0;
+
+    for (let i = size; i >= 0; i--) {
+      c += a[i] + b[i];
+      a[i] = c & 255;
+      c >>= 8;
+    }
+  }
+
+  function incHex(a, size) {
+    let c = 1;
+
+    for (let i = size; i >= 0 && c > 0; i--) {
+      c += a[i];
+      a[i] = c & 255;
+      c >>= 8;
+    }
+  }
+
+  const MAX_NUM_SIZE = 16;
+  const MAX_ENCODED_NUM_SIZE = 19;
+
+  class BinaryCMapStream {
+    constructor(data) {
+      this.buffer = data;
+      this.pos = 0;
+      this.end = data.length;
+      this.tmpBuf = new Uint8Array(MAX_ENCODED_NUM_SIZE);
+    }
+
+    readByte() {
+      if (this.pos >= this.end) {
+        return -1;
+      }
+
+      return this.buffer[this.pos++];
+    }
+
+    readNumber() {
+      let n = 0;
+      let last;
+
+      do {
+        const b = this.readByte();
+
+        if (b < 0) {
+          throw new _util.FormatError("unexpected EOF in bcmap");
+        }
+
+        last = !(b & 0x80);
+        n = n << 7 | b & 0x7f;
+      } while (!last);
+
+      return n;
+    }
+
+    readSigned() {
+      const n = this.readNumber();
+      return n & 1 ? ~(n >>> 1) : n >>> 1;
+    }
+
+    readHex(num, size) {
+      num.set(this.buffer.subarray(this.pos, this.pos + size + 1));
+      this.pos += size + 1;
+    }
+
+    readHexNumber(num, size) {
+      let last;
+      const stack = this.tmpBuf;
+      let sp = 0;
+
+      do {
+        const b = this.readByte();
+
+        if (b < 0) {
+          throw new _util.FormatError("unexpected EOF in bcmap");
+        }
+
+        last = !(b & 0x80);
+        stack[sp++] = b & 0x7f;
+      } while (!last);
+
+      let i = size,
+          buffer = 0,
+          bufferSize = 0;
+
+      while (i >= 0) {
+        while (bufferSize < 8 && stack.length > 0) {
+          buffer |= stack[--sp] << bufferSize;
+          bufferSize += 7;
+        }
+
+        num[i] = buffer & 255;
+        i--;
+        buffer >>= 8;
+        bufferSize -= 8;
+      }
+    }
+
+    readHexSigned(num, size) {
+      this.readHexNumber(num, size);
+      const sign = num[size] & 1 ? 255 : 0;
+      let c = 0;
+
+      for (let i = 0; i <= size; i++) {
+        c = (c & 1) << 8 | num[i];
+        num[i] = c >> 1 ^ sign;
+      }
+    }
+
+    readString() {
+      const len = this.readNumber();
+      let s = "";
+
+      for (let i = 0; i < len; i++) {
+        s += String.fromCharCode(this.readNumber());
+      }
+
+      return s;
+    }
+
+  }
+
+  class BinaryCMapReader {
+    async process(data, cMap, extend) {
+      const stream = new BinaryCMapStream(data);
+      const header = stream.readByte();
+      cMap.vertical = !!(header & 1);
+      let useCMap = null;
+      const start = new Uint8Array(MAX_NUM_SIZE);
+      const end = new Uint8Array(MAX_NUM_SIZE);
+      const char = new Uint8Array(MAX_NUM_SIZE);
+      const charCode = new Uint8Array(MAX_NUM_SIZE);
+      const tmp = new Uint8Array(MAX_NUM_SIZE);
+      let code;
+      let b;
+
+      while ((b = stream.readByte()) >= 0) {
+        const type = b >> 5;
+
+        if (type === 7) {
+          switch (b & 0x1f) {
+            case 0:
+              stream.readString();
+              break;
+
+            case 1:
+              useCMap = stream.readString();
+              break;
+          }
+
+          continue;
+        }
+
+        const sequence = !!(b & 0x10);
+        const dataSize = b & 15;
+
+        if (dataSize + 1 > MAX_NUM_SIZE) {
+          throw new Error("BinaryCMapReader.process: Invalid dataSize.");
+        }
+
+        const ucs2DataSize = 1;
+        const subitemsCount = stream.readNumber();
+
+        switch (type) {
+          case 0:
+            stream.readHex(start, dataSize);
+            stream.readHexNumber(end, dataSize);
+            addHex(end, start, dataSize);
+            cMap.addCodespaceRange(dataSize + 1, hexToInt(start, dataSize), hexToInt(end, dataSize));
+
+            for (let i = 1; i < subitemsCount; i++) {
+              incHex(end, dataSize);
+              stream.readHexNumber(start, dataSize);
+              addHex(start, end, dataSize);
+              stream.readHexNumber(end, dataSize);
+              addHex(end, start, dataSize);
+              cMap.addCodespaceRange(dataSize + 1, hexToInt(start, dataSize), hexToInt(end, dataSize));
+            }
+
+            break;
+
+          case 1:
+            stream.readHex(start, dataSize);
+            stream.readHexNumber(end, dataSize);
+            addHex(end, start, dataSize);
+            stream.readNumber();
+
+            for (let i = 1; i < subitemsCount; i++) {
+              incHex(end, dataSize);
+              stream.readHexNumber(start, dataSize);
+              addHex(start, end, dataSize);
+              stream.readHexNumber(end, dataSize);
+              addHex(end, start, dataSize);
+              stream.readNumber();
+            }
+
+            break;
+
+          case 2:
+            stream.readHex(char, dataSize);
+            code = stream.readNumber();
+            cMap.mapOne(hexToInt(char, dataSize), code);
+
+            for (let i = 1; i < subitemsCount; i++) {
+              incHex(char, dataSize);
+
+              if (!sequence) {
+                stream.readHexNumber(tmp, dataSize);
+                addHex(char, tmp, dataSize);
+              }
+
+              code = stream.readSigned() + (code + 1);
+              cMap.mapOne(hexToInt(char, dataSize), code);
+            }
+
+            break;
+
+          case 3:
+            stream.readHex(start, dataSize);
+            stream.readHexNumber(end, dataSize);
+            addHex(end, start, dataSize);
+            code = stream.readNumber();
+            cMap.mapCidRange(hexToInt(start, dataSize), hexToInt(end, dataSize), code);
+
+            for (let i = 1; i < subitemsCount; i++) {
+              incHex(end, dataSize);
+
+              if (!sequence) {
+                stream.readHexNumber(start, dataSize);
+                addHex(start, end, dataSize);
+              } else {
+                start.set(end);
+              }
+
+              stream.readHexNumber(end, dataSize);
+              addHex(end, start, dataSize);
+              code = stream.readNumber();
+              cMap.mapCidRange(hexToInt(start, dataSize), hexToInt(end, dataSize), code);
+            }
+
+            break;
+
+          case 4:
+            stream.readHex(char, ucs2DataSize);
+            stream.readHex(charCode, dataSize);
+            cMap.mapOne(hexToInt(char, ucs2DataSize), hexToStr(charCode, dataSize));
+
+            for (let i = 1; i < subitemsCount; i++) {
+              incHex(char, ucs2DataSize);
+
+              if (!sequence) {
+                stream.readHexNumber(tmp, ucs2DataSize);
+                addHex(char, tmp, ucs2DataSize);
+              }
+
+              incHex(charCode, dataSize);
+              stream.readHexSigned(tmp, dataSize);
+              addHex(charCode, tmp, dataSize);
+              cMap.mapOne(hexToInt(char, ucs2DataSize), hexToStr(charCode, dataSize));
+            }
+
+            break;
+
+          case 5:
+            stream.readHex(start, ucs2DataSize);
+            stream.readHexNumber(end, ucs2DataSize);
+            addHex(end, start, ucs2DataSize);
+            stream.readHex(charCode, dataSize);
+            cMap.mapBfRange(hexToInt(start, ucs2DataSize), hexToInt(end, ucs2DataSize), hexToStr(charCode, 
dataSize));
+
+            for (let i = 1; i < subitemsCount; i++) {
+              incHex(end, ucs2DataSize);
+
+              if (!sequence) {
+                stream.readHexNumber(start, ucs2DataSize);
+                addHex(start, end, ucs2DataSize);
+              } else {
+                start.set(end);
+              }
+
+              stream.readHexNumber(end, ucs2DataSize);
+              addHex(end, start, ucs2DataSize);
+              stream.readHex(charCode, dataSize);
+              cMap.mapBfRange(hexToInt(start, ucs2DataSize), hexToInt(end, ucs2DataSize), hexToStr(charCode, 
dataSize));
+            }
+
+            break;
+
+          default:
+            throw new Error(`BinaryCMapReader.process - unknown type: ${type}`);
+        }
+      }
+
+      if (useCMap) {
+        return extend(useCMap);
+      }
+
+      return cMap;
+    }
+
+  }
+
+  return BinaryCMapReader;
+}();
+
+const CMapFactory = function CMapFactoryClosure() {
+  function strToInt(str) {
+    let a = 0;
+
+    for (let i = 0; i < str.length; i++) {
+      a = a << 8 | str.charCodeAt(i);
+    }
+
+    return a >>> 0;
+  }
+
+  function expectString(obj) {
+    if (!(0, _util.isString)(obj)) {
+      throw new _util.FormatError("Malformed CMap: expected string.");
+    }
+  }
+
+  function expectInt(obj) {
+    if (!Number.isInteger(obj)) {
+      throw new _util.FormatError("Malformed CMap: expected int.");
+    }
+  }
+
+  function parseBfChar(cMap, lexer) {
+    while (true) {
+      let obj = lexer.getObj();
+
+      if (obj === _primitives.EOF) {
+        break;
+      }
+
+      if ((0, _primitives.isCmd)(obj, "endbfchar")) {
+        return;
+      }
+
+      expectString(obj);
+      const src = strToInt(obj);
+      obj = lexer.getObj();
+      expectString(obj);
+      const dst = obj;
+      cMap.mapOne(src, dst);
+    }
+  }
+
+  function parseBfRange(cMap, lexer) {
+    while (true) {
+      let obj = lexer.getObj();
+
+      if (obj === _primitives.EOF) {
+        break;
+      }
+
+      if ((0, _primitives.isCmd)(obj, "endbfrange")) {
+        return;
+      }
+
+      expectString(obj);
+      const low = strToInt(obj);
+      obj = lexer.getObj();
+      expectString(obj);
+      const high = strToInt(obj);
+      obj = lexer.getObj();
+
+      if (Number.isInteger(obj) || (0, _util.isString)(obj)) {
+        const dstLow = Number.isInteger(obj) ? String.fromCharCode(obj) : obj;
+        cMap.mapBfRange(low, high, dstLow);
+      } else if ((0, _primitives.isCmd)(obj, "[")) {
+        obj = lexer.getObj();
+        const array = [];
+
+        while (!(0, _primitives.isCmd)(obj, "]") && obj !== _primitives.EOF) {
+          array.push(obj);
+          obj = lexer.getObj();
+        }
+
+        cMap.mapBfRangeToArray(low, high, array);
+      } else {
+        break;
+      }
+    }
+
+    throw new _util.FormatError("Invalid bf range.");
+  }
+
+  function parseCidChar(cMap, lexer) {
+    while (true) {
+      let obj = lexer.getObj();
+
+      if (obj === _primitives.EOF) {
+        break;
+      }
+
+      if ((0, _primitives.isCmd)(obj, "endcidchar")) {
+        return;
+      }
+
+      expectString(obj);
+      const src = strToInt(obj);
+      obj = lexer.getObj();
+      expectInt(obj);
+      const dst = obj;
+      cMap.mapOne(src, dst);
+    }
+  }
+
+  function parseCidRange(cMap, lexer) {
+    while (true) {
+      let obj = lexer.getObj();
+
+      if (obj === _primitives.EOF) {
+        break;
+      }
+
+      if ((0, _primitives.isCmd)(obj, "endcidrange")) {
+        return;
+      }
+
+      expectString(obj);
+      const low = strToInt(obj);
+      obj = lexer.getObj();
+      expectString(obj);
+      const high = strToInt(obj);
+      obj = lexer.getObj();
+      expectInt(obj);
+      const dstLow = obj;
+      cMap.mapCidRange(low, high, dstLow);
+    }
+  }
+
+  function parseCodespaceRange(cMap, lexer) {
+    while (true) {
+      let obj = lexer.getObj();
+
+      if (obj === _primitives.EOF) {
+        break;
+      }
+
+      if ((0, _primitives.isCmd)(obj, "endcodespacerange")) {
+        return;
+      }
+
+      if (!(0, _util.isString)(obj)) {
+        break;
+      }
+
+      const low = strToInt(obj);
+      obj = lexer.getObj();
+
+      if (!(0, _util.isString)(obj)) {
+        break;
+      }
+
+      const high = strToInt(obj);
+      cMap.addCodespaceRange(obj.length, low, high);
+    }
+
+    throw new _util.FormatError("Invalid codespace range.");
+  }
+
+  function parseWMode(cMap, lexer) {
+    const obj = lexer.getObj();
+
+    if (Number.isInteger(obj)) {
+      cMap.vertical = !!obj;
+    }
+  }
+
+  function parseCMapName(cMap, lexer) {
+    const obj = lexer.getObj();
+
+    if ((0, _primitives.isName)(obj) && (0, _util.isString)(obj.name)) {
+      cMap.name = obj.name;
+    }
+  }
+
+  async function parseCMap(cMap, lexer, fetchBuiltInCMap, useCMap) {
+    let previous, embeddedUseCMap;
+
+    objLoop: while (true) {
+      try {
+        const obj = lexer.getObj();
+
+        if (obj === _primitives.EOF) {
+          break;
+        } else if ((0, _primitives.isName)(obj)) {
+          if (obj.name === "WMode") {
+            parseWMode(cMap, lexer);
+          } else if (obj.name === "CMapName") {
+            parseCMapName(cMap, lexer);
+          }
+
+          previous = obj;
+        } else if ((0, _primitives.isCmd)(obj)) {
+          switch (obj.cmd) {
+            case "endcmap":
+              break objLoop;
+
+            case "usecmap":
+              if ((0, _primitives.isName)(previous)) {
+                embeddedUseCMap = previous.name;
+              }
+
+              break;
+
+            case "begincodespacerange":
+              parseCodespaceRange(cMap, lexer);
+              break;
+
+            case "beginbfchar":
+              parseBfChar(cMap, lexer);
+              break;
+
+            case "begincidchar":
+              parseCidChar(cMap, lexer);
+              break;
+
+            case "beginbfrange":
+              parseBfRange(cMap, lexer);
+              break;
+
+            case "begincidrange":
+              parseCidRange(cMap, lexer);
+              break;
+          }
+        }
+      } catch (ex) {
+        if (ex instanceof _core_utils.MissingDataException) {
+          throw ex;
+        }
+
+        (0, _util.warn)("Invalid cMap data: " + ex);
+        continue;
+      }
+    }
+
+    if (!useCMap && embeddedUseCMap) {
+      useCMap = embeddedUseCMap;
+    }
+
+    if (useCMap) {
+      return extendCMap(cMap, fetchBuiltInCMap, useCMap);
+    }
+
+    return cMap;
+  }
+
+  async function extendCMap(cMap, fetchBuiltInCMap, useCMap) {
+    cMap.useCMap = await createBuiltInCMap(useCMap, fetchBuiltInCMap);
+
+    if (cMap.numCodespaceRanges === 0) {
+      const useCodespaceRanges = cMap.useCMap.codespaceRanges;
+
+      for (let i = 0; i < useCodespaceRanges.length; i++) {
+        cMap.codespaceRanges[i] = useCodespaceRanges[i].slice();
+      }
+
+      cMap.numCodespaceRanges = cMap.useCMap.numCodespaceRanges;
+    }
+
+    cMap.useCMap.forEach(function (key, value) {
+      if (!cMap.contains(key)) {
+        cMap.mapOne(key, cMap.useCMap.lookup(key));
+      }
+    });
+    return cMap;
+  }
+
+  async function createBuiltInCMap(name, fetchBuiltInCMap) {
+    if (name === "Identity-H") {
+      return new IdentityCMap(false, 2);
+    } else if (name === "Identity-V") {
+      return new IdentityCMap(true, 2);
+    }
+
+    if (!BUILT_IN_CMAPS.includes(name)) {
+      throw new Error("Unknown CMap name: " + name);
+    }
+
+    if (!fetchBuiltInCMap) {
+      throw new Error("Built-in CMap parameters are not provided.");
+    }
+
+    const {
+      cMapData,
+      compressionType
+    } = await fetchBuiltInCMap(name);
+    const cMap = new CMap(true);
+
+    if (compressionType === _util.CMapCompressionType.BINARY) {
+      return new BinaryCMapReader().process(cMapData, cMap, useCMap => {
+        return extendCMap(cMap, fetchBuiltInCMap, useCMap);
+      });
+    }
+
+    if (compressionType === _util.CMapCompressionType.NONE) {
+      const lexer = new _parser.Lexer(new _stream.Stream(cMapData));
+      return parseCMap(cMap, lexer, fetchBuiltInCMap, null);
+    }
+
+    throw new Error("TODO: Only BINARY/NONE CMap compression is currently supported.");
+  }
+
+  return {
+    async create(params) {
+      const encoding = params.encoding;
+      const fetchBuiltInCMap = params.fetchBuiltInCMap;
+      const useCMap = params.useCMap;
+
+      if ((0, _primitives.isName)(encoding)) {
+        return createBuiltInCMap(encoding.name, fetchBuiltInCMap);
+      } else if ((0, _primitives.isStream)(encoding)) {
+        const parsedCMap = await parseCMap(new CMap(), new _parser.Lexer(encoding), fetchBuiltInCMap, 
useCMap);
+
+        if (parsedCMap.isIdentityCMap) {
+          return createBuiltInCMap(parsedCMap.name, fetchBuiltInCMap);
+        }
+
+        return parsedCMap;
+      }
+
+      throw new Error("Encoding required.");
+    }
+
+  };
+}();
+
+exports.CMapFactory = CMapFactory;
+
+/***/ }),
+/* 27 */
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
+
+
+
+Object.defineProperty(exports, "__esModule", ({
+  value: true
+}));
+exports.Parser = exports.Linearization = exports.Lexer = void 0;
+
+var _util = __w_pdfjs_require__(2);
+
+var _primitives = __w_pdfjs_require__(5);
+
+var _core_utils = __w_pdfjs_require__(9);
+
+var _ascii_85_stream = __w_pdfjs_require__(28);
+
+var _ascii_hex_stream = __w_pdfjs_require__(30);
+
+var _ccitt_stream = __w_pdfjs_require__(31);
+
+var _flate_stream = __w_pdfjs_require__(33);
+
+var _jbig2_stream = __w_pdfjs_require__(34);
+
+var _jpeg_stream = __w_pdfjs_require__(37);
+
+var _jpx_stream = __w_pdfjs_require__(39);
+
+var _lzw_stream = __w_pdfjs_require__(41);
+
+var _stream = __w_pdfjs_require__(10);
+
+var _predictor_stream = __w_pdfjs_require__(42);
+
+var _run_length_stream = __w_pdfjs_require__(43);
+
+const MAX_LENGTH_TO_CACHE = 1000;
+const MAX_ADLER32_LENGTH = 5552;
+
+function computeAdler32(bytes) {
+  const bytesLength = bytes.length;
+  let a = 1,
+      b = 0;
+
+  for (let i = 0; i < bytesLength; ++i) {
+    a += bytes[i] & 0xff;
+    b += a;
+  }
+
+  return b % 65521 << 16 | a % 65521;
+}
+
+class Parser {
+  constructor({
+    lexer,
+    xref,
+    allowStreams = false,
+    recoveryMode = false
+  }) {
+    this.lexer = lexer;
+    this.xref = xref;
+    this.allowStreams = allowStreams;
+    this.recoveryMode = recoveryMode;
+    this.imageCache = Object.create(null);
+    this.refill();
+  }
+
+  refill() {
+    this.buf1 = this.lexer.getObj();
+    this.buf2 = this.lexer.getObj();
+  }
+
+  shift() {
+    if (this.buf2 instanceof _primitives.Cmd && this.buf2.cmd === "ID") {
+      this.buf1 = this.buf2;
+      this.buf2 = null;
+    } else {
+      this.buf1 = this.buf2;
+      this.buf2 = this.lexer.getObj();
+    }
+  }
+
+  tryShift() {
+    try {
+      this.shift();
+      return true;
+    } catch (e) {
+      if (e instanceof _core_utils.MissingDataException) {
+        throw e;
+      }
+
+      return false;
+    }
+  }
+
+  getObj(cipherTransform = null) {
+    const buf1 = this.buf1;
+    this.shift();
+
+    if (buf1 instanceof _primitives.Cmd) {
+      switch (buf1.cmd) {
+        case "BI":
+          return this.makeInlineImage(cipherTransform);
+
+        case "[":
+          const array = [];
+
+          while (!(0, _primitives.isCmd)(this.buf1, "]") && this.buf1 !== _primitives.EOF) {
+            array.push(this.getObj(cipherTransform));
+          }
+
+          if (this.buf1 === _primitives.EOF) {
+            if (this.recoveryMode) {
+              return array;
+            }
+
+            throw new _core_utils.ParserEOFException("End of file inside array.");
+          }
+
+          this.shift();
+          return array;
+
+        case "<<":
+          const dict = new _primitives.Dict(this.xref);
+
+          while (!(0, _primitives.isCmd)(this.buf1, ">>") && this.buf1 !== _primitives.EOF) {
+            if (!(0, _primitives.isName)(this.buf1)) {
+              (0, _util.info)("Malformed dictionary: key must be a name object");
+              this.shift();
+              continue;
+            }
+
+            const key = this.buf1.name;
+            this.shift();
+
+            if (this.buf1 === _primitives.EOF) {
+              break;
+            }
+
+            dict.set(key, this.getObj(cipherTransform));
+          }
+
+          if (this.buf1 === _primitives.EOF) {
+            if (this.recoveryMode) {
+              return dict;
+            }
+
+            throw new _core_utils.ParserEOFException("End of file inside dictionary.");
+          }
+
+          if ((0, _primitives.isCmd)(this.buf2, "stream")) {
+            return this.allowStreams ? this.makeStream(dict, cipherTransform) : dict;
+          }
+
+          this.shift();
+          return dict;
+
+        default:
+          return buf1;
+      }
+    }
+
+    if (Number.isInteger(buf1)) {
+      if (Number.isInteger(this.buf1) && (0, _primitives.isCmd)(this.buf2, "R")) {
+        const ref = _primitives.Ref.get(buf1, this.buf1);
+
+        this.shift();
+        this.shift();
+        return ref;
+      }
+
+      return buf1;
+    }
+
+    if (typeof buf1 === "string") {
+      if (cipherTransform) {
+        return cipherTransform.decryptString(buf1);
+      }
+
+      return buf1;
+    }
+
+    return buf1;
+  }
+
+  findDefaultInlineStreamEnd(stream) {
+    const E = 0x45,
+          I = 0x49,
+          SPACE = 0x20,
+          LF = 0xa,
+          CR = 0xd,
+          NUL = 0x0;
+    const lexer = this.lexer,
+          startPos = stream.pos,
+          n = 10;
+    let state = 0,
+        ch,
+        maybeEIPos;
+
+    while ((ch = stream.getByte()) !== -1) {
+      if (state === 0) {
+        state = ch === E ? 1 : 0;
+      } else if (state === 1) {
+        state = ch === I ? 2 : 0;
+      } else {
+        (0, _util.assert)(state === 2, "findDefaultInlineStreamEnd - invalid state.");
+
+        if (ch === SPACE || ch === LF || ch === CR) {
+          maybeEIPos = stream.pos;
+          const followingBytes = stream.peekBytes(n);
+
+          for (let i = 0, ii = followingBytes.length; i < ii; i++) {
+            ch = followingBytes[i];
+
+            if (ch === NUL && followingBytes[i + 1] !== NUL) {
+              continue;
+            }
+
+            if (ch !== LF && ch !== CR && (ch < SPACE || ch > 0x7f)) {
+              state = 0;
+              break;
+            }
+          }
+
+          if (state !== 2) {
+            continue;
+          }
+
+          if (lexer.knownCommands) {
+            const nextObj = lexer.peekObj();
+
+            if (nextObj instanceof _primitives.Cmd && !lexer.knownCommands[nextObj.cmd]) {
+              state = 0;
+            }
+          } else {
+            (0, _util.warn)("findDefaultInlineStreamEnd - `lexer.knownCommands` is undefined.");
+          }
+
+          if (state === 2) {
+            break;
+          }
+        } else {
+          state = 0;
+        }
+      }
+    }
+
+    if (ch === -1) {
+      (0, _util.warn)("findDefaultInlineStreamEnd: " + "Reached the end of the stream without finding a 
valid EI marker");
+
+      if (maybeEIPos) {
+        (0, _util.warn)('... trying to recover by using the last "EI" occurrence.');
+        stream.skip(-(stream.pos - maybeEIPos));
+      }
+    }
+
+    let endOffset = 4;
+    stream.skip(-endOffset);
+    ch = stream.peekByte();
+    stream.skip(endOffset);
+
+    if (!(0, _core_utils.isWhiteSpace)(ch)) {
+      endOffset--;
+    }
+
+    return stream.pos - endOffset - startPos;
+  }
+
+  findDCTDecodeInlineStreamEnd(stream) {
+    const startPos = stream.pos;
+    let foundEOI = false,
+        b,
+        markerLength;
+
+    while ((b = stream.getByte()) !== -1) {
+      if (b !== 0xff) {
+        continue;
+      }
+
+      switch (stream.getByte()) {
+        case 0x00:
+          break;
+
+        case 0xff:
+          stream.skip(-1);
+          break;
+
+        case 0xd9:
+          foundEOI = true;
+          break;
+
+        case 0xc0:
+        case 0xc1:
+        case 0xc2:
+        case 0xc3:
+        case 0xc5:
+        case 0xc6:
+        case 0xc7:
+        case 0xc9:
+        case 0xca:
+        case 0xcb:
+        case 0xcd:
+        case 0xce:
+        case 0xcf:
+        case 0xc4:
+        case 0xcc:
+        case 0xda:
+        case 0xdb:
+        case 0xdc:
+        case 0xdd:
+        case 0xde:
+        case 0xdf:
+        case 0xe0:
+        case 0xe1:
+        case 0xe2:
+        case 0xe3:
+        case 0xe4:
+        case 0xe5:
+        case 0xe6:
+        case 0xe7:
+        case 0xe8:
+        case 0xe9:
+        case 0xea:
+        case 0xeb:
+        case 0xec:
+        case 0xed:
+        case 0xee:
+        case 0xef:
+        case 0xfe:
+          markerLength = stream.getUint16();
+
+          if (markerLength > 2) {
+            stream.skip(markerLength - 2);
+          } else {
+            stream.skip(-2);
+          }
+
+          break;
+      }
+
+      if (foundEOI) {
+        break;
+      }
+    }
+
+    const length = stream.pos - startPos;
+
+    if (b === -1) {
+      (0, _util.warn)("Inline DCTDecode image stream: " + "EOI marker not found, searching for /EI/ 
instead.");
+      stream.skip(-length);
+      return this.findDefaultInlineStreamEnd(stream);
+    }
+
+    this.inlineStreamSkipEI(stream);
+    return length;
+  }
+
+  findASCII85DecodeInlineStreamEnd(stream) {
+    const TILDE = 0x7e,
+          GT = 0x3e;
+    const startPos = stream.pos;
+    let ch;
+
+    while ((ch = stream.getByte()) !== -1) {
+      if (ch === TILDE) {
+        const tildePos = stream.pos;
+        ch = stream.peekByte();
+
+        while ((0, _core_utils.isWhiteSpace)(ch)) {
+          stream.skip();
+          ch = stream.peekByte();
+        }
+
+        if (ch === GT) {
+          stream.skip();
+          break;
+        }
+
+        if (stream.pos > tildePos) {
+          const maybeEI = stream.peekBytes(2);
+
+          if (maybeEI[0] === 0x45 && maybeEI[1] === 0x49) {
+            break;
+          }
+        }
+      }
+    }
+
+    const length = stream.pos - startPos;
+
+    if (ch === -1) {
+      (0, _util.warn)("Inline ASCII85Decode image stream: " + "EOD marker not found, searching for /EI/ 
instead.");
+      stream.skip(-length);
+      return this.findDefaultInlineStreamEnd(stream);
+    }
+
+    this.inlineStreamSkipEI(stream);
+    return length;
+  }
+
+  findASCIIHexDecodeInlineStreamEnd(stream) {
+    const GT = 0x3e;
+    const startPos = stream.pos;
+    let ch;
+
+    while ((ch = stream.getByte()) !== -1) {
+      if (ch === GT) {
+        break;
+      }
+    }
+
+    const length = stream.pos - startPos;
+
+    if (ch === -1) {
+      (0, _util.warn)("Inline ASCIIHexDecode image stream: " + "EOD marker not found, searching for /EI/ 
instead.");
+      stream.skip(-length);
+      return this.findDefaultInlineStreamEnd(stream);
+    }
+
+    this.inlineStreamSkipEI(stream);
+    return length;
+  }
+
+  inlineStreamSkipEI(stream) {
+    const E = 0x45,
+          I = 0x49;
+    let state = 0,
+        ch;
+
+    while ((ch = stream.getByte()) !== -1) {
+      if (state === 0) {
+        state = ch === E ? 1 : 0;
+      } else if (state === 1) {
+        state = ch === I ? 2 : 0;
+      } else if (state === 2) {
+        break;
+      }
+    }
+  }
+
+  makeInlineImage(cipherTransform) {
+    const lexer = this.lexer;
+    const stream = lexer.stream;
+    const dict = new _primitives.Dict(this.xref);
+    let dictLength;
+
+    while (!(0, _primitives.isCmd)(this.buf1, "ID") && this.buf1 !== _primitives.EOF) {
+      if (!(0, _primitives.isName)(this.buf1)) {
+        throw new _util.FormatError("Dictionary key must be a name object");
+      }
+
+      const key = this.buf1.name;
+      this.shift();
+
+      if (this.buf1 === _primitives.EOF) {
+        break;
+      }
+
+      dict.set(key, this.getObj(cipherTransform));
+    }
+
+    if (lexer.beginInlineImagePos !== -1) {
+      dictLength = stream.pos - lexer.beginInlineImagePos;
+    }
+
+    const filter = dict.get("Filter", "F");
+    let filterName;
+
+    if ((0, _primitives.isName)(filter)) {
+      filterName = filter.name;
+    } else if (Array.isArray(filter)) {
+      const filterZero = this.xref.fetchIfRef(filter[0]);
+
+      if ((0, _primitives.isName)(filterZero)) {
+        filterName = filterZero.name;
+      }
+    }
+
+    const startPos = stream.pos;
+    let length;
+
+    if (filterName === "DCTDecode" || filterName === "DCT") {
+      length = this.findDCTDecodeInlineStreamEnd(stream);
+    } else if (filterName === "ASCII85Decode" || filterName === "A85") {
+      length = this.findASCII85DecodeInlineStreamEnd(stream);
+    } else if (filterName === "ASCIIHexDecode" || filterName === "AHx") {
+      length = this.findASCIIHexDecodeInlineStreamEnd(stream);
+    } else {
+      length = this.findDefaultInlineStreamEnd(stream);
+    }
+
+    let imageStream = stream.makeSubStream(startPos, length, dict);
+    let cacheKey;
+
+    if (length < MAX_LENGTH_TO_CACHE && dictLength < MAX_ADLER32_LENGTH) {
+      const imageBytes = imageStream.getBytes();
+      imageStream.reset();
+      const initialStreamPos = stream.pos;
+      stream.pos = lexer.beginInlineImagePos;
+      const dictBytes = stream.getBytes(dictLength);
+      stream.pos = initialStreamPos;
+      cacheKey = computeAdler32(imageBytes) + "_" + computeAdler32(dictBytes);
+      const cacheEntry = this.imageCache[cacheKey];
+
+      if (cacheEntry !== undefined) {
+        this.buf2 = _primitives.Cmd.get("EI");
+        this.shift();
+        cacheEntry.reset();
+        return cacheEntry;
+      }
+    }
+
+    if (cipherTransform) {
+      imageStream = cipherTransform.createStream(imageStream, length);
+    }
+
+    imageStream = this.filter(imageStream, dict, length);
+    imageStream.dict = dict;
+
+    if (cacheKey !== undefined) {
+      imageStream.cacheKey = `inline_${length}_${cacheKey}`;
+      this.imageCache[cacheKey] = imageStream;
+    }
+
+    this.buf2 = _primitives.Cmd.get("EI");
+    this.shift();
+    return imageStream;
+  }
+
+  _findStreamLength(startPos, signature) {
+    const {
+      stream
+    } = this.lexer;
+    stream.pos = startPos;
+    const SCAN_BLOCK_LENGTH = 2048;
+    const signatureLength = signature.length;
+
+    while (stream.pos < stream.end) {
+      const scanBytes = stream.peekBytes(SCAN_BLOCK_LENGTH);
+      const scanLength = scanBytes.length - signatureLength;
+
+      if (scanLength <= 0) {
+        break;
+      }
+
+      let pos = 0;
+
+      while (pos < scanLength) {
+        let j = 0;
+
+        while (j < signatureLength && scanBytes[pos + j] === signature[j]) {
+          j++;
+        }
+
+        if (j >= signatureLength) {
+          stream.pos += pos;
+          return stream.pos - startPos;
+        }
+
+        pos++;
+      }
+
+      stream.pos += scanLength;
+    }
+
+    return -1;
+  }
+
+  makeStream(dict, cipherTransform) {
+    const lexer = this.lexer;
+    let stream = lexer.stream;
+    lexer.skipToNextLine();
+    const startPos = stream.pos - 1;
+    let length = dict.get("Length");
+
+    if (!Number.isInteger(length)) {
+      (0, _util.info)(`Bad length "${length}" in stream`);
+      length = 0;
+    }
+
+    stream.pos = startPos + length;
+    lexer.nextChar();
+
+    if (this.tryShift() && (0, _primitives.isCmd)(this.buf2, "endstream")) {
+      this.shift();
+    } else {
+      const ENDSTREAM_SIGNATURE = new Uint8Array([0x65, 0x6e, 0x64, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d]);
+
+      let actualLength = this._findStreamLength(startPos, ENDSTREAM_SIGNATURE);
+
+      if (actualLength < 0) {
+        const MAX_TRUNCATION = 1;
+
+        for (let i = 1; i <= MAX_TRUNCATION; i++) {
+          const end = ENDSTREAM_SIGNATURE.length - i;
+          const TRUNCATED_SIGNATURE = ENDSTREAM_SIGNATURE.slice(0, end);
+
+          const maybeLength = this._findStreamLength(startPos, TRUNCATED_SIGNATURE);
+
+          if (maybeLength >= 0) {
+            const lastByte = stream.peekBytes(end + 1)[end];
+
+            if (!(0, _core_utils.isWhiteSpace)(lastByte)) {
+              break;
+            }
+
+            (0, _util.info)(`Found "${(0, _util.bytesToString)(TRUNCATED_SIGNATURE)}" when ` + "searching 
for endstream command.");
+            actualLength = maybeLength;
+            break;
+          }
+        }
+
+        if (actualLength < 0) {
+          throw new _util.FormatError("Missing endstream command.");
+        }
+      }
+
+      length = actualLength;
+      lexer.nextChar();
+      this.shift();
+      this.shift();
+    }
+
+    this.shift();
+    stream = stream.makeSubStream(startPos, length, dict);
+
+    if (cipherTransform) {
+      stream = cipherTransform.createStream(stream, length);
+    }
+
+    stream = this.filter(stream, dict, length);
+    stream.dict = dict;
+    return stream;
+  }
+
+  filter(stream, dict, length) {
+    let filter = dict.get("Filter", "F");
+    let params = dict.get("DecodeParms", "DP");
+
+    if ((0, _primitives.isName)(filter)) {
+      if (Array.isArray(params)) {
+        (0, _util.warn)("/DecodeParms should not contain an Array, " + "when /Filter contains a Name.");
+      }
+
+      return this.makeFilter(stream, filter.name, length, params);
+    }
+
+    let maybeLength = length;
+
+    if (Array.isArray(filter)) {
+      const filterArray = filter;
+      const paramsArray = params;
+
+      for (let i = 0, ii = filterArray.length; i < ii; ++i) {
+        filter = this.xref.fetchIfRef(filterArray[i]);
+
+        if (!(0, _primitives.isName)(filter)) {
+          throw new _util.FormatError(`Bad filter name "${filter}"`);
+        }
+
+        params = null;
+
+        if (Array.isArray(paramsArray) && i in paramsArray) {
+          params = this.xref.fetchIfRef(paramsArray[i]);
+        }
+
+        stream = this.makeFilter(stream, filter.name, maybeLength, params);
+        maybeLength = null;
+      }
+    }
+
+    return stream;
+  }
+
+  makeFilter(stream, name, maybeLength, params) {
+    if (maybeLength === 0) {
+      (0, _util.warn)(`Empty "${name}" stream.`);
+      return new _stream.NullStream();
+    }
+
+    try {
+      const xrefStreamStats = this.xref.stats.streamTypes;
+
+      if (name === "FlateDecode" || name === "Fl") {
+        xrefStreamStats[_util.StreamType.FLATE] = true;
+
+        if (params) {
+          return new _predictor_stream.PredictorStream(new _flate_stream.FlateStream(stream, maybeLength), 
maybeLength, params);
+        }
+
+        return new _flate_stream.FlateStream(stream, maybeLength);
+      }
+
+      if (name === "LZWDecode" || name === "LZW") {
+        xrefStreamStats[_util.StreamType.LZW] = true;
+        let earlyChange = 1;
+
+        if (params) {
+          if (params.has("EarlyChange")) {
+            earlyChange = params.get("EarlyChange");
+          }
+
+          return new _predictor_stream.PredictorStream(new _lzw_stream.LZWStream(stream, maybeLength, 
earlyChange), maybeLength, params);
+        }
+
+        return new _lzw_stream.LZWStream(stream, maybeLength, earlyChange);
+      }
+
+      if (name === "DCTDecode" || name === "DCT") {
+        xrefStreamStats[_util.StreamType.DCT] = true;
+        return new _jpeg_stream.JpegStream(stream, maybeLength, params);
+      }
+
+      if (name === "JPXDecode" || name === "JPX") {
+        xrefStreamStats[_util.StreamType.JPX] = true;
+        return new _jpx_stream.JpxStream(stream, maybeLength, params);
+      }
+
+      if (name === "ASCII85Decode" || name === "A85") {
+        xrefStreamStats[_util.StreamType.A85] = true;
+        return new _ascii_85_stream.Ascii85Stream(stream, maybeLength);
+      }
+
+      if (name === "ASCIIHexDecode" || name === "AHx") {
+        xrefStreamStats[_util.StreamType.AHX] = true;
+        return new _ascii_hex_stream.AsciiHexStream(stream, maybeLength);
+      }
+
+      if (name === "CCITTFaxDecode" || name === "CCF") {
+        xrefStreamStats[_util.StreamType.CCF] = true;
+        return new _ccitt_stream.CCITTFaxStream(stream, maybeLength, params);
+      }
+
+      if (name === "RunLengthDecode" || name === "RL") {
+        xrefStreamStats[_util.StreamType.RLX] = true;
+        return new _run_length_stream.RunLengthStream(stream, maybeLength);
+      }
+
+      if (name === "JBIG2Decode") {
+        xrefStreamStats[_util.StreamType.JBIG] = true;
+        return new _jbig2_stream.Jbig2Stream(stream, maybeLength, params);
+      }
+
+      (0, _util.warn)(`Filter "${name}" is not supported.`);
+      return stream;
+    } catch (ex) {
+      if (ex instanceof _core_utils.MissingDataException) {
+        throw ex;
+      }
+
+      (0, _util.warn)(`Invalid stream: "${ex}"`);
+      return new _stream.NullStream();
+    }
+  }
+
+}
+
+exports.Parser = Parser;
+const specialChars = [1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 1, 0, 0, 0, 0, 2, 0, 0, 2, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
+
+function toHexDigit(ch) {
+  if (ch >= 0x30 && ch <= 0x39) {
+    return ch & 0x0f;
+  }
+
+  if (ch >= 0x41 && ch <= 0x46 || ch >= 0x61 && ch <= 0x66) {
+    return (ch & 0x0f) + 9;
+  }
+
+  return -1;
+}
+
+class Lexer {
+  constructor(stream, knownCommands = null) {
+    this.stream = stream;
+    this.nextChar();
+    this.strBuf = [];
+    this.knownCommands = knownCommands;
+    this._hexStringNumWarn = 0;
+    this.beginInlineImagePos = -1;
+  }
+
+  nextChar() {
+    return this.currentChar = this.stream.getByte();
+  }
+
+  peekChar() {
+    return this.stream.peekByte();
+  }
+
+  getNumber() {
+    let ch = this.currentChar;
+    let eNotation = false;
+    let divideBy = 0;
+    let sign = 0;
+
+    if (ch === 0x2d) {
+      sign = -1;
+      ch = this.nextChar();
+
+      if (ch === 0x2d) {
+        ch = this.nextChar();
+      }
+    } else if (ch === 0x2b) {
+      sign = 1;
+      ch = this.nextChar();
+    }
+
+    if (ch === 0x0a || ch === 0x0d) {
+      do {
+        ch = this.nextChar();
+      } while (ch === 0x0a || ch === 0x0d);
+    }
+
+    if (ch === 0x2e) {
+      divideBy = 10;
+      ch = this.nextChar();
+    }
+
+    if (ch < 0x30 || ch > 0x39) {
+      if (divideBy === 10 && sign === 0 && ((0, _core_utils.isWhiteSpace)(ch) || ch === -1)) {
+        (0, _util.warn)("Lexer.getNumber - treating a single decimal point as zero.");
+        return 0;
+      }
+
+      throw new _util.FormatError(`Invalid number: ${String.fromCharCode(ch)} (charCode ${ch})`);
+    }
+
+    sign = sign || 1;
+    let baseValue = ch - 0x30;
+    let powerValue = 0;
+    let powerValueSign = 1;
+
+    while ((ch = this.nextChar()) >= 0) {
+      if (ch >= 0x30 && ch <= 0x39) {
+        const currentDigit = ch - 0x30;
+
+        if (eNotation) {
+          powerValue = powerValue * 10 + currentDigit;
+        } else {
+          if (divideBy !== 0) {
+            divideBy *= 10;
+          }
+
+          baseValue = baseValue * 10 + currentDigit;
+        }
+      } else if (ch === 0x2e) {
+        if (divideBy === 0) {
+          divideBy = 1;
+        } else {
+          break;
+        }
+      } else if (ch === 0x2d) {
+        (0, _util.warn)("Badly formatted number: minus sign in the middle");
+      } else if (ch === 0x45 || ch === 0x65) {
+        ch = this.peekChar();
+
+        if (ch === 0x2b || ch === 0x2d) {
+          powerValueSign = ch === 0x2d ? -1 : 1;
+          this.nextChar();
+        } else if (ch < 0x30 || ch > 0x39) {
+          break;
+        }
+
+        eNotation = true;
+      } else {
+        break;
+      }
+    }
+
+    if (divideBy !== 0) {
+      baseValue /= divideBy;
+    }
+
+    if (eNotation) {
+      baseValue *= 10 ** (powerValueSign * powerValue);
+    }
+
+    return sign * baseValue;
+  }
+
+  getString() {
+    let numParen = 1;
+    let done = false;
+    const strBuf = this.strBuf;
+    strBuf.length = 0;
+    let ch = this.nextChar();
+
+    while (true) {
+      let charBuffered = false;
+
+      switch (ch | 0) {
+        case -1:
+          (0, _util.warn)("Unterminated string");
+          done = true;
+          break;
+
+        case 0x28:
+          ++numParen;
+          strBuf.push("(");
+          break;
+
+        case 0x29:
+          if (--numParen === 0) {
+            this.nextChar();
+            done = true;
+          } else {
+            strBuf.push(")");
+          }
+
+          break;
+
+        case 0x5c:
+          ch = this.nextChar();
+
+          switch (ch) {
+            case -1:
+              (0, _util.warn)("Unterminated string");
+              done = true;
+              break;
+
+            case 0x6e:
+              strBuf.push("\n");
+              break;
+
+            case 0x72:
+              strBuf.push("\r");
+              break;
+
+            case 0x74:
+              strBuf.push("\t");
+              break;
+
+            case 0x62:
+              strBuf.push("\b");
+              break;
+
+            case 0x66:
+              strBuf.push("\f");
+              break;
+
+            case 0x5c:
+            case 0x28:
+            case 0x29:
+              strBuf.push(String.fromCharCode(ch));
+              break;
+
+            case 0x30:
+            case 0x31:
+            case 0x32:
+            case 0x33:
+            case 0x34:
+            case 0x35:
+            case 0x36:
+            case 0x37:
+              let x = ch & 0x0f;
+              ch = this.nextChar();
+              charBuffered = true;
+
+              if (ch >= 0x30 && ch <= 0x37) {
+                x = (x << 3) + (ch & 0x0f);
+                ch = this.nextChar();
+
+                if (ch >= 0x30 && ch <= 0x37) {
+                  charBuffered = false;
+                  x = (x << 3) + (ch & 0x0f);
+                }
+              }
+
+              strBuf.push(String.fromCharCode(x));
+              break;
+
+            case 0x0d:
+              if (this.peekChar() === 0x0a) {
+                this.nextChar();
+              }
+
+              break;
+
+            case 0x0a:
+              break;
+
+            default:
+              strBuf.push(String.fromCharCode(ch));
+              break;
+          }
+
+          break;
+
+        default:
+          strBuf.push(String.fromCharCode(ch));
+          break;
+      }
+
+      if (done) {
+        break;
+      }
+
+      if (!charBuffered) {
+        ch = this.nextChar();
+      }
+    }
+
+    return strBuf.join("");
+  }
+
+  getName() {
+    let ch, previousCh;
+    const strBuf = this.strBuf;
+    strBuf.length = 0;
+
+    while ((ch = this.nextChar()) >= 0 && !specialChars[ch]) {
+      if (ch === 0x23) {
+        ch = this.nextChar();
+
+        if (specialChars[ch]) {
+          (0, _util.warn)("Lexer_getName: " + "NUMBER SIGN (#) should be followed by a hexadecimal number.");
+          strBuf.push("#");
+          break;
+        }
+
+        const x = toHexDigit(ch);
+
+        if (x !== -1) {
+          previousCh = ch;
+          ch = this.nextChar();
+          const x2 = toHexDigit(ch);
+
+          if (x2 === -1) {
+            (0, _util.warn)(`Lexer_getName: Illegal digit (${String.fromCharCode(ch)}) ` + "in hexadecimal 
number.");
+            strBuf.push("#", String.fromCharCode(previousCh));
+
+            if (specialChars[ch]) {
+              break;
+            }
+
+            strBuf.push(String.fromCharCode(ch));
+            continue;
+          }
+
+          strBuf.push(String.fromCharCode(x << 4 | x2));
+        } else {
+          strBuf.push("#", String.fromCharCode(ch));
+        }
+      } else {
+        strBuf.push(String.fromCharCode(ch));
+      }
+    }
+
+    if (strBuf.length > 127) {
+      (0, _util.warn)(`Name token is longer than allowed by the spec: ${strBuf.length}`);
+    } else if (strBuf.length === 0) {
+      (0, _util.warn)("Name token is empty.");
+    }
+
+    return _primitives.Name.get(strBuf.join(""));
+  }
+
+  _hexStringWarn(ch) {
+    const MAX_HEX_STRING_NUM_WARN = 5;
+
+    if (this._hexStringNumWarn++ === MAX_HEX_STRING_NUM_WARN) {
+      (0, _util.warn)("getHexString - ignoring additional invalid characters.");
+      return;
+    }
+
+    if (this._hexStringNumWarn > MAX_HEX_STRING_NUM_WARN) {
+      return;
+    }
+
+    (0, _util.warn)(`getHexString - ignoring invalid character: ${ch}`);
+  }
+
+  getHexString() {
+    const strBuf = this.strBuf;
+    strBuf.length = 0;
+    let ch = this.currentChar;
+    let isFirstHex = true;
+    let firstDigit, secondDigit;
+    this._hexStringNumWarn = 0;
+
+    while (true) {
+      if (ch < 0) {
+        (0, _util.warn)("Unterminated hex string");
+        break;
+      } else if (ch === 0x3e) {
+        this.nextChar();
+        break;
+      } else if (specialChars[ch] === 1) {
+        ch = this.nextChar();
+        continue;
+      } else {
+        if (isFirstHex) {
+          firstDigit = toHexDigit(ch);
+
+          if (firstDigit === -1) {
+            this._hexStringWarn(ch);
+
+            ch = this.nextChar();
+            continue;
+          }
+        } else {
+          secondDigit = toHexDigit(ch);
+
+          if (secondDigit === -1) {
+            this._hexStringWarn(ch);
+
+            ch = this.nextChar();
+            continue;
+          }
+
+          strBuf.push(String.fromCharCode(firstDigit << 4 | secondDigit));
+        }
+
+        isFirstHex = !isFirstHex;
+        ch = this.nextChar();
+      }
+    }
+
+    return strBuf.join("");
+  }
+
+  getObj() {
+    let comment = false;
+    let ch = this.currentChar;
+
+    while (true) {
+      if (ch < 0) {
+        return _primitives.EOF;
+      }
+
+      if (comment) {
+        if (ch === 0x0a || ch === 0x0d) {
+          comment = false;
+        }
+      } else if (ch === 0x25) {
+        comment = true;
+      } else if (specialChars[ch] !== 1) {
+        break;
+      }
+
+      ch = this.nextChar();
+    }
+
+    switch (ch | 0) {
+      case 0x30:
+      case 0x31:
+      case 0x32:
+      case 0x33:
+      case 0x34:
+      case 0x35:
+      case 0x36:
+      case 0x37:
+      case 0x38:
+      case 0x39:
+      case 0x2b:
+      case 0x2d:
+      case 0x2e:
+        return this.getNumber();
+
+      case 0x28:
+        return this.getString();
+
+      case 0x2f:
+        return this.getName();
+
+      case 0x5b:
+        this.nextChar();
+        return _primitives.Cmd.get("[");
+
+      case 0x5d:
+        this.nextChar();
+        return _primitives.Cmd.get("]");
+
+      case 0x3c:
+        ch = this.nextChar();
+
+        if (ch === 0x3c) {
+          this.nextChar();
+          return _primitives.Cmd.get("<<");
+        }
+
+        return this.getHexString();
+
+      case 0x3e:
+        ch = this.nextChar();
+
+        if (ch === 0x3e) {
+          this.nextChar();
+          return _primitives.Cmd.get(">>");
+        }
+
+        return _primitives.Cmd.get(">");
+
+      case 0x7b:
+        this.nextChar();
+        return _primitives.Cmd.get("{");
+
+      case 0x7d:
+        this.nextChar();
+        return _primitives.Cmd.get("}");
+
+      case 0x29:
+        this.nextChar();
+        throw new _util.FormatError(`Illegal character: ${ch}`);
+    }
+
+    let str = String.fromCharCode(ch);
+
+    if (ch < 0x20 || ch > 0x7f) {
+      const nextCh = this.peekChar();
+
+      if (nextCh >= 0x20 && nextCh <= 0x7f) {
+        this.nextChar();
+        return _primitives.Cmd.get(str);
+      }
+    }
+
+    const knownCommands = this.knownCommands;
+    let knownCommandFound = knownCommands && knownCommands[str] !== undefined;
+
+    while ((ch = this.nextChar()) >= 0 && !specialChars[ch]) {
+      const possibleCommand = str + String.fromCharCode(ch);
+
+      if (knownCommandFound && knownCommands[possibleCommand] === undefined) {
+        break;
+      }
+
+      if (str.length === 128) {
+        throw new _util.FormatError(`Command token too long: ${str.length}`);
+      }
+
+      str = possibleCommand;
+      knownCommandFound = knownCommands && knownCommands[str] !== undefined;
+    }
+
+    if (str === "true") {
+      return true;
+    }
+
+    if (str === "false") {
+      return false;
+    }
+
+    if (str === "null") {
+      return null;
+    }
+
+    if (str === "BI") {
+      this.beginInlineImagePos = this.stream.pos;
+    }
+
+    return _primitives.Cmd.get(str);
+  }
+
+  peekObj() {
+    const streamPos = this.stream.pos,
+          currentChar = this.currentChar,
+          beginInlineImagePos = this.beginInlineImagePos;
+    let nextObj;
+
+    try {
+      nextObj = this.getObj();
+    } catch (ex) {
+      if (ex instanceof _core_utils.MissingDataException) {
+        throw ex;
+      }
+
+      (0, _util.warn)(`peekObj: ${ex}`);
+    }
+
+    this.stream.pos = streamPos;
+    this.currentChar = currentChar;
+    this.beginInlineImagePos = beginInlineImagePos;
+    return nextObj;
+  }
+
+  skipToNextLine() {
+    let ch = this.currentChar;
+
+    while (ch >= 0) {
+      if (ch === 0x0d) {
+        ch = this.nextChar();
+
+        if (ch === 0x0a) {
+          this.nextChar();
+        }
+
+        break;
+      } else if (ch === 0x0a) {
+        this.nextChar();
+        break;
+      }
+
+      ch = this.nextChar();
+    }
+  }
+
+}
+
+exports.Lexer = Lexer;
+
+class Linearization {
+  static create(stream) {
+    function getInt(linDict, name, allowZeroValue = false) {
+      const obj = linDict.get(name);
+
+      if (Number.isInteger(obj) && (allowZeroValue ? obj >= 0 : obj > 0)) {
+        return obj;
+      }
+
+      throw new Error(`The "${name}" parameter in the linearization ` + "dictionary is invalid.");
+    }
+
+    function getHints(linDict) {
+      const hints = linDict.get("H");
+      let hintsLength;
+
+      if (Array.isArray(hints) && ((hintsLength = hints.length) === 2 || hintsLength === 4)) {
+        for (let index = 0; index < hintsLength; index++) {
+          const hint = hints[index];
+
+          if (!(Number.isInteger(hint) && hint > 0)) {
+            throw new Error(`Hint (${index}) in the linearization dictionary is invalid.`);
+          }
+        }
+
+        return hints;
+      }
+
+      throw new Error("Hint array in the linearization dictionary is invalid.");
+    }
+
+    const parser = new Parser({
+      lexer: new Lexer(stream),
+      xref: null
+    });
+    const obj1 = parser.getObj();
+    const obj2 = parser.getObj();
+    const obj3 = parser.getObj();
+    const linDict = parser.getObj();
+    let obj, length;
+
+    if (!(Number.isInteger(obj1) && Number.isInteger(obj2) && (0, _primitives.isCmd)(obj3, "obj") && (0, 
_primitives.isDict)(linDict) && (0, _util.isNum)(obj = linDict.get("Linearized")) && obj > 0)) {
+      return null;
+    } else if ((length = getInt(linDict, "L")) !== stream.length) {
+      throw new Error('The "L" parameter in the linearization dictionary ' + "does not equal the stream 
length.");
+    }
+
+    return {
+      length,
+      hints: getHints(linDict),
+      objectNumberFirst: getInt(linDict, "O"),
+      endFirst: getInt(linDict, "E"),
+      numPages: getInt(linDict, "N"),
+      mainXRefEntriesOffset: getInt(linDict, "T"),
+      pageFirst: linDict.has("P") ? getInt(linDict, "P", true) : 0
+    };
+  }
+
+}
+
+exports.Linearization = Linearization;
+
+/***/ }),
+/* 28 */
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
+
+
+
+Object.defineProperty(exports, "__esModule", ({
+  value: true
+}));
+exports.Ascii85Stream = void 0;
+
+var _decode_stream = __w_pdfjs_require__(29);
+
+var _core_utils = __w_pdfjs_require__(9);
+
+class Ascii85Stream extends _decode_stream.DecodeStream {
+  constructor(str, maybeLength) {
+    if (maybeLength) {
+      maybeLength *= 0.8;
+    }
+
+    super(maybeLength);
+    this.str = str;
+    this.dict = str.dict;
+    this.input = new Uint8Array(5);
+  }
+
+  readBlock() {
+    const TILDA_CHAR = 0x7e;
+    const Z_LOWER_CHAR = 0x7a;
+    const EOF = -1;
+    const str = this.str;
+    let c = str.getByte();
+
+    while ((0, _core_utils.isWhiteSpace)(c)) {
+      c = str.getByte();
+    }
+
+    if (c === EOF || c === TILDA_CHAR) {
+      this.eof = true;
+      return;
+    }
+
+    const bufferLength = this.bufferLength;
+    let buffer, i;
+
+    if (c === Z_LOWER_CHAR) {
+      buffer = this.ensureBuffer(bufferLength + 4);
+
+      for (i = 0; i < 4; ++i) {
+        buffer[bufferLength + i] = 0;
+      }
+
+      this.bufferLength += 4;
+    } else {
+      const input = this.input;
+      input[0] = c;
+
+      for (i = 1; i < 5; ++i) {
+        c = str.getByte();
+
+        while ((0, _core_utils.isWhiteSpace)(c)) {
+          c = str.getByte();
+        }
+
+        input[i] = c;
+
+        if (c === EOF || c === TILDA_CHAR) {
+          break;
+        }
+      }
+
+      buffer = this.ensureBuffer(bufferLength + i - 1);
+      this.bufferLength += i - 1;
+
+      if (i < 5) {
+        for (; i < 5; ++i) {
+          input[i] = 0x21 + 84;
+        }
+
+        this.eof = true;
+      }
+
+      let t = 0;
+
+      for (i = 0; i < 5; ++i) {
+        t = t * 85 + (input[i] - 0x21);
+      }
+
+      for (i = 3; i >= 0; --i) {
+        buffer[bufferLength + i] = t & 0xff;
+        t >>= 8;
+      }
+    }
+  }
+
+}
+
+exports.Ascii85Stream = Ascii85Stream;
+
+/***/ }),
+/* 29 */
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
+
+
+
+Object.defineProperty(exports, "__esModule", ({
+  value: true
+}));
+exports.StreamsSequenceStream = exports.DecodeStream = void 0;
+
+var _base_stream = __w_pdfjs_require__(6);
+
+var _stream = __w_pdfjs_require__(10);
+
+const emptyBuffer = new Uint8Array(0);
+
+class DecodeStream extends _base_stream.BaseStream {
+  constructor(maybeMinBufferLength) {
+    super();
+    this._rawMinBufferLength = maybeMinBufferLength || 0;
+    this.pos = 0;
+    this.bufferLength = 0;
+    this.eof = false;
+    this.buffer = emptyBuffer;
+    this.minBufferLength = 512;
+
+    if (maybeMinBufferLength) {
+      while (this.minBufferLength < maybeMinBufferLength) {
+        this.minBufferLength *= 2;
+      }
+    }
+  }
+
+  get isEmpty() {
+    while (!this.eof && this.bufferLength === 0) {
+      this.readBlock();
+    }
+
+    return this.bufferLength === 0;
+  }
+
+  ensureBuffer(requested) {
+    const buffer = this.buffer;
+
+    if (requested <= buffer.byteLength) {
+      return buffer;
+    }
+
+    let size = this.minBufferLength;
+
+    while (size < requested) {
+      size *= 2;
+    }
+
+    const buffer2 = new Uint8Array(size);
+    buffer2.set(buffer);
+    return this.buffer = buffer2;
+  }
+
+  getByte() {
+    const pos = this.pos;
+
+    while (this.bufferLength <= pos) {
+      if (this.eof) {
+        return -1;
+      }
+
+      this.readBlock();
+    }
+
+    return this.buffer[this.pos++];
+  }
+
+  getBytes(length, forceClamped = false) {
+    const pos = this.pos;
+    let end;
+
+    if (length) {
+      this.ensureBuffer(pos + length);
+      end = pos + length;
+
+      while (!this.eof && this.bufferLength < end) {
+        this.readBlock();
+      }
+
+      const bufEnd = this.bufferLength;
+
+      if (end > bufEnd) {
+        end = bufEnd;
+      }
+    } else {
+      while (!this.eof) {
+        this.readBlock();
+      }
+
+      end = this.bufferLength;
+    }
+
+    this.pos = end;
+    const subarray = this.buffer.subarray(pos, end);
+    return forceClamped && !(subarray instanceof Uint8ClampedArray) ? new Uint8ClampedArray(subarray) : 
subarray;
+  }
+
+  reset() {
+    this.pos = 0;
+  }
+
+  makeSubStream(start, length, dict = null) {
+    if (length === undefined) {
+      while (!this.eof) {
+        this.readBlock();
+      }
+    } else {
+      const end = start + length;
+
+      while (this.bufferLength <= end && !this.eof) {
+        this.readBlock();
+      }
+    }
+
+    return new _stream.Stream(this.buffer, start, length, dict);
+  }
+
+  getBaseStreams() {
+    return this.str ? this.str.getBaseStreams() : null;
+  }
+
+}
+
+exports.DecodeStream = DecodeStream;
+
+class StreamsSequenceStream extends DecodeStream {
+  constructor(streams, onError = null) {
+    let maybeLength = 0;
+
+    for (const stream of streams) {
+      maybeLength += stream instanceof DecodeStream ? stream._rawMinBufferLength : stream.length;
+    }
+
+    super(maybeLength);
+    this.streams = streams;
+    this._onError = onError;
+  }
+
+  readBlock() {
+    const streams = this.streams;
+
+    if (streams.length === 0) {
+      this.eof = true;
+      return;
+    }
+
+    const stream = streams.shift();
+    let chunk;
+
+    try {
+      chunk = stream.getBytes();
+    } catch (reason) {
+      if (this._onError) {
+        this._onError(reason, stream.dict && stream.dict.objId);
+
+        return;
+      }
+
+      throw reason;
+    }
+
+    const bufferLength = this.bufferLength;
+    const newLength = bufferLength + chunk.length;
+    const buffer = this.ensureBuffer(newLength);
+    buffer.set(chunk, bufferLength);
+    this.bufferLength = newLength;
+  }
+
+  getBaseStreams() {
+    const baseStreamsBuf = [];
+
+    for (const stream of this.streams) {
+      const baseStreams = stream.getBaseStreams();
+
+      if (baseStreams) {
+        baseStreamsBuf.push(...baseStreams);
+      }
+    }
+
+    return baseStreamsBuf.length > 0 ? baseStreamsBuf : null;
+  }
+
+}
+
+exports.StreamsSequenceStream = StreamsSequenceStream;
+
+/***/ }),
+/* 30 */
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
+
+
+
+Object.defineProperty(exports, "__esModule", ({
+  value: true
+}));
+exports.AsciiHexStream = void 0;
+
+var _decode_stream = __w_pdfjs_require__(29);
+
+class AsciiHexStream extends _decode_stream.DecodeStream {
+  constructor(str, maybeLength) {
+    if (maybeLength) {
+      maybeLength *= 0.5;
+    }
+
+    super(maybeLength);
+    this.str = str;
+    this.dict = str.dict;
+    this.firstDigit = -1;
+  }
+
+  readBlock() {
+    const UPSTREAM_BLOCK_SIZE = 8000;
+    const bytes = this.str.getBytes(UPSTREAM_BLOCK_SIZE);
+
+    if (!bytes.length) {
+      this.eof = true;
+      return;
+    }
+
+    const maxDecodeLength = bytes.length + 1 >> 1;
+    const buffer = this.ensureBuffer(this.bufferLength + maxDecodeLength);
+    let bufferLength = this.bufferLength;
+    let firstDigit = this.firstDigit;
+
+    for (const ch of bytes) {
+      let digit;
+
+      if (ch >= 0x30 && ch <= 0x39) {
+        digit = ch & 0x0f;
+      } else if (ch >= 0x41 && ch <= 0x46 || ch >= 0x61 && ch <= 0x66) {
+        digit = (ch & 0x0f) + 9;
+      } else if (ch === 0x3e) {
+        this.eof = true;
+        break;
+      } else {
+        continue;
+      }
+
+      if (firstDigit < 0) {
+        firstDigit = digit;
+      } else {
+        buffer[bufferLength++] = firstDigit << 4 | digit;
+        firstDigit = -1;
+      }
+    }
+
+    if (firstDigit >= 0 && this.eof) {
+      buffer[bufferLength++] = firstDigit << 4;
+      firstDigit = -1;
+    }
+
+    this.firstDigit = firstDigit;
+    this.bufferLength = bufferLength;
+  }
+
+}
+
+exports.AsciiHexStream = AsciiHexStream;
+
+/***/ }),
+/* 31 */
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
+
+
+
+Object.defineProperty(exports, "__esModule", ({
+  value: true
+}));
+exports.CCITTFaxStream = void 0;
+
+var _primitives = __w_pdfjs_require__(5);
+
+var _ccitt = __w_pdfjs_require__(32);
+
+var _decode_stream = __w_pdfjs_require__(29);
+
+class CCITTFaxStream extends _decode_stream.DecodeStream {
+  constructor(str, maybeLength, params) {
+    super(maybeLength);
+    this.str = str;
+    this.dict = str.dict;
+
+    if (!(0, _primitives.isDict)(params)) {
+      params = _primitives.Dict.empty;
+    }
+
+    const source = {
+      next() {
+        return str.getByte();
+      }
+
+    };
+    this.ccittFaxDecoder = new _ccitt.CCITTFaxDecoder(source, {
+      K: params.get("K"),
+      EndOfLine: params.get("EndOfLine"),
+      EncodedByteAlign: params.get("EncodedByteAlign"),
+      Columns: params.get("Columns"),
+      Rows: params.get("Rows"),
+      EndOfBlock: params.get("EndOfBlock"),
+      BlackIs1: params.get("BlackIs1")
+    });
+  }
+
+  readBlock() {
+    while (!this.eof) {
+      const c = this.ccittFaxDecoder.readNextChar();
+
+      if (c === -1) {
+        this.eof = true;
+        return;
+      }
+
+      this.ensureBuffer(this.bufferLength + 1);
+      this.buffer[this.bufferLength++] = c;
+    }
+  }
+
+}
+
+exports.CCITTFaxStream = CCITTFaxStream;
+
+/***/ }),
+/* 32 */
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
+
+
+
+Object.defineProperty(exports, "__esModule", ({
+  value: true
+}));
+exports.CCITTFaxDecoder = void 0;
+
+var _util = __w_pdfjs_require__(2);
+
+const ccittEOL = -2;
+const ccittEOF = -1;
+const twoDimPass = 0;
+const twoDimHoriz = 1;
+const twoDimVert0 = 2;
+const twoDimVertR1 = 3;
+const twoDimVertL1 = 4;
+const twoDimVertR2 = 5;
+const twoDimVertL2 = 6;
+const twoDimVertR3 = 7;
+const twoDimVertL3 = 8;
+const twoDimTable = [[-1, -1], [-1, -1], [7, twoDimVertL3], [7, twoDimVertR3], [6, twoDimVertL2], [6, 
twoDimVertL2], [6, twoDimVertR2], [6, twoDimVertR2], [4, twoDimPass], [4, twoDimPass], [4, twoDimPass], [4, 
twoDimPass], [4, twoDimPass], [4, twoDimPass], [4, twoDimPass], [4, twoDimPass], [3, twoDimHoriz], [3, 
twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, 
twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, 
twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], 
[3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, 
twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], 
[3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, 
twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], 
 [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, 
twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [1, twoDimVert0], 
[1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], 
[1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], 
[1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], 
[1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], 
[1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], 
[1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], 
[1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], 
[1, twoDimVert0], [1, twoDimVert0
 ], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, 
twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, 
twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, 
twoDimVert0], [1, twoDimVert0]];
+const whiteTable1 = [[-1, -1], [12, ccittEOL], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], 
[-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [11, 1792], [11, 1792], [12, 
1984], [12, 2048], [12, 2112], [12, 2176], [12, 2240], [12, 2304], [11, 1856], [11, 1856], [11, 1920], [11, 
1920], [12, 2368], [12, 2432], [12, 2496], [12, 2560]];
+const whiteTable2 = [[-1, -1], [-1, -1], [-1, -1], [-1, -1], [8, 29], [8, 29], [8, 30], [8, 30], [8, 45], 
[8, 45], [8, 46], [8, 46], [7, 22], [7, 22], [7, 22], [7, 22], [7, 23], [7, 23], [7, 23], [7, 23], [8, 47], 
[8, 47], [8, 48], [8, 48], [6, 13], [6, 13], [6, 13], [6, 13], [6, 13], [6, 13], [6, 13], [6, 13], [7, 20], 
[7, 20], [7, 20], [7, 20], [8, 33], [8, 33], [8, 34], [8, 34], [8, 35], [8, 35], [8, 36], [8, 36], [8, 37], 
[8, 37], [8, 38], [8, 38], [7, 19], [7, 19], [7, 19], [7, 19], [8, 31], [8, 31], [8, 32], [8, 32], [6, 1], 
[6, 1], [6, 1], [6, 1], [6, 1], [6, 1], [6, 1], [6, 1], [6, 12], [6, 12], [6, 12], [6, 12], [6, 12], [6, 12], 
[6, 12], [6, 12], [8, 53], [8, 53], [8, 54], [8, 54], [7, 26], [7, 26], [7, 26], [7, 26], [8, 39], [8, 39], 
[8, 40], [8, 40], [8, 41], [8, 41], [8, 42], [8, 42], [8, 43], [8, 43], [8, 44], [8, 44], [7, 21], [7, 21], 
[7, 21], [7, 21], [7, 28], [7, 28], [7, 28], [7, 28], [8, 61], [8, 61], [8, 62], [8, 62], [8, 63], [8, 63], 
[8, 0], [8, 0], [8, 320], 
 [8, 320], [8, 384], [8, 384], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 
10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 11], [5, 11], [5, 11], [5, 11], [5, 
11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [7, 
27], [7, 27], [7, 27], [7, 27], [8, 59], [8, 59], [8, 60], [8, 60], [9, 1472], [9, 1536], [9, 1600], [9, 
1728], [7, 18], [7, 18], [7, 18], [7, 18], [7, 24], [7, 24], [7, 24], [7, 24], [8, 49], [8, 49], [8, 50], [8, 
50], [8, 51], [8, 51], [8, 52], [8, 52], [7, 25], [7, 25], [7, 25], [7, 25], [8, 55], [8, 55], [8, 56], [8, 
56], [8, 57], [8, 57], [8, 58], [8, 58], [6, 192], [6, 192], [6, 192], [6, 192], [6, 192], [6, 192], [6, 
192], [6, 192], [6, 1664], [6, 1664], [6, 1664], [6, 1664], [6, 1664], [6, 1664], [6, 1664], [6, 1664], [8, 
448], [8, 448], [8, 512], [8, 512], [9, 704], [9, 768], [8, 640], [8, 640], [8, 576], [8, 576], [9, 832], [9, 
896], [9, 960], [9, 1024], [9
 , 1088], [9, 1152], [9, 1216], [9, 1280], [9, 1344], [9, 1408], [7, 256], [7, 256], [7, 256], [7, 256], [4, 
2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], 
[4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 
2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], 
[4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 
3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [5, 128], [5, 128], [5, 128], [5, 
128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 
128], [5, 128], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 
8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], 
[5, 9], [5, 9], [5, 9
 ], [5, 9], [5, 9], [5, 9], [5, 9], [6, 16], [6, 16], [6, 16], [6, 16], [6, 16], [6, 16], [6, 16], [6, 16], 
[6, 17], [6, 17], [6, 17], [6, 17], [6, 17], [6, 17], [6, 17], [6, 17], [4, 4], [4, 4], [4, 4], [4, 4], [4, 
4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], 
[4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 
4], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], 
[4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 
5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [6, 14], [6, 14], [6, 14], [6, 14], [6, 14], [6, 14], [6, 14], 
[6, 14], [6, 15], [6, 15], [6, 15], [6, 15], [6, 15], [6, 15], [6, 15], [6, 15], [5, 64], [5, 64], [5, 64], 
[5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], 
[5, 64], [4, 6], [4, 6], [4
 , 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 
6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], 
[4, 6], [4, 6], [4, 6], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 
7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], 
[4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7]];
+const blackTable1 = [[-1, -1], [-1, -1], [12, ccittEOL], [12, ccittEOL], [-1, -1], [-1, -1], [-1, -1], [-1, 
-1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, 
-1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, 
-1], [-1, -1], [-1, -1], [11, 1792], [11, 1792], [11, 1792], [11, 1792], [12, 1984], [12, 1984], [12, 2048], 
[12, 2048], [12, 2112], [12, 2112], [12, 2176], [12, 2176], [12, 2240], [12, 2240], [12, 2304], [12, 2304], 
[11, 1856], [11, 1856], [11, 1856], [11, 1856], [11, 1920], [11, 1920], [11, 1920], [11, 1920], [12, 2368], 
[12, 2368], [12, 2432], [12, 2432], [12, 2496], [12, 2496], [12, 2560], [12, 2560], [10, 18], [10, 18], [10, 
18], [10, 18], [10, 18], [10, 18], [10, 18], [10, 18], [12, 52], [12, 52], [13, 640], [13, 704], [13, 768], 
[13, 832], [12, 55], [12, 55], [12, 56], [12, 56], [13, 1280], [13, 1344], [13, 1408], [13, 1472], [12, 59], 
[12, 59], [12, 60]
 , [12, 60], [13, 1536], [13, 1600], [11, 24], [11, 24], [11, 24], [11, 24], [11, 25], [11, 25], [11, 25], 
[11, 25], [13, 1664], [13, 1728], [12, 320], [12, 320], [12, 384], [12, 384], [12, 448], [12, 448], [13, 
512], [13, 576], [12, 53], [12, 53], [12, 54], [12, 54], [13, 896], [13, 960], [13, 1024], [13, 1088], [13, 
1152], [13, 1216], [10, 64], [10, 64], [10, 64], [10, 64], [10, 64], [10, 64], [10, 64], [10, 64]];
+const blackTable2 = [[8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 
13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [11, 23], [11, 23], [12, 50], [12, 51], [12, 44], 
[12, 45], [12, 46], [12, 47], [12, 57], [12, 58], [12, 61], [12, 256], [10, 16], [10, 16], [10, 16], [10, 
16], [10, 17], [10, 17], [10, 17], [10, 17], [12, 48], [12, 49], [12, 62], [12, 63], [12, 30], [12, 31], [12, 
32], [12, 33], [12, 40], [12, 41], [11, 22], [11, 22], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], 
[8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [7, 10], [7, 10], 
[7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], 
[7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], 
[7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], 
[7, 11], [7, 11], [7, 11]
 , [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 
11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [9, 
15], [9, 15], [9, 15], [9, 15], [9, 15], [9, 15], [9, 15], [9, 15], [12, 128], [12, 192], [12, 26], [12, 27], 
[12, 28], [12, 29], [11, 19], [11, 19], [11, 20], [11, 20], [12, 34], [12, 35], [12, 36], [12, 37], [12, 38], 
[12, 39], [11, 21], [11, 21], [12, 42], [12, 43], [10, 0], [10, 0], [10, 0], [10, 0], [7, 12], [7, 12], [7, 
12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 
12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 
12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12]];
+const blackTable3 = [[-1, -1], [-1, -1], [-1, -1], [-1, -1], [6, 9], [6, 8], [5, 7], [5, 7], [4, 6], [4, 6], 
[4, 6], [4, 6], [4, 5], [4, 5], [4, 5], [4, 5], [3, 1], [3, 1], [3, 1], [3, 1], [3, 1], [3, 1], [3, 1], [3, 
1], [3, 4], [3, 4], [3, 4], [3, 4], [3, 4], [3, 4], [3, 4], [3, 4], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], 
[2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 2], [2, 2], [2, 
2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2]];
+
+class CCITTFaxDecoder {
+  constructor(source, options = {}) {
+    if (!source || typeof source.next !== "function") {
+      throw new Error('CCITTFaxDecoder - invalid "source" parameter.');
+    }
+
+    this.source = source;
+    this.eof = false;
+    this.encoding = options.K || 0;
+    this.eoline = options.EndOfLine || false;
+    this.byteAlign = options.EncodedByteAlign || false;
+    this.columns = options.Columns || 1728;
+    this.rows = options.Rows || 0;
+    let eoblock = options.EndOfBlock;
+
+    if (eoblock === null || eoblock === undefined) {
+      eoblock = true;
+    }
+
+    this.eoblock = eoblock;
+    this.black = options.BlackIs1 || false;
+    this.codingLine = new Uint32Array(this.columns + 1);
+    this.refLine = new Uint32Array(this.columns + 2);
+    this.codingLine[0] = this.columns;
+    this.codingPos = 0;
+    this.row = 0;
+    this.nextLine2D = this.encoding < 0;
+    this.inputBits = 0;
+    this.inputBuf = 0;
+    this.outputBits = 0;
+    this.rowsDone = false;
+    let code1;
+
+    while ((code1 = this._lookBits(12)) === 0) {
+      this._eatBits(1);
+    }
+
+    if (code1 === 1) {
+      this._eatBits(12);
+    }
+
+    if (this.encoding > 0) {
+      this.nextLine2D = !this._lookBits(1);
+
+      this._eatBits(1);
+    }
+  }
+
+  readNextChar() {
+    if (this.eof) {
+      return -1;
+    }
+
+    const refLine = this.refLine;
+    const codingLine = this.codingLine;
+    const columns = this.columns;
+    let refPos, blackPixels, bits, i;
+
+    if (this.outputBits === 0) {
+      if (this.rowsDone) {
+        this.eof = true;
+      }
+
+      if (this.eof) {
+        return -1;
+      }
+
+      this.err = false;
+      let code1, code2, code3;
+
+      if (this.nextLine2D) {
+        for (i = 0; codingLine[i] < columns; ++i) {
+          refLine[i] = codingLine[i];
+        }
+
+        refLine[i++] = columns;
+        refLine[i] = columns;
+        codingLine[0] = 0;
+        this.codingPos = 0;
+        refPos = 0;
+        blackPixels = 0;
+
+        while (codingLine[this.codingPos] < columns) {
+          code1 = this._getTwoDimCode();
+
+          switch (code1) {
+            case twoDimPass:
+              this._addPixels(refLine[refPos + 1], blackPixels);
+
+              if (refLine[refPos + 1] < columns) {
+                refPos += 2;
+              }
+
+              break;
+
+            case twoDimHoriz:
+              code1 = code2 = 0;
+
+              if (blackPixels) {
+                do {
+                  code1 += code3 = this._getBlackCode();
+                } while (code3 >= 64);
+
+                do {
+                  code2 += code3 = this._getWhiteCode();
+                } while (code3 >= 64);
+              } else {
+                do {
+                  code1 += code3 = this._getWhiteCode();
+                } while (code3 >= 64);
+
+                do {
+                  code2 += code3 = this._getBlackCode();
+                } while (code3 >= 64);
+              }
+
+              this._addPixels(codingLine[this.codingPos] + code1, blackPixels);
+
+              if (codingLine[this.codingPos] < columns) {
+                this._addPixels(codingLine[this.codingPos] + code2, blackPixels ^ 1);
+              }
+
+              while (refLine[refPos] <= codingLine[this.codingPos] && refLine[refPos] < columns) {
+                refPos += 2;
+              }
+
+              break;
+
+            case twoDimVertR3:
+              this._addPixels(refLine[refPos] + 3, blackPixels);
+
+              blackPixels ^= 1;
+
+              if (codingLine[this.codingPos] < columns) {
+                ++refPos;
+
+                while (refLine[refPos] <= codingLine[this.codingPos] && refLine[refPos] < columns) {
+                  refPos += 2;
+                }
+              }
+
+              break;
+
+            case twoDimVertR2:
+              this._addPixels(refLine[refPos] + 2, blackPixels);
+
+              blackPixels ^= 1;
+
+              if (codingLine[this.codingPos] < columns) {
+                ++refPos;
+
+                while (refLine[refPos] <= codingLine[this.codingPos] && refLine[refPos] < columns) {
+                  refPos += 2;
+                }
+              }
+
+              break;
+
+            case twoDimVertR1:
+              this._addPixels(refLine[refPos] + 1, blackPixels);
+
+              blackPixels ^= 1;
+
+              if (codingLine[this.codingPos] < columns) {
+                ++refPos;
+
+                while (refLine[refPos] <= codingLine[this.codingPos] && refLine[refPos] < columns) {
+                  refPos += 2;
+                }
+              }
+
+              break;
+
+            case twoDimVert0:
+              this._addPixels(refLine[refPos], blackPixels);
+
+              blackPixels ^= 1;
+
+              if (codingLine[this.codingPos] < columns) {
+                ++refPos;
+
+                while (refLine[refPos] <= codingLine[this.codingPos] && refLine[refPos] < columns) {
+                  refPos += 2;
+                }
+              }
+
+              break;
+
+            case twoDimVertL3:
+              this._addPixelsNeg(refLine[refPos] - 3, blackPixels);
+
+              blackPixels ^= 1;
+
+              if (codingLine[this.codingPos] < columns) {
+                if (refPos > 0) {
+                  --refPos;
+                } else {
+                  ++refPos;
+                }
+
+                while (refLine[refPos] <= codingLine[this.codingPos] && refLine[refPos] < columns) {
+                  refPos += 2;
+                }
+              }
+
+              break;
+
+            case twoDimVertL2:
+              this._addPixelsNeg(refLine[refPos] - 2, blackPixels);
+
+              blackPixels ^= 1;
+
+              if (codingLine[this.codingPos] < columns) {
+                if (refPos > 0) {
+                  --refPos;
+                } else {
+                  ++refPos;
+                }
+
+                while (refLine[refPos] <= codingLine[this.codingPos] && refLine[refPos] < columns) {
+                  refPos += 2;
+                }
+              }
+
+              break;
+
+            case twoDimVertL1:
+              this._addPixelsNeg(refLine[refPos] - 1, blackPixels);
+
+              blackPixels ^= 1;
+
+              if (codingLine[this.codingPos] < columns) {
+                if (refPos > 0) {
+                  --refPos;
+                } else {
+                  ++refPos;
+                }
+
+                while (refLine[refPos] <= codingLine[this.codingPos] && refLine[refPos] < columns) {
+                  refPos += 2;
+                }
+              }
+
+              break;
+
+            case ccittEOF:
+              this._addPixels(columns, 0);
+
+              this.eof = true;
+              break;
+
+            default:
+              (0, _util.info)("bad 2d code");
+
+              this._addPixels(columns, 0);
+
+              this.err = true;
+          }
+        }
+      } else {
+        codingLine[0] = 0;
+        this.codingPos = 0;
+        blackPixels = 0;
+
+        while (codingLine[this.codingPos] < columns) {
+          code1 = 0;
+
+          if (blackPixels) {
+            do {
+              code1 += code3 = this._getBlackCode();
+            } while (code3 >= 64);
+          } else {
+            do {
+              code1 += code3 = this._getWhiteCode();
+            } while (code3 >= 64);
+          }
+
+          this._addPixels(codingLine[this.codingPos] + code1, blackPixels);
+
+          blackPixels ^= 1;
+        }
+      }
+
+      let gotEOL = false;
+
+      if (this.byteAlign) {
+        this.inputBits &= ~7;
+      }
+
+      if (!this.eoblock && this.row === this.rows - 1) {
+        this.rowsDone = true;
+      } else {
+        code1 = this._lookBits(12);
+
+        if (this.eoline) {
+          while (code1 !== ccittEOF && code1 !== 1) {
+            this._eatBits(1);
+
+            code1 = this._lookBits(12);
+          }
+        } else {
+          while (code1 === 0) {
+            this._eatBits(1);
+
+            code1 = this._lookBits(12);
+          }
+        }
+
+        if (code1 === 1) {
+          this._eatBits(12);
+
+          gotEOL = true;
+        } else if (code1 === ccittEOF) {
+          this.eof = true;
+        }
+      }
+
+      if (!this.eof && this.encoding > 0 && !this.rowsDone) {
+        this.nextLine2D = !this._lookBits(1);
+
+        this._eatBits(1);
+      }
+
+      if (this.eoblock && gotEOL && this.byteAlign) {
+        code1 = this._lookBits(12);
+
+        if (code1 === 1) {
+          this._eatBits(12);
+
+          if (this.encoding > 0) {
+            this._lookBits(1);
+
+            this._eatBits(1);
+          }
+
+          if (this.encoding >= 0) {
+            for (i = 0; i < 4; ++i) {
+              code1 = this._lookBits(12);
+
+              if (code1 !== 1) {
+                (0, _util.info)("bad rtc code: " + code1);
+              }
+
+              this._eatBits(12);
+
+              if (this.encoding > 0) {
+                this._lookBits(1);
+
+                this._eatBits(1);
+              }
+            }
+          }
+
+          this.eof = true;
+        }
+      } else if (this.err && this.eoline) {
+        while (true) {
+          code1 = this._lookBits(13);
+
+          if (code1 === ccittEOF) {
+            this.eof = true;
+            return -1;
+          }
+
+          if (code1 >> 1 === 1) {
+            break;
+          }
+
+          this._eatBits(1);
+        }
+
+        this._eatBits(12);
+
+        if (this.encoding > 0) {
+          this._eatBits(1);
+
+          this.nextLine2D = !(code1 & 1);
+        }
+      }
+
+      if (codingLine[0] > 0) {
+        this.outputBits = codingLine[this.codingPos = 0];
+      } else {
+        this.outputBits = codingLine[this.codingPos = 1];
+      }
+
+      this.row++;
+    }
+
+    let c;
+
+    if (this.outputBits >= 8) {
+      c = this.codingPos & 1 ? 0 : 0xff;
+      this.outputBits -= 8;
+
+      if (this.outputBits === 0 && codingLine[this.codingPos] < columns) {
+        this.codingPos++;
+        this.outputBits = codingLine[this.codingPos] - codingLine[this.codingPos - 1];
+      }
+    } else {
+      bits = 8;
+      c = 0;
+
+      do {
+        if (this.outputBits > bits) {
+          c <<= bits;
+
+          if (!(this.codingPos & 1)) {
+            c |= 0xff >> 8 - bits;
+          }
+
+          this.outputBits -= bits;
+          bits = 0;
+        } else {
+          c <<= this.outputBits;
+
+          if (!(this.codingPos & 1)) {
+            c |= 0xff >> 8 - this.outputBits;
+          }
+
+          bits -= this.outputBits;
+          this.outputBits = 0;
+
+          if (codingLine[this.codingPos] < columns) {
+            this.codingPos++;
+            this.outputBits = codingLine[this.codingPos] - codingLine[this.codingPos - 1];
+          } else if (bits > 0) {
+            c <<= bits;
+            bits = 0;
+          }
+        }
+      } while (bits);
+    }
+
+    if (this.black) {
+      c ^= 0xff;
+    }
+
+    return c;
+  }
+
+  _addPixels(a1, blackPixels) {
+    const codingLine = this.codingLine;
+    let codingPos = this.codingPos;
+
+    if (a1 > codingLine[codingPos]) {
+      if (a1 > this.columns) {
+        (0, _util.info)("row is wrong length");
+        this.err = true;
+        a1 = this.columns;
+      }
+
+      if (codingPos & 1 ^ blackPixels) {
+        ++codingPos;
+      }
+
+      codingLine[codingPos] = a1;
+    }
+
+    this.codingPos = codingPos;
+  }
+
+  _addPixelsNeg(a1, blackPixels) {
+    const codingLine = this.codingLine;
+    let codingPos = this.codingPos;
+
+    if (a1 > codingLine[codingPos]) {
+      if (a1 > this.columns) {
+        (0, _util.info)("row is wrong length");
+        this.err = true;
+        a1 = this.columns;
+      }
+
+      if (codingPos & 1 ^ blackPixels) {
+        ++codingPos;
+      }
+
+      codingLine[codingPos] = a1;
+    } else if (a1 < codingLine[codingPos]) {
+      if (a1 < 0) {
+        (0, _util.info)("invalid code");
+        this.err = true;
+        a1 = 0;
+      }
+
+      while (codingPos > 0 && a1 < codingLine[codingPos - 1]) {
+        --codingPos;
+      }
+
+      codingLine[codingPos] = a1;
+    }
+
+    this.codingPos = codingPos;
+  }
+
+  _findTableCode(start, end, table, limit) {
+    const limitValue = limit || 0;
+
+    for (let i = start; i <= end; ++i) {
+      let code = this._lookBits(i);
+
+      if (code === ccittEOF) {
+        return [true, 1, false];
+      }
+
+      if (i < end) {
+        code <<= end - i;
+      }
+
+      if (!limitValue || code >= limitValue) {
+        const p = table[code - limitValue];
+
+        if (p[0] === i) {
+          this._eatBits(i);
+
+          return [true, p[1], true];
+        }
+      }
+    }
+
+    return [false, 0, false];
+  }
+
+  _getTwoDimCode() {
+    let code = 0;
+    let p;
+
+    if (this.eoblock) {
+      code = this._lookBits(7);
+      p = twoDimTable[code];
+
+      if (p && p[0] > 0) {
+        this._eatBits(p[0]);
+
+        return p[1];
+      }
+    } else {
+      const result = this._findTableCode(1, 7, twoDimTable);
+
+      if (result[0] && result[2]) {
+        return result[1];
+      }
+    }
+
+    (0, _util.info)("Bad two dim code");
+    return ccittEOF;
+  }
+
+  _getWhiteCode() {
+    let code = 0;
+    let p;
+
+    if (this.eoblock) {
+      code = this._lookBits(12);
+
+      if (code === ccittEOF) {
+        return 1;
+      }
+
+      if (code >> 5 === 0) {
+        p = whiteTable1[code];
+      } else {
+        p = whiteTable2[code >> 3];
+      }
+
+      if (p[0] > 0) {
+        this._eatBits(p[0]);
+
+        return p[1];
+      }
+    } else {
+      let result = this._findTableCode(1, 9, whiteTable2);
+
+      if (result[0]) {
+        return result[1];
+      }
+
+      result = this._findTableCode(11, 12, whiteTable1);
+
+      if (result[0]) {
+        return result[1];
+      }
+    }
+
+    (0, _util.info)("bad white code");
+
+    this._eatBits(1);
+
+    return 1;
+  }
+
+  _getBlackCode() {
+    let code, p;
+
+    if (this.eoblock) {
+      code = this._lookBits(13);
+
+      if (code === ccittEOF) {
+        return 1;
+      }
+
+      if (code >> 7 === 0) {
+        p = blackTable1[code];
+      } else if (code >> 9 === 0 && code >> 7 !== 0) {
+        p = blackTable2[(code >> 1) - 64];
+      } else {
+        p = blackTable3[code >> 7];
+      }
+
+      if (p[0] > 0) {
+        this._eatBits(p[0]);
+
+        return p[1];
+      }
+    } else {
+      let result = this._findTableCode(2, 6, blackTable3);
+
+      if (result[0]) {
+        return result[1];
+      }
+
+      result = this._findTableCode(7, 12, blackTable2, 64);
+
+      if (result[0]) {
+        return result[1];
+      }
+
+      result = this._findTableCode(10, 13, blackTable1);
+
+      if (result[0]) {
+        return result[1];
+      }
+    }
+
+    (0, _util.info)("bad black code");
+
+    this._eatBits(1);
+
+    return 1;
+  }
+
+  _lookBits(n) {
+    let c;
+
+    while (this.inputBits < n) {
+      if ((c = this.source.next()) === -1) {
+        if (this.inputBits === 0) {
+          return ccittEOF;
+        }
+
+        return this.inputBuf << n - this.inputBits & 0xffff >> 16 - n;
+      }
+
+      this.inputBuf = this.inputBuf << 8 | c;
+      this.inputBits += 8;
+    }
+
+    return this.inputBuf >> this.inputBits - n & 0xffff >> 16 - n;
+  }
+
+  _eatBits(n) {
+    if ((this.inputBits -= n) < 0) {
+      this.inputBits = 0;
+    }
+  }
+
+}
+
+exports.CCITTFaxDecoder = CCITTFaxDecoder;
+
+/***/ }),
+/* 33 */
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
+
+
+
+Object.defineProperty(exports, "__esModule", ({
+  value: true
+}));
+exports.FlateStream = void 0;
+
+var _decode_stream = __w_pdfjs_require__(29);
+
+var _util = __w_pdfjs_require__(2);
+
+const codeLenCodeMap = new Int32Array([16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]);
+const lengthDecode = new Int32Array([0x00003, 0x00004, 0x00005, 0x00006, 0x00007, 0x00008, 0x00009, 0x0000a, 
0x1000b, 0x1000d, 0x1000f, 0x10011, 0x20013, 0x20017, 0x2001b, 0x2001f, 0x30023, 0x3002b, 0x30033, 0x3003b, 
0x40043, 0x40053, 0x40063, 0x40073, 0x50083, 0x500a3, 0x500c3, 0x500e3, 0x00102, 0x00102, 0x00102]);
+const distDecode = new Int32Array([0x00001, 0x00002, 0x00003, 0x00004, 0x10005, 0x10007, 0x20009, 0x2000d, 
0x30011, 0x30019, 0x40021, 0x40031, 0x50041, 0x50061, 0x60081, 0x600c1, 0x70101, 0x70181, 0x80201, 0x80301, 
0x90401, 0x90601, 0xa0801, 0xa0c01, 0xb1001, 0xb1801, 0xc2001, 0xc3001, 0xd4001, 0xd6001]);
+const fixedLitCodeTab = [new Int32Array([0x70100, 0x80050, 0x80010, 0x80118, 0x70110, 0x80070, 0x80030, 
0x900c0, 0x70108, 0x80060, 0x80020, 0x900a0, 0x80000, 0x80080, 0x80040, 0x900e0, 0x70104, 0x80058, 0x80018, 
0x90090, 0x70114, 0x80078, 0x80038, 0x900d0, 0x7010c, 0x80068, 0x80028, 0x900b0, 0x80008, 0x80088, 0x80048, 
0x900f0, 0x70102, 0x80054, 0x80014, 0x8011c, 0x70112, 0x80074, 0x80034, 0x900c8, 0x7010a, 0x80064, 0x80024, 
0x900a8, 0x80004, 0x80084, 0x80044, 0x900e8, 0x70106, 0x8005c, 0x8001c, 0x90098, 0x70116, 0x8007c, 0x8003c, 
0x900d8, 0x7010e, 0x8006c, 0x8002c, 0x900b8, 0x8000c, 0x8008c, 0x8004c, 0x900f8, 0x70101, 0x80052, 0x80012, 
0x8011a, 0x70111, 0x80072, 0x80032, 0x900c4, 0x70109, 0x80062, 0x80022, 0x900a4, 0x80002, 0x80082, 0x80042, 
0x900e4, 0x70105, 0x8005a, 0x8001a, 0x90094, 0x70115, 0x8007a, 0x8003a, 0x900d4, 0x7010d, 0x8006a, 0x8002a, 
0x900b4, 0x8000a, 0x8008a, 0x8004a, 0x900f4, 0x70103, 0x80056, 0x80016, 0x8011e, 0x70113, 0x80076, 0x80036, 
0x900cc, 0x7010b, 0x80066, 0x
 80026, 0x900ac, 0x80006, 0x80086, 0x80046, 0x900ec, 0x70107, 0x8005e, 0x8001e, 0x9009c, 0x70117, 0x8007e, 
0x8003e, 0x900dc, 0x7010f, 0x8006e, 0x8002e, 0x900bc, 0x8000e, 0x8008e, 0x8004e, 0x900fc, 0x70100, 0x80051, 
0x80011, 0x80119, 0x70110, 0x80071, 0x80031, 0x900c2, 0x70108, 0x80061, 0x80021, 0x900a2, 0x80001, 0x80081, 
0x80041, 0x900e2, 0x70104, 0x80059, 0x80019, 0x90092, 0x70114, 0x80079, 0x80039, 0x900d2, 0x7010c, 0x80069, 
0x80029, 0x900b2, 0x80009, 0x80089, 0x80049, 0x900f2, 0x70102, 0x80055, 0x80015, 0x8011d, 0x70112, 0x80075, 
0x80035, 0x900ca, 0x7010a, 0x80065, 0x80025, 0x900aa, 0x80005, 0x80085, 0x80045, 0x900ea, 0x70106, 0x8005d, 
0x8001d, 0x9009a, 0x70116, 0x8007d, 0x8003d, 0x900da, 0x7010e, 0x8006d, 0x8002d, 0x900ba, 0x8000d, 0x8008d, 
0x8004d, 0x900fa, 0x70101, 0x80053, 0x80013, 0x8011b, 0x70111, 0x80073, 0x80033, 0x900c6, 0x70109, 0x80063, 
0x80023, 0x900a6, 0x80003, 0x80083, 0x80043, 0x900e6, 0x70105, 0x8005b, 0x8001b, 0x90096, 0x70115, 0x8007b, 
0x8003b, 0x900d6, 0x7010d, 
 0x8006b, 0x8002b, 0x900b6, 0x8000b, 0x8008b, 0x8004b, 0x900f6, 0x70103, 0x80057, 0x80017, 0x8011f, 0x70113, 
0x80077, 0x80037, 0x900ce, 0x7010b, 0x80067, 0x80027, 0x900ae, 0x80007, 0x80087, 0x80047, 0x900ee, 0x70107, 
0x8005f, 0x8001f, 0x9009e, 0x70117, 0x8007f, 0x8003f, 0x900de, 0x7010f, 0x8006f, 0x8002f, 0x900be, 0x8000f, 
0x8008f, 0x8004f, 0x900fe, 0x70100, 0x80050, 0x80010, 0x80118, 0x70110, 0x80070, 0x80030, 0x900c1, 0x70108, 
0x80060, 0x80020, 0x900a1, 0x80000, 0x80080, 0x80040, 0x900e1, 0x70104, 0x80058, 0x80018, 0x90091, 0x70114, 
0x80078, 0x80038, 0x900d1, 0x7010c, 0x80068, 0x80028, 0x900b1, 0x80008, 0x80088, 0x80048, 0x900f1, 0x70102, 
0x80054, 0x80014, 0x8011c, 0x70112, 0x80074, 0x80034, 0x900c9, 0x7010a, 0x80064, 0x80024, 0x900a9, 0x80004, 
0x80084, 0x80044, 0x900e9, 0x70106, 0x8005c, 0x8001c, 0x90099, 0x70116, 0x8007c, 0x8003c, 0x900d9, 0x7010e, 
0x8006c, 0x8002c, 0x900b9, 0x8000c, 0x8008c, 0x8004c, 0x900f9, 0x70101, 0x80052, 0x80012, 0x8011a, 0x70111, 
0x80072, 0x80032, 0x900c5
 , 0x70109, 0x80062, 0x80022, 0x900a5, 0x80002, 0x80082, 0x80042, 0x900e5, 0x70105, 0x8005a, 0x8001a, 
0x90095, 0x70115, 0x8007a, 0x8003a, 0x900d5, 0x7010d, 0x8006a, 0x8002a, 0x900b5, 0x8000a, 0x8008a, 0x8004a, 
0x900f5, 0x70103, 0x80056, 0x80016, 0x8011e, 0x70113, 0x80076, 0x80036, 0x900cd, 0x7010b, 0x80066, 0x80026, 
0x900ad, 0x80006, 0x80086, 0x80046, 0x900ed, 0x70107, 0x8005e, 0x8001e, 0x9009d, 0x70117, 0x8007e, 0x8003e, 
0x900dd, 0x7010f, 0x8006e, 0x8002e, 0x900bd, 0x8000e, 0x8008e, 0x8004e, 0x900fd, 0x70100, 0x80051, 0x80011, 
0x80119, 0x70110, 0x80071, 0x80031, 0x900c3, 0x70108, 0x80061, 0x80021, 0x900a3, 0x80001, 0x80081, 0x80041, 
0x900e3, 0x70104, 0x80059, 0x80019, 0x90093, 0x70114, 0x80079, 0x80039, 0x900d3, 0x7010c, 0x80069, 0x80029, 
0x900b3, 0x80009, 0x80089, 0x80049, 0x900f3, 0x70102, 0x80055, 0x80015, 0x8011d, 0x70112, 0x80075, 0x80035, 
0x900cb, 0x7010a, 0x80065, 0x80025, 0x900ab, 0x80005, 0x80085, 0x80045, 0x900eb, 0x70106, 0x8005d, 0x8001d, 
0x9009b, 0x70116, 0x8007d, 0x800
 3d, 0x900db, 0x7010e, 0x8006d, 0x8002d, 0x900bb, 0x8000d, 0x8008d, 0x8004d, 0x900fb, 0x70101, 0x80053, 
0x80013, 0x8011b, 0x70111, 0x80073, 0x80033, 0x900c7, 0x70109, 0x80063, 0x80023, 0x900a7, 0x80003, 0x80083, 
0x80043, 0x900e7, 0x70105, 0x8005b, 0x8001b, 0x90097, 0x70115, 0x8007b, 0x8003b, 0x900d7, 0x7010d, 0x8006b, 
0x8002b, 0x900b7, 0x8000b, 0x8008b, 0x8004b, 0x900f7, 0x70103, 0x80057, 0x80017, 0x8011f, 0x70113, 0x80077, 
0x80037, 0x900cf, 0x7010b, 0x80067, 0x80027, 0x900af, 0x80007, 0x80087, 0x80047, 0x900ef, 0x70107, 0x8005f, 
0x8001f, 0x9009f, 0x70117, 0x8007f, 0x8003f, 0x900df, 0x7010f, 0x8006f, 0x8002f, 0x900bf, 0x8000f, 0x8008f, 
0x8004f, 0x900ff]), 9];
+const fixedDistCodeTab = [new Int32Array([0x50000, 0x50010, 0x50008, 0x50018, 0x50004, 0x50014, 0x5000c, 
0x5001c, 0x50002, 0x50012, 0x5000a, 0x5001a, 0x50006, 0x50016, 0x5000e, 0x00000, 0x50001, 0x50011, 0x50009, 
0x50019, 0x50005, 0x50015, 0x5000d, 0x5001d, 0x50003, 0x50013, 0x5000b, 0x5001b, 0x50007, 0x50017, 0x5000f, 
0x00000]), 5];
+
+class FlateStream extends _decode_stream.DecodeStream {
+  constructor(str, maybeLength) {
+    super(maybeLength);
+    this.str = str;
+    this.dict = str.dict;
+    const cmf = str.getByte();
+    const flg = str.getByte();
+
+    if (cmf === -1 || flg === -1) {
+      throw new _util.FormatError(`Invalid header in flate stream: ${cmf}, ${flg}`);
+    }
+
+    if ((cmf & 0x0f) !== 0x08) {
+      throw new _util.FormatError(`Unknown compression method in flate stream: ${cmf}, ${flg}`);
+    }
+
+    if (((cmf << 8) + flg) % 31 !== 0) {
+      throw new _util.FormatError(`Bad FCHECK in flate stream: ${cmf}, ${flg}`);
+    }
+
+    if (flg & 0x20) {
+      throw new _util.FormatError(`FDICT bit set in flate stream: ${cmf}, ${flg}`);
+    }
+
+    this.codeSize = 0;
+    this.codeBuf = 0;
+  }
+
+  getBits(bits) {
+    const str = this.str;
+    let codeSize = this.codeSize;
+    let codeBuf = this.codeBuf;
+    let b;
+
+    while (codeSize < bits) {
+      if ((b = str.getByte()) === -1) {
+        throw new _util.FormatError("Bad encoding in flate stream");
+      }
+
+      codeBuf |= b << codeSize;
+      codeSize += 8;
+    }
+
+    b = codeBuf & (1 << bits) - 1;
+    this.codeBuf = codeBuf >> bits;
+    this.codeSize = codeSize -= bits;
+    return b;
+  }
+
+  getCode(table) {
+    const str = this.str;
+    const codes = table[0];
+    const maxLen = table[1];
+    let codeSize = this.codeSize;
+    let codeBuf = this.codeBuf;
+    let b;
+
+    while (codeSize < maxLen) {
+      if ((b = str.getByte()) === -1) {
+        break;
+      }
+
+      codeBuf |= b << codeSize;
+      codeSize += 8;
+    }
+
+    const code = codes[codeBuf & (1 << maxLen) - 1];
+    const codeLen = code >> 16;
+    const codeVal = code & 0xffff;
+
+    if (codeLen < 1 || codeSize < codeLen) {
+      throw new _util.FormatError("Bad encoding in flate stream");
+    }
+
+    this.codeBuf = codeBuf >> codeLen;
+    this.codeSize = codeSize - codeLen;
+    return codeVal;
+  }
+
+  generateHuffmanTable(lengths) {
+    const n = lengths.length;
+    let maxLen = 0;
+    let i;
+
+    for (i = 0; i < n; ++i) {
+      if (lengths[i] > maxLen) {
+        maxLen = lengths[i];
+      }
+    }
+
+    const size = 1 << maxLen;
+    const codes = new Int32Array(size);
+
+    for (let len = 1, code = 0, skip = 2; len <= maxLen; ++len, code <<= 1, skip <<= 1) {
+      for (let val = 0; val < n; ++val) {
+        if (lengths[val] === len) {
+          let code2 = 0;
+          let t = code;
+
+          for (i = 0; i < len; ++i) {
+            code2 = code2 << 1 | t & 1;
+            t >>= 1;
+          }
+
+          for (i = code2; i < size; i += skip) {
+            codes[i] = len << 16 | val;
+          }
+
+          ++code;
+        }
+      }
+    }
+
+    return [codes, maxLen];
+  }
+
+  readBlock() {
+    let buffer, len;
+    const str = this.str;
+    let hdr = this.getBits(3);
+
+    if (hdr & 1) {
+      this.eof = true;
+    }
+
+    hdr >>= 1;
+
+    if (hdr === 0) {
+      let b;
+
+      if ((b = str.getByte()) === -1) {
+        throw new _util.FormatError("Bad block header in flate stream");
+      }
+
+      let blockLen = b;
+
+      if ((b = str.getByte()) === -1) {
+        throw new _util.FormatError("Bad block header in flate stream");
+      }
+
+      blockLen |= b << 8;
+
+      if ((b = str.getByte()) === -1) {
+        throw new _util.FormatError("Bad block header in flate stream");
+      }
+
+      let check = b;
+
+      if ((b = str.getByte()) === -1) {
+        throw new _util.FormatError("Bad block header in flate stream");
+      }
+
+      check |= b << 8;
+
+      if (check !== (~blockLen & 0xffff) && (blockLen !== 0 || check !== 0)) {
+        throw new _util.FormatError("Bad uncompressed block length in flate stream");
+      }
+
+      this.codeBuf = 0;
+      this.codeSize = 0;
+      const bufferLength = this.bufferLength,
+            end = bufferLength + blockLen;
+      buffer = this.ensureBuffer(end);
+      this.bufferLength = end;
+
+      if (blockLen === 0) {
+        if (str.peekByte() === -1) {
+          this.eof = true;
+        }
+      } else {
+        const block = str.getBytes(blockLen);
+        buffer.set(block, bufferLength);
+
+        if (block.length < blockLen) {
+          this.eof = true;
+        }
+      }
+
+      return;
+    }
+
+    let litCodeTable;
+    let distCodeTable;
+
+    if (hdr === 1) {
+      litCodeTable = fixedLitCodeTab;
+      distCodeTable = fixedDistCodeTab;
+    } else if (hdr === 2) {
+      const numLitCodes = this.getBits(5) + 257;
+      const numDistCodes = this.getBits(5) + 1;
+      const numCodeLenCodes = this.getBits(4) + 4;
+      const codeLenCodeLengths = new Uint8Array(codeLenCodeMap.length);
+      let i;
+
+      for (i = 0; i < numCodeLenCodes; ++i) {
+        codeLenCodeLengths[codeLenCodeMap[i]] = this.getBits(3);
+      }
+
+      const codeLenCodeTab = this.generateHuffmanTable(codeLenCodeLengths);
+      len = 0;
+      i = 0;
+      const codes = numLitCodes + numDistCodes;
+      const codeLengths = new Uint8Array(codes);
+      let bitsLength, bitsOffset, what;
+
+      while (i < codes) {
+        const code = this.getCode(codeLenCodeTab);
+
+        if (code === 16) {
+          bitsLength = 2;
+          bitsOffset = 3;
+          what = len;
+        } else if (code === 17) {
+          bitsLength = 3;
+          bitsOffset = 3;
+          what = len = 0;
+        } else if (code === 18) {
+          bitsLength = 7;
+          bitsOffset = 11;
+          what = len = 0;
+        } else {
+          codeLengths[i++] = len = code;
+          continue;
+        }
+
+        let repeatLength = this.getBits(bitsLength) + bitsOffset;
+
+        while (repeatLength-- > 0) {
+          codeLengths[i++] = what;
+        }
+      }
+
+      litCodeTable = this.generateHuffmanTable(codeLengths.subarray(0, numLitCodes));
+      distCodeTable = this.generateHuffmanTable(codeLengths.subarray(numLitCodes, codes));
+    } else {
+      throw new _util.FormatError("Unknown block type in flate stream");
+    }
+
+    buffer = this.buffer;
+    let limit = buffer ? buffer.length : 0;
+    let pos = this.bufferLength;
+
+    while (true) {
+      let code1 = this.getCode(litCodeTable);
+
+      if (code1 < 256) {
+        if (pos + 1 >= limit) {
+          buffer = this.ensureBuffer(pos + 1);
+          limit = buffer.length;
+        }
+
+        buffer[pos++] = code1;
+        continue;
+      }
+
+      if (code1 === 256) {
+        this.bufferLength = pos;
+        return;
+      }
+
+      code1 -= 257;
+      code1 = lengthDecode[code1];
+      let code2 = code1 >> 16;
+
+      if (code2 > 0) {
+        code2 = this.getBits(code2);
+      }
+
+      len = (code1 & 0xffff) + code2;
+      code1 = this.getCode(distCodeTable);
+      code1 = distDecode[code1];
+      code2 = code1 >> 16;
+
+      if (code2 > 0) {
+        code2 = this.getBits(code2);
+      }
+
+      const dist = (code1 & 0xffff) + code2;
+
+      if (pos + len >= limit) {
+        buffer = this.ensureBuffer(pos + len);
+        limit = buffer.length;
+      }
+
+      for (let k = 0; k < len; ++k, ++pos) {
+        buffer[pos] = buffer[pos - dist];
+      }
+    }
+  }
+
+}
+
+exports.FlateStream = FlateStream;
+
+/***/ }),
+/* 34 */
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
+
+
+
+Object.defineProperty(exports, "__esModule", ({
+  value: true
+}));
+exports.Jbig2Stream = void 0;
+
+var _primitives = __w_pdfjs_require__(5);
+
+var _decode_stream = __w_pdfjs_require__(29);
+
+var _jbig = __w_pdfjs_require__(35);
+
+var _util = __w_pdfjs_require__(2);
+
+class Jbig2Stream extends _decode_stream.DecodeStream {
+  constructor(stream, maybeLength, params) {
+    super(maybeLength);
+    this.stream = stream;
+    this.dict = stream.dict;
+    this.maybeLength = maybeLength;
+    this.params = params;
+  }
+
+  get bytes() {
+    return (0, _util.shadow)(this, "bytes", this.stream.getBytes(this.maybeLength));
+  }
+
+  ensureBuffer(requested) {}
+
+  readBlock() {
+    if (this.eof) {
+      return;
+    }
+
+    const jbig2Image = new _jbig.Jbig2Image();
+    const chunks = [];
+
+    if ((0, _primitives.isDict)(this.params)) {
+      const globalsStream = this.params.get("JBIG2Globals");
+
+      if ((0, _primitives.isStream)(globalsStream)) {
+        const globals = globalsStream.getBytes();
+        chunks.push({
+          data: globals,
+          start: 0,
+          end: globals.length
+        });
+      }
+    }
+
+    chunks.push({
+      data: this.bytes,
+      start: 0,
+      end: this.bytes.length
+    });
+    const data = jbig2Image.parseChunks(chunks);
+    const dataLength = data.length;
+
+    for (let i = 0; i < dataLength; i++) {
+      data[i] ^= 0xff;
+    }
+
+    this.buffer = data;
+    this.bufferLength = dataLength;
+    this.eof = true;
+  }
+
+}
+
+exports.Jbig2Stream = Jbig2Stream;
+
+/***/ }),
+/* 35 */
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
+
+
+
+Object.defineProperty(exports, "__esModule", ({
+  value: true
+}));
+exports.Jbig2Image = void 0;
+
+var _util = __w_pdfjs_require__(2);
+
+var _core_utils = __w_pdfjs_require__(9);
+
+var _arithmetic_decoder = __w_pdfjs_require__(36);
+
+var _ccitt = __w_pdfjs_require__(32);
+
+class Jbig2Error extends _util.BaseException {
+  constructor(msg) {
+    super(`JBIG2 error: ${msg}`, "Jbig2Error");
+  }
+
+}
+
+class ContextCache {
+  getContexts(id) {
+    if (id in this) {
+      return this[id];
+    }
+
+    return this[id] = new Int8Array(1 << 16);
+  }
+
+}
+
+class DecodingContext {
+  constructor(data, start, end) {
+    this.data = data;
+    this.start = start;
+    this.end = end;
+  }
+
+  get decoder() {
+    const decoder = new _arithmetic_decoder.ArithmeticDecoder(this.data, this.start, this.end);
+    return (0, _util.shadow)(this, "decoder", decoder);
+  }
+
+  get contextCache() {
+    const cache = new ContextCache();
+    return (0, _util.shadow)(this, "contextCache", cache);
+  }
+
+}
+
+function decodeInteger(contextCache, procedure, decoder) {
+  const contexts = contextCache.getContexts(procedure);
+  let prev = 1;
+
+  function readBits(length) {
+    let v = 0;
+
+    for (let i = 0; i < length; i++) {
+      const bit = decoder.readBit(contexts, prev);
+      prev = prev < 256 ? prev << 1 | bit : (prev << 1 | bit) & 511 | 256;
+      v = v << 1 | bit;
+    }
+
+    return v >>> 0;
+  }
+
+  const sign = readBits(1);
+  const value = readBits(1) ? readBits(1) ? readBits(1) ? readBits(1) ? readBits(1) ? readBits(32) + 4436 : 
readBits(12) + 340 : readBits(8) + 84 : readBits(6) + 20 : readBits(4) + 4 : readBits(2);
+
+  if (sign === 0) {
+    return value;
+  } else if (value > 0) {
+    return -value;
+  }
+
+  return null;
+}
+
+function decodeIAID(contextCache, decoder, codeLength) {
+  const contexts = contextCache.getContexts("IAID");
+  let prev = 1;
+
+  for (let i = 0; i < codeLength; i++) {
+    const bit = decoder.readBit(contexts, prev);
+    prev = prev << 1 | bit;
+  }
+
+  if (codeLength < 31) {
+    return prev & (1 << codeLength) - 1;
+  }
+
+  return prev & 0x7fffffff;
+}
+
+const SegmentTypes = ["SymbolDictionary", null, null, null, "IntermediateTextRegion", null, 
"ImmediateTextRegion", "ImmediateLosslessTextRegion", null, null, null, null, null, null, null, null, 
"PatternDictionary", null, null, null, "IntermediateHalftoneRegion", null, "ImmediateHalftoneRegion", 
"ImmediateLosslessHalftoneRegion", null, null, null, null, null, null, null, null, null, null, null, null, 
"IntermediateGenericRegion", null, "ImmediateGenericRegion", "ImmediateLosslessGenericRegion", 
"IntermediateGenericRefinementRegion", null, "ImmediateGenericRefinementRegion", 
"ImmediateLosslessGenericRefinementRegion", null, null, null, null, "PageInformation", "EndOfPage", 
"EndOfStripe", "EndOfFile", "Profiles", "Tables", null, null, null, null, null, null, null, null, 
"Extension"];
+const CodingTemplates = [[{
+  x: -1,
+  y: -2
+}, {
+  x: 0,
+  y: -2
+}, {
+  x: 1,
+  y: -2
+}, {
+  x: -2,
+  y: -1
+}, {
+  x: -1,
+  y: -1
+}, {
+  x: 0,
+  y: -1
+}, {
+  x: 1,
+  y: -1
+}, {
+  x: 2,
+  y: -1
+}, {
+  x: -4,
+  y: 0
+}, {
+  x: -3,
+  y: 0
+}, {
+  x: -2,
+  y: 0
+}, {
+  x: -1,
+  y: 0
+}], [{
+  x: -1,
+  y: -2
+}, {
+  x: 0,
+  y: -2
+}, {
+  x: 1,
+  y: -2
+}, {
+  x: 2,
+  y: -2
+}, {
+  x: -2,
+  y: -1
+}, {
+  x: -1,
+  y: -1
+}, {
+  x: 0,
+  y: -1
+}, {
+  x: 1,
+  y: -1
+}, {
+  x: 2,
+  y: -1
+}, {
+  x: -3,
+  y: 0
+}, {
+  x: -2,
+  y: 0
+}, {
+  x: -1,
+  y: 0
+}], [{
+  x: -1,
+  y: -2
+}, {
+  x: 0,
+  y: -2
+}, {
+  x: 1,
+  y: -2
+}, {
+  x: -2,
+  y: -1
+}, {
+  x: -1,
+  y: -1
+}, {
+  x: 0,
+  y: -1
+}, {
+  x: 1,
+  y: -1
+}, {
+  x: -2,
+  y: 0
+}, {
+  x: -1,
+  y: 0
+}], [{
+  x: -3,
+  y: -1
+}, {
+  x: -2,
+  y: -1
+}, {
+  x: -1,
+  y: -1
+}, {
+  x: 0,
+  y: -1
+}, {
+  x: 1,
+  y: -1
+}, {
+  x: -4,
+  y: 0
+}, {
+  x: -3,
+  y: 0
+}, {
+  x: -2,
+  y: 0
+}, {
+  x: -1,
+  y: 0
+}]];
+const RefinementTemplates = [{
+  coding: [{
+    x: 0,
+    y: -1
+  }, {
+    x: 1,
+    y: -1
+  }, {
+    x: -1,
+    y: 0
+  }],
+  reference: [{
+    x: 0,
+    y: -1
+  }, {
+    x: 1,
+    y: -1
+  }, {
+    x: -1,
+    y: 0
+  }, {
+    x: 0,
+    y: 0
+  }, {
+    x: 1,
+    y: 0
+  }, {
+    x: -1,
+    y: 1
+  }, {
+    x: 0,
+    y: 1
+  }, {
+    x: 1,
+    y: 1
+  }]
+}, {
+  coding: [{
+    x: -1,
+    y: -1
+  }, {
+    x: 0,
+    y: -1
+  }, {
+    x: 1,
+    y: -1
+  }, {
+    x: -1,
+    y: 0
+  }],
+  reference: [{
+    x: 0,
+    y: -1
+  }, {
+    x: -1,
+    y: 0
+  }, {
+    x: 0,
+    y: 0
+  }, {
+    x: 1,
+    y: 0
+  }, {
+    x: 0,
+    y: 1
+  }, {
+    x: 1,
+    y: 1
+  }]
+}];
+const ReusedContexts = [0x9b25, 0x0795, 0x00e5, 0x0195];
+const RefinementReusedContexts = [0x0020, 0x0008];
+
+function decodeBitmapTemplate0(width, height, decodingContext) {
+  const decoder = decodingContext.decoder;
+  const contexts = decodingContext.contextCache.getContexts("GB");
+  const bitmap = [];
+  let contextLabel, i, j, pixel, row, row1, row2;
+  const OLD_PIXEL_MASK = 0x7bf7;
+
+  for (i = 0; i < height; i++) {
+    row = bitmap[i] = new Uint8Array(width);
+    row1 = i < 1 ? row : bitmap[i - 1];
+    row2 = i < 2 ? row : bitmap[i - 2];
+    contextLabel = row2[0] << 13 | row2[1] << 12 | row2[2] << 11 | row1[0] << 7 | row1[1] << 6 | row1[2] << 
5 | row1[3] << 4;
+
+    for (j = 0; j < width; j++) {
+      row[j] = pixel = decoder.readBit(contexts, contextLabel);
+      contextLabel = (contextLabel & OLD_PIXEL_MASK) << 1 | (j + 3 < width ? row2[j + 3] << 11 : 0) | (j + 4 
< width ? row1[j + 4] << 4 : 0) | pixel;
+    }
+  }
+
+  return bitmap;
+}
+
+function decodeBitmap(mmr, width, height, templateIndex, prediction, skip, at, decodingContext) {
+  if (mmr) {
+    const input = new Reader(decodingContext.data, decodingContext.start, decodingContext.end);
+    return decodeMMRBitmap(input, width, height, false);
+  }
+
+  if (templateIndex === 0 && !skip && !prediction && at.length === 4 && at[0].x === 3 && at[0].y === -1 && 
at[1].x === -3 && at[1].y === -1 && at[2].x === 2 && at[2].y === -2 && at[3].x === -2 && at[3].y === -2) {
+    return decodeBitmapTemplate0(width, height, decodingContext);
+  }
+
+  const useskip = !!skip;
+  const template = CodingTemplates[templateIndex].concat(at);
+  template.sort(function (a, b) {
+    return a.y - b.y || a.x - b.x;
+  });
+  const templateLength = template.length;
+  const templateX = new Int8Array(templateLength);
+  const templateY = new Int8Array(templateLength);
+  const changingTemplateEntries = [];
+  let reuseMask = 0,
+      minX = 0,
+      maxX = 0,
+      minY = 0;
+  let c, k;
+
+  for (k = 0; k < templateLength; k++) {
+    templateX[k] = template[k].x;
+    templateY[k] = template[k].y;
+    minX = Math.min(minX, template[k].x);
+    maxX = Math.max(maxX, template[k].x);
+    minY = Math.min(minY, template[k].y);
+
+    if (k < templateLength - 1 && template[k].y === template[k + 1].y && template[k].x === template[k + 1].x 
- 1) {
+      reuseMask |= 1 << templateLength - 1 - k;
+    } else {
+      changingTemplateEntries.push(k);
+    }
+  }
+
+  const changingEntriesLength = changingTemplateEntries.length;
+  const changingTemplateX = new Int8Array(changingEntriesLength);
+  const changingTemplateY = new Int8Array(changingEntriesLength);
+  const changingTemplateBit = new Uint16Array(changingEntriesLength);
+
+  for (c = 0; c < changingEntriesLength; c++) {
+    k = changingTemplateEntries[c];
+    changingTemplateX[c] = template[k].x;
+    changingTemplateY[c] = template[k].y;
+    changingTemplateBit[c] = 1 << templateLength - 1 - k;
+  }
+
+  const sbb_left = -minX;
+  const sbb_top = -minY;
+  const sbb_right = width - maxX;
+  const pseudoPixelContext = ReusedContexts[templateIndex];
+  let row = new Uint8Array(width);
+  const bitmap = [];
+  const decoder = decodingContext.decoder;
+  const contexts = decodingContext.contextCache.getContexts("GB");
+  let ltp = 0,
+      j,
+      i0,
+      j0,
+      contextLabel = 0,
+      bit,
+      shift;
+
+  for (let i = 0; i < height; i++) {
+    if (prediction) {
+      const sltp = decoder.readBit(contexts, pseudoPixelContext);
+      ltp ^= sltp;
+
+      if (ltp) {
+        bitmap.push(row);
+        continue;
+      }
+    }
+
+    row = new Uint8Array(row);
+    bitmap.push(row);
+
+    for (j = 0; j < width; j++) {
+      if (useskip && skip[i][j]) {
+        row[j] = 0;
+        continue;
+      }
+
+      if (j >= sbb_left && j < sbb_right && i >= sbb_top) {
+        contextLabel = contextLabel << 1 & reuseMask;
+
+        for (k = 0; k < changingEntriesLength; k++) {
+          i0 = i + changingTemplateY[k];
+          j0 = j + changingTemplateX[k];
+          bit = bitmap[i0][j0];
+
+          if (bit) {
+            bit = changingTemplateBit[k];
+            contextLabel |= bit;
+          }
+        }
+      } else {
+        contextLabel = 0;
+        shift = templateLength - 1;
+
+        for (k = 0; k < templateLength; k++, shift--) {
+          j0 = j + templateX[k];
+
+          if (j0 >= 0 && j0 < width) {
+            i0 = i + templateY[k];
+
+            if (i0 >= 0) {
+              bit = bitmap[i0][j0];
+
+              if (bit) {
+                contextLabel |= bit << shift;
+              }
+            }
+          }
+        }
+      }
+
+      const pixel = decoder.readBit(contexts, contextLabel);
+      row[j] = pixel;
+    }
+  }
+
+  return bitmap;
+}
+
+function decodeRefinement(width, height, templateIndex, referenceBitmap, offsetX, offsetY, prediction, at, 
decodingContext) {
+  let codingTemplate = RefinementTemplates[templateIndex].coding;
+
+  if (templateIndex === 0) {
+    codingTemplate = codingTemplate.concat([at[0]]);
+  }
+
+  const codingTemplateLength = codingTemplate.length;
+  const codingTemplateX = new Int32Array(codingTemplateLength);
+  const codingTemplateY = new Int32Array(codingTemplateLength);
+  let k;
+
+  for (k = 0; k < codingTemplateLength; k++) {
+    codingTemplateX[k] = codingTemplate[k].x;
+    codingTemplateY[k] = codingTemplate[k].y;
+  }
+
+  let referenceTemplate = RefinementTemplates[templateIndex].reference;
+
+  if (templateIndex === 0) {
+    referenceTemplate = referenceTemplate.concat([at[1]]);
+  }
+
+  const referenceTemplateLength = referenceTemplate.length;
+  const referenceTemplateX = new Int32Array(referenceTemplateLength);
+  const referenceTemplateY = new Int32Array(referenceTemplateLength);
+
+  for (k = 0; k < referenceTemplateLength; k++) {
+    referenceTemplateX[k] = referenceTemplate[k].x;
+    referenceTemplateY[k] = referenceTemplate[k].y;
+  }
+
+  const referenceWidth = referenceBitmap[0].length;
+  const referenceHeight = referenceBitmap.length;
+  const pseudoPixelContext = RefinementReusedContexts[templateIndex];
+  const bitmap = [];
+  const decoder = decodingContext.decoder;
+  const contexts = decodingContext.contextCache.getContexts("GR");
+  let ltp = 0;
+
+  for (let i = 0; i < height; i++) {
+    if (prediction) {
+      const sltp = decoder.readBit(contexts, pseudoPixelContext);
+      ltp ^= sltp;
+
+      if (ltp) {
+        throw new Jbig2Error("prediction is not supported");
+      }
+    }
+
+    const row = new Uint8Array(width);
+    bitmap.push(row);
+
+    for (let j = 0; j < width; j++) {
+      let i0, j0;
+      let contextLabel = 0;
+
+      for (k = 0; k < codingTemplateLength; k++) {
+        i0 = i + codingTemplateY[k];
+        j0 = j + codingTemplateX[k];
+
+        if (i0 < 0 || j0 < 0 || j0 >= width) {
+          contextLabel <<= 1;
+        } else {
+          contextLabel = contextLabel << 1 | bitmap[i0][j0];
+        }
+      }
+
+      for (k = 0; k < referenceTemplateLength; k++) {
+        i0 = i + referenceTemplateY[k] - offsetY;
+        j0 = j + referenceTemplateX[k] - offsetX;
+
+        if (i0 < 0 || i0 >= referenceHeight || j0 < 0 || j0 >= referenceWidth) {
+          contextLabel <<= 1;
+        } else {
+          contextLabel = contextLabel << 1 | referenceBitmap[i0][j0];
+        }
+      }
+
+      const pixel = decoder.readBit(contexts, contextLabel);
+      row[j] = pixel;
+    }
+  }
+
+  return bitmap;
+}
+
+function decodeSymbolDictionary(huffman, refinement, symbols, numberOfNewSymbols, numberOfExportedSymbols, 
huffmanTables, templateIndex, at, refinementTemplateIndex, refinementAt, decodingContext, huffmanInput) {
+  if (huffman && refinement) {
+    throw new Jbig2Error("symbol refinement with Huffman is not supported");
+  }
+
+  const newSymbols = [];
+  let currentHeight = 0;
+  let symbolCodeLength = (0, _core_utils.log2)(symbols.length + numberOfNewSymbols);
+  const decoder = decodingContext.decoder;
+  const contextCache = decodingContext.contextCache;
+  let tableB1, symbolWidths;
+
+  if (huffman) {
+    tableB1 = getStandardTable(1);
+    symbolWidths = [];
+    symbolCodeLength = Math.max(symbolCodeLength, 1);
+  }
+
+  while (newSymbols.length < numberOfNewSymbols) {
+    const deltaHeight = huffman ? huffmanTables.tableDeltaHeight.decode(huffmanInput) : 
decodeInteger(contextCache, "IADH", decoder);
+    currentHeight += deltaHeight;
+    let currentWidth = 0,
+        totalWidth = 0;
+    const firstSymbol = huffman ? symbolWidths.length : 0;
+
+    while (true) {
+      const deltaWidth = huffman ? huffmanTables.tableDeltaWidth.decode(huffmanInput) : 
decodeInteger(contextCache, "IADW", decoder);
+
+      if (deltaWidth === null) {
+        break;
+      }
+
+      currentWidth += deltaWidth;
+      totalWidth += currentWidth;
+      let bitmap;
+
+      if (refinement) {
+        const numberOfInstances = decodeInteger(contextCache, "IAAI", decoder);
+
+        if (numberOfInstances > 1) {
+          bitmap = decodeTextRegion(huffman, refinement, currentWidth, currentHeight, 0, numberOfInstances, 
1, symbols.concat(newSymbols), symbolCodeLength, 0, 0, 1, 0, huffmanTables, refinementTemplateIndex, 
refinementAt, decodingContext, 0, huffmanInput);
+        } else {
+          const symbolId = decodeIAID(contextCache, decoder, symbolCodeLength);
+          const rdx = decodeInteger(contextCache, "IARDX", decoder);
+          const rdy = decodeInteger(contextCache, "IARDY", decoder);
+          const symbol = symbolId < symbols.length ? symbols[symbolId] : newSymbols[symbolId - 
symbols.length];
+          bitmap = decodeRefinement(currentWidth, currentHeight, refinementTemplateIndex, symbol, rdx, rdy, 
false, refinementAt, decodingContext);
+        }
+
+        newSymbols.push(bitmap);
+      } else if (huffman) {
+        symbolWidths.push(currentWidth);
+      } else {
+        bitmap = decodeBitmap(false, currentWidth, currentHeight, templateIndex, false, null, at, 
decodingContext);
+        newSymbols.push(bitmap);
+      }
+    }
+
+    if (huffman && !refinement) {
+      const bitmapSize = huffmanTables.tableBitmapSize.decode(huffmanInput);
+      huffmanInput.byteAlign();
+      let collectiveBitmap;
+
+      if (bitmapSize === 0) {
+        collectiveBitmap = readUncompressedBitmap(huffmanInput, totalWidth, currentHeight);
+      } else {
+        const originalEnd = huffmanInput.end;
+        const bitmapEnd = huffmanInput.position + bitmapSize;
+        huffmanInput.end = bitmapEnd;
+        collectiveBitmap = decodeMMRBitmap(huffmanInput, totalWidth, currentHeight, false);
+        huffmanInput.end = originalEnd;
+        huffmanInput.position = bitmapEnd;
+      }
+
+      const numberOfSymbolsDecoded = symbolWidths.length;
+
+      if (firstSymbol === numberOfSymbolsDecoded - 1) {
+        newSymbols.push(collectiveBitmap);
+      } else {
+        let i,
+            y,
+            xMin = 0,
+            xMax,
+            bitmapWidth,
+            symbolBitmap;
+
+        for (i = firstSymbol; i < numberOfSymbolsDecoded; i++) {
+          bitmapWidth = symbolWidths[i];
+          xMax = xMin + bitmapWidth;
+          symbolBitmap = [];
+
+          for (y = 0; y < currentHeight; y++) {
+            symbolBitmap.push(collectiveBitmap[y].subarray(xMin, xMax));
+          }
+
+          newSymbols.push(symbolBitmap);
+          xMin = xMax;
+        }
+      }
+    }
+  }
+
+  const exportedSymbols = [],
+        flags = [];
+  let currentFlag = false,
+      i,
+      ii;
+  const totalSymbolsLength = symbols.length + numberOfNewSymbols;
+
+  while (flags.length < totalSymbolsLength) {
+    let runLength = huffman ? tableB1.decode(huffmanInput) : decodeInteger(contextCache, "IAEX", decoder);
+
+    while (runLength--) {
+      flags.push(currentFlag);
+    }
+
+    currentFlag = !currentFlag;
+  }
+
+  for (i = 0, ii = symbols.length; i < ii; i++) {
+    if (flags[i]) {
+      exportedSymbols.push(symbols[i]);
+    }
+  }
+
+  for (let j = 0; j < numberOfNewSymbols; i++, j++) {
+    if (flags[i]) {
+      exportedSymbols.push(newSymbols[j]);
+    }
+  }
+
+  return exportedSymbols;
+}
+
+function decodeTextRegion(huffman, refinement, width, height, defaultPixelValue, numberOfSymbolInstances, 
stripSize, inputSymbols, symbolCodeLength, transposed, dsOffset, referenceCorner, combinationOperator, 
huffmanTables, refinementTemplateIndex, refinementAt, decodingContext, logStripSize, huffmanInput) {
+  if (huffman && refinement) {
+    throw new Jbig2Error("refinement with Huffman is not supported");
+  }
+
+  const bitmap = [];
+  let i, row;
+
+  for (i = 0; i < height; i++) {
+    row = new Uint8Array(width);
+
+    if (defaultPixelValue) {
+      for (let j = 0; j < width; j++) {
+        row[j] = defaultPixelValue;
+      }
+    }
+
+    bitmap.push(row);
+  }
+
+  const decoder = decodingContext.decoder;
+  const contextCache = decodingContext.contextCache;
+  let stripT = huffman ? -huffmanTables.tableDeltaT.decode(huffmanInput) : -decodeInteger(contextCache, 
"IADT", decoder);
+  let firstS = 0;
+  i = 0;
+
+  while (i < numberOfSymbolInstances) {
+    const deltaT = huffman ? huffmanTables.tableDeltaT.decode(huffmanInput) : decodeInteger(contextCache, 
"IADT", decoder);
+    stripT += deltaT;
+    const deltaFirstS = huffman ? huffmanTables.tableFirstS.decode(huffmanInput) : 
decodeInteger(contextCache, "IAFS", decoder);
+    firstS += deltaFirstS;
+    let currentS = firstS;
+
+    do {
+      let currentT = 0;
+
+      if (stripSize > 1) {
+        currentT = huffman ? huffmanInput.readBits(logStripSize) : decodeInteger(contextCache, "IAIT", 
decoder);
+      }
+
+      const t = stripSize * stripT + currentT;
+      const symbolId = huffman ? huffmanTables.symbolIDTable.decode(huffmanInput) : decodeIAID(contextCache, 
decoder, symbolCodeLength);
+      const applyRefinement = refinement && (huffman ? huffmanInput.readBit() : decodeInteger(contextCache, 
"IARI", decoder));
+      let symbolBitmap = inputSymbols[symbolId];
+      let symbolWidth = symbolBitmap[0].length;
+      let symbolHeight = symbolBitmap.length;
+
+      if (applyRefinement) {
+        const rdw = decodeInteger(contextCache, "IARDW", decoder);
+        const rdh = decodeInteger(contextCache, "IARDH", decoder);
+        const rdx = decodeInteger(contextCache, "IARDX", decoder);
+        const rdy = decodeInteger(contextCache, "IARDY", decoder);
+        symbolWidth += rdw;
+        symbolHeight += rdh;
+        symbolBitmap = decodeRefinement(symbolWidth, symbolHeight, refinementTemplateIndex, symbolBitmap, 
(rdw >> 1) + rdx, (rdh >> 1) + rdy, false, refinementAt, decodingContext);
+      }
+
+      const offsetT = t - (referenceCorner & 1 ? 0 : symbolHeight - 1);
+      const offsetS = currentS - (referenceCorner & 2 ? symbolWidth - 1 : 0);
+      let s2, t2, symbolRow;
+
+      if (transposed) {
+        for (s2 = 0; s2 < symbolHeight; s2++) {
+          row = bitmap[offsetS + s2];
+
+          if (!row) {
+            continue;
+          }
+
+          symbolRow = symbolBitmap[s2];
+          const maxWidth = Math.min(width - offsetT, symbolWidth);
+
+          switch (combinationOperator) {
+            case 0:
+              for (t2 = 0; t2 < maxWidth; t2++) {
+                row[offsetT + t2] |= symbolRow[t2];
+              }
+
+              break;
+
+            case 2:
+              for (t2 = 0; t2 < maxWidth; t2++) {
+                row[offsetT + t2] ^= symbolRow[t2];
+              }
+
+              break;
+
+            default:
+              throw new Jbig2Error(`operator ${combinationOperator} is not supported`);
+          }
+        }
+
+        currentS += symbolHeight - 1;
+      } else {
+        for (t2 = 0; t2 < symbolHeight; t2++) {
+          row = bitmap[offsetT + t2];
+
+          if (!row) {
+            continue;
+          }
+
+          symbolRow = symbolBitmap[t2];
+
+          switch (combinationOperator) {
+            case 0:
+              for (s2 = 0; s2 < symbolWidth; s2++) {
+                row[offsetS + s2] |= symbolRow[s2];
+              }
+
+              break;
+
+            case 2:
+              for (s2 = 0; s2 < symbolWidth; s2++) {
+                row[offsetS + s2] ^= symbolRow[s2];
+              }
+
+              break;
+
+            default:
+              throw new Jbig2Error(`operator ${combinationOperator} is not supported`);
+          }
+        }
+
+        currentS += symbolWidth - 1;
+      }
+
+      i++;
+      const deltaS = huffman ? huffmanTables.tableDeltaS.decode(huffmanInput) : decodeInteger(contextCache, 
"IADS", decoder);
+
+      if (deltaS === null) {
+        break;
+      }
+
+      currentS += deltaS + dsOffset;
+    } while (true);
+  }
+
+  return bitmap;
+}
+
+function decodePatternDictionary(mmr, patternWidth, patternHeight, maxPatternIndex, template, 
decodingContext) {
+  const at = [];
+
+  if (!mmr) {
+    at.push({
+      x: -patternWidth,
+      y: 0
+    });
+
+    if (template === 0) {
+      at.push({
+        x: -3,
+        y: -1
+      }, {
+        x: 2,
+        y: -2
+      }, {
+        x: -2,
+        y: -2
+      });
+    }
+  }
+
+  const collectiveWidth = (maxPatternIndex + 1) * patternWidth;
+  const collectiveBitmap = decodeBitmap(mmr, collectiveWidth, patternHeight, template, false, null, at, 
decodingContext);
+  const patterns = [];
+
+  for (let i = 0; i <= maxPatternIndex; i++) {
+    const patternBitmap = [];
+    const xMin = patternWidth * i;
+    const xMax = xMin + patternWidth;
+
+    for (let y = 0; y < patternHeight; y++) {
+      patternBitmap.push(collectiveBitmap[y].subarray(xMin, xMax));
+    }
+
+    patterns.push(patternBitmap);
+  }
+
+  return patterns;
+}
+
+function decodeHalftoneRegion(mmr, patterns, template, regionWidth, regionHeight, defaultPixelValue, 
enableSkip, combinationOperator, gridWidth, gridHeight, gridOffsetX, gridOffsetY, gridVectorX, gridVectorY, 
decodingContext) {
+  const skip = null;
+
+  if (enableSkip) {
+    throw new Jbig2Error("skip is not supported");
+  }
+
+  if (combinationOperator !== 0) {
+    throw new Jbig2Error(`operator "${combinationOperator}" is not supported in halftone region`);
+  }
+
+  const regionBitmap = [];
+  let i, j, row;
+
+  for (i = 0; i < regionHeight; i++) {
+    row = new Uint8Array(regionWidth);
+
+    if (defaultPixelValue) {
+      for (j = 0; j < regionWidth; j++) {
+        row[j] = defaultPixelValue;
+      }
+    }
+
+    regionBitmap.push(row);
+  }
+
+  const numberOfPatterns = patterns.length;
+  const pattern0 = patterns[0];
+  const patternWidth = pattern0[0].length,
+        patternHeight = pattern0.length;
+  const bitsPerValue = (0, _core_utils.log2)(numberOfPatterns);
+  const at = [];
+
+  if (!mmr) {
+    at.push({
+      x: template <= 1 ? 3 : 2,
+      y: -1
+    });
+
+    if (template === 0) {
+      at.push({
+        x: -3,
+        y: -1
+      }, {
+        x: 2,
+        y: -2
+      }, {
+        x: -2,
+        y: -2
+      });
+    }
+  }
+
+  const grayScaleBitPlanes = [];
+  let mmrInput, bitmap;
+
+  if (mmr) {
+    mmrInput = new Reader(decodingContext.data, decodingContext.start, decodingContext.end);
+  }
+
+  for (i = bitsPerValue - 1; i >= 0; i--) {
+    if (mmr) {
+      bitmap = decodeMMRBitmap(mmrInput, gridWidth, gridHeight, true);
+    } else {
+      bitmap = decodeBitmap(false, gridWidth, gridHeight, template, false, skip, at, decodingContext);
+    }
+
+    grayScaleBitPlanes[i] = bitmap;
+  }
+
+  let mg, ng, bit, patternIndex, patternBitmap, x, y, patternRow, regionRow;
+
+  for (mg = 0; mg < gridHeight; mg++) {
+    for (ng = 0; ng < gridWidth; ng++) {
+      bit = 0;
+      patternIndex = 0;
+
+      for (j = bitsPerValue - 1; j >= 0; j--) {
+        bit ^= grayScaleBitPlanes[j][mg][ng];
+        patternIndex |= bit << j;
+      }
+
+      patternBitmap = patterns[patternIndex];
+      x = gridOffsetX + mg * gridVectorY + ng * gridVectorX >> 8;
+      y = gridOffsetY + mg * gridVectorX - ng * gridVectorY >> 8;
+
+      if (x >= 0 && x + patternWidth <= regionWidth && y >= 0 && y + patternHeight <= regionHeight) {
+        for (i = 0; i < patternHeight; i++) {
+          regionRow = regionBitmap[y + i];
+          patternRow = patternBitmap[i];
+
+          for (j = 0; j < patternWidth; j++) {
+            regionRow[x + j] |= patternRow[j];
+          }
+        }
+      } else {
+        let regionX, regionY;
+
+        for (i = 0; i < patternHeight; i++) {
+          regionY = y + i;
+
+          if (regionY < 0 || regionY >= regionHeight) {
+            continue;
+          }
+
+          regionRow = regionBitmap[regionY];
+          patternRow = patternBitmap[i];
+
+          for (j = 0; j < patternWidth; j++) {
+            regionX = x + j;
+
+            if (regionX >= 0 && regionX < regionWidth) {
+              regionRow[regionX] |= patternRow[j];
+            }
+          }
+        }
+      }
+    }
+  }
+
+  return regionBitmap;
+}
+
+function readSegmentHeader(data, start) {
+  const segmentHeader = {};
+  segmentHeader.number = (0, _core_utils.readUint32)(data, start);
+  const flags = data[start + 4];
+  const segmentType = flags & 0x3f;
+
+  if (!SegmentTypes[segmentType]) {
+    throw new Jbig2Error("invalid segment type: " + segmentType);
+  }
+
+  segmentHeader.type = segmentType;
+  segmentHeader.typeName = SegmentTypes[segmentType];
+  segmentHeader.deferredNonRetain = !!(flags & 0x80);
+  const pageAssociationFieldSize = !!(flags & 0x40);
+  const referredFlags = data[start + 5];
+  let referredToCount = referredFlags >> 5 & 7;
+  const retainBits = [referredFlags & 31];
+  let position = start + 6;
+
+  if (referredFlags === 7) {
+    referredToCount = (0, _core_utils.readUint32)(data, position - 1) & 0x1fffffff;
+    position += 3;
+    let bytes = referredToCount + 7 >> 3;
+    retainBits[0] = data[position++];
+
+    while (--bytes > 0) {
+      retainBits.push(data[position++]);
+    }
+  } else if (referredFlags === 5 || referredFlags === 6) {
+    throw new Jbig2Error("invalid referred-to flags");
+  }
+
+  segmentHeader.retainBits = retainBits;
+  let referredToSegmentNumberSize = 4;
+
+  if (segmentHeader.number <= 256) {
+    referredToSegmentNumberSize = 1;
+  } else if (segmentHeader.number <= 65536) {
+    referredToSegmentNumberSize = 2;
+  }
+
+  const referredTo = [];
+  let i, ii;
+
+  for (i = 0; i < referredToCount; i++) {
+    let number;
+
+    if (referredToSegmentNumberSize === 1) {
+      number = data[position];
+    } else if (referredToSegmentNumberSize === 2) {
+      number = (0, _core_utils.readUint16)(data, position);
+    } else {
+      number = (0, _core_utils.readUint32)(data, position);
+    }
+
+    referredTo.push(number);
+    position += referredToSegmentNumberSize;
+  }
+
+  segmentHeader.referredTo = referredTo;
+
+  if (!pageAssociationFieldSize) {
+    segmentHeader.pageAssociation = data[position++];
+  } else {
+    segmentHeader.pageAssociation = (0, _core_utils.readUint32)(data, position);
+    position += 4;
+  }
+
+  segmentHeader.length = (0, _core_utils.readUint32)(data, position);
+  position += 4;
+
+  if (segmentHeader.length === 0xffffffff) {
+    if (segmentType === 38) {
+      const genericRegionInfo = readRegionSegmentInformation(data, position);
+      const genericRegionSegmentFlags = data[position + RegionSegmentInformationFieldLength];
+      const genericRegionMmr = !!(genericRegionSegmentFlags & 1);
+      const searchPatternLength = 6;
+      const searchPattern = new Uint8Array(searchPatternLength);
+
+      if (!genericRegionMmr) {
+        searchPattern[0] = 0xff;
+        searchPattern[1] = 0xac;
+      }
+
+      searchPattern[2] = genericRegionInfo.height >>> 24 & 0xff;
+      searchPattern[3] = genericRegionInfo.height >> 16 & 0xff;
+      searchPattern[4] = genericRegionInfo.height >> 8 & 0xff;
+      searchPattern[5] = genericRegionInfo.height & 0xff;
+
+      for (i = position, ii = data.length; i < ii; i++) {
+        let j = 0;
+
+        while (j < searchPatternLength && searchPattern[j] === data[i + j]) {
+          j++;
+        }
+
+        if (j === searchPatternLength) {
+          segmentHeader.length = i + searchPatternLength;
+          break;
+        }
+      }
+
+      if (segmentHeader.length === 0xffffffff) {
+        throw new Jbig2Error("segment end was not found");
+      }
+    } else {
+      throw new Jbig2Error("invalid unknown segment length");
+    }
+  }
+
+  segmentHeader.headerEnd = position;
+  return segmentHeader;
+}
+
+function readSegments(header, data, start, end) {
+  const segments = [];
+  let position = start;
+
+  while (position < end) {
+    const segmentHeader = readSegmentHeader(data, position);
+    position = segmentHeader.headerEnd;
+    const segment = {
+      header: segmentHeader,
+      data
+    };
+
+    if (!header.randomAccess) {
+      segment.start = position;
+      position += segmentHeader.length;
+      segment.end = position;
+    }
+
+    segments.push(segment);
+
+    if (segmentHeader.type === 51) {
+      break;
+    }
+  }
+
+  if (header.randomAccess) {
+    for (let i = 0, ii = segments.length; i < ii; i++) {
+      segments[i].start = position;
+      position += segments[i].header.length;
+      segments[i].end = position;
+    }
+  }
+
+  return segments;
+}
+
+function readRegionSegmentInformation(data, start) {
+  return {
+    width: (0, _core_utils.readUint32)(data, start),
+    height: (0, _core_utils.readUint32)(data, start + 4),
+    x: (0, _core_utils.readUint32)(data, start + 8),
+    y: (0, _core_utils.readUint32)(data, start + 12),
+    combinationOperator: data[start + 16] & 7
+  };
+}
+
+const RegionSegmentInformationFieldLength = 17;
+
+function processSegment(segment, visitor) {
+  const header = segment.header;
+  const data = segment.data,
+        end = segment.end;
+  let position = segment.start;
+  let args, at, i, atLength;
+
+  switch (header.type) {
+    case 0:
+      const dictionary = {};
+      const dictionaryFlags = (0, _core_utils.readUint16)(data, position);
+      dictionary.huffman = !!(dictionaryFlags & 1);
+      dictionary.refinement = !!(dictionaryFlags & 2);
+      dictionary.huffmanDHSelector = dictionaryFlags >> 2 & 3;
+      dictionary.huffmanDWSelector = dictionaryFlags >> 4 & 3;
+      dictionary.bitmapSizeSelector = dictionaryFlags >> 6 & 1;
+      dictionary.aggregationInstancesSelector = dictionaryFlags >> 7 & 1;
+      dictionary.bitmapCodingContextUsed = !!(dictionaryFlags & 256);
+      dictionary.bitmapCodingContextRetained = !!(dictionaryFlags & 512);
+      dictionary.template = dictionaryFlags >> 10 & 3;
+      dictionary.refinementTemplate = dictionaryFlags >> 12 & 1;
+      position += 2;
+
+      if (!dictionary.huffman) {
+        atLength = dictionary.template === 0 ? 4 : 1;
+        at = [];
+
+        for (i = 0; i < atLength; i++) {
+          at.push({
+            x: (0, _core_utils.readInt8)(data, position),
+            y: (0, _core_utils.readInt8)(data, position + 1)
+          });
+          position += 2;
+        }
+
+        dictionary.at = at;
+      }
+
+      if (dictionary.refinement && !dictionary.refinementTemplate) {
+        at = [];
+
+        for (i = 0; i < 2; i++) {
+          at.push({
+            x: (0, _core_utils.readInt8)(data, position),
+            y: (0, _core_utils.readInt8)(data, position + 1)
+          });
+          position += 2;
+        }
+
+        dictionary.refinementAt = at;
+      }
+
+      dictionary.numberOfExportedSymbols = (0, _core_utils.readUint32)(data, position);
+      position += 4;
+      dictionary.numberOfNewSymbols = (0, _core_utils.readUint32)(data, position);
+      position += 4;
+      args = [dictionary, header.number, header.referredTo, data, position, end];
+      break;
+
+    case 6:
+    case 7:
+      const textRegion = {};
+      textRegion.info = readRegionSegmentInformation(data, position);
+      position += RegionSegmentInformationFieldLength;
+      const textRegionSegmentFlags = (0, _core_utils.readUint16)(data, position);
+      position += 2;
+      textRegion.huffman = !!(textRegionSegmentFlags & 1);
+      textRegion.refinement = !!(textRegionSegmentFlags & 2);
+      textRegion.logStripSize = textRegionSegmentFlags >> 2 & 3;
+      textRegion.stripSize = 1 << textRegion.logStripSize;
+      textRegion.referenceCorner = textRegionSegmentFlags >> 4 & 3;
+      textRegion.transposed = !!(textRegionSegmentFlags & 64);
+      textRegion.combinationOperator = textRegionSegmentFlags >> 7 & 3;
+      textRegion.defaultPixelValue = textRegionSegmentFlags >> 9 & 1;
+      textRegion.dsOffset = textRegionSegmentFlags << 17 >> 27;
+      textRegion.refinementTemplate = textRegionSegmentFlags >> 15 & 1;
+
+      if (textRegion.huffman) {
+        const textRegionHuffmanFlags = (0, _core_utils.readUint16)(data, position);
+        position += 2;
+        textRegion.huffmanFS = textRegionHuffmanFlags & 3;
+        textRegion.huffmanDS = textRegionHuffmanFlags >> 2 & 3;
+        textRegion.huffmanDT = textRegionHuffmanFlags >> 4 & 3;
+        textRegion.huffmanRefinementDW = textRegionHuffmanFlags >> 6 & 3;
+        textRegion.huffmanRefinementDH = textRegionHuffmanFlags >> 8 & 3;
+        textRegion.huffmanRefinementDX = textRegionHuffmanFlags >> 10 & 3;
+        textRegion.huffmanRefinementDY = textRegionHuffmanFlags >> 12 & 3;
+        textRegion.huffmanRefinementSizeSelector = !!(textRegionHuffmanFlags & 0x4000);
+      }
+
+      if (textRegion.refinement && !textRegion.refinementTemplate) {
+        at = [];
+
+        for (i = 0; i < 2; i++) {
+          at.push({
+            x: (0, _core_utils.readInt8)(data, position),
+            y: (0, _core_utils.readInt8)(data, position + 1)
+          });
+          position += 2;
+        }
+
+        textRegion.refinementAt = at;
+      }
+
+      textRegion.numberOfSymbolInstances = (0, _core_utils.readUint32)(data, position);
+      position += 4;
+      args = [textRegion, header.referredTo, data, position, end];
+      break;
+
+    case 16:
+      const patternDictionary = {};
+      const patternDictionaryFlags = data[position++];
+      patternDictionary.mmr = !!(patternDictionaryFlags & 1);
+      patternDictionary.template = patternDictionaryFlags >> 1 & 3;
+      patternDictionary.patternWidth = data[position++];
+      patternDictionary.patternHeight = data[position++];
+      patternDictionary.maxPatternIndex = (0, _core_utils.readUint32)(data, position);
+      position += 4;
+      args = [patternDictionary, header.number, data, position, end];
+      break;
+
+    case 22:
+    case 23:
+      const halftoneRegion = {};
+      halftoneRegion.info = readRegionSegmentInformation(data, position);
+      position += RegionSegmentInformationFieldLength;
+      const halftoneRegionFlags = data[position++];
+      halftoneRegion.mmr = !!(halftoneRegionFlags & 1);
+      halftoneRegion.template = halftoneRegionFlags >> 1 & 3;
+      halftoneRegion.enableSkip = !!(halftoneRegionFlags & 8);
+      halftoneRegion.combinationOperator = halftoneRegionFlags >> 4 & 7;
+      halftoneRegion.defaultPixelValue = halftoneRegionFlags >> 7 & 1;
+      halftoneRegion.gridWidth = (0, _core_utils.readUint32)(data, position);
+      position += 4;
+      halftoneRegion.gridHeight = (0, _core_utils.readUint32)(data, position);
+      position += 4;
+      halftoneRegion.gridOffsetX = (0, _core_utils.readUint32)(data, position) & 0xffffffff;
+      position += 4;
+      halftoneRegion.gridOffsetY = (0, _core_utils.readUint32)(data, position) & 0xffffffff;
+      position += 4;
+      halftoneRegion.gridVectorX = (0, _core_utils.readUint16)(data, position);
+      position += 2;
+      halftoneRegion.gridVectorY = (0, _core_utils.readUint16)(data, position);
+      position += 2;
+      args = [halftoneRegion, header.referredTo, data, position, end];
+      break;
+
+    case 38:
+    case 39:
+      const genericRegion = {};
+      genericRegion.info = readRegionSegmentInformation(data, position);
+      position += RegionSegmentInformationFieldLength;
+      const genericRegionSegmentFlags = data[position++];
+      genericRegion.mmr = !!(genericRegionSegmentFlags & 1);
+      genericRegion.template = genericRegionSegmentFlags >> 1 & 3;
+      genericRegion.prediction = !!(genericRegionSegmentFlags & 8);
+
+      if (!genericRegion.mmr) {
+        atLength = genericRegion.template === 0 ? 4 : 1;
+        at = [];
+
+        for (i = 0; i < atLength; i++) {
+          at.push({
+            x: (0, _core_utils.readInt8)(data, position),
+            y: (0, _core_utils.readInt8)(data, position + 1)
+          });
+          position += 2;
+        }
+
+        genericRegion.at = at;
+      }
+
+      args = [genericRegion, data, position, end];
+      break;
+
+    case 48:
+      const pageInfo = {
+        width: (0, _core_utils.readUint32)(data, position),
+        height: (0, _core_utils.readUint32)(data, position + 4),
+        resolutionX: (0, _core_utils.readUint32)(data, position + 8),
+        resolutionY: (0, _core_utils.readUint32)(data, position + 12)
+      };
+
+      if (pageInfo.height === 0xffffffff) {
+        delete pageInfo.height;
+      }
+
+      const pageSegmentFlags = data[position + 16];
+      (0, _core_utils.readUint16)(data, position + 17);
+      pageInfo.lossless = !!(pageSegmentFlags & 1);
+      pageInfo.refinement = !!(pageSegmentFlags & 2);
+      pageInfo.defaultPixelValue = pageSegmentFlags >> 2 & 1;
+      pageInfo.combinationOperator = pageSegmentFlags >> 3 & 3;
+      pageInfo.requiresBuffer = !!(pageSegmentFlags & 32);
+      pageInfo.combinationOperatorOverride = !!(pageSegmentFlags & 64);
+      args = [pageInfo];
+      break;
+
+    case 49:
+      break;
+
+    case 50:
+      break;
+
+    case 51:
+      break;
+
+    case 53:
+      args = [header.number, data, position, end];
+      break;
+
+    case 62:
+      break;
+
+    default:
+      throw new Jbig2Error(`segment type ${header.typeName}(${header.type})` + " is not implemented");
+  }
+
+  const callbackName = "on" + header.typeName;
+
+  if (callbackName in visitor) {
+    visitor[callbackName].apply(visitor, args);
+  }
+}
+
+function processSegments(segments, visitor) {
+  for (let i = 0, ii = segments.length; i < ii; i++) {
+    processSegment(segments[i], visitor);
+  }
+}
+
+function parseJbig2Chunks(chunks) {
+  const visitor = new SimpleSegmentVisitor();
+
+  for (let i = 0, ii = chunks.length; i < ii; i++) {
+    const chunk = chunks[i];
+    const segments = readSegments({}, chunk.data, chunk.start, chunk.end);
+    processSegments(segments, visitor);
+  }
+
+  return visitor.buffer;
+}
+
+function parseJbig2(data) {
+  const end = data.length;
+  let position = 0;
+
+  if (data[position] !== 0x97 || data[position + 1] !== 0x4a || data[position + 2] !== 0x42 || data[position 
+ 3] !== 0x32 || data[position + 4] !== 0x0d || data[position + 5] !== 0x0a || data[position + 6] !== 0x1a || 
data[position + 7] !== 0x0a) {
+    throw new Jbig2Error("parseJbig2 - invalid header.");
+  }
+
+  const header = Object.create(null);
+  position += 8;
+  const flags = data[position++];
+  header.randomAccess = !(flags & 1);
+
+  if (!(flags & 2)) {
+    header.numberOfPages = (0, _core_utils.readUint32)(data, position);
+    position += 4;
+  }
+
+  const segments = readSegments(header, data, position, end);
+  const visitor = new SimpleSegmentVisitor();
+  processSegments(segments, visitor);
+  const {
+    width,
+    height
+  } = visitor.currentPageInfo;
+  const bitPacked = visitor.buffer;
+  const imgData = new Uint8ClampedArray(width * height);
+  let q = 0,
+      k = 0;
+
+  for (let i = 0; i < height; i++) {
+    let mask = 0,
+        buffer;
+
+    for (let j = 0; j < width; j++) {
+      if (!mask) {
+        mask = 128;
+        buffer = bitPacked[k++];
+      }
+
+      imgData[q++] = buffer & mask ? 0 : 255;
+      mask >>= 1;
+    }
+  }
+
+  return {
+    imgData,
+    width,
+    height
+  };
+}
+
+class SimpleSegmentVisitor {
+  onPageInformation(info) {
+    this.currentPageInfo = info;
+    const rowSize = info.width + 7 >> 3;
+    const buffer = new Uint8ClampedArray(rowSize * info.height);
+
+    if (info.defaultPixelValue) {
+      for (let i = 0, ii = buffer.length; i < ii; i++) {
+        buffer[i] = 0xff;
+      }
+    }
+
+    this.buffer = buffer;
+  }
+
+  drawBitmap(regionInfo, bitmap) {
+    const pageInfo = this.currentPageInfo;
+    const width = regionInfo.width,
+          height = regionInfo.height;
+    const rowSize = pageInfo.width + 7 >> 3;
+    const combinationOperator = pageInfo.combinationOperatorOverride ? regionInfo.combinationOperator : 
pageInfo.combinationOperator;
+    const buffer = this.buffer;
+    const mask0 = 128 >> (regionInfo.x & 7);
+    let offset0 = regionInfo.y * rowSize + (regionInfo.x >> 3);
+    let i, j, mask, offset;
+
+    switch (combinationOperator) {
+      case 0:
+        for (i = 0; i < height; i++) {
+          mask = mask0;
+          offset = offset0;
+
+          for (j = 0; j < width; j++) {
+            if (bitmap[i][j]) {
+              buffer[offset] |= mask;
+            }
+
+            mask >>= 1;
+
+            if (!mask) {
+              mask = 128;
+              offset++;
+            }
+          }
+
+          offset0 += rowSize;
+        }
+
+        break;
+
+      case 2:
+        for (i = 0; i < height; i++) {
+          mask = mask0;
+          offset = offset0;
+
+          for (j = 0; j < width; j++) {
+            if (bitmap[i][j]) {
+              buffer[offset] ^= mask;
+            }
+
+            mask >>= 1;
+
+            if (!mask) {
+              mask = 128;
+              offset++;
+            }
+          }
+
+          offset0 += rowSize;
+        }
+
+        break;
+
+      default:
+        throw new Jbig2Error(`operator ${combinationOperator} is not supported`);
+    }
+  }
+
+  onImmediateGenericRegion(region, data, start, end) {
+    const regionInfo = region.info;
+    const decodingContext = new DecodingContext(data, start, end);
+    const bitmap = decodeBitmap(region.mmr, regionInfo.width, regionInfo.height, region.template, 
region.prediction, null, region.at, decodingContext);
+    this.drawBitmap(regionInfo, bitmap);
+  }
+
+  onImmediateLosslessGenericRegion() {
+    this.onImmediateGenericRegion.apply(this, arguments);
+  }
+
+  onSymbolDictionary(dictionary, currentSegment, referredSegments, data, start, end) {
+    let huffmanTables, huffmanInput;
+
+    if (dictionary.huffman) {
+      huffmanTables = getSymbolDictionaryHuffmanTables(dictionary, referredSegments, this.customTables);
+      huffmanInput = new Reader(data, start, end);
+    }
+
+    let symbols = this.symbols;
+
+    if (!symbols) {
+      this.symbols = symbols = {};
+    }
+
+    let inputSymbols = [];
+
+    for (let i = 0, ii = referredSegments.length; i < ii; i++) {
+      const referredSymbols = symbols[referredSegments[i]];
+
+      if (referredSymbols) {
+        inputSymbols = inputSymbols.concat(referredSymbols);
+      }
+    }
+
+    const decodingContext = new DecodingContext(data, start, end);
+    symbols[currentSegment] = decodeSymbolDictionary(dictionary.huffman, dictionary.refinement, 
inputSymbols, dictionary.numberOfNewSymbols, dictionary.numberOfExportedSymbols, huffmanTables, 
dictionary.template, dictionary.at, dictionary.refinementTemplate, dictionary.refinementAt, decodingContext, 
huffmanInput);
+  }
+
+  onImmediateTextRegion(region, referredSegments, data, start, end) {
+    const regionInfo = region.info;
+    let huffmanTables, huffmanInput;
+    const symbols = this.symbols;
+    let inputSymbols = [];
+
+    for (let i = 0, ii = referredSegments.length; i < ii; i++) {
+      const referredSymbols = symbols[referredSegments[i]];
+
+      if (referredSymbols) {
+        inputSymbols = inputSymbols.concat(referredSymbols);
+      }
+    }
+
+    const symbolCodeLength = (0, _core_utils.log2)(inputSymbols.length);
+
+    if (region.huffman) {
+      huffmanInput = new Reader(data, start, end);
+      huffmanTables = getTextRegionHuffmanTables(region, referredSegments, this.customTables, 
inputSymbols.length, huffmanInput);
+    }
+
+    const decodingContext = new DecodingContext(data, start, end);
+    const bitmap = decodeTextRegion(region.huffman, region.refinement, regionInfo.width, regionInfo.height, 
region.defaultPixelValue, region.numberOfSymbolInstances, region.stripSize, inputSymbols, symbolCodeLength, 
region.transposed, region.dsOffset, region.referenceCorner, region.combinationOperator, huffmanTables, 
region.refinementTemplate, region.refinementAt, decodingContext, region.logStripSize, huffmanInput);
+    this.drawBitmap(regionInfo, bitmap);
+  }
+
+  onImmediateLosslessTextRegion() {
+    this.onImmediateTextRegion.apply(this, arguments);
+  }
+
+  onPatternDictionary(dictionary, currentSegment, data, start, end) {
+    let patterns = this.patterns;
+
+    if (!patterns) {
+      this.patterns = patterns = {};
+    }
+
+    const decodingContext = new DecodingContext(data, start, end);
+    patterns[currentSegment] = decodePatternDictionary(dictionary.mmr, dictionary.patternWidth, 
dictionary.patternHeight, dictionary.maxPatternIndex, dictionary.template, decodingContext);
+  }
+
+  onImmediateHalftoneRegion(region, referredSegments, data, start, end) {
+    const patterns = this.patterns[referredSegments[0]];
+    const regionInfo = region.info;
+    const decodingContext = new DecodingContext(data, start, end);
+    const bitmap = decodeHalftoneRegion(region.mmr, patterns, region.template, regionInfo.width, 
regionInfo.height, region.defaultPixelValue, region.enableSkip, region.combinationOperator, region.gridWidth, 
region.gridHeight, region.gridOffsetX, region.gridOffsetY, region.gridVectorX, region.gridVectorY, 
decodingContext);
+    this.drawBitmap(regionInfo, bitmap);
+  }
+
+  onImmediateLosslessHalftoneRegion() {
+    this.onImmediateHalftoneRegion.apply(this, arguments);
+  }
+
+  onTables(currentSegment, data, start, end) {
+    let customTables = this.customTables;
+
+    if (!customTables) {
+      this.customTables = customTables = {};
+    }
+
+    customTables[currentSegment] = decodeTablesSegment(data, start, end);
+  }
+
+}
+
+class HuffmanLine {
+  constructor(lineData) {
+    if (lineData.length === 2) {
+      this.isOOB = true;
+      this.rangeLow = 0;
+      this.prefixLength = lineData[0];
+      this.rangeLength = 0;
+      this.prefixCode = lineData[1];
+      this.isLowerRange = false;
+    } else {
+      this.isOOB = false;
+      this.rangeLow = lineData[0];
+      this.prefixLength = lineData[1];
+      this.rangeLength = lineData[2];
+      this.prefixCode = lineData[3];
+      this.isLowerRange = lineData[4] === "lower";
+    }
+  }
+
+}
+
+class HuffmanTreeNode {
+  constructor(line) {
+    this.children = [];
+
+    if (line) {
+      this.isLeaf = true;
+      this.rangeLength = line.rangeLength;
+      this.rangeLow = line.rangeLow;
+      this.isLowerRange = line.isLowerRange;
+      this.isOOB = line.isOOB;
+    } else {
+      this.isLeaf = false;
+    }
+  }
+
+  buildTree(line, shift) {
+    const bit = line.prefixCode >> shift & 1;
+
+    if (shift <= 0) {
+      this.children[bit] = new HuffmanTreeNode(line);
+    } else {
+      let node = this.children[bit];
+
+      if (!node) {
+        this.children[bit] = node = new HuffmanTreeNode(null);
+      }
+
+      node.buildTree(line, shift - 1);
+    }
+  }
+
+  decodeNode(reader) {
+    if (this.isLeaf) {
+      if (this.isOOB) {
+        return null;
+      }
+
+      const htOffset = reader.readBits(this.rangeLength);
+      return this.rangeLow + (this.isLowerRange ? -htOffset : htOffset);
+    }
+
+    const node = this.children[reader.readBit()];
+
+    if (!node) {
+      throw new Jbig2Error("invalid Huffman data");
+    }
+
+    return node.decodeNode(reader);
+  }
+
+}
+
+class HuffmanTable {
+  constructor(lines, prefixCodesDone) {
+    if (!prefixCodesDone) {
+      this.assignPrefixCodes(lines);
+    }
+
+    this.rootNode = new HuffmanTreeNode(null);
+
+    for (let i = 0, ii = lines.length; i < ii; i++) {
+      const line = lines[i];
+
+      if (line.prefixLength > 0) {
+        this.rootNode.buildTree(line, line.prefixLength - 1);
+      }
+    }
+  }
+
+  decode(reader) {
+    return this.rootNode.decodeNode(reader);
+  }
+
+  assignPrefixCodes(lines) {
+    const linesLength = lines.length;
+    let prefixLengthMax = 0;
+
+    for (let i = 0; i < linesLength; i++) {
+      prefixLengthMax = Math.max(prefixLengthMax, lines[i].prefixLength);
+    }
+
+    const histogram = new Uint32Array(prefixLengthMax + 1);
+
+    for (let i = 0; i < linesLength; i++) {
+      histogram[lines[i].prefixLength]++;
+    }
+
+    let currentLength = 1,
+        firstCode = 0,
+        currentCode,
+        currentTemp,
+        line;
+    histogram[0] = 0;
+
+    while (currentLength <= prefixLengthMax) {
+      firstCode = firstCode + histogram[currentLength - 1] << 1;
+      currentCode = firstCode;
+      currentTemp = 0;
+
+      while (currentTemp < linesLength) {
+        line = lines[currentTemp];
+
+        if (line.prefixLength === currentLength) {
+          line.prefixCode = currentCode;
+          currentCode++;
+        }
+
+        currentTemp++;
+      }
+
+      currentLength++;
+    }
+  }
+
+}
+
+function decodeTablesSegment(data, start, end) {
+  const flags = data[start];
+  const lowestValue = (0, _core_utils.readUint32)(data, start + 1) & 0xffffffff;
+  const highestValue = (0, _core_utils.readUint32)(data, start + 5) & 0xffffffff;
+  const reader = new Reader(data, start + 9, end);
+  const prefixSizeBits = (flags >> 1 & 7) + 1;
+  const rangeSizeBits = (flags >> 4 & 7) + 1;
+  const lines = [];
+  let prefixLength,
+      rangeLength,
+      currentRangeLow = lowestValue;
+
+  do {
+    prefixLength = reader.readBits(prefixSizeBits);
+    rangeLength = reader.readBits(rangeSizeBits);
+    lines.push(new HuffmanLine([currentRangeLow, prefixLength, rangeLength, 0]));
+    currentRangeLow += 1 << rangeLength;
+  } while (currentRangeLow < highestValue);
+
+  prefixLength = reader.readBits(prefixSizeBits);
+  lines.push(new HuffmanLine([lowestValue - 1, prefixLength, 32, 0, "lower"]));
+  prefixLength = reader.readBits(prefixSizeBits);
+  lines.push(new HuffmanLine([highestValue, prefixLength, 32, 0]));
+
+  if (flags & 1) {
+    prefixLength = reader.readBits(prefixSizeBits);
+    lines.push(new HuffmanLine([prefixLength, 0]));
+  }
+
+  return new HuffmanTable(lines, false);
+}
+
+const standardTablesCache = {};
+
+function getStandardTable(number) {
+  let table = standardTablesCache[number];
+
+  if (table) {
+    return table;
+  }
+
+  let lines;
+
+  switch (number) {
+    case 1:
+      lines = [[0, 1, 4, 0x0], [16, 2, 8, 0x2], [272, 3, 16, 0x6], [65808, 3, 32, 0x7]];
+      break;
+
+    case 2:
+      lines = [[0, 1, 0, 0x0], [1, 2, 0, 0x2], [2, 3, 0, 0x6], [3, 4, 3, 0xe], [11, 5, 6, 0x1e], [75, 6, 32, 
0x3e], [6, 0x3f]];
+      break;
+
+    case 3:
+      lines = [[-256, 8, 8, 0xfe], [0, 1, 0, 0x0], [1, 2, 0, 0x2], [2, 3, 0, 0x6], [3, 4, 3, 0xe], [11, 5, 
6, 0x1e], [-257, 8, 32, 0xff, "lower"], [75, 7, 32, 0x7e], [6, 0x3e]];
+      break;
+
+    case 4:
+      lines = [[1, 1, 0, 0x0], [2, 2, 0, 0x2], [3, 3, 0, 0x6], [4, 4, 3, 0xe], [12, 5, 6, 0x1e], [76, 5, 32, 
0x1f]];
+      break;
+
+    case 5:
+      lines = [[-255, 7, 8, 0x7e], [1, 1, 0, 0x0], [2, 2, 0, 0x2], [3, 3, 0, 0x6], [4, 4, 3, 0xe], [12, 5, 
6, 0x1e], [-256, 7, 32, 0x7f, "lower"], [76, 6, 32, 0x3e]];
+      break;
+
+    case 6:
+      lines = [[-2048, 5, 10, 0x1c], [-1024, 4, 9, 0x8], [-512, 4, 8, 0x9], [-256, 4, 7, 0xa], [-128, 5, 6, 
0x1d], [-64, 5, 5, 0x1e], [-32, 4, 5, 0xb], [0, 2, 7, 0x0], [128, 3, 7, 0x2], [256, 3, 8, 0x3], [512, 4, 9, 
0xc], [1024, 4, 10, 0xd], [-2049, 6, 32, 0x3e, "lower"], [2048, 6, 32, 0x3f]];
+      break;
+
+    case 7:
+      lines = [[-1024, 4, 9, 0x8], [-512, 3, 8, 0x0], [-256, 4, 7, 0x9], [-128, 5, 6, 0x1a], [-64, 5, 5, 
0x1b], [-32, 4, 5, 0xa], [0, 4, 5, 0xb], [32, 5, 5, 0x1c], [64, 5, 6, 0x1d], [128, 4, 7, 0xc], [256, 3, 8, 
0x1], [512, 3, 9, 0x2], [1024, 3, 10, 0x3], [-1025, 5, 32, 0x1e, "lower"], [2048, 5, 32, 0x1f]];
+      break;
+
+    case 8:
+      lines = [[-15, 8, 3, 0xfc], [-7, 9, 1, 0x1fc], [-5, 8, 1, 0xfd], [-3, 9, 0, 0x1fd], [-2, 7, 0, 0x7c], 
[-1, 4, 0, 0xa], [0, 2, 1, 0x0], [2, 5, 0, 0x1a], [3, 6, 0, 0x3a], [4, 3, 4, 0x4], [20, 6, 1, 0x3b], [22, 4, 
4, 0xb], [38, 4, 5, 0xc], [70, 5, 6, 0x1b], [134, 5, 7, 0x1c], [262, 6, 7, 0x3c], [390, 7, 8, 0x7d], [646, 6, 
10, 0x3d], [-16, 9, 32, 0x1fe, "lower"], [1670, 9, 32, 0x1ff], [2, 0x1]];
+      break;
+
+    case 9:
+      lines = [[-31, 8, 4, 0xfc], [-15, 9, 2, 0x1fc], [-11, 8, 2, 0xfd], [-7, 9, 1, 0x1fd], [-5, 7, 1, 
0x7c], [-3, 4, 1, 0xa], [-1, 3, 1, 0x2], [1, 3, 1, 0x3], [3, 5, 1, 0x1a], [5, 6, 1, 0x3a], [7, 3, 5, 0x4], 
[39, 6, 2, 0x3b], [43, 4, 5, 0xb], [75, 4, 6, 0xc], [139, 5, 7, 0x1b], [267, 5, 8, 0x1c], [523, 6, 8, 0x3c], 
[779, 7, 9, 0x7d], [1291, 6, 11, 0x3d], [-32, 9, 32, 0x1fe, "lower"], [3339, 9, 32, 0x1ff], [2, 0x0]];
+      break;
+
+    case 10:
+      lines = [[-21, 7, 4, 0x7a], [-5, 8, 0, 0xfc], [-4, 7, 0, 0x7b], [-3, 5, 0, 0x18], [-2, 2, 2, 0x0], [2, 
5, 0, 0x19], [3, 6, 0, 0x36], [4, 7, 0, 0x7c], [5, 8, 0, 0xfd], [6, 2, 6, 0x1], [70, 5, 5, 0x1a], [102, 6, 5, 
0x37], [134, 6, 6, 0x38], [198, 6, 7, 0x39], [326, 6, 8, 0x3a], [582, 6, 9, 0x3b], [1094, 6, 10, 0x3c], 
[2118, 7, 11, 0x7d], [-22, 8, 32, 0xfe, "lower"], [4166, 8, 32, 0xff], [2, 0x2]];
+      break;
+
+    case 11:
+      lines = [[1, 1, 0, 0x0], [2, 2, 1, 0x2], [4, 4, 0, 0xc], [5, 4, 1, 0xd], [7, 5, 1, 0x1c], [9, 5, 2, 
0x1d], [13, 6, 2, 0x3c], [17, 7, 2, 0x7a], [21, 7, 3, 0x7b], [29, 7, 4, 0x7c], [45, 7, 5, 0x7d], [77, 7, 6, 
0x7e], [141, 7, 32, 0x7f]];
+      break;
+
+    case 12:
+      lines = [[1, 1, 0, 0x0], [2, 2, 0, 0x2], [3, 3, 1, 0x6], [5, 5, 0, 0x1c], [6, 5, 1, 0x1d], [8, 6, 1, 
0x3c], [10, 7, 0, 0x7a], [11, 7, 1, 0x7b], [13, 7, 2, 0x7c], [17, 7, 3, 0x7d], [25, 7, 4, 0x7e], [41, 8, 5, 
0xfe], [73, 8, 32, 0xff]];
+      break;
+
+    case 13:
+      lines = [[1, 1, 0, 0x0], [2, 3, 0, 0x4], [3, 4, 0, 0xc], [4, 5, 0, 0x1c], [5, 4, 1, 0xd], [7, 3, 3, 
0x5], [15, 6, 1, 0x3a], [17, 6, 2, 0x3b], [21, 6, 3, 0x3c], [29, 6, 4, 0x3d], [45, 6, 5, 0x3e], [77, 7, 6, 
0x7e], [141, 7, 32, 0x7f]];
+      break;
+
+    case 14:
+      lines = [[-2, 3, 0, 0x4], [-1, 3, 0, 0x5], [0, 1, 0, 0x0], [1, 3, 0, 0x6], [2, 3, 0, 0x7]];
+      break;
+
+    case 15:
+      lines = [[-24, 7, 4, 0x7c], [-8, 6, 2, 0x3c], [-4, 5, 1, 0x1c], [-2, 4, 0, 0xc], [-1, 3, 0, 0x4], [0, 
1, 0, 0x0], [1, 3, 0, 0x5], [2, 4, 0, 0xd], [3, 5, 1, 0x1d], [5, 6, 2, 0x3d], [9, 7, 4, 0x7d], [-25, 7, 32, 
0x7e, "lower"], [25, 7, 32, 0x7f]];
+      break;
+
+    default:
+      throw new Jbig2Error(`standard table B.${number} does not exist`);
+  }
+
+  for (let i = 0, ii = lines.length; i < ii; i++) {
+    lines[i] = new HuffmanLine(lines[i]);
+  }
+
+  table = new HuffmanTable(lines, true);
+  standardTablesCache[number] = table;
+  return table;
+}
+
+class Reader {
+  constructor(data, start, end) {
+    this.data = data;
+    this.start = start;
+    this.end = end;
+    this.position = start;
+    this.shift = -1;
+    this.currentByte = 0;
+  }
+
+  readBit() {
+    if (this.shift < 0) {
+      if (this.position >= this.end) {
+        throw new Jbig2Error("end of data while reading bit");
+      }
+
+      this.currentByte = this.data[this.position++];
+      this.shift = 7;
+    }
+
+    const bit = this.currentByte >> this.shift & 1;
+    this.shift--;
+    return bit;
+  }
+
+  readBits(numBits) {
+    let result = 0,
+        i;
+
+    for (i = numBits - 1; i >= 0; i--) {
+      result |= this.readBit() << i;
+    }
+
+    return result;
+  }
+
+  byteAlign() {
+    this.shift = -1;
+  }
+
+  next() {
+    if (this.position >= this.end) {
+      return -1;
+    }
+
+    return this.data[this.position++];
+  }
+
+}
+
+function getCustomHuffmanTable(index, referredTo, customTables) {
+  let currentIndex = 0;
+
+  for (let i = 0, ii = referredTo.length; i < ii; i++) {
+    const table = customTables[referredTo[i]];
+
+    if (table) {
+      if (index === currentIndex) {
+        return table;
+      }
+
+      currentIndex++;
+    }
+  }
+
+  throw new Jbig2Error("can't find custom Huffman table");
+}
+
+function getTextRegionHuffmanTables(textRegion, referredTo, customTables, numberOfSymbols, reader) {
+  const codes = [];
+
+  for (let i = 0; i <= 34; i++) {
+    const codeLength = reader.readBits(4);
+    codes.push(new HuffmanLine([i, codeLength, 0, 0]));
+  }
+
+  const runCodesTable = new HuffmanTable(codes, false);
+  codes.length = 0;
+
+  for (let i = 0; i < numberOfSymbols;) {
+    const codeLength = runCodesTable.decode(reader);
+
+    if (codeLength >= 32) {
+      let repeatedLength, numberOfRepeats, j;
+
+      switch (codeLength) {
+        case 32:
+          if (i === 0) {
+            throw new Jbig2Error("no previous value in symbol ID table");
+          }
+
+          numberOfRepeats = reader.readBits(2) + 3;
+          repeatedLength = codes[i - 1].prefixLength;
+          break;
+
+        case 33:
+          numberOfRepeats = reader.readBits(3) + 3;
+          repeatedLength = 0;
+          break;
+
+        case 34:
+          numberOfRepeats = reader.readBits(7) + 11;
+          repeatedLength = 0;
+          break;
+
+        default:
+          throw new Jbig2Error("invalid code length in symbol ID table");
+      }
+
+      for (j = 0; j < numberOfRepeats; j++) {
+        codes.push(new HuffmanLine([i, repeatedLength, 0, 0]));
+        i++;
+      }
+    } else {
+      codes.push(new HuffmanLine([i, codeLength, 0, 0]));
+      i++;
+    }
+  }
+
+  reader.byteAlign();
+  const symbolIDTable = new HuffmanTable(codes, false);
+  let customIndex = 0,
+      tableFirstS,
+      tableDeltaS,
+      tableDeltaT;
+
+  switch (textRegion.huffmanFS) {
+    case 0:
+    case 1:
+      tableFirstS = getStandardTable(textRegion.huffmanFS + 6);
+      break;
+
+    case 3:
+      tableFirstS = getCustomHuffmanTable(customIndex, referredTo, customTables);
+      customIndex++;
+      break;
+
+    default:
+      throw new Jbig2Error("invalid Huffman FS selector");
+  }
+
+  switch (textRegion.huffmanDS) {
+    case 0:
+    case 1:
+    case 2:
+      tableDeltaS = getStandardTable(textRegion.huffmanDS + 8);
+      break;
+
+    case 3:
+      tableDeltaS = getCustomHuffmanTable(customIndex, referredTo, customTables);
+      customIndex++;
+      break;
+
+    default:
+      throw new Jbig2Error("invalid Huffman DS selector");
+  }
+
+  switch (textRegion.huffmanDT) {
+    case 0:
+    case 1:
+    case 2:
+      tableDeltaT = getStandardTable(textRegion.huffmanDT + 11);
+      break;
+
+    case 3:
+      tableDeltaT = getCustomHuffmanTable(customIndex, referredTo, customTables);
+      customIndex++;
+      break;
+
+    default:
+      throw new Jbig2Error("invalid Huffman DT selector");
+  }
+
+  if (textRegion.refinement) {
+    throw new Jbig2Error("refinement with Huffman is not supported");
+  }
+
+  return {
+    symbolIDTable,
+    tableFirstS,
+    tableDeltaS,
+    tableDeltaT
+  };
+}
+
+function getSymbolDictionaryHuffmanTables(dictionary, referredTo, customTables) {
+  let customIndex = 0,
+      tableDeltaHeight,
+      tableDeltaWidth;
+
+  switch (dictionary.huffmanDHSelector) {
+    case 0:
+    case 1:
+      tableDeltaHeight = getStandardTable(dictionary.huffmanDHSelector + 4);
+      break;
+
+    case 3:
+      tableDeltaHeight = getCustomHuffmanTable(customIndex, referredTo, customTables);
+      customIndex++;
+      break;
+
+    default:
+      throw new Jbig2Error("invalid Huffman DH selector");
+  }
+
+  switch (dictionary.huffmanDWSelector) {
+    case 0:
+    case 1:
+      tableDeltaWidth = getStandardTable(dictionary.huffmanDWSelector + 2);
+      break;
+
+    case 3:
+      tableDeltaWidth = getCustomHuffmanTable(customIndex, referredTo, customTables);
+      customIndex++;
+      break;
+
+    default:
+      throw new Jbig2Error("invalid Huffman DW selector");
+  }
+
+  let tableBitmapSize, tableAggregateInstances;
+
+  if (dictionary.bitmapSizeSelector) {
+    tableBitmapSize = getCustomHuffmanTable(customIndex, referredTo, customTables);
+    customIndex++;
+  } else {
+    tableBitmapSize = getStandardTable(1);
+  }
+
+  if (dictionary.aggregationInstancesSelector) {
+    tableAggregateInstances = getCustomHuffmanTable(customIndex, referredTo, customTables);
+  } else {
+    tableAggregateInstances = getStandardTable(1);
+  }
+
+  return {
+    tableDeltaHeight,
+    tableDeltaWidth,
+    tableBitmapSize,
+    tableAggregateInstances
+  };
+}
+
+function readUncompressedBitmap(reader, width, height) {
+  const bitmap = [];
+
+  for (let y = 0; y < height; y++) {
+    const row = new Uint8Array(width);
+    bitmap.push(row);
+
+    for (let x = 0; x < width; x++) {
+      row[x] = reader.readBit();
+    }
+
+    reader.byteAlign();
+  }
+
+  return bitmap;
+}
+
+function decodeMMRBitmap(input, width, height, endOfBlock) {
+  const params = {
+    K: -1,
+    Columns: width,
+    Rows: height,
+    BlackIs1: true,
+    EndOfBlock: endOfBlock
+  };
+  const decoder = new _ccitt.CCITTFaxDecoder(input, params);
+  const bitmap = [];
+  let currentByte,
+      eof = false;
+
+  for (let y = 0; y < height; y++) {
+    const row = new Uint8Array(width);
+    bitmap.push(row);
+    let shift = -1;
+
+    for (let x = 0; x < width; x++) {
+      if (shift < 0) {
+        currentByte = decoder.readNextChar();
+
+        if (currentByte === -1) {
+          currentByte = 0;
+          eof = true;
+        }
+
+        shift = 7;
+      }
+
+      row[x] = currentByte >> shift & 1;
+      shift--;
+    }
+  }
+
+  if (endOfBlock && !eof) {
+    const lookForEOFLimit = 5;
+
+    for (let i = 0; i < lookForEOFLimit; i++) {
+      if (decoder.readNextChar() === -1) {
+        break;
+      }
+    }
+  }
+
+  return bitmap;
+}
+
+class Jbig2Image {
+  parseChunks(chunks) {
+    return parseJbig2Chunks(chunks);
+  }
+
+  parse(data) {
+    const {
+      imgData,
+      width,
+      height
+    } = parseJbig2(data);
+    this.width = width;
+    this.height = height;
+    return imgData;
+  }
+
+}
+
+exports.Jbig2Image = Jbig2Image;
+
+/***/ }),
+/* 36 */
+/***/ ((__unused_webpack_module, exports) => {
+
+
+
+Object.defineProperty(exports, "__esModule", ({
+  value: true
+}));
+exports.ArithmeticDecoder = void 0;
+const QeTable = [{
+  qe: 0x5601,
+  nmps: 1,
+  nlps: 1,
+  switchFlag: 1
+}, {
+  qe: 0x3401,
+  nmps: 2,
+  nlps: 6,
+  switchFlag: 0
+}, {
+  qe: 0x1801,
+  nmps: 3,
+  nlps: 9,
+  switchFlag: 0
+}, {
+  qe: 0x0ac1,
+  nmps: 4,
+  nlps: 12,
+  switchFlag: 0
+}, {
+  qe: 0x0521,
+  nmps: 5,
+  nlps: 29,
+  switchFlag: 0
+}, {
+  qe: 0x0221,
+  nmps: 38,
+  nlps: 33,
+  switchFlag: 0
+}, {
+  qe: 0x5601,
+  nmps: 7,
+  nlps: 6,
+  switchFlag: 1
+}, {
+  qe: 0x5401,
+  nmps: 8,
+  nlps: 14,
+  switchFlag: 0
+}, {
+  qe: 0x4801,
+  nmps: 9,
+  nlps: 14,
+  switchFlag: 0
+}, {
+  qe: 0x3801,
+  nmps: 10,
+  nlps: 14,
+  switchFlag: 0
+}, {
+  qe: 0x3001,
+  nmps: 11,
+  nlps: 17,
+  switchFlag: 0
+}, {
+  qe: 0x2401,
+  nmps: 12,
+  nlps: 18,
+  switchFlag: 0
+}, {
+  qe: 0x1c01,
+  nmps: 13,
+  nlps: 20,
+  switchFlag: 0
+}, {
+  qe: 0x1601,
+  nmps: 29,
+  nlps: 21,
+  switchFlag: 0
+}, {
+  qe: 0x5601,
+  nmps: 15,
+  nlps: 14,
+  switchFlag: 1
+}, {
+  qe: 0x5401,
+  nmps: 16,
+  nlps: 14,
+  switchFlag: 0
+}, {
+  qe: 0x5101,
+  nmps: 17,
+  nlps: 15,
+  switchFlag: 0
+}, {
+  qe: 0x4801,
+  nmps: 18,
+  nlps: 16,
+  switchFlag: 0
+}, {
+  qe: 0x3801,
+  nmps: 19,
+  nlps: 17,
+  switchFlag: 0
+}, {
+  qe: 0x3401,
+  nmps: 20,
+  nlps: 18,
+  switchFlag: 0
+}, {
+  qe: 0x3001,
+  nmps: 21,
+  nlps: 19,
+  switchFlag: 0
+}, {
+  qe: 0x2801,
+  nmps: 22,
+  nlps: 19,
+  switchFlag: 0
+}, {
+  qe: 0x2401,
+  nmps: 23,
+  nlps: 20,
+  switchFlag: 0
+}, {
+  qe: 0x2201,
+  nmps: 24,
+  nlps: 21,
+  switchFlag: 0
+}, {
+  qe: 0x1c01,
+  nmps: 25,
+  nlps: 22,
+  switchFlag: 0
+}, {
+  qe: 0x1801,
+  nmps: 26,
+  nlps: 23,
+  switchFlag: 0
+}, {
+  qe: 0x1601,
+  nmps: 27,
+  nlps: 24,
+  switchFlag: 0
+}, {
+  qe: 0x1401,
+  nmps: 28,
+  nlps: 25,
+  switchFlag: 0
+}, {
+  qe: 0x1201,
+  nmps: 29,
+  nlps: 26,
+  switchFlag: 0
+}, {
+  qe: 0x1101,
+  nmps: 30,
+  nlps: 27,
+  switchFlag: 0
+}, {
+  qe: 0x0ac1,
+  nmps: 31,
+  nlps: 28,
+  switchFlag: 0
+}, {
+  qe: 0x09c1,
+  nmps: 32,
+  nlps: 29,
+  switchFlag: 0
+}, {
+  qe: 0x08a1,
+  nmps: 33,
+  nlps: 30,
+  switchFlag: 0
+}, {
+  qe: 0x0521,
+  nmps: 34,
+  nlps: 31,
+  switchFlag: 0
+}, {
+  qe: 0x0441,
+  nmps: 35,
+  nlps: 32,
+  switchFlag: 0
+}, {
+  qe: 0x02a1,
+  nmps: 36,
+  nlps: 33,
+  switchFlag: 0
+}, {
+  qe: 0x0221,
+  nmps: 37,
+  nlps: 34,
+  switchFlag: 0
+}, {
+  qe: 0x0141,
+  nmps: 38,
+  nlps: 35,
+  switchFlag: 0
+}, {
+  qe: 0x0111,
+  nmps: 39,
+  nlps: 36,
+  switchFlag: 0
+}, {
+  qe: 0x0085,
+  nmps: 40,
+  nlps: 37,
+  switchFlag: 0
+}, {
+  qe: 0x0049,
+  nmps: 41,
+  nlps: 38,
+  switchFlag: 0
+}, {
+  qe: 0x0025,
+  nmps: 42,
+  nlps: 39,
+  switchFlag: 0
+}, {
+  qe: 0x0015,
+  nmps: 43,
+  nlps: 40,
+  switchFlag: 0
+}, {
+  qe: 0x0009,
+  nmps: 44,
+  nlps: 41,
+  switchFlag: 0
+}, {
+  qe: 0x0005,
+  nmps: 45,
+  nlps: 42,
+  switchFlag: 0
+}, {
+  qe: 0x0001,
+  nmps: 45,
+  nlps: 43,
+  switchFlag: 0
+}, {
+  qe: 0x5601,
+  nmps: 46,
+  nlps: 46,
+  switchFlag: 0
+}];
+
+class ArithmeticDecoder {
+  constructor(data, start, end) {
+    this.data = data;
+    this.bp = start;
+    this.dataEnd = end;
+    this.chigh = data[start];
+    this.clow = 0;
+    this.byteIn();
+    this.chigh = this.chigh << 7 & 0xffff | this.clow >> 9 & 0x7f;
+    this.clow = this.clow << 7 & 0xffff;
+    this.ct -= 7;
+    this.a = 0x8000;
+  }
+
+  byteIn() {
+    const data = this.data;
+    let bp = this.bp;
+
+    if (data[bp] === 0xff) {
+      if (data[bp + 1] > 0x8f) {
+        this.clow += 0xff00;
+        this.ct = 8;
+      } else {
+        bp++;
+        this.clow += data[bp] << 9;
+        this.ct = 7;
+        this.bp = bp;
+      }
+    } else {
+      bp++;
+      this.clow += bp < this.dataEnd ? data[bp] << 8 : 0xff00;
+      this.ct = 8;
+      this.bp = bp;
+    }
+
+    if (this.clow > 0xffff) {
+      this.chigh += this.clow >> 16;
+      this.clow &= 0xffff;
+    }
+  }
+
+  readBit(contexts, pos) {
+    let cx_index = contexts[pos] >> 1,
+        cx_mps = contexts[pos] & 1;
+    const qeTableIcx = QeTable[cx_index];
+    const qeIcx = qeTableIcx.qe;
+    let d;
+    let a = this.a - qeIcx;
+
+    if (this.chigh < qeIcx) {
+      if (a < qeIcx) {
+        a = qeIcx;
+        d = cx_mps;
+        cx_index = qeTableIcx.nmps;
+      } else {
+        a = qeIcx;
+        d = 1 ^ cx_mps;
+
+        if (qeTableIcx.switchFlag === 1) {
+          cx_mps = d;
+        }
+
+        cx_index = qeTableIcx.nlps;
+      }
+    } else {
+      this.chigh -= qeIcx;
+
+      if ((a & 0x8000) !== 0) {
+        this.a = a;
+        return cx_mps;
+      }
+
+      if (a < qeIcx) {
+        d = 1 ^ cx_mps;
+
+        if (qeTableIcx.switchFlag === 1) {
+          cx_mps = d;
+        }
+
+        cx_index = qeTableIcx.nlps;
+      } else {
+        d = cx_mps;
+        cx_index = qeTableIcx.nmps;
+      }
+    }
+
+    do {
+      if (this.ct === 0) {
+        this.byteIn();
+      }
+
+      a <<= 1;
+      this.chigh = this.chigh << 1 & 0xffff | this.clow >> 15 & 1;
+      this.clow = this.clow << 1 & 0xffff;
+      this.ct--;
+    } while ((a & 0x8000) === 0);
+
+    this.a = a;
+    contexts[pos] = cx_index << 1 | cx_mps;
+    return d;
+  }
+
+}
+
+exports.ArithmeticDecoder = ArithmeticDecoder;
+
+/***/ }),
+/* 37 */
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
+
+
+
+Object.defineProperty(exports, "__esModule", ({
+  value: true
+}));
+exports.JpegStream = void 0;
+
+var _decode_stream = __w_pdfjs_require__(29);
+
+var _primitives = __w_pdfjs_require__(5);
+
+var _jpg = __w_pdfjs_require__(38);
+
+var _util = __w_pdfjs_require__(2);
+
+class JpegStream extends _decode_stream.DecodeStream {
+  constructor(stream, maybeLength, params) {
+    let ch;
+
+    while ((ch = stream.getByte()) !== -1) {
+      if (ch === 0xff) {
+        stream.skip(-1);
+        break;
+      }
+    }
+
+    super(maybeLength);
+    this.stream = stream;
+    this.dict = stream.dict;
+    this.maybeLength = maybeLength;
+    this.params = params;
+  }
+
+  get bytes() {
+    return (0, _util.shadow)(this, "bytes", this.stream.getBytes(this.maybeLength));
+  }
+
+  ensureBuffer(requested) {}
+
+  readBlock() {
+    if (this.eof) {
+      return;
+    }
+
+    const jpegOptions = {
+      decodeTransform: undefined,
+      colorTransform: undefined
+    };
+    const decodeArr = this.dict.getArray("Decode", "D");
+
+    if (this.forceRGB && Array.isArray(decodeArr)) {
+      const bitsPerComponent = this.dict.get("BitsPerComponent") || 8;
+      const decodeArrLength = decodeArr.length;
+      const transform = new Int32Array(decodeArrLength);
+      let transformNeeded = false;
+      const maxValue = (1 << bitsPerComponent) - 1;
+
+      for (let i = 0; i < decodeArrLength; i += 2) {
+        transform[i] = (decodeArr[i + 1] - decodeArr[i]) * 256 | 0;
+        transform[i + 1] = decodeArr[i] * maxValue | 0;
+
+        if (transform[i] !== 256 || transform[i + 1] !== 0) {
+          transformNeeded = true;
+        }
+      }
+
+      if (transformNeeded) {
+        jpegOptions.decodeTransform = transform;
+      }
+    }
+
+    if ((0, _primitives.isDict)(this.params)) {
+      const colorTransform = this.params.get("ColorTransform");
+
+      if (Number.isInteger(colorTransform)) {
+        jpegOptions.colorTransform = colorTransform;
+      }
+    }
+
+    const jpegImage = new _jpg.JpegImage(jpegOptions);
+    jpegImage.parse(this.bytes);
+    const data = jpegImage.getData({
+      width: this.drawWidth,
+      height: this.drawHeight,
+      forceRGB: this.forceRGB,
+      isSourcePDF: true
+    });
+    this.buffer = data;
+    this.bufferLength = data.length;
+    this.eof = true;
+  }
+
+}
+
+exports.JpegStream = JpegStream;
+
+/***/ }),
+/* 38 */
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
+
+
+
+Object.defineProperty(exports, "__esModule", ({
+  value: true
+}));
+exports.JpegImage = void 0;
+
+var _util = __w_pdfjs_require__(2);
+
+var _core_utils = __w_pdfjs_require__(9);
+
+class JpegError extends _util.BaseException {
+  constructor(msg) {
+    super(`JPEG error: ${msg}`, "JpegError");
+  }
+
+}
+
+class DNLMarkerError extends _util.BaseException {
+  constructor(message, scanLines) {
+    super(message, "DNLMarkerError");
+    this.scanLines = scanLines;
+  }
+
+}
+
+class EOIMarkerError extends _util.BaseException {
+  constructor(msg) {
+    super(msg, "EOIMarkerError");
+  }
+
+}
+
+const dctZigZag = new Uint8Array([0, 1, 8, 16, 9, 2, 3, 10, 17, 24, 32, 25, 18, 11, 4, 5, 12, 19, 26, 33, 
40, 48, 41, 34, 27, 20, 13, 6, 7, 14, 21, 28, 35, 42, 49, 56, 57, 50, 43, 36, 29, 22, 15, 23, 30, 37, 44, 51, 
58, 59, 52, 45, 38, 31, 39, 46, 53, 60, 61, 54, 47, 55, 62, 63]);
+const dctCos1 = 4017;
+const dctSin1 = 799;
+const dctCos3 = 3406;
+const dctSin3 = 2276;
+const dctCos6 = 1567;
+const dctSin6 = 3784;
+const dctSqrt2 = 5793;
+const dctSqrt1d2 = 2896;
+
+function buildHuffmanTable(codeLengths, values) {
+  let k = 0,
+      i,
+      j,
+      length = 16;
+
+  while (length > 0 && !codeLengths[length - 1]) {
+    length--;
+  }
+
+  const code = [{
+    children: [],
+    index: 0
+  }];
+  let p = code[0],
+      q;
+
+  for (i = 0; i < length; i++) {
+    for (j = 0; j < codeLengths[i]; j++) {
+      p = code.pop();
+      p.children[p.index] = values[k];
+
+      while (p.index > 0) {
+        p = code.pop();
+      }
+
+      p.index++;
+      code.push(p);
+
+      while (code.length <= i) {
+        code.push(q = {
+          children: [],
+          index: 0
+        });
+        p.children[p.index] = q.children;
+        p = q;
+      }
+
+      k++;
+    }
+
+    if (i + 1 < length) {
+      code.push(q = {
+        children: [],
+        index: 0
+      });
+      p.children[p.index] = q.children;
+      p = q;
+    }
+  }
+
+  return code[0].children;
+}
+
+function getBlockBufferOffset(component, row, col) {
+  return 64 * ((component.blocksPerLine + 1) * row + col);
+}
+
+function decodeScan(data, offset, frame, components, resetInterval, spectralStart, spectralEnd, 
successivePrev, successive, parseDNLMarker = false) {
+  const mcusPerLine = frame.mcusPerLine;
+  const progressive = frame.progressive;
+  const startOffset = offset;
+  let bitsData = 0,
+      bitsCount = 0;
+
+  function readBit() {
+    if (bitsCount > 0) {
+      bitsCount--;
+      return bitsData >> bitsCount & 1;
+    }
+
+    bitsData = data[offset++];
+
+    if (bitsData === 0xff) {
+      const nextByte = data[offset++];
+
+      if (nextByte) {
+        if (nextByte === 0xdc && parseDNLMarker) {
+          offset += 2;
+          const scanLines = (0, _core_utils.readUint16)(data, offset);
+          offset += 2;
+
+          if (scanLines > 0 && scanLines !== frame.scanLines) {
+            throw new DNLMarkerError("Found DNL marker (0xFFDC) while parsing scan data", scanLines);
+          }
+        } else if (nextByte === 0xd9) {
+          if (parseDNLMarker) {
+            const maybeScanLines = blockRow * (frame.precision === 8 ? 8 : 0);
+
+            if (maybeScanLines > 0 && Math.round(frame.scanLines / maybeScanLines) >= 10) {
+              throw new DNLMarkerError("Found EOI marker (0xFFD9) while parsing scan data, " + "possibly 
caused by incorrect `scanLines` parameter", maybeScanLines);
+            }
+          }
+
+          throw new EOIMarkerError("Found EOI marker (0xFFD9) while parsing scan data");
+        }
+
+        throw new JpegError(`unexpected marker ${(bitsData << 8 | nextByte).toString(16)}`);
+      }
+    }
+
+    bitsCount = 7;
+    return bitsData >>> 7;
+  }
+
+  function decodeHuffman(tree) {
+    let node = tree;
+
+    while (true) {
+      node = node[readBit()];
+
+      switch (typeof node) {
+        case "number":
+          return node;
+
+        case "object":
+          continue;
+      }
+
+      throw new JpegError("invalid huffman sequence");
+    }
+  }
+
+  function receive(length) {
+    let n = 0;
+
+    while (length > 0) {
+      n = n << 1 | readBit();
+      length--;
+    }
+
+    return n;
+  }
+
+  function receiveAndExtend(length) {
+    if (length === 1) {
+      return readBit() === 1 ? 1 : -1;
+    }
+
+    const n = receive(length);
+
+    if (n >= 1 << length - 1) {
+      return n;
+    }
+
+    return n + (-1 << length) + 1;
+  }
+
+  function decodeBaseline(component, blockOffset) {
+    const t = decodeHuffman(component.huffmanTableDC);
+    const diff = t === 0 ? 0 : receiveAndExtend(t);
+    component.blockData[blockOffset] = component.pred += diff;
+    let k = 1;
+
+    while (k < 64) {
+      const rs = decodeHuffman(component.huffmanTableAC);
+      const s = rs & 15,
+            r = rs >> 4;
+
+      if (s === 0) {
+        if (r < 15) {
+          break;
+        }
+
+        k += 16;
+        continue;
+      }
+
+      k += r;
+      const z = dctZigZag[k];
+      component.blockData[blockOffset + z] = receiveAndExtend(s);
+      k++;
+    }
+  }
+
+  function decodeDCFirst(component, blockOffset) {
+    const t = decodeHuffman(component.huffmanTableDC);
+    const diff = t === 0 ? 0 : receiveAndExtend(t) << successive;
+    component.blockData[blockOffset] = component.pred += diff;
+  }
+
+  function decodeDCSuccessive(component, blockOffset) {
+    component.blockData[blockOffset] |= readBit() << successive;
+  }
+
+  let eobrun = 0;
+
+  function decodeACFirst(component, blockOffset) {
+    if (eobrun > 0) {
+      eobrun--;
+      return;
+    }
+
+    let k = spectralStart;
+    const e = spectralEnd;
+
+    while (k <= e) {
+      const rs = decodeHuffman(component.huffmanTableAC);
+      const s = rs & 15,
+            r = rs >> 4;
+
+      if (s === 0) {
+        if (r < 15) {
+          eobrun = receive(r) + (1 << r) - 1;
+          break;
+        }
+
+        k += 16;
+        continue;
+      }
+
+      k += r;
+      const z = dctZigZag[k];
+      component.blockData[blockOffset + z] = receiveAndExtend(s) * (1 << successive);
+      k++;
+    }
+  }
+
+  let successiveACState = 0,
+      successiveACNextValue;
+
+  function decodeACSuccessive(component, blockOffset) {
+    let k = spectralStart;
+    const e = spectralEnd;
+    let r = 0;
+    let s;
+    let rs;
+
+    while (k <= e) {
+      const offsetZ = blockOffset + dctZigZag[k];
+      const sign = component.blockData[offsetZ] < 0 ? -1 : 1;
+
+      switch (successiveACState) {
+        case 0:
+          rs = decodeHuffman(component.huffmanTableAC);
+          s = rs & 15;
+          r = rs >> 4;
+
+          if (s === 0) {
+            if (r < 15) {
+              eobrun = receive(r) + (1 << r);
+              successiveACState = 4;
+            } else {
+              r = 16;
+              successiveACState = 1;
+            }
+          } else {
+            if (s !== 1) {
+              throw new JpegError("invalid ACn encoding");
+            }
+
+            successiveACNextValue = receiveAndExtend(s);
+            successiveACState = r ? 2 : 3;
+          }
+
+          continue;
+
+        case 1:
+        case 2:
+          if (component.blockData[offsetZ]) {
+            component.blockData[offsetZ] += sign * (readBit() << successive);
+          } else {
+            r--;
+
+            if (r === 0) {
+              successiveACState = successiveACState === 2 ? 3 : 0;
+            }
+          }
+
+          break;
+
+        case 3:
+          if (component.blockData[offsetZ]) {
+            component.blockData[offsetZ] += sign * (readBit() << successive);
+          } else {
+            component.blockData[offsetZ] = successiveACNextValue << successive;
+            successiveACState = 0;
+          }
+
+          break;
+
+        case 4:
+          if (component.blockData[offsetZ]) {
+            component.blockData[offsetZ] += sign * (readBit() << successive);
+          }
+
+          break;
+      }
+
+      k++;
+    }
+
+    if (successiveACState === 4) {
+      eobrun--;
+
+      if (eobrun === 0) {
+        successiveACState = 0;
+      }
+    }
+  }
+
+  let blockRow = 0;
+
+  function decodeMcu(component, decode, mcu, row, col) {
+    const mcuRow = mcu / mcusPerLine | 0;
+    const mcuCol = mcu % mcusPerLine;
+    blockRow = mcuRow * component.v + row;
+    const blockCol = mcuCol * component.h + col;
+    const blockOffset = getBlockBufferOffset(component, blockRow, blockCol);
+    decode(component, blockOffset);
+  }
+
+  function decodeBlock(component, decode, mcu) {
+    blockRow = mcu / component.blocksPerLine | 0;
+    const blockCol = mcu % component.blocksPerLine;
+    const blockOffset = getBlockBufferOffset(component, blockRow, blockCol);
+    decode(component, blockOffset);
+  }
+
+  const componentsLength = components.length;
+  let component, i, j, k, n;
+  let decodeFn;
+
+  if (progressive) {
+    if (spectralStart === 0) {
+      decodeFn = successivePrev === 0 ? decodeDCFirst : decodeDCSuccessive;
+    } else {
+      decodeFn = successivePrev === 0 ? decodeACFirst : decodeACSuccessive;
+    }
+  } else {
+    decodeFn = decodeBaseline;
+  }
+
+  let mcu = 0,
+      fileMarker;
+  let mcuExpected;
+
+  if (componentsLength === 1) {
+    mcuExpected = components[0].blocksPerLine * components[0].blocksPerColumn;
+  } else {
+    mcuExpected = mcusPerLine * frame.mcusPerColumn;
+  }
+
+  let h, v;
+
+  while (mcu <= mcuExpected) {
+    const mcuToRead = resetInterval ? Math.min(mcuExpected - mcu, resetInterval) : mcuExpected;
+
+    if (mcuToRead > 0) {
+      for (i = 0; i < componentsLength; i++) {
+        components[i].pred = 0;
+      }
+
+      eobrun = 0;
+
+      if (componentsLength === 1) {
+        component = components[0];
+
+        for (n = 0; n < mcuToRead; n++) {
+          decodeBlock(component, decodeFn, mcu);
+          mcu++;
+        }
+      } else {
+        for (n = 0; n < mcuToRead; n++) {
+          for (i = 0; i < componentsLength; i++) {
+            component = components[i];
+            h = component.h;
+            v = component.v;
+
+            for (j = 0; j < v; j++) {
+              for (k = 0; k < h; k++) {
+                decodeMcu(component, decodeFn, mcu, j, k);
+              }
+            }
+          }
+
+          mcu++;
+        }
+      }
+    }
+
+    bitsCount = 0;
+    fileMarker = findNextFileMarker(data, offset);
+
+    if (!fileMarker) {
+      break;
+    }
+
+    if (fileMarker.invalid) {
+      const partialMsg = mcuToRead > 0 ? "unexpected" : "excessive";
+      (0, _util.warn)(`decodeScan - ${partialMsg} MCU data, current marker is: ${fileMarker.invalid}`);
+      offset = fileMarker.offset;
+    }
+
+    if (fileMarker.marker >= 0xffd0 && fileMarker.marker <= 0xffd7) {
+      offset += 2;
+    } else {
+      break;
+    }
+  }
+
+  return offset - startOffset;
+}
+
+function quantizeAndInverse(component, blockBufferOffset, p) {
+  const qt = component.quantizationTable,
+        blockData = component.blockData;
+  let v0, v1, v2, v3, v4, v5, v6, v7;
+  let p0, p1, p2, p3, p4, p5, p6, p7;
+  let t;
+
+  if (!qt) {
+    throw new JpegError("missing required Quantization Table.");
+  }
+
+  for (let row = 0; row < 64; row += 8) {
+    p0 = blockData[blockBufferOffset + row];
+    p1 = blockData[blockBufferOffset + row + 1];
+    p2 = blockData[blockBufferOffset + row + 2];
+    p3 = blockData[blockBufferOffset + row + 3];
+    p4 = blockData[blockBufferOffset + row + 4];
+    p5 = blockData[blockBufferOffset + row + 5];
+    p6 = blockData[blockBufferOffset + row + 6];
+    p7 = blockData[blockBufferOffset + row + 7];
+    p0 *= qt[row];
+
+    if ((p1 | p2 | p3 | p4 | p5 | p6 | p7) === 0) {
+      t = dctSqrt2 * p0 + 512 >> 10;
+      p[row] = t;
+      p[row + 1] = t;
+      p[row + 2] = t;
+      p[row + 3] = t;
+      p[row + 4] = t;
+      p[row + 5] = t;
+      p[row + 6] = t;
+      p[row + 7] = t;
+      continue;
+    }
+
+    p1 *= qt[row + 1];
+    p2 *= qt[row + 2];
+    p3 *= qt[row + 3];
+    p4 *= qt[row + 4];
+    p5 *= qt[row + 5];
+    p6 *= qt[row + 6];
+    p7 *= qt[row + 7];
+    v0 = dctSqrt2 * p0 + 128 >> 8;
+    v1 = dctSqrt2 * p4 + 128 >> 8;
+    v2 = p2;
+    v3 = p6;
+    v4 = dctSqrt1d2 * (p1 - p7) + 128 >> 8;
+    v7 = dctSqrt1d2 * (p1 + p7) + 128 >> 8;
+    v5 = p3 << 4;
+    v6 = p5 << 4;
+    v0 = v0 + v1 + 1 >> 1;
+    v1 = v0 - v1;
+    t = v2 * dctSin6 + v3 * dctCos6 + 128 >> 8;
+    v2 = v2 * dctCos6 - v3 * dctSin6 + 128 >> 8;
+    v3 = t;
+    v4 = v4 + v6 + 1 >> 1;
+    v6 = v4 - v6;
+    v7 = v7 + v5 + 1 >> 1;
+    v5 = v7 - v5;
+    v0 = v0 + v3 + 1 >> 1;
+    v3 = v0 - v3;
+    v1 = v1 + v2 + 1 >> 1;
+    v2 = v1 - v2;
+    t = v4 * dctSin3 + v7 * dctCos3 + 2048 >> 12;
+    v4 = v4 * dctCos3 - v7 * dctSin3 + 2048 >> 12;
+    v7 = t;
+    t = v5 * dctSin1 + v6 * dctCos1 + 2048 >> 12;
+    v5 = v5 * dctCos1 - v6 * dctSin1 + 2048 >> 12;
+    v6 = t;
+    p[row] = v0 + v7;
+    p[row + 7] = v0 - v7;
+    p[row + 1] = v1 + v6;
+    p[row + 6] = v1 - v6;
+    p[row + 2] = v2 + v5;
+    p[row + 5] = v2 - v5;
+    p[row + 3] = v3 + v4;
+    p[row + 4] = v3 - v4;
+  }
+
+  for (let col = 0; col < 8; ++col) {
+    p0 = p[col];
+    p1 = p[col + 8];
+    p2 = p[col + 16];
+    p3 = p[col + 24];
+    p4 = p[col + 32];
+    p5 = p[col + 40];
+    p6 = p[col + 48];
+    p7 = p[col + 56];
+
+    if ((p1 | p2 | p3 | p4 | p5 | p6 | p7) === 0) {
+      t = dctSqrt2 * p0 + 8192 >> 14;
+
+      if (t < -2040) {
+        t = 0;
+      } else if (t >= 2024) {
+        t = 255;
+      } else {
+        t = t + 2056 >> 4;
+      }
+
+      blockData[blockBufferOffset + col] = t;
+      blockData[blockBufferOffset + col + 8] = t;
+      blockData[blockBufferOffset + col + 16] = t;
+      blockData[blockBufferOffset + col + 24] = t;
+      blockData[blockBufferOffset + col + 32] = t;
+      blockData[blockBufferOffset + col + 40] = t;
+      blockData[blockBufferOffset + col + 48] = t;
+      blockData[blockBufferOffset + col + 56] = t;
+      continue;
+    }
+
+    v0 = dctSqrt2 * p0 + 2048 >> 12;
+    v1 = dctSqrt2 * p4 + 2048 >> 12;
+    v2 = p2;
+    v3 = p6;
+    v4 = dctSqrt1d2 * (p1 - p7) + 2048 >> 12;
+    v7 = dctSqrt1d2 * (p1 + p7) + 2048 >> 12;
+    v5 = p3;
+    v6 = p5;
+    v0 = (v0 + v1 + 1 >> 1) + 4112;
+    v1 = v0 - v1;
+    t = v2 * dctSin6 + v3 * dctCos6 + 2048 >> 12;
+    v2 = v2 * dctCos6 - v3 * dctSin6 + 2048 >> 12;
+    v3 = t;
+    v4 = v4 + v6 + 1 >> 1;
+    v6 = v4 - v6;
+    v7 = v7 + v5 + 1 >> 1;
+    v5 = v7 - v5;
+    v0 = v0 + v3 + 1 >> 1;
+    v3 = v0 - v3;
+    v1 = v1 + v2 + 1 >> 1;
+    v2 = v1 - v2;
+    t = v4 * dctSin3 + v7 * dctCos3 + 2048 >> 12;
+    v4 = v4 * dctCos3 - v7 * dctSin3 + 2048 >> 12;
+    v7 = t;
+    t = v5 * dctSin1 + v6 * dctCos1 + 2048 >> 12;
+    v5 = v5 * dctCos1 - v6 * dctSin1 + 2048 >> 12;
+    v6 = t;
+    p0 = v0 + v7;
+    p7 = v0 - v7;
+    p1 = v1 + v6;
+    p6 = v1 - v6;
+    p2 = v2 + v5;
+    p5 = v2 - v5;
+    p3 = v3 + v4;
+    p4 = v3 - v4;
+
+    if (p0 < 16) {
+      p0 = 0;
+    } else if (p0 >= 4080) {
+      p0 = 255;
+    } else {
+      p0 >>= 4;
+    }
+
+    if (p1 < 16) {
+      p1 = 0;
+    } else if (p1 >= 4080) {
+      p1 = 255;
+    } else {
+      p1 >>= 4;
+    }
+
+    if (p2 < 16) {
+      p2 = 0;
+    } else if (p2 >= 4080) {
+      p2 = 255;
+    } else {
+      p2 >>= 4;
+    }
+
+    if (p3 < 16) {
+      p3 = 0;
+    } else if (p3 >= 4080) {
+      p3 = 255;
+    } else {
+      p3 >>= 4;
+    }
+
+    if (p4 < 16) {
+      p4 = 0;
+    } else if (p4 >= 4080) {
+      p4 = 255;
+    } else {
+      p4 >>= 4;
+    }
+
+    if (p5 < 16) {
+      p5 = 0;
+    } else if (p5 >= 4080) {
+      p5 = 255;
+    } else {
+      p5 >>= 4;
+    }
+
+    if (p6 < 16) {
+      p6 = 0;
+    } else if (p6 >= 4080) {
+      p6 = 255;
+    } else {
+      p6 >>= 4;
+    }
+
+    if (p7 < 16) {
+      p7 = 0;
+    } else if (p7 >= 4080) {
+      p7 = 255;
+    } else {
+      p7 >>= 4;
+    }
+
+    blockData[blockBufferOffset + col] = p0;
+    blockData[blockBufferOffset + col + 8] = p1;
+    blockData[blockBufferOffset + col + 16] = p2;
+    blockData[blockBufferOffset + col + 24] = p3;
+    blockData[blockBufferOffset + col + 32] = p4;
+    blockData[blockBufferOffset + col + 40] = p5;
+    blockData[blockBufferOffset + col + 48] = p6;
+    blockData[blockBufferOffset + col + 56] = p7;
+  }
+}
+
+function buildComponentData(frame, component) {
+  const blocksPerLine = component.blocksPerLine;
+  const blocksPerColumn = component.blocksPerColumn;
+  const computationBuffer = new Int16Array(64);
+
+  for (let blockRow = 0; blockRow < blocksPerColumn; blockRow++) {
+    for (let blockCol = 0; blockCol < blocksPerLine; blockCol++) {
+      const offset = getBlockBufferOffset(component, blockRow, blockCol);
+      quantizeAndInverse(component, offset, computationBuffer);
+    }
+  }
+
+  return component.blockData;
+}
+
+function findNextFileMarker(data, currentPos, startPos = currentPos) {
+  const maxPos = data.length - 1;
+  let newPos = startPos < currentPos ? startPos : currentPos;
+
+  if (currentPos >= maxPos) {
+    return null;
+  }
+
+  const currentMarker = (0, _core_utils.readUint16)(data, currentPos);
+
+  if (currentMarker >= 0xffc0 && currentMarker <= 0xfffe) {
+    return {
+      invalid: null,
+      marker: currentMarker,
+      offset: currentPos
+    };
+  }
+
+  let newMarker = (0, _core_utils.readUint16)(data, newPos);
+
+  while (!(newMarker >= 0xffc0 && newMarker <= 0xfffe)) {
+    if (++newPos >= maxPos) {
+      return null;
+    }
+
+    newMarker = (0, _core_utils.readUint16)(data, newPos);
+  }
+
+  return {
+    invalid: currentMarker.toString(16),
+    marker: newMarker,
+    offset: newPos
+  };
+}
+
+class JpegImage {
+  constructor({
+    decodeTransform = null,
+    colorTransform = -1
+  } = {}) {
+    this._decodeTransform = decodeTransform;
+    this._colorTransform = colorTransform;
+  }
+
+  parse(data, {
+    dnlScanLines = null
+  } = {}) {
+    function readDataBlock() {
+      const length = (0, _core_utils.readUint16)(data, offset);
+      offset += 2;
+      let endOffset = offset + length - 2;
+      const fileMarker = findNextFileMarker(data, endOffset, offset);
+
+      if (fileMarker && fileMarker.invalid) {
+        (0, _util.warn)("readDataBlock - incorrect length, current marker is: " + fileMarker.invalid);
+        endOffset = fileMarker.offset;
+      }
+
+      const array = data.subarray(offset, endOffset);
+      offset += array.length;
+      return array;
+    }
+
+    function prepareComponents(frame) {
+      const mcusPerLine = Math.ceil(frame.samplesPerLine / 8 / frame.maxH);
+      const mcusPerColumn = Math.ceil(frame.scanLines / 8 / frame.maxV);
+
+      for (let i = 0, ii = frame.components.length; i < ii; i++) {
+        const component = frame.components[i];
+        const blocksPerLine = Math.ceil(Math.ceil(frame.samplesPerLine / 8) * component.h / frame.maxH);
+        const blocksPerColumn = Math.ceil(Math.ceil(frame.scanLines / 8) * component.v / frame.maxV);
+        const blocksPerLineForMcu = mcusPerLine * component.h;
+        const blocksPerColumnForMcu = mcusPerColumn * component.v;
+        const blocksBufferSize = 64 * blocksPerColumnForMcu * (blocksPerLineForMcu + 1);
+        component.blockData = new Int16Array(blocksBufferSize);
+        component.blocksPerLine = blocksPerLine;
+        component.blocksPerColumn = blocksPerColumn;
+      }
+
+      frame.mcusPerLine = mcusPerLine;
+      frame.mcusPerColumn = mcusPerColumn;
+    }
+
+    let offset = 0;
+    let jfif = null;
+    let adobe = null;
+    let frame, resetInterval;
+    let numSOSMarkers = 0;
+    const quantizationTables = [];
+    const huffmanTablesAC = [],
+          huffmanTablesDC = [];
+    let fileMarker = (0, _core_utils.readUint16)(data, offset);
+    offset += 2;
+
+    if (fileMarker !== 0xffd8) {
+      throw new JpegError("SOI not found");
+    }
+
+    fileMarker = (0, _core_utils.readUint16)(data, offset);
+    offset += 2;
+
+    markerLoop: while (fileMarker !== 0xffd9) {
+      let i, j, l;
+
+      switch (fileMarker) {
+        case 0xffe0:
+        case 0xffe1:
+        case 0xffe2:
+        case 0xffe3:
+        case 0xffe4:
+        case 0xffe5:
+        case 0xffe6:
+        case 0xffe7:
+        case 0xffe8:
+        case 0xffe9:
+        case 0xffea:
+        case 0xffeb:
+        case 0xffec:
+        case 0xffed:
+        case 0xffee:
+        case 0xffef:
+        case 0xfffe:
+          const appData = readDataBlock();
+
+          if (fileMarker === 0xffe0) {
+            if (appData[0] === 0x4a && appData[1] === 0x46 && appData[2] === 0x49 && appData[3] === 0x46 && 
appData[4] === 0) {
+              jfif = {
+                version: {
+                  major: appData[5],
+                  minor: appData[6]
+                },
+                densityUnits: appData[7],
+                xDensity: appData[8] << 8 | appData[9],
+                yDensity: appData[10] << 8 | appData[11],
+                thumbWidth: appData[12],
+                thumbHeight: appData[13],
+                thumbData: appData.subarray(14, 14 + 3 * appData[12] * appData[13])
+              };
+            }
+          }
+
+          if (fileMarker === 0xffee) {
+            if (appData[0] === 0x41 && appData[1] === 0x64 && appData[2] === 0x6f && appData[3] === 0x62 && 
appData[4] === 0x65) {
+              adobe = {
+                version: appData[5] << 8 | appData[6],
+                flags0: appData[7] << 8 | appData[8],
+                flags1: appData[9] << 8 | appData[10],
+                transformCode: appData[11]
+              };
+            }
+          }
+
+          break;
+
+        case 0xffdb:
+          const quantizationTablesLength = (0, _core_utils.readUint16)(data, offset);
+          offset += 2;
+          const quantizationTablesEnd = quantizationTablesLength + offset - 2;
+          let z;
+
+          while (offset < quantizationTablesEnd) {
+            const quantizationTableSpec = data[offset++];
+            const tableData = new Uint16Array(64);
+
+            if (quantizationTableSpec >> 4 === 0) {
+              for (j = 0; j < 64; j++) {
+                z = dctZigZag[j];
+                tableData[z] = data[offset++];
+              }
+            } else if (quantizationTableSpec >> 4 === 1) {
+              for (j = 0; j < 64; j++) {
+                z = dctZigZag[j];
+                tableData[z] = (0, _core_utils.readUint16)(data, offset);
+                offset += 2;
+              }
+            } else {
+              throw new JpegError("DQT - invalid table spec");
+            }
+
+            quantizationTables[quantizationTableSpec & 15] = tableData;
+          }
+
+          break;
+
+        case 0xffc0:
+        case 0xffc1:
+        case 0xffc2:
+          if (frame) {
+            throw new JpegError("Only single frame JPEGs supported");
+          }
+
+          offset += 2;
+          frame = {};
+          frame.extended = fileMarker === 0xffc1;
+          frame.progressive = fileMarker === 0xffc2;
+          frame.precision = data[offset++];
+          const sofScanLines = (0, _core_utils.readUint16)(data, offset);
+          offset += 2;
+          frame.scanLines = dnlScanLines || sofScanLines;
+          frame.samplesPerLine = (0, _core_utils.readUint16)(data, offset);
+          offset += 2;
+          frame.components = [];
+          frame.componentIds = {};
+          const componentsCount = data[offset++];
+          let maxH = 0,
+              maxV = 0;
+
+          for (i = 0; i < componentsCount; i++) {
+            const componentId = data[offset];
+            const h = data[offset + 1] >> 4;
+            const v = data[offset + 1] & 15;
+
+            if (maxH < h) {
+              maxH = h;
+            }
+
+            if (maxV < v) {
+              maxV = v;
+            }
+
+            const qId = data[offset + 2];
+            l = frame.components.push({
+              h,
+              v,
+              quantizationId: qId,
+              quantizationTable: null
+            });
+            frame.componentIds[componentId] = l - 1;
+            offset += 3;
+          }
+
+          frame.maxH = maxH;
+          frame.maxV = maxV;
+          prepareComponents(frame);
+          break;
+
+        case 0xffc4:
+          const huffmanLength = (0, _core_utils.readUint16)(data, offset);
+          offset += 2;
+
+          for (i = 2; i < huffmanLength;) {
+            const huffmanTableSpec = data[offset++];
+            const codeLengths = new Uint8Array(16);
+            let codeLengthSum = 0;
+
+            for (j = 0; j < 16; j++, offset++) {
+              codeLengthSum += codeLengths[j] = data[offset];
+            }
+
+            const huffmanValues = new Uint8Array(codeLengthSum);
+
+            for (j = 0; j < codeLengthSum; j++, offset++) {
+              huffmanValues[j] = data[offset];
+            }
+
+            i += 17 + codeLengthSum;
+            (huffmanTableSpec >> 4 === 0 ? huffmanTablesDC : huffmanTablesAC)[huffmanTableSpec & 15] = 
buildHuffmanTable(codeLengths, huffmanValues);
+          }
+
+          break;
+
+        case 0xffdd:
+          offset += 2;
+          resetInterval = (0, _core_utils.readUint16)(data, offset);
+          offset += 2;
+          break;
+
+        case 0xffda:
+          const parseDNLMarker = ++numSOSMarkers === 1 && !dnlScanLines;
+          offset += 2;
+          const selectorsCount = data[offset++],
+                components = [];
+
+          for (i = 0; i < selectorsCount; i++) {
+            const index = data[offset++];
+            const componentIndex = frame.componentIds[index];
+            const component = frame.components[componentIndex];
+            component.index = index;
+            const tableSpec = data[offset++];
+            component.huffmanTableDC = huffmanTablesDC[tableSpec >> 4];
+            component.huffmanTableAC = huffmanTablesAC[tableSpec & 15];
+            components.push(component);
+          }
+
+          const spectralStart = data[offset++],
+                spectralEnd = data[offset++],
+                successiveApproximation = data[offset++];
+
+          try {
+            const processed = decodeScan(data, offset, frame, components, resetInterval, spectralStart, 
spectralEnd, successiveApproximation >> 4, successiveApproximation & 15, parseDNLMarker);
+            offset += processed;
+          } catch (ex) {
+            if (ex instanceof DNLMarkerError) {
+              (0, _util.warn)(`${ex.message} -- attempting to re-parse the JPEG image.`);
+              return this.parse(data, {
+                dnlScanLines: ex.scanLines
+              });
+            } else if (ex instanceof EOIMarkerError) {
+              (0, _util.warn)(`${ex.message} -- ignoring the rest of the image data.`);
+              break markerLoop;
+            }
+
+            throw ex;
+          }
+
+          break;
+
+        case 0xffdc:
+          offset += 4;
+          break;
+
+        case 0xffff:
+          if (data[offset] !== 0xff) {
+            offset--;
+          }
+
+          break;
+
+        default:
+          const nextFileMarker = findNextFileMarker(data, offset - 2, offset - 3);
+
+          if (nextFileMarker && nextFileMarker.invalid) {
+            (0, _util.warn)("JpegImage.parse - unexpected data, current marker is: " + 
nextFileMarker.invalid);
+            offset = nextFileMarker.offset;
+            break;
+          }
+
+          if (!nextFileMarker || offset >= data.length - 1) {
+            (0, _util.warn)("JpegImage.parse - reached the end of the image data " + "without finding an EOI 
marker (0xFFD9).");
+            break markerLoop;
+          }
+
+          throw new JpegError("JpegImage.parse - unknown marker: " + fileMarker.toString(16));
+      }
+
+      fileMarker = (0, _core_utils.readUint16)(data, offset);
+      offset += 2;
+    }
+
+    this.width = frame.samplesPerLine;
+    this.height = frame.scanLines;
+    this.jfif = jfif;
+    this.adobe = adobe;
+    this.components = [];
+
+    for (let i = 0, ii = frame.components.length; i < ii; i++) {
+      const component = frame.components[i];
+      const quantizationTable = quantizationTables[component.quantizationId];
+
+      if (quantizationTable) {
+        component.quantizationTable = quantizationTable;
+      }
+
+      this.components.push({
+        index: component.index,
+        output: buildComponentData(frame, component),
+        scaleX: component.h / frame.maxH,
+        scaleY: component.v / frame.maxV,
+        blocksPerLine: component.blocksPerLine,
+        blocksPerColumn: component.blocksPerColumn
+      });
+    }
+
+    this.numComponents = this.components.length;
+    return undefined;
+  }
+
+  _getLinearizedBlockData(width, height, isSourcePDF = false) {
+    const scaleX = this.width / width,
+          scaleY = this.height / height;
+    let component, componentScaleX, componentScaleY, blocksPerScanline;
+    let x, y, i, j, k;
+    let index;
+    let offset = 0;
+    let output;
+    const numComponents = this.components.length;
+    const dataLength = width * height * numComponents;
+    const data = new Uint8ClampedArray(dataLength);
+    const xScaleBlockOffset = new Uint32Array(width);
+    const mask3LSB = 0xfffffff8;
+    let lastComponentScaleX;
+
+    for (i = 0; i < numComponents; i++) {
+      component = this.components[i];
+      componentScaleX = component.scaleX * scaleX;
+      componentScaleY = component.scaleY * scaleY;
+      offset = i;
+      output = component.output;
+      blocksPerScanline = component.blocksPerLine + 1 << 3;
+
+      if (componentScaleX !== lastComponentScaleX) {
+        for (x = 0; x < width; x++) {
+          j = 0 | x * componentScaleX;
+          xScaleBlockOffset[x] = (j & mask3LSB) << 3 | j & 7;
+        }
+
+        lastComponentScaleX = componentScaleX;
+      }
+
+      for (y = 0; y < height; y++) {
+        j = 0 | y * componentScaleY;
+        index = blocksPerScanline * (j & mask3LSB) | (j & 7) << 3;
+
+        for (x = 0; x < width; x++) {
+          data[offset] = output[index + xScaleBlockOffset[x]];
+          offset += numComponents;
+        }
+      }
+    }
+
+    let transform = this._decodeTransform;
+
+    if (!isSourcePDF && numComponents === 4 && !transform) {
+      transform = new Int32Array([-256, 255, -256, 255, -256, 255, -256, 255]);
+    }
+
+    if (transform) {
+      for (i = 0; i < dataLength;) {
+        for (j = 0, k = 0; j < numComponents; j++, i++, k += 2) {
+          data[i] = (data[i] * transform[k] >> 8) + transform[k + 1];
+        }
+      }
+    }
+
+    return data;
+  }
+
+  get _isColorConversionNeeded() {
+    if (this.adobe) {
+      return !!this.adobe.transformCode;
+    }
+
+    if (this.numComponents === 3) {
+      if (this._colorTransform === 0) {
+        return false;
+      } else if (this.components[0].index === 0x52 && this.components[1].index === 0x47 && 
this.components[2].index === 0x42) {
+        return false;
+      }
+
+      return true;
+    }
+
+    if (this._colorTransform === 1) {
+      return true;
+    }
+
+    return false;
+  }
+
+  _convertYccToRgb(data) {
+    let Y, Cb, Cr;
+
+    for (let i = 0, length = data.length; i < length; i += 3) {
+      Y = data[i];
+      Cb = data[i + 1];
+      Cr = data[i + 2];
+      data[i] = Y - 179.456 + 1.402 * Cr;
+      data[i + 1] = Y + 135.459 - 0.344 * Cb - 0.714 * Cr;
+      data[i + 2] = Y - 226.816 + 1.772 * Cb;
+    }
+
+    return data;
+  }
+
+  _convertYcckToRgb(data) {
+    let Y, Cb, Cr, k;
+    let offset = 0;
+
+    for (let i = 0, length = data.length; i < length; i += 4) {
+      Y = data[i];
+      Cb = data[i + 1];
+      Cr = data[i + 2];
+      k = data[i + 3];
+      data[offset++] = -122.67195406894 + Cb * (-6.60635669420364e-5 * Cb + 0.000437130475926232 * Cr - 
5.4080610064599e-5 * Y + 0.00048449797120281 * k - 0.154362151871126) + Cr * (-0.000957964378445773 * Cr + 
0.000817076911346625 * Y - 0.00477271405408747 * k + 1.53380253221734) + Y * (0.000961250184130688 * Y - 
0.00266257332283933 * k + 0.48357088451265) + k * (-0.000336197177618394 * k + 0.484791561490776);
+      data[offset++] = 107.268039397724 + Cb * (2.19927104525741e-5 * Cb - 0.000640992018297945 * Cr + 
0.000659397001245577 * Y + 0.000426105652938837 * k - 0.176491792462875) + Cr * (-0.000778269941513683 * Cr + 
0.00130872261408275 * Y + 0.000770482631801132 * k - 0.151051492775562) + Y * (0.00126935368114843 * Y - 
0.00265090189010898 * k + 0.25802910206845) + k * (-0.000318913117588328 * k - 0.213742400323665);
+      data[offset++] = -20.810012546947 + Cb * (-0.000570115196973677 * Cb - 2.63409051004589e-5 * Cr + 
0.0020741088115012 * Y - 0.00288260236853442 * k + 0.814272968359295) + Cr * (-1.53496057440975e-5 * Cr - 
0.000132689043961446 * Y + 0.000560833691242812 * k - 0.195152027534049) + Y * (0.00174418132927582 * Y - 
0.00255243321439347 * k + 0.116935020465145) + k * (-0.000343531996510555 * k + 0.24165260232407);
+    }
+
+    return data.subarray(0, offset);
+  }
+
+  _convertYcckToCmyk(data) {
+    let Y, Cb, Cr;
+
+    for (let i = 0, length = data.length; i < length; i += 4) {
+      Y = data[i];
+      Cb = data[i + 1];
+      Cr = data[i + 2];
+      data[i] = 434.456 - Y - 1.402 * Cr;
+      data[i + 1] = 119.541 - Y + 0.344 * Cb + 0.714 * Cr;
+      data[i + 2] = 481.816 - Y - 1.772 * Cb;
+    }
+
+    return data;
+  }
+
+  _convertCmykToRgb(data) {
+    let c, m, y, k;
+    let offset = 0;
+
+    for (let i = 0, length = data.length; i < length; i += 4) {
+      c = data[i];
+      m = data[i + 1];
+      y = data[i + 2];
+      k = data[i + 3];
+      data[offset++] = 255 + c * (-0.00006747147073602441 * c + 0.0008379262121013727 * m + 
0.0002894718188643294 * y + 0.003264231057537806 * k - 1.1185611867203937) + m * (0.000026374107616089405 * m 
- 0.00008626949158638572 * y - 0.0002748769067499491 * k - 0.02155688794978967) + y * 
(-0.00003878099212869363 * y - 0.0003267808279485286 * k + 0.0686742238595345) - k * (0.0003361971776183937 * 
k + 0.7430659151342254);
+      data[offset++] = 255 + c * (0.00013596372813588848 * c + 0.000924537132573585 * m + 
0.00010567359618683593 * y + 0.0004791864687436512 * k - 0.3109689587515875) + m * (-0.00023545346108370344 * 
m + 0.0002702845253534714 * y + 0.0020200308977307156 * k - 0.7488052167015494) + y * (0.00006834815998235662 
* y + 0.00015168452363460973 * k - 0.09751927774728933) - k * (0.00031891311758832814 * k + 
0.7364883807733168);
+      data[offset++] = 255 + c * (0.000013598650411385307 * c + 0.00012423956175490851 * m + 
0.0004751985097583589 * y - 0.0000036729317476630422 * k - 0.05562186980264034) + m * (0.00016141380598724676 
* m + 0.0009692239130725186 * y + 0.0007782692450036253 * k - 0.44015232367526463) + y * 
(5.068882914068769e-7 * y + 0.0017778369011375071 * k - 0.7591454649749609) - k * (0.0003435319965105553 * k 
+ 0.7063770186160144);
+    }
+
+    return data.subarray(0, offset);
+  }
+
+  getData({
+    width,
+    height,
+    forceRGB = false,
+    isSourcePDF = false
+  }) {
+    if (this.numComponents > 4) {
+      throw new JpegError("Unsupported color mode");
+    }
+
+    const data = this._getLinearizedBlockData(width, height, isSourcePDF);
+
+    if (this.numComponents === 1 && forceRGB) {
+      const dataLength = data.length;
+      const rgbData = new Uint8ClampedArray(dataLength * 3);
+      let offset = 0;
+
+      for (let i = 0; i < dataLength; i++) {
+        const grayColor = data[i];
+        rgbData[offset++] = grayColor;
+        rgbData[offset++] = grayColor;
+        rgbData[offset++] = grayColor;
+      }
+
+      return rgbData;
+    } else if (this.numComponents === 3 && this._isColorConversionNeeded) {
+      return this._convertYccToRgb(data);
+    } else if (this.numComponents === 4) {
+      if (this._isColorConversionNeeded) {
+        if (forceRGB) {
+          return this._convertYcckToRgb(data);
+        }
+
+        return this._convertYcckToCmyk(data);
+      } else if (forceRGB) {
+        return this._convertCmykToRgb(data);
+      }
+    }
+
+    return data;
+  }
+
+}
+
+exports.JpegImage = JpegImage;
+
+/***/ }),
+/* 39 */
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
+
+
+
+Object.defineProperty(exports, "__esModule", ({
+  value: true
+}));
+exports.JpxStream = void 0;
+
+var _decode_stream = __w_pdfjs_require__(29);
+
+var _jpx = __w_pdfjs_require__(40);
+
+var _util = __w_pdfjs_require__(2);
+
+class JpxStream extends _decode_stream.DecodeStream {
+  constructor(stream, maybeLength, params) {
+    super(maybeLength);
+    this.stream = stream;
+    this.dict = stream.dict;
+    this.maybeLength = maybeLength;
+    this.params = params;
+  }
+
+  get bytes() {
+    return (0, _util.shadow)(this, "bytes", this.stream.getBytes(this.maybeLength));
+  }
+
+  ensureBuffer(requested) {}
+
+  readBlock() {
+    if (this.eof) {
+      return;
+    }
+
+    const jpxImage = new _jpx.JpxImage();
+    jpxImage.parse(this.bytes);
+    const width = jpxImage.width;
+    const height = jpxImage.height;
+    const componentsCount = jpxImage.componentsCount;
+    const tileCount = jpxImage.tiles.length;
+
+    if (tileCount === 1) {
+      this.buffer = jpxImage.tiles[0].items;
+    } else {
+      const data = new Uint8ClampedArray(width * height * componentsCount);
+
+      for (let k = 0; k < tileCount; k++) {
+        const tileComponents = jpxImage.tiles[k];
+        const tileWidth = tileComponents.width;
+        const tileHeight = tileComponents.height;
+        const tileLeft = tileComponents.left;
+        const tileTop = tileComponents.top;
+        const src = tileComponents.items;
+        let srcPosition = 0;
+        let dataPosition = (width * tileTop + tileLeft) * componentsCount;
+        const imgRowSize = width * componentsCount;
+        const tileRowSize = tileWidth * componentsCount;
+
+        for (let j = 0; j < tileHeight; j++) {
+          const rowBytes = src.subarray(srcPosition, srcPosition + tileRowSize);
+          data.set(rowBytes, dataPosition);
+          srcPosition += tileRowSize;
+          dataPosition += imgRowSize;
+        }
+      }
+
+      this.buffer = data;
+    }
+
+    this.bufferLength = this.buffer.length;
+    this.eof = true;
+  }
+
+}
+
+exports.JpxStream = JpxStream;
+
+/***/ }),
+/* 40 */
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
+
+
+
+Object.defineProperty(exports, "__esModule", ({
+  value: true
+}));
+exports.JpxImage = void 0;
+
+var _util = __w_pdfjs_require__(2);
+
+var _core_utils = __w_pdfjs_require__(9);
+
+var _arithmetic_decoder = __w_pdfjs_require__(36);
+
+class JpxError extends _util.BaseException {
+  constructor(msg) {
+    super(`JPX error: ${msg}`, "JpxError");
+  }
+
+}
+
+const SubbandsGainLog2 = {
+  LL: 0,
+  LH: 1,
+  HL: 1,
+  HH: 2
+};
+
+class JpxImage {
+  constructor() {
+    this.failOnCorruptedImage = false;
+  }
+
+  parse(data) {
+    const head = (0, _core_utils.readUint16)(data, 0);
+
+    if (head === 0xff4f) {
+      this.parseCodestream(data, 0, data.length);
+      return;
+    }
+
+    const length = data.length;
+    let position = 0;
+
+    while (position < length) {
+      let headerSize = 8;
+      let lbox = (0, _core_utils.readUint32)(data, position);
+      const tbox = (0, _core_utils.readUint32)(data, position + 4);
+      position += headerSize;
+
+      if (lbox === 1) {
+        lbox = (0, _core_utils.readUint32)(data, position) * 4294967296 + (0, _core_utils.readUint32)(data, 
position + 4);
+        position += 8;
+        headerSize += 8;
+      }
+
+      if (lbox === 0) {
+        lbox = length - position + headerSize;
+      }
+
+      if (lbox < headerSize) {
+        throw new JpxError("Invalid box field size");
+      }
+
+      const dataLength = lbox - headerSize;
+      let jumpDataLength = true;
+
+      switch (tbox) {
+        case 0x6a703268:
+          jumpDataLength = false;
+          break;
+
+        case 0x636f6c72:
+          const method = data[position];
+
+          if (method === 1) {
+            const colorspace = (0, _core_utils.readUint32)(data, position + 3);
+
+            switch (colorspace) {
+              case 16:
+              case 17:
+              case 18:
+                break;
+
+              default:
+                (0, _util.warn)("Unknown colorspace " + colorspace);
+                break;
+            }
+          } else if (method === 2) {
+            (0, _util.info)("ICC profile not supported");
+          }
+
+          break;
+
+        case 0x6a703263:
+          this.parseCodestream(data, position, position + dataLength);
+          break;
+
+        case 0x6a502020:
+          if ((0, _core_utils.readUint32)(data, position) !== 0x0d0a870a) {
+            (0, _util.warn)("Invalid JP2 signature");
+          }
+
+          break;
+
+        case 0x6a501a1a:
+        case 0x66747970:
+        case 0x72726571:
+        case 0x72657320:
+        case 0x69686472:
+          break;
+
+        default:
+          const headerType = String.fromCharCode(tbox >> 24 & 0xff, tbox >> 16 & 0xff, tbox >> 8 & 0xff, 
tbox & 0xff);
+          (0, _util.warn)(`Unsupported header type ${tbox} (${headerType}).`);
+          break;
+      }
+
+      if (jumpDataLength) {
+        position += dataLength;
+      }
+    }
+  }
+
+  parseImageProperties(stream) {
+    let newByte = stream.getByte();
+
+    while (newByte >= 0) {
+      const oldByte = newByte;
+      newByte = stream.getByte();
+      const code = oldByte << 8 | newByte;
+
+      if (code === 0xff51) {
+        stream.skip(4);
+        const Xsiz = stream.getInt32() >>> 0;
+        const Ysiz = stream.getInt32() >>> 0;
+        const XOsiz = stream.getInt32() >>> 0;
+        const YOsiz = stream.getInt32() >>> 0;
+        stream.skip(16);
+        const Csiz = stream.getUint16();
+        this.width = Xsiz - XOsiz;
+        this.height = Ysiz - YOsiz;
+        this.componentsCount = Csiz;
+        this.bitsPerComponent = 8;
+        return;
+      }
+    }
+
+    throw new JpxError("No size marker found in JPX stream");
+  }
+
+  parseCodestream(data, start, end) {
+    const context = {};
+    let doNotRecover = false;
+
+    try {
+      let position = start;
+
+      while (position + 1 < end) {
+        const code = (0, _core_utils.readUint16)(data, position);
+        position += 2;
+        let length = 0,
+            j,
+            sqcd,
+            spqcds,
+            spqcdSize,
+            scalarExpounded,
+            tile;
+
+        switch (code) {
+          case 0xff4f:
+            context.mainHeader = true;
+            break;
+
+          case 0xffd9:
+            break;
+
+          case 0xff51:
+            length = (0, _core_utils.readUint16)(data, position);
+            const siz = {};
+            siz.Xsiz = (0, _core_utils.readUint32)(data, position + 4);
+            siz.Ysiz = (0, _core_utils.readUint32)(data, position + 8);
+            siz.XOsiz = (0, _core_utils.readUint32)(data, position + 12);
+            siz.YOsiz = (0, _core_utils.readUint32)(data, position + 16);
+            siz.XTsiz = (0, _core_utils.readUint32)(data, position + 20);
+            siz.YTsiz = (0, _core_utils.readUint32)(data, position + 24);
+            siz.XTOsiz = (0, _core_utils.readUint32)(data, position + 28);
+            siz.YTOsiz = (0, _core_utils.readUint32)(data, position + 32);
+            const componentsCount = (0, _core_utils.readUint16)(data, position + 36);
+            siz.Csiz = componentsCount;
+            const components = [];
+            j = position + 38;
+
+            for (let i = 0; i < componentsCount; i++) {
+              const component = {
+                precision: (data[j] & 0x7f) + 1,
+                isSigned: !!(data[j] & 0x80),
+                XRsiz: data[j + 1],
+                YRsiz: data[j + 2]
+              };
+              j += 3;
+              calculateComponentDimensions(component, siz);
+              components.push(component);
+            }
+
+            context.SIZ = siz;
+            context.components = components;
+            calculateTileGrids(context, components);
+            context.QCC = [];
+            context.COC = [];
+            break;
+
+          case 0xff5c:
+            length = (0, _core_utils.readUint16)(data, position);
+            const qcd = {};
+            j = position + 2;
+            sqcd = data[j++];
+
+            switch (sqcd & 0x1f) {
+              case 0:
+                spqcdSize = 8;
+                scalarExpounded = true;
+                break;
+
+              case 1:
+                spqcdSize = 16;
+                scalarExpounded = false;
+                break;
+
+              case 2:
+                spqcdSize = 16;
+                scalarExpounded = true;
+                break;
+
+              default:
+                throw new Error("Invalid SQcd value " + sqcd);
+            }
+
+            qcd.noQuantization = spqcdSize === 8;
+            qcd.scalarExpounded = scalarExpounded;
+            qcd.guardBits = sqcd >> 5;
+            spqcds = [];
+
+            while (j < length + position) {
+              const spqcd = {};
+
+              if (spqcdSize === 8) {
+                spqcd.epsilon = data[j++] >> 3;
+                spqcd.mu = 0;
+              } else {
+                spqcd.epsilon = data[j] >> 3;
+                spqcd.mu = (data[j] & 0x7) << 8 | data[j + 1];
+                j += 2;
+              }
+
+              spqcds.push(spqcd);
+            }
+
+            qcd.SPqcds = spqcds;
+
+            if (context.mainHeader) {
+              context.QCD = qcd;
+            } else {
+              context.currentTile.QCD = qcd;
+              context.currentTile.QCC = [];
+            }
+
+            break;
+
+          case 0xff5d:
+            length = (0, _core_utils.readUint16)(data, position);
+            const qcc = {};
+            j = position + 2;
+            let cqcc;
+
+            if (context.SIZ.Csiz < 257) {
+              cqcc = data[j++];
+            } else {
+              cqcc = (0, _core_utils.readUint16)(data, j);
+              j += 2;
+            }
+
+            sqcd = data[j++];
+
+            switch (sqcd & 0x1f) {
+              case 0:
+                spqcdSize = 8;
+                scalarExpounded = true;
+                break;
+
+              case 1:
+                spqcdSize = 16;
+                scalarExpounded = false;
+                break;
+
+              case 2:
+                spqcdSize = 16;
+                scalarExpounded = true;
+                break;
+
+              default:
+                throw new Error("Invalid SQcd value " + sqcd);
+            }
+
+            qcc.noQuantization = spqcdSize === 8;
+            qcc.scalarExpounded = scalarExpounded;
+            qcc.guardBits = sqcd >> 5;
+            spqcds = [];
+
+            while (j < length + position) {
+              const spqcd = {};
+
+              if (spqcdSize === 8) {
+                spqcd.epsilon = data[j++] >> 3;
+                spqcd.mu = 0;
+              } else {
+                spqcd.epsilon = data[j] >> 3;
+                spqcd.mu = (data[j] & 0x7) << 8 | data[j + 1];
+                j += 2;
+              }
+
+              spqcds.push(spqcd);
+            }
+
+            qcc.SPqcds = spqcds;
+
+            if (context.mainHeader) {
+              context.QCC[cqcc] = qcc;
+            } else {
+              context.currentTile.QCC[cqcc] = qcc;
+            }
+
+            break;
+
+          case 0xff52:
+            length = (0, _core_utils.readUint16)(data, position);
+            const cod = {};
+            j = position + 2;
+            const scod = data[j++];
+            cod.entropyCoderWithCustomPrecincts = !!(scod & 1);
+            cod.sopMarkerUsed = !!(scod & 2);
+            cod.ephMarkerUsed = !!(scod & 4);
+            cod.progressionOrder = data[j++];
+            cod.layersCount = (0, _core_utils.readUint16)(data, j);
+            j += 2;
+            cod.multipleComponentTransform = data[j++];
+            cod.decompositionLevelsCount = data[j++];
+            cod.xcb = (data[j++] & 0xf) + 2;
+            cod.ycb = (data[j++] & 0xf) + 2;
+            const blockStyle = data[j++];
+            cod.selectiveArithmeticCodingBypass = !!(blockStyle & 1);
+            cod.resetContextProbabilities = !!(blockStyle & 2);
+            cod.terminationOnEachCodingPass = !!(blockStyle & 4);
+            cod.verticallyStripe = !!(blockStyle & 8);
+            cod.predictableTermination = !!(blockStyle & 16);
+            cod.segmentationSymbolUsed = !!(blockStyle & 32);
+            cod.reversibleTransformation = data[j++];
+
+            if (cod.entropyCoderWithCustomPrecincts) {
+              const precinctsSizes = [];
+
+              while (j < length + position) {
+                const precinctsSize = data[j++];
+                precinctsSizes.push({
+                  PPx: precinctsSize & 0xf,
+                  PPy: precinctsSize >> 4
+                });
+              }
+
+              cod.precinctsSizes = precinctsSizes;
+            }
+
+            const unsupported = [];
+
+            if (cod.selectiveArithmeticCodingBypass) {
+              unsupported.push("selectiveArithmeticCodingBypass");
+            }
+
+            if (cod.resetContextProbabilities) {
+              unsupported.push("resetContextProbabilities");
+            }
+
+            if (cod.terminationOnEachCodingPass) {
+              unsupported.push("terminationOnEachCodingPass");
+            }
+
+            if (cod.verticallyStripe) {
+              unsupported.push("verticallyStripe");
+            }
+
+            if (cod.predictableTermination) {
+              unsupported.push("predictableTermination");
+            }
+
+            if (unsupported.length > 0) {
+              doNotRecover = true;
+              (0, _util.warn)(`JPX: Unsupported COD options (${unsupported.join(", ")}).`);
+            }
+
+            if (context.mainHeader) {
+              context.COD = cod;
+            } else {
+              context.currentTile.COD = cod;
+              context.currentTile.COC = [];
+            }
+
+            break;
+
+          case 0xff90:
+            length = (0, _core_utils.readUint16)(data, position);
+            tile = {};
+            tile.index = (0, _core_utils.readUint16)(data, position + 2);
+            tile.length = (0, _core_utils.readUint32)(data, position + 4);
+            tile.dataEnd = tile.length + position - 2;
+            tile.partIndex = data[position + 8];
+            tile.partsCount = data[position + 9];
+            context.mainHeader = false;
+
+            if (tile.partIndex === 0) {
+              tile.COD = context.COD;
+              tile.COC = context.COC.slice(0);
+              tile.QCD = context.QCD;
+              tile.QCC = context.QCC.slice(0);
+            }
+
+            context.currentTile = tile;
+            break;
+
+          case 0xff93:
+            tile = context.currentTile;
+
+            if (tile.partIndex === 0) {
+              initializeTile(context, tile.index);
+              buildPackets(context);
+            }
+
+            length = tile.dataEnd - position;
+            parseTilePackets(context, data, position, length);
+            break;
+
+          case 0xff53:
+            (0, _util.warn)("JPX: Codestream code 0xFF53 (COC) is not implemented.");
+
+          case 0xff55:
+          case 0xff57:
+          case 0xff58:
+          case 0xff64:
+            length = (0, _core_utils.readUint16)(data, position);
+            break;
+
+          default:
+            throw new Error("Unknown codestream code: " + code.toString(16));
+        }
+
+        position += length;
+      }
+    } catch (e) {
+      if (doNotRecover || this.failOnCorruptedImage) {
+        throw new JpxError(e.message);
+      } else {
+        (0, _util.warn)(`JPX: Trying to recover from: "${e.message}".`);
+      }
+    }
+
+    this.tiles = transformComponents(context);
+    this.width = context.SIZ.Xsiz - context.SIZ.XOsiz;
+    this.height = context.SIZ.Ysiz - context.SIZ.YOsiz;
+    this.componentsCount = context.SIZ.Csiz;
+  }
+
+}
+
+exports.JpxImage = JpxImage;
+
+function calculateComponentDimensions(component, siz) {
+  component.x0 = Math.ceil(siz.XOsiz / component.XRsiz);
+  component.x1 = Math.ceil(siz.Xsiz / component.XRsiz);
+  component.y0 = Math.ceil(siz.YOsiz / component.YRsiz);
+  component.y1 = Math.ceil(siz.Ysiz / component.YRsiz);
+  component.width = component.x1 - component.x0;
+  component.height = component.y1 - component.y0;
+}
+
+function calculateTileGrids(context, components) {
+  const siz = context.SIZ;
+  const tiles = [];
+  let tile;
+  const numXtiles = Math.ceil((siz.Xsiz - siz.XTOsiz) / siz.XTsiz);
+  const numYtiles = Math.ceil((siz.Ysiz - siz.YTOsiz) / siz.YTsiz);
+
+  for (let q = 0; q < numYtiles; q++) {
+    for (let p = 0; p < numXtiles; p++) {
+      tile = {};
+      tile.tx0 = Math.max(siz.XTOsiz + p * siz.XTsiz, siz.XOsiz);
+      tile.ty0 = Math.max(siz.YTOsiz + q * siz.YTsiz, siz.YOsiz);
+      tile.tx1 = Math.min(siz.XTOsiz + (p + 1) * siz.XTsiz, siz.Xsiz);
+      tile.ty1 = Math.min(siz.YTOsiz + (q + 1) * siz.YTsiz, siz.Ysiz);
+      tile.width = tile.tx1 - tile.tx0;
+      tile.height = tile.ty1 - tile.ty0;
+      tile.components = [];
+      tiles.push(tile);
+    }
+  }
+
+  context.tiles = tiles;
+  const componentsCount = siz.Csiz;
+
+  for (let i = 0, ii = componentsCount; i < ii; i++) {
+    const component = components[i];
+
+    for (let j = 0, jj = tiles.length; j < jj; j++) {
+      const tileComponent = {};
+      tile = tiles[j];
+      tileComponent.tcx0 = Math.ceil(tile.tx0 / component.XRsiz);
+      tileComponent.tcy0 = Math.ceil(tile.ty0 / component.YRsiz);
+      tileComponent.tcx1 = Math.ceil(tile.tx1 / component.XRsiz);
+      tileComponent.tcy1 = Math.ceil(tile.ty1 / component.YRsiz);
+      tileComponent.width = tileComponent.tcx1 - tileComponent.tcx0;
+      tileComponent.height = tileComponent.tcy1 - tileComponent.tcy0;
+      tile.components[i] = tileComponent;
+    }
+  }
+}
+
+function getBlocksDimensions(context, component, r) {
+  const codOrCoc = component.codingStyleParameters;
+  const result = {};
+
+  if (!codOrCoc.entropyCoderWithCustomPrecincts) {
+    result.PPx = 15;
+    result.PPy = 15;
+  } else {
+    result.PPx = codOrCoc.precinctsSizes[r].PPx;
+    result.PPy = codOrCoc.precinctsSizes[r].PPy;
+  }
+
+  result.xcb_ = r > 0 ? Math.min(codOrCoc.xcb, result.PPx - 1) : Math.min(codOrCoc.xcb, result.PPx);
+  result.ycb_ = r > 0 ? Math.min(codOrCoc.ycb, result.PPy - 1) : Math.min(codOrCoc.ycb, result.PPy);
+  return result;
+}
+
+function buildPrecincts(context, resolution, dimensions) {
+  const precinctWidth = 1 << dimensions.PPx;
+  const precinctHeight = 1 << dimensions.PPy;
+  const isZeroRes = resolution.resLevel === 0;
+  const precinctWidthInSubband = 1 << dimensions.PPx + (isZeroRes ? 0 : -1);
+  const precinctHeightInSubband = 1 << dimensions.PPy + (isZeroRes ? 0 : -1);
+  const numprecinctswide = resolution.trx1 > resolution.trx0 ? Math.ceil(resolution.trx1 / precinctWidth) - 
Math.floor(resolution.trx0 / precinctWidth) : 0;
+  const numprecinctshigh = resolution.try1 > resolution.try0 ? Math.ceil(resolution.try1 / precinctHeight) - 
Math.floor(resolution.try0 / precinctHeight) : 0;
+  const numprecincts = numprecinctswide * numprecinctshigh;
+  resolution.precinctParameters = {
+    precinctWidth,
+    precinctHeight,
+    numprecinctswide,
+    numprecinctshigh,
+    numprecincts,
+    precinctWidthInSubband,
+    precinctHeightInSubband
+  };
+}
+
+function buildCodeblocks(context, subband, dimensions) {
+  const xcb_ = dimensions.xcb_;
+  const ycb_ = dimensions.ycb_;
+  const codeblockWidth = 1 << xcb_;
+  const codeblockHeight = 1 << ycb_;
+  const cbx0 = subband.tbx0 >> xcb_;
+  const cby0 = subband.tby0 >> ycb_;
+  const cbx1 = subband.tbx1 + codeblockWidth - 1 >> xcb_;
+  const cby1 = subband.tby1 + codeblockHeight - 1 >> ycb_;
+  const precinctParameters = subband.resolution.precinctParameters;
+  const codeblocks = [];
+  const precincts = [];
+  let i, j, codeblock, precinctNumber;
+
+  for (j = cby0; j < cby1; j++) {
+    for (i = cbx0; i < cbx1; i++) {
+      codeblock = {
+        cbx: i,
+        cby: j,
+        tbx0: codeblockWidth * i,
+        tby0: codeblockHeight * j,
+        tbx1: codeblockWidth * (i + 1),
+        tby1: codeblockHeight * (j + 1)
+      };
+      codeblock.tbx0_ = Math.max(subband.tbx0, codeblock.tbx0);
+      codeblock.tby0_ = Math.max(subband.tby0, codeblock.tby0);
+      codeblock.tbx1_ = Math.min(subband.tbx1, codeblock.tbx1);
+      codeblock.tby1_ = Math.min(subband.tby1, codeblock.tby1);
+      const pi = Math.floor((codeblock.tbx0_ - subband.tbx0) / precinctParameters.precinctWidthInSubband);
+      const pj = Math.floor((codeblock.tby0_ - subband.tby0) / precinctParameters.precinctHeightInSubband);
+      precinctNumber = pi + pj * precinctParameters.numprecinctswide;
+      codeblock.precinctNumber = precinctNumber;
+      codeblock.subbandType = subband.type;
+      codeblock.Lblock = 3;
+
+      if (codeblock.tbx1_ <= codeblock.tbx0_ || codeblock.tby1_ <= codeblock.tby0_) {
+        continue;
+      }
+
+      codeblocks.push(codeblock);
+      let precinct = precincts[precinctNumber];
+
+      if (precinct !== undefined) {
+        if (i < precinct.cbxMin) {
+          precinct.cbxMin = i;
+        } else if (i > precinct.cbxMax) {
+          precinct.cbxMax = i;
+        }
+
+        if (j < precinct.cbyMin) {
+          precinct.cbxMin = j;
+        } else if (j > precinct.cbyMax) {
+          precinct.cbyMax = j;
+        }
+      } else {
+        precincts[precinctNumber] = precinct = {
+          cbxMin: i,
+          cbyMin: j,
+          cbxMax: i,
+          cbyMax: j
+        };
+      }
+
+      codeblock.precinct = precinct;
+    }
+  }
+
+  subband.codeblockParameters = {
+    codeblockWidth: xcb_,
+    codeblockHeight: ycb_,
+    numcodeblockwide: cbx1 - cbx0 + 1,
+    numcodeblockhigh: cby1 - cby0 + 1
+  };
+  subband.codeblocks = codeblocks;
+  subband.precincts = precincts;
+}
+
+function createPacket(resolution, precinctNumber, layerNumber) {
+  const precinctCodeblocks = [];
+  const subbands = resolution.subbands;
+
+  for (let i = 0, ii = subbands.length; i < ii; i++) {
+    const subband = subbands[i];
+    const codeblocks = subband.codeblocks;
+
+    for (let j = 0, jj = codeblocks.length; j < jj; j++) {
+      const codeblock = codeblocks[j];
+
+      if (codeblock.precinctNumber !== precinctNumber) {
+        continue;
+      }
+
+      precinctCodeblocks.push(codeblock);
+    }
+  }
+
+  return {
+    layerNumber,
+    codeblocks: precinctCodeblocks
+  };
+}
+
+function LayerResolutionComponentPositionIterator(context) {
+  const siz = context.SIZ;
+  const tileIndex = context.currentTile.index;
+  const tile = context.tiles[tileIndex];
+  const layersCount = tile.codingStyleDefaultParameters.layersCount;
+  const componentsCount = siz.Csiz;
+  let maxDecompositionLevelsCount = 0;
+
+  for (let q = 0; q < componentsCount; q++) {
+    maxDecompositionLevelsCount = Math.max(maxDecompositionLevelsCount, 
tile.components[q].codingStyleParameters.decompositionLevelsCount);
+  }
+
+  let l = 0,
+      r = 0,
+      i = 0,
+      k = 0;
+
+  this.nextPacket = function JpxImage_nextPacket() {
+    for (; l < layersCount; l++) {
+      for (; r <= maxDecompositionLevelsCount; r++) {
+        for (; i < componentsCount; i++) {
+          const component = tile.components[i];
+
+          if (r > component.codingStyleParameters.decompositionLevelsCount) {
+            continue;
+          }
+
+          const resolution = component.resolutions[r];
+          const numprecincts = resolution.precinctParameters.numprecincts;
+
+          for (; k < numprecincts;) {
+            const packet = createPacket(resolution, k, l);
+            k++;
+            return packet;
+          }
+
+          k = 0;
+        }
+
+        i = 0;
+      }
+
+      r = 0;
+    }
+
+    throw new JpxError("Out of packets");
+  };
+}
+
+function ResolutionLayerComponentPositionIterator(context) {
+  const siz = context.SIZ;
+  const tileIndex = context.currentTile.index;
+  const tile = context.tiles[tileIndex];
+  const layersCount = tile.codingStyleDefaultParameters.layersCount;
+  const componentsCount = siz.Csiz;
+  let maxDecompositionLevelsCount = 0;
+
+  for (let q = 0; q < componentsCount; q++) {
+    maxDecompositionLevelsCount = Math.max(maxDecompositionLevelsCount, 
tile.components[q].codingStyleParameters.decompositionLevelsCount);
+  }
+
+  let r = 0,
+      l = 0,
+      i = 0,
+      k = 0;
+
+  this.nextPacket = function JpxImage_nextPacket() {
+    for (; r <= maxDecompositionLevelsCount; r++) {
+      for (; l < layersCount; l++) {
+        for (; i < componentsCount; i++) {
+          const component = tile.components[i];
+
+          if (r > component.codingStyleParameters.decompositionLevelsCount) {
+            continue;
+          }
+
+          const resolution = component.resolutions[r];
+          const numprecincts = resolution.precinctParameters.numprecincts;
+
+          for (; k < numprecincts;) {
+            const packet = createPacket(resolution, k, l);
+            k++;
+            return packet;
+          }
+
+          k = 0;
+        }
+
+        i = 0;
+      }
+
+      l = 0;
+    }
+
+    throw new JpxError("Out of packets");
+  };
+}
+
+function ResolutionPositionComponentLayerIterator(context) {
+  const siz = context.SIZ;
+  const tileIndex = context.currentTile.index;
+  const tile = context.tiles[tileIndex];
+  const layersCount = tile.codingStyleDefaultParameters.layersCount;
+  const componentsCount = siz.Csiz;
+  let l, r, c, p;
+  let maxDecompositionLevelsCount = 0;
+
+  for (c = 0; c < componentsCount; c++) {
+    const component = tile.components[c];
+    maxDecompositionLevelsCount = Math.max(maxDecompositionLevelsCount, 
component.codingStyleParameters.decompositionLevelsCount);
+  }
+
+  const maxNumPrecinctsInLevel = new Int32Array(maxDecompositionLevelsCount + 1);
+
+  for (r = 0; r <= maxDecompositionLevelsCount; ++r) {
+    let maxNumPrecincts = 0;
+
+    for (c = 0; c < componentsCount; ++c) {
+      const resolutions = tile.components[c].resolutions;
+
+      if (r < resolutions.length) {
+        maxNumPrecincts = Math.max(maxNumPrecincts, resolutions[r].precinctParameters.numprecincts);
+      }
+    }
+
+    maxNumPrecinctsInLevel[r] = maxNumPrecincts;
+  }
+
+  l = 0;
+  r = 0;
+  c = 0;
+  p = 0;
+
+  this.nextPacket = function JpxImage_nextPacket() {
+    for (; r <= maxDecompositionLevelsCount; r++) {
+      for (; p < maxNumPrecinctsInLevel[r]; p++) {
+        for (; c < componentsCount; c++) {
+          const component = tile.components[c];
+
+          if (r > component.codingStyleParameters.decompositionLevelsCount) {
+            continue;
+          }
+
+          const resolution = component.resolutions[r];
+          const numprecincts = resolution.precinctParameters.numprecincts;
+
+          if (p >= numprecincts) {
+            continue;
+          }
+
+          for (; l < layersCount;) {
+            const packet = createPacket(resolution, p, l);
+            l++;
+            return packet;
+          }
+
+          l = 0;
+        }
+
+        c = 0;
+      }
+
+      p = 0;
+    }
+
+    throw new JpxError("Out of packets");
+  };
+}
+
+function PositionComponentResolutionLayerIterator(context) {
+  const siz = context.SIZ;
+  const tileIndex = context.currentTile.index;
+  const tile = context.tiles[tileIndex];
+  const layersCount = tile.codingStyleDefaultParameters.layersCount;
+  const componentsCount = siz.Csiz;
+  const precinctsSizes = getPrecinctSizesInImageScale(tile);
+  const precinctsIterationSizes = precinctsSizes;
+  let l = 0,
+      r = 0,
+      c = 0,
+      px = 0,
+      py = 0;
+
+  this.nextPacket = function JpxImage_nextPacket() {
+    for (; py < precinctsIterationSizes.maxNumHigh; py++) {
+      for (; px < precinctsIterationSizes.maxNumWide; px++) {
+        for (; c < componentsCount; c++) {
+          const component = tile.components[c];
+          const decompositionLevelsCount = component.codingStyleParameters.decompositionLevelsCount;
+
+          for (; r <= decompositionLevelsCount; r++) {
+            const resolution = component.resolutions[r];
+            const sizeInImageScale = precinctsSizes.components[c].resolutions[r];
+            const k = getPrecinctIndexIfExist(px, py, sizeInImageScale, precinctsIterationSizes, resolution);
+
+            if (k === null) {
+              continue;
+            }
+
+            for (; l < layersCount;) {
+              const packet = createPacket(resolution, k, l);
+              l++;
+              return packet;
+            }
+
+            l = 0;
+          }
+
+          r = 0;
+        }
+
+        c = 0;
+      }
+
+      px = 0;
+    }
+
+    throw new JpxError("Out of packets");
+  };
+}
+
+function ComponentPositionResolutionLayerIterator(context) {
+  const siz = context.SIZ;
+  const tileIndex = context.currentTile.index;
+  const tile = context.tiles[tileIndex];
+  const layersCount = tile.codingStyleDefaultParameters.layersCount;
+  const componentsCount = siz.Csiz;
+  const precinctsSizes = getPrecinctSizesInImageScale(tile);
+  let l = 0,
+      r = 0,
+      c = 0,
+      px = 0,
+      py = 0;
+
+  this.nextPacket = function JpxImage_nextPacket() {
+    for (; c < componentsCount; ++c) {
+      const component = tile.components[c];
+      const precinctsIterationSizes = precinctsSizes.components[c];
+      const decompositionLevelsCount = component.codingStyleParameters.decompositionLevelsCount;
+
+      for (; py < precinctsIterationSizes.maxNumHigh; py++) {
+        for (; px < precinctsIterationSizes.maxNumWide; px++) {
+          for (; r <= decompositionLevelsCount; r++) {
+            const resolution = component.resolutions[r];
+            const sizeInImageScale = precinctsIterationSizes.resolutions[r];
+            const k = getPrecinctIndexIfExist(px, py, sizeInImageScale, precinctsIterationSizes, resolution);
+
+            if (k === null) {
+              continue;
+            }
+
+            for (; l < layersCount;) {
+              const packet = createPacket(resolution, k, l);
+              l++;
+              return packet;
+            }
+
+            l = 0;
+          }
+
+          r = 0;
+        }
+
+        px = 0;
+      }
+
+      py = 0;
+    }
+
+    throw new JpxError("Out of packets");
+  };
+}
+
+function getPrecinctIndexIfExist(pxIndex, pyIndex, sizeInImageScale, precinctIterationSizes, resolution) {
+  const posX = pxIndex * precinctIterationSizes.minWidth;
+  const posY = pyIndex * precinctIterationSizes.minHeight;
+
+  if (posX % sizeInImageScale.width !== 0 || posY % sizeInImageScale.height !== 0) {
+    return null;
+  }
+
+  const startPrecinctRowIndex = posY / sizeInImageScale.width * 
resolution.precinctParameters.numprecinctswide;
+  return posX / sizeInImageScale.height + startPrecinctRowIndex;
+}
+
+function getPrecinctSizesInImageScale(tile) {
+  const componentsCount = tile.components.length;
+  let minWidth = Number.MAX_VALUE;
+  let minHeight = Number.MAX_VALUE;
+  let maxNumWide = 0;
+  let maxNumHigh = 0;
+  const sizePerComponent = new Array(componentsCount);
+
+  for (let c = 0; c < componentsCount; c++) {
+    const component = tile.components[c];
+    const decompositionLevelsCount = component.codingStyleParameters.decompositionLevelsCount;
+    const sizePerResolution = new Array(decompositionLevelsCount + 1);
+    let minWidthCurrentComponent = Number.MAX_VALUE;
+    let minHeightCurrentComponent = Number.MAX_VALUE;
+    let maxNumWideCurrentComponent = 0;
+    let maxNumHighCurrentComponent = 0;
+    let scale = 1;
+
+    for (let r = decompositionLevelsCount; r >= 0; --r) {
+      const resolution = component.resolutions[r];
+      const widthCurrentResolution = scale * resolution.precinctParameters.precinctWidth;
+      const heightCurrentResolution = scale * resolution.precinctParameters.precinctHeight;
+      minWidthCurrentComponent = Math.min(minWidthCurrentComponent, widthCurrentResolution);
+      minHeightCurrentComponent = Math.min(minHeightCurrentComponent, heightCurrentResolution);
+      maxNumWideCurrentComponent = Math.max(maxNumWideCurrentComponent, 
resolution.precinctParameters.numprecinctswide);
+      maxNumHighCurrentComponent = Math.max(maxNumHighCurrentComponent, 
resolution.precinctParameters.numprecinctshigh);
+      sizePerResolution[r] = {
+        width: widthCurrentResolution,
+        height: heightCurrentResolution
+      };
+      scale <<= 1;
+    }
+
+    minWidth = Math.min(minWidth, minWidthCurrentComponent);
+    minHeight = Math.min(minHeight, minHeightCurrentComponent);
+    maxNumWide = Math.max(maxNumWide, maxNumWideCurrentComponent);
+    maxNumHigh = Math.max(maxNumHigh, maxNumHighCurrentComponent);
+    sizePerComponent[c] = {
+      resolutions: sizePerResolution,
+      minWidth: minWidthCurrentComponent,
+      minHeight: minHeightCurrentComponent,
+      maxNumWide: maxNumWideCurrentComponent,
+      maxNumHigh: maxNumHighCurrentComponent
+    };
+  }
+
+  return {
+    components: sizePerComponent,
+    minWidth,
+    minHeight,
+    maxNumWide,
+    maxNumHigh
+  };
+}
+
+function buildPackets(context) {
+  const siz = context.SIZ;
+  const tileIndex = context.currentTile.index;
+  const tile = context.tiles[tileIndex];
+  const componentsCount = siz.Csiz;
+
+  for (let c = 0; c < componentsCount; c++) {
+    const component = tile.components[c];
+    const decompositionLevelsCount = component.codingStyleParameters.decompositionLevelsCount;
+    const resolutions = [];
+    const subbands = [];
+
+    for (let r = 0; r <= decompositionLevelsCount; r++) {
+      const blocksDimensions = getBlocksDimensions(context, component, r);
+      const resolution = {};
+      const scale = 1 << decompositionLevelsCount - r;
+      resolution.trx0 = Math.ceil(component.tcx0 / scale);
+      resolution.try0 = Math.ceil(component.tcy0 / scale);
+      resolution.trx1 = Math.ceil(component.tcx1 / scale);
+      resolution.try1 = Math.ceil(component.tcy1 / scale);
+      resolution.resLevel = r;
+      buildPrecincts(context, resolution, blocksDimensions);
+      resolutions.push(resolution);
+      let subband;
+
+      if (r === 0) {
+        subband = {};
+        subband.type = "LL";
+        subband.tbx0 = Math.ceil(component.tcx0 / scale);
+        subband.tby0 = Math.ceil(component.tcy0 / scale);
+        subband.tbx1 = Math.ceil(component.tcx1 / scale);
+        subband.tby1 = Math.ceil(component.tcy1 / scale);
+        subband.resolution = resolution;
+        buildCodeblocks(context, subband, blocksDimensions);
+        subbands.push(subband);
+        resolution.subbands = [subband];
+      } else {
+        const bscale = 1 << decompositionLevelsCount - r + 1;
+        const resolutionSubbands = [];
+        subband = {};
+        subband.type = "HL";
+        subband.tbx0 = Math.ceil(component.tcx0 / bscale - 0.5);
+        subband.tby0 = Math.ceil(component.tcy0 / bscale);
+        subband.tbx1 = Math.ceil(component.tcx1 / bscale - 0.5);
+        subband.tby1 = Math.ceil(component.tcy1 / bscale);
+        subband.resolution = resolution;
+        buildCodeblocks(context, subband, blocksDimensions);
+        subbands.push(subband);
+        resolutionSubbands.push(subband);
+        subband = {};
+        subband.type = "LH";
+        subband.tbx0 = Math.ceil(component.tcx0 / bscale);
+        subband.tby0 = Math.ceil(component.tcy0 / bscale - 0.5);
+        subband.tbx1 = Math.ceil(component.tcx1 / bscale);
+        subband.tby1 = Math.ceil(component.tcy1 / bscale - 0.5);
+        subband.resolution = resolution;
+        buildCodeblocks(context, subband, blocksDimensions);
+        subbands.push(subband);
+        resolutionSubbands.push(subband);
+        subband = {};
+        subband.type = "HH";
+        subband.tbx0 = Math.ceil(component.tcx0 / bscale - 0.5);
+        subband.tby0 = Math.ceil(component.tcy0 / bscale - 0.5);
+        subband.tbx1 = Math.ceil(component.tcx1 / bscale - 0.5);
+        subband.tby1 = Math.ceil(component.tcy1 / bscale - 0.5);
+        subband.resolution = resolution;
+        buildCodeblocks(context, subband, blocksDimensions);
+        subbands.push(subband);
+        resolutionSubbands.push(subband);
+        resolution.subbands = resolutionSubbands;
+      }
+    }
+
+    component.resolutions = resolutions;
+    component.subbands = subbands;
+  }
+
+  const progressionOrder = tile.codingStyleDefaultParameters.progressionOrder;
+
+  switch (progressionOrder) {
+    case 0:
+      tile.packetsIterator = new LayerResolutionComponentPositionIterator(context);
+      break;
+
+    case 1:
+      tile.packetsIterator = new ResolutionLayerComponentPositionIterator(context);
+      break;
+
+    case 2:
+      tile.packetsIterator = new ResolutionPositionComponentLayerIterator(context);
+      break;
+
+    case 3:
+      tile.packetsIterator = new PositionComponentResolutionLayerIterator(context);
+      break;
+
+    case 4:
+      tile.packetsIterator = new ComponentPositionResolutionLayerIterator(context);
+      break;
+
+    default:
+      throw new JpxError(`Unsupported progression order ${progressionOrder}`);
+  }
+}
+
+function parseTilePackets(context, data, offset, dataLength) {
+  let position = 0;
+  let buffer,
+      bufferSize = 0,
+      skipNextBit = false;
+
+  function readBits(count) {
+    while (bufferSize < count) {
+      const b = data[offset + position];
+      position++;
+
+      if (skipNextBit) {
+        buffer = buffer << 7 | b;
+        bufferSize += 7;
+        skipNextBit = false;
+      } else {
+        buffer = buffer << 8 | b;
+        bufferSize += 8;
+      }
+
+      if (b === 0xff) {
+        skipNextBit = true;
+      }
+    }
+
+    bufferSize -= count;
+    return buffer >>> bufferSize & (1 << count) - 1;
+  }
+
+  function skipMarkerIfEqual(value) {
+    if (data[offset + position - 1] === 0xff && data[offset + position] === value) {
+      skipBytes(1);
+      return true;
+    } else if (data[offset + position] === 0xff && data[offset + position + 1] === value) {
+      skipBytes(2);
+      return true;
+    }
+
+    return false;
+  }
+
+  function skipBytes(count) {
+    position += count;
+  }
+
+  function alignToByte() {
+    bufferSize = 0;
+
+    if (skipNextBit) {
+      position++;
+      skipNextBit = false;
+    }
+  }
+
+  function readCodingpasses() {
+    if (readBits(1) === 0) {
+      return 1;
+    }
+
+    if (readBits(1) === 0) {
+      return 2;
+    }
+
+    let value = readBits(2);
+
+    if (value < 3) {
+      return value + 3;
+    }
+
+    value = readBits(5);
+
+    if (value < 31) {
+      return value + 6;
+    }
+
+    value = readBits(7);
+    return value + 37;
+  }
+
+  const tileIndex = context.currentTile.index;
+  const tile = context.tiles[tileIndex];
+  const sopMarkerUsed = context.COD.sopMarkerUsed;
+  const ephMarkerUsed = context.COD.ephMarkerUsed;
+  const packetsIterator = tile.packetsIterator;
+
+  while (position < dataLength) {
+    alignToByte();
+
+    if (sopMarkerUsed && skipMarkerIfEqual(0x91)) {
+      skipBytes(4);
+    }
+
+    const packet = packetsIterator.nextPacket();
+
+    if (!readBits(1)) {
+      continue;
+    }
+
+    const layerNumber = packet.layerNumber,
+          queue = [];
+    let codeblock;
+
+    for (let i = 0, ii = packet.codeblocks.length; i < ii; i++) {
+      codeblock = packet.codeblocks[i];
+      let precinct = codeblock.precinct;
+      const codeblockColumn = codeblock.cbx - precinct.cbxMin;
+      const codeblockRow = codeblock.cby - precinct.cbyMin;
+      let codeblockIncluded = false;
+      let firstTimeInclusion = false;
+      let valueReady, zeroBitPlanesTree;
+
+      if (codeblock.included !== undefined) {
+        codeblockIncluded = !!readBits(1);
+      } else {
+        precinct = codeblock.precinct;
+        let inclusionTree;
+
+        if (precinct.inclusionTree !== undefined) {
+          inclusionTree = precinct.inclusionTree;
+        } else {
+          const width = precinct.cbxMax - precinct.cbxMin + 1;
+          const height = precinct.cbyMax - precinct.cbyMin + 1;
+          inclusionTree = new InclusionTree(width, height, layerNumber);
+          zeroBitPlanesTree = new TagTree(width, height);
+          precinct.inclusionTree = inclusionTree;
+          precinct.zeroBitPlanesTree = zeroBitPlanesTree;
+
+          for (let l = 0; l < layerNumber; l++) {
+            if (readBits(1) !== 0) {
+              throw new JpxError("Invalid tag tree");
+            }
+          }
+        }
+
+        if (inclusionTree.reset(codeblockColumn, codeblockRow, layerNumber)) {
+          while (true) {
+            if (readBits(1)) {
+              valueReady = !inclusionTree.nextLevel();
+
+              if (valueReady) {
+                codeblock.included = true;
+                codeblockIncluded = firstTimeInclusion = true;
+                break;
+              }
+            } else {
+              inclusionTree.incrementValue(layerNumber);
+              break;
+            }
+          }
+        }
+      }
+
+      if (!codeblockIncluded) {
+        continue;
+      }
+
+      if (firstTimeInclusion) {
+        zeroBitPlanesTree = precinct.zeroBitPlanesTree;
+        zeroBitPlanesTree.reset(codeblockColumn, codeblockRow);
+
+        while (true) {
+          if (readBits(1)) {
+            valueReady = !zeroBitPlanesTree.nextLevel();
+
+            if (valueReady) {
+              break;
+            }
+          } else {
+            zeroBitPlanesTree.incrementValue();
+          }
+        }
+
+        codeblock.zeroBitPlanes = zeroBitPlanesTree.value;
+      }
+
+      const codingpasses = readCodingpasses();
+
+      while (readBits(1)) {
+        codeblock.Lblock++;
+      }
+
+      const codingpassesLog2 = (0, _core_utils.log2)(codingpasses);
+      const bits = (codingpasses < 1 << codingpassesLog2 ? codingpassesLog2 - 1 : codingpassesLog2) + 
codeblock.Lblock;
+      const codedDataLength = readBits(bits);
+      queue.push({
+        codeblock,
+        codingpasses,
+        dataLength: codedDataLength
+      });
+    }
+
+    alignToByte();
+
+    if (ephMarkerUsed) {
+      skipMarkerIfEqual(0x92);
+    }
+
+    while (queue.length > 0) {
+      const packetItem = queue.shift();
+      codeblock = packetItem.codeblock;
+
+      if (codeblock.data === undefined) {
+        codeblock.data = [];
+      }
+
+      codeblock.data.push({
+        data,
+        start: offset + position,
+        end: offset + position + packetItem.dataLength,
+        codingpasses: packetItem.codingpasses
+      });
+      position += packetItem.dataLength;
+    }
+  }
+
+  return position;
+}
+
+function copyCoefficients(coefficients, levelWidth, levelHeight, subband, delta, mb, reversible, 
segmentationSymbolUsed) {
+  const x0 = subband.tbx0;
+  const y0 = subband.tby0;
+  const width = subband.tbx1 - subband.tbx0;
+  const codeblocks = subband.codeblocks;
+  const right = subband.type.charAt(0) === "H" ? 1 : 0;
+  const bottom = subband.type.charAt(1) === "H" ? levelWidth : 0;
+
+  for (let i = 0, ii = codeblocks.length; i < ii; ++i) {
+    const codeblock = codeblocks[i];
+    const blockWidth = codeblock.tbx1_ - codeblock.tbx0_;
+    const blockHeight = codeblock.tby1_ - codeblock.tby0_;
+
+    if (blockWidth === 0 || blockHeight === 0) {
+      continue;
+    }
+
+    if (codeblock.data === undefined) {
+      continue;
+    }
+
+    const bitModel = new BitModel(blockWidth, blockHeight, codeblock.subbandType, codeblock.zeroBitPlanes, 
mb);
+    let currentCodingpassType = 2;
+    const data = codeblock.data;
+    let totalLength = 0,
+        codingpasses = 0;
+    let j, jj, dataItem;
+
+    for (j = 0, jj = data.length; j < jj; j++) {
+      dataItem = data[j];
+      totalLength += dataItem.end - dataItem.start;
+      codingpasses += dataItem.codingpasses;
+    }
+
+    const encodedData = new Uint8Array(totalLength);
+    let position = 0;
+
+    for (j = 0, jj = data.length; j < jj; j++) {
+      dataItem = data[j];
+      const chunk = dataItem.data.subarray(dataItem.start, dataItem.end);
+      encodedData.set(chunk, position);
+      position += chunk.length;
+    }
+
+    const decoder = new _arithmetic_decoder.ArithmeticDecoder(encodedData, 0, totalLength);
+    bitModel.setDecoder(decoder);
+
+    for (j = 0; j < codingpasses; j++) {
+      switch (currentCodingpassType) {
+        case 0:
+          bitModel.runSignificancePropagationPass();
+          break;
+
+        case 1:
+          bitModel.runMagnitudeRefinementPass();
+          break;
+
+        case 2:
+          bitModel.runCleanupPass();
+
+          if (segmentationSymbolUsed) {
+            bitModel.checkSegmentationSymbol();
+          }
+
+          break;
+      }
+
+      currentCodingpassType = (currentCodingpassType + 1) % 3;
+    }
+
+    let offset = codeblock.tbx0_ - x0 + (codeblock.tby0_ - y0) * width;
+    const sign = bitModel.coefficentsSign;
+    const magnitude = bitModel.coefficentsMagnitude;
+    const bitsDecoded = bitModel.bitsDecoded;
+    const magnitudeCorrection = reversible ? 0 : 0.5;
+    let k, n, nb;
+    position = 0;
+    const interleave = subband.type !== "LL";
+
+    for (j = 0; j < blockHeight; j++) {
+      const row = offset / width | 0;
+      const levelOffset = 2 * row * (levelWidth - width) + right + bottom;
+
+      for (k = 0; k < blockWidth; k++) {
+        n = magnitude[position];
+
+        if (n !== 0) {
+          n = (n + magnitudeCorrection) * delta;
+
+          if (sign[position] !== 0) {
+            n = -n;
+          }
+
+          nb = bitsDecoded[position];
+          const pos = interleave ? levelOffset + (offset << 1) : offset;
+
+          if (reversible && nb >= mb) {
+            coefficients[pos] = n;
+          } else {
+            coefficients[pos] = n * (1 << mb - nb);
+          }
+        }
+
+        offset++;
+        position++;
+      }
+
+      offset += width - blockWidth;
+    }
+  }
+}
+
+function transformTile(context, tile, c) {
+  const component = tile.components[c];
+  const codingStyleParameters = component.codingStyleParameters;
+  const quantizationParameters = component.quantizationParameters;
+  const decompositionLevelsCount = codingStyleParameters.decompositionLevelsCount;
+  const spqcds = quantizationParameters.SPqcds;
+  const scalarExpounded = quantizationParameters.scalarExpounded;
+  const guardBits = quantizationParameters.guardBits;
+  const segmentationSymbolUsed = codingStyleParameters.segmentationSymbolUsed;
+  const precision = context.components[c].precision;
+  const reversible = codingStyleParameters.reversibleTransformation;
+  const transform = reversible ? new ReversibleTransform() : new IrreversibleTransform();
+  const subbandCoefficients = [];
+  let b = 0;
+
+  for (let i = 0; i <= decompositionLevelsCount; i++) {
+    const resolution = component.resolutions[i];
+    const width = resolution.trx1 - resolution.trx0;
+    const height = resolution.try1 - resolution.try0;
+    const coefficients = new Float32Array(width * height);
+
+    for (let j = 0, jj = resolution.subbands.length; j < jj; j++) {
+      let mu, epsilon;
+
+      if (!scalarExpounded) {
+        mu = spqcds[0].mu;
+        epsilon = spqcds[0].epsilon + (i > 0 ? 1 - i : 0);
+      } else {
+        mu = spqcds[b].mu;
+        epsilon = spqcds[b].epsilon;
+        b++;
+      }
+
+      const subband = resolution.subbands[j];
+      const gainLog2 = SubbandsGainLog2[subband.type];
+      const delta = reversible ? 1 : 2 ** (precision + gainLog2 - epsilon) * (1 + mu / 2048);
+      const mb = guardBits + epsilon - 1;
+      copyCoefficients(coefficients, width, height, subband, delta, mb, reversible, segmentationSymbolUsed);
+    }
+
+    subbandCoefficients.push({
+      width,
+      height,
+      items: coefficients
+    });
+  }
+
+  const result = transform.calculate(subbandCoefficients, component.tcx0, component.tcy0);
+  return {
+    left: component.tcx0,
+    top: component.tcy0,
+    width: result.width,
+    height: result.height,
+    items: result.items
+  };
+}
+
+function transformComponents(context) {
+  const siz = context.SIZ;
+  const components = context.components;
+  const componentsCount = siz.Csiz;
+  const resultImages = [];
+
+  for (let i = 0, ii = context.tiles.length; i < ii; i++) {
+    const tile = context.tiles[i];
+    const transformedTiles = [];
+
+    for (let c = 0; c < componentsCount; c++) {
+      transformedTiles[c] = transformTile(context, tile, c);
+    }
+
+    const tile0 = transformedTiles[0];
+    const out = new Uint8ClampedArray(tile0.items.length * componentsCount);
+    const result = {
+      left: tile0.left,
+      top: tile0.top,
+      width: tile0.width,
+      height: tile0.height,
+      items: out
+    };
+    let shift, offset;
+    let pos = 0,
+        j,
+        jj,
+        y0,
+        y1,
+        y2;
+
+    if (tile.codingStyleDefaultParameters.multipleComponentTransform) {
+      const fourComponents = componentsCount === 4;
+      const y0items = transformedTiles[0].items;
+      const y1items = transformedTiles[1].items;
+      const y2items = transformedTiles[2].items;
+      const y3items = fourComponents ? transformedTiles[3].items : null;
+      shift = components[0].precision - 8;
+      offset = (128 << shift) + 0.5;
+      const component0 = tile.components[0];
+      const alpha01 = componentsCount - 3;
+      jj = y0items.length;
+
+      if (!component0.codingStyleParameters.reversibleTransformation) {
+        for (j = 0; j < jj; j++, pos += alpha01) {
+          y0 = y0items[j] + offset;
+          y1 = y1items[j];
+          y2 = y2items[j];
+          out[pos++] = y0 + 1.402 * y2 >> shift;
+          out[pos++] = y0 - 0.34413 * y1 - 0.71414 * y2 >> shift;
+          out[pos++] = y0 + 1.772 * y1 >> shift;
+        }
+      } else {
+        for (j = 0; j < jj; j++, pos += alpha01) {
+          y0 = y0items[j] + offset;
+          y1 = y1items[j];
+          y2 = y2items[j];
+          const g = y0 - (y2 + y1 >> 2);
+          out[pos++] = g + y2 >> shift;
+          out[pos++] = g >> shift;
+          out[pos++] = g + y1 >> shift;
+        }
+      }
+
+      if (fourComponents) {
+        for (j = 0, pos = 3; j < jj; j++, pos += 4) {
+          out[pos] = y3items[j] + offset >> shift;
+        }
+      }
+    } else {
+      for (let c = 0; c < componentsCount; c++) {
+        const items = transformedTiles[c].items;
+        shift = components[c].precision - 8;
+        offset = (128 << shift) + 0.5;
+
+        for (pos = c, j = 0, jj = items.length; j < jj; j++) {
+          out[pos] = items[j] + offset >> shift;
+          pos += componentsCount;
+        }
+      }
+    }
+
+    resultImages.push(result);
+  }
+
+  return resultImages;
+}
+
+function initializeTile(context, tileIndex) {
+  const siz = context.SIZ;
+  const componentsCount = siz.Csiz;
+  const tile = context.tiles[tileIndex];
+
+  for (let c = 0; c < componentsCount; c++) {
+    const component = tile.components[c];
+    const qcdOrQcc = context.currentTile.QCC[c] !== undefined ? context.currentTile.QCC[c] : 
context.currentTile.QCD;
+    component.quantizationParameters = qcdOrQcc;
+    const codOrCoc = context.currentTile.COC[c] !== undefined ? context.currentTile.COC[c] : 
context.currentTile.COD;
+    component.codingStyleParameters = codOrCoc;
+  }
+
+  tile.codingStyleDefaultParameters = context.currentTile.COD;
+}
+
+class TagTree {
+  constructor(width, height) {
+    const levelsLength = (0, _core_utils.log2)(Math.max(width, height)) + 1;
+    this.levels = [];
+
+    for (let i = 0; i < levelsLength; i++) {
+      const level = {
+        width,
+        height,
+        items: []
+      };
+      this.levels.push(level);
+      width = Math.ceil(width / 2);
+      height = Math.ceil(height / 2);
+    }
+  }
+
+  reset(i, j) {
+    let currentLevel = 0,
+        value = 0,
+        level;
+
+    while (currentLevel < this.levels.length) {
+      level = this.levels[currentLevel];
+      const index = i + j * level.width;
+
+      if (level.items[index] !== undefined) {
+        value = level.items[index];
+        break;
+      }
+
+      level.index = index;
+      i >>= 1;
+      j >>= 1;
+      currentLevel++;
+    }
+
+    currentLevel--;
+    level = this.levels[currentLevel];
+    level.items[level.index] = value;
+    this.currentLevel = currentLevel;
+    delete this.value;
+  }
+
+  incrementValue() {
+    const level = this.levels[this.currentLevel];
+    level.items[level.index]++;
+  }
+
+  nextLevel() {
+    let currentLevel = this.currentLevel;
+    let level = this.levels[currentLevel];
+    const value = level.items[level.index];
+    currentLevel--;
+
+    if (currentLevel < 0) {
+      this.value = value;
+      return false;
+    }
+
+    this.currentLevel = currentLevel;
+    level = this.levels[currentLevel];
+    level.items[level.index] = value;
+    return true;
+  }
+
+}
+
+class InclusionTree {
+  constructor(width, height, defaultValue) {
+    const levelsLength = (0, _core_utils.log2)(Math.max(width, height)) + 1;
+    this.levels = [];
+
+    for (let i = 0; i < levelsLength; i++) {
+      const items = new Uint8Array(width * height);
+
+      for (let j = 0, jj = items.length; j < jj; j++) {
+        items[j] = defaultValue;
+      }
+
+      const level = {
+        width,
+        height,
+        items
+      };
+      this.levels.push(level);
+      width = Math.ceil(width / 2);
+      height = Math.ceil(height / 2);
+    }
+  }
+
+  reset(i, j, stopValue) {
+    let currentLevel = 0;
+
+    while (currentLevel < this.levels.length) {
+      const level = this.levels[currentLevel];
+      const index = i + j * level.width;
+      level.index = index;
+      const value = level.items[index];
+
+      if (value === 0xff) {
+        break;
+      }
+
+      if (value > stopValue) {
+        this.currentLevel = currentLevel;
+        this.propagateValues();
+        return false;
+      }
+
+      i >>= 1;
+      j >>= 1;
+      currentLevel++;
+    }
+
+    this.currentLevel = currentLevel - 1;
+    return true;
+  }
+
+  incrementValue(stopValue) {
+    const level = this.levels[this.currentLevel];
+    level.items[level.index] = stopValue + 1;
+    this.propagateValues();
+  }
+
+  propagateValues() {
+    let levelIndex = this.currentLevel;
+    let level = this.levels[levelIndex];
+    const currentValue = level.items[level.index];
+
+    while (--levelIndex >= 0) {
+      level = this.levels[levelIndex];
+      level.items[level.index] = currentValue;
+    }
+  }
+
+  nextLevel() {
+    let currentLevel = this.currentLevel;
+    let level = this.levels[currentLevel];
+    const value = level.items[level.index];
+    level.items[level.index] = 0xff;
+    currentLevel--;
+
+    if (currentLevel < 0) {
+      return false;
+    }
+
+    this.currentLevel = currentLevel;
+    level = this.levels[currentLevel];
+    level.items[level.index] = value;
+    return true;
+  }
+
+}
+
+const BitModel = function BitModelClosure() {
+  const UNIFORM_CONTEXT = 17;
+  const RUNLENGTH_CONTEXT = 18;
+  const LLAndLHContextsLabel = new Uint8Array([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, 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, 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]);
+  const HLContextLabel = new Uint8Array([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, 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, 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]);
+  const HHContextLabel = new Uint8Array([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, 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, 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]);
+
+  class BitModel {
+    constructor(width, height, subband, zeroBitPlanes, mb) {
+      this.width = width;
+      this.height = height;
+      let contextLabelTable;
+
+      if (subband === "HH") {
+        contextLabelTable = HHContextLabel;
+      } else if (subband === "HL") {
+        contextLabelTable = HLContextLabel;
+      } else {
+        contextLabelTable = LLAndLHContextsLabel;
+      }
+
+      this.contextLabelTable = contextLabelTable;
+      const coefficientCount = width * height;
+      this.neighborsSignificance = new Uint8Array(coefficientCount);
+      this.coefficentsSign = new Uint8Array(coefficientCount);
+      let coefficentsMagnitude;
+
+      if (mb > 14) {
+        coefficentsMagnitude = new Uint32Array(coefficientCount);
+      } else if (mb > 6) {
+        coefficentsMagnitude = new Uint16Array(coefficientCount);
+      } else {
+        coefficentsMagnitude = new Uint8Array(coefficientCount);
+      }
+
+      this.coefficentsMagnitude = coefficentsMagnitude;
+      this.processingFlags = new Uint8Array(coefficientCount);
+      const bitsDecoded = new Uint8Array(coefficientCount);
+
+      if (zeroBitPlanes !== 0) {
+        for (let i = 0; i < coefficientCount; i++) {
+          bitsDecoded[i] = zeroBitPlanes;
+        }
+      }
+
+      this.bitsDecoded = bitsDecoded;
+      this.reset();
+    }
+
+    setDecoder(decoder) {
+      this.decoder = decoder;
+    }
+
+    reset() {
+      this.contexts = new Int8Array(19);
+      this.contexts[0] = 4 << 1 | 0;
+      this.contexts[UNIFORM_CONTEXT] = 46 << 1 | 0;
+      this.contexts[RUNLENGTH_CONTEXT] = 3 << 1 | 0;
+    }
+
+    setNeighborsSignificance(row, column, index) {
+      const neighborsSignificance = this.neighborsSignificance;
+      const width = this.width,
+            height = this.height;
+      const left = column > 0;
+      const right = column + 1 < width;
+      let i;
+
+      if (row > 0) {
+        i = index - width;
+
+        if (left) {
+          neighborsSignificance[i - 1] += 0x10;
+        }
+
+        if (right) {
+          neighborsSignificance[i + 1] += 0x10;
+        }
+
+        neighborsSignificance[i] += 0x04;
+      }
+
+      if (row + 1 < height) {
+        i = index + width;
+
+        if (left) {
+          neighborsSignificance[i - 1] += 0x10;
+        }
+
+        if (right) {
+          neighborsSignificance[i + 1] += 0x10;
+        }
+
+        neighborsSignificance[i] += 0x04;
+      }
+
+      if (left) {
+        neighborsSignificance[index - 1] += 0x01;
+      }
+
+      if (right) {
+        neighborsSignificance[index + 1] += 0x01;
+      }
+
+      neighborsSignificance[index] |= 0x80;
+    }
+
+    runSignificancePropagationPass() {
+      const decoder = this.decoder;
+      const width = this.width,
+            height = this.height;
+      const coefficentsMagnitude = this.coefficentsMagnitude;
+      const coefficentsSign = this.coefficentsSign;
+      const neighborsSignificance = this.neighborsSignificance;
+      const processingFlags = this.processingFlags;
+      const contexts = this.contexts;
+      const labels = this.contextLabelTable;
+      const bitsDecoded = this.bitsDecoded;
+      const processedInverseMask = ~1;
+      const processedMask = 1;
+      const firstMagnitudeBitMask = 2;
+
+      for (let i0 = 0; i0 < height; i0 += 4) {
+        for (let j = 0; j < width; j++) {
+          let index = i0 * width + j;
+
+          for (let i1 = 0; i1 < 4; i1++, index += width) {
+            const i = i0 + i1;
+
+            if (i >= height) {
+              break;
+            }
+
+            processingFlags[index] &= processedInverseMask;
+
+            if (coefficentsMagnitude[index] || !neighborsSignificance[index]) {
+              continue;
+            }
+
+            const contextLabel = labels[neighborsSignificance[index]];
+            const decision = decoder.readBit(contexts, contextLabel);
+
+            if (decision) {
+              const sign = this.decodeSignBit(i, j, index);
+              coefficentsSign[index] = sign;
+              coefficentsMagnitude[index] = 1;
+              this.setNeighborsSignificance(i, j, index);
+              processingFlags[index] |= firstMagnitudeBitMask;
+            }
+
+            bitsDecoded[index]++;
+            processingFlags[index] |= processedMask;
+          }
+        }
+      }
+    }
+
+    decodeSignBit(row, column, index) {
+      const width = this.width,
+            height = this.height;
+      const coefficentsMagnitude = this.coefficentsMagnitude;
+      const coefficentsSign = this.coefficentsSign;
+      let contribution, sign0, sign1, significance1;
+      let contextLabel, decoded;
+      significance1 = column > 0 && coefficentsMagnitude[index - 1] !== 0;
+
+      if (column + 1 < width && coefficentsMagnitude[index + 1] !== 0) {
+        sign1 = coefficentsSign[index + 1];
+
+        if (significance1) {
+          sign0 = coefficentsSign[index - 1];
+          contribution = 1 - sign1 - sign0;
+        } else {
+          contribution = 1 - sign1 - sign1;
+        }
+      } else if (significance1) {
+        sign0 = coefficentsSign[index - 1];
+        contribution = 1 - sign0 - sign0;
+      } else {
+        contribution = 0;
+      }
+
+      const horizontalContribution = 3 * contribution;
+      significance1 = row > 0 && coefficentsMagnitude[index - width] !== 0;
+
+      if (row + 1 < height && coefficentsMagnitude[index + width] !== 0) {
+        sign1 = coefficentsSign[index + width];
+
+        if (significance1) {
+          sign0 = coefficentsSign[index - width];
+          contribution = 1 - sign1 - sign0 + horizontalContribution;
+        } else {
+          contribution = 1 - sign1 - sign1 + horizontalContribution;
+        }
+      } else if (significance1) {
+        sign0 = coefficentsSign[index - width];
+        contribution = 1 - sign0 - sign0 + horizontalContribution;
+      } else {
+        contribution = horizontalContribution;
+      }
+
+      if (contribution >= 0) {
+        contextLabel = 9 + contribution;
+        decoded = this.decoder.readBit(this.contexts, contextLabel);
+      } else {
+        contextLabel = 9 - contribution;
+        decoded = this.decoder.readBit(this.contexts, contextLabel) ^ 1;
+      }
+
+      return decoded;
+    }
+
+    runMagnitudeRefinementPass() {
+      const decoder = this.decoder;
+      const width = this.width,
+            height = this.height;
+      const coefficentsMagnitude = this.coefficentsMagnitude;
+      const neighborsSignificance = this.neighborsSignificance;
+      const contexts = this.contexts;
+      const bitsDecoded = this.bitsDecoded;
+      const processingFlags = this.processingFlags;
+      const processedMask = 1;
+      const firstMagnitudeBitMask = 2;
+      const length = width * height;
+      const width4 = width * 4;
+
+      for (let index0 = 0, indexNext; index0 < length; index0 = indexNext) {
+        indexNext = Math.min(length, index0 + width4);
+
+        for (let j = 0; j < width; j++) {
+          for (let index = index0 + j; index < indexNext; index += width) {
+            if (!coefficentsMagnitude[index] || (processingFlags[index] & processedMask) !== 0) {
+              continue;
+            }
+
+            let contextLabel = 16;
+
+            if ((processingFlags[index] & firstMagnitudeBitMask) !== 0) {
+              processingFlags[index] ^= firstMagnitudeBitMask;
+              const significance = neighborsSignificance[index] & 127;
+              contextLabel = significance === 0 ? 15 : 14;
+            }
+
+            const bit = decoder.readBit(contexts, contextLabel);
+            coefficentsMagnitude[index] = coefficentsMagnitude[index] << 1 | bit;
+            bitsDecoded[index]++;
+            processingFlags[index] |= processedMask;
+          }
+        }
+      }
+    }
+
+    runCleanupPass() {
+      const decoder = this.decoder;
+      const width = this.width,
+            height = this.height;
+      const neighborsSignificance = this.neighborsSignificance;
+      const coefficentsMagnitude = this.coefficentsMagnitude;
+      const coefficentsSign = this.coefficentsSign;
+      const contexts = this.contexts;
+      const labels = this.contextLabelTable;
+      const bitsDecoded = this.bitsDecoded;
+      const processingFlags = this.processingFlags;
+      const processedMask = 1;
+      const firstMagnitudeBitMask = 2;
+      const oneRowDown = width;
+      const twoRowsDown = width * 2;
+      const threeRowsDown = width * 3;
+      let iNext;
+
+      for (let i0 = 0; i0 < height; i0 = iNext) {
+        iNext = Math.min(i0 + 4, height);
+        const indexBase = i0 * width;
+        const checkAllEmpty = i0 + 3 < height;
+
+        for (let j = 0; j < width; j++) {
+          const index0 = indexBase + j;
+          const allEmpty = checkAllEmpty && processingFlags[index0] === 0 && processingFlags[index0 + 
oneRowDown] === 0 && processingFlags[index0 + twoRowsDown] === 0 && processingFlags[index0 + threeRowsDown] 
=== 0 && neighborsSignificance[index0] === 0 && neighborsSignificance[index0 + oneRowDown] === 0 && 
neighborsSignificance[index0 + twoRowsDown] === 0 && neighborsSignificance[index0 + threeRowsDown] === 0;
+          let i1 = 0,
+              index = index0;
+          let i = i0,
+              sign;
+
+          if (allEmpty) {
+            const hasSignificantCoefficent = decoder.readBit(contexts, RUNLENGTH_CONTEXT);
+
+            if (!hasSignificantCoefficent) {
+              bitsDecoded[index0]++;
+              bitsDecoded[index0 + oneRowDown]++;
+              bitsDecoded[index0 + twoRowsDown]++;
+              bitsDecoded[index0 + threeRowsDown]++;
+              continue;
+            }
+
+            i1 = decoder.readBit(contexts, UNIFORM_CONTEXT) << 1 | decoder.readBit(contexts, 
UNIFORM_CONTEXT);
+
+            if (i1 !== 0) {
+              i = i0 + i1;
+              index += i1 * width;
+            }
+
+            sign = this.decodeSignBit(i, j, index);
+            coefficentsSign[index] = sign;
+            coefficentsMagnitude[index] = 1;
+            this.setNeighborsSignificance(i, j, index);
+            processingFlags[index] |= firstMagnitudeBitMask;
+            index = index0;
+
+            for (let i2 = i0; i2 <= i; i2++, index += width) {
+              bitsDecoded[index]++;
+            }
+
+            i1++;
+          }
+
+          for (i = i0 + i1; i < iNext; i++, index += width) {
+            if (coefficentsMagnitude[index] || (processingFlags[index] & processedMask) !== 0) {
+              continue;
+            }
+
+            const contextLabel = labels[neighborsSignificance[index]];
+            const decision = decoder.readBit(contexts, contextLabel);
+
+            if (decision === 1) {
+              sign = this.decodeSignBit(i, j, index);
+              coefficentsSign[index] = sign;
+              coefficentsMagnitude[index] = 1;
+              this.setNeighborsSignificance(i, j, index);
+              processingFlags[index] |= firstMagnitudeBitMask;
+            }
+
+            bitsDecoded[index]++;
+          }
+        }
+      }
+    }
+
+    checkSegmentationSymbol() {
+      const decoder = this.decoder;
+      const contexts = this.contexts;
+      const symbol = decoder.readBit(contexts, UNIFORM_CONTEXT) << 3 | decoder.readBit(contexts, 
UNIFORM_CONTEXT) << 2 | decoder.readBit(contexts, UNIFORM_CONTEXT) << 1 | decoder.readBit(contexts, 
UNIFORM_CONTEXT);
+
+      if (symbol !== 0xa) {
+        throw new JpxError("Invalid segmentation symbol");
+      }
+    }
+
+  }
+
+  return BitModel;
+}();
+
+class Transform {
+  constructor() {
+    if (this.constructor === Transform) {
+      (0, _util.unreachable)("Cannot initialize Transform.");
+    }
+  }
+
+  calculate(subbands, u0, v0) {
+    let ll = subbands[0];
+
+    for (let i = 1, ii = subbands.length; i < ii; i++) {
+      ll = this.iterate(ll, subbands[i], u0, v0);
+    }
+
+    return ll;
+  }
+
+  extend(buffer, offset, size) {
+    let i1 = offset - 1,
+        j1 = offset + 1;
+    let i2 = offset + size - 2,
+        j2 = offset + size;
+    buffer[i1--] = buffer[j1++];
+    buffer[j2++] = buffer[i2--];
+    buffer[i1--] = buffer[j1++];
+    buffer[j2++] = buffer[i2--];
+    buffer[i1--] = buffer[j1++];
+    buffer[j2++] = buffer[i2--];
+    buffer[i1] = buffer[j1];
+    buffer[j2] = buffer[i2];
+  }
+
+  filter(x, offset, length) {
+    (0, _util.unreachable)("Abstract method `filter` called");
+  }
+
+  iterate(ll, hl_lh_hh, u0, v0) {
+    const llWidth = ll.width,
+          llHeight = ll.height;
+    let llItems = ll.items;
+    const width = hl_lh_hh.width;
+    const height = hl_lh_hh.height;
+    const items = hl_lh_hh.items;
+    let i, j, k, l, u, v;
+
+    for (k = 0, i = 0; i < llHeight; i++) {
+      l = i * 2 * width;
+
+      for (j = 0; j < llWidth; j++, k++, l += 2) {
+        items[l] = llItems[k];
+      }
+    }
+
+    llItems = ll.items = null;
+    const bufferPadding = 4;
+    const rowBuffer = new Float32Array(width + 2 * bufferPadding);
+
+    if (width === 1) {
+      if ((u0 & 1) !== 0) {
+        for (v = 0, k = 0; v < height; v++, k += width) {
+          items[k] *= 0.5;
+        }
+      }
+    } else {
+      for (v = 0, k = 0; v < height; v++, k += width) {
+        rowBuffer.set(items.subarray(k, k + width), bufferPadding);
+        this.extend(rowBuffer, bufferPadding, width);
+        this.filter(rowBuffer, bufferPadding, width);
+        items.set(rowBuffer.subarray(bufferPadding, bufferPadding + width), k);
+      }
+    }
+
+    let numBuffers = 16;
+    const colBuffers = [];
+
+    for (i = 0; i < numBuffers; i++) {
+      colBuffers.push(new Float32Array(height + 2 * bufferPadding));
+    }
+
+    let b,
+        currentBuffer = 0;
+    ll = bufferPadding + height;
+
+    if (height === 1) {
+      if ((v0 & 1) !== 0) {
+        for (u = 0; u < width; u++) {
+          items[u] *= 0.5;
+        }
+      }
+    } else {
+      for (u = 0; u < width; u++) {
+        if (currentBuffer === 0) {
+          numBuffers = Math.min(width - u, numBuffers);
+
+          for (k = u, l = bufferPadding; l < ll; k += width, l++) {
+            for (b = 0; b < numBuffers; b++) {
+              colBuffers[b][l] = items[k + b];
+            }
+          }
+
+          currentBuffer = numBuffers;
+        }
+
+        currentBuffer--;
+        const buffer = colBuffers[currentBuffer];
+        this.extend(buffer, bufferPadding, height);
+        this.filter(buffer, bufferPadding, height);
+
+        if (currentBuffer === 0) {
+          k = u - numBuffers + 1;
+
+          for (l = bufferPadding; l < ll; k += width, l++) {
+            for (b = 0; b < numBuffers; b++) {
+              items[k + b] = colBuffers[b][l];
+            }
+          }
+        }
+      }
+    }
+
+    return {
+      width,
+      height,
+      items
+    };
+  }
+
+}
+
+class IrreversibleTransform extends Transform {
+  filter(x, offset, length) {
+    const len = length >> 1;
+    offset |= 0;
+    let j, n, current, next;
+    const alpha = -1.586134342059924;
+    const beta = -0.052980118572961;
+    const gamma = 0.882911075530934;
+    const delta = 0.443506852043971;
+    const K = 1.230174104914001;
+    const K_ = 1 / K;
+    j = offset - 3;
+
+    for (n = len + 4; n--; j += 2) {
+      x[j] *= K_;
+    }
+
+    j = offset - 2;
+    current = delta * x[j - 1];
+
+    for (n = len + 3; n--; j += 2) {
+      next = delta * x[j + 1];
+      x[j] = K * x[j] - current - next;
+
+      if (n--) {
+        j += 2;
+        current = delta * x[j + 1];
+        x[j] = K * x[j] - current - next;
+      } else {
+        break;
+      }
+    }
+
+    j = offset - 1;
+    current = gamma * x[j - 1];
+
+    for (n = len + 2; n--; j += 2) {
+      next = gamma * x[j + 1];
+      x[j] -= current + next;
+
+      if (n--) {
+        j += 2;
+        current = gamma * x[j + 1];
+        x[j] -= current + next;
+      } else {
+        break;
+      }
+    }
+
+    j = offset;
+    current = beta * x[j - 1];
+
+    for (n = len + 1; n--; j += 2) {
+      next = beta * x[j + 1];
+      x[j] -= current + next;
+
+      if (n--) {
+        j += 2;
+        current = beta * x[j + 1];
+        x[j] -= current + next;
+      } else {
+        break;
+      }
+    }
+
+    if (len !== 0) {
+      j = offset + 1;
+      current = alpha * x[j - 1];
+
+      for (n = len; n--; j += 2) {
+        next = alpha * x[j + 1];
+        x[j] -= current + next;
+
+        if (n--) {
+          j += 2;
+          current = alpha * x[j + 1];
+          x[j] -= current + next;
+        } else {
+          break;
+        }
+      }
+    }
+  }
+
+}
+
+class ReversibleTransform extends Transform {
+  filter(x, offset, length) {
+    const len = length >> 1;
+    offset |= 0;
+    let j, n;
+
+    for (j = offset, n = len + 1; n--; j += 2) {
+      x[j] -= x[j - 1] + x[j + 1] + 2 >> 2;
+    }
+
+    for (j = offset + 1, n = len; n--; j += 2) {
+      x[j] += x[j - 1] + x[j + 1] >> 1;
+    }
+  }
+
+}
+
+/***/ }),
+/* 41 */
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
+
+
+
+Object.defineProperty(exports, "__esModule", ({
+  value: true
+}));
+exports.LZWStream = void 0;
+
+var _decode_stream = __w_pdfjs_require__(29);
+
+class LZWStream extends _decode_stream.DecodeStream {
+  constructor(str, maybeLength, earlyChange) {
+    super(maybeLength);
+    this.str = str;
+    this.dict = str.dict;
+    this.cachedData = 0;
+    this.bitsCached = 0;
+    const maxLzwDictionarySize = 4096;
+    const lzwState = {
+      earlyChange,
+      codeLength: 9,
+      nextCode: 258,
+      dictionaryValues: new Uint8Array(maxLzwDictionarySize),
+      dictionaryLengths: new Uint16Array(maxLzwDictionarySize),
+      dictionaryPrevCodes: new Uint16Array(maxLzwDictionarySize),
+      currentSequence: new Uint8Array(maxLzwDictionarySize),
+      currentSequenceLength: 0
+    };
+
+    for (let i = 0; i < 256; ++i) {
+      lzwState.dictionaryValues[i] = i;
+      lzwState.dictionaryLengths[i] = 1;
+    }
+
+    this.lzwState = lzwState;
+  }
+
+  readBits(n) {
+    let bitsCached = this.bitsCached;
+    let cachedData = this.cachedData;
+
+    while (bitsCached < n) {
+      const c = this.str.getByte();
+
+      if (c === -1) {
+        this.eof = true;
+        return null;
+      }
+
+      cachedData = cachedData << 8 | c;
+      bitsCached += 8;
+    }
+
+    this.bitsCached = bitsCached -= n;
+    this.cachedData = cachedData;
+    this.lastCode = null;
+    return cachedData >>> bitsCached & (1 << n) - 1;
+  }
+
+  readBlock() {
+    const blockSize = 512,
+          decodedSizeDelta = blockSize;
+    let estimatedDecodedSize = blockSize * 2;
+    let i, j, q;
+    const lzwState = this.lzwState;
+
+    if (!lzwState) {
+      return;
+    }
+
+    const earlyChange = lzwState.earlyChange;
+    let nextCode = lzwState.nextCode;
+    const dictionaryValues = lzwState.dictionaryValues;
+    const dictionaryLengths = lzwState.dictionaryLengths;
+    const dictionaryPrevCodes = lzwState.dictionaryPrevCodes;
+    let codeLength = lzwState.codeLength;
+    let prevCode = lzwState.prevCode;
+    const currentSequence = lzwState.currentSequence;
+    let currentSequenceLength = lzwState.currentSequenceLength;
+    let decodedLength = 0;
+    let currentBufferLength = this.bufferLength;
+    let buffer = this.ensureBuffer(this.bufferLength + estimatedDecodedSize);
+
+    for (i = 0; i < blockSize; i++) {
+      const code = this.readBits(codeLength);
+      const hasPrev = currentSequenceLength > 0;
+
+      if (code < 256) {
+        currentSequence[0] = code;
+        currentSequenceLength = 1;
+      } else if (code >= 258) {
+        if (code < nextCode) {
+          currentSequenceLength = dictionaryLengths[code];
+
+          for (j = currentSequenceLength - 1, q = code; j >= 0; j--) {
+            currentSequence[j] = dictionaryValues[q];
+            q = dictionaryPrevCodes[q];
+          }
+        } else {
+          currentSequence[currentSequenceLength++] = currentSequence[0];
+        }
+      } else if (code === 256) {
+        codeLength = 9;
+        nextCode = 258;
+        currentSequenceLength = 0;
+        continue;
+      } else {
+        this.eof = true;
+        delete this.lzwState;
+        break;
+      }
+
+      if (hasPrev) {
+        dictionaryPrevCodes[nextCode] = prevCode;
+        dictionaryLengths[nextCode] = dictionaryLengths[prevCode] + 1;
+        dictionaryValues[nextCode] = currentSequence[0];
+        nextCode++;
+        codeLength = nextCode + earlyChange & nextCode + earlyChange - 1 ? codeLength : 
Math.min(Math.log(nextCode + earlyChange) / 0.6931471805599453 + 1, 12) | 0;
+      }
+
+      prevCode = code;
+      decodedLength += currentSequenceLength;
+
+      if (estimatedDecodedSize < decodedLength) {
+        do {
+          estimatedDecodedSize += decodedSizeDelta;
+        } while (estimatedDecodedSize < decodedLength);
+
+        buffer = this.ensureBuffer(this.bufferLength + estimatedDecodedSize);
+      }
+
+      for (j = 0; j < currentSequenceLength; j++) {
+        buffer[currentBufferLength++] = currentSequence[j];
+      }
+    }
+
+    lzwState.nextCode = nextCode;
+    lzwState.codeLength = codeLength;
+    lzwState.prevCode = prevCode;
+    lzwState.currentSequenceLength = currentSequenceLength;
+    this.bufferLength = currentBufferLength;
+  }
+
+}
+
+exports.LZWStream = LZWStream;
+
+/***/ }),
+/* 42 */
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
+
+
+
+Object.defineProperty(exports, "__esModule", ({
+  value: true
+}));
+exports.PredictorStream = void 0;
+
+var _decode_stream = __w_pdfjs_require__(29);
+
+var _util = __w_pdfjs_require__(2);
+
+var _primitives = __w_pdfjs_require__(5);
+
+class PredictorStream extends _decode_stream.DecodeStream {
+  constructor(str, maybeLength, params) {
+    super(maybeLength);
+
+    if (!(0, _primitives.isDict)(params)) {
+      return str;
+    }
+
+    const predictor = this.predictor = params.get("Predictor") || 1;
+
+    if (predictor <= 1) {
+      return str;
+    }
+
+    if (predictor !== 2 && (predictor < 10 || predictor > 15)) {
+      throw new _util.FormatError(`Unsupported predictor: ${predictor}`);
+    }
+
+    if (predictor === 2) {
+      this.readBlock = this.readBlockTiff;
+    } else {
+      this.readBlock = this.readBlockPng;
+    }
+
+    this.str = str;
+    this.dict = str.dict;
+    const colors = this.colors = params.get("Colors") || 1;
+    const bits = this.bits = params.get("BitsPerComponent") || 8;
+    const columns = this.columns = params.get("Columns") || 1;
+    this.pixBytes = colors * bits + 7 >> 3;
+    this.rowBytes = columns * colors * bits + 7 >> 3;
+    return this;
+  }
+
+  readBlockTiff() {
+    const rowBytes = this.rowBytes;
+    const bufferLength = this.bufferLength;
+    const buffer = this.ensureBuffer(bufferLength + rowBytes);
+    const bits = this.bits;
+    const colors = this.colors;
+    const rawBytes = this.str.getBytes(rowBytes);
+    this.eof = !rawBytes.length;
+
+    if (this.eof) {
+      return;
+    }
+
+    let inbuf = 0,
+        outbuf = 0;
+    let inbits = 0,
+        outbits = 0;
+    let pos = bufferLength;
+    let i;
+
+    if (bits === 1 && colors === 1) {
+      for (i = 0; i < rowBytes; ++i) {
+        let c = rawBytes[i] ^ inbuf;
+        c ^= c >> 1;
+        c ^= c >> 2;
+        c ^= c >> 4;
+        inbuf = (c & 1) << 7;
+        buffer[pos++] = c;
+      }
+    } else if (bits === 8) {
+      for (i = 0; i < colors; ++i) {
+        buffer[pos++] = rawBytes[i];
+      }
+
+      for (; i < rowBytes; ++i) {
+        buffer[pos] = buffer[pos - colors] + rawBytes[i];
+        pos++;
+      }
+    } else if (bits === 16) {
+      const bytesPerPixel = colors * 2;
+
+      for (i = 0; i < bytesPerPixel; ++i) {
+        buffer[pos++] = rawBytes[i];
+      }
+
+      for (; i < rowBytes; i += 2) {
+        const sum = ((rawBytes[i] & 0xff) << 8) + (rawBytes[i + 1] & 0xff) + ((buffer[pos - bytesPerPixel] & 
0xff) << 8) + (buffer[pos - bytesPerPixel + 1] & 0xff);
+        buffer[pos++] = sum >> 8 & 0xff;
+        buffer[pos++] = sum & 0xff;
+      }
+    } else {
+      const compArray = new Uint8Array(colors + 1);
+      const bitMask = (1 << bits) - 1;
+      let j = 0,
+          k = bufferLength;
+      const columns = this.columns;
+
+      for (i = 0; i < columns; ++i) {
+        for (let kk = 0; kk < colors; ++kk) {
+          if (inbits < bits) {
+            inbuf = inbuf << 8 | rawBytes[j++] & 0xff;
+            inbits += 8;
+          }
+
+          compArray[kk] = compArray[kk] + (inbuf >> inbits - bits) & bitMask;
+          inbits -= bits;
+          outbuf = outbuf << bits | compArray[kk];
+          outbits += bits;
+
+          if (outbits >= 8) {
+            buffer[k++] = outbuf >> outbits - 8 & 0xff;
+            outbits -= 8;
+          }
+        }
+      }
+
+      if (outbits > 0) {
+        buffer[k++] = (outbuf << 8 - outbits) + (inbuf & (1 << 8 - outbits) - 1);
+      }
+    }
+
+    this.bufferLength += rowBytes;
+  }
+
+  readBlockPng() {
+    const rowBytes = this.rowBytes;
+    const pixBytes = this.pixBytes;
+    const predictor = this.str.getByte();
+    const rawBytes = this.str.getBytes(rowBytes);
+    this.eof = !rawBytes.length;
+
+    if (this.eof) {
+      return;
+    }
+
+    const bufferLength = this.bufferLength;
+    const buffer = this.ensureBuffer(bufferLength + rowBytes);
+    let prevRow = buffer.subarray(bufferLength - rowBytes, bufferLength);
+
+    if (prevRow.length === 0) {
+      prevRow = new Uint8Array(rowBytes);
+    }
+
+    let i,
+        j = bufferLength,
+        up,
+        c;
+
+    switch (predictor) {
+      case 0:
+        for (i = 0; i < rowBytes; ++i) {
+          buffer[j++] = rawBytes[i];
+        }
+
+        break;
+
+      case 1:
+        for (i = 0; i < pixBytes; ++i) {
+          buffer[j++] = rawBytes[i];
+        }
+
+        for (; i < rowBytes; ++i) {
+          buffer[j] = buffer[j - pixBytes] + rawBytes[i] & 0xff;
+          j++;
+        }
+
+        break;
+
+      case 2:
+        for (i = 0; i < rowBytes; ++i) {
+          buffer[j++] = prevRow[i] + rawBytes[i] & 0xff;
+        }
+
+        break;
+
+      case 3:
+        for (i = 0; i < pixBytes; ++i) {
+          buffer[j++] = (prevRow[i] >> 1) + rawBytes[i];
+        }
+
+        for (; i < rowBytes; ++i) {
+          buffer[j] = (prevRow[i] + buffer[j - pixBytes] >> 1) + rawBytes[i] & 0xff;
+          j++;
+        }
+
+        break;
+
+      case 4:
+        for (i = 0; i < pixBytes; ++i) {
+          up = prevRow[i];
+          c = rawBytes[i];
+          buffer[j++] = up + c;
+        }
+
+        for (; i < rowBytes; ++i) {
+          up = prevRow[i];
+          const upLeft = prevRow[i - pixBytes];
+          const left = buffer[j - pixBytes];
+          const p = left + up - upLeft;
+          let pa = p - left;
+
+          if (pa < 0) {
+            pa = -pa;
+          }
+
+          let pb = p - up;
+
+          if (pb < 0) {
+            pb = -pb;
+          }
+
+          let pc = p - upLeft;
+
+          if (pc < 0) {
+            pc = -pc;
+          }
+
+          c = rawBytes[i];
+
+          if (pa <= pb && pa <= pc) {
+            buffer[j++] = left + c;
+          } else if (pb <= pc) {
+            buffer[j++] = up + c;
+          } else {
+            buffer[j++] = upLeft + c;
+          }
+        }
+
+        break;
+
+      default:
+        throw new _util.FormatError(`Unsupported predictor: ${predictor}`);
+    }
+
+    this.bufferLength += rowBytes;
+  }
+
+}
+
+exports.PredictorStream = PredictorStream;
+
+/***/ }),
+/* 43 */
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
+
+
+
+Object.defineProperty(exports, "__esModule", ({
+  value: true
+}));
+exports.RunLengthStream = void 0;
+
+var _decode_stream = __w_pdfjs_require__(29);
+
+class RunLengthStream extends _decode_stream.DecodeStream {
+  constructor(str, maybeLength) {
+    super(maybeLength);
+    this.str = str;
+    this.dict = str.dict;
+  }
+
+  readBlock() {
+    const repeatHeader = this.str.getBytes(2);
+
+    if (!repeatHeader || repeatHeader.length < 2 || repeatHeader[0] === 128) {
+      this.eof = true;
+      return;
+    }
+
+    let buffer;
+    let bufferLength = this.bufferLength;
+    let n = repeatHeader[0];
+
+    if (n < 128) {
+      buffer = this.ensureBuffer(bufferLength + n + 1);
+      buffer[bufferLength++] = repeatHeader[1];
+
+      if (n > 0) {
+        const source = this.str.getBytes(n);
+        buffer.set(source, bufferLength);
+        bufferLength += n;
+      }
+    } else {
+      n = 257 - n;
+      const b = repeatHeader[1];
+      buffer = this.ensureBuffer(bufferLength + n + 1);
+
+      for (let i = 0; i < n; i++) {
+        buffer[bufferLength++] = b;
+      }
+    }
+
+    this.bufferLength = bufferLength;
+  }
+
+}
+
+exports.RunLengthStream = RunLengthStream;
+
+/***/ }),
+/* 44 */
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
+
+
+
+Object.defineProperty(exports, "__esModule", ({
+  value: true
+}));
+exports.Font = exports.ErrorFont = void 0;
+
+var _util = __w_pdfjs_require__(2);
+
+var _cff_parser = __w_pdfjs_require__(45);
+
+var _fonts_utils = __w_pdfjs_require__(18);
+
+var _glyphlist = __w_pdfjs_require__(20);
+
+var _encodings = __w_pdfjs_require__(19);
+
+var _standard_fonts = __w_pdfjs_require__(47);
+
+var _unicode = __w_pdfjs_require__(21);
+
+var _to_unicode_map = __w_pdfjs_require__(48);
+
+var _cff_font = __w_pdfjs_require__(49);
+
+var _font_renderer = __w_pdfjs_require__(50);
+
+var _glyf = __w_pdfjs_require__(51);
+
+var _cmap = __w_pdfjs_require__(26);
+
+var _opentype_file_builder = __w_pdfjs_require__(52);
+
+var _core_utils = __w_pdfjs_require__(9);
+
+var _stream = __w_pdfjs_require__(10);
+
+var _type1_font = __w_pdfjs_require__(53);
+
+const PRIVATE_USE_AREAS = [[0xe000, 0xf8ff], [0x100000, 0x10fffd]];
+const PDF_GLYPH_SPACE_UNITS = 1000;
+const EXPORT_DATA_PROPERTIES = ["ascent", "bbox", "black", "bold", "charProcOperatorList", "composite", 
"cssFontInfo", "data", "defaultVMetrics", "defaultWidth", "descent", "fallbackName", "fontMatrix", 
"fontType", "isType3Font", "italic", "loadedName", "mimetype", "missingFile", "name", "remeasure", "subtype", 
"type", "vertical"];
+const EXPORT_DATA_EXTRA_PROPERTIES = ["cMap", "defaultEncoding", "differences", "isMonospace", 
"isSerifFont", "isSymbolicFont", "seacMap", "toFontChar", "toUnicode", "vmetrics", "widths"];
+
+function adjustWidths(properties) {
+  if (!properties.fontMatrix) {
+    return;
+  }
+
+  if (properties.fontMatrix[0] === _util.FONT_IDENTITY_MATRIX[0]) {
+    return;
+  }
+
+  const scale = 0.001 / properties.fontMatrix[0];
+  const glyphsWidths = properties.widths;
+
+  for (const glyph in glyphsWidths) {
+    glyphsWidths[glyph] *= scale;
+  }
+
+  properties.defaultWidth *= scale;
+}
+
+function adjustToUnicode(properties, builtInEncoding) {
+  if (properties.isInternalFont) {
+    return;
+  }
+
+  if (builtInEncoding === properties.defaultEncoding) {
+    return;
+  }
+
+  if (properties.toUnicode instanceof _to_unicode_map.IdentityToUnicodeMap) {
+    return;
+  }
+
+  const toUnicode = [],
+        glyphsUnicodeMap = (0, _glyphlist.getGlyphsUnicode)();
+
+  for (const charCode in builtInEncoding) {
+    if (properties.hasIncludedToUnicodeMap) {
+      if (properties.toUnicode.has(charCode)) {
+        continue;
+      }
+    } else if (properties.hasEncoding) {
+      if (properties.differences.length === 0 || properties.differences[charCode] !== undefined) {
+        continue;
+      }
+    }
+
+    const glyphName = builtInEncoding[charCode];
+    const unicode = (0, _unicode.getUnicodeForGlyph)(glyphName, glyphsUnicodeMap);
+
+    if (unicode !== -1) {
+      toUnicode[charCode] = String.fromCharCode(unicode);
+    }
+  }
+
+  if (toUnicode.length > 0) {
+    properties.toUnicode.amend(toUnicode);
+  }
+}
+
+function amendFallbackToUnicode(properties) {
+  if (!properties.fallbackToUnicode) {
+    return;
+  }
+
+  if (properties.toUnicode instanceof _to_unicode_map.IdentityToUnicodeMap) {
+    return;
+  }
+
+  const toUnicode = [];
+
+  for (const charCode in properties.fallbackToUnicode) {
+    if (properties.toUnicode.has(charCode)) {
+      continue;
+    }
+
+    toUnicode[charCode] = properties.fallbackToUnicode[charCode];
+  }
+
+  if (toUnicode.length > 0) {
+    properties.toUnicode.amend(toUnicode);
+  }
+}
+
+class Glyph {
+  constructor(originalCharCode, fontChar, unicode, accent, width, vmetric, operatorListId, isSpace, 
isInFont) {
+    this.originalCharCode = originalCharCode;
+    this.fontChar = fontChar;
+    this.unicode = unicode;
+    this.accent = accent;
+    this.width = width;
+    this.vmetric = vmetric;
+    this.operatorListId = operatorListId;
+    this.isSpace = isSpace;
+    this.isInFont = isInFont;
+  }
+
+  matchesForCache(originalCharCode, fontChar, unicode, accent, width, vmetric, operatorListId, isSpace, 
isInFont) {
+    return this.originalCharCode === originalCharCode && this.fontChar === fontChar && this.unicode === 
unicode && this.accent === accent && this.width === width && this.vmetric === vmetric && this.operatorListId 
=== operatorListId && this.isSpace === isSpace && this.isInFont === isInFont;
+  }
+
+}
+
+function int16(b0, b1) {
+  return (b0 << 8) + b1;
+}
+
+function writeSignedInt16(bytes, index, value) {
+  bytes[index + 1] = value;
+  bytes[index] = value >>> 8;
+}
+
+function signedInt16(b0, b1) {
+  const value = (b0 << 8) + b1;
+  return value & 1 << 15 ? value - 0x10000 : value;
+}
+
+function int32(b0, b1, b2, b3) {
+  return (b0 << 24) + (b1 << 16) + (b2 << 8) + b3;
+}
+
+function string16(value) {
+  return String.fromCharCode(value >> 8 & 0xff, value & 0xff);
+}
+
+function safeString16(value) {
+  if (value > 0x7fff) {
+    value = 0x7fff;
+  } else if (value < -0x8000) {
+    value = -0x8000;
+  }
+
+  return String.fromCharCode(value >> 8 & 0xff, value & 0xff);
+}
+
+function isTrueTypeFile(file) {
+  const header = file.peekBytes(4);
+  return (0, _core_utils.readUint32)(header, 0) === 0x00010000 || (0, _util.bytesToString)(header) === 
"true";
+}
+
+function isTrueTypeCollectionFile(file) {
+  const header = file.peekBytes(4);
+  return (0, _util.bytesToString)(header) === "ttcf";
+}
+
+function isOpenTypeFile(file) {
+  const header = file.peekBytes(4);
+  return (0, _util.bytesToString)(header) === "OTTO";
+}
+
+function isType1File(file) {
+  const header = file.peekBytes(2);
+
+  if (header[0] === 0x25 && header[1] === 0x21) {
+    return true;
+  }
+
+  if (header[0] === 0x80 && header[1] === 0x01) {
+    return true;
+  }
+
+  return false;
+}
+
+function isCFFFile(file) {
+  const header = file.peekBytes(4);
+
+  if (header[0] >= 1 && header[3] >= 1 && header[3] <= 4) {
+    return true;
+  }
+
+  return false;
+}
+
+function getFontFileType(file, {
+  type,
+  subtype,
+  composite
+}) {
+  let fileType, fileSubtype;
+
+  if (isTrueTypeFile(file) || isTrueTypeCollectionFile(file)) {
+    if (composite) {
+      fileType = "CIDFontType2";
+    } else {
+      fileType = "TrueType";
+    }
+  } else if (isOpenTypeFile(file)) {
+    if (composite) {
+      fileType = "CIDFontType2";
+    } else {
+      fileType = "OpenType";
+    }
+  } else if (isType1File(file)) {
+    if (composite) {
+      fileType = "CIDFontType0";
+    } else {
+      fileType = type === "MMType1" ? "MMType1" : "Type1";
+    }
+  } else if (isCFFFile(file)) {
+    if (composite) {
+      fileType = "CIDFontType0";
+      fileSubtype = "CIDFontType0C";
+    } else {
+      fileType = type === "MMType1" ? "MMType1" : "Type1";
+      fileSubtype = "Type1C";
+    }
+  } else {
+    (0, _util.warn)("getFontFileType: Unable to detect correct font file Type/Subtype.");
+    fileType = type;
+    fileSubtype = subtype;
+  }
+
+  return [fileType, fileSubtype];
+}
+
+function applyStandardFontGlyphMap(map, glyphMap) {
+  for (const charCode in glyphMap) {
+    map[+charCode] = glyphMap[charCode];
+  }
+}
+
+function buildToFontChar(encoding, glyphsUnicodeMap, differences) {
+  const toFontChar = [];
+  let unicode;
+
+  for (let i = 0, ii = encoding.length; i < ii; i++) {
+    unicode = (0, _unicode.getUnicodeForGlyph)(encoding[i], glyphsUnicodeMap);
+
+    if (unicode !== -1) {
+      toFontChar[i] = unicode;
+    }
+  }
+
+  for (const charCode in differences) {
+    unicode = (0, _unicode.getUnicodeForGlyph)(differences[charCode], glyphsUnicodeMap);
+
+    if (unicode !== -1) {
+      toFontChar[+charCode] = unicode;
+    }
+  }
+
+  return toFontChar;
+}
+
+function convertCidString(charCode, cid, shouldThrow = false) {
+  switch (cid.length) {
+    case 1:
+      return cid.charCodeAt(0);
+
+    case 2:
+      return cid.charCodeAt(0) << 8 | cid.charCodeAt(1);
+  }
+
+  const msg = `Unsupported CID string (charCode ${charCode}): "${cid}".`;
+
+  if (shouldThrow) {
+    throw new _util.FormatError(msg);
+  }
+
+  (0, _util.warn)(msg);
+  return cid;
+}
+
+function adjustMapping(charCodeToGlyphId, hasGlyph, newGlyphZeroId) {
+  const newMap = Object.create(null);
+  const toFontChar = [];
+  let privateUseAreaIndex = 0;
+  let nextAvailableFontCharCode = PRIVATE_USE_AREAS[privateUseAreaIndex][0];
+  let privateUseOffetEnd = PRIVATE_USE_AREAS[privateUseAreaIndex][1];
+
+  for (let originalCharCode in charCodeToGlyphId) {
+    originalCharCode |= 0;
+    let glyphId = charCodeToGlyphId[originalCharCode];
+
+    if (!hasGlyph(glyphId)) {
+      continue;
+    }
+
+    if (nextAvailableFontCharCode > privateUseOffetEnd) {
+      privateUseAreaIndex++;
+
+      if (privateUseAreaIndex >= PRIVATE_USE_AREAS.length) {
+        (0, _util.warn)("Ran out of space in font private use area.");
+        break;
+      }
+
+      nextAvailableFontCharCode = PRIVATE_USE_AREAS[privateUseAreaIndex][0];
+      privateUseOffetEnd = PRIVATE_USE_AREAS[privateUseAreaIndex][1];
+    }
+
+    const fontCharCode = nextAvailableFontCharCode++;
+
+    if (glyphId === 0) {
+      glyphId = newGlyphZeroId;
+    }
+
+    newMap[fontCharCode] = glyphId;
+    toFontChar[originalCharCode] = fontCharCode;
+  }
+
+  return {
+    toFontChar,
+    charCodeToGlyphId: newMap,
+    nextAvailableFontCharCode
+  };
+}
+
+function getRanges(glyphs, numGlyphs) {
+  const codes = [];
+
+  for (const charCode in glyphs) {
+    if (glyphs[charCode] >= numGlyphs) {
+      continue;
+    }
+
+    codes.push({
+      fontCharCode: charCode | 0,
+      glyphId: glyphs[charCode]
+    });
+  }
+
+  if (codes.length === 0) {
+    codes.push({
+      fontCharCode: 0,
+      glyphId: 0
+    });
+  }
+
+  codes.sort(function fontGetRangesSort(a, b) {
+    return a.fontCharCode - b.fontCharCode;
+  });
+  const ranges = [];
+  const length = codes.length;
+
+  for (let n = 0; n < length;) {
+    const start = codes[n].fontCharCode;
+    const codeIndices = [codes[n].glyphId];
+    ++n;
+    let end = start;
+
+    while (n < length && end + 1 === codes[n].fontCharCode) {
+      codeIndices.push(codes[n].glyphId);
+      ++end;
+      ++n;
+
+      if (end === 0xffff) {
+        break;
+      }
+    }
+
+    ranges.push([start, end, codeIndices]);
+  }
+
+  return ranges;
+}
+
+function createCmapTable(glyphs, numGlyphs) {
+  const ranges = getRanges(glyphs, numGlyphs);
+  const numTables = ranges[ranges.length - 1][1] > 0xffff ? 2 : 1;
+  let cmap = "\x00\x00" + string16(numTables) + "\x00\x03" + "\x00\x01" + (0, _util.string32)(4 + numTables 
* 8);
+  let i, ii, j, jj;
+
+  for (i = ranges.length - 1; i >= 0; --i) {
+    if (ranges[i][0] <= 0xffff) {
+      break;
+    }
+  }
+
+  const bmpLength = i + 1;
+
+  if (ranges[i][0] < 0xffff && ranges[i][1] === 0xffff) {
+    ranges[i][1] = 0xfffe;
+  }
+
+  const trailingRangesCount = ranges[i][1] < 0xffff ? 1 : 0;
+  const segCount = bmpLength + trailingRangesCount;
+
+  const searchParams = _opentype_file_builder.OpenTypeFileBuilder.getSearchParams(segCount, 2);
+
+  let startCount = "";
+  let endCount = "";
+  let idDeltas = "";
+  let idRangeOffsets = "";
+  let glyphsIds = "";
+  let bias = 0;
+  let range, start, end, codes;
+
+  for (i = 0, ii = bmpLength; i < ii; i++) {
+    range = ranges[i];
+    start = range[0];
+    end = range[1];
+    startCount += string16(start);
+    endCount += string16(end);
+    codes = range[2];
+    let contiguous = true;
+
+    for (j = 1, jj = codes.length; j < jj; ++j) {
+      if (codes[j] !== codes[j - 1] + 1) {
+        contiguous = false;
+        break;
+      }
+    }
+
+    if (!contiguous) {
+      const offset = (segCount - i) * 2 + bias * 2;
+      bias += end - start + 1;
+      idDeltas += string16(0);
+      idRangeOffsets += string16(offset);
+
+      for (j = 0, jj = codes.length; j < jj; ++j) {
+        glyphsIds += string16(codes[j]);
+      }
+    } else {
+      const startCode = codes[0];
+      idDeltas += string16(startCode - start & 0xffff);
+      idRangeOffsets += string16(0);
+    }
+  }
+
+  if (trailingRangesCount > 0) {
+    endCount += "\xFF\xFF";
+    startCount += "\xFF\xFF";
+    idDeltas += "\x00\x01";
+    idRangeOffsets += "\x00\x00";
+  }
+
+  const format314 = "\x00\x00" + string16(2 * segCount) + string16(searchParams.range) + 
string16(searchParams.entry) + string16(searchParams.rangeShift) + endCount + "\x00\x00" + startCount + 
idDeltas + idRangeOffsets + glyphsIds;
+  let format31012 = "";
+  let header31012 = "";
+
+  if (numTables > 1) {
+    cmap += "\x00\x03" + "\x00\x0A" + (0, _util.string32)(4 + numTables * 8 + 4 + format314.length);
+    format31012 = "";
+
+    for (i = 0, ii = ranges.length; i < ii; i++) {
+      range = ranges[i];
+      start = range[0];
+      codes = range[2];
+      let code = codes[0];
+
+      for (j = 1, jj = codes.length; j < jj; ++j) {
+        if (codes[j] !== codes[j - 1] + 1) {
+          end = range[0] + j - 1;
+          format31012 += (0, _util.string32)(start) + (0, _util.string32)(end) + (0, _util.string32)(code);
+          start = end + 1;
+          code = codes[j];
+        }
+      }
+
+      format31012 += (0, _util.string32)(start) + (0, _util.string32)(range[1]) + (0, _util.string32)(code);
+    }
+
+    header31012 = "\x00\x0C" + "\x00\x00" + (0, _util.string32)(format31012.length + 16) + 
"\x00\x00\x00\x00" + (0, _util.string32)(format31012.length / 12);
+  }
+
+  return cmap + "\x00\x04" + string16(format314.length + 4) + format314 + header31012 + format31012;
+}
+
+function validateOS2Table(os2, file) {
+  file.pos = (file.start || 0) + os2.offset;
+  const version = file.getUint16();
+  file.skip(60);
+  const selection = file.getUint16();
+
+  if (version < 4 && selection & 0x0300) {
+    return false;
+  }
+
+  const firstChar = file.getUint16();
+  const lastChar = file.getUint16();
+
+  if (firstChar > lastChar) {
+    return false;
+  }
+
+  file.skip(6);
+  const usWinAscent = file.getUint16();
+
+  if (usWinAscent === 0) {
+    return false;
+  }
+
+  os2.data[8] = os2.data[9] = 0;
+  return true;
+}
+
+function createOS2Table(properties, charstrings, override) {
+  override = override || {
+    unitsPerEm: 0,
+    yMax: 0,
+    yMin: 0,
+    ascent: 0,
+    descent: 0
+  };
+  let ulUnicodeRange1 = 0;
+  let ulUnicodeRange2 = 0;
+  let ulUnicodeRange3 = 0;
+  let ulUnicodeRange4 = 0;
+  let firstCharIndex = null;
+  let lastCharIndex = 0;
+
+  if (charstrings) {
+    for (let code in charstrings) {
+      code |= 0;
+
+      if (firstCharIndex > code || !firstCharIndex) {
+        firstCharIndex = code;
+      }
+
+      if (lastCharIndex < code) {
+        lastCharIndex = code;
+      }
+
+      const position = (0, _unicode.getUnicodeRangeFor)(code);
+
+      if (position < 32) {
+        ulUnicodeRange1 |= 1 << position;
+      } else if (position < 64) {
+        ulUnicodeRange2 |= 1 << position - 32;
+      } else if (position < 96) {
+        ulUnicodeRange3 |= 1 << position - 64;
+      } else if (position < 123) {
+        ulUnicodeRange4 |= 1 << position - 96;
+      } else {
+        throw new _util.FormatError("Unicode ranges Bits > 123 are reserved for internal usage");
+      }
+    }
+
+    if (lastCharIndex > 0xffff) {
+      lastCharIndex = 0xffff;
+    }
+  } else {
+    firstCharIndex = 0;
+    lastCharIndex = 255;
+  }
+
+  const bbox = properties.bbox || [0, 0, 0, 0];
+  const unitsPerEm = override.unitsPerEm || 1 / (properties.fontMatrix || _util.FONT_IDENTITY_MATRIX)[0];
+  const scale = properties.ascentScaled ? 1.0 : unitsPerEm / PDF_GLYPH_SPACE_UNITS;
+  const typoAscent = override.ascent || Math.round(scale * (properties.ascent || bbox[3]));
+  let typoDescent = override.descent || Math.round(scale * (properties.descent || bbox[1]));
+
+  if (typoDescent > 0 && properties.descent > 0 && bbox[1] < 0) {
+    typoDescent = -typoDescent;
+  }
+
+  const winAscent = override.yMax || typoAscent;
+  const winDescent = -override.yMin || -typoDescent;
+  return "\x00\x03" + "\x02\x24" + "\x01\xF4" + "\x00\x05" + "\x00\x00" + "\x02\x8A" + "\x02\xBB" + 
"\x00\x00" + "\x00\x8C" + "\x02\x8A" + "\x02\xBB" + "\x00\x00" + "\x01\xDF" + "\x00\x31" + "\x01\x02" + 
"\x00\x00" + "\x00\x00\x06" + String.fromCharCode(properties.fixedPitch ? 0x09 : 0x00) + 
"\x00\x00\x00\x00\x00\x00" + (0, _util.string32)(ulUnicodeRange1) + (0, _util.string32)(ulUnicodeRange2) + 
(0, _util.string32)(ulUnicodeRange3) + (0, _util.string32)(ulUnicodeRange4) + "\x2A\x32\x31\x2A" + 
string16(properties.italicAngle ? 1 : 0) + string16(firstCharIndex || properties.firstChar) + 
string16(lastCharIndex || properties.lastChar) + string16(typoAscent) + string16(typoDescent) + "\x00\x64" + 
string16(winAscent) + string16(winDescent) + "\x00\x00\x00\x00" + "\x00\x00\x00\x00" + 
string16(properties.xHeight) + string16(properties.capHeight) + string16(0) + string16(firstCharIndex || 
properties.firstChar) + "\x00\x03";
+}
+
+function createPostTable(properties) {
+  const angle = Math.floor(properties.italicAngle * 2 ** 16);
+  return "\x00\x03\x00\x00" + (0, _util.string32)(angle) + "\x00\x00" + "\x00\x00" + (0, 
_util.string32)(properties.fixedPitch ? 1 : 0) + "\x00\x00\x00\x00" + "\x00\x00\x00\x00" + "\x00\x00\x00\x00" 
+ "\x00\x00\x00\x00";
+}
+
+function createPostscriptName(name) {
+  return name.replace(/[^\x21-\x7E]|[[\](){}<>/%]/g, "").slice(0, 63);
+}
+
+function createNameTable(name, proto) {
+  if (!proto) {
+    proto = [[], []];
+  }
+
+  const strings = [proto[0][0] || "Original licence", proto[0][1] || name, proto[0][2] || "Unknown", 
proto[0][3] || "uniqueID", proto[0][4] || name, proto[0][5] || "Version 0.11", proto[0][6] || 
createPostscriptName(name), proto[0][7] || "Unknown", proto[0][8] || "Unknown", proto[0][9] || "Unknown"];
+  const stringsUnicode = [];
+  let i, ii, j, jj, str;
+
+  for (i = 0, ii = strings.length; i < ii; i++) {
+    str = proto[1][i] || strings[i];
+    const strBufUnicode = [];
+
+    for (j = 0, jj = str.length; j < jj; j++) {
+      strBufUnicode.push(string16(str.charCodeAt(j)));
+    }
+
+    stringsUnicode.push(strBufUnicode.join(""));
+  }
+
+  const names = [strings, stringsUnicode];
+  const platforms = ["\x00\x01", "\x00\x03"];
+  const encodings = ["\x00\x00", "\x00\x01"];
+  const languages = ["\x00\x00", "\x04\x09"];
+  const namesRecordCount = strings.length * platforms.length;
+  let nameTable = "\x00\x00" + string16(namesRecordCount) + string16(namesRecordCount * 12 + 6);
+  let strOffset = 0;
+
+  for (i = 0, ii = platforms.length; i < ii; i++) {
+    const strs = names[i];
+
+    for (j = 0, jj = strs.length; j < jj; j++) {
+      str = strs[j];
+      const nameRecord = platforms[i] + encodings[i] + languages[i] + string16(j) + string16(str.length) + 
string16(strOffset);
+      nameTable += nameRecord;
+      strOffset += str.length;
+    }
+  }
+
+  nameTable += strings.join("") + stringsUnicode.join("");
+  return nameTable;
+}
+
+class Font {
+  constructor(name, file, properties) {
+    this.name = name;
+    this.psName = null;
+    this.mimetype = null;
+    this.disableFontFace = false;
+    this.loadedName = properties.loadedName;
+    this.isType3Font = properties.isType3Font;
+    this.missingFile = false;
+    this.cssFontInfo = properties.cssFontInfo;
+    this._charsCache = Object.create(null);
+    this._glyphCache = Object.create(null);
+    let isSerifFont = !!(properties.flags & _fonts_utils.FontFlags.Serif);
+
+    if (!isSerifFont && !properties.isSimulatedFlags) {
+      const baseName = name.replace(/[,_]/g, "-").split("-")[0],
+            serifFonts = (0, _standard_fonts.getSerifFonts)();
+
+      for (const namePart of baseName.split("+")) {
+        if (serifFonts[namePart]) {
+          isSerifFont = true;
+          break;
+        }
+      }
+    }
+
+    this.isSerifFont = isSerifFont;
+    this.isSymbolicFont = !!(properties.flags & _fonts_utils.FontFlags.Symbolic);
+    this.isMonospace = !!(properties.flags & _fonts_utils.FontFlags.FixedPitch);
+    let type = properties.type;
+    let subtype = properties.subtype;
+    this.type = type;
+    this.subtype = subtype;
+    let fallbackName = "sans-serif";
+
+    if (this.isMonospace) {
+      fallbackName = "monospace";
+    } else if (this.isSerifFont) {
+      fallbackName = "serif";
+    }
+
+    this.fallbackName = fallbackName;
+    this.differences = properties.differences;
+    this.widths = properties.widths;
+    this.defaultWidth = properties.defaultWidth;
+    this.composite = properties.composite;
+    this.cMap = properties.cMap;
+    this.capHeight = properties.capHeight / PDF_GLYPH_SPACE_UNITS;
+    this.ascent = properties.ascent / PDF_GLYPH_SPACE_UNITS;
+    this.descent = properties.descent / PDF_GLYPH_SPACE_UNITS;
+    this.lineHeight = this.ascent - this.descent;
+    this.fontMatrix = properties.fontMatrix;
+    this.bbox = properties.bbox;
+    this.defaultEncoding = properties.defaultEncoding;
+    this.toUnicode = properties.toUnicode;
+    this.toFontChar = [];
+
+    if (properties.type === "Type3") {
+      for (let charCode = 0; charCode < 256; charCode++) {
+        this.toFontChar[charCode] = this.differences[charCode] || properties.defaultEncoding[charCode];
+      }
+
+      this.fontType = _util.FontType.TYPE3;
+      return;
+    }
+
+    this.cidEncoding = properties.cidEncoding || "";
+    this.vertical = !!properties.vertical;
+
+    if (this.vertical) {
+      this.vmetrics = properties.vmetrics;
+      this.defaultVMetrics = properties.defaultVMetrics;
+    }
+
+    if (!file || file.isEmpty) {
+      if (file) {
+        (0, _util.warn)('Font file is empty in "' + name + '" (' + this.loadedName + ")");
+      }
+
+      this.fallbackToSystemFont(properties);
+      return;
+    }
+
+    [type, subtype] = getFontFileType(file, properties);
+
+    if (type !== this.type || subtype !== this.subtype) {
+      (0, _util.info)("Inconsistent font file Type/SubType, expected: " + `${this.type}/${this.subtype} but 
found: ${type}/${subtype}.`);
+    }
+
+    let data;
+
+    try {
+      switch (type) {
+        case "MMType1":
+          (0, _util.info)("MMType1 font (" + name + "), falling back to Type1.");
+
+        case "Type1":
+        case "CIDFontType0":
+          this.mimetype = "font/opentype";
+          const cff = subtype === "Type1C" || subtype === "CIDFontType0C" ? new _cff_font.CFFFont(file, 
properties) : new _type1_font.Type1Font(name, file, properties);
+          adjustWidths(properties);
+          data = this.convert(name, cff, properties);
+          break;
+
+        case "OpenType":
+        case "TrueType":
+        case "CIDFontType2":
+          this.mimetype = "font/opentype";
+          data = this.checkAndRepair(name, file, properties);
+
+          if (this.isOpenType) {
+            adjustWidths(properties);
+            type = "OpenType";
+          }
+
+          break;
+
+        default:
+          throw new _util.FormatError(`Font ${type} is not supported`);
+      }
+    } catch (e) {
+      (0, _util.warn)(e);
+      this.fallbackToSystemFont(properties);
+      return;
+    }
+
+    amendFallbackToUnicode(properties);
+    this.data = data;
+    this.fontType = (0, _fonts_utils.getFontType)(type, subtype, properties.isStandardFont);
+    this.fontMatrix = properties.fontMatrix;
+    this.widths = properties.widths;
+    this.defaultWidth = properties.defaultWidth;
+    this.toUnicode = properties.toUnicode;
+    this.seacMap = properties.seacMap;
+  }
+
+  get renderer() {
+    const renderer = _font_renderer.FontRendererFactory.create(this, _fonts_utils.SEAC_ANALYSIS_ENABLED);
+
+    return (0, _util.shadow)(this, "renderer", renderer);
+  }
+
+  exportData(extraProperties = false) {
+    const exportDataProperties = extraProperties ? [...EXPORT_DATA_PROPERTIES, 
...EXPORT_DATA_EXTRA_PROPERTIES] : EXPORT_DATA_PROPERTIES;
+    const data = Object.create(null);
+    let property, value;
+
+    for (property of exportDataProperties) {
+      value = this[property];
+
+      if (value !== undefined) {
+        data[property] = value;
+      }
+    }
+
+    return data;
+  }
+
+  fallbackToSystemFont(properties) {
+    this.missingFile = true;
+    const name = this.name;
+    const type = this.type;
+    const subtype = this.subtype;
+    let fontName = (0, _fonts_utils.normalizeFontName)(name);
+    const stdFontMap = (0, _standard_fonts.getStdFontMap)(),
+          nonStdFontMap = (0, _standard_fonts.getNonStdFontMap)();
+    const isStandardFont = !!stdFontMap[fontName];
+    const isMappedToStandardFont = !!(nonStdFontMap[fontName] && stdFontMap[nonStdFontMap[fontName]]);
+    fontName = stdFontMap[fontName] || nonStdFontMap[fontName] || fontName;
+    this.bold = fontName.search(/bold/gi) !== -1;
+    this.italic = fontName.search(/oblique/gi) !== -1 || fontName.search(/italic/gi) !== -1;
+    this.black = name.search(/Black/g) !== -1;
+    const isNarrow = name.search(/Narrow/g) !== -1;
+    this.remeasure = (!isStandardFont || isNarrow) && Object.keys(this.widths).length > 0;
+
+    if ((isStandardFont || isMappedToStandardFont) && type === "CIDFontType2" && 
this.cidEncoding.startsWith("Identity-")) {
+      const cidToGidMap = properties.cidToGidMap;
+      const map = [];
+      applyStandardFontGlyphMap(map, (0, _standard_fonts.getGlyphMapForStandardFonts)());
+
+      if (/Arial-?Black/i.test(name)) {
+        applyStandardFontGlyphMap(map, (0, _standard_fonts.getSupplementalGlyphMapForArialBlack)());
+      } else if (/Calibri/i.test(name)) {
+        applyStandardFontGlyphMap(map, (0, _standard_fonts.getSupplementalGlyphMapForCalibri)());
+      }
+
+      if (cidToGidMap) {
+        for (const charCode in map) {
+          const cid = map[charCode];
+
+          if (cidToGidMap[cid] !== undefined) {
+            map[+charCode] = cidToGidMap[cid];
+          }
+        }
+
+        if (cidToGidMap.length !== this.toUnicode.length && properties.hasIncludedToUnicodeMap && 
this.toUnicode instanceof _to_unicode_map.IdentityToUnicodeMap) {
+          this.toUnicode.forEach(function (charCode, unicodeCharCode) {
+            const cid = map[charCode];
+
+            if (cidToGidMap[cid] === undefined) {
+              map[+charCode] = unicodeCharCode;
+            }
+          });
+        }
+      }
+
+      if (!(this.toUnicode instanceof _to_unicode_map.IdentityToUnicodeMap)) {
+        this.toUnicode.forEach(function (charCode, unicodeCharCode) {
+          map[+charCode] = unicodeCharCode;
+        });
+      }
+
+      this.toFontChar = map;
+      this.toUnicode = new _to_unicode_map.ToUnicodeMap(map);
+    } else if (/Symbol/i.test(fontName)) {
+      this.toFontChar = buildToFontChar(_encodings.SymbolSetEncoding, (0, _glyphlist.getGlyphsUnicode)(), 
this.differences);
+    } else if (/Dingbats/i.test(fontName)) {
+      if (/Wingdings/i.test(name)) {
+        (0, _util.warn)("Non-embedded Wingdings font, falling back to ZapfDingbats.");
+      }
+
+      this.toFontChar = buildToFontChar(_encodings.ZapfDingbatsEncoding, (0, 
_glyphlist.getDingbatsGlyphsUnicode)(), this.differences);
+    } else if (isStandardFont) {
+      const map = buildToFontChar(this.defaultEncoding, (0, _glyphlist.getGlyphsUnicode)(), 
this.differences);
+
+      if (type === "CIDFontType2" && !this.cidEncoding.startsWith("Identity-") && !(this.toUnicode 
instanceof _to_unicode_map.IdentityToUnicodeMap)) {
+        this.toUnicode.forEach(function (charCode, unicodeCharCode) {
+          map[+charCode] = unicodeCharCode;
+        });
+      }
+
+      this.toFontChar = map;
+    } else {
+      const glyphsUnicodeMap = (0, _glyphlist.getGlyphsUnicode)();
+      const map = [];
+      this.toUnicode.forEach((charCode, unicodeCharCode) => {
+        if (!this.composite) {
+          const glyphName = this.differences[charCode] || this.defaultEncoding[charCode];
+          const unicode = (0, _unicode.getUnicodeForGlyph)(glyphName, glyphsUnicodeMap);
+
+          if (unicode !== -1) {
+            unicodeCharCode = unicode;
+          }
+        }
+
+        map[+charCode] = unicodeCharCode;
+      });
+
+      if (this.composite && this.toUnicode instanceof _to_unicode_map.IdentityToUnicodeMap) {
+        if (/Verdana/i.test(name)) {
+          applyStandardFontGlyphMap(map, (0, _standard_fonts.getGlyphMapForStandardFonts)());
+        }
+      }
+
+      this.toFontChar = map;
+    }
+
+    amendFallbackToUnicode(properties);
+    this.loadedName = fontName.split("-")[0];
+    this.fontType = (0, _fonts_utils.getFontType)(type, subtype, properties.isStandardFont);
+  }
+
+  checkAndRepair(name, font, properties) {
+    const VALID_TABLES = ["OS/2", "cmap", "head", "hhea", "hmtx", "maxp", "name", "post", "loca", "glyf", 
"fpgm", "prep", "cvt ", "CFF "];
+
+    function readTables(file, numTables) {
+      const tables = Object.create(null);
+      tables["OS/2"] = null;
+      tables.cmap = null;
+      tables.head = null;
+      tables.hhea = null;
+      tables.hmtx = null;
+      tables.maxp = null;
+      tables.name = null;
+      tables.post = null;
+
+      for (let i = 0; i < numTables; i++) {
+        const table = readTableEntry(file);
+
+        if (!VALID_TABLES.includes(table.tag)) {
+          continue;
+        }
+
+        if (table.length === 0) {
+          continue;
+        }
+
+        tables[table.tag] = table;
+      }
+
+      return tables;
+    }
+
+    function readTableEntry(file) {
+      const tag = file.getString(4);
+      const checksum = file.getInt32() >>> 0;
+      const offset = file.getInt32() >>> 0;
+      const length = file.getInt32() >>> 0;
+      const previousPosition = file.pos;
+      file.pos = file.start ? file.start : 0;
+      file.skip(offset);
+      const data = file.getBytes(length);
+      file.pos = previousPosition;
+
+      if (tag === "head") {
+        data[8] = data[9] = data[10] = data[11] = 0;
+        data[17] |= 0x20;
+      }
+
+      return {
+        tag,
+        checksum,
+        length,
+        offset,
+        data
+      };
+    }
+
+    function readOpenTypeHeader(ttf) {
+      return {
+        version: ttf.getString(4),
+        numTables: ttf.getUint16(),
+        searchRange: ttf.getUint16(),
+        entrySelector: ttf.getUint16(),
+        rangeShift: ttf.getUint16()
+      };
+    }
+
+    function readTrueTypeCollectionHeader(ttc) {
+      const ttcTag = ttc.getString(4);
+      (0, _util.assert)(ttcTag === "ttcf", "Must be a TrueType Collection font.");
+      const majorVersion = ttc.getUint16();
+      const minorVersion = ttc.getUint16();
+      const numFonts = ttc.getInt32() >>> 0;
+      const offsetTable = [];
+
+      for (let i = 0; i < numFonts; i++) {
+        offsetTable.push(ttc.getInt32() >>> 0);
+      }
+
+      const header = {
+        ttcTag,
+        majorVersion,
+        minorVersion,
+        numFonts,
+        offsetTable
+      };
+
+      switch (majorVersion) {
+        case 1:
+          return header;
+
+        case 2:
+          header.dsigTag = ttc.getInt32() >>> 0;
+          header.dsigLength = ttc.getInt32() >>> 0;
+          header.dsigOffset = ttc.getInt32() >>> 0;
+          return header;
+      }
+
+      throw new _util.FormatError(`Invalid TrueType Collection majorVersion: ${majorVersion}.`);
+    }
+
+    function readTrueTypeCollectionData(ttc, fontName) {
+      const {
+        numFonts,
+        offsetTable
+      } = readTrueTypeCollectionHeader(ttc);
+      const fontNameParts = fontName.split("+");
+      let fallbackData;
+
+      for (let i = 0; i < numFonts; i++) {
+        ttc.pos = (ttc.start || 0) + offsetTable[i];
+        const potentialHeader = readOpenTypeHeader(ttc);
+        const potentialTables = readTables(ttc, potentialHeader.numTables);
+
+        if (!potentialTables.name) {
+          throw new _util.FormatError('TrueType Collection font must contain a "name" table.');
+        }
+
+        const nameTable = readNameTable(potentialTables.name);
+
+        for (let j = 0, jj = nameTable.length; j < jj; j++) {
+          for (let k = 0, kk = nameTable[j].length; k < kk; k++) {
+            const nameEntry = nameTable[j][k] && nameTable[j][k].replace(/\s/g, "");
+
+            if (!nameEntry) {
+              continue;
+            }
+
+            if (nameEntry === fontName) {
+              return {
+                header: potentialHeader,
+                tables: potentialTables
+              };
+            }
+
+            if (fontNameParts.length < 2) {
+              continue;
+            }
+
+            for (const part of fontNameParts) {
+              if (nameEntry === part) {
+                fallbackData = {
+                  name: part,
+                  header: potentialHeader,
+                  tables: potentialTables
+                };
+              }
+            }
+          }
+        }
+      }
+
+      if (fallbackData) {
+        (0, _util.warn)(`TrueType Collection does not contain "${fontName}" font, ` + `falling back to 
"${fallbackData.name}" font instead.`);
+        return {
+          header: fallbackData.header,
+          tables: fallbackData.tables
+        };
+      }
+
+      throw new _util.FormatError(`TrueType Collection does not contain "${fontName}" font.`);
+    }
+
+    function readCmapTable(cmap, file, isSymbolicFont, hasEncoding) {
+      if (!cmap) {
+        (0, _util.warn)("No cmap table available.");
+        return {
+          platformId: -1,
+          encodingId: -1,
+          mappings: [],
+          hasShortCmap: false
+        };
+      }
+
+      let segment;
+      let start = (file.start ? file.start : 0) + cmap.offset;
+      file.pos = start;
+      file.skip(2);
+      const numTables = file.getUint16();
+      let potentialTable;
+      let canBreak = false;
+
+      for (let i = 0; i < numTables; i++) {
+        const platformId = file.getUint16();
+        const encodingId = file.getUint16();
+        const offset = file.getInt32() >>> 0;
+        let useTable = false;
+
+        if (potentialTable && potentialTable.platformId === platformId && potentialTable.encodingId === 
encodingId) {
+          continue;
+        }
+
+        if (platformId === 0 && (encodingId === 0 || encodingId === 1 || encodingId === 3)) {
+          useTable = true;
+        } else if (platformId === 1 && encodingId === 0) {
+          useTable = true;
+        } else if (platformId === 3 && encodingId === 1 && (hasEncoding || !potentialTable)) {
+          useTable = true;
+
+          if (!isSymbolicFont) {
+            canBreak = true;
+          }
+        } else if (isSymbolicFont && platformId === 3 && encodingId === 0) {
+          useTable = true;
+          let correctlySorted = true;
+
+          if (i < numTables - 1) {
+            const nextBytes = file.peekBytes(2),
+                  nextPlatformId = int16(nextBytes[0], nextBytes[1]);
+
+            if (nextPlatformId < platformId) {
+              correctlySorted = false;
+            }
+          }
+
+          if (correctlySorted) {
+            canBreak = true;
+          }
+        }
+
+        if (useTable) {
+          potentialTable = {
+            platformId,
+            encodingId,
+            offset
+          };
+        }
+
+        if (canBreak) {
+          break;
+        }
+      }
+
+      if (potentialTable) {
+        file.pos = start + potentialTable.offset;
+      }
+
+      if (!potentialTable || file.peekByte() === -1) {
+        (0, _util.warn)("Could not find a preferred cmap table.");
+        return {
+          platformId: -1,
+          encodingId: -1,
+          mappings: [],
+          hasShortCmap: false
+        };
+      }
+
+      const format = file.getUint16();
+      file.skip(2 + 2);
+      let hasShortCmap = false;
+      const mappings = [];
+      let j, glyphId;
+
+      if (format === 0) {
+        for (j = 0; j < 256; j++) {
+          const index = file.getByte();
+
+          if (!index) {
+            continue;
+          }
+
+          mappings.push({
+            charCode: j,
+            glyphId: index
+          });
+        }
+
+        hasShortCmap = true;
+      } else if (format === 4) {
+        const segCount = file.getUint16() >> 1;
+        file.skip(6);
+        const segments = [];
+        let segIndex;
+
+        for (segIndex = 0; segIndex < segCount; segIndex++) {
+          segments.push({
+            end: file.getUint16()
+          });
+        }
+
+        file.skip(2);
+
+        for (segIndex = 0; segIndex < segCount; segIndex++) {
+          segments[segIndex].start = file.getUint16();
+        }
+
+        for (segIndex = 0; segIndex < segCount; segIndex++) {
+          segments[segIndex].delta = file.getUint16();
+        }
+
+        let offsetsCount = 0,
+            offsetIndex;
+
+        for (segIndex = 0; segIndex < segCount; segIndex++) {
+          segment = segments[segIndex];
+          const rangeOffset = file.getUint16();
+
+          if (!rangeOffset) {
+            segment.offsetIndex = -1;
+            continue;
+          }
+
+          offsetIndex = (rangeOffset >> 1) - (segCount - segIndex);
+          segment.offsetIndex = offsetIndex;
+          offsetsCount = Math.max(offsetsCount, offsetIndex + segment.end - segment.start + 1);
+        }
+
+        const offsets = [];
+
+        for (j = 0; j < offsetsCount; j++) {
+          offsets.push(file.getUint16());
+        }
+
+        for (segIndex = 0; segIndex < segCount; segIndex++) {
+          segment = segments[segIndex];
+          start = segment.start;
+          const end = segment.end;
+          const delta = segment.delta;
+          offsetIndex = segment.offsetIndex;
+
+          for (j = start; j <= end; j++) {
+            if (j === 0xffff) {
+              continue;
+            }
+
+            glyphId = offsetIndex < 0 ? j : offsets[offsetIndex + j - start];
+            glyphId = glyphId + delta & 0xffff;
+            mappings.push({
+              charCode: j,
+              glyphId
+            });
+          }
+        }
+      } else if (format === 6) {
+        const firstCode = file.getUint16();
+        const entryCount = file.getUint16();
+
+        for (j = 0; j < entryCount; j++) {
+          glyphId = file.getUint16();
+          const charCode = firstCode + j;
+          mappings.push({
+            charCode,
+            glyphId
+          });
+        }
+      } else {
+        (0, _util.warn)("cmap table has unsupported format: " + format);
+        return {
+          platformId: -1,
+          encodingId: -1,
+          mappings: [],
+          hasShortCmap: false
+        };
+      }
+
+      mappings.sort(function (a, b) {
+        return a.charCode - b.charCode;
+      });
+
+      for (let i = 1; i < mappings.length; i++) {
+        if (mappings[i - 1].charCode === mappings[i].charCode) {
+          mappings.splice(i, 1);
+          i--;
+        }
+      }
+
+      return {
+        platformId: potentialTable.platformId,
+        encodingId: potentialTable.encodingId,
+        mappings,
+        hasShortCmap
+      };
+    }
+
+    function sanitizeMetrics(file, header, metrics, headTable, numGlyphs, dupFirstEntry) {
+      if (!header) {
+        if (metrics) {
+          metrics.data = null;
+        }
+
+        return;
+      }
+
+      file.pos = (file.start ? file.start : 0) + header.offset;
+      file.pos += 4;
+      file.pos += 2;
+      file.pos += 2;
+      file.pos += 2;
+      file.pos += 2;
+      file.pos += 2;
+      file.pos += 2;
+      file.pos += 2;
+      file.pos += 2;
+      file.pos += 2;
+      const caretOffset = file.getUint16();
+      file.pos += 8;
+      file.pos += 2;
+      let numOfMetrics = file.getUint16();
+
+      if (caretOffset !== 0) {
+        const macStyle = int16(headTable.data[44], headTable.data[45]);
+
+        if (!(macStyle & 2)) {
+          header.data[22] = 0;
+          header.data[23] = 0;
+        }
+      }
+
+      if (numOfMetrics > numGlyphs) {
+        (0, _util.info)(`The numOfMetrics (${numOfMetrics}) should not be ` + `greater than the numGlyphs 
(${numGlyphs}).`);
+        numOfMetrics = numGlyphs;
+        header.data[34] = (numOfMetrics & 0xff00) >> 8;
+        header.data[35] = numOfMetrics & 0x00ff;
+      }
+
+      const numOfSidebearings = numGlyphs - numOfMetrics;
+      const numMissing = numOfSidebearings - (metrics.length - numOfMetrics * 4 >> 1);
+
+      if (numMissing > 0) {
+        const entries = new Uint8Array(metrics.length + numMissing * 2);
+        entries.set(metrics.data);
+
+        if (dupFirstEntry) {
+          entries[metrics.length] = metrics.data[2];
+          entries[metrics.length + 1] = metrics.data[3];
+        }
+
+        metrics.data = entries;
+      }
+    }
+
+    function sanitizeGlyph(source, sourceStart, sourceEnd, dest, destStart, hintsValid) {
+      const glyphProfile = {
+        length: 0,
+        sizeOfInstructions: 0
+      };
+
+      if (sourceEnd - sourceStart <= 12) {
+        return glyphProfile;
+      }
+
+      const glyf = source.subarray(sourceStart, sourceEnd);
+      let contoursCount = signedInt16(glyf[0], glyf[1]);
+
+      if (contoursCount < 0) {
+        contoursCount = -1;
+        writeSignedInt16(glyf, 0, contoursCount);
+        dest.set(glyf, destStart);
+        glyphProfile.length = glyf.length;
+        return glyphProfile;
+      }
+
+      let i,
+          j = 10,
+          flagsCount = 0;
+
+      for (i = 0; i < contoursCount; i++) {
+        const endPoint = glyf[j] << 8 | glyf[j + 1];
+        flagsCount = endPoint + 1;
+        j += 2;
+      }
+
+      const instructionsStart = j;
+      const instructionsLength = glyf[j] << 8 | glyf[j + 1];
+      glyphProfile.sizeOfInstructions = instructionsLength;
+      j += 2 + instructionsLength;
+      const instructionsEnd = j;
+      let coordinatesLength = 0;
+
+      for (i = 0; i < flagsCount; i++) {
+        const flag = glyf[j++];
+
+        if (flag & 0xc0) {
+          glyf[j - 1] = flag & 0x3f;
+        }
+
+        let xLength = 2;
+
+        if (flag & 2) {
+          xLength = 1;
+        } else if (flag & 16) {
+          xLength = 0;
+        }
+
+        let yLength = 2;
+
+        if (flag & 4) {
+          yLength = 1;
+        } else if (flag & 32) {
+          yLength = 0;
+        }
+
+        const xyLength = xLength + yLength;
+        coordinatesLength += xyLength;
+
+        if (flag & 8) {
+          const repeat = glyf[j++];
+          i += repeat;
+          coordinatesLength += repeat * xyLength;
+        }
+      }
+
+      if (coordinatesLength === 0) {
+        return glyphProfile;
+      }
+
+      let glyphDataLength = j + coordinatesLength;
+
+      if (glyphDataLength > glyf.length) {
+        return glyphProfile;
+      }
+
+      if (!hintsValid && instructionsLength > 0) {
+        dest.set(glyf.subarray(0, instructionsStart), destStart);
+        dest.set([0, 0], destStart + instructionsStart);
+        dest.set(glyf.subarray(instructionsEnd, glyphDataLength), destStart + instructionsStart + 2);
+        glyphDataLength -= instructionsLength;
+
+        if (glyf.length - glyphDataLength > 3) {
+          glyphDataLength = glyphDataLength + 3 & ~3;
+        }
+
+        glyphProfile.length = glyphDataLength;
+        return glyphProfile;
+      }
+
+      if (glyf.length - glyphDataLength > 3) {
+        glyphDataLength = glyphDataLength + 3 & ~3;
+        dest.set(glyf.subarray(0, glyphDataLength), destStart);
+        glyphProfile.length = glyphDataLength;
+        return glyphProfile;
+      }
+
+      dest.set(glyf, destStart);
+      glyphProfile.length = glyf.length;
+      return glyphProfile;
+    }
+
+    function sanitizeHead(head, numGlyphs, locaLength) {
+      const data = head.data;
+      const version = int32(data[0], data[1], data[2], data[3]);
+
+      if (version >> 16 !== 1) {
+        (0, _util.info)("Attempting to fix invalid version in head table: " + version);
+        data[0] = 0;
+        data[1] = 1;
+        data[2] = 0;
+        data[3] = 0;
+      }
+
+      const indexToLocFormat = int16(data[50], data[51]);
+
+      if (indexToLocFormat < 0 || indexToLocFormat > 1) {
+        (0, _util.info)("Attempting to fix invalid indexToLocFormat in head table: " + indexToLocFormat);
+        const numGlyphsPlusOne = numGlyphs + 1;
+
+        if (locaLength === numGlyphsPlusOne << 1) {
+          data[50] = 0;
+          data[51] = 0;
+        } else if (locaLength === numGlyphsPlusOne << 2) {
+          data[50] = 0;
+          data[51] = 1;
+        } else {
+          throw new _util.FormatError("Could not fix indexToLocFormat: " + indexToLocFormat);
+        }
+      }
+    }
+
+    function sanitizeGlyphLocations(loca, glyf, numGlyphs, isGlyphLocationsLong, hintsValid, dupFirstEntry, 
maxSizeOfInstructions) {
+      let itemSize, itemDecode, itemEncode;
+
+      if (isGlyphLocationsLong) {
+        itemSize = 4;
+
+        itemDecode = function fontItemDecodeLong(data, offset) {
+          return data[offset] << 24 | data[offset + 1] << 16 | data[offset + 2] << 8 | data[offset + 3];
+        };
+
+        itemEncode = function fontItemEncodeLong(data, offset, value) {
+          data[offset] = value >>> 24 & 0xff;
+          data[offset + 1] = value >> 16 & 0xff;
+          data[offset + 2] = value >> 8 & 0xff;
+          data[offset + 3] = value & 0xff;
+        };
+      } else {
+        itemSize = 2;
+
+        itemDecode = function fontItemDecode(data, offset) {
+          return data[offset] << 9 | data[offset + 1] << 1;
+        };
+
+        itemEncode = function fontItemEncode(data, offset, value) {
+          data[offset] = value >> 9 & 0xff;
+          data[offset + 1] = value >> 1 & 0xff;
+        };
+      }
+
+      const numGlyphsOut = dupFirstEntry ? numGlyphs + 1 : numGlyphs;
+      const locaDataSize = itemSize * (1 + numGlyphsOut);
+      const locaData = new Uint8Array(locaDataSize);
+      locaData.set(loca.data.subarray(0, locaDataSize));
+      loca.data = locaData;
+      const oldGlyfData = glyf.data;
+      const oldGlyfDataLength = oldGlyfData.length;
+      const newGlyfData = new Uint8Array(oldGlyfDataLength);
+      let i, j;
+      const locaEntries = [];
+
+      for (i = 0, j = 0; i < numGlyphs + 1; i++, j += itemSize) {
+        let offset = itemDecode(locaData, j);
+
+        if (offset > oldGlyfDataLength) {
+          offset = oldGlyfDataLength;
+        }
+
+        locaEntries.push({
+          index: i,
+          offset,
+          endOffset: 0
+        });
+      }
+
+      locaEntries.sort((a, b) => {
+        return a.offset - b.offset;
+      });
+
+      for (i = 0; i < numGlyphs; i++) {
+        locaEntries[i].endOffset = locaEntries[i + 1].offset;
+      }
+
+      locaEntries.sort((a, b) => {
+        return a.index - b.index;
+      });
+      const missingGlyphs = Object.create(null);
+      let writeOffset = 0;
+      itemEncode(locaData, 0, writeOffset);
+
+      for (i = 0, j = itemSize; i < numGlyphs; i++, j += itemSize) {
+        const glyphProfile = sanitizeGlyph(oldGlyfData, locaEntries[i].offset, locaEntries[i].endOffset, 
newGlyfData, writeOffset, hintsValid);
+        const newLength = glyphProfile.length;
+
+        if (newLength === 0) {
+          missingGlyphs[i] = true;
+        }
+
+        if (glyphProfile.sizeOfInstructions > maxSizeOfInstructions) {
+          maxSizeOfInstructions = glyphProfile.sizeOfInstructions;
+        }
+
+        writeOffset += newLength;
+        itemEncode(locaData, j, writeOffset);
+      }
+
+      if (writeOffset === 0) {
+        const simpleGlyph = new Uint8Array([0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 0]);
+
+        for (i = 0, j = itemSize; i < numGlyphsOut; i++, j += itemSize) {
+          itemEncode(locaData, j, simpleGlyph.length);
+        }
+
+        glyf.data = simpleGlyph;
+      } else if (dupFirstEntry) {
+        const firstEntryLength = itemDecode(locaData, itemSize);
+
+        if (newGlyfData.length > firstEntryLength + writeOffset) {
+          glyf.data = newGlyfData.subarray(0, firstEntryLength + writeOffset);
+        } else {
+          glyf.data = new Uint8Array(firstEntryLength + writeOffset);
+          glyf.data.set(newGlyfData.subarray(0, writeOffset));
+        }
+
+        glyf.data.set(newGlyfData.subarray(0, firstEntryLength), writeOffset);
+        itemEncode(loca.data, locaData.length - itemSize, writeOffset + firstEntryLength);
+      } else {
+        glyf.data = newGlyfData.subarray(0, writeOffset);
+      }
+
+      return {
+        missingGlyphs,
+        maxSizeOfInstructions
+      };
+    }
+
+    function readPostScriptTable(post, propertiesObj, maxpNumGlyphs) {
+      const start = (font.start ? font.start : 0) + post.offset;
+      font.pos = start;
+      const length = post.length,
+            end = start + length;
+      const version = font.getInt32();
+      font.skip(28);
+      let glyphNames;
+      let valid = true;
+      let i;
+
+      switch (version) {
+        case 0x00010000:
+          glyphNames = _fonts_utils.MacStandardGlyphOrdering;
+          break;
+
+        case 0x00020000:
+          const numGlyphs = font.getUint16();
+
+          if (numGlyphs !== maxpNumGlyphs) {
+            valid = false;
+            break;
+          }
+
+          const glyphNameIndexes = [];
+
+          for (i = 0; i < numGlyphs; ++i) {
+            const index = font.getUint16();
+
+            if (index >= 32768) {
+              valid = false;
+              break;
+            }
+
+            glyphNameIndexes.push(index);
+          }
+
+          if (!valid) {
+            break;
+          }
+
+          const customNames = [],
+                strBuf = [];
+
+          while (font.pos < end) {
+            const stringLength = font.getByte();
+            strBuf.length = stringLength;
+
+            for (i = 0; i < stringLength; ++i) {
+              strBuf[i] = String.fromCharCode(font.getByte());
+            }
+
+            customNames.push(strBuf.join(""));
+          }
+
+          glyphNames = [];
+
+          for (i = 0; i < numGlyphs; ++i) {
+            const j = glyphNameIndexes[i];
+
+            if (j < 258) {
+              glyphNames.push(_fonts_utils.MacStandardGlyphOrdering[j]);
+              continue;
+            }
+
+            glyphNames.push(customNames[j - 258]);
+          }
+
+          break;
+
+        case 0x00030000:
+          break;
+
+        default:
+          (0, _util.warn)("Unknown/unsupported post table version " + version);
+          valid = false;
+
+          if (propertiesObj.defaultEncoding) {
+            glyphNames = propertiesObj.defaultEncoding;
+          }
+
+          break;
+      }
+
+      propertiesObj.glyphNames = glyphNames;
+      return valid;
+    }
+
+    function readNameTable(nameTable) {
+      const start = (font.start ? font.start : 0) + nameTable.offset;
+      font.pos = start;
+      const names = [[], []];
+      const length = nameTable.length,
+            end = start + length;
+      const format = font.getUint16();
+      const FORMAT_0_HEADER_LENGTH = 6;
+
+      if (format !== 0 || length < FORMAT_0_HEADER_LENGTH) {
+        return names;
+      }
+
+      const numRecords = font.getUint16();
+      const stringsStart = font.getUint16();
+      const records = [];
+      const NAME_RECORD_LENGTH = 12;
+      let i, ii;
+
+      for (i = 0; i < numRecords && font.pos + NAME_RECORD_LENGTH <= end; i++) {
+        const r = {
+          platform: font.getUint16(),
+          encoding: font.getUint16(),
+          language: font.getUint16(),
+          name: font.getUint16(),
+          length: font.getUint16(),
+          offset: font.getUint16()
+        };
+
+        if (r.platform === 1 && r.encoding === 0 && r.language === 0 || r.platform === 3 && r.encoding === 1 
&& r.language === 0x409) {
+          records.push(r);
+        }
+      }
+
+      for (i = 0, ii = records.length; i < ii; i++) {
+        const record = records[i];
+
+        if (record.length <= 0) {
+          continue;
+        }
+
+        const pos = start + stringsStart + record.offset;
+
+        if (pos + record.length > end) {
+          continue;
+        }
+
+        font.pos = pos;
+        const nameIndex = record.name;
+
+        if (record.encoding) {
+          let str = "";
+
+          for (let j = 0, jj = record.length; j < jj; j += 2) {
+            str += String.fromCharCode(font.getUint16());
+          }
+
+          names[1][nameIndex] = str;
+        } else {
+          names[0][nameIndex] = font.getString(record.length);
+        }
+      }
+
+      return names;
+    }
+
+    const TTOpsStackDeltas = [0, 0, 0, 0, 0, 0, 0, 0, -2, -2, -2, -2, 0, 0, -2, -5, -1, -1, -1, -1, -1, -1, 
-1, -1, 0, 0, -1, 0, -1, -1, -1, -1, 1, -1, -999, 0, 1, 0, -1, -2, 0, -1, -2, -1, -1, 0, -1, -1, 0, 0, -999, 
-999, -1, -1, -1, -1, -2, -999, -2, -2, -999, 0, -2, -2, 0, 0, -2, 0, -2, 0, 0, 0, -2, -1, -1, 1, 1, 0, 0, 
-1, -1, -1, -1, -1, -1, -1, 0, 0, -1, 0, -1, -1, 0, -999, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, -2, -999, -999, -999, -999, -999, -1, -1, -2, -2, 0, 0, 0, 0, -1, -1, -999, -2, -2, 0, 0, -1, -2, 
-2, 0, 0, 0, -1, -1, -1, -2];
+
+    function sanitizeTTProgram(table, ttContext) {
+      let data = table.data;
+      let i = 0,
+          j,
+          n,
+          b,
+          funcId,
+          pc,
+          lastEndf = 0,
+          lastDeff = 0;
+      const stack = [];
+      const callstack = [];
+      const functionsCalled = [];
+      let tooComplexToFollowFunctions = ttContext.tooComplexToFollowFunctions;
+      let inFDEF = false,
+          ifLevel = 0,
+          inELSE = 0;
+
+      for (let ii = data.length; i < ii;) {
+        const op = data[i++];
+
+        if (op === 0x40) {
+          n = data[i++];
+
+          if (inFDEF || inELSE) {
+            i += n;
+          } else {
+            for (j = 0; j < n; j++) {
+              stack.push(data[i++]);
+            }
+          }
+        } else if (op === 0x41) {
+          n = data[i++];
+
+          if (inFDEF || inELSE) {
+            i += n * 2;
+          } else {
+            for (j = 0; j < n; j++) {
+              b = data[i++];
+              stack.push(b << 8 | data[i++]);
+            }
+          }
+        } else if ((op & 0xf8) === 0xb0) {
+          n = op - 0xb0 + 1;
+
+          if (inFDEF || inELSE) {
+            i += n;
+          } else {
+            for (j = 0; j < n; j++) {
+              stack.push(data[i++]);
+            }
+          }
+        } else if ((op & 0xf8) === 0xb8) {
+          n = op - 0xb8 + 1;
+
+          if (inFDEF || inELSE) {
+            i += n * 2;
+          } else {
+            for (j = 0; j < n; j++) {
+              b = data[i++];
+              stack.push(b << 8 | data[i++]);
+            }
+          }
+        } else if (op === 0x2b && !tooComplexToFollowFunctions) {
+          if (!inFDEF && !inELSE) {
+            funcId = stack[stack.length - 1];
+
+            if (isNaN(funcId)) {
+              (0, _util.info)("TT: CALL empty stack (or invalid entry).");
+            } else {
+              ttContext.functionsUsed[funcId] = true;
+
+              if (funcId in ttContext.functionsStackDeltas) {
+                const newStackLength = stack.length + ttContext.functionsStackDeltas[funcId];
+
+                if (newStackLength < 0) {
+                  (0, _util.warn)("TT: CALL invalid functions stack delta.");
+                  ttContext.hintsValid = false;
+                  return;
+                }
+
+                stack.length = newStackLength;
+              } else if (funcId in ttContext.functionsDefined && !functionsCalled.includes(funcId)) {
+                callstack.push({
+                  data,
+                  i,
+                  stackTop: stack.length - 1
+                });
+                functionsCalled.push(funcId);
+                pc = ttContext.functionsDefined[funcId];
+
+                if (!pc) {
+                  (0, _util.warn)("TT: CALL non-existent function");
+                  ttContext.hintsValid = false;
+                  return;
+                }
+
+                data = pc.data;
+                i = pc.i;
+              }
+            }
+          }
+        } else if (op === 0x2c && !tooComplexToFollowFunctions) {
+          if (inFDEF || inELSE) {
+            (0, _util.warn)("TT: nested FDEFs not allowed");
+            tooComplexToFollowFunctions = true;
+          }
+
+          inFDEF = true;
+          lastDeff = i;
+          funcId = stack.pop();
+          ttContext.functionsDefined[funcId] = {
+            data,
+            i
+          };
+        } else if (op === 0x2d) {
+          if (inFDEF) {
+            inFDEF = false;
+            lastEndf = i;
+          } else {
+            pc = callstack.pop();
+
+            if (!pc) {
+              (0, _util.warn)("TT: ENDF bad stack");
+              ttContext.hintsValid = false;
+              return;
+            }
+
+            funcId = functionsCalled.pop();
+            data = pc.data;
+            i = pc.i;
+            ttContext.functionsStackDeltas[funcId] = stack.length - pc.stackTop;
+          }
+        } else if (op === 0x89) {
+          if (inFDEF || inELSE) {
+            (0, _util.warn)("TT: nested IDEFs not allowed");
+            tooComplexToFollowFunctions = true;
+          }
+
+          inFDEF = true;
+          lastDeff = i;
+        } else if (op === 0x58) {
+          ++ifLevel;
+        } else if (op === 0x1b) {
+          inELSE = ifLevel;
+        } else if (op === 0x59) {
+          if (inELSE === ifLevel) {
+            inELSE = 0;
+          }
+
+          --ifLevel;
+        } else if (op === 0x1c) {
+          if (!inFDEF && !inELSE) {
+            const offset = stack[stack.length - 1];
+
+            if (offset > 0) {
+              i += offset - 1;
+            }
+          }
+        }
+
+        if (!inFDEF && !inELSE) {
+          let stackDelta = 0;
+
+          if (op <= 0x8e) {
+            stackDelta = TTOpsStackDeltas[op];
+          } else if (op >= 0xc0 && op <= 0xdf) {
+            stackDelta = -1;
+          } else if (op >= 0xe0) {
+            stackDelta = -2;
+          }
+
+          if (op >= 0x71 && op <= 0x75) {
+            n = stack.pop();
+
+            if (!isNaN(n)) {
+              stackDelta = -n * 2;
+            }
+          }
+
+          while (stackDelta < 0 && stack.length > 0) {
+            stack.pop();
+            stackDelta++;
+          }
+
+          while (stackDelta > 0) {
+            stack.push(NaN);
+            stackDelta--;
+          }
+        }
+      }
+
+      ttContext.tooComplexToFollowFunctions = tooComplexToFollowFunctions;
+      const content = [data];
+
+      if (i > data.length) {
+        content.push(new Uint8Array(i - data.length));
+      }
+
+      if (lastDeff > lastEndf) {
+        (0, _util.warn)("TT: complementing a missing function tail");
+        content.push(new Uint8Array([0x22, 0x2d]));
+      }
+
+      foldTTTable(table, content);
+    }
+
+    function checkInvalidFunctions(ttContext, maxFunctionDefs) {
+      if (ttContext.tooComplexToFollowFunctions) {
+        return;
+      }
+
+      if (ttContext.functionsDefined.length > maxFunctionDefs) {
+        (0, _util.warn)("TT: more functions defined than expected");
+        ttContext.hintsValid = false;
+        return;
+      }
+
+      for (let j = 0, jj = ttContext.functionsUsed.length; j < jj; j++) {
+        if (j > maxFunctionDefs) {
+          (0, _util.warn)("TT: invalid function id: " + j);
+          ttContext.hintsValid = false;
+          return;
+        }
+
+        if (ttContext.functionsUsed[j] && !ttContext.functionsDefined[j]) {
+          (0, _util.warn)("TT: undefined function: " + j);
+          ttContext.hintsValid = false;
+          return;
+        }
+      }
+    }
+
+    function foldTTTable(table, content) {
+      if (content.length > 1) {
+        let newLength = 0;
+        let j, jj;
+
+        for (j = 0, jj = content.length; j < jj; j++) {
+          newLength += content[j].length;
+        }
+
+        newLength = newLength + 3 & ~3;
+        const result = new Uint8Array(newLength);
+        let pos = 0;
+
+        for (j = 0, jj = content.length; j < jj; j++) {
+          result.set(content[j], pos);
+          pos += content[j].length;
+        }
+
+        table.data = result;
+        table.length = newLength;
+      }
+    }
+
+    function sanitizeTTPrograms(fpgm, prep, cvt, maxFunctionDefs) {
+      const ttContext = {
+        functionsDefined: [],
+        functionsUsed: [],
+        functionsStackDeltas: [],
+        tooComplexToFollowFunctions: false,
+        hintsValid: true
+      };
+
+      if (fpgm) {
+        sanitizeTTProgram(fpgm, ttContext);
+      }
+
+      if (prep) {
+        sanitizeTTProgram(prep, ttContext);
+      }
+
+      if (fpgm) {
+        checkInvalidFunctions(ttContext, maxFunctionDefs);
+      }
+
+      if (cvt && cvt.length & 1) {
+        const cvtData = new Uint8Array(cvt.length + 1);
+        cvtData.set(cvt.data);
+        cvt.data = cvtData;
+      }
+
+      return ttContext.hintsValid;
+    }
+
+    font = new _stream.Stream(new Uint8Array(font.getBytes()));
+    let header, tables;
+
+    if (isTrueTypeCollectionFile(font)) {
+      const ttcData = readTrueTypeCollectionData(font, this.name);
+      header = ttcData.header;
+      tables = ttcData.tables;
+    } else {
+      header = readOpenTypeHeader(font);
+      tables = readTables(font, header.numTables);
+    }
+
+    let cff, cffFile;
+    const isTrueType = !tables["CFF "];
+
+    if (!isTrueType) {
+      const isComposite = properties.composite && ((properties.cidToGidMap || []).length > 0 || 
!(properties.cMap instanceof _cmap.IdentityCMap));
+
+      if (header.version === "OTTO" && !isComposite || !tables.head || !tables.hhea || !tables.maxp || 
!tables.post) {
+        cffFile = new _stream.Stream(tables["CFF "].data);
+        cff = new _cff_font.CFFFont(cffFile, properties);
+        adjustWidths(properties);
+        return this.convert(name, cff, properties);
+      }
+
+      delete tables.glyf;
+      delete tables.loca;
+      delete tables.fpgm;
+      delete tables.prep;
+      delete tables["cvt "];
+      this.isOpenType = true;
+    } else {
+      if (!tables.loca) {
+        throw new _util.FormatError('Required "loca" table is not found');
+      }
+
+      if (!tables.glyf) {
+        (0, _util.warn)('Required "glyf" table is not found -- trying to recover.');
+        tables.glyf = {
+          tag: "glyf",
+          data: new Uint8Array(0)
+        };
+      }
+
+      this.isOpenType = false;
+    }
+
+    if (!tables.maxp) {
+      throw new _util.FormatError('Required "maxp" table is not found');
+    }
+
+    font.pos = (font.start || 0) + tables.maxp.offset;
+    const version = font.getInt32();
+    const numGlyphs = font.getUint16();
+
+    if (properties.scaleFactors && properties.scaleFactors.length === numGlyphs && isTrueType) {
+      const {
+        scaleFactors
+      } = properties;
+      const isGlyphLocationsLong = int16(tables.head.data[50], tables.head.data[51]);
+      const glyphs = new _glyf.GlyfTable({
+        glyfTable: tables.glyf.data,
+        isGlyphLocationsLong,
+        locaTable: tables.loca.data,
+        numGlyphs
+      });
+      glyphs.scale(scaleFactors);
+      const {
+        glyf,
+        loca,
+        isLocationLong
+      } = glyphs.write();
+      tables.glyf.data = glyf;
+      tables.loca.data = loca;
+
+      if (isLocationLong !== !!isGlyphLocationsLong) {
+        tables.head.data[50] = 0;
+        tables.head.data[51] = isLocationLong ? 1 : 0;
+      }
+
+      const metrics = tables.hmtx.data;
+
+      for (let i = 0; i < numGlyphs; i++) {
+        const j = 4 * i;
+        const advanceWidth = Math.round(scaleFactors[i] * int16(metrics[j], metrics[j + 1]));
+        metrics[j] = advanceWidth >> 8 & 0xff;
+        metrics[j + 1] = advanceWidth & 0xff;
+        const lsb = Math.round(scaleFactors[i] * signedInt16(metrics[j + 2], metrics[j + 3]));
+        writeSignedInt16(metrics, j + 2, lsb);
+      }
+    }
+
+    let numGlyphsOut = numGlyphs + 1;
+    let dupFirstEntry = true;
+
+    if (numGlyphsOut > 0xffff) {
+      dupFirstEntry = false;
+      numGlyphsOut = numGlyphs;
+      (0, _util.warn)("Not enough space in glyfs to duplicate first glyph.");
+    }
+
+    let maxFunctionDefs = 0;
+    let maxSizeOfInstructions = 0;
+
+    if (version >= 0x00010000 && tables.maxp.length >= 22) {
+      font.pos += 8;
+      const maxZones = font.getUint16();
+
+      if (maxZones > 2) {
+        tables.maxp.data[14] = 0;
+        tables.maxp.data[15] = 2;
+      }
+
+      font.pos += 4;
+      maxFunctionDefs = font.getUint16();
+      font.pos += 4;
+      maxSizeOfInstructions = font.getUint16();
+    }
+
+    tables.maxp.data[4] = numGlyphsOut >> 8;
+    tables.maxp.data[5] = numGlyphsOut & 255;
+    const hintsValid = sanitizeTTPrograms(tables.fpgm, tables.prep, tables["cvt "], maxFunctionDefs);
+
+    if (!hintsValid) {
+      delete tables.fpgm;
+      delete tables.prep;
+      delete tables["cvt "];
+    }
+
+    sanitizeMetrics(font, tables.hhea, tables.hmtx, tables.head, numGlyphsOut, dupFirstEntry);
+
+    if (!tables.head) {
+      throw new _util.FormatError('Required "head" table is not found');
+    }
+
+    sanitizeHead(tables.head, numGlyphs, isTrueType ? tables.loca.length : 0);
+    let missingGlyphs = Object.create(null);
+
+    if (isTrueType) {
+      const isGlyphLocationsLong = int16(tables.head.data[50], tables.head.data[51]);
+      const glyphsInfo = sanitizeGlyphLocations(tables.loca, tables.glyf, numGlyphs, isGlyphLocationsLong, 
hintsValid, dupFirstEntry, maxSizeOfInstructions);
+      missingGlyphs = glyphsInfo.missingGlyphs;
+
+      if (version >= 0x00010000 && tables.maxp.length >= 22) {
+        tables.maxp.data[26] = glyphsInfo.maxSizeOfInstructions >> 8;
+        tables.maxp.data[27] = glyphsInfo.maxSizeOfInstructions & 255;
+      }
+    }
+
+    if (!tables.hhea) {
+      throw new _util.FormatError('Required "hhea" table is not found');
+    }
+
+    if (tables.hhea.data[10] === 0 && tables.hhea.data[11] === 0) {
+      tables.hhea.data[10] = 0xff;
+      tables.hhea.data[11] = 0xff;
+    }
+
+    const metricsOverride = {
+      unitsPerEm: int16(tables.head.data[18], tables.head.data[19]),
+      yMax: int16(tables.head.data[42], tables.head.data[43]),
+      yMin: signedInt16(tables.head.data[38], tables.head.data[39]),
+      ascent: signedInt16(tables.hhea.data[4], tables.hhea.data[5]),
+      descent: signedInt16(tables.hhea.data[6], tables.hhea.data[7]),
+      lineGap: signedInt16(tables.hhea.data[8], tables.hhea.data[9])
+    };
+    this.ascent = metricsOverride.ascent / metricsOverride.unitsPerEm;
+    this.descent = metricsOverride.descent / metricsOverride.unitsPerEm;
+    this.lineGap = metricsOverride.lineGap / metricsOverride.unitsPerEm;
+
+    if (this.cssFontInfo && this.cssFontInfo.lineHeight) {
+      this.lineHeight = this.cssFontInfo.metrics.lineHeight;
+      this.lineGap = this.cssFontInfo.metrics.lineGap;
+    } else {
+      this.lineHeight = this.ascent - this.descent + this.lineGap;
+    }
+
+    if (tables.post) {
+      readPostScriptTable(tables.post, properties, numGlyphs);
+    }
+
+    tables.post = {
+      tag: "post",
+      data: createPostTable(properties)
+    };
+    const charCodeToGlyphId = [];
+
+    function hasGlyph(glyphId) {
+      return !missingGlyphs[glyphId];
+    }
+
+    if (properties.composite) {
+      const cidToGidMap = properties.cidToGidMap || [];
+      const isCidToGidMapEmpty = cidToGidMap.length === 0;
+      properties.cMap.forEach(function (charCode, cid) {
+        if (typeof cid === "string") {
+          cid = convertCidString(charCode, cid, true);
+        }
+
+        if (cid > 0xffff) {
+          throw new _util.FormatError("Max size of CID is 65,535");
+        }
+
+        let glyphId = -1;
+
+        if (isCidToGidMapEmpty) {
+          glyphId = cid;
+        } else if (cidToGidMap[cid] !== undefined) {
+          glyphId = cidToGidMap[cid];
+        }
+
+        if (glyphId >= 0 && glyphId < numGlyphs && hasGlyph(glyphId)) {
+          charCodeToGlyphId[charCode] = glyphId;
+        }
+      });
+    } else {
+      const cmapTable = readCmapTable(tables.cmap, font, this.isSymbolicFont, properties.hasEncoding);
+      const cmapPlatformId = cmapTable.platformId;
+      const cmapEncodingId = cmapTable.encodingId;
+      const cmapMappings = cmapTable.mappings;
+      const cmapMappingsLength = cmapMappings.length;
+      let baseEncoding = [],
+          forcePostTable = false;
+
+      if (properties.hasEncoding && (properties.baseEncodingName === "MacRomanEncoding" || 
properties.baseEncodingName === "WinAnsiEncoding")) {
+        baseEncoding = (0, _encodings.getEncoding)(properties.baseEncodingName);
+      }
+
+      if (properties.hasEncoding && !this.isSymbolicFont && (cmapPlatformId === 3 && cmapEncodingId === 1 || 
cmapPlatformId === 1 && cmapEncodingId === 0)) {
+        const glyphsUnicodeMap = (0, _glyphlist.getGlyphsUnicode)();
+
+        for (let charCode = 0; charCode < 256; charCode++) {
+          let glyphName;
+
+          if (this.differences[charCode] !== undefined) {
+            glyphName = this.differences[charCode];
+          } else if (baseEncoding.length && baseEncoding[charCode] !== "") {
+            glyphName = baseEncoding[charCode];
+          } else {
+            glyphName = _encodings.StandardEncoding[charCode];
+          }
+
+          if (!glyphName) {
+            continue;
+          }
+
+          const standardGlyphName = (0, _fonts_utils.recoverGlyphName)(glyphName, glyphsUnicodeMap);
+          let unicodeOrCharCode;
+
+          if (cmapPlatformId === 3 && cmapEncodingId === 1) {
+            unicodeOrCharCode = glyphsUnicodeMap[standardGlyphName];
+          } else if (cmapPlatformId === 1 && cmapEncodingId === 0) {
+            unicodeOrCharCode = _encodings.MacRomanEncoding.indexOf(standardGlyphName);
+          }
+
+          if (unicodeOrCharCode === undefined) {
+            if (!properties.glyphNames && properties.hasIncludedToUnicodeMap && !(this.toUnicode instanceof 
_to_unicode_map.IdentityToUnicodeMap)) {
+              const unicode = this.toUnicode.get(charCode);
+
+              if (unicode) {
+                unicodeOrCharCode = unicode.codePointAt(0);
+              }
+            }
+
+            if (unicodeOrCharCode === undefined) {
+              continue;
+            }
+          }
+
+          for (let i = 0; i < cmapMappingsLength; ++i) {
+            if (cmapMappings[i].charCode !== unicodeOrCharCode) {
+              continue;
+            }
+
+            charCodeToGlyphId[charCode] = cmapMappings[i].glyphId;
+            break;
+          }
+        }
+      } else if (cmapPlatformId === 0) {
+        for (let i = 0; i < cmapMappingsLength; ++i) {
+          charCodeToGlyphId[cmapMappings[i].charCode] = cmapMappings[i].glyphId;
+        }
+
+        forcePostTable = true;
+      } else {
+        for (let i = 0; i < cmapMappingsLength; ++i) {
+          let charCode = cmapMappings[i].charCode;
+
+          if (cmapPlatformId === 3 && charCode >= 0xf000 && charCode <= 0xf0ff) {
+            charCode &= 0xff;
+          }
+
+          charCodeToGlyphId[charCode] = cmapMappings[i].glyphId;
+        }
+      }
+
+      if (properties.glyphNames && (baseEncoding.length || this.differences.length)) {
+        for (let i = 0; i < 256; ++i) {
+          if (!forcePostTable && charCodeToGlyphId[i] !== undefined) {
+            continue;
+          }
+
+          const glyphName = this.differences[i] || baseEncoding[i];
+
+          if (!glyphName) {
+            continue;
+          }
+
+          const glyphId = properties.glyphNames.indexOf(glyphName);
+
+          if (glyphId > 0 && hasGlyph(glyphId)) {
+            charCodeToGlyphId[i] = glyphId;
+          }
+        }
+      }
+    }
+
+    if (charCodeToGlyphId.length === 0) {
+      charCodeToGlyphId[0] = 0;
+    }
+
+    let glyphZeroId = numGlyphsOut - 1;
+
+    if (!dupFirstEntry) {
+      glyphZeroId = 0;
+    }
+
+    if (!properties.cssFontInfo) {
+      const newMapping = adjustMapping(charCodeToGlyphId, hasGlyph, glyphZeroId);
+      this.toFontChar = newMapping.toFontChar;
+      tables.cmap = {
+        tag: "cmap",
+        data: createCmapTable(newMapping.charCodeToGlyphId, numGlyphsOut)
+      };
+
+      if (!tables["OS/2"] || !validateOS2Table(tables["OS/2"], font)) {
+        tables["OS/2"] = {
+          tag: "OS/2",
+          data: createOS2Table(properties, newMapping.charCodeToGlyphId, metricsOverride)
+        };
+      }
+    }
+
+    if (!isTrueType) {
+      try {
+        cffFile = new _stream.Stream(tables["CFF "].data);
+        const parser = new _cff_parser.CFFParser(cffFile, properties, _fonts_utils.SEAC_ANALYSIS_ENABLED);
+        cff = parser.parse();
+        cff.duplicateFirstGlyph();
+        const compiler = new _cff_parser.CFFCompiler(cff);
+        tables["CFF "].data = compiler.compile();
+      } catch (e) {
+        (0, _util.warn)("Failed to compile font " + properties.loadedName);
+      }
+    }
+
+    if (!tables.name) {
+      tables.name = {
+        tag: "name",
+        data: createNameTable(this.name)
+      };
+    } else {
+      const namePrototype = readNameTable(tables.name);
+      tables.name.data = createNameTable(name, namePrototype);
+      this.psName = namePrototype[0][6] || null;
+    }
+
+    const builder = new _opentype_file_builder.OpenTypeFileBuilder(header.version);
+
+    for (const tableTag in tables) {
+      builder.addTable(tableTag, tables[tableTag].data);
+    }
+
+    return builder.toArray();
+  }
+
+  convert(fontName, font, properties) {
+    properties.fixedPitch = false;
+
+    if (properties.builtInEncoding) {
+      adjustToUnicode(properties, properties.builtInEncoding);
+    }
+
+    let glyphZeroId = 1;
+
+    if (font instanceof _cff_font.CFFFont) {
+      glyphZeroId = font.numGlyphs - 1;
+    }
+
+    const mapping = font.getGlyphMapping(properties);
+    let newMapping = null;
+    let newCharCodeToGlyphId = mapping;
+
+    if (!properties.cssFontInfo) {
+      newMapping = adjustMapping(mapping, font.hasGlyphId.bind(font), glyphZeroId);
+      this.toFontChar = newMapping.toFontChar;
+      newCharCodeToGlyphId = newMapping.charCodeToGlyphId;
+    }
+
+    const numGlyphs = font.numGlyphs;
+
+    function getCharCodes(charCodeToGlyphId, glyphId) {
+      let charCodes = null;
+
+      for (const charCode in charCodeToGlyphId) {
+        if (glyphId === charCodeToGlyphId[charCode]) {
+          if (!charCodes) {
+            charCodes = [];
+          }
+
+          charCodes.push(charCode | 0);
+        }
+      }
+
+      return charCodes;
+    }
+
+    function createCharCode(charCodeToGlyphId, glyphId) {
+      for (const charCode in charCodeToGlyphId) {
+        if (glyphId === charCodeToGlyphId[charCode]) {
+          return charCode | 0;
+        }
+      }
+
+      newMapping.charCodeToGlyphId[newMapping.nextAvailableFontCharCode] = glyphId;
+      return newMapping.nextAvailableFontCharCode++;
+    }
+
+    const seacs = font.seacs;
+
+    if (newMapping && _fonts_utils.SEAC_ANALYSIS_ENABLED && seacs && seacs.length) {
+      const matrix = properties.fontMatrix || _util.FONT_IDENTITY_MATRIX;
+      const charset = font.getCharset();
+      const seacMap = Object.create(null);
+
+      for (let glyphId in seacs) {
+        glyphId |= 0;
+        const seac = seacs[glyphId];
+        const baseGlyphName = _encodings.StandardEncoding[seac[2]];
+        const accentGlyphName = _encodings.StandardEncoding[seac[3]];
+        const baseGlyphId = charset.indexOf(baseGlyphName);
+        const accentGlyphId = charset.indexOf(accentGlyphName);
+
+        if (baseGlyphId < 0 || accentGlyphId < 0) {
+          continue;
+        }
+
+        const accentOffset = {
+          x: seac[0] * matrix[0] + seac[1] * matrix[2] + matrix[4],
+          y: seac[0] * matrix[1] + seac[1] * matrix[3] + matrix[5]
+        };
+        const charCodes = getCharCodes(mapping, glyphId);
+
+        if (!charCodes) {
+          continue;
+        }
+
+        for (let i = 0, ii = charCodes.length; i < ii; i++) {
+          const charCode = charCodes[i];
+          const charCodeToGlyphId = newMapping.charCodeToGlyphId;
+          const baseFontCharCode = createCharCode(charCodeToGlyphId, baseGlyphId);
+          const accentFontCharCode = createCharCode(charCodeToGlyphId, accentGlyphId);
+          seacMap[charCode] = {
+            baseFontCharCode,
+            accentFontCharCode,
+            accentOffset
+          };
+        }
+      }
+
+      properties.seacMap = seacMap;
+    }
+
+    const unitsPerEm = 1 / (properties.fontMatrix || _util.FONT_IDENTITY_MATRIX)[0];
+    const builder = new _opentype_file_builder.OpenTypeFileBuilder("\x4F\x54\x54\x4F");
+    builder.addTable("CFF ", font.data);
+    builder.addTable("OS/2", createOS2Table(properties, newCharCodeToGlyphId));
+    builder.addTable("cmap", createCmapTable(newCharCodeToGlyphId, numGlyphs));
+    builder.addTable("head", "\x00\x01\x00\x00" + "\x00\x00\x10\x00" + "\x00\x00\x00\x00" + 
"\x5F\x0F\x3C\xF5" + "\x00\x00" + safeString16(unitsPerEm) + "\x00\x00\x00\x00\x9e\x0b\x7e\x27" + 
"\x00\x00\x00\x00\x9e\x0b\x7e\x27" + "\x00\x00" + safeString16(properties.descent) + "\x0F\xFF" + 
safeString16(properties.ascent) + string16(properties.italicAngle ? 2 : 0) + "\x00\x11" + "\x00\x00" + 
"\x00\x00" + "\x00\x00");
+    builder.addTable("hhea", "\x00\x01\x00\x00" + safeString16(properties.ascent) + 
safeString16(properties.descent) + "\x00\x00" + "\xFF\xFF" + "\x00\x00" + "\x00\x00" + "\x00\x00" + 
safeString16(properties.capHeight) + safeString16(Math.tan(properties.italicAngle) * properties.xHeight) + 
"\x00\x00" + "\x00\x00" + "\x00\x00" + "\x00\x00" + "\x00\x00" + "\x00\x00" + string16(numGlyphs));
+    builder.addTable("hmtx", function fontFieldsHmtx() {
+      const charstrings = font.charstrings;
+      const cffWidths = font.cff ? font.cff.widths : null;
+      let hmtx = "\x00\x00\x00\x00";
+
+      for (let i = 1, ii = numGlyphs; i < ii; i++) {
+        let width = 0;
+
+        if (charstrings) {
+          const charstring = charstrings[i - 1];
+          width = "width" in charstring ? charstring.width : 0;
+        } else if (cffWidths) {
+          width = Math.ceil(cffWidths[i] || 0);
+        }
+
+        hmtx += string16(width) + string16(0);
+      }
+
+      return hmtx;
+    }());
+    builder.addTable("maxp", "\x00\x00\x50\x00" + string16(numGlyphs));
+    builder.addTable("name", createNameTable(fontName));
+    builder.addTable("post", createPostTable(properties));
+    return builder.toArray();
+  }
+
+  get spaceWidth() {
+    const possibleSpaceReplacements = ["space", "minus", "one", "i", "I"];
+    let width;
+
+    for (let i = 0, ii = possibleSpaceReplacements.length; i < ii; i++) {
+      const glyphName = possibleSpaceReplacements[i];
+
+      if (glyphName in this.widths) {
+        width = this.widths[glyphName];
+        break;
+      }
+
+      const glyphsUnicodeMap = (0, _glyphlist.getGlyphsUnicode)();
+      const glyphUnicode = glyphsUnicodeMap[glyphName];
+      let charcode = 0;
+
+      if (this.composite && this.cMap.contains(glyphUnicode)) {
+        charcode = this.cMap.lookup(glyphUnicode);
+
+        if (typeof charcode === "string") {
+          charcode = convertCidString(glyphUnicode, charcode);
+        }
+      }
+
+      if (!charcode && this.toUnicode) {
+        charcode = this.toUnicode.charCodeOf(glyphUnicode);
+      }
+
+      if (charcode <= 0) {
+        charcode = glyphUnicode;
+      }
+
+      width = this.widths[charcode];
+
+      if (width) {
+        break;
+      }
+    }
+
+    width = width || this.defaultWidth;
+    return (0, _util.shadow)(this, "spaceWidth", width);
+  }
+
+  _charToGlyph(charcode, isSpace = false) {
+    let fontCharCode, width, operatorListId;
+    let widthCode = charcode;
+
+    if (this.cMap && this.cMap.contains(charcode)) {
+      widthCode = this.cMap.lookup(charcode);
+
+      if (typeof widthCode === "string") {
+        widthCode = convertCidString(charcode, widthCode);
+      }
+    }
+
+    width = this.widths[widthCode];
+    width = (0, _util.isNum)(width) ? width : this.defaultWidth;
+    const vmetric = this.vmetrics && this.vmetrics[widthCode];
+    let unicode = this.toUnicode.get(charcode) || charcode;
+
+    if (typeof unicode === "number") {
+      unicode = String.fromCharCode(unicode);
+    }
+
+    let isInFont = this.toFontChar[charcode] !== undefined;
+    fontCharCode = this.toFontChar[charcode] || charcode;
+
+    if (this.missingFile) {
+      const glyphName = this.differences[charcode] || this.defaultEncoding[charcode];
+
+      if ((glyphName === ".notdef" || glyphName === "") && this.type === "Type1") {
+        fontCharCode = 0x20;
+      }
+
+      fontCharCode = (0, _unicode.mapSpecialUnicodeValues)(fontCharCode);
+    }
+
+    if (this.isType3Font) {
+      operatorListId = fontCharCode;
+    }
+
+    let accent = null;
+
+    if (this.seacMap && this.seacMap[charcode]) {
+      isInFont = true;
+      const seac = this.seacMap[charcode];
+      fontCharCode = seac.baseFontCharCode;
+      accent = {
+        fontChar: String.fromCodePoint(seac.accentFontCharCode),
+        offset: seac.accentOffset
+      };
+    }
+
+    let fontChar = "";
+
+    if (typeof fontCharCode === "number") {
+      if (fontCharCode <= 0x10ffff) {
+        fontChar = String.fromCodePoint(fontCharCode);
+      } else {
+        (0, _util.warn)(`charToGlyph - invalid fontCharCode: ${fontCharCode}`);
+      }
+    }
+
+    let glyph = this._glyphCache[charcode];
+
+    if (!glyph || !glyph.matchesForCache(charcode, fontChar, unicode, accent, width, vmetric, 
operatorListId, isSpace, isInFont)) {
+      glyph = new Glyph(charcode, fontChar, unicode, accent, width, vmetric, operatorListId, isSpace, 
isInFont);
+      this._glyphCache[charcode] = glyph;
+    }
+
+    return glyph;
+  }
+
+  charsToGlyphs(chars) {
+    let glyphs = this._charsCache[chars];
+
+    if (glyphs) {
+      return glyphs;
+    }
+
+    glyphs = [];
+
+    if (this.cMap) {
+      const c = Object.create(null),
+            ii = chars.length;
+      let i = 0;
+
+      while (i < ii) {
+        this.cMap.readCharCode(chars, i, c);
+        const {
+          charcode,
+          length
+        } = c;
+        i += length;
+
+        const glyph = this._charToGlyph(charcode, length === 1 && chars.charCodeAt(i - 1) === 0x20);
+
+        glyphs.push(glyph);
+      }
+    } else {
+      for (let i = 0, ii = chars.length; i < ii; ++i) {
+        const charcode = chars.charCodeAt(i);
+
+        const glyph = this._charToGlyph(charcode, charcode === 0x20);
+
+        glyphs.push(glyph);
+      }
+    }
+
+    return this._charsCache[chars] = glyphs;
+  }
+
+  getCharPositions(chars) {
+    const positions = [];
+
+    if (this.cMap) {
+      const c = Object.create(null);
+      let i = 0;
+
+      while (i < chars.length) {
+        this.cMap.readCharCode(chars, i, c);
+        const length = c.length;
+        positions.push([i, i + length]);
+        i += length;
+      }
+    } else {
+      for (let i = 0, ii = chars.length; i < ii; ++i) {
+        positions.push([i, i + 1]);
+      }
+    }
+
+    return positions;
+  }
+
+  get glyphCacheValues() {
+    return Object.values(this._glyphCache);
+  }
+
+  encodeString(str) {
+    const buffers = [];
+    const currentBuf = [];
+
+    const hasCurrentBufErrors = () => buffers.length % 2 === 1;
+
+    const getCharCode = this.toUnicode instanceof _to_unicode_map.IdentityToUnicodeMap ? unicode => 
this.toUnicode.charCodeOf(unicode) : unicode => this.toUnicode.charCodeOf(String.fromCodePoint(unicode));
+
+    for (let i = 0, ii = str.length; i < ii; i++) {
+      const unicode = str.codePointAt(i);
+
+      if (unicode > 0xd7ff && (unicode < 0xe000 || unicode > 0xfffd)) {
+        i++;
+      }
+
+      if (this.toUnicode) {
+        const charCode = getCharCode(unicode);
+
+        if (charCode !== -1) {
+          if (hasCurrentBufErrors()) {
+            buffers.push(currentBuf.join(""));
+            currentBuf.length = 0;
+          }
+
+          const charCodeLength = this.cMap ? this.cMap.getCharCodeLength(charCode) : 1;
+
+          for (let j = charCodeLength - 1; j >= 0; j--) {
+            currentBuf.push(String.fromCharCode(charCode >> 8 * j & 0xff));
+          }
+
+          continue;
+        }
+      }
+
+      if (!hasCurrentBufErrors()) {
+        buffers.push(currentBuf.join(""));
+        currentBuf.length = 0;
+      }
+
+      currentBuf.push(String.fromCodePoint(unicode));
+    }
+
+    buffers.push(currentBuf.join(""));
+    return buffers;
+  }
+
+}
+
+exports.Font = Font;
+
+class ErrorFont {
+  constructor(error) {
+    this.error = error;
+    this.loadedName = "g_font_error";
+    this.missingFile = true;
+  }
+
+  charsToGlyphs() {
+    return [];
+  }
+
+  encodeString(chars) {
+    return [chars];
+  }
+
+  exportData(extraProperties = false) {
+    return {
+      error: this.error
+    };
+  }
+
+}
+
+exports.ErrorFont = ErrorFont;
+
+/***/ }),
+/* 45 */
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
+
+
+
+Object.defineProperty(exports, "__esModule", ({
+  value: true
+}));
+exports.CFFTopDict = exports.CFFStrings = exports.CFFStandardStrings = exports.CFFPrivateDict = 
exports.CFFParser = exports.CFFIndex = exports.CFFHeader = exports.CFFFDSelect = exports.CFFCompiler = 
exports.CFFCharset = exports.CFF = void 0;
+
+var _util = __w_pdfjs_require__(2);
+
+var _charsets = __w_pdfjs_require__(46);
+
+var _encodings = __w_pdfjs_require__(19);
+
+const MAX_SUBR_NESTING = 10;
+const CFFStandardStrings = [".notdef", "space", "exclam", "quotedbl", "numbersign", "dollar", "percent", 
"ampersand", "quoteright", "parenleft", "parenright", "asterisk", "plus", "comma", "hyphen", "period", 
"slash", "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "colon", 
"semicolon", "less", "equal", "greater", "question", "at", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", 
"K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "bracketleft", "backslash", 
"bracketright", "asciicircum", "underscore", "quoteleft", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", 
"k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "braceleft", "bar", 
"braceright", "asciitilde", "exclamdown", "cent", "sterling", "fraction", "yen", "florin", "section", 
"currency", "quotesingle", "quotedblleft", "guillemotleft", "guilsinglleft", "guilsinglright", "fi", "fl", 
"endash", "dagger", "daggerdbl", "periodcentered", "parag
 raph", "bullet", "quotesinglbase", "quotedblbase", "quotedblright", "guillemotright", "ellipsis", 
"perthousand", "questiondown", "grave", "acute", "circumflex", "tilde", "macron", "breve", "dotaccent", 
"dieresis", "ring", "cedilla", "hungarumlaut", "ogonek", "caron", "emdash", "AE", "ordfeminine", "Lslash", 
"Oslash", "OE", "ordmasculine", "ae", "dotlessi", "lslash", "oslash", "oe", "germandbls", "onesuperior", 
"logicalnot", "mu", "trademark", "Eth", "onehalf", "plusminus", "Thorn", "onequarter", "divide", "brokenbar", 
"degree", "thorn", "threequarters", "twosuperior", "registered", "minus", "eth", "multiply", "threesuperior", 
"copyright", "Aacute", "Acircumflex", "Adieresis", "Agrave", "Aring", "Atilde", "Ccedilla", "Eacute", 
"Ecircumflex", "Edieresis", "Egrave", "Iacute", "Icircumflex", "Idieresis", "Igrave", "Ntilde", "Oacute", 
"Ocircumflex", "Odieresis", "Ograve", "Otilde", "Scaron", "Uacute", "Ucircumflex", "Udieresis", "Ugrave", 
"Yacute", "Ydieresis", "Zcaron", "aacute", "acirc
 umflex", "adieresis", "agrave", "aring", "atilde", "ccedilla", "eacute", "ecircumflex", "edieresis", 
"egrave", "iacute", "icircumflex", "idieresis", "igrave", "ntilde", "oacute", "ocircumflex", "odieresis", 
"ograve", "otilde", "scaron", "uacute", "ucircumflex", "udieresis", "ugrave", "yacute", "ydieresis", 
"zcaron", "exclamsmall", "Hungarumlautsmall", "dollaroldstyle", "dollarsuperior", "ampersandsmall", 
"Acutesmall", "parenleftsuperior", "parenrightsuperior", "twodotenleader", "onedotenleader", "zerooldstyle", 
"oneoldstyle", "twooldstyle", "threeoldstyle", "fouroldstyle", "fiveoldstyle", "sixoldstyle", 
"sevenoldstyle", "eightoldstyle", "nineoldstyle", "commasuperior", "threequartersemdash", "periodsuperior", 
"questionsmall", "asuperior", "bsuperior", "centsuperior", "dsuperior", "esuperior", "isuperior", 
"lsuperior", "msuperior", "nsuperior", "osuperior", "rsuperior", "ssuperior", "tsuperior", "ff", "ffi", 
"ffl", "parenleftinferior", "parenrightinferior", "Circumflexsmall", "hyphen
 superior", "Gravesmall", "Asmall", "Bsmall", "Csmall", "Dsmall", "Esmall", "Fsmall", "Gsmall", "Hsmall", 
"Ismall", "Jsmall", "Ksmall", "Lsmall", "Msmall", "Nsmall", "Osmall", "Psmall", "Qsmall", "Rsmall", "Ssmall", 
"Tsmall", "Usmall", "Vsmall", "Wsmall", "Xsmall", "Ysmall", "Zsmall", "colonmonetary", "onefitted", "rupiah", 
"Tildesmall", "exclamdownsmall", "centoldstyle", "Lslashsmall", "Scaronsmall", "Zcaronsmall", 
"Dieresissmall", "Brevesmall", "Caronsmall", "Dotaccentsmall", "Macronsmall", "figuredash", "hypheninferior", 
"Ogoneksmall", "Ringsmall", "Cedillasmall", "questiondownsmall", "oneeighth", "threeeighths", "fiveeighths", 
"seveneighths", "onethird", "twothirds", "zerosuperior", "foursuperior", "fivesuperior", "sixsuperior", 
"sevensuperior", "eightsuperior", "ninesuperior", "zeroinferior", "oneinferior", "twoinferior", 
"threeinferior", "fourinferior", "fiveinferior", "sixinferior", "seveninferior", "eightinferior", 
"nineinferior", "centinferior", "dollarinferior", "periodinfe
 rior", "commainferior", "Agravesmall", "Aacutesmall", "Acircumflexsmall", "Atildesmall", "Adieresissmall", 
"Aringsmall", "AEsmall", "Ccedillasmall", "Egravesmall", "Eacutesmall", "Ecircumflexsmall", "Edieresissmall", 
"Igravesmall", "Iacutesmall", "Icircumflexsmall", "Idieresissmall", "Ethsmall", "Ntildesmall", "Ogravesmall", 
"Oacutesmall", "Ocircumflexsmall", "Otildesmall", "Odieresissmall", "OEsmall", "Oslashsmall", "Ugravesmall", 
"Uacutesmall", "Ucircumflexsmall", "Udieresissmall", "Yacutesmall", "Thornsmall", "Ydieresissmall", 
"001.000", "001.001", "001.002", "001.003", "Black", "Bold", "Book", "Light", "Medium", "Regular", "Roman", 
"Semibold"];
+exports.CFFStandardStrings = CFFStandardStrings;
+const NUM_STANDARD_CFF_STRINGS = 391;
+
+const CFFParser = function CFFParserClosure() {
+  const CharstringValidationData = [null, {
+    id: "hstem",
+    min: 2,
+    stackClearing: true,
+    stem: true
+  }, null, {
+    id: "vstem",
+    min: 2,
+    stackClearing: true,
+    stem: true
+  }, {
+    id: "vmoveto",
+    min: 1,
+    stackClearing: true
+  }, {
+    id: "rlineto",
+    min: 2,
+    resetStack: true
+  }, {
+    id: "hlineto",
+    min: 1,
+    resetStack: true
+  }, {
+    id: "vlineto",
+    min: 1,
+    resetStack: true
+  }, {
+    id: "rrcurveto",
+    min: 6,
+    resetStack: true
+  }, null, {
+    id: "callsubr",
+    min: 1,
+    undefStack: true
+  }, {
+    id: "return",
+    min: 0,
+    undefStack: true
+  }, null, null, {
+    id: "endchar",
+    min: 0,
+    stackClearing: true
+  }, null, null, null, {
+    id: "hstemhm",
+    min: 2,
+    stackClearing: true,
+    stem: true
+  }, {
+    id: "hintmask",
+    min: 0,
+    stackClearing: true
+  }, {
+    id: "cntrmask",
+    min: 0,
+    stackClearing: true
+  }, {
+    id: "rmoveto",
+    min: 2,
+    stackClearing: true
+  }, {
+    id: "hmoveto",
+    min: 1,
+    stackClearing: true
+  }, {
+    id: "vstemhm",
+    min: 2,
+    stackClearing: true,
+    stem: true
+  }, {
+    id: "rcurveline",
+    min: 8,
+    resetStack: true
+  }, {
+    id: "rlinecurve",
+    min: 8,
+    resetStack: true
+  }, {
+    id: "vvcurveto",
+    min: 4,
+    resetStack: true
+  }, {
+    id: "hhcurveto",
+    min: 4,
+    resetStack: true
+  }, null, {
+    id: "callgsubr",
+    min: 1,
+    undefStack: true
+  }, {
+    id: "vhcurveto",
+    min: 4,
+    resetStack: true
+  }, {
+    id: "hvcurveto",
+    min: 4,
+    resetStack: true
+  }];
+  const CharstringValidationData12 = [null, null, null, {
+    id: "and",
+    min: 2,
+    stackDelta: -1
+  }, {
+    id: "or",
+    min: 2,
+    stackDelta: -1
+  }, {
+    id: "not",
+    min: 1,
+    stackDelta: 0
+  }, null, null, null, {
+    id: "abs",
+    min: 1,
+    stackDelta: 0
+  }, {
+    id: "add",
+    min: 2,
+    stackDelta: -1,
+    stackFn: function stack_div(stack, index) {
+      stack[index - 2] = stack[index - 2] + stack[index - 1];
+    }
+  }, {
+    id: "sub",
+    min: 2,
+    stackDelta: -1,
+    stackFn: function stack_div(stack, index) {
+      stack[index - 2] = stack[index - 2] - stack[index - 1];
+    }
+  }, {
+    id: "div",
+    min: 2,
+    stackDelta: -1,
+    stackFn: function stack_div(stack, index) {
+      stack[index - 2] = stack[index - 2] / stack[index - 1];
+    }
+  }, null, {
+    id: "neg",
+    min: 1,
+    stackDelta: 0,
+    stackFn: function stack_div(stack, index) {
+      stack[index - 1] = -stack[index - 1];
+    }
+  }, {
+    id: "eq",
+    min: 2,
+    stackDelta: -1
+  }, null, null, {
+    id: "drop",
+    min: 1,
+    stackDelta: -1
+  }, null, {
+    id: "put",
+    min: 2,
+    stackDelta: -2
+  }, {
+    id: "get",
+    min: 1,
+    stackDelta: 0
+  }, {
+    id: "ifelse",
+    min: 4,
+    stackDelta: -3
+  }, {
+    id: "random",
+    min: 0,
+    stackDelta: 1
+  }, {
+    id: "mul",
+    min: 2,
+    stackDelta: -1,
+    stackFn: function stack_div(stack, index) {
+      stack[index - 2] = stack[index - 2] * stack[index - 1];
+    }
+  }, null, {
+    id: "sqrt",
+    min: 1,
+    stackDelta: 0
+  }, {
+    id: "dup",
+    min: 1,
+    stackDelta: 1
+  }, {
+    id: "exch",
+    min: 2,
+    stackDelta: 0
+  }, {
+    id: "index",
+    min: 2,
+    stackDelta: 0
+  }, {
+    id: "roll",
+    min: 3,
+    stackDelta: -2
+  }, null, null, null, {
+    id: "hflex",
+    min: 7,
+    resetStack: true
+  }, {
+    id: "flex",
+    min: 13,
+    resetStack: true
+  }, {
+    id: "hflex1",
+    min: 9,
+    resetStack: true
+  }, {
+    id: "flex1",
+    min: 11,
+    resetStack: true
+  }];
+
+  class CFFParser {
+    constructor(file, properties, seacAnalysisEnabled) {
+      this.bytes = file.getBytes();
+      this.properties = properties;
+      this.seacAnalysisEnabled = !!seacAnalysisEnabled;
+    }
+
+    parse() {
+      const properties = this.properties;
+      const cff = new CFF();
+      this.cff = cff;
+      const header = this.parseHeader();
+      const nameIndex = this.parseIndex(header.endPos);
+      const topDictIndex = this.parseIndex(nameIndex.endPos);
+      const stringIndex = this.parseIndex(topDictIndex.endPos);
+      const globalSubrIndex = this.parseIndex(stringIndex.endPos);
+      const topDictParsed = this.parseDict(topDictIndex.obj.get(0));
+      const topDict = this.createDict(CFFTopDict, topDictParsed, cff.strings);
+      cff.header = header.obj;
+      cff.names = this.parseNameIndex(nameIndex.obj);
+      cff.strings = this.parseStringIndex(stringIndex.obj);
+      cff.topDict = topDict;
+      cff.globalSubrIndex = globalSubrIndex.obj;
+      this.parsePrivateDict(cff.topDict);
+      cff.isCIDFont = topDict.hasName("ROS");
+      const charStringOffset = topDict.getByName("CharStrings");
+      const charStringIndex = this.parseIndex(charStringOffset).obj;
+      const fontMatrix = topDict.getByName("FontMatrix");
+
+      if (fontMatrix) {
+        properties.fontMatrix = fontMatrix;
+      }
+
+      const fontBBox = topDict.getByName("FontBBox");
+
+      if (fontBBox) {
+        properties.ascent = Math.max(fontBBox[3], fontBBox[1]);
+        properties.descent = Math.min(fontBBox[1], fontBBox[3]);
+        properties.ascentScaled = true;
+      }
+
+      let charset, encoding;
+
+      if (cff.isCIDFont) {
+        const fdArrayIndex = this.parseIndex(topDict.getByName("FDArray")).obj;
+
+        for (let i = 0, ii = fdArrayIndex.count; i < ii; ++i) {
+          const dictRaw = fdArrayIndex.get(i);
+          const fontDict = this.createDict(CFFTopDict, this.parseDict(dictRaw), cff.strings);
+          this.parsePrivateDict(fontDict);
+          cff.fdArray.push(fontDict);
+        }
+
+        encoding = null;
+        charset = this.parseCharsets(topDict.getByName("charset"), charStringIndex.count, cff.strings, true);
+        cff.fdSelect = this.parseFDSelect(topDict.getByName("FDSelect"), charStringIndex.count);
+      } else {
+        charset = this.parseCharsets(topDict.getByName("charset"), charStringIndex.count, cff.strings, 
false);
+        encoding = this.parseEncoding(topDict.getByName("Encoding"), properties, cff.strings, 
charset.charset);
+      }
+
+      cff.charset = charset;
+      cff.encoding = encoding;
+      const charStringsAndSeacs = this.parseCharStrings({
+        charStrings: charStringIndex,
+        localSubrIndex: topDict.privateDict.subrsIndex,
+        globalSubrIndex: globalSubrIndex.obj,
+        fdSelect: cff.fdSelect,
+        fdArray: cff.fdArray,
+        privateDict: topDict.privateDict
+      });
+      cff.charStrings = charStringsAndSeacs.charStrings;
+      cff.seacs = charStringsAndSeacs.seacs;
+      cff.widths = charStringsAndSeacs.widths;
+      return cff;
+    }
+
+    parseHeader() {
+      let bytes = this.bytes;
+      const bytesLength = bytes.length;
+      let offset = 0;
+
+      while (offset < bytesLength && bytes[offset] !== 1) {
+        ++offset;
+      }
+
+      if (offset >= bytesLength) {
+        throw new _util.FormatError("Invalid CFF header");
+      }
+
+      if (offset !== 0) {
+        (0, _util.info)("cff data is shifted");
+        bytes = bytes.subarray(offset);
+        this.bytes = bytes;
+      }
+
+      const major = bytes[0];
+      const minor = bytes[1];
+      const hdrSize = bytes[2];
+      const offSize = bytes[3];
+      const header = new CFFHeader(major, minor, hdrSize, offSize);
+      return {
+        obj: header,
+        endPos: hdrSize
+      };
+    }
+
+    parseDict(dict) {
+      let pos = 0;
+
+      function parseOperand() {
+        let value = dict[pos++];
+
+        if (value === 30) {
+          return parseFloatOperand();
+        } else if (value === 28) {
+          value = dict[pos++];
+          value = (value << 24 | dict[pos++] << 16) >> 16;
+          return value;
+        } else if (value === 29) {
+          value = dict[pos++];
+          value = value << 8 | dict[pos++];
+          value = value << 8 | dict[pos++];
+          value = value << 8 | dict[pos++];
+          return value;
+        } else if (value >= 32 && value <= 246) {
+          return value - 139;
+        } else if (value >= 247 && value <= 250) {
+          return (value - 247) * 256 + dict[pos++] + 108;
+        } else if (value >= 251 && value <= 254) {
+          return -((value - 251) * 256) - dict[pos++] - 108;
+        }
+
+        (0, _util.warn)('CFFParser_parseDict: "' + value + '" is a reserved command.');
+        return NaN;
+      }
+
+      function parseFloatOperand() {
+        let str = "";
+        const eof = 15;
+        const lookup = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", ".", "E", "E-", null, "-"];
+        const length = dict.length;
+
+        while (pos < length) {
+          const b = dict[pos++];
+          const b1 = b >> 4;
+          const b2 = b & 15;
+
+          if (b1 === eof) {
+            break;
+          }
+
+          str += lookup[b1];
+
+          if (b2 === eof) {
+            break;
+          }
+
+          str += lookup[b2];
+        }
+
+        return parseFloat(str);
+      }
+
+      let operands = [];
+      const entries = [];
+      pos = 0;
+      const end = dict.length;
+
+      while (pos < end) {
+        let b = dict[pos];
+
+        if (b <= 21) {
+          if (b === 12) {
+            b = b << 8 | dict[++pos];
+          }
+
+          entries.push([b, operands]);
+          operands = [];
+          ++pos;
+        } else {
+          operands.push(parseOperand());
+        }
+      }
+
+      return entries;
+    }
+
+    parseIndex(pos) {
+      const cffIndex = new CFFIndex();
+      const bytes = this.bytes;
+      const count = bytes[pos++] << 8 | bytes[pos++];
+      const offsets = [];
+      let end = pos;
+      let i, ii;
+
+      if (count !== 0) {
+        const offsetSize = bytes[pos++];
+        const startPos = pos + (count + 1) * offsetSize - 1;
+
+        for (i = 0, ii = count + 1; i < ii; ++i) {
+          let offset = 0;
+
+          for (let j = 0; j < offsetSize; ++j) {
+            offset <<= 8;
+            offset += bytes[pos++];
+          }
+
+          offsets.push(startPos + offset);
+        }
+
+        end = offsets[count];
+      }
+
+      for (i = 0, ii = offsets.length - 1; i < ii; ++i) {
+        const offsetStart = offsets[i];
+        const offsetEnd = offsets[i + 1];
+        cffIndex.add(bytes.subarray(offsetStart, offsetEnd));
+      }
+
+      return {
+        obj: cffIndex,
+        endPos: end
+      };
+    }
+
+    parseNameIndex(index) {
+      const names = [];
+
+      for (let i = 0, ii = index.count; i < ii; ++i) {
+        const name = index.get(i);
+        names.push((0, _util.bytesToString)(name));
+      }
+
+      return names;
+    }
+
+    parseStringIndex(index) {
+      const strings = new CFFStrings();
+
+      for (let i = 0, ii = index.count; i < ii; ++i) {
+        const data = index.get(i);
+        strings.add((0, _util.bytesToString)(data));
+      }
+
+      return strings;
+    }
+
+    createDict(Type, dict, strings) {
+      const cffDict = new Type(strings);
+
+      for (let i = 0, ii = dict.length; i < ii; ++i) {
+        const pair = dict[i];
+        const key = pair[0];
+        const value = pair[1];
+        cffDict.setByKey(key, value);
+      }
+
+      return cffDict;
+    }
+
+    parseCharString(state, data, localSubrIndex, globalSubrIndex) {
+      if (!data || state.callDepth > MAX_SUBR_NESTING) {
+        return false;
+      }
+
+      let stackSize = state.stackSize;
+      const stack = state.stack;
+      const length = data.length;
+
+      for (let j = 0; j < length;) {
+        const value = data[j++];
+        let validationCommand = null;
+
+        if (value === 12) {
+          const q = data[j++];
+
+          if (q === 0) {
+            data[j - 2] = 139;
+            data[j - 1] = 22;
+            stackSize = 0;
+          } else {
+            validationCommand = CharstringValidationData12[q];
+          }
+        } else if (value === 28) {
+          stack[stackSize] = (data[j] << 24 | data[j + 1] << 16) >> 16;
+          j += 2;
+          stackSize++;
+        } else if (value === 14) {
+          if (stackSize >= 4) {
+            stackSize -= 4;
+
+            if (this.seacAnalysisEnabled) {
+              state.seac = stack.slice(stackSize, stackSize + 4);
+              return false;
+            }
+          }
+
+          validationCommand = CharstringValidationData[value];
+        } else if (value >= 32 && value <= 246) {
+          stack[stackSize] = value - 139;
+          stackSize++;
+        } else if (value >= 247 && value <= 254) {
+          stack[stackSize] = value < 251 ? (value - 247 << 8) + data[j] + 108 : -(value - 251 << 8) - 
data[j] - 108;
+          j++;
+          stackSize++;
+        } else if (value === 255) {
+          stack[stackSize] = (data[j] << 24 | data[j + 1] << 16 | data[j + 2] << 8 | data[j + 3]) / 65536;
+          j += 4;
+          stackSize++;
+        } else if (value === 19 || value === 20) {
+          state.hints += stackSize >> 1;
+          j += state.hints + 7 >> 3;
+          stackSize %= 2;
+          validationCommand = CharstringValidationData[value];
+        } else if (value === 10 || value === 29) {
+          let subrsIndex;
+
+          if (value === 10) {
+            subrsIndex = localSubrIndex;
+          } else {
+            subrsIndex = globalSubrIndex;
+          }
+
+          if (!subrsIndex) {
+            validationCommand = CharstringValidationData[value];
+            (0, _util.warn)("Missing subrsIndex for " + validationCommand.id);
+            return false;
+          }
+
+          let bias = 32768;
+
+          if (subrsIndex.count < 1240) {
+            bias = 107;
+          } else if (subrsIndex.count < 33900) {
+            bias = 1131;
+          }
+
+          const subrNumber = stack[--stackSize] + bias;
+
+          if (subrNumber < 0 || subrNumber >= subrsIndex.count || isNaN(subrNumber)) {
+            validationCommand = CharstringValidationData[value];
+            (0, _util.warn)("Out of bounds subrIndex for " + validationCommand.id);
+            return false;
+          }
+
+          state.stackSize = stackSize;
+          state.callDepth++;
+          const valid = this.parseCharString(state, subrsIndex.get(subrNumber), localSubrIndex, 
globalSubrIndex);
+
+          if (!valid) {
+            return false;
+          }
+
+          state.callDepth--;
+          stackSize = state.stackSize;
+          continue;
+        } else if (value === 11) {
+          state.stackSize = stackSize;
+          return true;
+        } else if (value === 0 && j === data.length) {
+          data[j - 1] = 14;
+          validationCommand = CharstringValidationData[14];
+        } else {
+          validationCommand = CharstringValidationData[value];
+        }
+
+        if (validationCommand) {
+          if (validationCommand.stem) {
+            state.hints += stackSize >> 1;
+
+            if (value === 3 || value === 23) {
+              state.hasVStems = true;
+            } else if (state.hasVStems && (value === 1 || value === 18)) {
+              (0, _util.warn)("CFF stem hints are in wrong order");
+              data[j - 1] = value === 1 ? 3 : 23;
+            }
+          }
+
+          if ("min" in validationCommand) {
+            if (!state.undefStack && stackSize < validationCommand.min) {
+              (0, _util.warn)("Not enough parameters for " + validationCommand.id + "; actual: " + stackSize 
+ ", expected: " + validationCommand.min);
+
+              if (stackSize === 0) {
+                data[j - 1] = 14;
+                return true;
+              }
+
+              return false;
+            }
+          }
+
+          if (state.firstStackClearing && validationCommand.stackClearing) {
+            state.firstStackClearing = false;
+            stackSize -= validationCommand.min;
+
+            if (stackSize >= 2 && validationCommand.stem) {
+              stackSize %= 2;
+            } else if (stackSize > 1) {
+              (0, _util.warn)("Found too many parameters for stack-clearing command");
+            }
+
+            if (stackSize > 0) {
+              state.width = stack[stackSize - 1];
+            }
+          }
+
+          if ("stackDelta" in validationCommand) {
+            if ("stackFn" in validationCommand) {
+              validationCommand.stackFn(stack, stackSize);
+            }
+
+            stackSize += validationCommand.stackDelta;
+          } else if (validationCommand.stackClearing) {
+            stackSize = 0;
+          } else if (validationCommand.resetStack) {
+            stackSize = 0;
+            state.undefStack = false;
+          } else if (validationCommand.undefStack) {
+            stackSize = 0;
+            state.undefStack = true;
+            state.firstStackClearing = false;
+          }
+        }
+      }
+
+      state.stackSize = stackSize;
+      return true;
+    }
+
+    parseCharStrings({
+      charStrings,
+      localSubrIndex,
+      globalSubrIndex,
+      fdSelect,
+      fdArray,
+      privateDict
+    }) {
+      const seacs = [];
+      const widths = [];
+      const count = charStrings.count;
+
+      for (let i = 0; i < count; i++) {
+        const charstring = charStrings.get(i);
+        const state = {
+          callDepth: 0,
+          stackSize: 0,
+          stack: [],
+          undefStack: true,
+          hints: 0,
+          firstStackClearing: true,
+          seac: null,
+          width: null,
+          hasVStems: false
+        };
+        let valid = true;
+        let localSubrToUse = null;
+        let privateDictToUse = privateDict;
+
+        if (fdSelect && fdArray.length) {
+          const fdIndex = fdSelect.getFDIndex(i);
+
+          if (fdIndex === -1) {
+            (0, _util.warn)("Glyph index is not in fd select.");
+            valid = false;
+          }
+
+          if (fdIndex >= fdArray.length) {
+            (0, _util.warn)("Invalid fd index for glyph index.");
+            valid = false;
+          }
+
+          if (valid) {
+            privateDictToUse = fdArray[fdIndex].privateDict;
+            localSubrToUse = privateDictToUse.subrsIndex;
+          }
+        } else if (localSubrIndex) {
+          localSubrToUse = localSubrIndex;
+        }
+
+        if (valid) {
+          valid = this.parseCharString(state, charstring, localSubrToUse, globalSubrIndex);
+        }
+
+        if (state.width !== null) {
+          const nominalWidth = privateDictToUse.getByName("nominalWidthX");
+          widths[i] = nominalWidth + state.width;
+        } else {
+          const defaultWidth = privateDictToUse.getByName("defaultWidthX");
+          widths[i] = defaultWidth;
+        }
+
+        if (state.seac !== null) {
+          seacs[i] = state.seac;
+        }
+
+        if (!valid) {
+          charStrings.set(i, new Uint8Array([14]));
+        }
+      }
+
+      return {
+        charStrings,
+        seacs,
+        widths
+      };
+    }
+
+    emptyPrivateDictionary(parentDict) {
+      const privateDict = this.createDict(CFFPrivateDict, [], parentDict.strings);
+      parentDict.setByKey(18, [0, 0]);
+      parentDict.privateDict = privateDict;
+    }
+
+    parsePrivateDict(parentDict) {
+      if (!parentDict.hasName("Private")) {
+        this.emptyPrivateDictionary(parentDict);
+        return;
+      }
+
+      const privateOffset = parentDict.getByName("Private");
+
+      if (!Array.isArray(privateOffset) || privateOffset.length !== 2) {
+        parentDict.removeByName("Private");
+        return;
+      }
+
+      const size = privateOffset[0];
+      const offset = privateOffset[1];
+
+      if (size === 0 || offset >= this.bytes.length) {
+        this.emptyPrivateDictionary(parentDict);
+        return;
+      }
+
+      const privateDictEnd = offset + size;
+      const dictData = this.bytes.subarray(offset, privateDictEnd);
+      const dict = this.parseDict(dictData);
+      const privateDict = this.createDict(CFFPrivateDict, dict, parentDict.strings);
+      parentDict.privateDict = privateDict;
+
+      if (!privateDict.getByName("Subrs")) {
+        return;
+      }
+
+      const subrsOffset = privateDict.getByName("Subrs");
+      const relativeOffset = offset + subrsOffset;
+
+      if (subrsOffset === 0 || relativeOffset >= this.bytes.length) {
+        this.emptyPrivateDictionary(parentDict);
+        return;
+      }
+
+      const subrsIndex = this.parseIndex(relativeOffset);
+      privateDict.subrsIndex = subrsIndex.obj;
+    }
+
+    parseCharsets(pos, length, strings, cid) {
+      if (pos === 0) {
+        return new CFFCharset(true, CFFCharsetPredefinedTypes.ISO_ADOBE, _charsets.ISOAdobeCharset);
+      } else if (pos === 1) {
+        return new CFFCharset(true, CFFCharsetPredefinedTypes.EXPERT, _charsets.ExpertCharset);
+      } else if (pos === 2) {
+        return new CFFCharset(true, CFFCharsetPredefinedTypes.EXPERT_SUBSET, _charsets.ExpertSubsetCharset);
+      }
+
+      const bytes = this.bytes;
+      const start = pos;
+      const format = bytes[pos++];
+      const charset = [cid ? 0 : ".notdef"];
+      let id, count, i;
+      length -= 1;
+
+      switch (format) {
+        case 0:
+          for (i = 0; i < length; i++) {
+            id = bytes[pos++] << 8 | bytes[pos++];
+            charset.push(cid ? id : strings.get(id));
+          }
+
+          break;
+
+        case 1:
+          while (charset.length <= length) {
+            id = bytes[pos++] << 8 | bytes[pos++];
+            count = bytes[pos++];
+
+            for (i = 0; i <= count; i++) {
+              charset.push(cid ? id++ : strings.get(id++));
+            }
+          }
+
+          break;
+
+        case 2:
+          while (charset.length <= length) {
+            id = bytes[pos++] << 8 | bytes[pos++];
+            count = bytes[pos++] << 8 | bytes[pos++];
+
+            for (i = 0; i <= count; i++) {
+              charset.push(cid ? id++ : strings.get(id++));
+            }
+          }
+
+          break;
+
+        default:
+          throw new _util.FormatError("Unknown charset format");
+      }
+
+      const end = pos;
+      const raw = bytes.subarray(start, end);
+      return new CFFCharset(false, format, charset, raw);
+    }
+
+    parseEncoding(pos, properties, strings, charset) {
+      const encoding = Object.create(null);
+      const bytes = this.bytes;
+      let predefined = false;
+      let format, i, ii;
+      let raw = null;
+
+      function readSupplement() {
+        const supplementsCount = bytes[pos++];
+
+        for (i = 0; i < supplementsCount; i++) {
+          const code = bytes[pos++];
+          const sid = (bytes[pos++] << 8) + (bytes[pos++] & 0xff);
+          encoding[code] = charset.indexOf(strings.get(sid));
+        }
+      }
+
+      if (pos === 0 || pos === 1) {
+        predefined = true;
+        format = pos;
+        const baseEncoding = pos ? _encodings.ExpertEncoding : _encodings.StandardEncoding;
+
+        for (i = 0, ii = charset.length; i < ii; i++) {
+          const index = baseEncoding.indexOf(charset[i]);
+
+          if (index !== -1) {
+            encoding[index] = i;
+          }
+        }
+      } else {
+        const dataStart = pos;
+        format = bytes[pos++];
+
+        switch (format & 0x7f) {
+          case 0:
+            const glyphsCount = bytes[pos++];
+
+            for (i = 1; i <= glyphsCount; i++) {
+              encoding[bytes[pos++]] = i;
+            }
+
+            break;
+
+          case 1:
+            const rangesCount = bytes[pos++];
+            let gid = 1;
+
+            for (i = 0; i < rangesCount; i++) {
+              const start = bytes[pos++];
+              const left = bytes[pos++];
+
+              for (let j = start; j <= start + left; j++) {
+                encoding[j] = gid++;
+              }
+            }
+
+            break;
+
+          default:
+            throw new _util.FormatError(`Unknown encoding format: ${format} in CFF`);
+        }
+
+        const dataEnd = pos;
+
+        if (format & 0x80) {
+          bytes[dataStart] &= 0x7f;
+          readSupplement();
+        }
+
+        raw = bytes.subarray(dataStart, dataEnd);
+      }
+
+      format &= 0x7f;
+      return new CFFEncoding(predefined, format, encoding, raw);
+    }
+
+    parseFDSelect(pos, length) {
+      const bytes = this.bytes;
+      const format = bytes[pos++];
+      const fdSelect = [];
+      let i;
+
+      switch (format) {
+        case 0:
+          for (i = 0; i < length; ++i) {
+            const id = bytes[pos++];
+            fdSelect.push(id);
+          }
+
+          break;
+
+        case 3:
+          const rangesCount = bytes[pos++] << 8 | bytes[pos++];
+
+          for (i = 0; i < rangesCount; ++i) {
+            let first = bytes[pos++] << 8 | bytes[pos++];
+
+            if (i === 0 && first !== 0) {
+              (0, _util.warn)("parseFDSelect: The first range must have a first GID of 0" + " -- trying to 
recover.");
+              first = 0;
+            }
+
+            const fdIndex = bytes[pos++];
+            const next = bytes[pos] << 8 | bytes[pos + 1];
+
+            for (let j = first; j < next; ++j) {
+              fdSelect.push(fdIndex);
+            }
+          }
+
+          pos += 2;
+          break;
+
+        default:
+          throw new _util.FormatError(`parseFDSelect: Unknown format "${format}".`);
+      }
+
+      if (fdSelect.length !== length) {
+        throw new _util.FormatError("parseFDSelect: Invalid font data.");
+      }
+
+      return new CFFFDSelect(format, fdSelect);
+    }
+
+  }
+
+  return CFFParser;
+}();
+
+exports.CFFParser = CFFParser;
+
+class CFF {
+  constructor() {
+    this.header = null;
+    this.names = [];
+    this.topDict = null;
+    this.strings = new CFFStrings();
+    this.globalSubrIndex = null;
+    this.encoding = null;
+    this.charset = null;
+    this.charStrings = null;
+    this.fdArray = [];
+    this.fdSelect = null;
+    this.isCIDFont = false;
+  }
+
+  duplicateFirstGlyph() {
+    if (this.charStrings.count >= 65535) {
+      (0, _util.warn)("Not enough space in charstrings to duplicate first glyph.");
+      return;
+    }
+
+    const glyphZero = this.charStrings.get(0);
+    this.charStrings.add(glyphZero);
+
+    if (this.isCIDFont) {
+      this.fdSelect.fdSelect.push(this.fdSelect.fdSelect[0]);
+    }
+  }
+
+  hasGlyphId(id) {
+    if (id < 0 || id >= this.charStrings.count) {
+      return false;
+    }
+
+    const glyph = this.charStrings.get(id);
+    return glyph.length > 0;
+  }
+
+}
+
+exports.CFF = CFF;
+
+class CFFHeader {
+  constructor(major, minor, hdrSize, offSize) {
+    this.major = major;
+    this.minor = minor;
+    this.hdrSize = hdrSize;
+    this.offSize = offSize;
+  }
+
+}
+
+exports.CFFHeader = CFFHeader;
+
+class CFFStrings {
+  constructor() {
+    this.strings = [];
+  }
+
+  get(index) {
+    if (index >= 0 && index <= NUM_STANDARD_CFF_STRINGS - 1) {
+      return CFFStandardStrings[index];
+    }
+
+    if (index - NUM_STANDARD_CFF_STRINGS <= this.strings.length) {
+      return this.strings[index - NUM_STANDARD_CFF_STRINGS];
+    }
+
+    return CFFStandardStrings[0];
+  }
+
+  getSID(str) {
+    let index = CFFStandardStrings.indexOf(str);
+
+    if (index !== -1) {
+      return index;
+    }
+
+    index = this.strings.indexOf(str);
+
+    if (index !== -1) {
+      return index + NUM_STANDARD_CFF_STRINGS;
+    }
+
+    return -1;
+  }
+
+  add(value) {
+    this.strings.push(value);
+  }
+
+  get count() {
+    return this.strings.length;
+  }
+
+}
+
+exports.CFFStrings = CFFStrings;
+
+class CFFIndex {
+  constructor() {
+    this.objects = [];
+    this.length = 0;
+  }
+
+  add(data) {
+    this.length += data.length;
+    this.objects.push(data);
+  }
+
+  set(index, data) {
+    this.length += data.length - this.objects[index].length;
+    this.objects[index] = data;
+  }
+
+  get(index) {
+    return this.objects[index];
+  }
+
+  get count() {
+    return this.objects.length;
+  }
+
+}
+
+exports.CFFIndex = CFFIndex;
+
+class CFFDict {
+  constructor(tables, strings) {
+    this.keyToNameMap = tables.keyToNameMap;
+    this.nameToKeyMap = tables.nameToKeyMap;
+    this.defaults = tables.defaults;
+    this.types = tables.types;
+    this.opcodes = tables.opcodes;
+    this.order = tables.order;
+    this.strings = strings;
+    this.values = Object.create(null);
+  }
+
+  setByKey(key, value) {
+    if (!(key in this.keyToNameMap)) {
+      return false;
+    }
+
+    const valueLength = value.length;
+
+    if (valueLength === 0) {
+      return true;
+    }
+
+    for (let i = 0; i < valueLength; i++) {
+      if (isNaN(value[i])) {
+        (0, _util.warn)('Invalid CFFDict value: "' + value + '" for key "' + key + '".');
+        return true;
+      }
+    }
+
+    const type = this.types[key];
+
+    if (type === "num" || type === "sid" || type === "offset") {
+      value = value[0];
+    }
+
+    this.values[key] = value;
+    return true;
+  }
+
+  setByName(name, value) {
+    if (!(name in this.nameToKeyMap)) {
+      throw new _util.FormatError(`Invalid dictionary name "${name}"`);
+    }
+
+    this.values[this.nameToKeyMap[name]] = value;
+  }
+
+  hasName(name) {
+    return this.nameToKeyMap[name] in this.values;
+  }
+
+  getByName(name) {
+    if (!(name in this.nameToKeyMap)) {
+      throw new _util.FormatError(`Invalid dictionary name ${name}"`);
+    }
+
+    const key = this.nameToKeyMap[name];
+
+    if (!(key in this.values)) {
+      return this.defaults[key];
+    }
+
+    return this.values[key];
+  }
+
+  removeByName(name) {
+    delete this.values[this.nameToKeyMap[name]];
+  }
+
+  static createTables(layout) {
+    const tables = {
+      keyToNameMap: {},
+      nameToKeyMap: {},
+      defaults: {},
+      types: {},
+      opcodes: {},
+      order: []
+    };
+
+    for (let i = 0, ii = layout.length; i < ii; ++i) {
+      const entry = layout[i];
+      const key = Array.isArray(entry[0]) ? (entry[0][0] << 8) + entry[0][1] : entry[0];
+      tables.keyToNameMap[key] = entry[1];
+      tables.nameToKeyMap[entry[1]] = key;
+      tables.types[key] = entry[2];
+      tables.defaults[key] = entry[3];
+      tables.opcodes[key] = Array.isArray(entry[0]) ? entry[0] : [entry[0]];
+      tables.order.push(key);
+    }
+
+    return tables;
+  }
+
+}
+
+const CFFTopDict = function CFFTopDictClosure() {
+  const layout = [[[12, 30], "ROS", ["sid", "sid", "num"], null], [[12, 20], "SyntheticBase", "num", null], 
[0, "version", "sid", null], [1, "Notice", "sid", null], [[12, 0], "Copyright", "sid", null], [2, "FullName", 
"sid", null], [3, "FamilyName", "sid", null], [4, "Weight", "sid", null], [[12, 1], "isFixedPitch", "num", 
0], [[12, 2], "ItalicAngle", "num", 0], [[12, 3], "UnderlinePosition", "num", -100], [[12, 4], 
"UnderlineThickness", "num", 50], [[12, 5], "PaintType", "num", 0], [[12, 6], "CharstringType", "num", 2], 
[[12, 7], "FontMatrix", ["num", "num", "num", "num", "num", "num"], [0.001, 0, 0, 0.001, 0, 0]], [13, 
"UniqueID", "num", null], [5, "FontBBox", ["num", "num", "num", "num"], [0, 0, 0, 0]], [[12, 8], 
"StrokeWidth", "num", 0], [14, "XUID", "array", null], [15, "charset", "offset", 0], [16, "Encoding", 
"offset", 0], [17, "CharStrings", "offset", 0], [18, "Private", ["offset", "offset"], null], [[12, 21], 
"PostScript", "sid", null], [[12, 22], "BaseFontName", "sid", nul
 l], [[12, 23], "BaseFontBlend", "delta", null], [[12, 31], "CIDFontVersion", "num", 0], [[12, 32], 
"CIDFontRevision", "num", 0], [[12, 33], "CIDFontType", "num", 0], [[12, 34], "CIDCount", "num", 8720], [[12, 
35], "UIDBase", "num", null], [[12, 37], "FDSelect", "offset", null], [[12, 36], "FDArray", "offset", null], 
[[12, 38], "FontName", "sid", null]];
+  let tables = null;
+
+  class CFFTopDict extends CFFDict {
+    constructor(strings) {
+      if (tables === null) {
+        tables = CFFDict.createTables(layout);
+      }
+
+      super(tables, strings);
+      this.privateDict = null;
+    }
+
+  }
+
+  return CFFTopDict;
+}();
+
+exports.CFFTopDict = CFFTopDict;
+
+const CFFPrivateDict = function CFFPrivateDictClosure() {
+  const layout = [[6, "BlueValues", "delta", null], [7, "OtherBlues", "delta", null], [8, "FamilyBlues", 
"delta", null], [9, "FamilyOtherBlues", "delta", null], [[12, 9], "BlueScale", "num", 0.039625], [[12, 10], 
"BlueShift", "num", 7], [[12, 11], "BlueFuzz", "num", 1], [10, "StdHW", "num", null], [11, "StdVW", "num", 
null], [[12, 12], "StemSnapH", "delta", null], [[12, 13], "StemSnapV", "delta", null], [[12, 14], 
"ForceBold", "num", 0], [[12, 17], "LanguageGroup", "num", 0], [[12, 18], "ExpansionFactor", "num", 0.06], 
[[12, 19], "initialRandomSeed", "num", 0], [20, "defaultWidthX", "num", 0], [21, "nominalWidthX", "num", 0], 
[19, "Subrs", "offset", null]];
+  let tables = null;
+
+  class CFFPrivateDict extends CFFDict {
+    constructor(strings) {
+      if (tables === null) {
+        tables = CFFDict.createTables(layout);
+      }
+
+      super(tables, strings);
+      this.subrsIndex = null;
+    }
+
+  }
+
+  return CFFPrivateDict;
+}();
+
+exports.CFFPrivateDict = CFFPrivateDict;
+const CFFCharsetPredefinedTypes = {
+  ISO_ADOBE: 0,
+  EXPERT: 1,
+  EXPERT_SUBSET: 2
+};
+
+class CFFCharset {
+  constructor(predefined, format, charset, raw) {
+    this.predefined = predefined;
+    this.format = format;
+    this.charset = charset;
+    this.raw = raw;
+  }
+
+}
+
+exports.CFFCharset = CFFCharset;
+
+class CFFEncoding {
+  constructor(predefined, format, encoding, raw) {
+    this.predefined = predefined;
+    this.format = format;
+    this.encoding = encoding;
+    this.raw = raw;
+  }
+
+}
+
+class CFFFDSelect {
+  constructor(format, fdSelect) {
+    this.format = format;
+    this.fdSelect = fdSelect;
+  }
+
+  getFDIndex(glyphIndex) {
+    if (glyphIndex < 0 || glyphIndex >= this.fdSelect.length) {
+      return -1;
+    }
+
+    return this.fdSelect[glyphIndex];
+  }
+
+}
+
+exports.CFFFDSelect = CFFFDSelect;
+
+class CFFOffsetTracker {
+  constructor() {
+    this.offsets = Object.create(null);
+  }
+
+  isTracking(key) {
+    return key in this.offsets;
+  }
+
+  track(key, location) {
+    if (key in this.offsets) {
+      throw new _util.FormatError(`Already tracking location of ${key}`);
+    }
+
+    this.offsets[key] = location;
+  }
+
+  offset(value) {
+    for (const key in this.offsets) {
+      this.offsets[key] += value;
+    }
+  }
+
+  setEntryLocation(key, values, output) {
+    if (!(key in this.offsets)) {
+      throw new _util.FormatError(`Not tracking location of ${key}`);
+    }
+
+    const data = output.data;
+    const dataOffset = this.offsets[key];
+    const size = 5;
+
+    for (let i = 0, ii = values.length; i < ii; ++i) {
+      const offset0 = i * size + dataOffset;
+      const offset1 = offset0 + 1;
+      const offset2 = offset0 + 2;
+      const offset3 = offset0 + 3;
+      const offset4 = offset0 + 4;
+
+      if (data[offset0] !== 0x1d || data[offset1] !== 0 || data[offset2] !== 0 || data[offset3] !== 0 || 
data[offset4] !== 0) {
+        throw new _util.FormatError("writing to an offset that is not empty");
+      }
+
+      const value = values[i];
+      data[offset0] = 0x1d;
+      data[offset1] = value >> 24 & 0xff;
+      data[offset2] = value >> 16 & 0xff;
+      data[offset3] = value >> 8 & 0xff;
+      data[offset4] = value & 0xff;
+    }
+  }
+
+}
+
+class CFFCompiler {
+  constructor(cff) {
+    this.cff = cff;
+  }
+
+  compile() {
+    const cff = this.cff;
+    const output = {
+      data: [],
+      length: 0,
+      add: function CFFCompiler_add(data) {
+        this.data = this.data.concat(data);
+        this.length = this.data.length;
+      }
+    };
+    const header = this.compileHeader(cff.header);
+    output.add(header);
+    const nameIndex = this.compileNameIndex(cff.names);
+    output.add(nameIndex);
+
+    if (cff.isCIDFont) {
+      if (cff.topDict.hasName("FontMatrix")) {
+        const base = cff.topDict.getByName("FontMatrix");
+        cff.topDict.removeByName("FontMatrix");
+
+        for (let i = 0, ii = cff.fdArray.length; i < ii; i++) {
+          const subDict = cff.fdArray[i];
+          let matrix = base.slice(0);
+
+          if (subDict.hasName("FontMatrix")) {
+            matrix = _util.Util.transform(matrix, subDict.getByName("FontMatrix"));
+          }
+
+          subDict.setByName("FontMatrix", matrix);
+        }
+      }
+    }
+
+    const xuid = cff.topDict.getByName("XUID");
+
+    if (xuid && xuid.length > 16) {
+      cff.topDict.removeByName("XUID");
+    }
+
+    cff.topDict.setByName("charset", 0);
+    let compiled = this.compileTopDicts([cff.topDict], output.length, cff.isCIDFont);
+    output.add(compiled.output);
+    const topDictTracker = compiled.trackers[0];
+    const stringIndex = this.compileStringIndex(cff.strings.strings);
+    output.add(stringIndex);
+    const globalSubrIndex = this.compileIndex(cff.globalSubrIndex);
+    output.add(globalSubrIndex);
+
+    if (cff.encoding && cff.topDict.hasName("Encoding")) {
+      if (cff.encoding.predefined) {
+        topDictTracker.setEntryLocation("Encoding", [cff.encoding.format], output);
+      } else {
+        const encoding = this.compileEncoding(cff.encoding);
+        topDictTracker.setEntryLocation("Encoding", [output.length], output);
+        output.add(encoding);
+      }
+    }
+
+    const charset = this.compileCharset(cff.charset, cff.charStrings.count, cff.strings, cff.isCIDFont);
+    topDictTracker.setEntryLocation("charset", [output.length], output);
+    output.add(charset);
+    const charStrings = this.compileCharStrings(cff.charStrings);
+    topDictTracker.setEntryLocation("CharStrings", [output.length], output);
+    output.add(charStrings);
+
+    if (cff.isCIDFont) {
+      topDictTracker.setEntryLocation("FDSelect", [output.length], output);
+      const fdSelect = this.compileFDSelect(cff.fdSelect);
+      output.add(fdSelect);
+      compiled = this.compileTopDicts(cff.fdArray, output.length, true);
+      topDictTracker.setEntryLocation("FDArray", [output.length], output);
+      output.add(compiled.output);
+      const fontDictTrackers = compiled.trackers;
+      this.compilePrivateDicts(cff.fdArray, fontDictTrackers, output);
+    }
+
+    this.compilePrivateDicts([cff.topDict], [topDictTracker], output);
+    output.add([0]);
+    return output.data;
+  }
+
+  encodeNumber(value) {
+    if (Number.isInteger(value)) {
+      return this.encodeInteger(value);
+    }
+
+    return this.encodeFloat(value);
+  }
+
+  static get EncodeFloatRegExp() {
+    return (0, _util.shadow)(this, "EncodeFloatRegExp", /\.(\d*?)(?:9{5,20}|0{5,20})\d{0,2}(?:e(.+)|$)/);
+  }
+
+  encodeFloat(num) {
+    let value = num.toString();
+    const m = CFFCompiler.EncodeFloatRegExp.exec(value);
+
+    if (m) {
+      const epsilon = parseFloat("1e" + ((m[2] ? +m[2] : 0) + m[1].length));
+      value = (Math.round(num * epsilon) / epsilon).toString();
+    }
+
+    let nibbles = "";
+    let i, ii;
+
+    for (i = 0, ii = value.length; i < ii; ++i) {
+      const a = value[i];
+
+      if (a === "e") {
+        nibbles += value[++i] === "-" ? "c" : "b";
+      } else if (a === ".") {
+        nibbles += "a";
+      } else if (a === "-") {
+        nibbles += "e";
+      } else {
+        nibbles += a;
+      }
+    }
+
+    nibbles += nibbles.length & 1 ? "f" : "ff";
+    const out = [30];
+
+    for (i = 0, ii = nibbles.length; i < ii; i += 2) {
+      out.push(parseInt(nibbles.substring(i, i + 2), 16));
+    }
+
+    return out;
+  }
+
+  encodeInteger(value) {
+    let code;
+
+    if (value >= -107 && value <= 107) {
+      code = [value + 139];
+    } else if (value >= 108 && value <= 1131) {
+      value -= 108;
+      code = [(value >> 8) + 247, value & 0xff];
+    } else if (value >= -1131 && value <= -108) {
+      value = -value - 108;
+      code = [(value >> 8) + 251, value & 0xff];
+    } else if (value >= -32768 && value <= 32767) {
+      code = [0x1c, value >> 8 & 0xff, value & 0xff];
+    } else {
+      code = [0x1d, value >> 24 & 0xff, value >> 16 & 0xff, value >> 8 & 0xff, value & 0xff];
+    }
+
+    return code;
+  }
+
+  compileHeader(header) {
+    return [header.major, header.minor, 4, header.offSize];
+  }
+
+  compileNameIndex(names) {
+    const nameIndex = new CFFIndex();
+
+    for (let i = 0, ii = names.length; i < ii; ++i) {
+      const name = names[i];
+      const length = Math.min(name.length, 127);
+      let sanitizedName = new Array(length);
+
+      for (let j = 0; j < length; j++) {
+        let char = name[j];
+
+        if (char < "!" || char > "~" || char === "[" || char === "]" || char === "(" || char === ")" || char 
=== "{" || char === "}" || char === "<" || char === ">" || char === "/" || char === "%") {
+          char = "_";
+        }
+
+        sanitizedName[j] = char;
+      }
+
+      sanitizedName = sanitizedName.join("");
+
+      if (sanitizedName === "") {
+        sanitizedName = "Bad_Font_Name";
+      }
+
+      nameIndex.add((0, _util.stringToBytes)(sanitizedName));
+    }
+
+    return this.compileIndex(nameIndex);
+  }
+
+  compileTopDicts(dicts, length, removeCidKeys) {
+    const fontDictTrackers = [];
+    let fdArrayIndex = new CFFIndex();
+
+    for (let i = 0, ii = dicts.length; i < ii; ++i) {
+      const fontDict = dicts[i];
+
+      if (removeCidKeys) {
+        fontDict.removeByName("CIDFontVersion");
+        fontDict.removeByName("CIDFontRevision");
+        fontDict.removeByName("CIDFontType");
+        fontDict.removeByName("CIDCount");
+        fontDict.removeByName("UIDBase");
+      }
+
+      const fontDictTracker = new CFFOffsetTracker();
+      const fontDictData = this.compileDict(fontDict, fontDictTracker);
+      fontDictTrackers.push(fontDictTracker);
+      fdArrayIndex.add(fontDictData);
+      fontDictTracker.offset(length);
+    }
+
+    fdArrayIndex = this.compileIndex(fdArrayIndex, fontDictTrackers);
+    return {
+      trackers: fontDictTrackers,
+      output: fdArrayIndex
+    };
+  }
+
+  compilePrivateDicts(dicts, trackers, output) {
+    for (let i = 0, ii = dicts.length; i < ii; ++i) {
+      const fontDict = dicts[i];
+      const privateDict = fontDict.privateDict;
+
+      if (!privateDict || !fontDict.hasName("Private")) {
+        throw new _util.FormatError("There must be a private dictionary.");
+      }
+
+      const privateDictTracker = new CFFOffsetTracker();
+      const privateDictData = this.compileDict(privateDict, privateDictTracker);
+      let outputLength = output.length;
+      privateDictTracker.offset(outputLength);
+
+      if (!privateDictData.length) {
+        outputLength = 0;
+      }
+
+      trackers[i].setEntryLocation("Private", [privateDictData.length, outputLength], output);
+      output.add(privateDictData);
+
+      if (privateDict.subrsIndex && privateDict.hasName("Subrs")) {
+        const subrs = this.compileIndex(privateDict.subrsIndex);
+        privateDictTracker.setEntryLocation("Subrs", [privateDictData.length], output);
+        output.add(subrs);
+      }
+    }
+  }
+
+  compileDict(dict, offsetTracker) {
+    let out = [];
+    const order = dict.order;
+
+    for (let i = 0; i < order.length; ++i) {
+      const key = order[i];
+
+      if (!(key in dict.values)) {
+        continue;
+      }
+
+      let values = dict.values[key];
+      let types = dict.types[key];
+
+      if (!Array.isArray(types)) {
+        types = [types];
+      }
+
+      if (!Array.isArray(values)) {
+        values = [values];
+      }
+
+      if (values.length === 0) {
+        continue;
+      }
+
+      for (let j = 0, jj = types.length; j < jj; ++j) {
+        const type = types[j];
+        const value = values[j];
+
+        switch (type) {
+          case "num":
+          case "sid":
+            out = out.concat(this.encodeNumber(value));
+            break;
+
+          case "offset":
+            const name = dict.keyToNameMap[key];
+
+            if (!offsetTracker.isTracking(name)) {
+              offsetTracker.track(name, out.length);
+            }
+
+            out = out.concat([0x1d, 0, 0, 0, 0]);
+            break;
+
+          case "array":
+          case "delta":
+            out = out.concat(this.encodeNumber(value));
+
+            for (let k = 1, kk = values.length; k < kk; ++k) {
+              out = out.concat(this.encodeNumber(values[k]));
+            }
+
+            break;
+
+          default:
+            throw new _util.FormatError(`Unknown data type of ${type}`);
+        }
+      }
+
+      out = out.concat(dict.opcodes[key]);
+    }
+
+    return out;
+  }
+
+  compileStringIndex(strings) {
+    const stringIndex = new CFFIndex();
+
+    for (let i = 0, ii = strings.length; i < ii; ++i) {
+      stringIndex.add((0, _util.stringToBytes)(strings[i]));
+    }
+
+    return this.compileIndex(stringIndex);
+  }
+
+  compileGlobalSubrIndex() {
+    const globalSubrIndex = this.cff.globalSubrIndex;
+    this.out.writeByteArray(this.compileIndex(globalSubrIndex));
+  }
+
+  compileCharStrings(charStrings) {
+    const charStringsIndex = new CFFIndex();
+
+    for (let i = 0; i < charStrings.count; i++) {
+      const glyph = charStrings.get(i);
+
+      if (glyph.length === 0) {
+        charStringsIndex.add(new Uint8Array([0x8b, 0x0e]));
+        continue;
+      }
+
+      charStringsIndex.add(glyph);
+    }
+
+    return this.compileIndex(charStringsIndex);
+  }
+
+  compileCharset(charset, numGlyphs, strings, isCIDFont) {
+    let out;
+    const numGlyphsLessNotDef = numGlyphs - 1;
+
+    if (isCIDFont) {
+      out = new Uint8Array([2, 0, 0, numGlyphsLessNotDef >> 8 & 0xff, numGlyphsLessNotDef & 0xff]);
+    } else {
+      const length = 1 + numGlyphsLessNotDef * 2;
+      out = new Uint8Array(length);
+      out[0] = 0;
+      let charsetIndex = 0;
+      const numCharsets = charset.charset.length;
+      let warned = false;
+
+      for (let i = 1; i < out.length; i += 2) {
+        let sid = 0;
+
+        if (charsetIndex < numCharsets) {
+          const name = charset.charset[charsetIndex++];
+          sid = strings.getSID(name);
+
+          if (sid === -1) {
+            sid = 0;
+
+            if (!warned) {
+              warned = true;
+              (0, _util.warn)(`Couldn't find ${name} in CFF strings`);
+            }
+          }
+        }
+
+        out[i] = sid >> 8 & 0xff;
+        out[i + 1] = sid & 0xff;
+      }
+    }
+
+    return this.compileTypedArray(out);
+  }
+
+  compileEncoding(encoding) {
+    return this.compileTypedArray(encoding.raw);
+  }
+
+  compileFDSelect(fdSelect) {
+    const format = fdSelect.format;
+    let out, i;
+
+    switch (format) {
+      case 0:
+        out = new Uint8Array(1 + fdSelect.fdSelect.length);
+        out[0] = format;
+
+        for (i = 0; i < fdSelect.fdSelect.length; i++) {
+          out[i + 1] = fdSelect.fdSelect[i];
+        }
+
+        break;
+
+      case 3:
+        const start = 0;
+        let lastFD = fdSelect.fdSelect[0];
+        const ranges = [format, 0, 0, start >> 8 & 0xff, start & 0xff, lastFD];
+
+        for (i = 1; i < fdSelect.fdSelect.length; i++) {
+          const currentFD = fdSelect.fdSelect[i];
+
+          if (currentFD !== lastFD) {
+            ranges.push(i >> 8 & 0xff, i & 0xff, currentFD);
+            lastFD = currentFD;
+          }
+        }
+
+        const numRanges = (ranges.length - 3) / 3;
+        ranges[1] = numRanges >> 8 & 0xff;
+        ranges[2] = numRanges & 0xff;
+        ranges.push(i >> 8 & 0xff, i & 0xff);
+        out = new Uint8Array(ranges);
+        break;
+    }
+
+    return this.compileTypedArray(out);
+  }
+
+  compileTypedArray(data) {
+    const out = [];
+
+    for (let i = 0, ii = data.length; i < ii; ++i) {
+      out[i] = data[i];
+    }
+
+    return out;
+  }
+
+  compileIndex(index, trackers = []) {
+    const objects = index.objects;
+    const count = objects.length;
+
+    if (count === 0) {
+      return [0, 0, 0];
+    }
+
+    const data = [count >> 8 & 0xff, count & 0xff];
+    let lastOffset = 1,
+        i;
+
+    for (i = 0; i < count; ++i) {
+      lastOffset += objects[i].length;
+    }
+
+    let offsetSize;
+
+    if (lastOffset < 0x100) {
+      offsetSize = 1;
+    } else if (lastOffset < 0x10000) {
+      offsetSize = 2;
+    } else if (lastOffset < 0x1000000) {
+      offsetSize = 3;
+    } else {
+      offsetSize = 4;
+    }
+
+    data.push(offsetSize);
+    let relativeOffset = 1;
+
+    for (i = 0; i < count + 1; i++) {
+      if (offsetSize === 1) {
+        data.push(relativeOffset & 0xff);
+      } else if (offsetSize === 2) {
+        data.push(relativeOffset >> 8 & 0xff, relativeOffset & 0xff);
+      } else if (offsetSize === 3) {
+        data.push(relativeOffset >> 16 & 0xff, relativeOffset >> 8 & 0xff, relativeOffset & 0xff);
+      } else {
+        data.push(relativeOffset >>> 24 & 0xff, relativeOffset >> 16 & 0xff, relativeOffset >> 8 & 0xff, 
relativeOffset & 0xff);
+      }
+
+      if (objects[i]) {
+        relativeOffset += objects[i].length;
+      }
+    }
+
+    for (i = 0; i < count; i++) {
+      if (trackers[i]) {
+        trackers[i].offset(data.length);
+      }
+
+      for (let j = 0, jj = objects[i].length; j < jj; j++) {
+        data.push(objects[i][j]);
+      }
+    }
+
+    return data;
+  }
+
 }
 
+exports.CFFCompiler = CFFCompiler;
 
 /***/ }),
-/* 41 */
+/* 46 */
+/***/ ((__unused_webpack_module, exports) => {
+
+
+
+Object.defineProperty(exports, "__esModule", ({
+  value: true
+}));
+exports.ISOAdobeCharset = exports.ExpertSubsetCharset = exports.ExpertCharset = void 0;
+const ISOAdobeCharset = [".notdef", "space", "exclam", "quotedbl", "numbersign", "dollar", "percent", 
"ampersand", "quoteright", "parenleft", "parenright", "asterisk", "plus", "comma", "hyphen", "period", 
"slash", "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "colon", 
"semicolon", "less", "equal", "greater", "question", "at", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", 
"K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "bracketleft", "backslash", 
"bracketright", "asciicircum", "underscore", "quoteleft", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", 
"k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "braceleft", "bar", 
"braceright", "asciitilde", "exclamdown", "cent", "sterling", "fraction", "yen", "florin", "section", 
"currency", "quotesingle", "quotedblleft", "guillemotleft", "guilsinglleft", "guilsinglright", "fi", "fl", 
"endash", "dagger", "daggerdbl", "periodcentered", "paragrap
 h", "bullet", "quotesinglbase", "quotedblbase", "quotedblright", "guillemotright", "ellipsis", 
"perthousand", "questiondown", "grave", "acute", "circumflex", "tilde", "macron", "breve", "dotaccent", 
"dieresis", "ring", "cedilla", "hungarumlaut", "ogonek", "caron", "emdash", "AE", "ordfeminine", "Lslash", 
"Oslash", "OE", "ordmasculine", "ae", "dotlessi", "lslash", "oslash", "oe", "germandbls", "onesuperior", 
"logicalnot", "mu", "trademark", "Eth", "onehalf", "plusminus", "Thorn", "onequarter", "divide", "brokenbar", 
"degree", "thorn", "threequarters", "twosuperior", "registered", "minus", "eth", "multiply", "threesuperior", 
"copyright", "Aacute", "Acircumflex", "Adieresis", "Agrave", "Aring", "Atilde", "Ccedilla", "Eacute", 
"Ecircumflex", "Edieresis", "Egrave", "Iacute", "Icircumflex", "Idieresis", "Igrave", "Ntilde", "Oacute", 
"Ocircumflex", "Odieresis", "Ograve", "Otilde", "Scaron", "Uacute", "Ucircumflex", "Udieresis", "Ugrave", 
"Yacute", "Ydieresis", "Zcaron", "aacute", "acircumf
 lex", "adieresis", "agrave", "aring", "atilde", "ccedilla", "eacute", "ecircumflex", "edieresis", "egrave", 
"iacute", "icircumflex", "idieresis", "igrave", "ntilde", "oacute", "ocircumflex", "odieresis", "ograve", 
"otilde", "scaron", "uacute", "ucircumflex", "udieresis", "ugrave", "yacute", "ydieresis", "zcaron"];
+exports.ISOAdobeCharset = ISOAdobeCharset;
+const ExpertCharset = [".notdef", "space", "exclamsmall", "Hungarumlautsmall", "dollaroldstyle", 
"dollarsuperior", "ampersandsmall", "Acutesmall", "parenleftsuperior", "parenrightsuperior", 
"twodotenleader", "onedotenleader", "comma", "hyphen", "period", "fraction", "zerooldstyle", "oneoldstyle", 
"twooldstyle", "threeoldstyle", "fouroldstyle", "fiveoldstyle", "sixoldstyle", "sevenoldstyle", 
"eightoldstyle", "nineoldstyle", "colon", "semicolon", "commasuperior", "threequartersemdash", 
"periodsuperior", "questionsmall", "asuperior", "bsuperior", "centsuperior", "dsuperior", "esuperior", 
"isuperior", "lsuperior", "msuperior", "nsuperior", "osuperior", "rsuperior", "ssuperior", "tsuperior", "ff", 
"fi", "fl", "ffi", "ffl", "parenleftinferior", "parenrightinferior", "Circumflexsmall", "hyphensuperior", 
"Gravesmall", "Asmall", "Bsmall", "Csmall", "Dsmall", "Esmall", "Fsmall", "Gsmall", "Hsmall", "Ismall", 
"Jsmall", "Ksmall", "Lsmall", "Msmall", "Nsmall", "Osmall", "Psmall", "Qsmall", "Rsma
 ll", "Ssmall", "Tsmall", "Usmall", "Vsmall", "Wsmall", "Xsmall", "Ysmall", "Zsmall", "colonmonetary", 
"onefitted", "rupiah", "Tildesmall", "exclamdownsmall", "centoldstyle", "Lslashsmall", "Scaronsmall", 
"Zcaronsmall", "Dieresissmall", "Brevesmall", "Caronsmall", "Dotaccentsmall", "Macronsmall", "figuredash", 
"hypheninferior", "Ogoneksmall", "Ringsmall", "Cedillasmall", "onequarter", "onehalf", "threequarters", 
"questiondownsmall", "oneeighth", "threeeighths", "fiveeighths", "seveneighths", "onethird", "twothirds", 
"zerosuperior", "onesuperior", "twosuperior", "threesuperior", "foursuperior", "fivesuperior", "sixsuperior", 
"sevensuperior", "eightsuperior", "ninesuperior", "zeroinferior", "oneinferior", "twoinferior", 
"threeinferior", "fourinferior", "fiveinferior", "sixinferior", "seveninferior", "eightinferior", 
"nineinferior", "centinferior", "dollarinferior", "periodinferior", "commainferior", "Agravesmall", 
"Aacutesmall", "Acircumflexsmall", "Atildesmall", "Adieresissmall", "Ari
 ngsmall", "AEsmall", "Ccedillasmall", "Egravesmall", "Eacutesmall", "Ecircumflexsmall", "Edieresissmall", 
"Igravesmall", "Iacutesmall", "Icircumflexsmall", "Idieresissmall", "Ethsmall", "Ntildesmall", "Ogravesmall", 
"Oacutesmall", "Ocircumflexsmall", "Otildesmall", "Odieresissmall", "OEsmall", "Oslashsmall", "Ugravesmall", 
"Uacutesmall", "Ucircumflexsmall", "Udieresissmall", "Yacutesmall", "Thornsmall", "Ydieresissmall"];
+exports.ExpertCharset = ExpertCharset;
+const ExpertSubsetCharset = [".notdef", "space", "dollaroldstyle", "dollarsuperior", "parenleftsuperior", 
"parenrightsuperior", "twodotenleader", "onedotenleader", "comma", "hyphen", "period", "fraction", 
"zerooldstyle", "oneoldstyle", "twooldstyle", "threeoldstyle", "fouroldstyle", "fiveoldstyle", "sixoldstyle", 
"sevenoldstyle", "eightoldstyle", "nineoldstyle", "colon", "semicolon", "commasuperior", 
"threequartersemdash", "periodsuperior", "asuperior", "bsuperior", "centsuperior", "dsuperior", "esuperior", 
"isuperior", "lsuperior", "msuperior", "nsuperior", "osuperior", "rsuperior", "ssuperior", "tsuperior", "ff", 
"fi", "fl", "ffi", "ffl", "parenleftinferior", "parenrightinferior", "hyphensuperior", "colonmonetary", 
"onefitted", "rupiah", "centoldstyle", "figuredash", "hypheninferior", "onequarter", "onehalf", 
"threequarters", "oneeighth", "threeeighths", "fiveeighths", "seveneighths", "onethird", "twothirds", 
"zerosuperior", "onesuperior", "twosuperior", "threesuperior", "foursupe
 rior", "fivesuperior", "sixsuperior", "sevensuperior", "eightsuperior", "ninesuperior", "zeroinferior", 
"oneinferior", "twoinferior", "threeinferior", "fourinferior", "fiveinferior", "sixinferior", 
"seveninferior", "eightinferior", "nineinferior", "centinferior", "dollarinferior", "periodinferior", 
"commainferior"];
+exports.ExpertSubsetCharset = ExpertSubsetCharset;
+
+/***/ }),
+/* 47 */
 /***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
 
 
@@ -40416,7 +41187,7 @@ exports.getSymbolsFonts = exports.getSupplementalGlyphMapForCalibri = exports.ge
 
 var _core_utils = __w_pdfjs_require__(9);
 
-var _fonts_utils = __w_pdfjs_require__(38);
+var _fonts_utils = __w_pdfjs_require__(18);
 
 const getStdFontMap = (0, _core_utils.getLookupTableFactory)(function (t) {
   t["Times-Roman"] = "Times-Roman";
@@ -40519,6 +41290,12 @@ const getNonStdFontMap = (0, _core_utils.getLookupTableFactory)(function (t) {
   t["ComicSansMS-Bold"] = "Comic Sans MS-Bold";
   t["ComicSansMS-BoldItalic"] = "Comic Sans MS-BoldItalic";
   t["ComicSansMS-Italic"] = "Comic Sans MS-Italic";
+  t["ItcSymbol-Bold"] = "Helvetica-Bold";
+  t["ItcSymbol-BoldItalic"] = "Helvetica-BoldOblique";
+  t["ItcSymbol-Book"] = "Helvetica";
+  t["ItcSymbol-BookItalic"] = "Helvetica-Oblique";
+  t["ItcSymbol-Medium"] = "Helvetica";
+  t["ItcSymbol-MediumItalic"] = "Helvetica-Oblique";
   t.LucidaConsole = "Courier";
   t["LucidaConsole-Bold"] = "Courier-Bold";
   t["LucidaConsole-BoldItalic"] = "Courier-BoldOblique";
@@ -40627,6 +41404,7 @@ const getSerifFonts = (0, _core_utils.getLookupTableFactory)(function (t) {
   t.Joanna = true;
   t.Korinna = true;
   t.Lexicon = true;
+  t.LiberationSerif = true;
   t["Liberation Serif"] = true;
   t["Linux Libertine"] = true;
   t.Literaturnaya = true;
@@ -40858,12 +41636,17 @@ const getGlyphMapForStandardFonts = (0, _core_utils.getLookupTableFactory)(funct
   t[169] = 171;
   t[170] = 187;
   t[171] = 8230;
+  t[200] = 193;
+  t[203] = 205;
   t[210] = 218;
   t[223] = 711;
   t[224] = 321;
   t[225] = 322;
+  t[226] = 352;
   t[227] = 353;
+  t[228] = 381;
   t[229] = 382;
+  t[233] = 221;
   t[234] = 253;
   t[252] = 263;
   t[253] = 268;
@@ -40873,11 +41656,13 @@ const getGlyphMapForStandardFonts = (0, _core_utils.getLookupTableFactory)(funct
   t[261] = 261;
   t[265] = 280;
   t[266] = 281;
+  t[267] = 282;
   t[268] = 283;
   t[269] = 313;
   t[275] = 323;
   t[276] = 324;
   t[278] = 328;
+  t[283] = 344;
   t[284] = 345;
   t[285] = 346;
   t[286] = 347;
@@ -41093,14 +41878,19 @@ exports.getSupplementalGlyphMapForArialBlack = getSupplementalGlyphMapForArialBl
 const getSupplementalGlyphMapForCalibri = (0, _core_utils.getLookupTableFactory)(function (t) {
   t[1] = 32;
   t[4] = 65;
+  t[6] = 193;
   t[17] = 66;
   t[18] = 67;
+  t[21] = 268;
   t[24] = 68;
   t[28] = 69;
+  t[30] = 201;
+  t[32] = 282;
   t[38] = 70;
   t[39] = 71;
   t[44] = 72;
   t[47] = 73;
+  t[49] = 205;
   t[58] = 74;
   t[60] = 75;
   t[62] = 76;
@@ -41110,26 +41900,35 @@ const getSupplementalGlyphMapForCalibri = (0, _core_utils.getLookupTableFactory)
   t[87] = 80;
   t[89] = 81;
   t[90] = 82;
+  t[92] = 344;
   t[94] = 83;
+  t[97] = 352;
   t[100] = 84;
   t[104] = 85;
   t[115] = 86;
   t[116] = 87;
   t[121] = 88;
   t[122] = 89;
+  t[124] = 221;
   t[127] = 90;
+  t[129] = 381;
   t[258] = 97;
+  t[260] = 225;
   t[268] = 261;
   t[271] = 98;
   t[272] = 99;
   t[273] = 263;
+  t[275] = 269;
   t[282] = 100;
   t[286] = 101;
+  t[288] = 233;
+  t[290] = 283;
   t[295] = 281;
   t[296] = 102;
   t[336] = 103;
   t[346] = 104;
   t[349] = 105;
+  t[351] = 237;
   t[361] = 106;
   t[364] = 107;
   t[367] = 108;
@@ -41141,15 +41940,19 @@ const getSupplementalGlyphMapForCalibri = (0, _core_utils.getLookupTableFactory)
   t[393] = 112;
   t[395] = 113;
   t[396] = 114;
+  t[398] = 345;
   t[400] = 115;
   t[401] = 347;
+  t[403] = 353;
   t[410] = 116;
   t[437] = 117;
   t[448] = 118;
   t[449] = 119;
   t[454] = 120;
   t[455] = 121;
+  t[457] = 253;
   t[460] = 122;
+  t[462] = 382;
   t[463] = 380;
   t[853] = 44;
   t[855] = 58;
@@ -41185,7 +41988,7 @@ function getStandardFontName(name) {
 }
 
 /***/ }),
-/* 42 */
+/* 48 */
 /***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
 
 
@@ -41287,7 +42090,7 @@ class IdentityToUnicodeMap {
 exports.IdentityToUnicodeMap = IdentityToUnicodeMap;
 
 /***/ }),
-/* 43 */
+/* 49 */
 /***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
 
 
@@ -41297,9 +42100,9 @@ Object.defineProperty(exports, "__esModule", ({
 }));
 exports.CFFFont = void 0;
 
-var _cff_parser = __w_pdfjs_require__(35);
+var _cff_parser = __w_pdfjs_require__(45);
 
-var _fonts_utils = __w_pdfjs_require__(38);
+var _fonts_utils = __w_pdfjs_require__(18);
 
 var _util = __w_pdfjs_require__(2);
 
@@ -41407,7 +42210,7 @@ class CFFFont {
 exports.CFFFont = CFFFont;
 
 /***/ }),
-/* 44 */
+/* 50 */
 /***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
 
 
@@ -41419,11 +42222,11 @@ exports.FontRendererFactory = void 0;
 
 var _util = __w_pdfjs_require__(2);
 
-var _cff_parser = __w_pdfjs_require__(35);
+var _cff_parser = __w_pdfjs_require__(45);
 
-var _glyphlist = __w_pdfjs_require__(39);
+var _glyphlist = __w_pdfjs_require__(20);
 
-var _encodings = __w_pdfjs_require__(37);
+var _encodings = __w_pdfjs_require__(19);
 
 var _stream = __w_pdfjs_require__(10);
 
@@ -42382,7 +43185,7 @@ class FontRendererFactory {
 exports.FontRendererFactory = FontRendererFactory;
 
 /***/ }),
-/* 45 */
+/* 51 */
 /***/ ((__unused_webpack_module, exports) => {
 
 
@@ -43038,7 +43841,7 @@ class CompositeGlyph {
 }
 
 /***/ }),
-/* 46 */
+/* 52 */
 /***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
 
 
@@ -43178,7 +43981,7 @@ class OpenTypeFileBuilder {
 exports.OpenTypeFileBuilder = OpenTypeFileBuilder;
 
 /***/ }),
-/* 47 */
+/* 53 */
 /***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
 
 
@@ -43188,15 +43991,15 @@ Object.defineProperty(exports, "__esModule", ({
 }));
 exports.Type1Font = void 0;
 
-var _cff_parser = __w_pdfjs_require__(35);
+var _cff_parser = __w_pdfjs_require__(45);
 
-var _fonts_utils = __w_pdfjs_require__(38);
+var _fonts_utils = __w_pdfjs_require__(18);
 
 var _core_utils = __w_pdfjs_require__(9);
 
 var _stream = __w_pdfjs_require__(10);
 
-var _type1_parser = __w_pdfjs_require__(48);
+var _type1_parser = __w_pdfjs_require__(54);
 
 var _util = __w_pdfjs_require__(2);
 
@@ -43543,7 +44346,7 @@ class Type1Font {
 exports.Type1Font = Type1Font;
 
 /***/ }),
-/* 48 */
+/* 54 */
 /***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
 
 
@@ -43553,7 +44356,7 @@ Object.defineProperty(exports, "__esModule", ({
 }));
 exports.Type1Parser = void 0;
 
-var _encodings = __w_pdfjs_require__(37);
+var _encodings = __w_pdfjs_require__(19);
 
 var _core_utils = __w_pdfjs_require__(9);
 
@@ -44266,7 +45069,7 @@ const Type1Parser = function Type1ParserClosure() {
 exports.Type1Parser = Type1Parser;
 
 /***/ }),
-/* 49 */
+/* 55 */
 /***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
 
 
@@ -44279,7 +45082,7 @@ exports.Pattern = void 0;
 
 var _util = __w_pdfjs_require__(2);
 
-var _colorspace = __w_pdfjs_require__(14);
+var _colorspace = __w_pdfjs_require__(24);
 
 var _primitives = __w_pdfjs_require__(5);
 
@@ -44300,7 +45103,7 @@ class Pattern {
     (0, _util.unreachable)("Cannot initialize Pattern.");
   }
 
-  static parseShading(shading, matrix, xref, res, handler, pdfFunctionFactory, localColorSpaceCache) {
+  static parseShading(shading, xref, res, handler, pdfFunctionFactory, localColorSpaceCache) {
     const dict = (0, _primitives.isStream)(shading) ? shading.dict : shading;
     const type = dict.get("ShadingType");
 
@@ -44308,13 +45111,13 @@ class Pattern {
       switch (type) {
         case ShadingType.AXIAL:
         case ShadingType.RADIAL:
-          return new RadialAxialShading(dict, matrix, xref, res, pdfFunctionFactory, localColorSpaceCache);
+          return new RadialAxialShading(dict, xref, res, pdfFunctionFactory, localColorSpaceCache);
 
         case ShadingType.FREE_FORM_MESH:
         case ShadingType.LATTICE_FORM_MESH:
         case ShadingType.COONS_PATCH_MESH:
         case ShadingType.TENSOR_PATCH_MESH:
-          return new MeshShading(shading, matrix, xref, res, pdfFunctionFactory, localColorSpaceCache);
+          return new MeshShading(shading, xref, res, pdfFunctionFactory, localColorSpaceCache);
 
         default:
           throw new _util.FormatError("Unsupported ShadingType: " + type);
@@ -44354,9 +45157,8 @@ class BaseShading {
 }
 
 class RadialAxialShading extends BaseShading {
-  constructor(dict, matrix, xref, resources, pdfFunctionFactory, localColorSpaceCache) {
+  constructor(dict, xref, resources, pdfFunctionFactory, localColorSpaceCache) {
     super();
-    this.matrix = matrix;
     this.coordsArr = dict.getArray("Coords");
     this.shadingType = dict.get("ShadingType");
 
@@ -44471,7 +45273,7 @@ class RadialAxialShading extends BaseShading {
       (0, _util.unreachable)(`getPattern type unknown: ${shadingType}`);
     }
 
-    return ["RadialAxial", type, this.bbox, this.colorStops, p0, p1, r0, r1, this.matrix];
+    return ["RadialAxial", type, this.bbox, this.colorStops, p0, p1, r0, r1];
   }
 
 }
@@ -44615,7 +45417,7 @@ class MeshShading extends BaseShading {
     return (0, _util.shadow)(this, "TRIANGLE_DENSITY", 20);
   }
 
-  constructor(stream, matrix, xref, resources, pdfFunctionFactory, localColorSpaceCache) {
+  constructor(stream, xref, resources, pdfFunctionFactory, localColorSpaceCache) {
     super();
 
     if (!(0, _primitives.isStream)(stream)) {
@@ -44623,7 +45425,6 @@ class MeshShading extends BaseShading {
     }
 
     const dict = stream.dict;
-    this.matrix = matrix;
     this.shadingType = dict.get("ShadingType");
     const bbox = dict.getArray("BBox");
 
@@ -45181,7 +45982,7 @@ class MeshShading extends BaseShading {
   }
 
   getIR() {
-    return ["Mesh", this.shadingType, this.coords, this.colors, this.figures, this.bounds, this.matrix, 
this.bbox, this.background];
+    return ["Mesh", this.shadingType, this.coords, this.colors, this.figures, this.bounds, this.bbox, 
this.background];
   }
 
 }
@@ -45211,7 +46012,7 @@ function getTilingPatternIR(operatorList, dict, color) {
 }
 
 /***/ }),
-/* 50 */
+/* 56 */
 /***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
 
 
@@ -45226,9 +46027,9 @@ var _primitives = __w_pdfjs_require__(5);
 
 var _util = __w_pdfjs_require__(2);
 
-var _ps_parser = __w_pdfjs_require__(51);
+var _ps_parser = __w_pdfjs_require__(57);
 
-var _image_utils = __w_pdfjs_require__(52);
+var _image_utils = __w_pdfjs_require__(58);
 
 class PDFFunctionFactory {
   constructor({
@@ -46546,7 +47347,7 @@ const PostScriptCompiler = function PostScriptCompilerClosure() {
 exports.PostScriptCompiler = PostScriptCompiler;
 
 /***/ }),
-/* 51 */
+/* 57 */
 /***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
 
 
@@ -46797,7 +47598,7 @@ class PostScriptLexer {
 exports.PostScriptLexer = PostScriptLexer;
 
 /***/ }),
-/* 52 */
+/* 58 */
 /***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
 
 
@@ -46817,7 +47618,9 @@ class BaseLocalCache {
       (0, _util.unreachable)("Cannot initialize BaseLocalCache.");
     }
 
-    if (!options || !options.onlyRefs) {
+    this._onlyRefs = (options && options.onlyRefs) === true;
+
+    if (!this._onlyRefs) {
       this._nameRefMap = new Map();
       this._imageMap = new Map();
     }
@@ -46826,6 +47629,10 @@ class BaseLocalCache {
   }
 
   getByName(name) {
+    if (this._onlyRefs) {
+      (0, _util.unreachable)("Should not call `getByName` method.");
+    }
+
     const ref = this._nameRefMap.get(name);
 
     if (ref) {
@@ -46912,10 +47719,6 @@ class LocalFunctionCache extends BaseLocalCache {
     });
   }
 
-  getByName(name) {
-    (0, _util.unreachable)("Should not call `getByName` method.");
-  }
-
   set(name = null, ref, data) {
     if (!ref) {
       throw new Error('LocalFunctionCache.set - expected "ref" argument.');
@@ -46962,28 +47765,22 @@ class LocalGStateCache extends BaseLocalCache {
 exports.LocalGStateCache = LocalGStateCache;
 
 class LocalTilingPatternCache extends BaseLocalCache {
-  set(name, ref = null, data) {
-    if (typeof name !== "string") {
-      throw new Error('LocalTilingPatternCache.set - expected "name" argument.');
-    }
-
-    if (ref) {
-      if (this._imageCache.has(ref)) {
-        return;
-      }
-
-      this._nameRefMap.set(name, ref);
-
-      this._imageCache.put(ref, data);
+  constructor(options) {
+    super({
+      onlyRefs: true
+    });
+  }
 
-      return;
+  set(name = null, ref, data) {
+    if (!ref) {
+      throw new Error('LocalTilingPatternCache.set - expected "ref" argument.');
     }
 
-    if (this._imageMap.has(name)) {
+    if (this._imageCache.has(ref)) {
       return;
     }
 
-    this._imageMap.set(name, data);
+    this._imageCache.put(ref, data);
   }
 
 }
@@ -47123,7 +47920,7 @@ class GlobalImageCache {
 exports.GlobalImageCache = GlobalImageCache;
 
 /***/ }),
-/* 53 */
+/* 59 */
 /***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
 
 
@@ -47190,7 +47987,7 @@ function createBidiText(str, isLTR, vertical = false) {
 const chars = [];
 const types = [];
 
-function bidi(str, startLevel, vertical) {
+function bidi(str, startLevel = -1, vertical = false) {
   let isLTR = true;
   const strLength = str.length;
 
@@ -47434,7 +48231,7 @@ function bidi(str, startLevel, vertical) {
 }
 
 /***/ }),
-/* 54 */
+/* 60 */
 /***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
 
 
@@ -50386,299 +51183,6 @@ const getMetrics = (0, _core_utils.getLookupTableFactory)(function (t) {
 });
 exports.getMetrics = getMetrics;
 
-/***/ }),
-/* 55 */
-/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
-
-
-
-Object.defineProperty(exports, "__esModule", ({
-  value: true
-}));
-exports.getXfaFontName = getXfaFontName;
-exports.getXfaFontWidths = getXfaFontWidths;
-
-var _calibri_factors = __w_pdfjs_require__(56);
-
-var _helvetica_factors = __w_pdfjs_require__(57);
-
-var _liberationsans_widths = __w_pdfjs_require__(58);
-
-var _myriadpro_factors = __w_pdfjs_require__(59);
-
-var _segoeui_factors = __w_pdfjs_require__(60);
-
-var _core_utils = __w_pdfjs_require__(9);
-
-var _fonts_utils = __w_pdfjs_require__(38);
-
-const getXFAFontMap = (0, _core_utils.getLookupTableFactory)(function (t) {
-  t["MyriadPro-Regular"] = t["PdfJS-Fallback-Regular"] = {
-    name: "LiberationSans-Regular",
-    factors: _myriadpro_factors.MyriadProRegularFactors,
-    baseWidths: _liberationsans_widths.LiberationSansRegularWidths,
-    lineHeight: _myriadpro_factors.MyriadProRegularLineHeight
-  };
-  t["MyriadPro-Bold"] = t["PdfJS-Fallback-Bold"] = {
-    name: "LiberationSans-Bold",
-    factors: _myriadpro_factors.MyriadProBoldFactors,
-    baseWidths: _liberationsans_widths.LiberationSansBoldWidths,
-    lineHeight: _myriadpro_factors.MyriadProBoldLineHeight
-  };
-  t["MyriadPro-It"] = t["MyriadPro-Italic"] = t["PdfJS-Fallback-Italic"] = {
-    name: "LiberationSans-Italic",
-    factors: _myriadpro_factors.MyriadProItalicFactors,
-    baseWidths: _liberationsans_widths.LiberationSansItalicWidths,
-    lineHeight: _myriadpro_factors.MyriadProItalicLineHeight
-  };
-  t["MyriadPro-BoldIt"] = t["MyriadPro-BoldItalic"] = t["PdfJS-Fallback-BoldItalic"] = {
-    name: "LiberationSans-BoldItalic",
-    factors: _myriadpro_factors.MyriadProBoldItalicFactors,
-    baseWidths: _liberationsans_widths.LiberationSansBoldItalicWidths,
-    lineHeight: _myriadpro_factors.MyriadProBoldItalicLineHeight
-  };
-  t.ArialMT = t.Arial = t["Arial-Regular"] = {
-    name: "LiberationSans-Regular",
-    baseWidths: _liberationsans_widths.LiberationSansRegularWidths
-  };
-  t["Arial-BoldMT"] = t["Arial-Bold"] = {
-    name: "LiberationSans-Bold",
-    baseWidths: _liberationsans_widths.LiberationSansBoldWidths
-  };
-  t["Arial-ItalicMT"] = t["Arial-Italic"] = {
-    name: "LiberationSans-Italic",
-    baseWidths: _liberationsans_widths.LiberationSansItalicWidths
-  };
-  t["Arial-BoldItalicMT"] = t["Arial-BoldItalic"] = {
-    name: "LiberationSans-BoldItalic",
-    baseWidths: _liberationsans_widths.LiberationSansBoldItalicWidths
-  };
-  t["Calibri-Regular"] = {
-    name: "LiberationSans-Regular",
-    factors: _calibri_factors.CalibriRegularFactors,
-    baseWidths: _liberationsans_widths.LiberationSansRegularWidths,
-    lineHeight: _calibri_factors.CalibriRegularLineHeight
-  };
-  t["Calibri-Bold"] = {
-    name: "LiberationSans-Bold",
-    factors: _calibri_factors.CalibriBoldFactors,
-    baseWidths: _liberationsans_widths.LiberationSansBoldWidths,
-    lineHeight: _calibri_factors.CalibriBoldLineHeight
-  };
-  t["Calibri-Italic"] = {
-    name: "LiberationSans-Italic",
-    factors: _calibri_factors.CalibriItalicFactors,
-    baseWidths: _liberationsans_widths.LiberationSansItalicWidths,
-    lineHeight: _calibri_factors.CalibriItalicLineHeight
-  };
-  t["Calibri-BoldItalic"] = {
-    name: "LiberationSans-BoldItalic",
-    factors: _calibri_factors.CalibriBoldItalicFactors,
-    baseWidths: _liberationsans_widths.LiberationSansBoldItalicWidths,
-    lineHeight: _calibri_factors.CalibriBoldItalicLineHeight
-  };
-  t["Segoeui-Regular"] = {
-    name: "LiberationSans-Regular",
-    factors: _segoeui_factors.SegoeuiRegularFactors,
-    baseWidths: _liberationsans_widths.LiberationSansRegularWidths,
-    lineHeight: _segoeui_factors.SegoeuiRegularLineHeight
-  };
-  t["Segoeui-Bold"] = {
-    name: "LiberationSans-Bold",
-    factors: _segoeui_factors.SegoeuiBoldFactors,
-    baseWidths: _liberationsans_widths.LiberationSansBoldWidths,
-    lineHeight: _segoeui_factors.SegoeuiBoldLineHeight
-  };
-  t["Segoeui-Italic"] = {
-    name: "LiberationSans-Italic",
-    factors: _segoeui_factors.SegoeuiItalicFactors,
-    baseWidths: _liberationsans_widths.LiberationSansItalicWidths,
-    lineHeight: _segoeui_factors.SegoeuiItalicLineHeight
-  };
-  t["Segoeui-BoldItalic"] = {
-    name: "LiberationSans-BoldItalic",
-    factors: _segoeui_factors.SegoeuiBoldItalicFactors,
-    baseWidths: _liberationsans_widths.LiberationSansBoldItalicWidths,
-    lineHeight: _segoeui_factors.SegoeuiBoldItalicLineHeight
-  };
-  t["Helvetica-Regular"] = t.Helvetica = {
-    name: "LiberationSans-Regular",
-    factors: _helvetica_factors.HelveticaRegularFactors,
-    baseWidths: _liberationsans_widths.LiberationSansRegularWidths,
-    lineHeight: _helvetica_factors.HelveticaRegularLineHeight
-  };
-  t["Helvetica-Bold"] = {
-    name: "LiberationSans-Bold",
-    factors: _helvetica_factors.HelveticaBoldFactors,
-    baseWidths: _liberationsans_widths.LiberationSansBoldWidths,
-    lineHeight: _helvetica_factors.HelveticaBoldLineHeight
-  };
-  t["Helvetica-Italic"] = {
-    name: "LiberationSans-Italic",
-    factors: _helvetica_factors.HelveticaItalicFactors,
-    baseWidths: _liberationsans_widths.LiberationSansItalicWidths,
-    lineHeight: _helvetica_factors.HelveticaItalicLineHeight
-  };
-  t["Helvetica-BoldItalic"] = {
-    name: "LiberationSans-BoldItalic",
-    factors: _helvetica_factors.HelveticaBoldItalicFactors,
-    baseWidths: _liberationsans_widths.LiberationSansBoldItalicWidths,
-    lineHeight: _helvetica_factors.HelveticaBoldItalicLineHeight
-  };
-});
-
-function getXfaFontName(name) {
-  const fontName = (0, _fonts_utils.normalizeFontName)(name);
-  const fontMap = getXFAFontMap();
-  return fontMap[fontName];
-}
-
-function getXfaFontWidths(name) {
-  const info = getXfaFontName(name);
-
-  if (!info) {
-    return null;
-  }
-
-  const {
-    baseWidths,
-    factors
-  } = info;
-
-  if (!factors) {
-    return baseWidths;
-  }
-
-  return baseWidths.map((w, i) => w * factors[i]);
-}
-
-/***/ }),
-/* 56 */
-/***/ ((__unused_webpack_module, exports) => {
-
-
-
-Object.defineProperty(exports, "__esModule", ({
-  value: true
-}));
-exports.CalibriRegularLineHeight = exports.CalibriRegularFactors = exports.CalibriItalicLineHeight = 
exports.CalibriItalicFactors = exports.CalibriBoldLineHeight = exports.CalibriBoldItalicLineHeight = 
exports.CalibriBoldItalicFactors = exports.CalibriBoldFactors = void 0;
-const CalibriBoldFactors = [1.3877, 1, 0.83908, 0.77539, 0.77539, 0.83908, 0.83908, 0.83908, 0.83908, 
0.83908, 0.83908, 0.83908, 0.83908, 0.83908, 0.83908, 0.83908, 0.83908, 0.7762, 0.7762, 0.73293, 0.73293, 
0.73293, 0.73293, 0.73293, 0.73293, 0.82577, 0.87289, 0.87289, 0.88506, 0.80367, 0.73133, 0.73133, 0.73133, 
0.73133, 0.73133, 0.73133, 0.73133, 0.73133, 0.73133, 0.88656, 0.73133, 0.73133, 0.57184, 0.87356, 0.6965, 
0.88506, 0.91133, 0.7514, 0.81921, 0.68156, 0.81921, 0.81921, 1, 0.81921, 0.87356, 1, 0.99862, 0.99862, 1, 
0.91075, 0.87356, 0.95958, 0.76229, 0.95958, 0.95958, 0.95958, 0.95958, 0.95958, 0.95958, 0.95958, 0.95958, 
0.95958, 0.95958, 0.56289, 0.95958, 0.59526, 0.59526, 0.75727, 0.75727, 1, 0.69225, 0.69225, 0.89019, 
0.70424, 1, 0.91926, 0.70823, 1.04924, 1.04924, 0.9121, 0.9121, 0.9121, 1, 0.9121, 0.9121, 0.86943, 0.87402, 
0.86943, 0.86943, 0.86943, 0.86943, 0.86943, 0.86943, 0.86943, 0.84896, 0.81235, 0.86943, 0.82001, 0.87508, 
0.87508, 0.86943, 0.79795, 0.9762, 0.873
 56, 0.99819, 0.88198, 0.77958, 0.77958, 0.77958, 1, 0.79795, 0.70864, 0.70572, 0.70572, 0.70572, 0.70572, 1, 
1, 1, 1, 1, 0.70572, 0.8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 0.70864, 0.70864, 0.70864, 0.70864, 1, 0.78275, 0.81055, 0.81055, 0.81055, 0.81055, 1, 0.86943, 0.79795, 
0.90399, 0.90399, 0.90399, 0.90399, 0.90399, 0.90399, 0.90399, 0.90399, 0.90399, 0.77892, 0.77892, 0.56029, 
0.90399, 0.90399, 0.88653, 0.96017, 0.96017, 0.96017, 0.96017, 0.96017, 0.82577, 0.7648, 0.77892, 0.77892, 
0.77892, 0.77892, 0.77892, 0.78257, 0.78257, 0.78257, 0.78257, 0.78257, 0.88762, 0.88762, 0.88762, 0.88762, 
0.90323, 1, 0.88762, 0.8715, 0.8715, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 0.88762, 0
 .96108, 0.96108, 0.88762, 0.97566, 0.80352, 0.88762, 0.90747, 0.88762, 0.88762, 1.31006, 1.81055, 0.90527, 
0.90527, 1.81055, 1.53711, 0.94434, 0.85284, 0.85284, 1.2798, 0.92138, 0.88762, 0.8785, 1.54657, 1.69808, 
0.8936, 1, 0.88331, 0.88331, 0.97507, 0.97507, 1.15543, 1, 1.7801, 1.42259, 0.75241, 0.75241, 1.20528, 1, 1, 
0.75241, 0.75241, 0.75241, 0.75241, 0.91056, 0.89552, 0.78287, 0.91027, 1.20528, 1, 1, 0.82845, 0.92794, 1, 
1, 1.13254, 0.89552, 1, 0.8785, 0.89552, 0.89552, 0.83016, 0.93125, 0.85592, 0.87842, 1, 1.24487, 1, 1.06303, 
0.90747, 1, 1, 0.91133, 0.70674, 0.88401, 0.90518, 0.90518, 0.90518, 0.90518, 0.90518, 0.90518, 0.90518, 
0.90518, 0.91133, 1, 0.71143, 0.90518, 0.90527, 0.89552, 0.8785, 0.90518, 0.96399, 1.01407, 0.85284, 0.85356, 
1.23108, 0.89049, 0.89049, 0.8785, 0.97801, 0.97171, 0.97801, 0.95015, 1, 1, 1, 0.91133, 0.88525, 1, 0.56892, 
0.91133, 1, 0.83406, 0.77618, 0.84021, 0.77618, 0.77618, 1, 0.77618, 0.90807, 0.90176, 1, 0.85284, 0.90747, 
0.96839, 0.96839, 1.0337
 2, 1.03372, 0.8785, 0.89608, 0.8785, 1, 1.44947, 1.45894, 1, 0.88401, 0.88401, 0.88401, 0.88401, 0.88401, 
0.88401, 0.90167, 0.88401, 1.17534, 1.37077, 0.8941, 0.8941, 0.9716, 1, 1, 1, 0.88401, 1.02988, 1.02988, 
1.02988, 1.02988, 0.88401, 0.91916, 0.91916, 0.86304, 0.86077, 1, 0.86304, 0.88401, 0.88401, 0.87445, 
0.79468, 1, 0.88175, 0.85284, 0.90747, 1, 0.91133, 0.85284, 0.9297, 1.08004, 0.94903, 1, 0.91488, 0.70645, 1, 
1, 0.85284, 1, 0.92099, 0.85284, 1, 1, 0.8785, 0.8785, 0.87802, 0.8785, 1, 0.91133, 1, 0.90747, 0.8785, 
0.84723, 0.89552, 0.8801, 0.8801, 0.8801, 0.8801, 0.8801, 0.89291, 0.94721, 0.8801, 0.8801, 0.8801, 0.84971, 
0.84971, 0.8801, 0.8801, 0.91133, 0.83489, 0.82845, 0.78864, 0.99862, 1.12401, 1.19118, 0.69825, 0.89049, 
0.89049, 0.8801, 0.8785, 1.07463, 0.93548, 0.93548, 1.08696, 0.81988, 0.96134, 1.06152, 0.84107, 0.97747, 
0.75638, 0.85284, 0.90747, 0.95018, 0.97926, 0.8785, 0.75859, 0.75859, 0.92482, 0.87012, 0.87012, 0.87012, 
0.92794, 0.92794, 0.92794, 0.92794, 0.9815
 2, 0.91343, 0.91343, 0.90747, 0.91343, 1, 0.68787, 0.85284, 0.85714, 0.98387, 1, 0.7173, 0.7173, 0.7173, 
0.7173, 0.7173, 1, 1, 0.89552, 0.91133, 0.81499, 1, 1, 0.79586, 0.78216, 0.91133, 1.54657, 1, 1, 0.91133, 
0.77192, 1, 1.04106, 0.87965, 1.06452, 0.75841, 1, 1.00813, 0.8785, 0.91133, 0.88525, 0.84133, 1.33431, 1, 
0.95161, 0.72021, 1, 1, 1, 1, 0.91133, 0.8785, 0.8785, 0.8785, 0.8785, 0.8785, 0.8785, 0.8785, 0.8785, 
0.89552, 0.90363, 1, 1, 1.01466, 1.0088, 1, 0.75806, 0.81055, 1.04106, 1, 0.82845, 0.73133, 0.90264, 0.90518, 
0.90548, 1, 1, 1.4956, 0.93835, 1, 1, 2.2807, 1, 1, 1, 0.90727, 0.90727, 0.8785, 1, 0.94211, 0.94211, 
0.94211, 0.94211, 0.8785, 0.8785, 0.85075, 0.95794, 0.95794, 0.95794, 0.95794, 0.95794, 0.82616, 0.86513, 
0.85162, 0.85162, 0.85162, 0.85162, 0.91133, 0.85162, 0.79492, 0.79492, 0.79492, 0.79492, 0.91133, 0.79109];
-exports.CalibriBoldFactors = CalibriBoldFactors;
-const CalibriBoldLineHeight = 1.2207;
-exports.CalibriBoldLineHeight = CalibriBoldLineHeight;
-const CalibriBoldItalicFactors = [1.3877, 1, 0.83908, 0.77539, 0.77539, 0.83908, 0.83908, 0.83908, 0.83908, 
0.83908, 0.83908, 0.83908, 0.83908, 0.83908, 0.83908, 0.83908, 0.83908, 0.7762, 0.7762, 0.71805, 0.71805, 
0.71805, 0.71805, 0.71805, 0.71805, 0.82577, 0.87289, 0.87289, 0.88506, 0.86036, 0.73133, 0.73133, 0.73133, 
0.73133, 0.73133, 0.73133, 0.73133, 0.73133, 0.73133, 0.88116, 0.73133, 0.73133, 0.57118, 0.87356, 0.6965, 
0.88506, 0.91133, 0.7514, 0.81921, 0.67174, 0.81921, 0.81921, 1, 0.81921, 0.87356, 1, 0.99862, 0.99862, 1, 
0.91075, 0.87356, 0.95958, 0.76467, 0.95958, 0.95958, 0.95958, 0.95958, 0.95958, 0.95958, 0.95958, 0.95958, 
0.95958, 0.95958, 0.56347, 0.95958, 0.59526, 0.59526, 0.75727, 0.75727, 1, 0.69225, 0.69225, 0.89019, 
0.70424, 1, 0.91926, 0.70823, 1.04924, 1.04924, 0.90872, 0.90872, 0.90872, 1, 0.90872, 0.90872, 0.85938, 
0.87402, 0.85938, 0.85938, 0.85938, 0.85938, 0.85938, 0.85938, 0.85938, 0.87179, 0.80346, 0.85938, 0.79179, 
0.87068, 0.87068, 0.85938, 0.79795, 0.
 97447, 0.87891, 0.97466, 0.87068, 0.77958, 0.77958, 0.77958, 1, 0.79795, 0.69766, 0.70572, 0.70572, 0.70572, 
0.70572, 1, 1, 1, 1, 1, 0.70572, 0.8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 0.69766, 0.69766, 0.69766, 0.69766, 1, 0.7957, 0.81055, 0.81055, 0.81055, 0.81055, 1, 0.86441, 
0.79795, 0.90399, 0.90399, 0.90399, 0.90399, 0.90399, 0.90399, 0.90399, 0.90399, 0.90399, 0.77892, 0.77892, 
0.55853, 0.90399, 0.90399, 0.88653, 0.96068, 0.96068, 0.96068, 0.96068, 0.96068, 0.82577, 0.74889, 0.77892, 
0.77892, 0.77892, 0.77892, 0.77892, 0.78257, 0.78257, 0.78257, 0.78257, 0.78257, 0.94908, 0.94908, 0.94908, 
0.94908, 0.90323, 1, 0.94908, 0.85887, 0.85887, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1,
  1, 0.94908, 0.94252, 0.94252, 0.94908, 0.97566, 0.80352, 0.94908, 0.90747, 0.94908, 0.94908, 1.3107, 
1.81055, 0.90616, 0.90527, 1.81055, 1.53711, 0.94434, 0.85284, 0.85284, 1.2798, 0.92138, 0.94908, 0.86411, 
1.529, 1.69808, 0.87411, 1, 0.88331, 0.88331, 0.97507, 0.97507, 1.15543, 1, 1.7801, 1.42259, 0.74012, 
0.74012, 1.20528, 1, 1, 0.74012, 0.74012, 0.74012, 0.74012, 0.91056, 0.89552, 0.78022, 0.91027, 1.20528, 1, 
1, 0.82845, 0.92794, 1, 1, 1.13254, 0.89552, 1, 0.86411, 0.89552, 0.89552, 0.79538, 0.92726, 0.85592, 0.8728, 
1, 1.24487, 1, 1.48387, 0.90747, 1, 1, 0.91133, 0.70088, 0.88401, 0.88323, 0.88323, 0.88323, 0.88323, 
0.88323, 0.88323, 0.88323, 0.88323, 0.91133, 1, 0.71094, 0.88323, 0.90527, 0.89552, 0.86331, 0.88323, 
0.95612, 0.95612, 0.85284, 0.85356, 1.23108, 0.8753, 0.8753, 0.8785, 0.97801, 0.97171, 0.97801, 0.95015, 1, 
1, 1, 0.91133, 0.88525, 1, 0.56892, 0.91133, 1, 0.83406, 0.86411, 0.84021, 0.86411, 0.86411, 1, 0.86411, 
0.90807, 0.90176, 1, 0.85284, 0.90747, 0.96839, 0.9
 6839, 1.03372, 1.03372, 0.86331, 0.8777, 0.86331, 1, 1.44947, 1.45894, 1, 0.88401, 0.88401, 0.88401, 
0.88401, 0.88401, 0.88401, 0.90167, 0.88401, 1.17534, 1.37077, 0.8941, 0.8941, 0.9716, 1, 1, 1, 0.88401, 
1.02988, 1.02988, 1.02988, 1.02988, 0.88401, 0.91916, 0.91916, 0.86304, 0.84814, 1, 0.86304, 0.88401, 
0.88401, 0.87445, 0.77312, 1, 0.88175, 0.85284, 0.90747, 1, 0.91133, 0.85284, 0.9297, 1.08004, 0.94903, 1, 
0.9039, 0.70645, 1, 1, 0.85284, 1, 0.91822, 0.85284, 1, 1, 0.86331, 0.86331, 0.86906, 0.86331, 1, 0.91133, 1, 
0.90747, 0.86331, 0.84723, 0.89552, 0.86331, 0.86331, 0.86331, 0.86331, 0.86331, 0.86549, 0.94721, 0.86331, 
0.86331, 0.86331, 0.86015, 0.86015, 0.86331, 0.86331, 0.91133, 0.83489, 0.82845, 0.78864, 0.99862, 1.19129, 
1.19118, 0.69825, 0.89049, 0.89049, 0.86331, 0.86411, 1.07463, 0.93548, 0.93548, 1.08696, 0.81988, 0.96134, 
1.06152, 0.83326, 0.99375, 0.81344, 0.85284, 0.90747, 0.95018, 0.95452, 0.86411, 0.75859, 0.75859, 0.92482, 
0.87012, 0.87012, 0.87012, 0.92794, 0.89
 807, 0.92794, 0.92794, 0.98152, 0.90464, 0.90464, 0.90747, 0.90464, 1, 0.68787, 0.85284, 0.87581, 0.98387, 
1, 0.70852, 0.70852, 0.70852, 0.70852, 0.70852, 1, 1, 0.89552, 0.91133, 0.81499, 1, 1, 0.82046, 0.76422, 
0.91133, 1.56239, 1, 1, 0.91133, 0.77192, 1, 1.04106, 0.96057, 1.06452, 0.75841, 1, 1.02189, 0.86411, 
0.91133, 0.88525, 0.84133, 1.33431, 1, 0.95161, 0.72021, 1, 1, 1, 1, 0.91133, 0.86331, 0.86331, 0.86331, 
0.86331, 0.86331, 0.86331, 0.86331, 0.86331, 0.89552, 0.90363, 1, 1, 1.01466, 1.0088, 1, 0.75806, 0.81055, 
1.04106, 1, 0.82845, 0.73133, 0.90631, 0.88323, 0.85174, 1, 1, 1.4956, 0.92972, 1, 1, 2.2807, 1, 1, 1, 
0.90727, 0.90727, 0.86331, 1, 0.92733, 0.92733, 0.92733, 0.92733, 0.86331, 0.86331, 0.84372, 0.95794, 
0.95794, 0.95794, 0.95794, 0.95794, 0.82616, 0.85668, 0.84548, 0.84548, 0.84548, 0.84548, 0.91133, 0.84548, 
0.79492, 0.79492, 0.79492, 0.79492, 0.91133, 0.74081];
-exports.CalibriBoldItalicFactors = CalibriBoldItalicFactors;
-const CalibriBoldItalicLineHeight = 1.2207;
-exports.CalibriBoldItalicLineHeight = CalibriBoldItalicLineHeight;
-const CalibriItalicFactors = [1.3877, 1, 0.8675, 0.76318, 0.76318, 0.8675, 0.8675, 0.8675, 0.8675, 0.8675, 
0.8675, 0.8675, 0.8675, 0.8675, 0.8675, 0.8675, 0.8675, 0.81552, 0.81552, 0.72346, 0.72346, 0.72346, 0.72346, 
0.72346, 0.72346, 0.77818, 0.85193, 0.85193, 0.86477, 0.84134, 0.73206, 0.73206, 0.73206, 0.73206, 0.73206, 
0.73206, 0.73206, 0.73206, 0.73206, 0.86698, 0.73206, 0.73206, 0.6192, 0.86275, 0.7363, 0.86477, 0.91133, 
0.7522, 0.81105, 0.7286, 0.81105, 0.81105, 1, 0.81105, 0.86275, 1, 0.99862, 0.99862, 1, 0.90872, 0.86275, 
0.90685, 0.77896, 0.90685, 0.90685, 0.90685, 0.90685, 0.90685, 0.90685, 0.90685, 0.90685, 0.90685, 0.90685, 
0.64824, 0.90685, 0.6377, 0.6377, 0.77892, 0.77892, 1, 0.75593, 0.75593, 0.85871, 0.76032, 1, 0.98156, 
0.77261, 1.02638, 1.02638, 0.89249, 0.89249, 0.89249, 1, 0.89249, 0.89249, 0.84118, 0.8667, 0.84118, 0.84118, 
0.84118, 0.84118, 0.84118, 0.84118, 0.84118, 0.87291, 0.85696, 0.84118, 0.82411, 0.84557, 0.84557, 0.84118, 
0.77452, 0.90782, 0.85984, 0.90
 3, 0.85374, 0.75186, 0.75186, 0.75186, 1, 0.77452, 0.67789, 0.70572, 0.70572, 0.70572, 0.70572, 1, 1, 1, 1, 
1, 0.70572, 0.8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
0.67789, 0.67789, 0.67789, 0.67789, 1, 0.76466, 0.79776, 0.79776, 0.79776, 0.79776, 1, 0.84369, 0.77452, 
0.88844, 0.88844, 0.88844, 0.88844, 0.88844, 0.88844, 0.88844, 0.88844, 0.88844, 0.7306, 0.7306, 0.56321, 
0.88844, 0.88844, 0.85066, 0.94309, 0.94309, 0.94309, 0.94309, 0.94309, 0.77818, 0.75828, 0.7306, 0.7306, 
0.7306, 0.7306, 0.7306, 0.76659, 0.76659, 0.76659, 0.76659, 0.76659, 0.9245, 0.9245, 0.9245, 0.9245, 0.87683, 
1, 0.9245, 0.84843, 0.84843, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 0.9245, 0.99058, 0.99058, 0.9
 245, 1.02269, 0.90861, 0.9245, 0.90747, 0.9245, 0.9245, 1.28809, 1.81055, 0.90572, 0.90749, 1.81055, 
1.55469, 0.94434, 1.06139, 0.85284, 1.2798, 0.88071, 0.9245, 0.9245, 1.38313, 1.77256, 0.92393, 1, 0.94152, 
0.94152, 1.10369, 1.10369, 1.1437, 1, 1.91729, 1.42259, 0.83203, 0.83203, 1.18622, 1, 1, 0.83203, 0.83203, 
0.83203, 0.83203, 0.92229, 0.89552, 0.78086, 0.91027, 1.18622, 1, 1, 0.96309, 0.89807, 1, 1, 1.13254, 
0.89552, 1, 0.9245, 0.89552, 0.89552, 0.8875, 0.99034, 0.84737, 0.942, 1, 1.17889, 1, 1.48387, 0.90747, 1, 1, 
0.91133, 0.67009, 0.82601, 0.85865, 0.85865, 0.85865, 0.85865, 0.85865, 0.85865, 0.85865, 0.85865, 0.91133, 
1, 0.68994, 0.85865, 0.90527, 0.89552, 0.9245, 0.85865, 1.03667, 1.03667, 0.85284, 0.85284, 1.23108, 0.94635, 
0.94635, 0.94469, 1.17223, 1.11523, 0.97801, 1.09842, 1, 1, 1, 0.91133, 0.84426, 1, 0.54873, 0.91133, 1, 
0.82616, 0.9245, 0.8916, 0.9245, 0.9245, 1, 0.9245, 0.86331, 0.8739, 1, 0.85284, 0.90747, 0.92098, 0.92098, 
1.0176, 1.0176, 0.9245, 0.93591, 0.924
 5, 1, 1.44947, 1.40909, 1, 1.03297, 0.82601, 0.82601, 0.82601, 0.82601, 0.82601, 1.05611, 0.82601, 1.19658, 
1.33512, 0.8941, 0.8941, 0.97622, 1, 1, 1, 1.03297, 1.23516, 1.23516, 1.23516, 1.23516, 0.82601, 1.07692, 
1.07692, 0.90918, 0.90918, 1, 0.90918, 1.03297, 1.03297, 0.94048, 0.9375, 1, 0.93407, 0.85284, 0.90747, 1, 
0.91133, 0.85284, 1.09231, 1.0336, 1.11429, 1, 0.94959, 0.71353, 1, 1, 0.85284, 1, 0.98217, 0.85284, 1, 1, 
0.9245, 0.9245, 0.92534, 0.9245, 1, 0.91133, 1, 0.90747, 0.9245, 0.89746, 0.89552, 0.92274, 0.92274, 0.92274, 
0.92274, 0.92274, 0.86291, 0.93695, 0.92274, 0.92274, 0.92274, 0.89404, 0.89404, 0.92274, 0.92274, 0.91133, 
0.79801, 0.80504, 0.76288, 0.99862, 1.16359, 1.15642, 0.69825, 0.86651, 0.86651, 0.92274, 0.9245, 1.09091, 
0.91056, 0.91056, 1.07806, 0.80395, 0.90861, 1.03809, 0.83437, 1.00225, 0.82507, 0.85284, 0.90747, 0.97094, 
0.97248, 0.9245, 0.83319, 0.75859, 1.1293, 1.2566, 1.2566, 1.2566, 1.12308, 1.12308, 1.12308, 1.12308, 
1.15601, 1.02933, 1.02933, 0.9074
 7, 1.02933, 1, 0.68787, 0.85284, 0.88832, 0.96334, 1, 0.77832, 0.77832, 0.77832, 0.77832, 0.77832, 1, 1, 
0.89552, 0.91133, 0.774, 1, 1, 0.88178, 0.84438, 0.91133, 1.39543, 1, 1, 0.91133, 0.7589, 1, 1.20562, 
1.03525, 1.23023, 0.97655, 1, 1.0297, 0.9245, 0.91133, 0.84426, 0.80972, 1.35191, 1, 0.95161, 0.70508, 1, 1, 
1, 1, 0.91133, 0.9245, 0.9245, 0.9245, 0.9245, 0.9245, 0.9245, 0.9245, 0.9245, 0.89552, 0.90186, 1, 1, 
1.0088, 1.0044, 1, 0.739, 0.79776, 1.20562, 1, 0.96309, 0.73206, 0.89693, 0.85865, 0.90933, 1, 1, 1.4956, 
0.97858, 1, 1, 2.01462, 1, 1, 1, 1.05859, 1.05859, 0.9245, 1, 0.9849, 0.9849, 0.9849, 0.9849, 0.9245, 0.9245, 
0.8916, 0.98986, 0.98986, 0.98986, 0.98986, 0.98986, 0.86621, 0.84153, 0.89453, 0.89453, 0.89453, 0.89453, 
0.91133, 0.89453, 0.79004, 0.79004, 0.79004, 0.79004, 0.91133, 0.75026];
-exports.CalibriItalicFactors = CalibriItalicFactors;
-const CalibriItalicLineHeight = 1.2207;
-exports.CalibriItalicLineHeight = CalibriItalicLineHeight;
-const CalibriRegularFactors = [1.3877, 1, 0.8675, 0.76318, 0.76318, 0.8675, 0.8675, 0.8675, 0.8675, 0.8675, 
0.8675, 0.86686, 0.8675, 0.8675, 0.8675, 0.8675, 0.8675, 0.81552, 0.81552, 0.73834, 0.73834, 0.73834, 
0.73834, 0.73834, 0.73834, 0.77818, 0.85193, 0.85193, 0.86477, 0.84503, 0.73206, 0.73206, 0.73206, 0.73206, 
0.73206, 0.73206, 0.73206, 0.73206, 0.73206, 0.86901, 0.73206, 0.73206, 0.62267, 0.86275, 0.74359, 0.86477, 
0.91133, 0.7522, 0.81105, 0.75443, 0.81105, 0.81105, 1, 0.81105, 0.86275, 1, 0.99862, 0.99862, 1, 0.90872, 
0.86275, 0.90685, 0.77741, 0.90685, 0.90685, 0.90685, 0.90685, 0.90685, 0.90685, 0.90685, 0.90685, 0.90685, 
0.90685, 0.65649, 0.90685, 0.6377, 0.6377, 0.77892, 0.77892, 1, 0.75593, 0.75593, 0.85746, 0.76032, 1, 
0.98156, 0.77261, 1.02638, 1.02638, 0.89385, 0.89385, 0.89385, 1, 0.89385, 0.89385, 0.85122, 0.8667, 0.85122, 
0.85122, 0.85122, 0.85122, 0.85122, 0.85122, 0.85122, 0.88831, 0.88254, 0.85122, 0.85498, 0.85311, 0.85311, 
0.85122, 0.77452, 0.95165, 0.86275,
  0.89772, 0.86503, 0.75186, 0.75186, 0.75186, 1, 0.77452, 0.68887, 0.70572, 0.70572, 0.70572, 0.70572, 1, 1, 
1, 1, 1, 0.70572, 0.8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
0.68887, 0.68887, 0.68887, 0.68887, 1, 0.74171, 0.79776, 0.79776, 0.79776, 0.79776, 1, 0.85122, 0.77452, 
0.88844, 0.88844, 0.88844, 0.88844, 0.88844, 0.88844, 0.88844, 0.88844, 0.88844, 0.7306, 0.7306, 0.56963, 
0.88844, 0.88844, 0.85066, 0.94258, 0.94258, 0.94258, 0.94258, 0.94258, 0.77818, 0.75657, 0.7306, 0.7306, 
0.7306, 0.7306, 0.7306, 0.76659, 0.76659, 0.76659, 0.76659, 0.76659, 0.86128, 0.86128, 0.86128, 0.86128, 
0.87683, 0.86128, 0.8693, 0.8693, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 0.86128, 0.98142, 0.98
 142, 0.86128, 1.02269, 0.90861, 0.86128, 0.90747, 0.86128, 0.86128, 1.28809, 1.81055, 0.90527, 0.90527, 
1.81055, 1.55469, 0.94434, 1.06139, 0.85284, 1.2798, 0.88071, 0.86128, 0.94469, 1.39016, 1.77256, 0.9236, 1, 
0.94152, 0.94152, 1.10369, 1.10369, 1.1437, 1.91729, 1.42259, 0.8457, 0.8457, 1.18622, 0.8457, 0.8457, 
0.8457, 0.8457, 0.92229, 0.89552, 0.81209, 0.91027, 1.18622, 1, 0.96309, 0.89807, 1.13254, 0.89552, 0.94469, 
0.89552, 0.89552, 0.92454, 0.9921, 0.84737, 0.94035, 1, 1.17889, 1.48387, 0.90747, 1, 1, 0.91133, 0.67742, 
0.82601, 0.89464, 0.89464, 0.89464, 0.89464, 0.89464, 0.89464, 0.89464, 0.89464, 0.91133, 0.69043, 0.89464, 
0.90527, 0.89552, 0.94469, 0.89464, 1.02191, 1.02191, 0.85284, 0.85356, 1.23108, 0.96576, 0.96576, 0.94469, 
1.17223, 1.11523, 0.97801, 1.09842, 1, 1, 1, 0.91133, 0.84426, 0.54873, 0.91133, 0.82616, 0.84636, 0.89258, 
0.84636, 0.84636, 1, 0.84636, 0.86331, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.8739, 0.85284, 0.90747, 0.92098, 
0.92098, 1.0176, 1.0176, 0.94469, 
 0.95786, 0.94469, 1, 1.44947, 1.40909, 1.03297, 0.82601, 0.82601, 0.82601, 0.82601, 0.82601, 1.05611, 
0.82601, 1.19658, 1.33512, 0.8941, 0.8941, 0.97622, 1, 1, 1, 1.03297, 1.23516, 1.23516, 1.23516, 1.23516, 
0.82601, 1.07692, 1.07692, 0.90918, 0.90918, 1, 0.90918, 1.03297, 1.03297, 0.92578, 0.90452, 1, 1.11842, 
0.85284, 0.90747, 1, 0.91133, 0.85284, 1.09231, 1.0336, 1.11429, 1, 0.95897, 0.71353, 1, 1, 0.85284, 1, 
0.95424, 0.85284, 1, 1, 0.94469, 0.94469, 0.95877, 0.94469, 1, 0.91133, 1, 0.90747, 0.94469, 0.89746, 
0.89552, 0.9482, 0.9482, 0.9482, 0.9482, 0.9482, 0.90016, 0.93695, 0.9482, 0.9482, 0.9482, 0.89181, 0.89181, 
0.9482, 0.9482, 0.91133, 0.79801, 0.80504, 0.76288, 0.99862, 1.08707, 1.15642, 0.69825, 0.86651, 0.86651, 
0.9482, 0.94469, 1.09091, 0.91056, 0.91056, 1.07806, 0.80395, 0.90861, 1.03809, 0.84286, 1.00452, 0.80113, 
0.85284, 0.90747, 0.97094, 0.99247, 0.94469, 0.83319, 0.75859, 1.1293, 1.2566, 1.2566, 1.2566, 1.12308, 
1.12308, 1.12308, 1.12308, 1.15601, 1.04692, 1.04692
 , 0.90747, 1.04692, 1, 0.68787, 0.85284, 0.89442, 0.96334, 1, 0.78223, 0.78223, 0.78223, 0.78223, 0.78223, 
1, 1, 0.89552, 0.91133, 0.774, 1, 0.86155, 0.85208, 0.91133, 1.39016, 1, 1, 0.91133, 0.7589, 1, 1.20562, 
0.98022, 1.23023, 0.92188, 1, 0.9561, 0.94469, 0.91133, 0.84426, 0.80972, 1.35191, 0.95161, 0.70508, 1, 1, 1, 
1, 0.91133, 0.94469, 0.94469, 0.94469, 0.94469, 0.94469, 0.94469, 0.94469, 0.94469, 0.89552, 0.90186, 1, 1, 
1.0088, 1.0044, 1, 0.739, 0.79776, 1.20562, 1, 0.96309, 0.73206, 0.88844, 0.89464, 0.96766, 1, 1, 1.4956, 
1.07185, 0.99413, 0.96334, 1.08065, 0.99331, 1, 1, 2.01462, 1, 1, 1, 1, 1.05859, 1.05859, 0.94469, 1, 
0.99018, 0.99018, 0.99018, 0.99018, 0.94469, 0.94469, 0.90332, 0.98986, 0.98986, 0.98986, 0.98986, 0.98986, 
0.86621, 0.83969, 0.90527, 0.90527, 0.90527, 0.90527, 0.91133, 0.90527, 0.79004, 0.79004, 0.79004, 0.79004, 
0.91133, 0.78848];
-exports.CalibriRegularFactors = CalibriRegularFactors;
-const CalibriRegularLineHeight = 1.2207;
-exports.CalibriRegularLineHeight = CalibriRegularLineHeight;
-
-/***/ }),
-/* 57 */
-/***/ ((__unused_webpack_module, exports) => {
-
-
-
-Object.defineProperty(exports, "__esModule", ({
-  value: true
-}));
-exports.HelveticaRegularLineHeight = exports.HelveticaRegularFactors = exports.HelveticaItalicLineHeight = 
exports.HelveticaItalicFactors = exports.HelveticaBoldLineHeight = exports.HelveticaBoldItalicLineHeight = 
exports.HelveticaBoldItalicFactors = exports.HelveticaBoldFactors = void 0;
-const HelveticaBoldFactors = [0.76116, 1, 0.99977, 1, 1, 0.99977, 0.99977, 0.99977, 0.99977, 0.99977, 
0.99977, 0.99977, 0.99977, 0.99977, 0.99977, 0.99977, 0.99977, 0.99977, 0.99977, 0.99977, 0.99977, 0.99977, 
0.99977, 0.99977, 0.99977, 1.00001, 0.99977, 0.99977, 0.99977, 0.85148, 1.00001, 1.00001, 1.00001, 1.00001, 
1.00001, 1.00001, 1.00001, 1.00001, 1.00001, 0.9998, 1.00001, 1.00001, 0.99997, 0.99977, 1.00026, 0.99977, 
0.99973, 1.00026, 1.00022, 0.99988, 1.00022, 1.00022, 1.00022, 1.00022, 0.99977, 0.99999, 0.99861, 0.99861, 
1, 0.99977, 0.99977, 1.0006, 1.00042, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 
1.0006, 1.00078, 1.0006, 0.99973, 0.99973, 0.99977, 0.99977, 0.99977, 1.00026, 1.00026, 1.00001, 1.00026, 
1.00026, 1.00026, 1.00026, 0.99999, 0.99999, 0.99977, 0.99977, 0.99977, 0.99977, 0.99977, 0.99977, 1.00022, 
1, 1.00022, 1.00022, 1.00022, 1.00022, 1.00022, 1.00022, 1.00022, 1, 1.00013, 1.00022, 1.00036, 1.00022, 
1.00022, 1.00022, 1.00001, 1.00024,
  0.99977, 0.9999, 1.00022, 0.99977, 0.99977, 0.99977, 0.99977, 1.00001, 1.00001, 1.41144, 1.41144, 1.41144, 
1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.6, 1.41144, 1.41144, 1.41144, 1.41144, 
1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 
1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 
1.41144, 1.00001, 1.00001, 1.00001, 1.00001, 1.00001, 0.99984, 1.00026, 1.00026, 1.00026, 1.00026, 1.00026, 
1.00022, 1.00001, 0.99977, 0.99977, 0.99977, 0.99977, 0.99977, 0.99977, 0.99977, 0.99977, 0.99977, 1.00001, 
1.00001, 0.99973, 0.99977, 0.99977, 1.00001, 1.00016, 1.00016, 1.00016, 1.00016, 1.00016, 1.00001, 1.00069, 
1.00001, 1.00001, 1.00001, 1.00001, 1.00001, 1.00026, 1.00026, 1.00026, 1.00026, 1.00026, 0.99973, 0.99973, 
0.99973, 0.99973, 0.99998, 1, 0.99973, 0.99982, 0.99982, 1, 0.99977, 1.00035, 0.99977, 1.00019, 0.99944, 
1.00001, 1.00008, 1.00021, 0.999
 26, 1.00035, 1.00035, 0.99942, 1.00048, 0.99999, 0.99977, 1.00022, 1.00035, 1.00001, 0.99977, 1.00026, 
0.99989, 1.00057, 1.00001, 0.99936, 1.00052, 1.00012, 0.99996, 1.00043, 1, 1.00035, 0.9994, 0.99976, 1.00035, 
1.00038, 0.99971, 1.00019, 0.9994, 1.00001, 1.0006, 1.00044, 0.99973, 1.00023, 1.00047, 1, 0.99942, 0.99989, 
0.99973, 1.00052, 1.00041, 1.00119, 1.00037, 0.99973, 0.99973, 1.00002, 0.99986, 1.00041, 1.00041, 0.99902, 
0.9996, 1.00034, 0.99999, 1.00026, 0.99999, 1.00026, 0.99973, 1.00052, 0.99973, 1, 0.99973, 1.00041, 1.00075, 
0.9994, 1.0003, 0.99999, 1, 1.00041, 0.99955, 1, 0.99915, 1.0005, 1.00026, 1.00119, 0.99955, 0.99973, 1.0006, 
0.99911, 1.0006, 1.00026, 0.99972, 1.00026, 0.99902, 0.99973, 1.00035, 1, 0.99999, 1, 0.99971, 1.00047, 
1.00023, 0.99973, 1.00041, 1.00041, 0.99973, 0.99977, 1, 0.99973, 1.00031, 0.99973, 0.99973, 1, 1, 1, 1, 1, 
1, 1, 1.00003, 1.00003, 0.99959, 0.9999, 0.99973, 1.00026, 1.0006, 1.00077, 0.99942, 1.41144, 0.99959, 
0.99959, 0.99998, 0.99998, 0.999
 98, 1, 1.00077, 0.99972, 0.99973, 0.99973, 0.99998, 1, 1, 0.99973, 0.99973, 0.99973, 0.99973, 0.99998, 
0.99973, 1.00055, 0.99999, 0.99998, 1, 0.99962, 0.99998, 1.0006, 1, 1, 1.00025, 0.99973, 1, 1.00026, 0.99973, 
0.99973, 1.03374, 1.00026, 1.00024, 0.99927, 0.9995, 0.99998, 1, 1.00034, 1.06409, 1.36625, 1.41144, 0.99973, 
0.99998, 1.0006, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99998, 1, 
0.99973, 1, 0.99973, 1.00026, 0.99973, 1.00082, 0.99962, 1.00003, 0.99915, 0.99984, 1.00026, 1.00026, 
1.00026, 0.99998, 0.99999, 0.99998, 0.99998, 1, 0.99999, 1, 0.99973, 1.00002, 0.99998, 0.99973, 0.99973, 
0.99998, 0.99973, 1.00026, 0.99973, 1.00026, 1.00026, 1.00026, 1.00026, 1.00026, 0.99998, 1, 1.00003, 
1.00031, 0.99973, 0.99973, 0.99998, 0.99998, 1.00026, 1.00026, 1.00026, 1.00042, 0.99999, 0.99998, 1, 1.0006, 
1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 0.99973, 1.0006, 1.00015, 1.00027, 0.99999, 0.99999, 0.99561, 
0.99999, 0.99999, 0.99977, 1.0006, 1.0006, 
 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 0.99973, 1.00069, 0.99973, 0.99973, 1.0006, 1.0006, 0.99973, 
1.03828, 1.0006, 0.99999, 1.00003, 1.00031, 1.41144, 0.99973, 1.00003, 1.0006, 0.99972, 1.0006, 1.40579, 
0.99982, 0.60299, 1, 1, 1.00003, 1.00106, 0.99867, 1.00003, 1, 1, 1.00026, 1.00026, 0.9993, 1.00026, 1.00026, 
0.99973, 1, 1.00031, 1.00026, 0.99973, 0.99973, 1.00026, 1.00026, 1.00026, 1.00026, 1.00026, 1.00016, 
0.99998, 1.00026, 1.00026, 1.00026, 1.00032, 1.00032, 1.00026, 1.00026, 0.99973, 1.00002, 1.00002, 1.00002, 
1.40483, 0.99968, 0.99936, 1, 1.00026, 1.00026, 1.00026, 1.00026, 0.99973, 0.99998, 0.99998, 0.99972, 
0.99982, 1.0006, 1, 1.00023, 0.99954, 1.00049, 1.00003, 1.06409, 1.20985, 0.99945, 1.00026, 1.00026, 1.00026, 
0.99974, 1, 1, 1, 1.0006, 1.0006, 1.0006, 1.0006, 1.00087, 0.99959, 0.99959, 1.00031, 0.99959, 0.99959, 
1.00025, 1.00003, 1.00056, 0.99998, 1.41144, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99999, 
0.99973, 0.99973, 1.00002, 0.99998, 1.4
 0579, 0.99988, 1, 0.99973, 1.0006, 1, 0.99953, 0.99973, 1.39713, 1.00054, 0.99998, 0.99935, 0.99998, 0.8121, 
0.99998, 1.00087, 1.00026, 0.99973, 1.00002, 1.00002, 0.99998, 1, 0.99998, 1, 1.00026, 1.00026, 1.00026, 
1.00026, 0.99973, 1.00026, 1.00026, 1.00026, 1.00026, 1.00026, 1.00026, 1.00026, 1.00026, 0.99973, 0.99955, 
1.0006, 0.99998, 1, 1, 1, 1, 1.00026, 0.99998, 0.99998, 1, 1.00001, 0.99561, 0.99973, 1.00041, 1, 1, 0.99998, 
1, 0.99991, 1, 1.66475, 1.0006, 1, 1, 1, 1, 1.00026, 1.41144, 0.99995, 0.99995, 0.99995, 0.99995, 1.00026, 
1.00026, 0.99973, 1.00022, 1.00022, 1.00022, 1.00022, 1.00022, 0.99973, 0.9993, 0.99973, 0.99973, 0.99973, 
0.99973, 0.99973, 0.99973, 1, 1, 1, 1, 0.99973, 0.99902];
-exports.HelveticaBoldFactors = HelveticaBoldFactors;
-const HelveticaBoldLineHeight = 1.2;
-exports.HelveticaBoldLineHeight = HelveticaBoldLineHeight;
-const HelveticaBoldItalicFactors = [0.76116, 1, 0.99977, 1, 1, 0.99977, 0.99977, 0.99977, 0.99977, 0.99977, 
0.99977, 0.99977, 0.99977, 0.99977, 0.99977, 0.99977, 0.99977, 0.99977, 0.99977, 0.99977, 0.99977, 0.99977, 
0.99977, 0.99977, 0.99977, 1.00001, 0.99977, 0.99977, 0.99977, 0.91155, 1.00001, 1.00001, 1.00001, 1.00001, 
1.00001, 1.00001, 1.00001, 1.00001, 1.00001, 0.9998, 1.00001, 1.00001, 1, 0.99977, 1.00026, 0.99977, 0.99973, 
1.00026, 1.00022, 1.00022, 1.00022, 1.00022, 1.00022, 1.00022, 0.99977, 0.99999, 0.99861, 0.99861, 1, 
0.99977, 0.99977, 1.0006, 0.99971, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 
1.0006, 0.99969, 1.0006, 0.99973, 0.99973, 0.99977, 0.99977, 0.99977, 1.00026, 1.00026, 1.00001, 1.00026, 
1.00026, 1.00026, 1.00026, 0.99999, 0.99999, 0.99977, 0.99977, 0.99977, 0.99977, 0.99977, 0.99977, 1.00022, 
1, 1.00022, 1.00022, 1.00022, 1.00022, 1.00022, 1.00022, 1.00022, 1, 0.9998, 1.00022, 0.99972, 1.00022, 
1.00022, 1.00022, 1.00001, 0.99968, 
 1.00032, 1.00047, 1.00022, 0.99977, 0.99977, 0.99977, 0.99977, 1.00001, 1.00001, 1.41144, 1.41144, 1.41144, 
1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.6, 1.41144, 1.41144, 1.41144, 1.41144, 
1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 
1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 
1.41144, 1.00001, 1.00001, 1.00001, 1.00001, 1.00001, 0.99944, 1.00026, 1.00026, 1.00026, 1.00026, 1.00026, 
1.00022, 1.00001, 0.99977, 0.99977, 0.99977, 0.99977, 0.99977, 0.99977, 0.99977, 0.99977, 0.99977, 1.00001, 
1.00001, 0.99981, 0.99977, 0.99977, 1.00001, 1.00016, 1.00016, 1.00016, 1.00016, 1.00016, 1.00001, 0.99966, 
1.00001, 1.00001, 1.00001, 1.00001, 1.00001, 1.00026, 1.00026, 1.00026, 1.00026, 1.00026, 0.99973, 0.99973, 
0.99973, 0.99973, 0.99998, 1, 0.99973, 0.99982, 0.99982, 1, 0.99977, 0.99999, 0.99977, 1.00038, 0.99977, 
1.00001, 1.00001, 0.99973, 1.000
 66, 0.99967, 0.99967, 1.00041, 0.99998, 0.99999, 0.99977, 1.00022, 0.99967, 1.00001, 0.99977, 1.00026, 
0.99964, 1.00031, 1.00001, 0.99999, 0.99999, 1, 1.00023, 1, 1, 0.99999, 1.00035, 1.00001, 0.99999, 0.99966, 
1.00029, 1.00038, 1.00035, 1.00001, 1.0006, 1.0006, 0.99973, 0.99978, 1.00001, 1.00057, 0.99989, 0.99964, 
0.99973, 0.99977, 0.99999, 1.00058, 0.99973, 0.99973, 0.99973, 0.99955, 0.9995, 1.00026, 1.00026, 1.00032, 
0.99989, 1.00034, 0.99999, 1.00026, 1.00026, 1.00026, 0.99973, 0.45998, 0.99973, 1.00026, 0.99973, 1.00001, 
0.99999, 0.99982, 0.99994, 0.99996, 1, 1.00042, 1.00044, 1.00029, 1.00023, 1.00044, 1.00026, 0.99949, 
1.00002, 0.99973, 1.0006, 1.0006, 1.0006, 0.99975, 1.00026, 1.00026, 1.00032, 0.99973, 0.99967, 1, 1.00026, 
1, 0.99971, 0.99978, 1, 0.99973, 0.99981, 0.99981, 0.99973, 0.99977, 1, 0.99973, 1.00031, 0.99973, 0.99973, 
1.00049, 1, 1.00098, 1, 1, 1, 1, 1.00003, 1.00003, 0.99959, 0.9999, 0.99973, 1.00026, 1.0006, 1.00077, 
1.00064, 1.41144, 0.99959, 0.99959, 0.99998,
  0.99998, 0.99998, 1, 1.00077, 0.99972, 0.99973, 0.99973, 0.99998, 1, 1, 0.99973, 0.99973, 0.99973, 0.99973, 
0.99998, 0.99973, 1.00063, 0.99999, 0.99998, 1, 0.99962, 0.99998, 1.0006, 1, 1, 1.00025, 0.99973, 1, 1.00026, 
0.99973, 0.99973, 1.0044, 1.00026, 1.00024, 0.99942, 0.9995, 0.99998, 1, 0.99998, 1.06409, 1.36625, 1.41144, 
0.99973, 0.99998, 1.0006, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 
0.99998, 1, 0.99973, 1, 0.99973, 1.00026, 0.99973, 1.00101, 1.00101, 1.00003, 0.99915, 0.99984, 1.00026, 
1.00026, 1.00026, 0.99998, 0.99999, 0.99998, 0.99998, 1, 0.99999, 1, 0.99973, 1.00002, 0.99998, 0.99973, 
0.99973, 0.99998, 0.99973, 1.00026, 0.99973, 1.00026, 1.00026, 1.00026, 1.00026, 1.00026, 0.99998, 1, 
1.00003, 1.00031, 0.99973, 0.99973, 0.99998, 0.99998, 1.00026, 1.00026, 1.00026, 1.00042, 0.99999, 0.99998, 
1, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 0.99973, 1.0006, 1.00015, 1.00027, 0.99999, 0.99999, 
0.99561, 0.99999, 0.99999, 0.99977, 1.
 0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 0.99973, 1.00014, 0.99973, 0.99973, 1.0006, 
1.0006, 0.99973, 1.01011, 1.0006, 0.99999, 1.00003, 1.00031, 1.41144, 0.99973, 1.00003, 1.0006, 0.99972, 
1.0006, 1.40579, 0.99982, 0.60299, 1, 1, 1.00003, 1.00106, 1.01322, 1.00003, 1, 1, 1.00026, 1.00026, 0.9993, 
1.00026, 1.00026, 0.99973, 1, 1.00031, 1.00026, 0.99973, 0.99973, 1.00026, 1.00026, 1.00026, 1.00026, 
1.00026, 1.00016, 0.99998, 1.00026, 1.00026, 1.00026, 0.99943, 0.99943, 1.00026, 1.00026, 0.99973, 1.00002, 
1.00002, 1.00002, 1.40483, 0.99968, 0.99936, 1, 1.00026, 1.00026, 1.00026, 1.00026, 0.99973, 0.99998, 
0.99998, 0.99972, 0.99982, 1.0006, 1, 1, 1.00055, 1.00012, 1.00003, 1.06409, 1.20985, 1.00007, 1.00026, 
1.00026, 1.00026, 0.99974, 1, 1, 1, 1.0006, 1.0006, 1.0006, 1.0006, 1.00087, 0.99959, 0.99959, 1.00031, 
0.99959, 0.99959, 1.00025, 1.00003, 0.99923, 0.99998, 1.41144, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 
0.99973, 0.99999, 0.99973, 0.99973, 1.00002, 0.99
 998, 1.40579, 1.00064, 1, 0.99973, 1.0006, 1, 0.99953, 0.99973, 1.39713, 1.00054, 0.99998, 1.00076, 0.99998, 
0.8121, 0.99998, 1.00069, 1.00026, 0.99973, 1.00002, 1.00002, 0.99998, 1, 0.99998, 1, 1.00026, 1.00026, 
1.00026, 1.00026, 0.99973, 1.00026, 1.00026, 1.00026, 1.00026, 1.00026, 1.00026, 1.00026, 1.00026, 0.99973, 
0.99955, 1.0006, 0.99998, 1, 1, 1, 1, 1.00026, 0.99998, 0.99998, 1, 1.00001, 0.99967, 0.99973, 0.98685, 1, 1, 
0.99998, 1, 0.99991, 1, 1.66475, 1.0006, 1, 1, 1, 1, 1.00026, 1.41144, 0.99948, 0.99948, 0.99948, 0.99948, 
1.00026, 1.00026, 0.99973, 1.00022, 1.00022, 1.00022, 1.00022, 1.00022, 0.99973, 1.00065, 0.99973, 0.99973, 
0.99973, 0.99973, 0.99973, 0.99973, 1, 1, 1, 1, 0.99973, 1.00061];
-exports.HelveticaBoldItalicFactors = HelveticaBoldItalicFactors;
-const HelveticaBoldItalicLineHeight = 1.35;
-exports.HelveticaBoldItalicLineHeight = HelveticaBoldItalicLineHeight;
-const HelveticaItalicFactors = [0.76116, 1, 1.00001, 1, 1, 1.00001, 1.00001, 1.00001, 1.00001, 1.00001, 
1.00001, 1.00001, 1.00001, 1.00001, 1.00001, 1.00001, 1.00001, 1.00001, 1.00001, 0.99977, 0.99977, 0.99977, 
0.99977, 0.99977, 0.99977, 1.00001, 0.99977, 0.99977, 0.99977, 0.91221, 1.00001, 1.00001, 1.00001, 1.00001, 
1.00001, 1.00001, 1.00001, 1.00001, 1.00001, 0.9998, 1.00001, 1.00001, 1.00054, 0.99977, 0.99977, 0.99977, 
0.99973, 1.00026, 1.00022, 0.99945, 1.00022, 1.00022, 1.00022, 1.00022, 0.99977, 0.99999, 0.99861, 0.99861, 
1, 0.99977, 0.99977, 1.0006, 0.99946, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 
1.0006, 1.00084, 1.0006, 1, 1, 1.00001, 1.00001, 1.00001, 0.99973, 0.99973, 1.00001, 0.99973, 0.99973, 
0.99973, 0.99973, 0.99999, 0.99999, 0.99977, 0.99977, 0.99977, 0.99977, 0.99977, 0.99977, 1.00022, 1, 
1.00022, 1.00022, 1.00022, 1.00022, 1.00022, 1.00022, 1.00022, 1, 1.00013, 1.00022, 1.00007, 1.00022, 
1.00022, 1.00022, 1.00001, 1.0001, 1.00054, 1
 .00052, 1.00022, 0.99977, 0.99977, 0.99977, 0.99977, 1.00001, 1.00001, 1.41144, 1.41144, 1.41144, 1.41144, 
1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.6, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 
1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 
1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 
1.00001, 1.00001, 1.00001, 1.00001, 1.00001, 1.00065, 1.00026, 1.00026, 1.00026, 1.00026, 1.00026, 1.00022, 
1.00001, 0.99977, 0.99977, 0.99977, 0.99977, 0.99977, 0.99977, 0.99977, 0.99977, 0.99977, 1.00001, 1.00001, 
0.99973, 0.99977, 0.99977, 1.00001, 1.00016, 1.00016, 1.00016, 1.00016, 1.00016, 1.00001, 0.99933, 1.00001, 
1.00001, 1.00001, 1.00001, 1.00001, 1.00026, 1.00026, 1.00026, 1.00026, 1.00026, 0.99973, 0.99973, 0.99973, 
0.99973, 0.99998, 1, 0.99973, 0.99982, 0.99982, 1, 1.00001, 1.00019, 1.00001, 1.0001, 0.99986, 1.00001, 
1.00001, 1.00001, 1.00038, 0.99954
 , 0.99954, 0.9994, 1.00066, 0.99999, 0.99977, 1.00022, 1.00054, 1.00001, 0.99977, 1.00026, 0.99975, 1.0001, 
1.00001, 0.99993, 0.9995, 0.99955, 1.00016, 0.99978, 0.99974, 1.00019, 1.00022, 0.99955, 1.00053, 0.99962, 
1.00027, 1.0001, 1.00068, 1.00001, 1.0006, 1.0006, 1, 1.00008, 0.99957, 0.99972, 0.9994, 0.99975, 0.99973, 
1.00089, 1.00005, 0.99967, 1.00048, 0.99973, 0.99973, 1.00002, 1.00034, 0.99973, 0.99973, 0.99964, 1.00006, 
1.00066, 0.99947, 0.99973, 0.98894, 0.99973, 1, 0.44898, 1, 0.99946, 1, 1.00039, 1.00082, 0.99991, 0.99991, 
0.99985, 1.00022, 1.00023, 1.00061, 1.00006, 0.99966, 0.99895, 0.99973, 1.00019, 1.0008, 1, 0.99924, 0.99924, 
0.99924, 0.99983, 1.00044, 0.99973, 0.99964, 1, 1.00051, 1, 0.99973, 1, 1.00423, 0.99925, 0.99999, 0.99973, 
0.99945, 0.99945, 0.99973, 1.00001, 1, 0.99973, 1.00031, 0.99973, 0.99973, 1, 1, 1.00049, 1.00245, 1, 1, 1, 
0.99949, 1.00003, 0.99959, 0.99987, 0.99973, 0.99973, 1.0006, 1.0009, 0.99949, 1.41144, 1.00005, 1.00005, 
1.0006, 1.0006, 0.99998, 1,
  1.0009, 0.99972, 1, 1, 0.99998, 1, 1, 1, 1, 1, 1, 0.99998, 0.99973, 1.00019, 0.99999, 0.99998, 1, 0.99962, 
1.0006, 1.0006, 1, 1, 1.00025, 0.99973, 1, 0.99973, 0.99973, 0.99973, 1.0288, 0.99973, 1.00024, 1.0006, 
0.9995, 0.99998, 1, 0.99998, 1.06409, 1.36625, 1.41144, 0.99973, 0.99998, 1.0006, 0.99973, 0.99973, 0.99973, 
0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99998, 1, 0.99973, 1, 0.99973, 0.99973, 0.99973, 
0.99897, 0.99897, 1.00003, 1.00003, 0.99984, 0.99968, 0.99968, 0.99973, 1.0006, 1, 0.99998, 1.0006, 1, 
0.99999, 1, 0.99973, 1.00002, 0.99998, 0.99973, 0.99973, 0.99998, 0.99973, 0.99973, 1, 0.99973, 0.99973, 
0.99973, 0.99973, 1.00026, 0.99998, 1, 1.00003, 1.00031, 0.99973, 0.99973, 0.99998, 0.99998, 0.99973, 
0.99973, 0.99973, 1.00042, 0.99999, 0.99998, 1, 0.99924, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.00034, 
1.0006, 1.00015, 1.00027, 0.99999, 0.99999, 1.00035, 0.99999, 0.99999, 0.99977, 0.99924, 0.99924, 0.99924, 
0.99924, 0.99924, 1.0006, 0.99924, 0.99924, 1, 1
 , 1, 1, 0.99924, 0.99924, 0.99962, 1.06311, 0.99924, 1.00024, 1.00003, 1.00031, 1.41144, 0.99973, 1.00003, 
0.99924, 0.95317, 0.99924, 1.40579, 0.99999, 0.60299, 1, 1, 1.00003, 1.00267, 1.01487, 1.00003, 1, 1, 
0.99973, 0.99973, 1.00041, 0.99973, 0.99973, 0.99973, 1, 1.00031, 0.99973, 1, 0.99973, 0.99973, 0.99973, 
0.99973, 0.99973, 0.99973, 1.00016, 0.99998, 0.99973, 0.99973, 0.99973, 1.00025, 1.00025, 0.99973, 0.99973, 
0.99973, 1.00002, 1.00002, 1.00002, 1.40483, 0.99968, 0.99936, 1, 1.00026, 1.00026, 0.99973, 0.99973, 0.9998, 
0.99998, 0.99998, 0.96329, 0.99982, 1.0006, 1, 1.00023, 0.99947, 1.00012, 1.00003, 1.06409, 1.20985, 1.00063, 
0.99973, 0.99973, 1.00026, 1.00006, 0.99998, 0.99998, 0.99998, 0.99924, 0.99924, 0.99924, 0.99924, 1.00043, 
0.99998, 0.99998, 0.8254, 0.99998, 0.99998, 1.00025, 1.00003, 1.00043, 0.99998, 1.41144, 1, 1, 1, 1, 1, 1, 
0.99999, 0.99973, 0.99973, 1.00002, 0.99998, 1.40579, 0.99995, 1, 0.99973, 1.0006, 1, 0.99953, 0.99973, 
1.39713, 1.00054, 1.0006, 0.99994, 1
 .0006, 0.89547, 1.0006, 0.99911, 0.99973, 0.99973, 1.00002, 1.00002, 0.99998, 1, 0.99998, 1, 1.00026, 
1.00026, 1.00026, 1.00026, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 
0.99973, 0.99955, 1.0006, 0.99998, 1, 1, 1, 1, 1.00026, 1.0006, 0.99998, 1, 1.00001, 0.99954, 0.99973, 
0.98332, 1, 1, 0.99998, 1, 0.99991, 1, 1.66475, 1.0006, 1, 1, 1, 1, 0.99973, 1.41144, 1.00036, 1.00036, 
1.00036, 1.00036, 0.99973, 0.99973, 1, 0.99977, 0.99977, 0.99977, 0.99977, 0.99977, 1, 1.0005, 1, 1, 1, 1, 
0.99973, 1, 1, 1, 1, 1, 0.99973, 0.99918];
-exports.HelveticaItalicFactors = HelveticaItalicFactors;
-const HelveticaItalicLineHeight = 1.35;
-exports.HelveticaItalicLineHeight = HelveticaItalicLineHeight;
-const HelveticaRegularFactors = [0.76116, 1, 1.00001, 1, 1, 1.00001, 1.00001, 1.00001, 1.00001, 1.00001, 
1.00001, 0.99928, 1.00001, 1.00001, 1.00001, 1.00001, 1.00001, 1.00001, 1.00001, 0.99977, 0.99977, 0.99977, 
0.99977, 0.99977, 0.99977, 1.00001, 0.99977, 0.99977, 0.99977, 0.91621, 1.00001, 1.00001, 1.00001, 1.00001, 
1.00001, 1.00001, 1.00001, 1.00001, 1.00001, 0.9998, 1.00001, 1.00001, 0.99977, 0.99977, 1.00013, 0.99977, 
0.99973, 1.00026, 1.00022, 1.0004, 1.00022, 1.00022, 1.00022, 1.00022, 0.99977, 0.99999, 0.99861, 0.99861, 1, 
0.99977, 0.99977, 1.0006, 1.00019, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 
1.0006, 1.00055, 1.0006, 1, 1, 1.00001, 1.00001, 1.00001, 0.99973, 0.99973, 1.00005, 0.99973, 0.99973, 
0.99973, 0.99973, 0.99999, 0.99999, 0.99977, 0.99977, 0.99977, 0.99977, 0.99977, 0.99977, 1.00022, 1, 
1.00022, 1.00022, 1.00022, 1.00022, 1.00022, 1.00022, 1.00022, 1, 0.99941, 1.00022, 0.99947, 1.00022, 
1.00022, 1.00022, 1.00001, 1.00019, 0.99977, 
 0.99946, 1.00022, 0.99977, 0.99977, 0.99977, 0.99977, 1.00001, 1.00001, 1.41144, 1.41144, 1.41144, 1.41144, 
1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.6, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 
1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 
1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 
1.00001, 1.00001, 1.00001, 1.00001, 1.00001, 0.99973, 1.00026, 1.00026, 1.00026, 1.00026, 1.00026, 1.00022, 
1.00001, 0.99977, 0.99977, 0.99977, 0.99977, 0.99977, 0.99977, 0.99977, 0.99977, 0.99977, 1.00001, 1.00001, 
0.99945, 0.99977, 0.99977, 1.00001, 1.00016, 1.00016, 1.00016, 1.00016, 1.00016, 1.00001, 1.00015, 1.00001, 
1.00001, 1.00001, 1.00001, 1.00001, 1.00026, 1.00026, 1.00026, 1.00026, 1.00026, 0.99973, 0.99973, 0.99973, 
0.99973, 0.99998, 0.99973, 0.99982, 0.99982, 1, 1.00001, 0.99962, 1.00001, 1.00092, 0.99964, 1.00001, 
0.99928, 0.99963, 0.99999, 1.00035,
  1.00035, 1.00082, 0.99962, 0.99999, 0.99977, 1.00022, 1.00035, 1.00001, 0.99977, 1.00026, 0.9996, 0.99967, 
1.00001, 1.00034, 1.00074, 1.00054, 1.00053, 1.00063, 0.99971, 0.99962, 1.00035, 0.99975, 0.99977, 1.00047, 
1.00029, 1.00092, 1.00035, 1.00001, 1.0006, 1.0006, 1, 0.99988, 0.99975, 1, 1.00082, 0.9996, 0.99973, 
1.00043, 0.99953, 1.0007, 0.99915, 0.99973, 0.99973, 1.00008, 0.99892, 1.00073, 1.00073, 1.00114, 0.99915, 
1.00073, 0.99955, 0.99973, 1.00092, 0.99973, 1, 0.99998, 1, 1.0003, 1, 1.00043, 1.00001, 0.99969, 1.0003, 1, 
1.00035, 1.00001, 0.9995, 1, 1.00092, 0.99968, 0.99973, 1.0007, 0.9995, 1, 0.99924, 1.0006, 0.99924, 0.99972, 
1.00062, 0.99973, 1.00114, 1, 1.00035, 1, 0.99955, 1, 0.99971, 0.99925, 1.00023, 0.99973, 0.99978, 0.99978, 
0.99973, 1.00001, 1, 0.99973, 1.00031, 0.99973, 0.99973, 1, 1, 1, 1, 1, 1, 1, 0.99949, 1.00003, 0.99959, 
0.99987, 0.99973, 0.99973, 1.0006, 1.0009, 0.99966, 1.41144, 1.00005, 1.00005, 1.0006, 1.0006, 0.99998, 
1.0009, 0.99972, 1, 1, 0.99998, 1, 1
 , 1, 1, 0.99998, 0.99973, 1.00019, 0.99999, 0.99998, 0.99962, 1.0006, 1.0006, 1.00025, 0.99973, 0.99973, 
0.99973, 0.99973, 1.04596, 0.99973, 1.00024, 1.00065, 0.9995, 0.99998, 0.99998, 1.06409, 1.36625, 1.41144, 
0.99973, 0.99998, 1.0006, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 1, 
0.99973, 1, 0.99973, 0.99973, 0.99973, 1.00045, 1.00045, 1.00003, 0.99915, 0.99984, 0.99973, 0.99973, 
0.99973, 1.0006, 1, 0.99998, 1.0006, 1, 0.99999, 1, 0.99973, 1.00002, 0.99973, 0.99973, 0.99973, 0.99973, 1, 
0.99973, 0.99973, 0.99973, 0.99973, 1.00026, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.99998, 1.00003, 1.00031, 
0.99973, 0.99973, 0.99998, 0.99998, 0.99973, 0.99973, 0.99973, 1.00042, 0.99999, 0.99998, 0.99924, 1.0006, 
1.0006, 1.0006, 1.0006, 1.0006, 1.00034, 1.0006, 1.00015, 1.00027, 0.99999, 0.99999, 1.00035, 0.99999, 
0.99999, 0.99977, 0.99924, 0.99924, 0.99924, 0.99924, 0.99924, 1.0006, 0.99924, 0.99924, 1, 1, 1, 1, 0.99924, 
0.99924, 1, 1.02572, 0.99924, 1.00005, 
 1.00003, 1.00031, 1.41144, 0.99973, 1.00003, 0.99924, 0.95317, 0.99924, 1.40579, 0.99999, 0.60299, 1, 1, 
1.00003, 1.00267, 0.96499, 1.00003, 1, 1, 0.99973, 0.99973, 0.99999, 0.99973, 0.99973, 0.99973, 1, 1.00031, 
0.99973, 1, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 1.00016, 0.99998, 0.99973, 0.99973, 
0.99973, 1.00031, 1.00031, 0.99973, 0.99973, 0.99973, 1.00002, 1.00002, 1.00002, 1.40483, 0.99968, 0.99936, 
1, 1.00026, 1.00026, 0.99973, 0.99973, 0.9998, 0.99998, 0.99998, 0.96329, 0.99982, 1.0006, 1, 1.00023, 
0.99933, 1.00008, 1.00003, 1.06409, 1.20985, 1.00015, 0.99973, 0.99973, 1.00026, 1.00006, 0.99998, 0.99998, 
0.99998, 0.99924, 0.99924, 0.99924, 0.99924, 1.00043, 0.99998, 0.99998, 0.8254, 0.99998, 0.99998, 1.00025, 
1.00003, 1.00027, 0.99998, 1.41144, 1, 1, 1, 1, 1, 1, 0.99999, 0.99973, 0.99973, 1.00002, 1.40579, 0.9997, 1, 
0.99973, 1.0006, 1, 0.99953, 0.99973, 1.39713, 1.00054, 1.0006, 0.99995, 1.0006, 0.84533, 1.0006, 0.99973, 
0.99973, 0.99973, 1.00002, 1.00002, 0.9
 9998, 0.99998, 1, 1.00026, 1.00026, 1.00026, 1.00026, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 
0.99973, 0.99973, 0.99973, 0.99973, 0.99955, 1.0006, 0.99998, 1, 1, 1, 1, 1.00026, 1.0006, 0.99998, 1, 
1.00001, 0.99561, 0.99973, 1.00073, 1, 1, 0.99998, 1, 1, 1, 1, 1, 0.99991, 1, 1.66475, 1.0006, 1, 1, 1, 1, 1, 
0.99973, 1.41144, 1.00023, 1.00023, 1.00023, 1.00023, 0.99973, 0.99973, 1, 0.99977, 0.99977, 0.99977, 
0.99977, 0.99977, 1, 1.00055, 1, 1, 1, 1, 0.99973, 1, 1, 1, 1, 1, 0.99973, 1.00019];
-exports.HelveticaRegularFactors = HelveticaRegularFactors;
-const HelveticaRegularLineHeight = 1.2;
-exports.HelveticaRegularLineHeight = HelveticaRegularLineHeight;
-
-/***/ }),
-/* 58 */
-/***/ ((__unused_webpack_module, exports) => {
-
-
-
-Object.defineProperty(exports, "__esModule", ({
-  value: true
-}));
-exports.LiberationSansRegularWidths = exports.LiberationSansItalicWidths = exports.LiberationSansBoldWidths 
= exports.LiberationSansBoldItalicWidths = void 0;
-const LiberationSansBoldWidths = [365, 0, 722, 1000, 1000, 722, 722, 722, 722, 722, 722, 722, 722, 722, 722, 
722, 722, 722, 722, 722, 722, 722, 722, 722, 722, 667, 722, 722, 722, 719, 667, 667, 667, 667, 667, 667, 667, 
667, 667, 723, 667, 667, 853, 722, 906, 722, 556, 611, 778, 601, 778, 778, 778, 778, 722, 604, 354, 354, 604, 
722, 722, 278, 785, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 474, 278, 556, 556, 722, 722, 722, 611, 
611, 667, 611, 611, 611, 611, 833, 833, 722, 722, 722, 722, 722, 722, 778, 1000, 778, 778, 778, 778, 778, 
778, 778, 802, 838, 778, 825, 778, 778, 778, 667, 821, 722, 809, 778, 722, 722, 722, 722, 667, 667, 708, 708, 
708, 708, 708, 708, 708, 708, 708, 708, 625, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 
708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 667, 667, 667, 667, 667, 600, 
611, 611, 611, 611, 611, 778, 667, 722, 722, 722, 722, 722, 722, 722, 722, 722, 667, 667, 927, 722, 722, 667, 
944, 944, 94
 4, 944, 944, 667, 644, 667, 667, 667, 667, 667, 611, 611, 611, 611, 611, 556, 556, 556, 556, 333, 333, 556, 
889, 889, 1000, 722, 719, 722, 567, 712, 667, 669, 904, 626, 719, 719, 610, 702, 833, 722, 778, 719, 667, 
722, 611, 622, 854, 667, 730, 703, 1005, 1019, 870, 979, 719, 711, 1031, 719, 487, 885, 567, 711, 667, 278, 
276, 556, 1094, 1062, 875, 610, 622, 556, 618, 615, 417, 635, 556, 556, 709, 497, 615, 615, 500, 635, 740, 
604, 611, 604, 611, 556, 490, 556, 875, 556, 615, 581, 833, 844, 729, 854, 615, 552, 854, 583, 447, 611, 417, 
552, 556, 278, 281, 278, 969, 906, 611, 500, 556, 719, 778, 604, 611, 885, 489, 1115, 556, 615, 615, 556, 
722, 333, 556, 549, 556, 556, 1000, 500, 1000, 1000, 500, 500, 500, 584, 584, 389, 975, 556, 611, 278, 280, 
610, 708, 389, 389, 333, 333, 333, 333, 280, 350, 556, 556, 333, 333, 222, 556, 556, 556, 556, 333, 556, 576, 
604, 333, 333, 656, 333, 278, 333, 222, 737, 556, 333, 611, 556, 556, 719, 611, 400, 606, 510, 333, 333, 465, 
549, 729, 708, 556, 333,
  278, 556, 556, 556, 556, 556, 556, 556, 556, 556, 333, 1000, 556, 1000, 556, 611, 556, 475, 451, 584, 583, 
600, 611, 611, 611, 333, 604, 333, 333, 750, 604, 1000, 556, 834, 333, 556, 556, 333, 556, 611, 556, 611, 
611, 611, 611, 611, 333, 333, 584, 549, 556, 556, 333, 333, 611, 611, 611, 594, 604, 333, 333, 278, 278, 278, 
278, 278, 278, 556, 278, 713, 274, 604, 604, 722, 604, 604, 1052, 278, 278, 278, 278, 278, 278, 278, 278, 
556, 558, 556, 556, 278, 278, 556, 385, 278, 479, 584, 549, 708, 556, 584, 278, 494, 278, 708, 889, 552, 750, 
333, 584, 240, 612, 584, 500, 750, 611, 611, 708, 611, 611, 556, 333, 549, 611, 556, 556, 611, 611, 611, 611, 
611, 944, 333, 611, 611, 611, 845, 845, 611, 611, 556, 834, 834, 834, 354, 370, 365, 979, 611, 611, 611, 611, 
556, 333, 333, 494, 889, 278, 1000, 1094, 715, 766, 584, 549, 823, 753, 611, 611, 611, 474, 500, 500, 500, 
278, 278, 278, 278, 238, 389, 389, 549, 389, 389, 737, 584, 619, 333, 708, 556, 556, 556, 556, 556, 556, 479, 
556, 556, 834, 333, 
 708, 684, 520, 556, 278, 1021, 531, 556, 713, 917, 333, 446, 333, 479, 333, 541, 611, 556, 834, 834, 333, 
333, 333, 1000, 990, 990, 990, 990, 556, 611, 611, 611, 611, 611, 611, 611, 611, 556, 552, 278, 333, 333, 
333, 576, 333, 611, 333, 333, 333, 667, 722, 556, 615, 333, 333, 333, 396, 768, 612, 167, 278, 750, 333, 611, 
611, 611, 708, 582, 582, 582, 582, 611, 611, 556, 778, 778, 778, 778, 778, 556, 445, 556, 556, 556, 556, 556, 
556, 500, 500, 500, 500, 556, 460];
-exports.LiberationSansBoldWidths = LiberationSansBoldWidths;
-const LiberationSansBoldItalicWidths = [365, 0, 722, 1000, 1000, 722, 722, 722, 722, 722, 722, 722, 722, 
722, 722, 722, 722, 722, 722, 722, 722, 722, 722, 722, 722, 667, 722, 722, 722, 671, 667, 667, 667, 667, 667, 
667, 667, 667, 667, 723, 667, 667, 854, 722, 906, 722, 556, 611, 778, 610, 778, 778, 778, 778, 722, 604, 354, 
354, 604, 722, 722, 278, 782, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 473, 278, 556, 556, 722, 722, 
722, 611, 611, 667, 611, 611, 611, 611, 833, 833, 722, 722, 722, 722, 722, 722, 778, 1000, 778, 778, 778, 
778, 778, 778, 778, 781, 847, 778, 844, 778, 778, 778, 667, 822, 718, 829, 778, 722, 722, 722, 722, 667, 667, 
708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 625, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 
708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 667, 667, 667, 667, 
667, 590, 611, 611, 611, 611, 611, 778, 667, 722, 722, 722, 722, 722, 722, 722, 722, 722, 667, 667, 930, 722, 
722, 667, 944, 9
 44, 944, 944, 944, 667, 657, 667, 667, 667, 667, 667, 611, 611, 611, 611, 611, 556, 556, 556, 556, 333, 333, 
556, 889, 889, 1000, 722, 708, 722, 614, 722, 667, 667, 927, 643, 719, 719, 615, 687, 833, 722, 778, 719, 
667, 722, 611, 677, 781, 667, 729, 708, 979, 989, 854, 1000, 708, 719, 1042, 729, 575, 886, 614, 719, 667, 
278, 278, 556, 1094, 1042, 854, 622, 677, 556, 619, 604, 534, 618, 556, 556, 736, 510, 611, 611, 507, 622, 
740, 604, 611, 611, 611, 556, 889, 556, 885, 556, 646, 583, 889, 935, 707, 854, 594, 552, 865, 589, 467, 611, 
469, 563, 556, 278, 278, 278, 969, 906, 611, 507, 556, 719, 778, 611, 611, 885, 516, 1146, 556, 620, 620, 
556, 722, 333, 556, 549, 556, 556, 1000, 500, 999, 1000, 500, 500, 500, 584, 584, 389, 975, 556, 611, 278, 
280, 621, 708, 389, 389, 333, 333, 333, 333, 280, 350, 556, 556, 333, 333, 222, 556, 556, 556, 556, 333, 556, 
578, 604, 333, 333, 656, 333, 278, 333, 222, 737, 556, 333, 611, 556, 556, 740, 611, 400, 610, 510, 333, 333, 
333, 549, 729, 708, 556, 
 333, 278, 556, 556, 556, 556, 556, 556, 556, 556, 556, 333, 1000, 556, 1000, 556, 611, 556, 479, 479, 584, 
583, 600, 611, 611, 611, 333, 604, 333, 333, 750, 604, 1000, 556, 834, 333, 556, 556, 333, 556, 611, 556, 
611, 611, 611, 611, 611, 333, 333, 584, 549, 556, 556, 333, 333, 611, 611, 611, 594, 604, 333, 333, 278, 278, 
278, 278, 278, 278, 556, 278, 713, 274, 604, 604, 722, 604, 604, 1052, 278, 278, 278, 278, 278, 278, 278, 
278, 556, 566, 556, 556, 278, 278, 556, 396, 278, 479, 584, 549, 708, 556, 584, 278, 494, 278, 708, 889, 552, 
750, 333, 584, 240, 603, 584, 500, 750, 611, 611, 708, 611, 611, 556, 333, 549, 611, 556, 556, 611, 611, 611, 
611, 611, 944, 333, 611, 611, 611, 834, 834, 611, 611, 556, 834, 834, 834, 354, 370, 365, 979, 611, 611, 611, 
611, 556, 333, 333, 494, 889, 278, 1000, 1104, 704, 712, 584, 549, 823, 773, 611, 611, 611, 474, 500, 500, 
500, 278, 278, 278, 278, 238, 389, 389, 549, 389, 389, 737, 584, 605, 333, 708, 556, 556, 556, 556, 556, 556, 
479, 556, 556, 834, 3
 33, 708, 664, 532, 556, 278, 1021, 531, 556, 713, 917, 333, 409, 333, 479, 333, 558, 611, 556, 834, 834, 
333, 333, 333, 1000, 990, 990, 990, 990, 556, 611, 611, 611, 611, 611, 611, 611, 611, 556, 552, 278, 333, 
333, 333, 576, 333, 611, 333, 333, 333, 667, 719, 556, 619, 333, 333, 333, 396, 768, 612, 167, 278, 750, 333, 
611, 611, 611, 708, 591, 591, 591, 591, 611, 611, 556, 778, 778, 778, 778, 778, 556, 450, 556, 556, 556, 556, 
556, 556, 500, 500, 500, 500, 556, 492];
-exports.LiberationSansBoldItalicWidths = LiberationSansBoldItalicWidths;
-const LiberationSansItalicWidths = [365, 0, 667, 1000, 1000, 667, 667, 667, 667, 667, 667, 667, 667, 667, 
667, 667, 667, 667, 667, 722, 722, 722, 722, 722, 722, 667, 722, 722, 722, 671, 667, 667, 667, 667, 667, 667, 
667, 667, 667, 723, 667, 667, 789, 722, 846, 722, 556, 611, 778, 570, 778, 778, 778, 778, 722, 604, 354, 354, 
604, 722, 722, 278, 733, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 389, 278, 500, 500, 667, 667, 667, 
556, 556, 667, 556, 556, 556, 556, 833, 833, 722, 722, 722, 722, 722, 722, 778, 1000, 778, 778, 778, 778, 
778, 778, 778, 761, 775, 778, 794, 778, 778, 778, 667, 837, 725, 831, 778, 722, 722, 722, 722, 667, 667, 708, 
708, 708, 708, 708, 708, 708, 708, 708, 708, 625, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 
708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 667, 667, 667, 667, 667, 
600, 611, 611, 611, 611, 611, 778, 667, 722, 722, 722, 722, 722, 722, 722, 722, 722, 667, 667, 865, 722, 722, 
667, 944, 944, 
 944, 944, 944, 667, 648, 667, 667, 667, 667, 667, 611, 611, 611, 611, 611, 556, 556, 556, 556, 333, 294, 
556, 889, 889, 1000, 667, 651, 667, 544, 704, 667, 667, 917, 614, 715, 715, 589, 686, 833, 722, 778, 725, 
667, 722, 611, 639, 795, 667, 727, 673, 920, 923, 805, 886, 651, 694, 1022, 682, 492, 843, 544, 708, 667, 
278, 278, 500, 1066, 982, 844, 589, 639, 556, 562, 522, 493, 553, 556, 556, 688, 465, 556, 556, 472, 564, 
686, 550, 556, 556, 556, 500, 833, 500, 835, 500, 572, 518, 830, 851, 621, 736, 526, 492, 752, 534, 339, 556, 
378, 496, 500, 222, 222, 222, 910, 828, 556, 472, 500, 724, 778, 556, 556, 885, 323, 1083, 556, 570, 570, 
556, 667, 278, 556, 549, 556, 556, 1000, 500, 1000, 998, 500, 500, 500, 469, 584, 389, 1015, 556, 556, 278, 
260, 571, 708, 334, 334, 278, 278, 333, 285, 260, 350, 500, 500, 333, 324, 222, 500, 500, 500, 500, 333, 556, 
546, 604, 333, 324, 656, 278, 278, 333, 222, 737, 556, 333, 556, 556, 556, 625, 556, 400, 556, 510, 333, 316, 
333, 549, 729, 708, 556, 333, 
 278, 556, 556, 556, 556, 556, 556, 556, 556, 556, 333, 1000, 556, 1000, 556, 556, 556, 439, 439, 584, 584, 
600, 555, 555, 556, 278, 500, 333, 278, 750, 604, 1000, 556, 834, 333, 556, 556, 333, 556, 556, 500, 556, 
556, 556, 556, 611, 333, 294, 584, 549, 556, 556, 333, 333, 556, 556, 556, 594, 604, 333, 398, 222, 278, 278, 
278, 278, 278, 444, 278, 713, 274, 604, 604, 719, 604, 604, 1052, 222, 222, 222, 222, 222, 278, 222, 222, 
500, 500, 500, 500, 222, 222, 492, 281, 222, 400, 584, 549, 708, 556, 584, 222, 494, 222, 708, 833, 552, 750, 
333, 584, 188, 548, 584, 500, 750, 556, 556, 615, 556, 556, 556, 333, 549, 556, 500, 556, 556, 556, 556, 556, 
556, 944, 333, 556, 556, 556, 779, 779, 556, 556, 556, 834, 834, 834, 354, 370, 365, 979, 611, 611, 556, 556, 
537, 333, 333, 494, 889, 278, 1000, 1094, 652, 670, 584, 549, 823, 728, 556, 556, 611, 355, 333, 333, 333, 
222, 222, 222, 222, 191, 333, 333, 549, 333, 333, 737, 584, 573, 333, 708, 500, 500, 500, 500, 500, 500, 354, 
556, 556, 834, 333, 7
 08, 603, 486, 556, 278, 1021, 531, 556, 713, 917, 278, 374, 278, 354, 278, 542, 556, 556, 834, 834, 333, 
328, 333, 1000, 990, 990, 990, 990, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 552, 278, 333, 333, 
333, 576, 333, 611, 278, 333, 278, 667, 715, 556, 565, 333, 333, 333, 365, 768, 612, 167, 278, 750, 333, 500, 
500, 556, 708, 550, 550, 550, 550, 556, 556, 500, 722, 722, 722, 722, 722, 500, 447, 500, 500, 500, 500, 556, 
500, 500, 500, 500, 500, 556, 463];
-exports.LiberationSansItalicWidths = LiberationSansItalicWidths;
-const LiberationSansRegularWidths = [365, 0, 667, 1000, 1000, 667, 667, 667, 667, 667, 667, 667, 667, 667, 
667, 667, 667, 667, 667, 722, 722, 722, 722, 722, 722, 667, 722, 722, 722, 668, 667, 667, 667, 667, 667, 667, 
667, 667, 667, 723, 667, 667, 784, 722, 838, 722, 556, 611, 778, 551, 778, 778, 778, 778, 722, 604, 354, 354, 
604, 722, 722, 278, 735, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 384, 278, 500, 500, 667, 667, 667, 
556, 556, 668, 556, 556, 556, 556, 833, 833, 722, 722, 722, 722, 722, 722, 778, 1000, 778, 778, 778, 778, 
778, 778, 778, 748, 752, 778, 774, 778, 778, 778, 667, 798, 722, 835, 778, 722, 722, 722, 722, 667, 667, 708, 
708, 708, 708, 708, 708, 708, 708, 708, 708, 625, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 
708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 667, 667, 667, 667, 667, 
618, 611, 611, 611, 611, 611, 778, 667, 722, 722, 722, 722, 722, 722, 722, 722, 722, 667, 667, 855, 722, 722, 
667, 944, 944,
  944, 944, 944, 667, 650, 667, 667, 667, 667, 667, 611, 611, 611, 611, 611, 556, 556, 556, 556, 333, 556, 
889, 889, 1000, 667, 656, 667, 542, 677, 667, 667, 923, 604, 719, 719, 583, 656, 833, 722, 778, 719, 667, 
722, 611, 635, 760, 667, 740, 667, 917, 938, 792, 885, 656, 719, 1010, 722, 489, 865, 542, 719, 667, 278, 
278, 500, 1057, 1010, 854, 583, 635, 556, 573, 531, 365, 583, 556, 556, 669, 458, 559, 559, 438, 583, 688, 
552, 556, 542, 556, 500, 458, 500, 823, 500, 573, 521, 802, 823, 625, 719, 521, 510, 750, 542, 411, 556, 365, 
510, 500, 222, 278, 222, 906, 812, 556, 438, 500, 719, 778, 552, 556, 885, 323, 1073, 556, 578, 578, 556, 
667, 278, 556, 549, 556, 556, 1000, 500, 1000, 1000, 500, 500, 500, 469, 584, 389, 1015, 556, 556, 278, 260, 
575, 708, 334, 334, 278, 278, 333, 260, 350, 500, 500, 333, 500, 500, 500, 500, 333, 556, 525, 604, 333, 656, 
278, 278, 737, 556, 556, 556, 556, 615, 556, 400, 557, 510, 333, 333, 549, 729, 708, 556, 333, 278, 556, 556, 
556, 556, 556, 556, 556, 55
 6, 556, 1000, 556, 1000, 556, 556, 556, 446, 446, 584, 583, 600, 556, 556, 556, 278, 500, 333, 278, 750, 
604, 1000, 556, 834, 556, 556, 556, 556, 500, 556, 556, 556, 556, 611, 333, 222, 222, 294, 294, 324, 324, 
316, 328, 398, 285, 333, 584, 549, 556, 556, 333, 333, 556, 556, 556, 594, 604, 333, 222, 278, 278, 278, 278, 
278, 444, 278, 713, 274, 604, 604, 719, 604, 604, 1052, 222, 222, 222, 222, 222, 278, 222, 222, 500, 500, 
500, 500, 222, 222, 500, 292, 222, 334, 584, 549, 708, 556, 584, 222, 494, 222, 708, 833, 552, 750, 333, 584, 
188, 576, 584, 500, 750, 556, 556, 604, 556, 556, 556, 333, 549, 556, 500, 556, 556, 556, 556, 556, 556, 944, 
333, 556, 556, 556, 781, 781, 556, 556, 556, 834, 834, 834, 354, 370, 365, 979, 611, 611, 556, 556, 537, 333, 
333, 494, 889, 278, 1000, 1094, 648, 690, 584, 549, 823, 713, 556, 556, 611, 355, 333, 333, 333, 222, 222, 
222, 222, 191, 333, 333, 549, 333, 333, 737, 584, 569, 333, 708, 500, 500, 500, 500, 500, 500, 354, 556, 556, 
834, 708, 617, 482, 556
 , 278, 1021, 531, 556, 713, 917, 278, 395, 278, 375, 278, 556, 556, 556, 834, 834, 333, 333, 1000, 990, 990, 
990, 990, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 552, 278, 333, 333, 333, 576, 333, 611, 278, 333, 
278, 667, 722, 556, 559, 333, 333, 333, 333, 333, 333, 333, 365, 768, 612, 167, 278, 750, 333, 333, 500, 500, 
556, 708, 547, 547, 547, 547, 556, 556, 500, 722, 722, 722, 722, 722, 500, 448, 500, 500, 500, 500, 556, 500, 
500, 500, 500, 500, 556, 441];
-exports.LiberationSansRegularWidths = LiberationSansRegularWidths;
-
-/***/ }),
-/* 59 */
-/***/ ((__unused_webpack_module, exports) => {
-
-
-
-Object.defineProperty(exports, "__esModule", ({
-  value: true
-}));
-exports.MyriadProRegularLineHeight = exports.MyriadProRegularFactors = exports.MyriadProItalicLineHeight = 
exports.MyriadProItalicFactors = exports.MyriadProBoldLineHeight = exports.MyriadProBoldItalicLineHeight = 
exports.MyriadProBoldItalicFactors = exports.MyriadProBoldFactors = void 0;
-const MyriadProBoldFactors = [1.36898, 1, 0.90838, 0.868, 0.868, 0.90838, 0.90838, 0.90838, 0.90838, 
0.90838, 0.90838, 0.91945, 0.90838, 0.90838, 0.90838, 0.90838, 0.90838, 0.83637, 0.83637, 0.82391, 0.82391, 
0.82391, 0.82391, 0.82391, 0.82391, 0.91905, 0.96376, 0.96376, 0.97484, 0.90157, 0.80061, 0.80061, 0.80061, 
0.80061, 0.80061, 0.80061, 0.80061, 0.80061, 0.80061, 0.95417, 0.80061, 0.80061, 0.75261, 0.95407, 0.87992, 
0.97484, 0.99793, 0.86275, 0.8768, 0.8019, 0.8768, 0.8768, 1, 0.8768, 0.95407, 1, 1, 1, 1, 0.97069, 0.95407, 
1.0258, 0.887, 1.0258, 1.0258, 1.0258, 1.0258, 1.0258, 1.0258, 1.0258, 1.0258, 1.0258, 1.0258, 0.82976, 
1.0258, 0.73901, 0.73901, 0.85022, 0.85022, 1, 0.83655, 0.83655, 0.97153, 0.83655, 1, 0.83655, 0.84638, 
1.0156, 1.0156, 0.95546, 0.95546, 0.95546, 1, 0.95546, 0.95546, 0.92179, 0.936, 0.92179, 0.92179, 0.92179, 
0.92179, 0.92179, 0.92179, 0.92179, 0.92796, 0.97268, 0.92179, 0.96034, 0.92179, 0.92179, 0.92179, 0.87107, 
0.95638, 0.92361, 0.91709, 0.92179, 0.82
 114, 0.82114, 0.82114, 1, 0.87107, 0.8096, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.8096, 0.8096, 1, 0.8096, 1, 0.96318, 0.89713, 
0.89713, 0.89713, 0.89713, 1, 0.92436, 0.86958, 0.94438, 0.94438, 0.94438, 0.94438, 0.94438, 0.94438, 
0.94438, 0.94438, 0.94438, 0.93704, 0.93704, 0.83689, 0.94438, 0.94438, 0.95353, 0.94083, 0.94083, 0.94083, 
0.94083, 0.94083, 0.91905, 0.89192, 0.90406, 0.90406, 0.90406, 0.90406, 0.90406, 0.9446, 0.9446, 0.9446, 
0.9446, 0.9446, 0.94938, 0.94938, 0.94938, 0.94938, 0.90088, 1, 0.94938, 0.9031, 0.9031, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.94938, 0.94836, 0.94836, 0.94938, 0.93884, 
0.83181, 0.94938, 1.08595, 0.94938, 0
 .94938, 1, 1, 1, 1, 1, 1, 1, 1.02058, 1.02058, 1.16661, 0.78966, 0.94938, 0.97898, 1.18777, 1.01149, 
0.96174, 1, 0.80687, 0.80687, 0.94292, 0.94292, 0.90088, 1, 1.01149, 0.96544, 0.81093, 0.81093, 0.90088, 1, 
1, 0.81093, 0.81093, 0.81093, 0.81093, 0.90088, 0.99793, 0.87548, 1, 0.90088, 1, 1, 0.78076, 0.93582, 1, 1, 
0.91882, 0.99793, 1, 0.97571, 0.94219, 0.94219, 0.84313, 0.97571, 0.89022, 0.9498, 1, 0.90088, 1, 0.9358, 
1.08595, 1, 1, 0.99793, 0.90088, 0.98621, 0.94938, 0.94938, 0.94938, 0.94938, 0.94938, 0.94938, 0.94938, 
0.94938, 0.99793, 1, 1, 0.94938, 1, 0.89903, 0.95933, 0.94938, 0.98607, 1.0373, 1.02058, 1, 1.36145, 0.95933, 
0.95933, 0.93969, 0.80479, 1, 0.80479, 1.024, 1, 1, 1, 0.99793, 1, 1, 0.99793, 0.99793, 1, 1, 0.9577, 
0.92601, 0.9577, 0.9577, 1, 0.9577, 0.98225, 0.90088, 1, 1.02058, 1.08595, 0.8361, 0.8361, 0.81079, 0.81079, 
0.95933, 0.95933, 0.95933, 1, 1, 0.90088, 1, 0.98621, 0.98621, 0.98621, 0.98621, 0.98621, 0.98621, 1.01591, 
0.98621, 1.05486, 1.30692, 1, 1, 1, 1, 1
 , 1, 0.98621, 1.0078, 1.0078, 1.0078, 1.0078, 0.98621, 1.0474, 1.0474, 0.97455, 0.98275, 1, 0.97455, 
0.98981, 0.98981, 0.9314, 0.73977, 1, 0.73903, 1.02058, 1.08595, 1, 1, 1.02058, 1, 1.16161, 1.033, 1, 0.9672, 
0.54324, 1, 1, 1.02058, 1, 0.95617, 1.02058, 1, 1, 0.95933, 0.95933, 0.8271, 0.95933, 1, 0.99793, 1, 1.08595, 
0.95933, 0.91701, 0.98894, 0.9446, 0.9446, 0.9446, 0.9446, 0.9446, 0.91964, 0.90088, 0.9446, 0.9446, 0.9446, 
0.86774, 0.86774, 0.9446, 0.9446, 0.99793, 1, 0.99642, 0.99642, 1, 1.0213, 1.05686, 1, 0.9446, 0.9446, 
0.9446, 0.97898, 0.97455, 0.94292, 0.94292, 1.17173, 0.9897, 0.93582, 1.285, 1, 0.99394, 0.78367, 1.02058, 
1.08595, 0.80535, 0.96361, 0.97407, 0.72851, 0.72851, 0.83734, 0.918, 0.908, 0.908, 0.93582, 1, 0.93582, 
0.93582, 0.86209, 0.97646, 0.97646, 1.0732, 0.97646, 1, 0.62295, 1, 0.9553, 0.90088, 1, 0.78036, 0.78036, 
0.78036, 1, 0.78036, 1, 1, 1.00872, 0.99793, 1, 1, 1, 0.86832, 1, 0.99793, 1.19137, 1, 1, 0.99793, 0.76169, 
1, 1.10208, 1.0128, 1.10208, 0.77452, 
 1, 1.05453, 0.97898, 0.99793, 1, 0.99642, 0.90088, 1, 0.90989, 0.65, 1, 1, 1, 1, 0.99793, 0.95442, 0.95442, 
0.95442, 0.95442, 0.95442, 0.95442, 0.95442, 0.95442, 0.89903, 1, 0.72706, 0.96694, 1, 1, 1, 1, 0.89713, 
1.10208, 0.90088, 0.78076, 1, 1, 1, 1, 0.96694, 1, 1, 1, 1, 1, 0.74854, 0.93582, 1, 1, 1, 1, 0.95442, 1, 
0.95871, 0.95871, 0.95871, 0.95871, 0.95442, 0.95442, 0.95298, 0.97579, 0.97579, 0.97579, 0.97579, 0.97579, 
0.9332, 1.05993, 0.94039, 0.94039, 0.94039, 0.94039, 0.99793, 0.94039, 0.938, 0.938, 0.938, 0.938, 0.99793, 
0.95776];
-exports.MyriadProBoldFactors = MyriadProBoldFactors;
-const MyriadProBoldLineHeight = 1.2;
-exports.MyriadProBoldLineHeight = MyriadProBoldLineHeight;
-const MyriadProBoldItalicFactors = [1.36898, 1, 0.85576, 0.845, 0.845, 0.85576, 0.85576, 0.85576, 0.85576, 
0.85576, 0.85576, 0.85576, 0.85576, 0.85576, 0.85576, 0.85576, 0.85576, 0.80591, 0.80591, 0.80729, 0.80729, 
0.80729, 0.80729, 0.80729, 0.80729, 0.85308, 0.94299, 0.94299, 0.95961, 0.94729, 0.77512, 0.77512, 0.77512, 
0.77512, 0.77512, 0.77512, 0.77512, 0.77512, 0.77512, 0.92098, 0.77512, 0.77512, 0.66862, 0.92222, 0.7927, 
0.95961, 0.97276, 0.83655, 0.86523, 0.7805, 0.86523, 0.86523, 1, 0.86523, 0.92222, 1, 1, 1, 1, 0.92222, 
0.92222, 0.98621, 0.86036, 0.98621, 0.98621, 0.98621, 0.98621, 0.98621, 0.98621, 0.98621, 0.98621, 0.98621, 
0.98621, 0.69323, 0.98621, 0.71743, 0.71743, 0.81698, 0.81698, 1, 0.79726, 0.79726, 0.92655, 0.79726, 1, 
0.79726, 0.81691, 0.98558, 0.98558, 0.92222, 0.92222, 0.92222, 1, 0.92222, 0.92222, 0.90637, 0.909, 0.90637, 
0.90637, 0.90637, 0.90637, 0.90637, 0.90637, 0.90637, 0.92346, 0.89711, 0.90637, 0.88127, 0.90251, 0.90251, 
0.90637, 0.83809, 0.93157, 0.9097
 6, 0.83392, 0.90637, 0.80729, 0.80729, 0.80729, 1, 0.83809, 0.76463, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.76463, 0.76463, 1, 
0.76463, 1, 0.94523, 0.86275, 0.86275, 0.86275, 0.86275, 1, 0.90637, 0.83659, 0.90699, 0.90699, 0.90699, 
0.90699, 0.90699, 0.90699, 0.90699, 0.90699, 0.90699, 0.83509, 0.83509, 0.72459, 0.90699, 0.90699, 0.91605, 
0.9154, 0.9154, 0.9154, 0.9154, 0.9154, 0.85308, 0.85359, 0.85458, 0.85458, 0.85458, 0.85458, 0.85458, 
0.90531, 0.90531, 0.90531, 0.90531, 0.90531, 0.99613, 0.99613, 0.99613, 0.99613, 1.18616, 1, 0.99613, 
0.85811, 0.85811, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
0.99613, 0.92886, 0.92886, 0.99613, 0.92222, 0.8017
 8, 0.99613, 1.08595, 0.99613, 0.99613, 1, 1, 1, 1, 1, 1, 1, 1.02058, 1.02058, 1.16148, 0.76813, 0.99613, 
0.91677, 1.21296, 0.8578, 0.90557, 1, 0.80687, 0.80687, 0.94292, 0.94292, 1.18616, 1, 0.8578, 0.95973, 
0.78216, 0.78216, 1.18616, 1, 1, 0.78216, 0.78216, 0.78216, 0.78216, 1.18616, 0.97276, 0.81539, 1, 1.18616, 
1, 1, 0.78076, 0.93582, 1, 1, 0.91339, 0.97276, 1, 0.91677, 0.9332, 0.9332, 0.76783, 0.91677, 0.89022, 
0.90276, 1, 1.18616, 1, 1.30628, 1.08595, 1, 1, 0.97276, 1.18616, 0.95381, 0.90083, 0.90083, 0.90083, 
0.90083, 0.90083, 0.90083, 0.90083, 0.90083, 0.97276, 1, 1, 0.90083, 1, 0.89903, 0.92168, 0.90083, 0.91324, 
0.91324, 1.02058, 1, 1.36145, 0.92168, 0.92168, 0.9135, 0.80779, 1, 0.80779, 0.98796, 1, 1, 1, 0.97276, 1, 1, 
0.97276, 0.97276, 1, 1, 0.9135, 0.86847, 0.9135, 0.9135, 1, 0.9135, 0.94951, 1.18616, 1, 1.02058, 1.08595, 
0.82891, 0.82711, 0.80479, 0.80178, 0.92168, 0.92168, 0.92168, 1, 1, 1.18616, 1, 0.95381, 0.95381, 0.95381, 
0.95381, 0.95381, 0.95381, 0.97096, 0.95381
 , 1.05486, 1.23026, 1, 1, 1, 1, 1, 1, 0.95381, 0.95381, 0.95381, 0.95381, 0.95381, 0.95381, 0.98981, 
0.98981, 0.95298, 0.9224, 1, 0.95298, 0.95381, 0.95381, 0.85408, 0.6894, 1, 0.74321, 1.02058, 1.08595, 1, 1, 
1.02058, 1, 1.20006, 1.0006, 1, 0.93459, 0.71526, 1, 1, 1.02058, 1, 0.92699, 1.02058, 1, 1, 0.92168, 0.92168, 
0.79464, 0.92168, 1, 0.97276, 1, 1.08595, 0.92168, 0.86847, 0.97276, 0.91513, 0.91513, 0.91513, 0.91513, 
0.91513, 0.87514, 1.18616, 0.91513, 0.91513, 0.91513, 0.85923, 0.85923, 0.91513, 0.91513, 0.97276, 1, 
0.99043, 0.99043, 1, 1.08074, 1.04864, 1, 0.91677, 0.91677, 0.91513, 0.92004, 0.96736, 0.94292, 0.94292, 
1.14542, 0.97733, 0.93582, 1.26, 1, 0.97355, 0.80487, 1.02058, 1.08595, 0.79199, 0.89398, 0.91677, 0.71541, 
0.71541, 0.81625, 0.896, 0.896, 0.896, 0.91782, 1, 0.91782, 0.91782, 0.83266, 0.95077, 0.95077, 1.03493, 
0.95077, 1, 0.55509, 1, 0.93481, 1.18616, 1, 0.748, 0.748, 0.748, 1, 0.748, 1, 1, 0.99973, 0.97276, 1, 1, 1, 
0.88159, 1, 0.97276, 1.17337, 1, 1, 0.97276
 , 0.78694, 1, 1.04502, 1.05214, 1.04502, 0.72651, 1, 0.99531, 0.92332, 0.97276, 1, 0.99043, 1.18616, 1, 
1.00899, 0.698, 1, 1, 1, 1, 0.97276, 0.91677, 0.91677, 0.91677, 0.91677, 0.91677, 0.91677, 0.91677, 0.91677, 
0.89903, 1, 0.66227, 0.96694, 1, 1, 1, 1, 0.86275, 1.04502, 1.18616, 0.78076, 1, 1, 1, 1, 0.96694, 1, 1, 1, 
1, 1, 0.85633, 0.93582, 1, 1, 1, 1, 0.91677, 1, 0.90646, 0.90646, 0.90646, 0.90646, 0.91677, 0.91677, 
0.92061, 0.94236, 0.94236, 0.94236, 0.94236, 0.94236, 0.89544, 1.0051, 0.89364, 0.89364, 0.89364, 0.89364, 
0.97276, 0.89364, 0.9, 0.9, 0.9, 0.9, 0.97276, 0.86842];
-exports.MyriadProBoldItalicFactors = MyriadProBoldItalicFactors;
-const MyriadProBoldItalicLineHeight = 1.2;
-exports.MyriadProBoldItalicLineHeight = MyriadProBoldItalicLineHeight;
-const MyriadProItalicFactors = [1.36898, 1, 0.85158, 0.773, 0.773, 0.85158, 0.85158, 0.85158, 0.85158, 
0.85158, 0.85158, 0.85158, 0.85158, 0.85158, 0.85158, 0.85158, 0.85158, 0.77812, 0.77812, 0.76852, 0.76852, 
0.76852, 0.76852, 0.76852, 0.76852, 0.78112, 0.89591, 0.89591, 0.90561, 0.88836, 0.70466, 0.70466, 0.70466, 
0.70466, 0.70466, 0.70466, 0.70466, 0.70466, 0.70466, 0.87396, 0.70466, 0.70466, 0.62264, 0.86822, 0.7646, 
0.90561, 0.88465, 0.76125, 0.80094, 0.76449, 0.80094, 0.80094, 1, 0.80094, 0.86822, 1, 1, 1, 1, 0.86822, 
0.86822, 0.83864, 0.81402, 0.83864, 0.83864, 0.83864, 0.83864, 0.83864, 0.83864, 0.83864, 0.83864, 0.83864, 
0.83864, 0.65351, 0.83864, 0.728, 0.728, 0.77212, 0.77212, 1, 0.79475, 0.79475, 0.85308, 0.79475, 1, 0.79475, 
0.80553, 0.93637, 0.93637, 0.87514, 0.87514, 0.87514, 1, 0.87514, 0.87514, 0.8588, 0.867, 0.8588, 0.8588, 
0.8588, 0.8588, 0.8588, 0.8588, 0.8588, 0.89386, 0.89947, 0.8588, 0.86026, 0.85751, 0.85751, 0.8588, 0.76013, 
0.82565, 0.85701, 0.77899, 0.858
 8, 0.72421, 0.72421, 0.72421, 1, 0.76013, 0.69866, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.69866, 0.69866, 1, 0.69866, 1, 0.89058, 
0.77598, 0.77598, 0.77598, 0.77598, 1, 0.8588, 0.76013, 0.85991, 0.85991, 0.85991, 0.85991, 0.85991, 0.85991, 
0.85991, 0.85991, 0.85991, 0.8156, 0.8156, 0.69461, 0.85991, 0.85991, 0.80811, 0.87832, 0.87832, 0.87832, 
0.87832, 0.87832, 0.78112, 0.82352, 0.77512, 0.77512, 0.77512, 0.77512, 0.77512, 0.8562, 0.8562, 0.8562, 
0.8562, 0.8562, 0.93859, 0.93859, 0.93859, 0.93859, 1.15012, 1, 0.93859, 0.8075, 0.8075, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.93859, 0.9486, 0.9486, 0.93859, 0.88307, 
0.77025, 0.93859, 1.08595, 0.93
 859, 0.93859, 1, 1, 1, 1, 1, 1, 1, 1.27014, 1.02058, 1.06383, 0.70926, 0.93859, 0.94399, 1.18417, 0.83537, 
0.93298, 1, 0.85034, 0.85034, 1.0222, 1.0222, 1.15012, 1, 0.83537, 0.79121, 0.846, 0.846, 1.15012, 1, 1, 
0.846, 0.846, 0.846, 0.846, 1.15012, 0.88465, 0.77487, 1, 1.15012, 1, 1, 0.75945, 0.75945, 1, 1, 0.9161, 
0.88465, 1, 0.94399, 0.86847, 0.86847, 0.8544, 0.94399, 0.79519, 0.93942, 1, 1.15012, 1, 1.03901, 1.08595, 1, 
1, 0.88465, 1.15012, 0.82424, 0.81453, 0.81453, 0.81453, 0.81453, 0.81453, 0.81453, 0.81453, 0.81453, 
0.88465, 1, 1, 0.81453, 1, 0.89903, 0.96017, 0.81453, 0.92388, 0.92388, 1.02058, 1, 1.36145, 0.96186, 
0.96186, 0.9278, 0.84943, 1, 0.70869, 1.0186, 1, 1, 1, 0.88465, 1, 1, 0.88465, 0.88465, 1, 1, 0.94219, 0.878, 
0.94219, 0.94219, 1, 0.94219, 0.88075, 1.15012, 1, 1.02058, 1.08595, 0.73541, 0.73361, 0.73572, 0.73572, 
0.96017, 0.96017, 0.96017, 1, 1, 1.15012, 1, 1.03075, 0.82424, 0.82424, 0.82424, 0.82424, 0.82424, 1.02738, 
0.82424, 1.02119, 1.06233, 1, 1, 1, 1, 1, 1
 , 1.03075, 1.03075, 1.03075, 1.03075, 1.03075, 0.82424, 1.02175, 1.02175, 0.912, 0.922, 1, 0.912, 1.03075, 
1.03075, 0.88787, 0.83911, 1, 0.66266, 1.02058, 1.08595, 1, 1, 1.02058, 1, 1.05233, 1.06676, 1, 0.96998, 
0.69353, 1, 1, 1.02058, 1, 0.95829, 1.02058, 1, 1, 0.96017, 0.96017, 0.86865, 0.96017, 1, 0.88465, 1, 
1.08595, 0.96017, 0.88, 0.88465, 0.93859, 0.93859, 0.93859, 0.93859, 0.93859, 0.84759, 1.15012, 0.93859, 
0.93859, 0.93859, 0.86799, 0.86799, 0.93859, 0.93859, 0.88465, 1, 0.9005, 0.9005, 1, 0.94565, 0.9446, 1, 
0.8562, 0.8562, 0.93859, 0.94399, 0.91974, 0.85283, 0.85283, 1.04828, 0.86936, 0.75945, 1.124, 1, 0.93969, 
0.78815, 1.02058, 1.08595, 0.74948, 0.85769, 0.94399, 0.69046, 0.62864, 0.85639, 1.027, 1.027, 1.027, 
0.87321, 1, 0.87321, 0.87321, 0.86948, 0.95493, 0.95493, 0.98391, 0.95493, 1, 0.53609, 1, 0.93758, 1.15313, 
1, 0.746, 0.746, 0.746, 1, 0.746, 1, 1, 0.90083, 0.88465, 1, 1, 1, 0.89217, 1, 0.88465, 1.17337, 1, 1, 
0.88465, 0.75187, 1, 1.12658, 1.03737, 1.12658, 0.884
 17, 1, 0.95119, 0.94578, 0.88465, 1, 0.9005, 1.15012, 1, 1.08106, 0.669, 1, 1, 1, 1, 0.88465, 0.94578, 
0.94578, 0.94578, 0.94578, 0.94578, 0.94578, 0.94578, 0.94578, 0.89903, 1, 0.65507, 0.9219, 1, 1, 1, 1, 
0.77598, 1.12658, 1.15012, 0.75945, 1, 1, 1, 1, 0.9219, 1, 1, 1, 1, 1, 0.85034, 0.75945, 1, 1, 1, 1, 0.94578, 
1, 0.91123, 0.91123, 0.91123, 0.91123, 0.94578, 0.94578, 0.91, 0.979, 0.979, 0.979, 0.979, 0.979, 0.882, 
0.93559, 0.882, 0.882, 0.882, 0.882, 0.88465, 0.882, 0.83, 0.83, 0.83, 0.83, 0.88465, 0.84596];
-exports.MyriadProItalicFactors = MyriadProItalicFactors;
-const MyriadProItalicLineHeight = 1.2;
-exports.MyriadProItalicLineHeight = MyriadProItalicLineHeight;
-const MyriadProRegularFactors = [1.36898, 1, 0.91755, 0.788, 0.788, 0.91755, 0.91755, 0.91755, 0.91755, 
0.91755, 0.91755, 0.92138, 0.91755, 0.91755, 0.91755, 0.91755, 0.91755, 0.8126, 0.8126, 0.80314, 0.80314, 
0.80314, 0.80314, 0.80314, 0.80314, 0.85608, 0.92222, 0.92222, 0.92915, 0.92819, 0.73764, 0.73764, 0.73764, 
0.73764, 0.73764, 0.73764, 0.73764, 0.73764, 0.73764, 0.90991, 0.73764, 0.73764, 0.7154, 0.90284, 0.86169, 
0.92915, 0.92241, 0.79726, 0.83051, 0.81884, 0.83051, 0.83051, 1, 0.83051, 0.90284, 1, 1, 1, 1, 0.90976, 
0.90284, 0.86023, 0.82873, 0.86023, 0.86023, 0.86023, 0.86023, 0.86023, 0.86023, 0.86023, 0.86023, 0.86023, 
0.86023, 0.80513, 0.86023, 0.74, 0.74, 0.8126, 0.8126, 1, 0.84869, 0.84869, 0.91172, 0.84869, 1, 0.84869, 
0.85588, 0.96518, 0.96518, 0.91115, 0.91115, 0.91115, 1, 0.91115, 0.91115, 0.8858, 0.894, 0.8858, 0.8858, 
0.8858, 0.8858, 0.8858, 0.8858, 0.8858, 0.94307, 0.98612, 0.8858, 0.94007, 0.8858, 0.8858, 0.8858, 0.79761, 
0.89992, 0.87791, 0.81992, 0.8858, 0.74
 498, 0.74498, 0.74498, 1, 0.79761, 0.73914, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.73914, 0.73914, 1, 0.73914, 1, 0.89297, 0.81363, 
0.81363, 0.81363, 0.81363, 1, 0.8858, 0.79611, 0.89591, 0.89591, 0.89591, 0.89591, 0.89591, 0.89591, 0.89591, 
0.89591, 0.89591, 0.88157, 0.88157, 0.82528, 0.89591, 0.89591, 0.83659, 0.89633, 0.89633, 0.89633, 0.89633, 
0.89633, 0.85608, 0.83089, 0.8111, 0.8111, 0.8111, 0.8111, 0.8111, 0.90531, 0.90531, 0.90531, 0.90531, 
0.90531, 0.86667, 0.86667, 0.86667, 0.86667, 0.90088, 0.86667, 0.86936, 0.86936, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.86667, 0.95308, 0.95308, 0.86667, 0.90706, 
0.78105, 0.86667, 1.08595, 0.86667,
  0.86667, 1, 1, 1, 1, 1, 1, 1, 1.27014, 1.02058, 1.0664, 0.72601, 0.86667, 1.0231, 1.22736, 0.92006, 
0.97358, 1, 0.85034, 0.85034, 1.0222, 1.0222, 0.90088, 0.92006, 0.80549, 0.896, 0.896, 0.90088, 0.896, 0.896, 
0.896, 0.896, 0.90088, 0.92241, 0.87064, 1, 0.90088, 1, 0.74505, 0.74505, 0.91882, 0.92241, 1.01411, 0.89903, 
0.89903, 0.93372, 1.01411, 0.79519, 0.98088, 1, 0.90088, 1.03901, 1.08595, 1, 1, 0.92241, 0.90088, 0.84224, 
0.90083, 0.90083, 0.90083, 0.90083, 0.90083, 0.90083, 0.90083, 0.90083, 0.92241, 1, 0.90083, 1, 0.89903, 
0.99793, 0.90083, 0.98699, 0.98699, 1.02058, 1, 1.36145, 0.99793, 0.99793, 0.97276, 0.82784, 1, 0.69067, 
1.05099, 1, 1, 1, 0.92241, 1, 0.92241, 0.92241, 1, 1.00512, 0.928, 1.00512, 1.00512, 1, 1.00512, 0.89713, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.90088, 1.02058, 1.08595, 0.75339, 0.75339, 0.76575, 0.76575, 0.99793, 
0.99793, 0.99793, 1, 1, 0.90088, 1.05326, 0.84224, 0.84224, 0.84224, 0.84224, 0.84224, 1.07469, 0.84224, 
1.02119, 1.1536, 1, 1, 1, 1, 1, 1, 1.05326
 , 1.06226, 1.06226, 1.06226, 1.06226, 0.84224, 1.09377, 1.09377, 0.938, 0.986, 1, 0.938, 1.06226, 1.06226, 
0.944, 0.83704, 1, 0.81441, 1.02058, 1.08595, 1, 1, 1.02058, 1, 1.05638, 1.08927, 1, 1.00119, 0.54324, 1, 1, 
1.02058, 1, 0.95978, 1.02058, 1, 1, 0.99793, 0.99793, 0.91887, 0.99793, 1, 0.92241, 1, 1.08595, 0.99793, 
0.938, 0.89364, 0.98714, 0.98714, 0.98714, 0.98714, 0.98714, 0.91434, 0.90088, 0.98714, 0.98714, 0.98714, 
0.88888, 0.88888, 0.98714, 0.98714, 0.92241, 1, 0.91009, 0.91009, 1, 0.93484, 0.97198, 1, 0.89876, 0.89876, 
0.98714, 1.0231, 0.95325, 0.85283, 0.85283, 1.07257, 0.89073, 0.74505, 1.156, 1, 0.99007, 0.80442, 1.02058, 
1.08595, 0.74705, 0.91879, 1.01231, 0.73002, 0.66466, 0.94935, 1.06904, 1.06304, 1.06304, 0.93173, 1, 
0.93173, 0.93173, 0.98472, 0.98196, 0.98196, 1.024, 0.98196, 1, 0.56866, 1, 0.98972, 0.90088, 1, 0.792, 
0.792, 0.792, 1, 0.792, 1, 1, 0.9332, 0.92241, 1, 1, 0.89762, 1, 0.92241, 1.23456, 1, 1, 0.92241, 0.71119, 1, 
1.19137, 1.04552, 1.19137, 0.904, 1, 0
 .96017, 1.0231, 0.92241, 1, 0.91009, 0.90088, 0.90388, 0.619, 1, 1, 1, 1, 0.92241, 0.99074, 0.99074, 
0.99074, 0.99074, 0.99074, 0.99074, 0.99074, 0.99074, 0.89903, 1, 0.76305, 0.9219, 1, 1, 1, 1, 0.81363, 
1.19137, 0.90088, 0.74505, 1, 1, 1, 1, 0.9219, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.72458, 0.74505, 1, 1, 1, 1, 1, 
0.99074, 1, 0.95817, 0.95817, 0.95817, 0.95817, 0.99074, 0.99074, 0.962, 1.01915, 1.01915, 1.01915, 1.01915, 
1.01915, 0.926, 0.96705, 0.942, 0.942, 0.942, 0.942, 0.92241, 0.942, 0.856, 0.856, 0.856, 0.856, 0.92241, 
0.92761];
-exports.MyriadProRegularFactors = MyriadProRegularFactors;
-const MyriadProRegularLineHeight = 1.2;
-exports.MyriadProRegularLineHeight = MyriadProRegularLineHeight;
-
-/***/ }),
-/* 60 */
-/***/ ((__unused_webpack_module, exports) => {
-
-
-
-Object.defineProperty(exports, "__esModule", ({
-  value: true
-}));
-exports.SegoeuiRegularLineHeight = exports.SegoeuiRegularFactors = exports.SegoeuiItalicLineHeight = 
exports.SegoeuiItalicFactors = exports.SegoeuiBoldLineHeight = exports.SegoeuiBoldItalicLineHeight = 
exports.SegoeuiBoldItalicFactors = exports.SegoeuiBoldFactors = void 0;
-const SegoeuiBoldFactors = [1.76738, 1, 0.97363, 0.93506, 0.93506, 0.97363, 0.97363, 0.97363, 0.97363, 
0.97363, 0.97363, 1.01149, 0.97363, 0.97363, 0.97363, 0.97363, 0.97363, 0.88776, 0.88776, 0.8641, 0.8641, 
0.8641, 0.8641, 0.8641, 0.8641, 0.98243, 1.02096, 1.02096, 1.02096, 0.97826, 0.79795, 0.79795, 0.79795, 
0.79795, 0.79795, 0.79795, 0.79795, 0.79795, 0.79795, 1.09251, 0.79795, 0.79795, 0.7676, 1.06085, 0.98167, 
1.02096, 1.03424, 0.85132, 0.914, 0.85134, 0.914, 0.914, 1, 0.914, 1.06085, 1, 0.99862, 0.99862, 1, 1.06085, 
1.06085, 1.1406, 0.97138, 1.1406, 1.1406, 1.1406, 1.1406, 1.1406, 1.1406, 1.1406, 1.1406, 1.1406, 1.1406, 
1.01134, 1.1406, 0.8007, 0.8007, 0.89858, 0.89858, 1, 0.83693, 0.83693, 1.0388, 0.83693, 1, 0.83693, 0.83693, 
1.14889, 1.14889, 1.09398, 1.09398, 1.09398, 1, 1.09398, 1.09398, 0.97489, 0.93994, 0.97426, 0.97489, 
0.97426, 0.97426, 0.97426, 0.97489, 0.97489, 0.95493, 1.03089, 0.97489, 1.02546, 0.97489, 0.97489, 0.97426, 
0.92094, 0.99346, 1.0595, 1.02112, 0.97489
 , 0.90399, 0.90399, 0.90399, 1, 0.92094, 0.84041, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.84041, 0.84041, 0.84041, 0.84041, 1, 
0.94793, 0.95923, 0.95923, 0.95923, 0.95923, 1, 0.97489, 0.92094, 1.00135, 1.00135, 1.00135, 1.00135, 
1.00135, 1.00135, 1.00135, 1.00135, 1.00135, 0.90996, 0.90996, 0.84097, 1.00135, 1.00135, 1, 1.06467, 
1.06467, 1.06467, 1.06467, 1.06467, 0.98243, 0.86039, 0.90996, 0.90996, 0.90996, 0.90996, 0.90996, 0.99361, 
0.99361, 0.99361, 0.99361, 0.99361, 0.96752, 0.96752, 0.96752, 0.96752, 0.91056, 1, 0.96752, 0.93136, 
0.93136, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.96752, 
1.03574, 1.03574, 0.96752, 1.17647, 0.81525, 0.96752, 1.
 29004, 0.96752, 0.96752, 0.86182, 0.94434, 0.86279, 0.86279, 0.94434, 1, 1, 1.2107, 1.2107, 1.16939, 
0.97847, 0.96752, 1.01519, 1.56942, 1.16579, 1.0192, 1, 0.94856, 0.94856, 1.1085, 1.1085, 1.03959, 1, 
1.16579, 1.20642, 0.86304, 0.86304, 1.15103, 1, 1, 0.86304, 0.86304, 0.86304, 0.86304, 0.64663, 1.03424, 
0.96268, 1.42603, 1.15103, 1, 1.04315, 0.81378, 0.9754, 1, 1, 1.18622, 1, 1, 1.01359, 0.73047, 0.73047, 
1.03057, 1.03517, 0.94994, 1.00886, 1.34163, 1.3871, 1, 0.87815, 1.28826, 1, 1, 1.03424, 0.75953, 1.02285, 
0.97278, 0.97278, 0.97278, 0.97278, 0.97278, 0.97278, 0.97278, 0.97278, 1.03424, 1, 0.91211, 0.97278, 1, 
0.89903, 0.99041, 0.97278, 0.97531, 1.02597, 1.2107, 1.21172, 1, 1.0008, 1.0008, 0.97122, 0.9824, 0.96039, 
0.9824, 1.15103, 1, 1.42603, 1, 1.03424, 1.15749, 1, 1.03424, 1.03424, 1, 0.93503, 1.01359, 1.01932, 1.01359, 
1.01359, 1, 1.01359, 1.02798, 0.94282, 1, 1.2107, 1.29004, 1.04478, 1.04478, 1.03372, 1.03372, 0.98561, 
1.00879, 0.98561, 1.15296, 1, 1.21994, 1, 1.02285, 1
 .02285, 1.02285, 1.02285, 1.02285, 1.02285, 1.08692, 1.02285, 1.13973, 2.10339, 1, 1, 0.9716, 1.42603, 
1.42603, 1, 1.02285, 1.18102, 1.18102, 1.18102, 1.18102, 1.02285, 1.02285, 1.02285, 1.00527, 1.02277, 1, 
1.00527, 1.02285, 1.02285, 0.98683, 0.9455, 1, 0.90418, 1.2107, 1.29004, 1, 1.03424, 1.2107, 1.07733, 
1.18874, 1.13005, 1, 1.0302, 0.75155, 1, 1, 1.2107, 1.222, 1.0016, 1.2107, 1, 1, 0.99041, 0.99041, 0.96692, 
0.99041, 1, 1.03424, 1, 1.29004, 0.99041, 0.99561, 1.06497, 1.0008, 1, 1.0008, 1, 1, 0.97931, 0.79912, 1, 
1.0008, 1.0008, 0.98439, 0.98439, 1.0008, 1.0008, 1.03424, 1.15749, 1.15749, 1.14169, 0.99862, 1.10818, 
1.24866, 0.69825, 1.0008, 1.0008, 1, 1.01519, 0.91572, 1.1085, 1.1085, 1.16897, 0.97529, 0.9754, 1.25635, 
1.19687, 1.04983, 0.90434, 1.2107, 1.28826, 0.96085, 1.0499, 1.01359, 0.71703, 0.71703, 1.04016, 0.98633, 
0.98633, 0.98633, 1.04394, 1.04394, 1.04394, 1.04394, 1.23203, 1.02258, 1.02258, 1.18416, 1.02258, 1, 
1.18622, 1, 0.99921, 0.81378, 1, 0.79104, 0.79104, 0.79
 104, 0.79104, 0.79104, 1, 1.02956, 0.8727, 1.03424, 1.10948, 1, 1, 0.8965, 0.93803, 1.03424, 1.59578, 1, 
1.2886, 1.03424, 0.90137, 1, 1.16862, 1.23085, 1.16862, 1.07034, 1, 1.13189, 1.01519, 1.03424, 1.15749, 
1.17389, 1.15103, 1, 0.95161, 0.771, 0.87025, 0.87025, 0.87025, 0.87025, 1.03424, 0.99041, 0.99041, 0.99041, 
0.99041, 0.99041, 0.99041, 0.99041, 0.99041, 0.74627, 0.75155, 0.99297, 1.21408, 1.21408, 1.21408, 1, 
1.18328, 0.95923, 1.16862, 1.01173, 0.81378, 0.79795, 1.09466, 0.97278, 1.02065, 1, 1.21408, 1.24633, 
1.12454, 1, 1, 1, 0.9754, 1, 1, 1.09193, 1.09193, 0.99041, 1, 1.06628, 1.06628, 1.06628, 1.06628, 0.99041, 
0.99041, 0.97454, 1.02511, 1.02511, 1.02511, 1.02511, 1.02511, 0.99298, 1.07237, 0.96752, 0.96752, 0.96752, 
0.96752, 1.03424, 0.96752, 0.95801, 0.95801, 0.95801, 0.95801, 1.03424, 1.0106];
-exports.SegoeuiBoldFactors = SegoeuiBoldFactors;
-const SegoeuiBoldLineHeight = 1.33008;
-exports.SegoeuiBoldLineHeight = SegoeuiBoldLineHeight;
-const SegoeuiBoldItalicFactors = [1.76738, 1, 0.97363, 0.94385, 0.94385, 0.97363, 0.97363, 0.97363, 0.97363, 
0.97363, 0.97363, 1.00811, 0.97363, 0.97363, 0.97363, 0.97363, 0.97363, 0.89723, 0.89723, 0.87897, 0.87897, 
0.87897, 0.87897, 0.87897, 0.87897, 0.9817, 1.0426, 1.0426, 1.0426, 1.09818, 0.79429, 0.79429, 0.79429, 
0.79429, 0.79429, 0.79429, 0.79429, 0.79429, 0.79429, 1.10466, 0.79429, 0.79429, 0.77702, 1.05815, 0.99137, 
1.0426, 1.036, 0.85292, 0.91149, 0.86869, 0.91149, 0.91149, 1, 0.91149, 1.05815, 1, 0.99862, 0.99862, 1, 
1.05815, 1.05815, 1.1406, 0.97441, 1.1406, 1.1406, 1.1406, 1.1406, 1.1406, 1.1406, 1.1406, 1.1406, 1.1406, 
1.1406, 0.95253, 1.1406, 0.79631, 0.79631, 0.90128, 0.90128, 1, 0.83853, 0.83853, 1.06662, 0.83853, 1, 
0.83853, 0.83853, 1.04396, 1.04396, 1.10615, 1.10615, 1.10615, 1, 1.10615, 1.10615, 0.97552, 0.91602, 
0.97552, 0.97552, 0.97552, 0.97552, 0.97552, 0.97552, 0.97552, 0.98999, 1.07205, 0.97552, 1.0347, 0.97552, 
0.97552, 0.97552, 0.94436, 1.00356, 1.04694,
  1.01945, 0.97552, 0.88641, 0.88641, 0.88641, 1, 0.94436, 0.80527, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.80527, 0.80527, 0.80527, 
0.80527, 1, 0.98015, 0.96083, 0.96083, 0.95923, 0.96083, 1, 0.97552, 0.94436, 1.00135, 1.00135, 1.00135, 
1.00135, 1.00135, 1.00135, 1.00135, 1.00135, 1.00135, 0.91142, 0.91142, 0.86142, 1.00135, 1.00135, 1, 
1.06777, 1.06777, 1.06777, 1.06777, 1.06777, 0.9817, 0.84918, 0.91142, 0.91142, 0.91142, 0.91142, 0.91142, 
0.99361, 0.99361, 0.99361, 0.99361, 0.99361, 1.06585, 1.06585, 1.06585, 1.06585, 1.31818, 1, 1.06585, 
0.96705, 0.96705, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1.06585, 1.04961, 1.04961, 1.06585, 1.10953, 0.83
 284, 1.06585, 1.29004, 1.06585, 1.06585, 0.86224, 0.94434, 0.86364, 0.86279, 0.94434, 1, 1, 1.21237, 
1.21237, 1.16939, 0.97847, 1.06585, 0.97042, 1.57293, 1.16579, 0.99607, 1, 0.95107, 0.95107, 1.11144, 
1.11144, 1.31818, 1, 1.16579, 1.20502, 0.83055, 0.83055, 1.31818, 1, 1, 0.83055, 0.83055, 0.83055, 0.83055, 
1.31818, 1.036, 0.93491, 1.42603, 1.31818, 1, 1.04315, 0.81378, 0.9754, 1, 1, 1.18754, 1, 1, 0.97042, 
0.72959, 0.72959, 1.0033, 0.97042, 0.94994, 1.008, 1.34163, 1.31818, 1, 1.27126, 1.29004, 1, 1, 1.036, 
1.31818, 1.14236, 0.93503, 0.93503, 0.93503, 0.93503, 0.93503, 0.93503, 0.93503, 0.93503, 1.036, 1, 0.91406, 
0.93503, 1, 0.89903, 0.97922, 0.93503, 0.9898, 0.9898, 1.21237, 1.21339, 1, 1.00639, 1.00639, 0.93125, 
1.03959, 0.96039, 1.03959, 1.1261, 1, 1.42603, 1, 1.036, 1.15574, 1, 1.036, 1.036, 1, 0.93327, 0.97042, 
1.02897, 0.97042, 0.97042, 1, 0.97042, 0.98721, 1.31818, 1, 1.21237, 1.29004, 1.05356, 1.05356, 1.03372, 
1.03372, 0.97922, 0.97922, 0.97922, 1.15296, 1, 1.31818, 1, 
 1.14236, 1.14236, 1.14236, 1.14236, 1.14236, 1.14236, 1.04302, 1.14236, 1.13904, 2.10339, 1, 1, 0.9716, 
1.42603, 1.42603, 1, 1.14236, 1.14236, 1.14236, 1.14236, 1.14236, 1.14236, 0.94552, 1.01582, 1.01054, 
1.00518, 1, 1.01054, 1.14236, 1.14236, 0.97981, 1.09125, 1, 0.90418, 1.21237, 1.29004, 1, 1.03336, 1.21237, 
1.23199, 1.18775, 1.19508, 1, 1.02471, 0.79487, 1, 1, 1.21237, 1.222, 1.02186, 1.21237, 1, 1, 0.97922, 
0.97922, 1.01034, 0.97922, 1, 1.036, 1, 1.29004, 0.97922, 1, 1.02809, 0.94165, 0.94165, 0.94165, 0.94165, 
0.94165, 0.91981, 1.31818, 0.94165, 0.94165, 0.94165, 1.00351, 1.00351, 0.94165, 0.94165, 1.036, 1.15574, 
1.15574, 1.13934, 0.99862, 1.26781, 1.24866, 0.69825, 0.94165, 0.94165, 0.94165, 0.97042, 0.91484, 1.11144, 
1.11144, 1.16798, 0.97639, 0.9754, 1.26514, 1.16541, 1.10687, 0.99314, 1.21237, 1.29004, 0.96085, 1.04232, 
0.97042, 0.73541, 0.73541, 1.04016, 0.98633, 0.98633, 0.98633, 1.04745, 1.04394, 1.04745, 1.04745, 1.23203, 
1.0276, 1.0276, 1.18416, 1.0276, 1, 1.18622, 
 1, 0.98387, 1.31818, 1, 0.78929, 0.78929, 0.78929, 0.78929, 0.78929, 1, 1.02956, 0.87357, 1.036, 1.15574, 1, 
1, 0.93377, 0.93028, 1.036, 1.59754, 1, 1.2886, 1.036, 0.90068, 1, 1.1261, 1.35125, 1.16862, 1.05403, 1, 
1.11121, 0.97042, 1.036, 1.15574, 1.17389, 1.31818, 1, 0.95161, 0.771, 0.87025, 0.87025, 0.87025, 0.87025, 
1.036, 0.97922, 0.97922, 0.97922, 0.97922, 0.97922, 0.97922, 0.97922, 0.97922, 0.74627, 0.75155, 0.98946, 
1.21261, 1.24047, 1.24047, 1, 1.1349, 0.96083, 1.1261, 1.31818, 0.81378, 0.79429, 1.09097, 0.93503, 0.96609, 
1, 1.21261, 1.24633, 1.09125, 1, 1, 1, 0.9754, 1, 1, 1.13269, 1.13269, 0.97922, 1, 1.07514, 1.07514, 1.07514, 
1.07514, 0.97922, 0.97922, 0.95874, 1.02197, 1.02197, 1.02197, 1.02197, 1.02197, 0.98507, 1.08578, 0.96752, 
0.96752, 0.96752, 0.96752, 1.036, 0.96752, 0.97168, 0.97168, 0.97168, 0.97168, 1.036, 0.95134];
-exports.SegoeuiBoldItalicFactors = SegoeuiBoldItalicFactors;
-const SegoeuiBoldItalicLineHeight = 1.33008;
-exports.SegoeuiBoldItalicLineHeight = SegoeuiBoldItalicLineHeight;
-const SegoeuiItalicFactors = [1.76738, 1, 0.94729, 0.85498, 0.85498, 0.94729, 0.94729, 0.94729, 0.94729, 
0.94729, 0.94729, 0.94729, 0.94729, 0.94729, 0.94729, 0.94729, 0.94729, 0.85944, 0.85944, 0.88506, 0.88506, 
0.88506, 0.88506, 0.88506, 0.88506, 0.8858, 0.9858, 0.9858, 0.9858, 0.9607, 0.74817, 0.74817, 0.74817, 
0.74817, 0.74817, 0.74817, 0.74817, 0.74817, 0.74817, 1.03849, 0.74817, 0.74817, 0.71022, 0.98039, 0.90883, 
0.9858, 0.96927, 0.80016, 0.88449, 0.82791, 0.88449, 0.88449, 1, 0.88449, 0.98039, 1, 0.99862, 0.99862, 1, 
0.98039, 0.98039, 0.95782, 0.84421, 0.95782, 0.95782, 0.95782, 0.95782, 0.95782, 0.95782, 0.95782, 0.95782, 
0.95782, 0.95782, 0.84171, 0.95782, 0.69238, 0.69238, 0.89898, 0.89898, 1, 0.83231, 0.83231, 0.98316, 
0.84723, 1, 0.84723, 0.83231, 0.98183, 0.98183, 1.03989, 1.03989, 1.03989, 1, 1.03989, 1.03989, 0.96924, 
0.92383, 0.96924, 0.96924, 0.96924, 0.96924, 0.96924, 0.96924, 0.96924, 1.01284, 1.05734, 0.96924, 0.99877, 
0.96924, 0.96924, 0.96924, 0.86237, 0.90082
 , 0.97642, 0.97296, 0.96924, 0.80595, 0.80595, 0.80595, 1, 0.86237, 0.74524, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.74524, 0.74524, 
0.74524, 0.74524, 1, 0.86075, 0.86091, 0.86091, 0.85771, 0.86091, 1, 0.96924, 0.86237, 0.95402, 0.95402, 
0.95402, 0.95402, 0.95402, 0.95402, 0.95402, 0.95402, 0.95402, 0.83089, 0.83089, 0.77596, 0.95402, 0.95402, 
0.94143, 0.98448, 0.98448, 0.98448, 0.98448, 0.98448, 0.8858, 0.78614, 0.83089, 0.83089, 0.83089, 0.83089, 
0.83089, 0.93285, 0.93285, 0.93285, 0.93285, 0.93285, 0.97454, 0.97454, 0.97454, 0.97454, 1.04839, 1, 
0.97454, 0.92916, 0.92916, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 0.97454, 1.0976, 1.0976, 0.97454,
  1.15373, 0.78032, 0.97454, 1.24822, 0.97454, 0.97454, 0.86182, 0.94434, 0.86321, 0.8649, 0.94434, 1, 1, 
1.45994, 1.17308, 1.07403, 0.94565, 0.97454, 0.97454, 1.39016, 0.92481, 0.98205, 1, 0.91082, 0.91082, 1.0949, 
1.0949, 1.04839, 1, 0.92481, 1.15621, 0.87207, 0.87207, 1.04839, 1, 1, 0.87207, 0.87207, 0.87207, 0.87207, 
1.04839, 0.96927, 0.99821, 1.42603, 1.04839, 1, 1.04315, 0.78383, 0.78383, 1, 1, 1.23393, 1, 1, 0.97454, 
0.67603, 0.67603, 0.95391, 0.97454, 0.94261, 1.05097, 1.34163, 1.04839, 1, 0.81965, 1.24822, 1, 1, 0.96927, 
1.04839, 0.93146, 0.87533, 0.87533, 0.87533, 0.87533, 0.87533, 0.87533, 0.87533, 0.87533, 0.96927, 1, 
0.73584, 0.87533, 1, 0.89903, 1.01054, 0.87533, 1.04, 1.04, 1.17308, 1.17308, 1, 1.03342, 1.03342, 0.93854, 
1.14763, 0.95996, 0.95748, 1.06151, 1, 1.42603, 1, 0.96927, 1.09836, 1, 0.96927, 0.96927, 1, 0.87709, 
0.97454, 1.03809, 0.97454, 0.97454, 1, 0.97454, 0.88409, 1.04839, 1, 1.17308, 1.24822, 0.9245, 0.9245, 
0.94868, 0.94868, 1.00176, 1.00176, 1.00176, 1.
 15296, 1, 1.04839, 1, 1.16484, 0.93146, 0.93146, 0.93146, 0.93146, 0.93146, 1.12761, 0.93146, 1.14589, 
1.96791, 1, 1, 0.97622, 1.42603, 1.42603, 1, 1.16484, 1.2, 1.2, 1.2, 1.2, 0.93146, 1.08132, 1.08132, 0.98047, 
1.02148, 1, 0.98047, 1.16484, 1.16484, 1.0119, 1.04861, 1, 0.78755, 1.17308, 1.24822, 1, 0.96927, 1.17308, 
1.31868, 1.17984, 1.23736, 1, 1.02989, 0.63218, 1, 1, 1.17308, 1.22135, 1.04724, 1.17308, 1, 1, 1.01054, 
1.01054, 0.9857, 1.01054, 1, 0.96927, 1, 1.24822, 1.01054, 1.0127, 1.06234, 0.96225, 0.96225, 0.96225, 
0.96225, 0.96225, 0.90171, 1.04839, 0.96225, 0.96225, 0.96225, 1.0326, 1.0326, 0.96225, 0.96225, 0.96927, 
1.09836, 1.13525, 1.09836, 0.99862, 1.1781, 1.22326, 0.69825, 0.8761, 0.8761, 0.96225, 0.97454, 0.85273, 
0.91349, 0.91349, 1.083, 0.92586, 0.78383, 1.21191, 1.01473, 1.11826, 0.8965, 1.17308, 1.24822, 0.91578, 
1.0557, 0.97454, 0.77349, 0.70424, 1.05365, 1.12317, 1.12317, 1.12317, 0.94945, 0.94945, 0.94945, 0.94945, 
1.18414, 1.06598, 1.06598, 1.18416, 1.06598, 1
 , 1.20808, 1, 0.97783, 1.04839, 1, 0.79004, 0.79004, 0.79004, 0.79004, 0.79004, 1, 1.06483, 0.80597, 
0.96927, 1.01522, 1, 1, 0.94818, 0.93574, 0.96927, 1.42531, 1, 1.2886, 0.96927, 0.86438, 1, 1.16344, 1.30679, 
1.16344, 1.02759, 1, 1.05401, 0.97454, 0.96927, 1.09836, 1.15222, 1.04839, 1, 0.81965, 0.77295, 0.87025, 
0.87025, 0.87025, 0.87025, 0.96927, 1.00351, 1.00351, 1.00351, 1.00351, 1.00351, 1.00351, 1.00351, 1.00351, 
0.74627, 0.75155, 0.98946, 1.20088, 1.09971, 1.09971, 1, 1.09971, 0.86091, 1.16344, 1.04839, 0.78383, 
0.74817, 1.03754, 0.87533, 0.98705, 1, 1.20088, 1.24633, 1.07497, 1, 1, 1, 0.78032, 1, 1, 1.10742, 1.10742, 
1.00351, 1, 1.0675, 1.0675, 1.0675, 1.0675, 1.00351, 1.00351, 0.94629, 0.9973, 0.9973, 0.9973, 0.9973, 
0.9973, 0.91016, 1.02732, 0.96777, 0.96777, 0.96777, 0.96777, 0.96927, 0.96777, 0.9043, 0.9043, 0.9043, 
0.9043, 0.96927, 0.95364];
-exports.SegoeuiItalicFactors = SegoeuiItalicFactors;
-const SegoeuiItalicLineHeight = 1.33008;
-exports.SegoeuiItalicLineHeight = SegoeuiItalicLineHeight;
-const SegoeuiRegularFactors = [1.76738, 1, 0.96706, 0.86035, 0.86035, 0.96706, 0.96706, 0.96706, 0.96706, 
0.96706, 0.96706, 0.96635, 0.96706, 0.96706, 0.96706, 0.96706, 0.96706, 0.85944, 0.85944, 0.85734, 0.85734, 
0.85734, 0.85734, 0.85734, 0.85734, 0.88433, 0.97093, 0.97093, 0.97093, 0.96491, 0.75842, 0.75842, 0.75842, 
0.75842, 0.75842, 0.75842, 0.75842, 0.75842, 0.75842, 1.03444, 0.75842, 0.75842, 0.72727, 0.9831, 0.92366, 
0.97093, 0.96927, 0.79936, 0.88198, 0.85638, 0.88198, 0.88198, 1, 0.88198, 0.9831, 1, 0.99862, 0.99862, 1, 
0.9831, 0.9831, 0.95782, 0.84784, 0.95782, 0.95782, 0.95782, 0.95782, 0.95782, 0.95782, 0.95782, 0.95782, 
0.95782, 0.95782, 0.98601, 0.95782, 0.71387, 0.71387, 0.86969, 0.86969, 1, 0.84636, 0.84636, 0.94152, 
0.84636, 1, 0.84636, 0.84636, 1.07796, 1.07796, 1.03584, 1.03584, 1.03584, 1, 1.03584, 1.03584, 0.96924, 
0.93066, 0.96924, 0.96924, 0.96924, 0.96924, 0.96924, 0.96924, 0.96924, 1.0098, 1.09799, 0.96924, 1.03405, 
0.96924, 0.96924, 0.96924, 0.83968, 0.944
 92, 0.98715, 0.9287, 0.96924, 0.82826, 0.82826, 0.82826, 1, 0.83968, 0.79649, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.79649, 0.79649, 
0.79649, 0.79649, 1, 0.83491, 0.85771, 0.85771, 0.85771, 0.85771, 1, 0.96924, 0.83968, 0.95132, 0.95132, 
0.95132, 0.95132, 0.95132, 0.95132, 0.95132, 0.95132, 0.95132, 0.8287, 0.8287, 0.77968, 0.95132, 0.95132, 
0.93119, 0.98965, 0.98965, 0.98965, 0.98965, 0.98965, 0.88433, 0.78437, 0.8287, 0.8287, 0.8287, 0.8287, 
0.8287, 0.93365, 0.93365, 0.93365, 0.93365, 0.93365, 0.91484, 0.91484, 0.91484, 0.91484, 0.84751, 0.91484, 
0.93575, 0.93575, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
0.91484, 1.0625, 1.0625, 0.91484, 1.19985
 , 0.78032, 0.91484, 1.24822, 0.91484, 0.91484, 0.86182, 0.94434, 0.86279, 0.86279, 0.94434, 1, 1, 1.45786, 
1.1714, 1.07152, 0.94084, 0.91484, 1.05707, 1.3638, 0.92105, 0.95246, 1, 0.90351, 0.90351, 1.08612, 1.08612, 
0.91202, 0.92105, 1.16039, 0.92383, 0.92383, 1.11437, 0.92383, 0.92383, 0.92383, 0.92383, 0.61584, 0.96927, 
1.02512, 1.42603, 1.11437, 1.04315, 0.78032, 0.78032, 1.20808, 0.99912, 1.05882, 0.67428, 0.67428, 1.0969, 
1.05882, 0.94261, 1.04912, 1.34163, 1.2434, 0.81818, 1.24644, 1, 1, 0.96927, 0.60411, 0.8717, 0.9403, 0.9403, 
0.9403, 0.9403, 0.9403, 0.9403, 0.9403, 0.9403, 0.96927, 0.73291, 0.9403, 1, 0.89903, 1.01756, 0.9403, 
0.98248, 0.98248, 1.1714, 1.17238, 1, 1.03424, 1.03424, 1.00527, 1.02285, 0.95996, 0.85337, 1.12654, 1, 
1.42603, 1, 0.96927, 1.11358, 0.96927, 0.96927, 0.87796, 1.05882, 1.03809, 1.05882, 1.05882, 1, 1.05882, 
0.89049, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.80499, 1.1714, 1.24822, 0.90957, 0.90957, 0.94868, 0.94868, 
1.01756, 1.01756, 1.01756, 1.15296, 1, 0
 .97361, 1.09011, 0.8717, 0.8717, 0.8717, 0.8717, 0.8717, 1.11551, 0.8717, 1.14589, 1.9697, 1, 1, 0.97622, 
1.42603, 1.42603, 1, 1.09011, 1.2, 1.2, 1.2, 1.2, 0.8717, 1.09011, 1.09011, 0.99414, 1.04785, 1, 0.99414, 
1.09011, 1.09011, 0.99609, 1.0536, 1, 0.94298, 1.1714, 1.24822, 1, 0.96927, 1.1714, 1.08571, 1.18083, 
1.23297, 1, 1.034, 0.75155, 1, 1, 1.1714, 1.22135, 1.00169, 1.1714, 1, 1, 1.01756, 1.01756, 1.00323, 1.01756, 
1, 0.96927, 1, 1.24822, 1.01756, 1.05176, 1.06234, 1.05356, 1.05356, 1.05356, 1.05356, 1.05356, 0.98293, 
0.55572, 1.05356, 1.05356, 1.05356, 1.03502, 1.03502, 1.05356, 1.05356, 0.96927, 1.10539, 1.11593, 1.08665, 
0.99862, 1.05937, 1.17914, 0.69825, 0.95923, 0.95923, 1.05356, 1.05707, 0.85273, 0.90616, 0.90616, 1.083, 
0.92037, 0.78032, 1.20996, 1.01518, 1.07831, 0.9087, 1.1714, 1.24644, 0.91578, 1.05205, 1.05882, 0.80597, 
0.73381, 1.10454, 1.13196, 1.13196, 1.13196, 1.03077, 1.03077, 1.03077, 1.03077, 1.2046, 1.04399, 1.04399, 
1.18416, 1.04399, 1, 1.20808, 1, 1.03004,
  0.84164, 1, 0.84863, 0.84863, 0.84863, 0.84863, 0.84863, 1, 1.06483, 0.80597, 0.96927, 1.06967, 1, 0.93117, 
0.95542, 0.96927, 1.40246, 1, 1.2886, 0.96927, 0.86507, 1, 1.21968, 1.23362, 1.21968, 1.17318, 1, 1.05443, 
1.05707, 0.96927, 1.10539, 1.14169, 1.01173, 0.81818, 0.77295, 0.87025, 0.87025, 0.87025, 0.87025, 0.96927, 
1.01756, 1.01756, 1.01756, 1.01756, 1.01756, 1.01756, 1.01756, 1.01756, 0.74627, 0.75155, 0.98594, 1.20088, 
1.09971, 1.09971, 1, 1.05425, 0.85771, 1.21968, 0.93109, 0.78032, 0.75842, 1.03719, 0.9403, 1.04021, 1, 
1.20088, 1.24633, 1.05425, 1.09971, 1.09971, 1.09971, 1.07497, 1, 1, 1, 0.78032, 1, 1, 1, 1.10938, 1.10938, 
1.01756, 1, 1.01071, 1.01071, 1.01071, 1.01071, 1.01756, 1.01756, 0.95801, 1.00068, 1.00068, 1.00068, 
1.00068, 1.00068, 0.91797, 0.99346, 0.96777, 0.96777, 0.96777, 0.96777, 0.96927, 0.96777, 0.9043, 0.9043, 
0.9043, 0.9043, 0.96927, 1.00221];
-exports.SegoeuiRegularFactors = SegoeuiRegularFactors;
-const SegoeuiRegularLineHeight = 1.33008;
-exports.SegoeuiRegularLineHeight = SegoeuiRegularLineHeight;
-
 /***/ }),
 /* 61 */
 /***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
@@ -51329,12 +51833,12 @@ class OperatorList {
     return (0, _util.shadow)(this, "CHUNK_SIZE_ABOUT", this.CHUNK_SIZE - 5);
   }
 
-  constructor(intent, streamSink) {
+  constructor(intent = 0, streamSink) {
     this._streamSink = streamSink;
     this.fnArray = [];
     this.argsArray = [];
 
-    if (streamSink && !(intent && intent.startsWith("oplist-"))) {
+    if (streamSink && !(intent & _util.RenderingIntentFlag.OPLIST)) {
       this.optimizer = new QueueOptimizer(this);
     } else {
       this.optimizer = new NullOptimizer(this);
@@ -51474,13 +51978,13 @@ var _util = __w_pdfjs_require__(2);
 
 var _primitives = __w_pdfjs_require__(5);
 
-var _colorspace = __w_pdfjs_require__(14);
+var _colorspace = __w_pdfjs_require__(24);
 
-var _decode_stream = __w_pdfjs_require__(19);
+var _decode_stream = __w_pdfjs_require__(29);
 
-var _jpeg_stream = __w_pdfjs_require__(27);
+var _jpeg_stream = __w_pdfjs_require__(37);
 
-var _jpx = __w_pdfjs_require__(30);
+var _jpx = __w_pdfjs_require__(40);
 
 function decodeAndClamp(value, addend, coefficient, max) {
   value = addend + value * coefficient;
@@ -51582,7 +52086,7 @@ class PDFImage {
 
     this.width = width;
     this.height = height;
-    this.interpolate = dict.get("Interpolate", "I") || false;
+    this.interpolate = dict.get("Interpolate", "I");
     this.imageMask = dict.get("ImageMask", "IM") || false;
     this.matte = dict.get("Matte") || false;
     let bitsPerComponent = image.bitsPerComponent;
@@ -51727,7 +52231,8 @@ class PDFImage {
     width,
     height,
     imageIsFromDecodeStream,
-    inverseDecode
+    inverseDecode,
+    interpolate
   }) {
     const computedLength = (width + 7 >> 3) * height;
     const actualLength = imgArray.byteLength;
@@ -51757,7 +52262,8 @@ class PDFImage {
     return {
       data,
       width,
-      height
+      height,
+      interpolate
     };
   }
 
@@ -51987,6 +52493,7 @@ class PDFImage {
     const imgData = {
       width: drawWidth,
       height: drawHeight,
+      interpolate: this.interpolate,
       kind: 0,
       data: null
     };
@@ -52151,11 +52658,11 @@ var _util = __w_pdfjs_require__(2);
 
 var _name_number_tree = __w_pdfjs_require__(65);
 
-var _colorspace = __w_pdfjs_require__(14);
+var _colorspace = __w_pdfjs_require__(24);
 
 var _file_spec = __w_pdfjs_require__(66);
 
-var _image_utils = __w_pdfjs_require__(52);
+var _image_utils = __w_pdfjs_require__(58);
 
 var _metadata_parser = __w_pdfjs_require__(67);
 
@@ -52198,6 +52705,16 @@ class Catalog {
     return (0, _util.shadow)(this, "version", version.name);
   }
 
+  get needsRendering() {
+    const needsRendering = this._catDict.get("NeedsRendering");
+
+    if (!(0, _util.isBool)(needsRendering)) {
+      return (0, _util.shadow)(this, "needsRendering", false);
+    }
+
+    return (0, _util.shadow)(this, "needsRendering", needsRendering);
+  }
+
   get collection() {
     let collection = null;
 
@@ -52238,6 +52755,12 @@ class Catalog {
     return (0, _util.shadow)(this, "acroForm", acroForm);
   }
 
+  get acroFormRef() {
+    const value = this._catDict.getRaw("AcroForm");
+
+    return (0, _util.shadow)(this, "acroFormRef", (0, _primitives.isRef)(value) ? value : null);
+  }
+
   get metadata() {
     const streamRef = this._catDict.getRaw("Metadata");
 
@@ -53446,18 +53969,6 @@ class Catalog {
   }
 
   static parseDestDictionary(params) {
-    function addDefaultProtocolToUrl(url) {
-      return url.startsWith("www.") ? `http://${url}` : url;
-    }
-
-    function tryConvertUrlEncoding(url) {
-      try {
-        return (0, _util.stringToUTF8String)(url);
-      } catch (e) {
-        return url;
-      }
-    }
-
     const destDict = params.destDict;
 
     if (!(0, _primitives.isDict)(destDict)) {
@@ -53504,13 +54015,32 @@ class Catalog {
       const actionName = actionType.name;
 
       switch (actionName) {
+        case "ResetForm":
+          const flags = action.get("Flags");
+          const include = (((0, _util.isNum)(flags) ? flags : 0) & 1) === 0;
+          const fields = [];
+          const refs = [];
+
+          for (const obj of action.get("Fields") || []) {
+            if ((0, _primitives.isRef)(obj)) {
+              refs.push(obj.toString());
+            } else if ((0, _util.isString)(obj)) {
+              fields.push((0, _util.stringToPDFString)(obj));
+            }
+          }
+
+          resultObj.resetForm = {
+            fields,
+            refs,
+            include
+          };
+          break;
+
         case "URI":
           url = action.get("URI");
 
-          if ((0, _primitives.isName)(url)) {
+          if (url instanceof _primitives.Name) {
             url = "/" + url.name;
-          } else if ((0, _util.isString)(url)) {
-            url = addDefaultProtocolToUrl(url);
           }
 
           break;
@@ -53574,24 +54104,16 @@ class Catalog {
             js = jsAction;
           }
 
-          if (js) {
-            const URL_OPEN_METHODS = ["app.launchURL", "window.open"];
-            const regex = new RegExp("^\\s*(" + URL_OPEN_METHODS.join("|").split(".").join("\\.") + 
")\\((?:'|\")([^'\"]*)(?:'|\")(?:,\\s*(\\w+)\\)|\\))", "i");
-            const jsUrl = regex.exec((0, _util.stringToPDFString)(js));
-
-            if (jsUrl && jsUrl[2]) {
-              url = jsUrl[2];
-
-              if (jsUrl[3] === "true" && jsUrl[1] === "app.launchURL") {
-                resultObj.newWindow = true;
-              }
+          const jsURL = js && (0, _core_utils.recoverJsURL)((0, _util.stringToPDFString)(js));
 
-              break;
-            }
+          if (jsURL) {
+            url = jsURL.url;
+            resultObj.newWindow = jsURL.newWindow;
+            break;
           }
 
         default:
-          if (actionName === "JavaScript" || actionName === "ResetForm" || actionName === "SubmitForm") {
+          if (actionName === "JavaScript" || actionName === "SubmitForm") {
             break;
           }
 
@@ -53603,8 +54125,10 @@ class Catalog {
     }
 
     if ((0, _util.isString)(url)) {
-      url = tryConvertUrlEncoding(url);
-      const absoluteUrl = (0, _util.createValidAbsoluteUrl)(url, docBaseUrl);
+      const absoluteUrl = (0, _util.createValidAbsoluteUrl)(url, docBaseUrl, {
+        addDefaultProtocol: true,
+        tryConvertEncoding: true
+      });
 
       if (absoluteUrl) {
         resultObj.url = absoluteUrl.href;
@@ -55189,10 +55713,16 @@ function writeValue(value, buffer, transform) {
     buffer.push(`(${(0, _util.escapeString)(value)})`);
   } else if (typeof value === "number") {
     buffer.push(numberToString(value));
+  } else if (typeof value === "boolean") {
+    buffer.push(value.toString());
   } else if ((0, _primitives.isDict)(value)) {
     writeDict(value, buffer, transform);
   } else if ((0, _primitives.isStream)(value)) {
     writeStream(value, buffer, transform);
+  } else if (value === null) {
+    buffer.push("null");
+  } else {
+    (0, _util.warn)(`Unhandled value in writer: ${typeof value}, please file a bug.`);
   }
 }
 
@@ -55268,26 +55798,63 @@ function writeXFADataForAcroform(str, newRefs) {
   return buffer.join("");
 }
 
-function updateXFA(xfaData, datasetsRef, newRefs, xref) {
-  if (datasetsRef === null || xref === null) {
+function updateXFA({
+  xfaData,
+  xfaDatasetsRef,
+  hasXfaDatasetsEntry,
+  acroFormRef,
+  acroForm,
+  newRefs,
+  xref,
+  xrefInfo
+}) {
+  if (xref === null) {
     return;
   }
 
+  if (!hasXfaDatasetsEntry) {
+    if (!acroFormRef) {
+      (0, _util.warn)("XFA - Cannot save it");
+      return;
+    }
+
+    const oldXfa = acroForm.get("XFA");
+    const newXfa = oldXfa.slice();
+    newXfa.splice(2, 0, "datasets");
+    newXfa.splice(3, 0, xfaDatasetsRef);
+    acroForm.set("XFA", newXfa);
+    const encrypt = xref.encrypt;
+    let transform = null;
+
+    if (encrypt) {
+      transform = encrypt.createCipherTransform(acroFormRef.num, acroFormRef.gen);
+    }
+
+    const buffer = [`${acroFormRef.num} ${acroFormRef.gen} obj\n`];
+    writeDict(acroForm, buffer, transform);
+    buffer.push("\n");
+    acroForm.set("XFA", oldXfa);
+    newRefs.push({
+      ref: acroFormRef,
+      data: buffer.join("")
+    });
+  }
+
   if (xfaData === null) {
-    const datasets = xref.fetchIfRef(datasetsRef);
+    const datasets = xref.fetchIfRef(xfaDatasetsRef);
     xfaData = writeXFADataForAcroform(datasets.getString(), newRefs);
   }
 
   const encrypt = xref.encrypt;
 
   if (encrypt) {
-    const transform = encrypt.createCipherTransform(datasetsRef.num, datasetsRef.gen);
+    const transform = encrypt.createCipherTransform(xfaDatasetsRef.num, xfaDatasetsRef.gen);
     xfaData = transform.encryptString(xfaData);
   }
 
-  const data = `${datasetsRef.num} ${datasetsRef.gen} obj\n` + `<< /Type /EmbeddedFile /Length 
${xfaData.length}>>\nstream\n` + xfaData + "\nendstream\nendobj\n";
+  const data = `${xfaDatasetsRef.num} ${xfaDatasetsRef.gen} obj\n` + `<< /Type /EmbeddedFile /Length 
${xfaData.length}>>\nstream\n` + xfaData + "\nendstream\nendobj\n";
   newRefs.push({
-    ref: datasetsRef,
+    ref: xfaDatasetsRef,
     data
   });
 }
@@ -55297,10 +55864,26 @@ function incrementalUpdate({
   xrefInfo,
   newRefs,
   xref = null,
-  datasetsRef = null,
+  hasXfa = false,
+  xfaDatasetsRef = null,
+  hasXfaDatasetsEntry = false,
+  acroFormRef = null,
+  acroForm = null,
   xfaData = null
 }) {
-  updateXFA(xfaData, datasetsRef, newRefs, xref);
+  if (hasXfa) {
+    updateXFA({
+      xfaData,
+      xfaDatasetsRef,
+      hasXfaDatasetsEntry,
+      acroFormRef,
+      acroForm,
+      newRefs,
+      xref,
+      xrefInfo
+    });
+  }
+
   const newXref = new _primitives.Dict(null);
   const refForXrefTable = xrefInfo.newRef;
   let buffer, baseOffset;
@@ -56590,11 +57173,7 @@ class CipherTransform {
     if (cipher instanceof AESBaseCipher) {
       const strLen = s.length;
       const pad = 16 - strLen % 16;
-
-      if (pad !== 16) {
-        s = s.padEnd(16 * Math.ceil(strLen / 16), String.fromCharCode(pad));
-      }
-
+      s += String.fromCharCode(pad).repeat(pad);
       const iv = new Uint8Array(16);
 
       if (typeof crypto !== "undefined") {
@@ -56993,7 +57572,7 @@ Object.defineProperty(exports, "__esModule", ({
 }));
 exports.DecryptStream = void 0;
 
-var _decode_stream = __w_pdfjs_require__(19);
+var _decode_stream = __w_pdfjs_require__(29);
 
 const chunkSize = 512;
 
@@ -57174,7 +57753,7 @@ exports.XFAFactory = XFAFactory;
 Object.defineProperty(exports, "__esModule", ({
   value: true
 }));
-exports.XmlObject = exports.XFAObjectArray = exports.XFAObject = exports.XFAAttribute = exports.StringObject 
= exports.OptionObject = exports.Option10 = exports.Option01 = exports.IntegerObject = exports.ContentObject 
= exports.$uid = exports.$toStyle = exports.$toString = exports.$toHTML = exports.$text = exports.$tabIndex = 
exports.$setValue = exports.$setSetAttributes = exports.$setId = exports.$searchNode = exports.$root = 
exports.$resolvePrototypes = exports.$removeChild = exports.$pushGlyphs = exports.$onText = 
exports.$onChildCheck = exports.$onChild = exports.$nsAttributes = exports.$nodeName = exports.$namespaceId = 
exports.$isUsable = exports.$isTransparent = exports.$isThereMoreWidth = exports.$isSplittable = 
exports.$isNsAgnostic = exports.$isDescendent = exports.$isDataValue = exports.$isCDATAXml = 
exports.$isBindable = exports.$insertAt = exports.$indexOf = exports.$ids = exports.$hasSettableValue = 
exports.$globalData = exports.$getTemplateRoot = exports.$getSubformPa
 rent = exports.$getRealChildrenByNameIt = exports.$getParent = exports.$getNextPage = exports.$getExtra = 
exports.$getDataValue = exports.$getContainedChildren = exports.$getChildrenByNameIt = 
exports.$getChildrenByName = exports.$getChildrenByClass = exports.$getChildren = exports.$getAvailableSpace 
= exports.$getAttributes = exports.$getAttributeIt = exports.$flushHTML = exports.$finalize = exports.$extra 
= exports.$dump = exports.$data = exports.$content = exports.$consumed = exports.$clone = exports.$cleanup = 
exports.$cleanPage = exports.$clean = exports.$childrenToHTML = exports.$appendChild = exports.$addHTML = 
exports.$acceptWhitespace = void 0;
+exports.XmlObject = exports.XFAObjectArray = exports.XFAObject = exports.XFAAttribute = exports.StringObject 
= exports.OptionObject = exports.Option10 = exports.Option01 = exports.IntegerObject = exports.ContentObject 
= exports.$uid = exports.$toStyle = exports.$toString = exports.$toHTML = exports.$text = exports.$tabIndex = 
exports.$setValue = exports.$setSetAttributes = exports.$setId = exports.$searchNode = exports.$root = 
exports.$resolvePrototypes = exports.$removeChild = exports.$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__(76);
 
@@ -57289,6 +57868,10 @@ const $onText = Symbol();
 exports.$onText = $onText;
 const $pushGlyphs = Symbol();
 exports.$pushGlyphs = $pushGlyphs;
+const $popPara = Symbol();
+exports.$popPara = $popPara;
+const $pushPara = Symbol();
+exports.$pushPara = $pushPara;
 const $removeChild = Symbol();
 exports.$removeChild = $removeChild;
 const $root = Symbol("root");
@@ -57419,6 +58002,16 @@ class XFAObject {
     return false;
   }
 
+  [$popPara]() {
+    if (this.para) {
+      this[$getTemplateRoot]()[$extra].paraStack.pop();
+    }
+  }
+
+  [$pushPara]() {
+    this[$getTemplateRoot]()[$extra].paraStack.push(this.para);
+  }
+
   [$setId](ids) {
     if (this.id && this[$namespaceId] === _namespaces.NamespaceIds.template.id) {
       ids.set(this.id, this);
@@ -57441,6 +58034,10 @@ class XFAObject {
     child[_parent] = this;
 
     this[_children].push(child);
+
+    if (!child[$globalData] && this[$globalData]) {
+      child[$globalData] = this[$globalData];
+    }
   }
 
   [$removeChild](child) {
@@ -57476,6 +58073,10 @@ class XFAObject {
     child[_parent] = this;
 
     this[_children].splice(i, 0, child);
+
+    if (!child[$globalData] && this[$globalData]) {
+      child[$globalData] = this[$globalData];
+    }
   }
 
   [$isTransparent]() {
@@ -58215,9 +58816,13 @@ class XmlObject extends XFAObject {
     this[$content] = value.toString();
   }
 
-  [$dump]() {
+  [$dump](hasNS = false) {
     const dumped = Object.create(null);
 
+    if (hasNS) {
+      dumped.$ns = this[$namespaceId];
+    }
+
     if (this[$content]) {
       dumped.$content = this[$content];
     }
@@ -58226,7 +58831,7 @@ class XmlObject extends XFAObject {
     dumped.children = [];
 
     for (const child of this[_children]) {
-      dumped.children.push(child[$dump]());
+      dumped.children.push(child[$dump](hasNS));
     }
 
     dumped.attributes = Object.create(null);
@@ -58363,7 +58968,7 @@ const dimConverters = {
   in: x => x * 72,
   px: x => x
 };
-const measurementPattern = /([+-]?[0-9]+\.?[0-9]*)(.*)/;
+const measurementPattern = /([+-]?\d+\.?\d*)(.*)/;
 
 function stripQuotes(str) {
   if (str.startsWith("'") || str.startsWith('"')) {
@@ -58694,6 +59299,8 @@ exports.searchNode = searchNode;
 
 var _xfa_object = __w_pdfjs_require__(75);
 
+var _namespaces = __w_pdfjs_require__(77);
+
 var _util = __w_pdfjs_require__(2);
 
 const namePattern = /^[^.[]+/;
@@ -58705,8 +59312,9 @@ const operators = {
   dotBracket: 3,
   dotParen: 4
 };
-const shortcuts = new Map([["$data", (root, current) => root.datasets.data], ["$template", (root, current) 
=> root.template], ["$connectionSet", (root, current) => root.connectionSet], ["$form", (root, current) => 
root.form], ["$layout", (root, current) => root.layout], ["$host", (root, current) => root.host], 
["$dataWindow", (root, current) => root.dataWindow], ["$event", (root, current) => root.event], ["!", (root, 
current) => root.datasets], ["$xfa", (root, current) => root], ["xfa", (root, current) => root], ["$", (root, 
current) => current]]);
+const shortcuts = new Map([["$data", (root, current) => root.datasets ? root.datasets.data : root], 
["$record", (root, current) => (root.datasets ? root.datasets.data : root)[_xfa_object.$getChildren]()[0]], 
["$template", (root, current) => root.template], ["$connectionSet", (root, current) => root.connectionSet], 
["$form", (root, current) => root.form], ["$layout", (root, current) => root.layout], ["$host", (root, 
current) => root.host], ["$dataWindow", (root, current) => root.dataWindow], ["$event", (root, current) => 
root.event], ["!", (root, current) => root.datasets], ["$xfa", (root, current) => root], ["xfa", (root, 
current) => root], ["$", (root, current) => current]]);
 const somCache = new WeakMap();
+const NS_DATASETS = _namespaces.NamespaceIds.datasets.id;
 
 function parseIndex(index) {
   index = index.trim();
@@ -58932,7 +59540,8 @@ function createNodes(root, path) {
     index
   } of path) {
     for (let i = 0, ii = !isFinite(index) ? 0 : index; i <= ii; i++) {
-      node = new _xfa_object.XmlObject(root[_xfa_object.$namespaceId], name);
+      const nsId = root[_xfa_object.$namespaceId] === NS_DATASETS ? -1 : root[_xfa_object.$namespaceId];
+      node = new _xfa_object.XmlObject(nsId, name);
 
       root[_xfa_object.$appendChild](node);
     }
@@ -59045,6 +59654,8 @@ var _namespaces = __w_pdfjs_require__(77);
 
 var _util = __w_pdfjs_require__(2);
 
+const NS_DATASETS = _namespaces.NamespaceIds.datasets.id;
+
 function createText(content) {
   const node = new _template.Text({});
   node[_xfa_object.$content] = content;
@@ -59333,6 +59944,10 @@ class Binder {
 
     if (matches.length > 1) {
       baseClone = formNode[_xfa_object.$clone]();
+
+      baseClone[_xfa_object.$removeChild](baseClone.occur);
+
+      baseClone.occur = null;
     }
 
     this._bindValue(formNode, matches[0], picture);
@@ -59356,9 +59971,6 @@ class Binder {
 
       const clone = baseClone[_xfa_object.$clone]();
 
-      clone.occur.min = 1;
-      clone.occur.max = 1;
-      clone.occur.initial = 1;
       parent[name].push(clone);
 
       parent[_xfa_object.$insertAt](pos + i, clone);
@@ -59388,25 +60000,48 @@ class Binder {
 
     const name = formNode[_xfa_object.$nodeName];
 
-    for (let i = 0, ii = occur.initial; i < ii; i++) {
-      const clone = formNode[_xfa_object.$clone]();
+    if (!(parent[name] instanceof _xfa_object.XFAObjectArray)) {
+      return;
+    }
 
-      clone.occur.min = 1;
-      clone.occur.max = 1;
-      clone.occur.initial = 1;
-      parent[name].push(clone);
+    let currentNumber;
+
+    if (formNode.name) {
+      currentNumber = parent[name].children.filter(e => e.name === formNode.name).length;
+    } else {
+      currentNumber = parent[name].children.length;
+    }
+
+    const pos = parent[_xfa_object.$indexOf](formNode) + 1;
+    const ii = occur.initial - currentNumber;
+
+    if (ii) {
+      const nodeClone = formNode[_xfa_object.$clone]();
 
-      parent[_xfa_object.$appendChild](clone);
+      nodeClone[_xfa_object.$removeChild](nodeClone.occur);
+
+      nodeClone.occur = null;
+      parent[name].push(nodeClone);
+
+      parent[_xfa_object.$insertAt](pos, nodeClone);
+
+      for (let i = 1; i < ii; i++) {
+        const clone = nodeClone[_xfa_object.$clone]();
+
+        parent[name].push(clone);
+
+        parent[_xfa_object.$insertAt](pos + i, clone);
+      }
     }
   }
 
   _getOccurInfo(formNode) {
     const {
+      name,
       occur
     } = formNode;
-    const dataName = formNode.name;
 
-    if (!occur || !dataName) {
+    if (!occur || !name) {
       return [1, 1];
     }
 
@@ -59414,6 +60049,14 @@ class Binder {
     return [occur.min, max];
   }
 
+  _setAndBind(formNode, dataNode) {
+    this._setProperties(formNode, dataNode);
+
+    this._bindItems(formNode, dataNode);
+
+    this._bindElement(formNode, dataNode);
+  }
+
   _bindElement(formNode, dataNode) {
     const uselessNodes = [];
 
@@ -59432,7 +60075,8 @@ class Binder {
         if (dataChildren.length > 0) {
           this._bindOccurrences(child, [dataChildren[0]], null);
         } else if (this.emptyMerge) {
-          const dataChild = child[_xfa_object.$data] = new 
_xfa_object.XmlObject(dataNode[_xfa_object.$namespaceId], child.name || "root");
+          const nsId = dataNode[_xfa_object.$namespaceId] === NS_DATASETS ? -1 : 
dataNode[_xfa_object.$namespaceId];
+          const dataChild = child[_xfa_object.$data] = new _xfa_object.XmlObject(nsId, child.name || "root");
 
           dataNode[_xfa_object.$appendChild](dataChild);
 
@@ -59454,7 +60098,7 @@ class Binder {
       if (child.bind) {
         switch (child.bind.match) {
           case "none":
-            this._bindElement(child, dataNode);
+            this._setAndBind(child, dataNode);
 
             continue;
 
@@ -59466,7 +60110,7 @@ class Binder {
             if (!child.bind.ref) {
               (0, _util.warn)(`XFA - ref is empty in node ${child[_xfa_object.$nodeName]}.`);
 
-              this._bindElement(child, dataNode);
+              this._setAndBind(child, dataNode);
 
               continue;
             }
@@ -59499,7 +60143,7 @@ class Binder {
             match[_xfa_object.$consumed] = true;
           }
 
-          this._bindElement(child, match);
+          this._setAndBind(child, match);
 
           continue;
         } else {
@@ -59521,7 +60165,7 @@ class Binder {
         }
       } else {
         if (!child.name) {
-          this._bindElement(child, dataNode);
+          this._setAndBind(child, dataNode);
 
           continue;
         }
@@ -59545,7 +60189,8 @@ class Binder {
           match = dataNode[_xfa_object.$getRealChildrenByNameIt](child.name, false, 
this.emptyMerge).next().value;
 
           if (!match) {
-            match = child[_xfa_object.$data] = new _xfa_object.XmlObject(dataNode[_xfa_object.$namespaceId], 
child.name);
+            const nsId = dataNode[_xfa_object.$namespaceId] === NS_DATASETS ? -1 : 
dataNode[_xfa_object.$namespaceId];
+            match = child[_xfa_object.$data] = new _xfa_object.XmlObject(nsId, child.name);
 
             if (this.emptyMerge) {
               match[_xfa_object.$consumed] = true;
@@ -59553,11 +60198,7 @@ class Binder {
 
             dataNode[_xfa_object.$appendChild](match);
 
-            this._setProperties(child, match);
-
-            this._bindItems(child, match);
-
-            this._bindElement(child, match);
+            this._setAndBind(child, match);
 
             continue;
           }
@@ -59571,18 +60212,9 @@ class Binder {
       }
 
       if (match) {
-        if (match.length < min) {
-          (0, _util.warn)(`XFA - Must have at least ${min} occurrences: 
${formNode[_xfa_object.$nodeName]}.`);
-          continue;
-        }
-
         this._bindOccurrences(child, match, picture);
       } else if (min > 0) {
-        this._setProperties(child, dataNode);
-
-        this._bindItems(child, dataNode);
-
-        this._bindElement(child, dataNode);
+        this._setAndBind(child, dataNode);
       } else {
         uselessNodes.push(child);
       }
@@ -59618,12 +60250,43 @@ var _utils = __w_pdfjs_require__(76);
 
 var _util = __w_pdfjs_require__(2);
 
+var _fonts = __w_pdfjs_require__(83);
+
+var _core_utils = __w_pdfjs_require__(9);
+
 var _som = __w_pdfjs_require__(78);
 
 const TEMPLATE_NS_ID = _namespaces.NamespaceIds.template.id;
 const SVG_NS = "http://www.w3.org/2000/svg";;
 const MAX_ATTEMPTS_FOR_LRTB_LAYOUT = 2;
 const MAX_EMPTY_PAGES = 3;
+const DEFAULT_TAB_INDEX = 5000;
+const HEADING_PATTERN = /^H(\d+)$/;
+const MIMES = new Set(["image/gif", "image/jpeg", "image/jpg", "image/pjpeg", "image/png", "image/apng", 
"image/x-png", "image/bmp", "image/x-ms-bmp", "image/tiff", "image/tif"]);
+const IMAGES_HEADERS = [[[0x42, 0x4d], "image/bmp"], [[0xff, 0xd8, 0xff], "image/jpeg"], [[0x49, 0x49, 0x2a, 
0x00], "image/tiff"], [[0x4d, 0x4d, 0x00, 0x2a], "image/tiff"], [[0x47, 0x49, 0x46, 0x38, 0x39, 0x61], 
"image/gif"], [[0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a], "image/png"]];
+
+function getBorderDims(node) {
+  if (!node || !node.border) {
+    return {
+      w: 0,
+      h: 0
+    };
+  }
+
+  const borderExtra = node.border[_xfa_object.$getExtra]();
+
+  if (!borderExtra) {
+    return {
+      w: 0,
+      h: 0
+    };
+  }
+
+  return {
+    w: borderExtra.widths[0] + borderExtra.widths[2] + borderExtra.insets[0] + borderExtra.insets[2],
+    h: borderExtra.widths[1] + borderExtra.widths[3] + borderExtra.insets[1] + borderExtra.insets[3]
+  };
+}
 
 function hasMargin(node) {
   return node.margin && (node.margin.topInset || node.margin.rightInset || node.margin.bottomInset || 
node.margin.leftInset);
@@ -59654,7 +60317,12 @@ function* getContainedChildren(node) {
 
 function setTabIndex(node) {
   while (node) {
-    if (!node.traversal || node[_xfa_object.$tabIndex]) {
+    if (!node.traversal) {
+      node[_xfa_object.$tabIndex] = node[_xfa_object.$getParent]()[_xfa_object.$tabIndex];
+      return;
+    }
+
+    if (node[_xfa_object.$tabIndex]) {
       return;
     }
 
@@ -59668,6 +60336,7 @@ function setTabIndex(node) {
     }
 
     if (!next || !next.ref) {
+      node[_xfa_object.$tabIndex] = node[_xfa_object.$getParent]()[_xfa_object.$tabIndex];
       return;
     }
 
@@ -59685,6 +60354,62 @@ function setTabIndex(node) {
   }
 }
 
+function applyAssist(obj, attributes) {
+  const assist = obj.assist;
+
+  if (assist) {
+    const assistTitle = assist[_xfa_object.$toHTML]();
+
+    if (assistTitle) {
+      attributes.title = assistTitle;
+    }
+
+    const role = assist.role;
+    const match = role.match(HEADING_PATTERN);
+
+    if (match) {
+      const ariaRole = "heading";
+      const ariaLevel = match[1];
+      attributes.role = ariaRole;
+      attributes["aria-level"] = ariaLevel;
+    }
+  }
+
+  if (obj.layout === "table") {
+    attributes.role = "table";
+  } else if (obj.layout === "row") {
+    attributes.role = "row";
+  } else {
+    const parent = obj[_xfa_object.$getParent]();
+
+    if (parent.layout === "row") {
+      if (parent.assist && parent.assist.role === "TH") {
+        attributes.role = "columnheader";
+      } else {
+        attributes.role = "cell";
+      }
+    }
+  }
+}
+
+function ariaLabel(obj) {
+  if (!obj.assist) {
+    return null;
+  }
+
+  const assist = obj.assist;
+
+  if (assist.speak && assist.speak[_xfa_object.$content] !== "") {
+    return assist.speak[_xfa_object.$content];
+  }
+
+  if (assist.toolTip) {
+    return assist.toolTip[_xfa_object.$content];
+  }
+
+  return null;
+}
+
 function valueToHtml(value) {
   return _utils.HTMLResult.success({
     name: "div",
@@ -59966,6 +60691,10 @@ class Area extends _xfa_object.XFAObject {
     return true;
   }
 
+  [_xfa_object.$isBindable]() {
+    return true;
+  }
+
   [_xfa_object.$addHTML](html, bbox) {
     const [x, y, w, h] = bbox;
     this[_xfa_object.$extra].width = Math.max(this[_xfa_object.$extra].width, x + w);
@@ -60053,7 +60782,7 @@ class Barcode extends _xfa_object.XFAObject {
     this.charEncoding = (0, _utils.getKeyword)({
       data: attributes.charEncoding ? attributes.charEncoding.toLowerCase() : "",
       defaultValue: "",
-      validate: k => ["utf-8", "big-five", "fontspecific", "gbk", "gb-18030", "gb-2312", "ksc-5601", "none", 
"shift-jis", "ucs-2", "utf-16"].includes(k) || k.match(/iso-8859-[0-9]{2}/)
+      validate: k => ["utf-8", "big-five", "fontspecific", "gbk", "gb-18030", "gb-2312", "ksc-5601", "none", 
"shift-jis", "ucs-2", "utf-16"].includes(k) || k.match(/iso-8859-\d{2}/)
     });
     this.checksum = (0, _utils.getStringOption)(attributes.checksum, ["none", "1mod10", "1mod10_1mod11", 
"2mod10", "auto"]);
     this.dataColumnCount = (0, _utils.getInteger)({
@@ -60172,37 +60901,49 @@ class Border extends _xfa_object.XFAObject {
     this.margin = null;
   }
 
-  [_xfa_object.$toStyle]() {
-    const edges = this.edge.children.slice();
+  [_xfa_object.$getExtra]() {
+    if (!this[_xfa_object.$extra]) {
+      const edges = this.edge.children.slice();
+
+      if (edges.length < 4) {
+        const defaultEdge = edges[edges.length - 1] || new Edge({});
+
+        for (let i = edges.length; i < 4; i++) {
+          edges.push(defaultEdge);
+        }
+      }
 
-    if (edges.length < 4) {
-      const defaultEdge = edges[edges.length - 1] || new Edge({});
+      const widths = edges.map(edge => edge.thickness);
+      const insets = [0, 0, 0, 0];
 
-      for (let i = edges.length; i < 4; i++) {
-        edges.push(defaultEdge);
+      if (this.margin) {
+        insets[0] = this.margin.topInset;
+        insets[1] = this.margin.rightInset;
+        insets[2] = this.margin.bottomInset;
+        insets[3] = this.margin.leftInset;
       }
+
+      this[_xfa_object.$extra] = {
+        widths,
+        insets,
+        edges
+      };
     }
 
+    return this[_xfa_object.$extra];
+  }
+
+  [_xfa_object.$toStyle]() {
+    const {
+      edges
+    } = this[_xfa_object.$getExtra]();
+
     const edgeStyles = edges.map(node => {
       const style = node[_xfa_object.$toStyle]();
 
       style.color = style.color || "#000000";
       return style;
     });
-    const widths = edges.map(edge => edge.thickness);
-    const insets = [0, 0, 0, 0];
-
-    if (this.margin) {
-      insets[0] = this.margin.topInset;
-      insets[1] = this.margin.rightInset;
-      insets[2] = this.margin.bottomInset;
-      insets[3] = this.margin.leftInset;
-    }
-
-    this[_xfa_object.$extra] = {
-      widths,
-      insets
-    };
     const style = Object.create(null);
 
     if (this.margin) {
@@ -60330,7 +61071,11 @@ class Button extends _xfa_object.XFAObject {
   }
 
   [_xfa_object.$toHTML](availableSpace) {
-    return _utils.HTMLResult.success({
+    const parent = this[_xfa_object.$getParent]();
+
+    const grandpa = parent[_xfa_object.$getParent]();
+
+    const htmlButton = {
       name: "button",
       attributes: {
         id: this[_xfa_object.$uid],
@@ -60338,7 +61083,39 @@ class Button extends _xfa_object.XFAObject {
         style: {}
       },
       children: []
-    });
+    };
+
+    for (const event of grandpa.event.children) {
+      if (event.activity !== "click" || !event.script) {
+        continue;
+      }
+
+      const jsURL = (0, _core_utils.recoverJsURL)(event.script[_xfa_object.$content]);
+
+      if (!jsURL) {
+        continue;
+      }
+
+      const href = (0, _html_utils.fixURL)(jsURL.url);
+
+      if (!href) {
+        continue;
+      }
+
+      htmlButton.children.push({
+        name: "a",
+        attributes: {
+          id: "link" + this[_xfa_object.$uid],
+          href,
+          newWindow: jsURL.newWindow,
+          class: ["xfaLink"],
+          style: {}
+        },
+        children: []
+      });
+    }
+
+    return _utils.HTMLResult.success(htmlButton);
   }
 
 }
@@ -60411,9 +61188,13 @@ class Caption extends _xfa_object.XFAObject {
       return _utils.HTMLResult.EMPTY;
     }
 
+    this[_xfa_object.$pushPara]();
+
     const value = this.value[_xfa_object.$toHTML](availableSpace).html;
 
     if (!value) {
+      this[_xfa_object.$popPara]();
+
       return _utils.HTMLResult.EMPTY;
     }
 
@@ -60471,6 +61252,9 @@ class Caption extends _xfa_object.XFAObject {
     }
 
     (0, _html_utils.setPara)(this, null, value);
+
+    this[_xfa_object.$popPara]();
+
     this.reserve = savedReserve;
     return _utils.HTMLResult.success({
       name: "div",
@@ -60540,8 +61324,8 @@ class CheckButton extends _xfa_object.XFAObject {
 
     const items = field.items.children.length && field.items.children[0][_xfa_object.$toHTML]().html || [];
     const exportedValue = {
-      on: (items[0] || "on").toString(),
-      off: (items[1] || "off").toString()
+      on: (items[0] !== undefined ? items[0] : "on").toString(),
+      off: (items[1] !== undefined ? items[1] : "off").toString()
     };
     const value = field.value && field.value[_xfa_object.$text]() || "off";
     const checked = value === exportedValue.on || undefined;
@@ -60571,7 +61355,9 @@ class CheckButton extends _xfa_object.XFAObject {
         dataId,
         type,
         checked,
-        xfaOn: exportedValue.on
+        xfaOn: exportedValue.on,
+        xfaOff: exportedValue.off,
+        "aria-label": ariaLabel(field)
       }
     };
 
@@ -60615,6 +61401,10 @@ class ChoiceList extends _xfa_object.XFAObject {
 
     const field = ui[_xfa_object.$getParent]();
 
+    const fontSize = field.font && field.font.size || 10;
+    const optionStyle = {
+      fontSize: `calc(${fontSize}px * var(--zoom-factor))`
+    };
     const children = [];
 
     if (field.items.children.length > 0) {
@@ -60638,7 +61428,8 @@ class ChoiceList extends _xfa_object.XFAObject {
         const option = {
           name: "option",
           attributes: {
-            value: values[i] || displayed[i]
+            value: values[i] || displayed[i],
+            style: optionStyle
           },
           value: displayed[i]
         };
@@ -60666,7 +61457,8 @@ class ChoiceList extends _xfa_object.XFAObject {
       class: ["xfaSelect"],
       fieldId: field[_xfa_object.$uid],
       dataId: field[_xfa_object.$data] && field[_xfa_object.$data][_xfa_object.$uid] || 
field[_xfa_object.$uid],
-      style
+      style,
+      "aria-label": ariaLabel(field)
     };
 
     if (this.open === "multiSelect") {
@@ -60878,7 +61670,8 @@ class DateTimeEdit extends _xfa_object.XFAObject {
         fieldId: field[_xfa_object.$uid],
         dataId: field[_xfa_object.$data] && field[_xfa_object.$data][_xfa_object.$uid] || 
field[_xfa_object.$uid],
         class: ["xfaTextfield"],
-        style
+        style,
+        "aria-label": ariaLabel(field)
       }
     };
     return _utils.HTMLResult.success({
@@ -61025,11 +61818,16 @@ class Draw extends _xfa_object.XFAObject {
   }
 
   [_xfa_object.$toHTML](availableSpace) {
+    setTabIndex(this);
+
     if (this.presence === "hidden" || this.presence === "inactive") {
       return _utils.HTMLResult.EMPTY;
     }
 
     (0, _html_utils.fixDimensions)(this);
+
+    this[_xfa_object.$pushPara]();
+
     const savedW = this.w;
     const savedH = this.h;
     const {
@@ -61040,6 +61838,8 @@ class Draw extends _xfa_object.XFAObject {
 
     if (w && this.w === "") {
       if (isBroken && this[_xfa_object.$getSubformParent]()[_xfa_object.$isThereMoreWidth]()) {
+        this[_xfa_object.$popPara]();
+
         return _utils.HTMLResult.FAILURE;
       }
 
@@ -61055,6 +61855,9 @@ class Draw extends _xfa_object.XFAObject {
     if (!(0, _layout.checkDimensions)(this, availableSpace)) {
       this.w = savedW;
       this.h = savedH;
+
+      this[_xfa_object.$popPara]();
+
       return _utils.HTMLResult.FAILURE;
     }
 
@@ -61092,18 +61895,16 @@ class Draw extends _xfa_object.XFAObject {
       attributes,
       children: []
     };
-    const assist = this.assist ? this.assist[_xfa_object.$toHTML]() : null;
-
-    if (assist) {
-      html.attributes.title = assist;
-    }
-
+    applyAssist(this, attributes);
     const bbox = (0, _html_utils.computeBbox)(this, html, availableSpace);
     const value = this.value ? this.value[_xfa_object.$toHTML](availableSpace).html : null;
 
     if (value === null) {
       this.w = savedW;
       this.h = savedH;
+
+      this[_xfa_object.$popPara]();
+
       return _utils.HTMLResult.success((0, _html_utils.createWrapper)(this, html), bbox);
     }
 
@@ -61111,6 +61912,9 @@ class Draw extends _xfa_object.XFAObject {
     (0, _html_utils.setPara)(this, style, value);
     this.w = savedW;
     this.h = savedH;
+
+    this[_xfa_object.$popPara]();
+
     return _utils.HTMLResult.success((0, _html_utils.createWrapper)(this, html), bbox);
   }
 
@@ -61467,6 +62271,8 @@ class ExclGroup extends _xfa_object.XFAObject {
   }
 
   [_xfa_object.$toHTML](availableSpace) {
+    setTabIndex(this);
+
     if (this.presence === "hidden" || this.presence === "inactive" || this.h === 0 || this.w === 0) {
       return _utils.HTMLResult.EMPTY;
     }
@@ -61509,10 +62315,6 @@ class ExclGroup extends _xfa_object.XFAObject {
       return _utils.HTMLResult.FAILURE;
     }
 
-    availableSpace = {
-      width: this.w === "" ? availableSpace.width : this.w,
-      height: this.h === "" ? availableSpace.height : this.h
-    };
     const filter = new Set(["field"]);
 
     if (this.layout.includes("row")) {
@@ -61543,6 +62345,8 @@ class ExclGroup extends _xfa_object.XFAObject {
       attributes.xfaName = this.name;
     }
 
+    this[_xfa_object.$pushPara]();
+
     const isLrTb = this.layout === "lr-tb" || this.layout === "rl-tb";
     const maxRun = isLrTb ? MAX_ATTEMPTS_FOR_LRTB_LAYOUT : 1;
 
@@ -61561,6 +62365,8 @@ class ExclGroup extends _xfa_object.XFAObject {
       }
 
       if (result.isBreak()) {
+        this[_xfa_object.$popPara]();
+
         return result;
       }
 
@@ -61570,6 +62376,8 @@ class ExclGroup extends _xfa_object.XFAObject {
       }
     }
 
+    this[_xfa_object.$popPara]();
+
     if (!isSplittable) {
       unsetFirstUnsplittable(this);
     }
@@ -61607,12 +62415,7 @@ class ExclGroup extends _xfa_object.XFAObject {
       attributes,
       children
     };
-    const assist = this.assist ? this.assist[_xfa_object.$toHTML]() : null;
-
-    if (assist) {
-      html.attributes.title = assist;
-    }
-
+    applyAssist(this, attributes);
     delete this[_xfa_object.$extra];
     return _utils.HTMLResult.success((0, _html_utils.createWrapper)(this, html), bbox);
   }
@@ -61718,6 +62521,8 @@ class Field extends _xfa_object.XFAObject {
   }
 
   [_xfa_object.$toHTML](availableSpace) {
+    setTabIndex(this);
+
     if (!this.ui) {
       this.ui = new Ui({});
       this.ui[_xfa_object.$globalData] = this[_xfa_object.$globalData];
@@ -61746,8 +62551,6 @@ class Field extends _xfa_object.XFAObject {
       this.ui[_xfa_object.$appendChild](node);
     }
 
-    setTabIndex(this);
-
     if (!this.ui || this.presence === "hidden" || this.presence === "inactive" || this.h === 0 || this.w === 
0) {
       return _utils.HTMLResult.EMPTY;
     }
@@ -61756,21 +62559,46 @@ class Field extends _xfa_object.XFAObject {
       delete this.caption[_xfa_object.$extra];
     }
 
+    this[_xfa_object.$pushPara]();
+
     const caption = this.caption ? this.caption[_xfa_object.$toHTML](availableSpace).html : null;
     const savedW = this.w;
     const savedH = this.h;
+    let marginH = 0;
+    let marginV = 0;
 
-    if (this.w === "" || this.h === "") {
-      let marginH = 0;
-      let marginV = 0;
+    if (this.margin) {
+      marginH = this.margin.leftInset + this.margin.rightInset;
+      marginV = this.margin.topInset + this.margin.bottomInset;
+    }
 
-      if (this.margin) {
-        marginH = this.margin.leftInset + this.margin.rightInset;
-        marginV = this.margin.topInset + this.margin.bottomInset;
-      }
+    let borderDims = null;
 
+    if (this.w === "" || this.h === "") {
       let width = null;
       let height = null;
+      let uiW = 0;
+      let uiH = 0;
+
+      if (this.ui.checkButton) {
+        uiW = uiH = this.ui.checkButton.size;
+      } else {
+        const {
+          w,
+          h
+        } = (0, _html_utils.layoutNode)(this, availableSpace);
+
+        if (w !== null) {
+          uiW = w;
+          uiH = h;
+        } else {
+          uiH = (0, _fonts.getMetrics)(this.font, true).lineNoGap;
+        }
+      }
+
+      borderDims = getBorderDims(this.ui[_xfa_object.$getExtra]());
+      uiW += borderDims.w;
+      uiH += borderDims.h;
 
       if (this.caption) {
         const {
@@ -61780,43 +62608,53 @@ class Field extends _xfa_object.XFAObject {
         } = this.caption[_xfa_object.$getExtra](availableSpace);
 
         if (isBroken && this[_xfa_object.$getSubformParent]()[_xfa_object.$isThereMoreWidth]()) {
+          this[_xfa_object.$popPara]();
+
           return _utils.HTMLResult.FAILURE;
         }
 
         width = w;
         height = h;
 
-        if (this.ui.checkButton) {
-          switch (this.caption.placement) {
-            case "left":
-            case "right":
-            case "inline":
-              width += this.ui.checkButton.size;
-              break;
+        switch (this.caption.placement) {
+          case "left":
+          case "right":
+          case "inline":
+            width += uiW;
+            break;
 
-            case "top":
-            case "bottom":
-              height += this.ui.checkButton.size;
-              break;
-          }
+          case "top":
+          case "bottom":
+            height += uiH;
+            break;
         }
+      } else {
+        width = uiW;
+        height = uiH;
       }
 
       if (width && this.w === "") {
-        this.w = Math.min(this.maxW <= 0 ? Infinity : this.maxW, Math.max(this.minW, width + marginH));
+        width += marginH;
+        this.w = Math.min(this.maxW <= 0 ? Infinity : this.maxW, this.minW + 1 < width ? width : this.minW);
       }
 
       if (height && this.h === "") {
-        this.h = Math.min(this.maxH <= 0 ? Infinity : this.maxH, Math.max(this.minH, height + marginV));
+        height += marginV;
+        this.h = Math.min(this.maxH <= 0 ? Infinity : this.maxH, this.minH + 1 < height ? height : 
this.minH);
       }
     }
 
+    this[_xfa_object.$popPara]();
+
     (0, _html_utils.fixDimensions)(this);
     setFirstUnsplittable(this);
 
     if (!(0, _layout.checkDimensions)(this, availableSpace)) {
       this.w = savedW;
       this.h = savedH;
+
+      this[_xfa_object.$popPara]();
+
       return _utils.HTMLResult.FAILURE;
     }
 
@@ -61856,12 +62694,7 @@ class Field extends _xfa_object.XFAObject {
       attributes,
       children
     };
-    const assist = this.assist ? this.assist[_xfa_object.$toHTML]() : null;
-
-    if (assist) {
-      html.attributes.title = assist;
-    }
-
+    applyAssist(this, attributes);
     const borderStyle = this.border ? this.border[_xfa_object.$toStyle]() : null;
     const bbox = (0, _html_utils.computeBbox)(this, html, availableSpace);
 
@@ -61884,7 +62717,13 @@ class Field extends _xfa_object.XFAObject {
       ui.attributes.style = Object.create(null);
     }
 
+    let aElement = null;
+
     if (this.ui.button) {
+      if (ui.children.length === 1) {
+        [aElement] = ui.children.splice(0, 1);
+      }
+
       Object.assign(ui.attributes.style, borderStyle);
     } else {
       Object.assign(style, borderStyle);
@@ -61900,6 +62739,8 @@ class Field extends _xfa_object.XFAObject {
 
         if (this.value.exData) {
           value = this.value.exData[_xfa_object.$text]();
+        } else if (this.value.text) {
+          value = this.value.text[_xfa_object.$getExtra]();
         } else {
           const htmlValue = this.value[_xfa_object.$toHTML]().html;
 
@@ -61913,6 +62754,11 @@ class Field extends _xfa_object.XFAObject {
         }
 
         if (value) {
+          if (this.ui.numericEdit) {
+            value = parseFloat(value);
+            value = isNaN(value) ? "" : value.toString();
+          }
+
           if (ui.children[0].name === "textarea") {
             ui.children[0].attributes.textContent = value;
           } else {
@@ -61922,6 +62768,28 @@ class Field extends _xfa_object.XFAObject {
       }
     }
 
+    if (!this.ui.imageEdit && ui.children && ui.children[0] && this.h) {
+      borderDims = borderDims || getBorderDims(this.ui[_xfa_object.$getExtra]());
+      let captionHeight = 0;
+
+      if (this.caption && ["top", "bottom"].includes(this.caption.placement)) {
+        captionHeight = this.caption.reserve;
+
+        if (captionHeight <= 0) {
+          captionHeight = this.caption[_xfa_object.$getExtra](availableSpace).h;
+        }
+
+        const inputHeight = this.h - captionHeight - marginV - borderDims.h;
+        ui.children[0].attributes.style.height = (0, _html_utils.measureToString)(inputHeight);
+      } else {
+        ui.children[0].attributes.style.height = "100%";
+      }
+    }
+
+    if (aElement) {
+      ui.children.push(aElement);
+    }
+
     if (!caption) {
       if (ui.attributes.class) {
         ui.attributes.class.push("xfaLeft");
@@ -61951,25 +62819,23 @@ class Field extends _xfa_object.XFAObject {
       ui.attributes.class = [];
     }
 
+    ui.children.splice(0, 0, caption);
+
     switch (this.caption.placement) {
       case "left":
-        ui.children.splice(0, 0, caption);
         ui.attributes.class.push("xfaLeft");
         break;
 
       case "right":
-        ui.children.push(caption);
-        ui.attributes.class.push("xfaLeft");
+        ui.attributes.class.push("xfaRight");
         break;
 
       case "top":
-        ui.children.splice(0, 0, caption);
         ui.attributes.class.push("xfaTop");
         break;
 
       case "bottom":
-        ui.children.push(caption);
-        ui.attributes.class.push("xfaTop");
+        ui.attributes.class.push("xfaBottom");
         break;
 
       case "inline":
@@ -62005,15 +62871,25 @@ class Fill extends _xfa_object.XFAObject {
   [_xfa_object.$toStyle]() {
     const parent = this[_xfa_object.$getParent]();
 
+    const grandpa = parent[_xfa_object.$getParent]();
+
+    const ggrandpa = grandpa[_xfa_object.$getParent]();
+
     const style = Object.create(null);
     let propName = "color";
+    let altPropName = propName;
 
     if (parent instanceof Border) {
-      propName = "background";
+      propName = "background-color";
+      altPropName = "background";
+
+      if (ggrandpa instanceof Ui) {
+        style.backgroundColor = "white";
+      }
     }
 
     if (parent instanceof Rectangle || parent instanceof Arc) {
-      propName = "fill";
+      propName = altPropName = "fill";
       style.fill = "white";
     }
 
@@ -62028,12 +62904,19 @@ class Fill extends _xfa_object.XFAObject {
         continue;
       }
 
-      style[propName] = obj[_xfa_object.$toStyle](this.color);
+      const color = obj[_xfa_object.$toStyle](this.color);
+
+      if (color) {
+        style[color.startsWith("#") ? propName : altPropName] = color;
+      }
+
       return style;
     }
 
-    if (this.color) {
-      style[propName] = this.color[_xfa_object.$toStyle]();
+    if (this.color && this.color.value) {
+      const color = this.color[_xfa_object.$toStyle]();
+
+      style[color.startsWith("#") ? propName : altPropName] = color;
     }
 
     return style;
@@ -62178,7 +63061,7 @@ class Font extends _xfa_object.XFAObject {
 
     style.fontStyle = this.posture;
     style.fontSize = (0, _html_utils.measureToString)(0.99 * this.size);
-    (0, _html_utils.setFontFamily)(this, this[_xfa_object.$globalData].fontFinder, style);
+    (0, _html_utils.setFontFamily)(this, this, this[_xfa_object.$globalData].fontFinder, style);
 
     if (this.underline !== 0) {
       style.textDecoration = "underline";
@@ -62271,6 +63154,10 @@ class Image extends _xfa_object.StringObject {
   }
 
   [_xfa_object.$toHTML]() {
+    if (this.contentType && !MIMES.has(this.contentType.toLowerCase())) {
+      return _utils.HTMLResult.EMPTY;
+    }
+
     let buffer = this[_xfa_object.$globalData].images && this[_xfa_object.$globalData].images.get(this.href);
 
     if (!buffer && (this.href || !this[_xfa_object.$content])) {
@@ -62285,6 +63172,19 @@ class Image extends _xfa_object.StringObject {
       return _utils.HTMLResult.EMPTY;
     }
 
+    if (!this.contentType) {
+      for (const [header, type] of IMAGES_HEADERS) {
+        if (buffer.length > header.length && header.every((x, i) => x === buffer[i])) {
+          this.contentType = type;
+          break;
+        }
+      }
+
+      if (!this.contentType) {
+        return _utils.HTMLResult.EMPTY;
+      }
+    }
+
     const blob = new Blob([buffer], {
       type: this.contentType
     });
@@ -62318,12 +63218,15 @@ class Image extends _xfa_object.StringObject {
         break;
     }
 
+    const parent = this[_xfa_object.$getParent]();
+
     return _utils.HTMLResult.success({
       name: "img",
       attributes: {
         class: ["xfaImage"],
         style,
-        src: URL.createObjectURL(blob)
+        src: URL.createObjectURL(blob),
+        alt: parent ? ariaLabel(parent[_xfa_object.$getParent]()) : null
       }
     });
   }
@@ -62687,7 +63590,8 @@ class NumericEdit extends _xfa_object.XFAObject {
         fieldId: field[_xfa_object.$uid],
         dataId: field[_xfa_object.$data] && field[_xfa_object.$data][_xfa_object.$uid] || 
field[_xfa_object.$uid],
         class: ["xfaTextfield"],
-        style
+        style,
+        "aria-label": ariaLabel(field)
       }
     };
     return _utils.HTMLResult.success({
@@ -62705,26 +63609,52 @@ class Occur extends _xfa_object.XFAObject {
   constructor(attributes) {
     super(TEMPLATE_NS_ID, "occur", true);
     this.id = attributes.id || "";
-    this.initial = (0, _utils.getInteger)({
+    this.initial = attributes.initial !== "" ? (0, _utils.getInteger)({
       data: attributes.initial,
-      defaultValue: 1,
+      defaultValue: "",
       validate: x => true
-    });
-    this.max = (0, _utils.getInteger)({
+    }) : "";
+    this.max = attributes.max !== "" ? (0, _utils.getInteger)({
       data: attributes.max,
       defaultValue: 1,
       validate: x => true
-    });
-    this.min = (0, _utils.getInteger)({
+    }) : "";
+    this.min = attributes.min !== "" ? (0, _utils.getInteger)({
       data: attributes.min,
       defaultValue: 1,
       validate: x => true
-    });
+    }) : "";
     this.use = attributes.use || "";
     this.usehref = attributes.usehref || "";
     this.extras = null;
   }
 
+  [_xfa_object.$clean]() {
+    const parent = this[_xfa_object.$getParent]();
+
+    const originalMin = this.min;
+
+    if (this.min === "") {
+      this.min = parent instanceof PageArea || parent instanceof PageSet ? 0 : 1;
+    }
+
+    if (this.max === "") {
+      if (originalMin === "") {
+        this.max = parent instanceof PageArea || parent instanceof PageSet ? -1 : 1;
+      } else {
+        this.max = this.min;
+      }
+    }
+
+    if (this.max !== -1 && this.max < this.min) {
+      this.max = this.min;
+    }
+
+    if (this.initial === "") {
+      this.initial = parent instanceof Template ? 1 : this.min;
+    }
+  }
+
 }
 
 class Oid extends _xfa_object.StringObject {
@@ -63636,12 +64566,6 @@ class Subform extends _xfa_object.XFAObject {
       return false;
     }
 
-    const contentArea = this[_xfa_object.$getTemplateRoot]()[_xfa_object.$extra].currentContentArea;
-
-    if (this.overflow && this.overflow[_xfa_object.$getExtra]().target === contentArea) {
-      return false;
-    }
-
     if (this[_xfa_object.$extra]._isSplittable !== undefined) {
       return this[_xfa_object.$extra]._isSplittable;
     }
@@ -63665,6 +64589,8 @@ class Subform extends _xfa_object.XFAObject {
   }
 
   [_xfa_object.$toHTML](availableSpace) {
+    setTabIndex(this);
+
     if (this.break) {
       if (this.break.after !== "auto" || this.break.afterTarget !== "") {
         const node = new BreakAfter({
@@ -63760,13 +64686,8 @@ class Subform extends _xfa_object.XFAObject {
 
     const root = this[_xfa_object.$getTemplateRoot]();
 
-    const currentContentArea = root[_xfa_object.$extra].currentContentArea;
     const savedNoLayoutFailure = root[_xfa_object.$extra].noLayoutFailure;
 
-    if (this.overflow) {
-      root[_xfa_object.$extra].noLayoutFailure = root[_xfa_object.$extra].noLayoutFailure || 
this.overflow[_xfa_object.$getExtra]().target === currentContentArea;
-    }
-
     const isSplittable = this[_xfa_object.$isSplittable]();
 
     if (!isSplittable) {
@@ -63812,6 +64733,8 @@ class Subform extends _xfa_object.XFAObject {
       }
     }
 
+    this[_xfa_object.$pushPara]();
+
     const isLrTb = this.layout === "lr-tb" || this.layout === "rl-tb";
     const maxRun = isLrTb ? MAX_ATTEMPTS_FOR_LRTB_LAYOUT : 1;
 
@@ -63830,6 +64753,8 @@ class Subform extends _xfa_object.XFAObject {
       }
 
       if (result.isBreak()) {
+        this[_xfa_object.$popPara]();
+
         return result;
       }
 
@@ -63839,6 +64764,8 @@ class Subform extends _xfa_object.XFAObject {
       }
     }
 
+    this[_xfa_object.$popPara]();
+
     if (!isSplittable) {
       unsetFirstUnsplittable(this);
     }
@@ -63891,11 +64818,7 @@ class Subform extends _xfa_object.XFAObject {
       attributes,
       children
     };
-    const assist = this.assist ? this.assist[_xfa_object.$toHTML]() : null;
-
-    if (assist) {
-      html.attributes.title = assist;
-    }
+    applyAssist(this, attributes);
 
     const result = _utils.HTMLResult.success((0, _html_utils.createWrapper)(this, html), bbox);
 
@@ -63949,6 +64872,10 @@ class SubformSet extends _xfa_object.XFAObject {
     return parent;
   }
 
+  [_xfa_object.$isBindable]() {
+    return true;
+  }
+
 }
 
 class SubjectDN extends _xfa_object.ContentObject {
@@ -63997,7 +64924,7 @@ class Submit extends _xfa_object.XFAObject {
     this.textEncoding = (0, _utils.getKeyword)({
       data: attributes.textEncoding ? attributes.textEncoding.toLowerCase() : "",
       defaultValue: "",
-      validate: k => ["utf-8", "big-five", "fontspecific", "gbk", "gb-18030", "gb-2312", "ksc-5601", "none", 
"shift-jis", "ucs-2", "utf-16"].includes(k) || k.match(/iso-8859-[0-9]{2}/)
+      validate: k => ["utf-8", "big-five", "fontspecific", "gbk", "gb-18030", "gb-2312", "ksc-5601", "none", 
"shift-jis", "ucs-2", "utf-16"].includes(k) || k.match(/iso-8859-\d{2}/)
     });
     this.use = attributes.use || "";
     this.usehref = attributes.usehref || "";
@@ -64026,7 +64953,7 @@ class Template extends _xfa_object.XFAObject {
       (0, _util.warn)("XFA - Several subforms in template node: please file a bug.");
     }
 
-    this[_xfa_object.$tabIndex] = 1000;
+    this[_xfa_object.$tabIndex] = DEFAULT_TAB_INDEX;
   }
 
   [_xfa_object.$isSplittable]() {
@@ -64058,7 +64985,8 @@ class Template extends _xfa_object.XFAObject {
       pageNumber: 1,
       pagePosition: "first",
       oddOrEven: "odd",
-      blankOrNotBlank: "nonBlank"
+      blankOrNotBlank: "nonBlank",
+      paraStack: []
     };
     const root = this.subform.children[0];
 
@@ -64237,6 +65165,7 @@ class Template extends _xfa_object.XFAObject {
           overflowExtra.addLeader = overflowExtra.leader !== null;
           overflowExtra.addTrailer = overflowExtra.trailer !== null;
           flush(i);
+          const currentIndex = i;
           i = Infinity;
 
           if (target instanceof PageArea) {
@@ -64245,7 +65174,11 @@ class Template extends _xfa_object.XFAObject {
             const index = contentAreas.findIndex(e => e === target);
 
             if (index !== -1) {
-              i = index - 1;
+              if (index > currentIndex) {
+                i = index - 1;
+              } else {
+                startIndex = index;
+              }
             } else {
               targetPageArea = target[_xfa_object.$getParent]();
               startIndex = targetPageArea.contentArea.children.findIndex(e => e === target);
@@ -64313,6 +65246,26 @@ class Text extends _xfa_object.ContentObject {
     super[_xfa_object.$onText](str);
   }
 
+  [_xfa_object.$finalize]() {
+    if (typeof this[_xfa_object.$content] === "string") {
+      this[_xfa_object.$content] = this[_xfa_object.$content].replace(/\r\n/g, "\n");
+    }
+  }
+
+  [_xfa_object.$getExtra]() {
+    if (typeof this[_xfa_object.$content] === "string") {
+      return this[_xfa_object.$content].split(/[\u2029\u2028\n]/).reduce((acc, line) => {
+        if (line) {
+          acc.push(line);
+        }
+
+        return acc;
+      }, []).join("\n");
+    }
+
+    return this[_xfa_object.$content][_xfa_object.$text]();
+  }
+
   [_xfa_object.$toHTML](availableSpace) {
     if (typeof this[_xfa_object.$content] === "string") {
       const html = valueToHtml(this[_xfa_object.$content]).html;
@@ -64369,7 +65322,11 @@ class TextEdit extends _xfa_object.XFAObject {
     });
     this.hScrollPolicy = (0, _utils.getStringOption)(attributes.hScrollPolicy, ["auto", "off", "on"]);
     this.id = attributes.id || "";
-    this.multiLine = attributes.multiLine || "";
+    this.multiLine = (0, _utils.getInteger)({
+      data: attributes.multiLine,
+      defaultValue: "",
+      validate: x => x === 0 || x === 1
+    });
     this.use = attributes.use || "";
     this.usehref = attributes.usehref || "";
     this.vScrollPolicy = (0, _utils.getStringOption)(attributes.vScrollPolicy, ["auto", "off", "on"]);
@@ -64379,25 +65336,16 @@ class TextEdit extends _xfa_object.XFAObject {
     this.margin = null;
   }
 
-  [_xfa_object.$clean](builder) {
-    super[_xfa_object.$clean](builder);
-
-    const parent = this[_xfa_object.$getParent]();
-
-    const defaultValue = parent instanceof Draw ? 1 : 0;
-    this.multiLine = (0, _utils.getInteger)({
-      data: this.multiLine,
-      defaultValue,
-      validate: x => x === 0 || x === 1
-    });
-  }
-
   [_xfa_object.$toHTML](availableSpace) {
     const style = (0, _html_utils.toStyle)(this, "border", "font", "margin");
     let html;
 
     const field = this[_xfa_object.$getParent]()[_xfa_object.$getParent]();
 
+    if (this.multiLine === "") {
+      this.multiLine = field instanceof Draw ? 1 : 0;
+    }
+
     if (this.multiLine === 1) {
       html = {
         name: "textarea",
@@ -64405,7 +65353,8 @@ class TextEdit extends _xfa_object.XFAObject {
           dataId: field[_xfa_object.$data] && field[_xfa_object.$data][_xfa_object.$uid] || 
field[_xfa_object.$uid],
           fieldId: field[_xfa_object.$uid],
           class: ["xfaTextfield"],
-          style
+          style,
+          "aria-label": ariaLabel(field)
         }
       };
     } else {
@@ -64416,7 +65365,8 @@ class TextEdit extends _xfa_object.XFAObject {
           dataId: field[_xfa_object.$data] && field[_xfa_object.$data][_xfa_object.$uid] || 
field[_xfa_object.$uid],
           fieldId: field[_xfa_object.$uid],
           class: ["xfaTextfield"],
-          style
+          style,
+          "aria-label": ariaLabel(field)
         }
       };
     }
@@ -64531,18 +65481,33 @@ class Ui extends _xfa_object.XFAObject {
     this.textEdit = null;
   }
 
-  [_xfa_object.$toHTML](availableSpace) {
-    for (const name of Object.getOwnPropertyNames(this)) {
-      if (name === "extras" || name === "picture") {
-        continue;
-      }
+  [_xfa_object.$getExtra]() {
+    if (this[_xfa_object.$extra] === undefined) {
+      for (const name of Object.getOwnPropertyNames(this)) {
+        if (name === "extras" || name === "picture") {
+          continue;
+        }
 
-      const obj = this[name];
+        const obj = this[name];
 
-      if (!(obj instanceof _xfa_object.XFAObject)) {
-        continue;
+        if (!(obj instanceof _xfa_object.XFAObject)) {
+          continue;
+        }
+
+        this[_xfa_object.$extra] = obj;
+        return obj;
       }
 
+      this[_xfa_object.$extra] = null;
+    }
+
+    return this[_xfa_object.$extra];
+  }
+
+  [_xfa_object.$toHTML](availableSpace) {
+    const obj = this[_xfa_object.$getExtra]();
+
+    if (obj) {
       return obj[_xfa_object.$toHTML](availableSpace);
     }
 
@@ -64602,6 +65567,8 @@ class Value extends _xfa_object.XFAObject {
       if (parent.ui && parent.ui.imageEdit) {
         if (!this.image) {
           this.image = new Image({});
+
+          this[_xfa_object.$appendChild](this.image);
         }
 
         this.image[_xfa_object.$content] = value[_xfa_object.$content];
@@ -64633,6 +65600,10 @@ class Value extends _xfa_object.XFAObject {
 
   [_xfa_object.$text]() {
     if (this.exData) {
+      if (typeof this.exData[_xfa_object.$content] === "string") {
+        return this.exData[_xfa_object.$content].trim();
+      }
+
       return this.exData[_xfa_object.$content][_xfa_object.$text]().trim();
     }
 
@@ -65432,20 +66403,20 @@ function checkDimensions(node, space) {
             }
 
             if (parent[_xfa_object.$extra].numberInLine === 0) {
-              return space.height > 0;
+              return space.height > ERROR;
             }
 
             return false;
           }
 
-          return space.width > 0;
+          return space.width > ERROR;
         }
 
         if (node.w !== "") {
           return Math.round(w - space.width) <= ERROR;
         }
 
-        return space.width > 0;
+        return space.width > ERROR;
       }
 
       if (node[_xfa_object.$getTemplateRoot]()[_xfa_object.$extra].noLayoutFailure) {
@@ -65457,14 +66428,14 @@ function checkDimensions(node, space) {
       }
 
       if (node.w === "" || Math.round(w - space.width) <= ERROR) {
-        return space.height > 0;
+        return space.height > ERROR;
       }
 
       if (parent[_xfa_object.$isThereMoreWidth]()) {
         return false;
       }
 
-      return space.height > 0;
+      return space.height > ERROR;
 
     case "table":
     case "tb":
@@ -65477,14 +66448,14 @@ function checkDimensions(node, space) {
       }
 
       if (node.w === "" || Math.round(w - space.width) <= ERROR) {
-        return space.height > 0;
+        return space.height > ERROR;
       }
 
       if (parent[_xfa_object.$isThereMoreWidth]()) {
         return false;
       }
 
-      return space.height > 0;
+      return space.height > ERROR;
 
     case "position":
       if (node[_xfa_object.$getTemplateRoot]()[_xfa_object.$extra].noLayoutFailure) {
@@ -65529,6 +66500,7 @@ exports.computeBbox = computeBbox;
 exports.createWrapper = createWrapper;
 exports.fixDimensions = fixDimensions;
 exports.fixTextIndent = fixTextIndent;
+exports.fixURL = fixURL;
 exports.isPrintOnly = isPrintOnly;
 exports.layoutClass = layoutClass;
 exports.layoutNode = layoutNode;
@@ -65541,14 +66513,14 @@ exports.toStyle = toStyle;
 
 var _xfa_object = __w_pdfjs_require__(75);
 
+var _util = __w_pdfjs_require__(2);
+
 var _utils = __w_pdfjs_require__(76);
 
 var _fonts = __w_pdfjs_require__(83);
 
 var _text = __w_pdfjs_require__(84);
 
-var _util = __w_pdfjs_require__(2);
-
 function measureToString(m) {
   if (typeof m === "string") {
     return "0px";
@@ -65793,7 +66765,7 @@ function layoutNode(node, availableSpace) {
       }
     }
 
-    const maxWidth = !node.w ? availableSpace.width : node.w;
+    const maxWidth = (!node.w ? availableSpace.width : node.w) - marginH;
     const fontFinder = node[_xfa_object.$globalData].fontFinder;
 
     if (node.value.exData && node.value.exData[_xfa_object.$content] && node.value.exData.contentType === 
"text/html") {
@@ -66104,6 +67076,12 @@ function isPrintOnly(node) {
   return node.relevant.length > 0 && !node.relevant[0].excluded && node.relevant[0].viewname === "print";
 }
 
+function getCurrentPara(node) {
+  const stack = node[_xfa_object.$getTemplateRoot]()[_xfa_object.$extra].paraStack;
+
+  return stack.length ? stack[stack.length - 1] : null;
+}
+
 function setPara(node, nodeStyle, value) {
   if (value.attributes.class && value.attributes.class.includes("xfaRich")) {
     if (nodeStyle) {
@@ -66116,12 +67094,14 @@ function setPara(node, nodeStyle, value) {
       }
     }
 
-    if (node.para) {
+    const para = getCurrentPara(node);
+
+    if (para) {
       const valueStyle = value.attributes.style;
       valueStyle.display = "flex";
       valueStyle.flexDirection = "column";
 
-      switch (node.para.vAlign) {
+      switch (para.vAlign) {
         case "top":
           valueStyle.justifyContent = "start";
           break;
@@ -66135,7 +67115,7 @@ function setPara(node, nodeStyle, value) {
           break;
       }
 
-      const paraStyle = node.para[_xfa_object.$toStyle]();
+      const paraStyle = para[_xfa_object.$toStyle]();
 
       for (const [key, val] of Object.entries(paraStyle)) {
         if (!(key in valueStyle)) {
@@ -66146,7 +67126,7 @@ function setPara(node, nodeStyle, value) {
   }
 }
 
-function setFontFamily(xfaFont, fontFinder, style) {
+function setFontFamily(xfaFont, node, fontFinder, style) {
   const name = (0, _utils.stripQuotes)(xfaFont.typeface);
   const typeface = fontFinder.find(name);
   style.fontFamily = `"${name}"`;
@@ -66160,20 +67140,32 @@ function setFontFamily(xfaFont, fontFinder, style) {
       style.fontFamily = `"${fontFamily}"`;
     }
 
+    const para = getCurrentPara(node);
+
+    if (para && para.lineHeight !== "") {
+      return;
+    }
+
     if (style.lineHeight) {
       return;
     }
 
     const pdfFont = (0, _fonts.selectFont)(xfaFont, typeface);
 
-    if (pdfFont && pdfFont.lineHeight > 0) {
+    if (pdfFont) {
       style.lineHeight = Math.max(1.2, pdfFont.lineHeight);
-    } else {
-      style.lineHeight = 1.2;
     }
   }
 }
 
+function fixURL(str) {
+  const absoluteUrl = (0, _util.createValidAbsoluteUrl)(str, null, {
+    addDefaultProtocol: true,
+    tryConvertEncoding: true
+  });
+  return absoluteUrl ? absoluteUrl.href : null;
+}
+
 /***/ }),
 /* 83 */
 /***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
@@ -66183,9 +67175,14 @@ function setFontFamily(xfaFont, fontFinder, style) {
 Object.defineProperty(exports, "__esModule", ({
   value: true
 }));
+exports.getMetrics = getMetrics;
 exports.selectFont = selectFont;
 exports.FontFinder = void 0;
 
+var _xfa_object = __w_pdfjs_require__(75);
+
+var _utils = __w_pdfjs_require__(76);
+
 var _util = __w_pdfjs_require__(2);
 
 class FontFinder {
@@ -66349,6 +67346,35 @@ function selectFont(xfaFont, typeface) {
   return typeface.regular;
 }
 
+function getMetrics(xfaFont, real = false) {
+  let pdfFont = null;
+
+  if (xfaFont) {
+    const name = (0, _utils.stripQuotes)(xfaFont.typeface);
+
+    const typeface = xfaFont[_xfa_object.$globalData].fontFinder.find(name);
+
+    pdfFont = selectFont(xfaFont, typeface);
+  }
+
+  if (!pdfFont) {
+    return {
+      lineHeight: 12,
+      lineGap: 2,
+      lineNoGap: 10
+    };
+  }
+
+  const size = xfaFont.size || 10;
+  const lineHeight = pdfFont.lineHeight ? Math.max(real ? 0 : 1.2, pdfFont.lineHeight) : 1.2;
+  const lineGap = pdfFont.lineGap === undefined ? 0.2 : pdfFont.lineGap;
+  return {
+    lineHeight: lineHeight * size,
+    lineGap: lineGap * size,
+    lineNoGap: Math.max(1, lineHeight - lineGap) * size
+  };
+}
+
 /***/ }),
 /* 84 */
 /***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
@@ -66362,7 +67388,7 @@ exports.TextMeasure = void 0;
 
 var _fonts = __w_pdfjs_require__(83);
 
-const WIDTH_FACTOR = 1.01;
+const WIDTH_FACTOR = 1.02;
 
 class FontInfo {
   constructor(xfaFont, margin, lineHeight, fontFinder) {
@@ -66499,18 +67525,24 @@ class TextMeasure {
     if (lastFont.pdfFont) {
       const letterSpacing = lastFont.xfaFont.letterSpacing;
       const pdfFont = lastFont.pdfFont;
-      const lineHeight = lastFont.lineHeight || Math.ceil(Math.max(1.2, pdfFont.lineHeight) * fontSize);
+      const fontLineHeight = pdfFont.lineHeight || 1.2;
+      const lineHeight = lastFont.lineHeight || Math.max(1.2, fontLineHeight) * fontSize;
+      const lineGap = pdfFont.lineGap === undefined ? 0.2 : pdfFont.lineGap;
+      const noGap = fontLineHeight - lineGap;
+      const firstLineHeight = Math.max(1, noGap) * fontSize;
       const scale = fontSize / 1000;
+      const fallbackWidth = pdfFont.defaultWidth || pdfFont.charsToGlyphs(" ")[0].width;
 
       for (const line of str.split(/[\u2029\n]/)) {
         const encodedLine = pdfFont.encodeString(line).join("");
         const glyphs = pdfFont.charsToGlyphs(encodedLine);
 
         for (const glyph of glyphs) {
-          this.glyphs.push([glyph.width * scale + letterSpacing, lineHeight, glyph.unicode === " ", false]);
+          const width = glyph.width || fallbackWidth;
+          this.glyphs.push([width * scale + letterSpacing, lineHeight, firstLineHeight, glyph.unicode, 
false]);
         }
 
-        this.glyphs.push([0, 0, false, true]);
+        this.glyphs.push([0, 0, 0, "\n", true]);
       }
 
       this.glyphs.pop();
@@ -66519,10 +67551,10 @@ class TextMeasure {
 
     for (const line of str.split(/[\u2029\n]/)) {
       for (const char of line.split("")) {
-        this.glyphs.push([fontSize, fontSize, char === " ", false]);
+        this.glyphs.push([fontSize, 1.2 * fontSize, fontSize, char, false]);
       }
 
-      this.glyphs.push([0, 0, false, true]);
+      this.glyphs.push([0, 0, 0, "\n", true]);
     }
 
     this.glyphs.pop();
@@ -66536,9 +67568,12 @@ class TextMeasure {
         currentLineWidth = 0,
         currentLineHeight = 0;
     let isBroken = false;
+    let isFirstLine = true;
 
     for (let i = 0, ii = this.glyphs.length; i < ii; i++) {
-      const [glyphWidth, glyphHeight, isSpace, isEOL] = this.glyphs[i];
+      const [glyphWidth, lineHeight, firstLineHeight, char, isEOL] = this.glyphs[i];
+      const isSpace = char === " ";
+      const glyphHeight = isFirstLine ? firstLineHeight : lineHeight;
 
       if (isEOL) {
         width = Math.max(width, currentLineWidth);
@@ -66547,6 +67582,7 @@ class TextMeasure {
         currentLineHeight = glyphHeight;
         lastSpacePos = -1;
         lastSpaceWidth = 0;
+        isFirstLine = false;
         continue;
       }
 
@@ -66559,6 +67595,7 @@ class TextMeasure {
           lastSpacePos = -1;
           lastSpaceWidth = 0;
           isBroken = true;
+          isFirstLine = false;
         } else {
           currentLineHeight = Math.max(glyphHeight, currentLineHeight);
           lastSpaceWidth = currentLineWidth;
@@ -66585,6 +67622,7 @@ class TextMeasure {
         }
 
         isBroken = true;
+        isFirstLine = false;
         continue;
       }
 
@@ -69822,7 +70860,7 @@ const StyleMapping = new Map([["page-break-after", "breakAfter"], ["page-break-b
 const spacesRegExp = /\s+/g;
 const crlfRegExp = /[\r\n]+/g;
 
-function mapStyle(styleStr, fontFinder) {
+function mapStyle(styleStr, node) {
   const style = Object.create(null);
 
   if (!styleStr) {
@@ -69865,7 +70903,7 @@ function mapStyle(styleStr, fontFinder) {
       weight: style.fontWeight || "normal",
       posture: style.fontStyle || "normal",
       size: original.fontSize || 0
-    }, fontFinder, style);
+    }, node, node[_xfa_object.$globalData].fontFinder, style);
   }
 
   (0, _html_utils.fixTextIndent)(style);
@@ -70035,7 +71073,7 @@ class XhtmlObject extends _xfa_object.XmlObject {
       name: this[_xfa_object.$nodeName],
       attributes: {
         href: this.href,
-        style: mapStyle(this.style, this[_xfa_object.$globalData].fontFinder)
+        style: mapStyle(this.style, this)
       },
       children,
       value: this[_xfa_object.$content] || ""
@@ -70047,7 +71085,7 @@ class XhtmlObject extends _xfa_object.XmlObject {
 class A extends XhtmlObject {
   constructor(attributes) {
     super(attributes, "a");
-    this.href = attributes.href || "";
+    this.href = (0, _html_utils.fixURL)(attributes.href) || "";
   }
 
 }
@@ -70343,7 +71381,7 @@ var _util = __w_pdfjs_require__(2);
 
 var _primitives = __w_pdfjs_require__(5);
 
-var _parser = __w_pdfjs_require__(17);
+var _parser = __w_pdfjs_require__(27);
 
 var _core_utils = __w_pdfjs_require__(9);
 
@@ -71194,7 +72232,8 @@ const StreamKind = {
 };
 
 function wrapReason(reason) {
-  if (typeof reason !== "object" || reason === null) {
+  if (!(reason instanceof Error || typeof reason === "object" && reason !== null)) {
+    (0, _util.warn)('wrapReason: Expected "reason" to be a (possibly cloned) Error.');
     return reason;
   }
 
@@ -71205,6 +72244,9 @@ function wrapReason(reason) {
     case "MissingPDFException":
       return new _util.MissingPDFException(reason.message);
 
+    case "PasswordException":
+      return new _util.PasswordException(reason.message, reason.code);
+
     case "UnexpectedResponseException":
       return new _util.UnexpectedResponseException(reason.message, reason.status);
 
@@ -71346,10 +72388,10 @@ class MessageHandler {
   }
 
   sendWithStream(actionName, data, queueingStrategy, transfers) {
-    const streamId = this.streamId++;
-    const sourceName = this.sourceName;
-    const targetName = this.targetName;
-    const comObj = this.comObj;
+    const streamId = this.streamId++,
+          sourceName = this.sourceName,
+          targetName = this.targetName,
+          comObj = this.comObj;
     return new ReadableStream({
       start: controller => {
         const startCapability = (0, _util.createPromiseCapability)();
@@ -71402,12 +72444,12 @@ class MessageHandler {
   }
 
   _createStreamSink(data) {
-    const self = this;
-    const action = this.actionHandler[data.action];
-    const streamId = data.streamId;
-    const sourceName = this.sourceName;
-    const targetName = data.sourceName;
-    const comObj = this.comObj;
+    const streamId = data.streamId,
+          sourceName = this.sourceName,
+          targetName = data.sourceName,
+          comObj = this.comObj;
+    const self = this,
+          action = this.actionHandler[data.action];
     const streamSink = {
       enqueue(chunk, size = 1, transfers) {
         if (this.isCancelled) {
@@ -71495,32 +72537,34 @@ class MessageHandler {
   }
 
   _processStreamMessage(data) {
-    const streamId = data.streamId;
-    const sourceName = this.sourceName;
-    const targetName = data.sourceName;
-    const comObj = this.comObj;
+    const streamId = data.streamId,
+          sourceName = this.sourceName,
+          targetName = data.sourceName,
+          comObj = this.comObj;
+    const streamController = this.streamControllers[streamId],
+          streamSink = this.streamSinks[streamId];
 
     switch (data.stream) {
       case StreamKind.START_COMPLETE:
         if (data.success) {
-          this.streamControllers[streamId].startCall.resolve();
+          streamController.startCall.resolve();
         } else {
-          this.streamControllers[streamId].startCall.reject(wrapReason(data.reason));
+          streamController.startCall.reject(wrapReason(data.reason));
         }
 
         break;
 
       case StreamKind.PULL_COMPLETE:
         if (data.success) {
-          this.streamControllers[streamId].pullCall.resolve();
+          streamController.pullCall.resolve();
         } else {
-          this.streamControllers[streamId].pullCall.reject(wrapReason(data.reason));
+          streamController.pullCall.reject(wrapReason(data.reason));
         }
 
         break;
 
       case StreamKind.PULL:
-        if (!this.streamSinks[streamId]) {
+        if (!streamSink) {
           comObj.postMessage({
             sourceName,
             targetName,
@@ -71531,16 +72575,13 @@ class MessageHandler {
           break;
         }
 
-        if (this.streamSinks[streamId].desiredSize <= 0 && data.desiredSize > 0) {
-          this.streamSinks[streamId].sinkCapability.resolve();
+        if (streamSink.desiredSize <= 0 && data.desiredSize > 0) {
+          streamSink.sinkCapability.resolve();
         }
 
-        this.streamSinks[streamId].desiredSize = data.desiredSize;
-        const {
-          onPull
-        } = this.streamSinks[data.streamId];
+        streamSink.desiredSize = data.desiredSize;
         new Promise(function (resolve) {
-          resolve(onPull && onPull());
+          resolve(streamSink.onPull && streamSink.onPull());
         }).then(function () {
           comObj.postMessage({
             sourceName,
@@ -71561,58 +72602,55 @@ class MessageHandler {
         break;
 
       case StreamKind.ENQUEUE:
-        (0, _util.assert)(this.streamControllers[streamId], "enqueue should have stream controller");
+        (0, _util.assert)(streamController, "enqueue should have stream controller");
 
-        if (this.streamControllers[streamId].isClosed) {
+        if (streamController.isClosed) {
           break;
         }
 
-        this.streamControllers[streamId].controller.enqueue(data.chunk);
+        streamController.controller.enqueue(data.chunk);
         break;
 
       case StreamKind.CLOSE:
-        (0, _util.assert)(this.streamControllers[streamId], "close should have stream controller");
+        (0, _util.assert)(streamController, "close should have stream controller");
 
-        if (this.streamControllers[streamId].isClosed) {
+        if (streamController.isClosed) {
           break;
         }
 
-        this.streamControllers[streamId].isClosed = true;
-        this.streamControllers[streamId].controller.close();
+        streamController.isClosed = true;
+        streamController.controller.close();
 
-        this._deleteStreamController(streamId);
+        this._deleteStreamController(streamController, streamId);
 
         break;
 
       case StreamKind.ERROR:
-        (0, _util.assert)(this.streamControllers[streamId], "error should have stream controller");
-        this.streamControllers[streamId].controller.error(wrapReason(data.reason));
+        (0, _util.assert)(streamController, "error should have stream controller");
+        streamController.controller.error(wrapReason(data.reason));
 
-        this._deleteStreamController(streamId);
+        this._deleteStreamController(streamController, streamId);
 
         break;
 
       case StreamKind.CANCEL_COMPLETE:
         if (data.success) {
-          this.streamControllers[streamId].cancelCall.resolve();
+          streamController.cancelCall.resolve();
         } else {
-          this.streamControllers[streamId].cancelCall.reject(wrapReason(data.reason));
+          streamController.cancelCall.reject(wrapReason(data.reason));
         }
 
-        this._deleteStreamController(streamId);
+        this._deleteStreamController(streamController, streamId);
 
         break;
 
       case StreamKind.CANCEL:
-        if (!this.streamSinks[streamId]) {
+        if (!streamSink) {
           break;
         }
 
-        const {
-          onCancel
-        } = this.streamSinks[data.streamId];
         new Promise(function (resolve) {
-          resolve(onCancel && onCancel(wrapReason(data.reason)));
+          resolve(streamSink.onCancel && streamSink.onCancel(wrapReason(data.reason)));
         }).then(function () {
           comObj.postMessage({
             sourceName,
@@ -71630,8 +72668,8 @@ class MessageHandler {
             reason: wrapReason(reason)
           });
         });
-        this.streamSinks[streamId].sinkCapability.reject(wrapReason(data.reason));
-        this.streamSinks[streamId].isCancelled = true;
+        streamSink.sinkCapability.reject(wrapReason(data.reason));
+        streamSink.isCancelled = true;
         delete this.streamSinks[streamId];
         break;
 
@@ -71640,10 +72678,8 @@ class MessageHandler {
     }
   }
 
-  async _deleteStreamController(streamId) {
-    await Promise.allSettled([this.streamControllers[streamId].startCall, 
this.streamControllers[streamId].pullCall, this.streamControllers[streamId].cancelCall].map(function 
(capability) {
-      return capability && capability.promise;
-    }));
+  async _deleteStreamController(streamController, streamId) {
+    await Promise.allSettled([streamController.startCall && streamController.startCall.promise, 
streamController.pullCall && streamController.pullCall.promise, streamController.cancelCall && 
streamController.cancelCall.promise]);
     delete this.streamControllers[streamId];
   }
 
@@ -71888,8 +72924,8 @@ Object.defineProperty(exports, "WorkerMessageHandler", ({
 
 var _worker = __w_pdfjs_require__(1);
 
-const pdfjsVersion = '2.10.377';
-const pdfjsBuild = '156762c48';
+const pdfjsVersion = '2.11.338';
+const pdfjsBuild = 'dedff3c98';
 })();
 
 /******/       return __webpack_exports__;
diff --git a/third-party/pdfjs/epiphany-pdfjs-changes.patch b/third-party/pdfjs/epiphany-pdfjs-changes.patch
index dd5b52518..7aaa00971 100644
--- a/third-party/pdfjs/epiphany-pdfjs-changes.patch
+++ b/third-party/pdfjs/epiphany-pdfjs-changes.patch
@@ -1,153 +1,5 @@
-diff --git a/third-party/pdfjs/epiphany-pdfjs-changes.patch b/third-party/pdfjs/epiphany-pdfjs-changes.patch
-index 69f488516..e69de29bb 100644
---- a/third-party/pdfjs/epiphany-pdfjs-changes.patch
-+++ b/third-party/pdfjs/epiphany-pdfjs-changes.patch
-@@ -1,143 +0,0 @@
--diff -urN web2/viewer.css web/viewer.css
----- web2/viewer.css   2020-09-03 23:18:08.000000000 +0200
--+++ web/viewer.css    2021-04-05 11:25:24.181448360 +0200
--@@ -1,4 +1,5 @@
-- /* Copyright 2014 Mozilla Foundation
--+ * Modifications made for Epiphany by Jan-Michael Brummer <jan brummer tabos org>
--  *
--  * Licensed under the Apache License, Version 2.0 (the "License");
--  * you may not use this file except in compliance with the License.
--@@ -2361,6 +2362,7 @@
-- }
-- 
-- .dropdownToolbarButton > select {
--+  -webkit-appearance: none;
--   width: 162px;
--   height: 28px;
--   font-size: 12px;
--@@ -3132,6 +3134,7 @@
-- }
-- 
-- .toolbarField.pageNumber {
--+  -webkit-appearance: none;
--   -moz-appearance: textfield; /* hides the spinner in moz */
--   min-width: 16px;
--   text-align: right;
--diff -urN web2/viewer.html web/viewer.html
----- web2/viewer.html  2020-09-03 23:18:08.000000000 +0200
--+++ web/viewer.html   2021-04-05 11:25:24.181448360 +0200
--@@ -1,6 +1,7 @@
-- <!DOCTYPE html>
-- <!--
-- Copyright 2012 Mozilla Foundation
--+Modifications made for Epiphany by Jan-Michael Brummer <jan brummer tabos org>
-- 
-- Licensed under the Apache License, Version 2.0 (the "License");
-- you may not use this file except in compliance with the License.
--@@ -21,14 +22,14 @@
-- See https://github.com/adobe-type-tools/cmap-resources
-- -->
-- <html dir="ltr" mozdisallowselectionprint>
---  <head>
--+  <head pdf_data="%s" pdf_name="%s">
--     <meta charset="utf-8">
--     <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
--     <meta name="google" content="notranslate">
--     <meta http-equiv="X-UA-Compatible" content="IE=edge">
--     <title>PDF.js viewer</title>
-- 
---
--+    <base href="ephy-resource:///org/gnome/epiphany/pdfjs/web/">
--     <link rel="stylesheet" href="viewer.css">
-- 
-- 
--@@ -124,7 +125,7 @@
--               <span data-l10n-id="download_label">Download</span>
--             </button>
-- 
---            <a href="#" id="secondaryViewBookmark" class="secondaryToolbarButton bookmark 
visibleSmallView" title="Current view (copy or open in new window)" tabindex="55" data-l10n-id="bookmark">
--+            <a href="#" id="secondaryViewBookmark" class="secondaryToolbarButton bookmark hidden" 
title="Current view (copy or open in new window)" tabindex="55" data-l10n-id="bookmark">
--               <span data-l10n-id="bookmark_label">Current View</span>
--             </a>
-- 
--@@ -226,7 +227,7 @@
--                 <button id="download" class="toolbarButton download hiddenMediumView" title="Download" 
tabindex="34" data-l10n-id="download">
--                   <span data-l10n-id="download_label">Download</span>
--                 </button>
---                <a href="#" id="viewBookmark" class="toolbarButton bookmark hiddenSmallView" 
title="Current view (copy or open in new window)" tabindex="35" data-l10n-id="bookmark">
--+                <a href="#" id="viewBookmark" class="toolbarButton bookmark hidden" title="Current view 
(copy or open in new window)" tabindex="35" data-l10n-id="bookmark">
--                   <span data-l10n-id="bookmark_label">Current View</span>
--                 </a>
-- 
--diff -urN web2/viewer.js web/viewer.js
----- web2/viewer.js    2020-09-03 23:18:20.000000000 +0200
--+++ web/viewer.js     2021-04-05 11:25:24.184448405 +0200
--@@ -3,6 +3,7 @@
--  * Javascript code in this page
--  *
--  * Copyright 2020 Mozilla Foundation
--+ * Modifications made for Epiphany by Jan-Michael Brummer <jan brummer tabos org>
--  *
--  * Licensed under the Apache License, Version 2.0 (the "License");
--  * you may not use this file except in compliance with the License.
--@@ -1973,8 +1974,7 @@
--   let file;
--   const queryString = document.location.search.substring(1);
--   const params = (0, _ui_utils.parseQueryString)(queryString);
---  file = "file" in params ? params.file : _app_options.AppOptions.get("defaultUrl");
---  validateFileURL(file);
--+  file = '';
--   const fileInput = document.createElement("input");
--   fileInput.id = appConfig.openFileInputName;
--   fileInput.className = "fileInput";
--@@ -1982,12 +1982,8 @@
--   fileInput.oncontextmenu = _ui_utils.noContextMenuHandler;
--   document.body.appendChild(fileInput);
-- 
---  if (!window.File || !window.FileReader || !window.FileList || !window.Blob) {
---    appConfig.toolbar.openFile.setAttribute("hidden", "true");
---    appConfig.secondaryToolbar.openFileButton.setAttribute("hidden", "true");
---  } else {
---    fileInput.value = null;
---  }
--+  appConfig.toolbar.openFile.setAttribute('hidden', 'true');
--+  appConfig.secondaryToolbar.openFileButton.setAttribute('hidden', 'true');
-- 
--   fileInput.addEventListener("change", function (evt) {
--     const files = evt.target.files;
--@@ -2049,8 +2045,18 @@
--     }
--   }, true);
-- 
--+  var file_name = document.head.getAttribute('pdf_name')
--+  var raw = atob(document.head.getAttribute('pdf_data'));
--+  var raw_length = raw.length;
--+  var array = new Uint8Array(new ArrayBuffer(raw_length));
--+
--+  for(var i = 0; i < raw_length; i++) {
--+    array[i] = raw.charCodeAt(i);
--+  }
--+
--   try {
---    webViewerOpenFileViaURL(file);
--+    PDFViewerApplication.open(array);
--+    PDFViewerApplication.setTitleUsingUrl(file_name);
--   } catch (reason) {
--     PDFViewerApplication.l10n.get("loading_error", null, "An error occurred while loading the 
PDF.").then(msg => {
--       PDFViewerApplication.error(msg, reason);
--@@ -6877,6 +6883,8 @@
--       }
--     }
-- 
--+    // FIXME: This currently breaks Epiphany due to rewriting history with baseUrl
--+    return;
--     if (shouldReplace) {
--       window.history.replaceState(newState, "", newUrl);
--     } else {
--@@ -13897,4 +13905,4 @@
-- 
-- /***/ })
-- /******/ ]);
---//# sourceMappingURL=viewer.js.map
--\ Kein Zeilenumbruch am Dateiende.
--+//# sourceMappingURL=viewer.js.map
 diff --git a/third-party/pdfjs/web/viewer.css b/third-party/pdfjs/web/viewer.css
-index e35bdda4b..5261568a8 100644
+index 0d87d30df..81a09f7f5 100644
 --- a/third-party/pdfjs/web/viewer.css
 +++ b/third-party/pdfjs/web/viewer.css
 @@ -1,4 +1,5 @@
@@ -156,15 +8,15 @@ index e35bdda4b..5261568a8 100644
   *
   * Licensed under the Apache License, Version 2.0 (the "License");
   * you may not use this file except in compliance with the License.
-@@ -1613,6 +1614,7 @@ html[dir="rtl"] .dropdownToolbarButton::after {
+@@ -1694,6 +1695,7 @@ html[dir="rtl"] .dropdownToolbarButton::after {
  }
  
  .dropdownToolbarButton > select {
 +  -webkit-appearance: none;
-   width: 162px;
+   width: calc(var(--scale-select-container-width) + var(--scale-select-overflow));
    height: 28px;
    font-size: 12px;
-@@ -1986,6 +1988,7 @@ html[dir="rtl"] .toolbarField[type="checkbox"] {
+@@ -2067,6 +2069,7 @@ html[dir="rtl"] .toolbarField[type="checkbox"] {
  }
  
  .toolbarField.pageNumber {
@@ -219,7 +71,7 @@ index 503b810ba..db9b7427a 100644
                  </a>
  
 diff --git a/third-party/pdfjs/web/viewer.js b/third-party/pdfjs/web/viewer.js
-index 1d013ebfe..d0064cf18 100644
+index c7fd413a0..cad44eeb1 100644
 --- a/third-party/pdfjs/web/viewer.js
 +++ b/third-party/pdfjs/web/viewer.js
 @@ -3,6 +3,7 @@
@@ -230,17 +82,17 @@ index 1d013ebfe..d0064cf18 100644
   *
   * Licensed under the Apache License, Version 2.0 (the "License");
   * you may not use this file except in compliance with the License.
-@@ -2244,8 +2245,7 @@ function webViewerInitialized() {
+@@ -2236,8 +2237,7 @@ function webViewerInitialized() {
    let file;
    const queryString = document.location.search.substring(1);
    const params = (0, _ui_utils.parseQueryString)(queryString);
--  file = "file" in params ? params.file : _app_options.AppOptions.get("defaultUrl");
+-  file = params.get("file") ?? _app_options.AppOptions.get("defaultUrl");
 -  validateFileURL(file);
 +  file = '';
    const fileInput = document.createElement("input");
    fileInput.id = appConfig.openFileInputName;
    fileInput.className = "fileInput";
-@@ -2253,12 +2253,8 @@ function webViewerInitialized() {
+@@ -2245,12 +2245,8 @@ function webViewerInitialized() {
    fileInput.oncontextmenu = _ui_utils.noContextMenuHandler;
    document.body.appendChild(fileInput);
  
@@ -255,10 +107,11 @@ index 1d013ebfe..d0064cf18 100644
  
    fileInput.addEventListener("change", function (evt) {
      const files = evt.target.files;
-@@ -2320,8 +2316,18 @@ function webViewerInitialized() {
+@@ -2311,9 +2307,19 @@ function webViewerInitialized() {
+       });
      }
    }, true);
- 
++  
 +  var file_name = document.head.getAttribute('pdf_name')
 +  var raw = atob(document.head.getAttribute('pdf_data'));
 +  var raw_length = raw.length;
@@ -267,7 +120,7 @@ index 1d013ebfe..d0064cf18 100644
 +  for(var i = 0; i < raw_length; i++) {
 +    array[i] = raw.charCodeAt(i);
 +  }
-+
+ 
    try {
 -    webViewerOpenFileViaURL(file);
 +    PDFViewerApplication.open(array);
@@ -275,7 +128,7 @@ index 1d013ebfe..d0064cf18 100644
    } catch (reason) {
      PDFViewerApplication.l10n.get("loading_error").then(msg => {
        PDFViewerApplication._documentError(msg, reason);
-@@ -6381,6 +6387,8 @@ class PDFHistory {
+@@ -6376,6 +6382,8 @@ class PDFHistory {
        }
      }
  
@@ -284,7 +137,7 @@ index 1d013ebfe..d0064cf18 100644
      if (shouldReplace) {
        window.history.replaceState(newState, "", newUrl);
      } else {
-@@ -15403,4 +15411,4 @@ if (document.readyState === "interactive" || document.readyState === "complete")
+@@ -15620,4 +15628,4 @@ if (document.readyState === "interactive" || document.readyState === "complete")
  
  /******/ })()
  ;
diff --git a/third-party/pdfjs/web/debugger.js b/third-party/pdfjs/web/debugger.js
index cdf095440..7849cc4fb 100644
--- a/third-party/pdfjs/web/debugger.js
+++ b/third-party/pdfjs/web/debugger.js
@@ -540,7 +540,8 @@ window.PDFBug = (function PDFBugClosure() {
         });
       }
     },
-    init(pdfjsLib, container) {
+    init(pdfjsLib, container, ids) {
+      this.enable(ids);
       /*
        * Basic Layout:
        * PDFBug
@@ -589,12 +590,8 @@ window.PDFBug = (function PDFBugClosure() {
           tool.init(pdfjsLib);
         } else {
           panel.textContent =
-            tool.name +
-            " is disabled. To enable add " +
-            ' "' +
-            tool.id +
-            '" to the pdfBug parameter ' +
-            "and refresh (separate multiple by commas).";
+            `${tool.name} is disabled. To enable add "${tool.id}" to ` +
+            "the pdfBug parameter and refresh (separate multiple by commas).";
         }
         buttons.push(panelButton);
       }
diff --git a/third-party/pdfjs/web/locale/ach/viewer.properties 
b/third-party/pdfjs/web/locale/ach/viewer.properties
index 947228b76..3a74d767b 100644
--- a/third-party/pdfjs/web/locale/ach/viewer.properties
+++ b/third-party/pdfjs/web/locale/ach/viewer.properties
@@ -48,16 +48,12 @@ bookmark_label=Neno ma kombedi
 tools.title=Gintic
 tools_label=Gintic
 first_page.title=Cit i pot buk mukwongo
-first_page.label=Cit i pot buk mukwongo
 first_page_label=Cit i pot buk mukwongo
 last_page.title=Cit i pot buk magiko
-last_page.label=Cit i pot buk magiko
 last_page_label=Cit i pot buk magiko
 page_rotate_cw.title=Wire i tung lacuc
-page_rotate_cw.label=Wire i tung lacuc
 page_rotate_cw_label=Wire i tung lacuc
 page_rotate_ccw.title=Wire i tung lacam
-page_rotate_ccw.label=Wire i tung lacam
 page_rotate_ccw_label=Wire i tung lacam
 
 cursor_text_select_tool.title=Cak gitic me yero coc
@@ -124,7 +120,6 @@ print_progress_close=Juki
 # (the _label strings are alt text for the buttons, the .title strings are
 # tooltips)
 toggle_sidebar.title=Lok gintic ma inget
-toggle_sidebar_notification.title=Lok lanyut me nget (wiyewiye tye i gin acoya/attachments)
 toggle_sidebar_label=Lok gintic ma inget
 document_outline.title=Nyut Wiyewiye me Gin acoya (dii-kiryo me yaro/kano jami weng)
 document_outline_label=Pek pa gin acoya
@@ -184,9 +179,6 @@ page_scale_actual=Dite kikome
 # numerical scale value.
 page_scale_percent={{scale}}%
 
-# Loading indicator messages
-loading_error_indicator=Bal
-
 loading_error=Bal otime kun cano PDF.
 invalid_file_error=Pwail me PDF ma pe atir onyo obale woko.
 missing_file_error=Pwail me PDF tye ka rem.
diff --git a/third-party/pdfjs/web/locale/af/viewer.properties 
b/third-party/pdfjs/web/locale/af/viewer.properties
index 787c2727c..9bd5476da 100644
--- a/third-party/pdfjs/web/locale/af/viewer.properties
+++ b/third-party/pdfjs/web/locale/af/viewer.properties
@@ -48,16 +48,12 @@ bookmark_label=Huidige aansig
 tools.title=Nutsgoed
 tools_label=Nutsgoed
 first_page.title=Gaan na eerste bladsy
-first_page.label=Gaan na eerste bladsy
 first_page_label=Gaan na eerste bladsy
 last_page.title=Gaan na laaste bladsy
-last_page.label=Gaan na laaste bladsy
 last_page_label=Gaan na laaste bladsy
 page_rotate_cw.title=Roteer kloksgewys
-page_rotate_cw.label=Roteer kloksgewys
 page_rotate_cw_label=Roteer kloksgewys
 page_rotate_ccw.title=Roteer anti-kloksgewys
-page_rotate_ccw.label=Roteer anti-kloksgewys
 page_rotate_ccw_label=Roteer anti-kloksgewys
 
 cursor_text_select_tool.title=Aktiveer gereedskap om teks te merk
@@ -101,7 +97,6 @@ print_progress_close=Kanselleer
 # (the _label strings are alt text for the buttons, the .title strings are
 # tooltips)
 toggle_sidebar.title=Sypaneel aan/af
-toggle_sidebar_notification.title=Sypaneel aan/af (dokument bevat skema/aanhegsels)
 toggle_sidebar_label=Sypaneel aan/af
 document_outline.title=Wys dokumentskema (dubbelklik om alle items oop/toe te vou)
 document_outline_label=Dokumentoorsig
@@ -161,9 +156,6 @@ page_scale_actual=Werklike grootte
 # numerical scale value.
 page_scale_percent={{scale}}%
 
-# Loading indicator messages
-loading_error_indicator=Fout
-
 loading_error='n Fout het voorgekom met die laai van die PDF.
 invalid_file_error=Ongeldige of korrupte PDF-lêer.
 missing_file_error=PDF-lêer is weg.
diff --git a/third-party/pdfjs/web/locale/an/viewer.properties 
b/third-party/pdfjs/web/locale/an/viewer.properties
index 4086a0a6e..16028f372 100644
--- a/third-party/pdfjs/web/locale/an/viewer.properties
+++ b/third-party/pdfjs/web/locale/an/viewer.properties
@@ -48,16 +48,12 @@ bookmark_label=Vista actual
 tools.title=Ferramientas
 tools_label=Ferramientas
 first_page.title=Ir ta la primer pachina
-first_page.label=Ir ta la primer pachina
 first_page_label=Ir ta la primer pachina
 last_page.title=Ir ta la zaguer pachina
-last_page.label=Ir ta la zaguera pachina
 last_page_label=Ir ta la zaguer pachina
 page_rotate_cw.title=Chirar enta la dreita
-page_rotate_cw.label=Chirar enta la dreita
 page_rotate_cw_label=Chira enta la dreita
 page_rotate_ccw.title=Chirar enta la zurda
-page_rotate_ccw.label=Chirar en sentiu antihorario
 page_rotate_ccw_label=Chirar enta la zurda
 
 cursor_text_select_tool.title=Activar la ferramienta de selección de texto
@@ -137,7 +133,6 @@ print_progress_close=Cancelar
 # (the _label strings are alt text for the buttons, the .title strings are
 # tooltips)
 toggle_sidebar.title=Amostrar u amagar a barra lateral
-toggle_sidebar_notification.title=Cambiar barra lateral (lo documento contiene esquema/adchuntos)
 toggle_sidebar_notification2.title=Cambiar barra lateral (lo documento contiene esquema/adchuntos/capas)
 toggle_sidebar_label=Amostrar a barra lateral
 document_outline.title=Amostrar esquema d'o documento (fer doble clic pa expandir/compactar totz los items)
@@ -151,9 +146,6 @@ thumbs_label=Miniaturas
 findbar.title=Trobar en o documento
 findbar_label=Trobar
 
-# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
-page_canvas=Pachina {{page}}
-
 additional_layers=Capas adicionals
 # Thumbnails panel item (tooltip and alt text for images)
 # LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
@@ -226,9 +218,6 @@ page_scale_actual=Grandaria actual
 # numerical scale value.
 page_scale_percent={{scale}}%
 
-# Loading indicator messages
-loading_error_indicator=Error
-
 loading_error=S'ha produciu una error en cargar o PDF.
 invalid_file_error=O PDF no ye valido u ye estorbau.
 missing_file_error=No i ha fichero PDF.
diff --git a/third-party/pdfjs/web/locale/ar/viewer.properties 
b/third-party/pdfjs/web/locale/ar/viewer.properties
index d37c3e12a..082816fb6 100644
--- a/third-party/pdfjs/web/locale/ar/viewer.properties
+++ b/third-party/pdfjs/web/locale/ar/viewer.properties
@@ -48,16 +48,12 @@ bookmark_label=المنظور الحالي
 tools.title=الأدوات
 tools_label=الأدوات
 first_page.title=انتقل إلى الصفحة الأولى
-first_page.label=انتقل إلى الصفحة الأولى
 first_page_label=انتقل إلى الصفحة الأولى
 last_page.title=انتقل إلى الصفحة الأخيرة
-last_page.label=انتقل إلى الصفحة الأخيرة
 last_page_label=انتقل إلى الصفحة الأخيرة
 page_rotate_cw.title=أدر باتجاه عقارب الساعة
-page_rotate_cw.label=أدر باتجاه عقارب الساعة
 page_rotate_cw_label=أدر باتجاه عقارب الساعة
 page_rotate_ccw.title=أدر بعكس اتجاه عقارب الساعة
-page_rotate_ccw.label=أدر بعكس اتجاه عقارب الساعة
 page_rotate_ccw_label=أدر بعكس اتجاه عقارب الساعة
 
 cursor_text_select_tool.title=فعّل أداة اختيار النص
@@ -137,7 +133,6 @@ print_progress_close=ألغِ
 # (the _label strings are alt text for the buttons, the .title strings are
 # tooltips)
 toggle_sidebar.title=بدّل ظهور الشريط الجانبي
-toggle_sidebar_notification.title=بدّل ظهور الشريط الجانبي (يحتوي المستند على مخطط أو مرفقات)
 toggle_sidebar_notification2.title=بدّل ظهور الشريط الجانبي (يحتوي المستند على مخطط أو مرفقات أو طبقات)
 toggle_sidebar_label=بدّل ظهور الشريط الجانبي
 document_outline.title=اعرض فهرس المستند (نقر مزدوج لتمديد أو تقليص كل العناصر)
@@ -151,9 +146,6 @@ thumbs_label=مُصغّرات
 findbar.title=ابحث في المستند
 findbar_label=ابحث
 
-# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
-page_canvas=صفحة {{page}}
-
 additional_layers=الطبقات الإضافية
 # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number.
 page_landmark=صفحة {{page}}
@@ -228,9 +220,6 @@ page_scale_actual=الحجم الفعلي
 # numerical scale value.
 page_scale_percent={{scale}}٪
 
-# Loading indicator messages
-loading_error_indicator=عطل
-
 # Loading indicator messages
 loading=يحمّل…
 loading_error=حدث عطل أثناء تحميل ملف PDF.
diff --git a/third-party/pdfjs/web/locale/ast/viewer.properties 
b/third-party/pdfjs/web/locale/ast/viewer.properties
index 6e02489da..1f8bb2e57 100644
--- a/third-party/pdfjs/web/locale/ast/viewer.properties
+++ b/third-party/pdfjs/web/locale/ast/viewer.properties
@@ -127,9 +127,6 @@ thumbs.title=Amosar les miniatures
 thumbs_label=Miniatures
 findbar_label=Atopar
 
-# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
-page_canvas=Páxina {{page}}
-
 additional_layers=Capes adicionales
 # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number.
 page_landmark=Páxina {{page}}
@@ -190,9 +187,6 @@ page_scale_actual=Tamañu real
 # numerical scale value.
 page_scale_percent={{scale}}%
 
-# Loading indicator messages
-loading_error_indicator=Fallu
-
 # Loading indicator messages
 loading=Cargando…
 loading_error=Asocedió un fallu mentanto se cargaba'l PDF.
diff --git a/third-party/pdfjs/web/locale/az/viewer.properties 
b/third-party/pdfjs/web/locale/az/viewer.properties
index 667dc9fbd..bdc0ce615 100644
--- a/third-party/pdfjs/web/locale/az/viewer.properties
+++ b/third-party/pdfjs/web/locale/az/viewer.properties
@@ -48,16 +48,12 @@ bookmark_label=Hazırkı görünüş
 tools.title=Alətlər
 tools_label=Alətlər
 first_page.title=İlk Səhifəyə get
-first_page.label=İlk Səhifəyə get
 first_page_label=İlk Səhifəyə get
 last_page.title=Son Səhifəyə get
-last_page.label=Son Səhifəyə get
 last_page_label=Son Səhifəyə get
 page_rotate_cw.title=Saat İstiqamətində Fırlat
-page_rotate_cw.label=Saat İstiqamətində Fırlat
 page_rotate_cw_label=Saat İstiqamətində Fırlat
 page_rotate_ccw.title=Saat İstiqamətinin Əksinə Fırlat
-page_rotate_ccw.label=Saat İstiqamətinin Əksinə Fırlat
 page_rotate_ccw_label=Saat İstiqamətinin Əksinə Fırlat
 
 cursor_text_select_tool.title=Yazı seçmə alətini aktivləşdir
@@ -137,7 +133,6 @@ print_progress_close=Ləğv et
 # (the _label strings are alt text for the buttons, the .title strings are
 # tooltips)
 toggle_sidebar.title=Yan Paneli Aç/Bağla
-toggle_sidebar_notification.title=Yan paneli çevir (sənəddə icmal/bağlama var)
 toggle_sidebar_notification2.title=Yan paneli çevir (sənəddə icmal/bağlamalar/laylar mövcuddur)
 toggle_sidebar_label=Yan Paneli Aç/Bağla
 document_outline.title=Sənədin eskizini göstər (bütün bəndləri açmaq/yığmaq üçün iki dəfə klikləyin)
@@ -151,9 +146,6 @@ thumbs_label=Kiçik şəkillər
 findbar.title=Sənəddə Tap
 findbar_label=Tap
 
-# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
-page_canvas=Səhifə {{page}}
-
 additional_layers=Əlavə laylar
 # Thumbnails panel item (tooltip and alt text for images)
 # LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
@@ -226,9 +218,6 @@ page_scale_actual=Hazırkı Həcm
 # numerical scale value.
 page_scale_percent={{scale}}%
 
-# Loading indicator messages
-loading_error_indicator=Səhv
-
 loading_error=PDF yüklenərkən bir səhv yarandı.
 invalid_file_error=Səhv və ya zədələnmiş olmuş PDF fayl.
 missing_file_error=PDF fayl yoxdur.
diff --git a/third-party/pdfjs/web/locale/be/viewer.properties 
b/third-party/pdfjs/web/locale/be/viewer.properties
index 8728b93b5..fc82c27a4 100644
--- a/third-party/pdfjs/web/locale/be/viewer.properties
+++ b/third-party/pdfjs/web/locale/be/viewer.properties
@@ -48,16 +48,12 @@ bookmark_label=Цяперашняя праява
 tools.title=Прылады
 tools_label=Прылады
 first_page.title=Перайсці на першую старонку
-first_page.label=Перайсці на першую старонку
 first_page_label=Перайсці на першую старонку
 last_page.title=Перайсці на апошнюю старонку
-last_page.label=Перайсці на апошнюю старонку
 last_page_label=Перайсці на апошнюю старонку
 page_rotate_cw.title=Павярнуць па сонцу
-page_rotate_cw.label=Павярнуць па сонцу
 page_rotate_cw_label=Павярнуць па сонцу
 page_rotate_ccw.title=Павярнуць супраць сонца
-page_rotate_ccw.label=Павярнуць супраць сонца
 page_rotate_ccw_label=Павярнуць супраць сонца
 
 cursor_text_select_tool.title=Уключыць прыладу выбару тэксту
@@ -137,7 +133,6 @@ print_progress_close=Скасаваць
 # (the _label strings are alt text for the buttons, the .title strings are
 # tooltips)
 toggle_sidebar.title=Паказаць/схаваць бакавую панэль
-toggle_sidebar_notification.title=Паказаць/схаваць бакавую панэль (дакумент мае змест/укладанні)
 toggle_sidebar_notification2.title=Паказаць/схаваць бакавую панэль (дакумент мае змест/укладанні/пласты)
 toggle_sidebar_label=Паказаць/схаваць бакавую панэль
 document_outline.title=Паказаць структуру дакумента (двайная пстрычка, каб разгарнуць /згарнуць усе элементы)
@@ -153,9 +148,6 @@ current_outline_item_label=Бягучы элемент структуры
 findbar.title=Пошук у дакуменце
 findbar_label=Знайсці
 
-# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
-page_canvas=Старонка {{page}}
-
 additional_layers=Дадатковыя пласты
 # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number.
 page_landmark=Старонка {{page}}
@@ -230,9 +222,6 @@ page_scale_actual=Сапраўдны памер
 # numerical scale value.
 page_scale_percent={{scale}}%
 
-# Loading indicator messages
-loading_error_indicator=Памылка
-
 # Loading indicator messages
 loading=Чытаецца…
 loading_error=Здарылася памылка падчас загрузкі PDF.
diff --git a/third-party/pdfjs/web/locale/bg/viewer.properties 
b/third-party/pdfjs/web/locale/bg/viewer.properties
index 6981eac67..0ec7649c6 100644
--- a/third-party/pdfjs/web/locale/bg/viewer.properties
+++ b/third-party/pdfjs/web/locale/bg/viewer.properties
@@ -48,16 +48,12 @@ bookmark_label=Текущ изглед
 tools.title=Инструменти
 tools_label=Инструменти
 first_page.title=Към първата страница
-first_page.label=Към първата страница
 first_page_label=Към първата страница
 last_page.title=Към последната страница
-last_page.label=Към последната страница
 last_page_label=Към последната страница
 page_rotate_cw.title=Завъртане по час. стрелка
-page_rotate_cw.label=Завъртане по часовниковата стрелка
 page_rotate_cw_label=Завъртане по часовниковата стрелка
 page_rotate_ccw.title=Завъртане обратно на час. стрелка
-page_rotate_ccw.label=Завъртане обратно на часовниковата стрелка
 page_rotate_ccw_label=Завъртане обратно на часовниковата стрелка
 
 cursor_text_select_tool.title=Включване на инструмента за избор на текст
@@ -137,7 +133,6 @@ print_progress_close=Отказ
 # (the _label strings are alt text for the buttons, the .title strings are
 # tooltips)
 toggle_sidebar.title=Превключване на страничната лента
-toggle_sidebar_notification.title=Превключване на страничната лента (документи със структура/прикачени 
файлове)
 toggle_sidebar_label=Превключване на страничната лента
 document_outline.title=Показване на структурата на документа (двукратно щракване за свиване/разгъване на 
всичко)
 document_outline_label=Структура на документа
@@ -219,9 +214,6 @@ page_scale_actual=Действителен размер
 # numerical scale value.
 page_scale_percent={{scale}}%
 
-# Loading indicator messages
-loading_error_indicator=Грешка
-
 loading_error=Получи се грешка при зареждане на PDF-а.
 invalid_file_error=Невалиден или повреден PDF файл.
 missing_file_error=Липсващ PDF файл.
diff --git a/third-party/pdfjs/web/locale/bn/viewer.properties 
b/third-party/pdfjs/web/locale/bn/viewer.properties
index ffc5465fc..93f4c7b9b 100644
--- a/third-party/pdfjs/web/locale/bn/viewer.properties
+++ b/third-party/pdfjs/web/locale/bn/viewer.properties
@@ -48,16 +48,12 @@ bookmark_label=বর্তমান অবস্থা
 tools.title=টুল
 tools_label=টুল
 first_page.title=প্রথম পাতায় যাও
-first_page.label=প্রথম পাতায় যাও
 first_page_label=প্রথম পাতায় যাও
 last_page.title=শেষ পাতায় যাও
-last_page.label=শেষ পাতায় যাও
 last_page_label=শেষ পাতায় যাও
 page_rotate_cw.title=ঘড়ির কাঁটার দিকে ঘোরাও
-page_rotate_cw.label=ঘড়ির কাঁটার দিকে ঘোরাও
 page_rotate_cw_label=ঘড়ির কাঁটার দিকে ঘোরাও
 page_rotate_ccw.title=ঘড়ির কাঁটার বিপরীতে ঘোরাও
-page_rotate_ccw.label=ঘড়ির কাঁটার বিপরীতে ঘোরাও
 page_rotate_ccw_label=ঘড়ির কাঁটার বিপরীতে ঘোরাও
 
 cursor_text_select_tool.title=লেখা নির্বাচক টুল সক্রিয় করুন
@@ -135,7 +131,6 @@ print_progress_close=বাতিল
 # (the _label strings are alt text for the buttons, the .title strings are
 # tooltips)
 toggle_sidebar.title=সাইডবার টগল করুন
-toggle_sidebar_notification.title=সাইডবার টগল (নথিতে আউটলাইন/এটাচমেন্ট রয়েছে)
 toggle_sidebar_label=সাইডবার টগল করুন
 document_outline.title=নথির আউটলাইন দেখাও (সব আইটেম প্রসারিত/সঙ্কুচিত করতে ডবল ক্লিক করুন)
 document_outline_label=নথির রূপরেখা
@@ -146,9 +141,6 @@ thumbs_label=থাম্বনেইল সমূহ
 findbar.title=নথির মধ্যে খুঁজুন
 findbar_label=খুঁজুন
 
-# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
-page_canvas=পাতা {{page}}
-
 # Thumbnails panel item (tooltip and alt text for images)
 # LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
 # number.
@@ -220,9 +212,6 @@ page_scale_actual=প্রকৃত আকার
 # numerical scale value.
 page_scale_percent={{scale}}%
 
-# Loading indicator messages
-loading_error_indicator=ত্রুটি
-
 loading_error=পিডিএফ লোড করার সময় ত্রুটি দেখা দিয়েছে।
 invalid_file_error=অকার্যকর অথবা ক্ষতিগ্রস্ত পিডিএফ ফাইল।
 missing_file_error=নিখোঁজ PDF ফাইল।
diff --git a/third-party/pdfjs/web/locale/bo/viewer.properties 
b/third-party/pdfjs/web/locale/bo/viewer.properties
index 981addc28..bba049082 100644
--- a/third-party/pdfjs/web/locale/bo/viewer.properties
+++ b/third-party/pdfjs/web/locale/bo/viewer.properties
@@ -48,16 +48,12 @@ bookmark_label=Current View
 tools.title=Tools
 tools_label=Tools
 first_page.title=Go to First Page
-first_page.label=Go to First Page
 first_page_label=Go to First Page
 last_page.title=Go to Last Page
-last_page.label=Go to Last Page
 last_page_label=Go to Last Page
 page_rotate_cw.title=Rotate Clockwise
-page_rotate_cw.label=Rotate Clockwise
 page_rotate_cw_label=Rotate Clockwise
 page_rotate_ccw.title=Rotate Counterclockwise
-page_rotate_ccw.label=Rotate Counterclockwise
 page_rotate_ccw_label=Rotate Counterclockwise
 
 cursor_text_select_tool.title=Enable Text Selection Tool
@@ -137,7 +133,6 @@ print_progress_close=Cancel
 # (the _label strings are alt text for the buttons, the .title strings are
 # tooltips)
 toggle_sidebar.title=Toggle Sidebar
-toggle_sidebar_notification.title=Toggle Sidebar (document contains outline/attachments)
 toggle_sidebar_label=Toggle Sidebar
 document_outline.title=Show Document Outline (double-click to expand/collapse all items)
 document_outline_label=Document Outline
@@ -219,9 +214,6 @@ page_scale_actual=Actual Size
 # numerical scale value.
 page_scale_percent={{scale}}%
 
-# Loading indicator messages
-loading_error_indicator=Error
-
 loading_error=An error occurred while loading the PDF.
 invalid_file_error=Invalid or corrupted PDF file.
 missing_file_error=Missing PDF file.
diff --git a/third-party/pdfjs/web/locale/br/viewer.properties 
b/third-party/pdfjs/web/locale/br/viewer.properties
index 043931a72..c26ca6810 100644
--- a/third-party/pdfjs/web/locale/br/viewer.properties
+++ b/third-party/pdfjs/web/locale/br/viewer.properties
@@ -48,16 +48,12 @@ bookmark_label=Gwel bremanel
 tools.title=Ostilhoù
 tools_label=Ostilhoù
 first_page.title=Mont d'ar bajenn gentañ
-first_page.label=Mont d'ar bajenn gentañ
 first_page_label=Mont d'ar bajenn gentañ
 last_page.title=Mont d'ar bajenn diwezhañ
-last_page.label=Mont d'ar bajenn diwezhañ
 last_page_label=Mont d'ar bajenn diwezhañ
 page_rotate_cw.title=C'hwelañ gant roud ar bizied
-page_rotate_cw.label=C'hwelañ gant roud ar bizied
 page_rotate_cw_label=C'hwelañ gant roud ar bizied
 page_rotate_ccw.title=C'hwelañ gant roud gin ar bizied
-page_rotate_ccw.label=C'hwelañ gant roud gin ar bizied
 page_rotate_ccw_label=C'hwelañ gant roud gin ar bizied
 
 cursor_text_select_tool.title=Gweredekaat an ostilh diuzañ testenn
@@ -137,7 +133,6 @@ print_progress_close=Nullañ
 # (the _label strings are alt text for the buttons, the .title strings are
 # tooltips)
 toggle_sidebar.title=Diskouez/kuzhat ar varrenn gostez
-toggle_sidebar_notification.title=Trec'haoliñ ar verrenn-gostez (ur steuñv pe stagadennoù a zo en teul)
 toggle_sidebar_notification2.title=Trec'haoliñ ar varrenn-gostez (ur steuñv pe stagadennoù a zo en teul)
 toggle_sidebar_label=Diskouez/kuzhat ar varrenn gostez
 document_outline.title=Diskouez steuñv an teul (daouglikit evit brasaat/bihanaat an holl elfennoù)
@@ -151,9 +146,6 @@ thumbs_label=Melvennoù
 findbar.title=Klask e-barzh an teuliad
 findbar_label=Klask
 
-# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
-page_canvas=Pajenn {{page}}
-
 additional_layers=Gwiskadoù ouzhpenn
 # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number.
 page_landmark=Pajenn {{page}}
@@ -228,9 +220,6 @@ page_scale_actual=Ment wir
 # numerical scale value.
 page_scale_percent={{scale}}%
 
-# Loading indicator messages
-loading_error_indicator=Fazi
-
 # Loading indicator messages
 loading=O kargañ…
 loading_error=Degouezhet ez eus bet ur fazi e-pad kargañ ar PDF.
diff --git a/third-party/pdfjs/web/locale/brx/viewer.properties 
b/third-party/pdfjs/web/locale/brx/viewer.properties
index 6af751aa0..3d1c92ddd 100644
--- a/third-party/pdfjs/web/locale/brx/viewer.properties
+++ b/third-party/pdfjs/web/locale/brx/viewer.properties
@@ -48,16 +48,12 @@ bookmark_label=दानि नुथाय
 tools.title=टुल
 tools_label=टुल
 first_page.title=गिबि बिलाइआव थां
-first_page.label=गिबि बिलाइआव थां
 first_page_label=गिबि बिलाइआव थां
 last_page.title=जोबथा बिलाइआव थां
-last_page.label=जोबथा बिलाइआव थां
 last_page_label=जोबथा बिलाइआव थां
 page_rotate_cw.title=घरि गिदिंनाय फार्से फिदिं
-page_rotate_cw.label=घरि गिदिंनाय फार्से फिदिं
 page_rotate_cw_label=घरि गिदिंनाय फार्से फिदिं
 page_rotate_ccw.title=घरि गिदिंनाय उल्था फार्से फिदिं
-page_rotate_ccw.label=घरि गिदिंनाय उल्था फार्से फिदिं
 page_rotate_ccw_label=घरि गिदिंनाय उल्था फार्से फिदिं
 
 
@@ -184,9 +180,6 @@ page_scale_actual=थार महर
 # numerical scale value.
 page_scale_percent={{scale}}%
 
-# Loading indicator messages
-loading_error_indicator=गोरोन्थि
-
 loading_error=PDF ल'ड खालामनाय समाव मोनसे गोरोन्थि जाबाय।
 invalid_file_error=बाहायजायै एबा गाज्रि जानाय PDF फाइल
 missing_file_error=गोमानाय PDF फाइल
diff --git a/third-party/pdfjs/web/locale/bs/viewer.properties 
b/third-party/pdfjs/web/locale/bs/viewer.properties
index eb4ee3ce9..ec115d03c 100644
--- a/third-party/pdfjs/web/locale/bs/viewer.properties
+++ b/third-party/pdfjs/web/locale/bs/viewer.properties
@@ -48,16 +48,12 @@ bookmark_label=Trenutni prikaz
 tools.title=Alati
 tools_label=Alati
 first_page.title=Idi na prvu stranu
-first_page.label=Idi na prvu stranu
 first_page_label=Idi na prvu stranu
 last_page.title=Idi na zadnju stranu
-last_page.label=Idi na zadnju stranu
 last_page_label=Idi na zadnju stranu
 page_rotate_cw.title=Rotiraj u smjeru kazaljke na satu
-page_rotate_cw.label=Rotiraj u smjeru kazaljke na satu
 page_rotate_cw_label=Rotiraj u smjeru kazaljke na satu
 page_rotate_ccw.title=Rotiraj suprotno smjeru kazaljke na satu
-page_rotate_ccw.label=Rotiraj suprotno smjeru kazaljke na satu
 page_rotate_ccw_label=Rotiraj suprotno smjeru kazaljke na satu
 
 cursor_text_select_tool.title=Omogući alat za označavanje teksta
@@ -118,7 +114,6 @@ print_progress_close=Otkaži
 # (the _label strings are alt text for the buttons, the .title strings are
 # tooltips)
 toggle_sidebar.title=Uključi/isključi bočnu traku
-toggle_sidebar_notification.title=Uključi/isključi sidebar (dokument sadrži outline/priloge)
 toggle_sidebar_label=Uključi/isključi bočnu traku
 document_outline.title=Prikaži outline dokumenta (dvoklik za skupljanje/širenje svih stavki)
 document_outline_label=Konture dokumenta
@@ -178,9 +173,6 @@ page_scale_actual=Stvarna veličina
 # numerical scale value.
 page_scale_percent={{scale}}%
 
-# Loading indicator messages
-loading_error_indicator=Greška
-
 loading_error=Došlo je do greške prilikom učitavanja PDF-a.
 invalid_file_error=Neispravan ili oštećen PDF fajl.
 missing_file_error=Nedostaje PDF fajl.
diff --git a/third-party/pdfjs/web/locale/ca/viewer.properties 
b/third-party/pdfjs/web/locale/ca/viewer.properties
index 3b3189ef7..3ada5f269 100644
--- a/third-party/pdfjs/web/locale/ca/viewer.properties
+++ b/third-party/pdfjs/web/locale/ca/viewer.properties
@@ -48,16 +48,12 @@ bookmark_label=Vista actual
 tools.title=Eines
 tools_label=Eines
 first_page.title=Vés a la primera pàgina
-first_page.label=Vés a la primera pàgina
 first_page_label=Vés a la primera pàgina
 last_page.title=Vés a l'última pàgina
-last_page.label=Vés a l'última pàgina
 last_page_label=Vés a l'última pàgina
 page_rotate_cw.title=Gira cap a la dreta
-page_rotate_cw.label=Gira cap a la dreta
 page_rotate_cw_label=Gira cap a la dreta
 page_rotate_ccw.title=Gira cap a l'esquerra
-page_rotate_ccw.label=Gira cap a l'esquerra
 page_rotate_ccw_label=Gira cap a l'esquerra
 
 cursor_text_select_tool.title=Habilita l'eina de selecció de text
@@ -137,7 +133,6 @@ print_progress_close=Cancel·la
 # (the _label strings are alt text for the buttons, the .title strings are
 # tooltips)
 toggle_sidebar.title=Mostra/amaga la barra lateral
-toggle_sidebar_notification.title=Mostra/amaga la barra lateral (el document conté un esquema o adjuncions)
 toggle_sidebar_notification2.title=Mostra/amaga la barra lateral (el document conté un esquema, adjuncions o 
capes)
 toggle_sidebar_label=Mostra/amaga la barra lateral
 document_outline.title=Mostra l'esquema del document (doble clic per ampliar/reduir tots els elements)
@@ -153,9 +148,6 @@ current_outline_item_label=Element d'esquema actual
 findbar.title=Cerca al document
 findbar_label=Cerca
 
-# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
-page_canvas=Pàgina {{page}}
-
 additional_layers=Capes addicionals
 # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number.
 page_landmark=Pàgina {{page}}
@@ -230,9 +222,6 @@ page_scale_actual=Mida real
 # numerical scale value.
 page_scale_percent={{scale}}%
 
-# Loading indicator messages
-loading_error_indicator=Error
-
 # Loading indicator messages
 loading=S'està carregant…
 loading_error=S'ha produït un error en carregar el PDF.
diff --git a/third-party/pdfjs/web/locale/cak/viewer.properties 
b/third-party/pdfjs/web/locale/cak/viewer.properties
index 764ccf81f..1828641ea 100644
--- a/third-party/pdfjs/web/locale/cak/viewer.properties
+++ b/third-party/pdfjs/web/locale/cak/viewer.properties
@@ -48,16 +48,12 @@ bookmark_label=Rutzub'al wakami
 tools.title=Samajib'äl
 tools_label=Samajib'äl
 first_page.title=Tib'e pa nab'ey ruxaq
-first_page.label=Tib'e pa nab'ey ruxaq
 first_page_label=Tib'e pa nab'ey ruxaq
 last_page.title=Tib'e pa ruk'isib'äl ruxaq
-last_page.label=Tib'e pa ruk'isib'äl ruxaq
 last_page_label=Tib'e pa ruk'isib'äl ruxaq
 page_rotate_cw.title=Tisutïx pan ajkiq'a'
-page_rotate_cw.label=Tisutïx pan ajkiq'a'
 page_rotate_cw_label=Tisutïx pan ajkiq'a'
 page_rotate_ccw.title=Tisutïx pan ajxokon
-page_rotate_ccw.label=Tisutïx pan ajxokon
 page_rotate_ccw_label=Tisutïx pan ajxokon
 
 cursor_text_select_tool.title=Titzij ri rusamajib'al Rucha'ik Rucholajem Tzij
@@ -137,7 +133,6 @@ print_progress_close=Tiq'at
 # (the _label strings are alt text for the buttons, the .title strings are
 # tooltips)
 toggle_sidebar.title=Tijal ri ajxikin kajtz'ik
-toggle_sidebar_notification.title=Tik'ex ri ajxikin yuqkajtz'ik (ri wuj eruk'wan taq ruchi'/taqoj taq 
yakb'äl)
 toggle_sidebar_notification2.title=Tik'ex ri ajxikin yuqkajtz'ik (ri wuj eruk'wan taq ruchi'/taqo/kuchuj)
 toggle_sidebar_label=Tijal ri ajxikin kajtz'ik
 document_outline.title=Tik'ut pe ruch'akulal wuj (kamul-pitz'oj richin nirik'/nich'utinirisäx ronojel 
ruch'akulal)
@@ -153,9 +148,6 @@ current_outline_item_label=Taq Ch'akulal Kik'wan Chib'äl
 findbar.title=Tikanöx chupam ri wuj
 findbar_label=Tikanöx
 
-# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
-page_canvas=Ruxaq {{page}}
-
 additional_layers=Tz'aqat ta Kuchuj
 # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number.
 page_landmark=Ruxaq {{page}}
@@ -230,9 +222,6 @@ page_scale_actual=Runimilem Wakami
 # numerical scale value.
 page_scale_percent={{scale}}%
 
-# Loading indicator messages
-loading_error_indicator=Sachoj
-
 # Loading indicator messages
 loading=Nisamäj…
 loading_error=\u0020Xk'ulwachitäj jun sach'oj toq xnuk'ux ri PDF .
diff --git a/third-party/pdfjs/web/locale/ckb/viewer.properties 
b/third-party/pdfjs/web/locale/ckb/viewer.properties
index 7be9dd5a2..b30cb7672 100644
--- a/third-party/pdfjs/web/locale/ckb/viewer.properties
+++ b/third-party/pdfjs/web/locale/ckb/viewer.properties
@@ -48,16 +48,12 @@ bookmark_label=پیشبینینی ئێستا
 tools.title=ئامرازەکان
 tools_label=ئامرازەکان
 first_page.title=برۆ بۆ یەکەم پەڕە
-first_page.label=بڕۆ بۆ یەکەم پەڕە
 first_page_label=بڕۆ بۆ یەکەم پەڕە
 last_page.title=بڕۆ بۆ کۆتا پەڕە
-last_page.label=بڕۆ بۆ کۆتا پەڕە
 last_page_label=بڕۆ بۆ کۆتا پەڕە
 page_rotate_cw.title=ئاڕاستەی میلی کاتژمێر
-page_rotate_cw.label=ئاڕاستەی میلی کاتژمێر
 page_rotate_cw_label=ئاڕاستەی میلی کاتژمێر
 page_rotate_ccw.title=پێچەوانەی میلی کاتژمێر
-page_rotate_ccw.label=پێچەوانەی میلی کاتژمێر
 page_rotate_ccw_label=پێچەوانەی میلی کاتژمێر
 
 cursor_text_select_tool.title=توڵامرازی نیشانکەری دەق چالاک بکە
@@ -141,9 +137,6 @@ thumbs_label=وێنۆچکە
 findbar.title=لە بەڵگەنامە بگەرێ
 findbar_label=دۆزینەوە
 
-# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
-page_canvas=پەڕەی {{page}}
-
 additional_layers=چینی زیاتر
 # Thumbnails panel item (tooltip and alt text for images)
 # LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
@@ -216,9 +209,6 @@ page_scale_actual=قەبارەی ڕاستی
 # numerical scale value.
 page_scale_percent={{scale}}%
 
-# Loading indicator messages
-loading_error_indicator=هەڵە
-
 loading_error=هەڵەیەک ڕوویدا لە کاتی بارکردنی  PDF.
 invalid_file_error=پەڕگەی pdf تێکچووە یان نەگونجاوە.
 missing_file_error=پەڕگەی pdf بوونی نیە.
diff --git a/third-party/pdfjs/web/locale/cs/viewer.properties 
b/third-party/pdfjs/web/locale/cs/viewer.properties
index 8829097e8..894cc5eb4 100644
--- a/third-party/pdfjs/web/locale/cs/viewer.properties
+++ b/third-party/pdfjs/web/locale/cs/viewer.properties
@@ -48,16 +48,12 @@ bookmark_label=Současný pohled
 tools.title=Nástroje
 tools_label=Nástroje
 first_page.title=Přejde na první stránku
-first_page.label=Přejít na první stránku
 first_page_label=Přejít na první stránku
 last_page.title=Přejde na poslední stránku
-last_page.label=Přejít na poslední stránku
 last_page_label=Přejít na poslední stránku
 page_rotate_cw.title=Otočí po směru hodin
-page_rotate_cw.label=Otočit po směru hodin
 page_rotate_cw_label=Otočit po směru hodin
 page_rotate_ccw.title=Otočí proti směru hodin
-page_rotate_ccw.label=Otočit proti směru hodin
 page_rotate_ccw_label=Otočit proti směru hodin
 
 cursor_text_select_tool.title=Povolí výběr textu
@@ -137,7 +133,6 @@ print_progress_close=Zrušit
 # (the _label strings are alt text for the buttons, the .title strings are
 # tooltips)
 toggle_sidebar.title=Postranní lišta
-toggle_sidebar_notification.title=Přepne postranní lištu (dokument obsahuje osnovu/přílohy)
 toggle_sidebar_notification2.title=Přepnout postranní lištu (dokument obsahuje osnovu/přílohy/vrstvy)
 toggle_sidebar_label=Postranní lišta
 document_outline.title=Zobrazí osnovu dokumentu (dvojité klepnutí rozbalí/sbalí všechny položky)
@@ -153,9 +148,6 @@ current_outline_item_label=Aktuální položka v osnově
 findbar.title=Najde v dokumentu
 findbar_label=Najít
 
-# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
-page_canvas=Strana {{page}}
-
 additional_layers=Další vrstvy
 # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number.
 page_landmark=Strana {{page}}
@@ -230,9 +222,6 @@ page_scale_actual=Skutečná velikost
 # numerical scale value.
 page_scale_percent={{scale}} %
 
-# Loading indicator messages
-loading_error_indicator=Chyba
-
 # Loading indicator messages
 loading=Načítání…
 loading_error=Při nahrávání PDF nastala chyba.
diff --git a/third-party/pdfjs/web/locale/cy/viewer.properties 
b/third-party/pdfjs/web/locale/cy/viewer.properties
index e7123fe0b..3a8757185 100644
--- a/third-party/pdfjs/web/locale/cy/viewer.properties
+++ b/third-party/pdfjs/web/locale/cy/viewer.properties
@@ -48,16 +48,12 @@ bookmark_label=Golwg Gyfredol
 tools.title=Offer
 tools_label=Offer
 first_page.title=Mynd i'r Dudalen Gyntaf
-first_page.label=Mynd i'r Dudalen Gyntaf
 first_page_label=Mynd i'r Dudalen Gyntaf
 last_page.title=Mynd i'r Dudalen Olaf
-last_page.label=Mynd i'r Dudalen Olaf
 last_page_label=Mynd i'r Dudalen Olaf
 page_rotate_cw.title=Cylchdroi Clocwedd
-page_rotate_cw.label=Cylchdroi Clocwedd
 page_rotate_cw_label=Cylchdroi Clocwedd
 page_rotate_ccw.title=Cylchdroi Gwrthglocwedd
-page_rotate_ccw.label=Cylchdroi Gwrthglocwedd
 page_rotate_ccw_label=Cylchdroi Gwrthglocwedd
 
 cursor_text_select_tool.title=Galluogi Dewis Offeryn Testun
@@ -137,7 +133,6 @@ print_progress_close=Diddymu
 # (the _label strings are alt text for the buttons, the .title strings are
 # tooltips)
 toggle_sidebar.title=Toglo'r Bar Ochr
-toggle_sidebar_notification.title=Toglo'r Bar Ochr (mae'r ddogfen yn cynnwys outline/attachments)
 toggle_sidebar_notification2.title=Toglo'r Bar Ochr (mae'r ddogfen yn cynnwys amlinelliadau/atodiadau/haenau)
 toggle_sidebar_label=Toglo'r Bar Ochr
 document_outline.title=Dangos Amlinell Dogfen (clic dwbl i ymestyn/cau pob eitem)
@@ -153,9 +148,6 @@ current_outline_item_label=Yr Eitem Amlinellol Gyfredol
 findbar.title=Canfod yn y Ddogfen
 findbar_label=Canfod
 
-# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
-page_canvas=Tudalen {{page}}
-
 additional_layers=Haenau Ychwanegol
 # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number.
 page_landmark=Tudalen {{page}}
@@ -230,9 +222,6 @@ page_scale_actual=Maint Gwirioneddol
 # numerical scale value.
 page_scale_percent={{scale}}%
 
-# Loading indicator messages
-loading_error_indicator=Gwall
-
 # Loading indicator messages
 loading=Yn llwytho…
 loading_error=Digwyddodd gwall wrth lwytho'r PDF.
diff --git a/third-party/pdfjs/web/locale/da/viewer.properties 
b/third-party/pdfjs/web/locale/da/viewer.properties
index 149a027b4..7e0c40fe4 100644
--- a/third-party/pdfjs/web/locale/da/viewer.properties
+++ b/third-party/pdfjs/web/locale/da/viewer.properties
@@ -48,16 +48,12 @@ bookmark_label=Aktuel visning
 tools.title=Funktioner
 tools_label=Funktioner
 first_page.title=Gå til første side
-first_page.label=Gå til første side
 first_page_label=Gå til første side
 last_page.title=Gå til sidste side
-last_page.label=Gå til sidste side
 last_page_label=Gå til sidste side
 page_rotate_cw.title=Roter med uret
-page_rotate_cw.label=Roter med uret
 page_rotate_cw_label=Roter med uret
 page_rotate_ccw.title=Roter mod uret
-page_rotate_ccw.label=Roter mod uret
 page_rotate_ccw_label=Roter mod uret
 
 cursor_text_select_tool.title=Aktiver markeringsværktøj
@@ -137,7 +133,6 @@ print_progress_close=Annuller
 # (the _label strings are alt text for the buttons, the .title strings are
 # tooltips)
 toggle_sidebar.title=Slå sidepanel til eller fra
-toggle_sidebar_notification.title=Slå sidepanel til eller fra (dokumentet indeholder disposition/vedhæftede 
filer)
 toggle_sidebar_notification2.title=Slå sidepanel til eller fra (dokumentet indeholder disposition/vedhæftede 
filer/lag)
 toggle_sidebar_label=Slå sidepanel til eller fra
 document_outline.title=Vis dokumentets disposition (dobbeltklik for at vise/skjule alle elementer)
@@ -153,9 +148,6 @@ current_outline_item_label=Aktuelt dispositions-element
 findbar.title=Find i dokument
 findbar_label=Find
 
-# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
-page_canvas=Side {{page}}
-
 additional_layers=Yderligere lag
 # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number.
 page_landmark=Side {{page}}
@@ -230,9 +222,6 @@ page_scale_actual=Faktisk størrelse
 # numerical scale value.
 page_scale_percent={{scale}}%
 
-# Loading indicator messages
-loading_error_indicator=Fejl
-
 # Loading indicator messages
 loading=Indlæser…
 loading_error=Der opstod en fejl ved indlæsning af PDF-filen.
diff --git a/third-party/pdfjs/web/locale/de/viewer.properties 
b/third-party/pdfjs/web/locale/de/viewer.properties
index 89645f482..b380d5672 100644
--- a/third-party/pdfjs/web/locale/de/viewer.properties
+++ b/third-party/pdfjs/web/locale/de/viewer.properties
@@ -48,16 +48,12 @@ bookmark_label=Aktuelle Ansicht
 tools.title=Werkzeuge
 tools_label=Werkzeuge
 first_page.title=Erste Seite anzeigen
-first_page.label=Erste Seite anzeigen
 first_page_label=Erste Seite anzeigen
 last_page.title=Letzte Seite anzeigen
-last_page.label=Letzte Seite anzeigen
 last_page_label=Letzte Seite anzeigen
 page_rotate_cw.title=Im Uhrzeigersinn drehen
-page_rotate_cw.label=Im Uhrzeigersinn drehen
 page_rotate_cw_label=Im Uhrzeigersinn drehen
 page_rotate_ccw.title=Gegen Uhrzeigersinn drehen
-page_rotate_ccw.label=Gegen Uhrzeigersinn drehen
 page_rotate_ccw_label=Gegen Uhrzeigersinn drehen
 
 cursor_text_select_tool.title=Textauswahl-Werkzeug aktivieren
@@ -137,7 +133,6 @@ print_progress_close=Abbrechen
 # (the _label strings are alt text for the buttons, the .title strings are
 # tooltips)
 toggle_sidebar.title=Sidebar umschalten
-toggle_sidebar_notification.title=Sidebar umschalten (Dokument enthält Dokumentstruktur/Anhänge)
 toggle_sidebar_notification2.title=Sidebar umschalten (Dokument enthält Dokumentstruktur/Anhänge/Ebenen)
 toggle_sidebar_label=Sidebar umschalten
 document_outline.title=Dokumentstruktur anzeigen (Doppelklicken, um alle Einträge aus- bzw. einzuklappen)
@@ -153,9 +148,6 @@ current_outline_item_label=Aktuelles Struktur-Element
 findbar.title=Dokument durchsuchen
 findbar_label=Suchen
 
-# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
-page_canvas=Seite {{page}}
-
 additional_layers=Zusätzliche Ebenen
 # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number.
 page_landmark=Seite {{page}}
@@ -230,9 +222,6 @@ page_scale_actual=Originalgröße
 # numerical scale value.
 page_scale_percent={{scale}} %
 
-# Loading indicator messages
-loading_error_indicator=Fehler
-
 # Loading indicator messages
 loading=Wird geladen…
 loading_error=Beim Laden der PDF-Datei trat ein Fehler auf.
diff --git a/third-party/pdfjs/web/locale/dsb/viewer.properties 
b/third-party/pdfjs/web/locale/dsb/viewer.properties
index dd131bc6a..fd8e2798d 100644
--- a/third-party/pdfjs/web/locale/dsb/viewer.properties
+++ b/third-party/pdfjs/web/locale/dsb/viewer.properties
@@ -48,16 +48,12 @@ bookmark_label=Aktualny naglěd
 tools.title=Rědy
 tools_label=Rědy
 first_page.title=K prědnemu bokoju
-first_page.label=K prědnemu bokoju
 first_page_label=K prědnemu bokoju
 last_page.title=K slědnemu bokoju
-last_page.label=K slědnemu bokoju
 last_page_label=K slědnemu bokoju
 page_rotate_cw.title=Wobwjertnuś ako špěra źo
-page_rotate_cw.label=Wobwjertnuś ako špěra źo
 page_rotate_cw_label=Wobwjertnuś ako špěra źo
 page_rotate_ccw.title=Wobwjertnuś nawopaki ako špěra źo
-page_rotate_ccw.label=Wobwjertnuś nawopaki ako špěra źo
 page_rotate_ccw_label=Wobwjertnuś nawopaki ako špěra źo
 
 cursor_text_select_tool.title=Rěd za wuběranje teksta zmóžniś
@@ -137,7 +133,6 @@ print_progress_close=Pśetergnuś
 # (the _label strings are alt text for the buttons, the .title strings are
 # tooltips)
 toggle_sidebar.title=Bócnicu pokazaś/schowaś
-toggle_sidebar_notification.title=Bocnicu pśešaltowaś (dokument wopśimujo pśeglěd/pśipiski)
 toggle_sidebar_notification2.title=Bocnicu pśešaltowaś (dokument rozrědowanje/pśipiski/warstwy wopśimujo)
 toggle_sidebar_label=Bócnicu pokazaś/schowaś
 document_outline.title=Dokumentowe naraźenje pokazaś (dwójne kliknjenje, aby se wšykne zapiski 
pokazali/schowali)
@@ -153,9 +148,6 @@ current_outline_item_label=Aktualny rozrědowański zapisk
 findbar.title=W dokumenśe pytaś
 findbar_label=Pytaś
 
-# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
-page_canvas=Bok {{page}}
-
 additional_layers=Dalšne warstwy
 # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number.
 page_landmark=Bok {{page}}
@@ -230,9 +222,6 @@ page_scale_actual=Aktualna wjelikosć
 # numerical scale value.
 page_scale_percent={{scale}}%
 
-# Loading indicator messages
-loading_error_indicator=Zmólka
-
 # Loading indicator messages
 loading=Zacytujo se…
 loading_error=Pśi zacytowanju PDF jo zmólka nastała.
diff --git a/third-party/pdfjs/web/locale/el/viewer.properties 
b/third-party/pdfjs/web/locale/el/viewer.properties
index 3b1b6e201..13538be8a 100644
--- a/third-party/pdfjs/web/locale/el/viewer.properties
+++ b/third-party/pdfjs/web/locale/el/viewer.properties
@@ -48,16 +48,12 @@ bookmark_label=Τρέχουσα προβολή
 tools.title=Εργαλεία
 tools_label=Εργαλεία
 first_page.title=Μετάβαση στην πρώτη σελίδα
-first_page.label=Μετάβαση στην πρώτη σελίδα
 first_page_label=Μετάβαση στην πρώτη σελίδα
 last_page.title=Μετάβαση στην τελευταία σελίδα
-last_page.label=Μετάβαση στην τελευταία σελίδα
 last_page_label=Μετάβαση στην τελευταία σελίδα
 page_rotate_cw.title=Δεξιόστροφη περιστροφή
-page_rotate_cw.label=Δεξιόστροφη περιστροφή
 page_rotate_cw_label=Δεξιόστροφη περιστροφή
 page_rotate_ccw.title=Αριστερόστροφη περιστροφή
-page_rotate_ccw.label=Αριστερόστροφη περιστροφή
 page_rotate_ccw_label=Αριστερόστροφη περιστροφή
 
 cursor_text_select_tool.title=Ενεργοποίηση εργαλείου επιλογής κειμένου
@@ -93,7 +89,7 @@ document_properties_mb={{size_mb}} MB ({{size_b}} bytes)
 document_properties_title=Τίτλος:
 document_properties_author=Συγγραφέας:
 document_properties_subject=Θέμα:
-document_properties_keywords=Λέξεις κλειδιά:
+document_properties_keywords=Λέξεις-κλειδιά:
 document_properties_creation_date=Ημερομηνία δημιουργίας:
 document_properties_modification_date=Ημερομηνία τροποποίησης:
 # LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}"
@@ -136,26 +132,22 @@ print_progress_close=Ακύρωση
 # Tooltips and alt text for side panel toolbar buttons
 # (the _label strings are alt text for the buttons, the .title strings are
 # tooltips)
-toggle_sidebar.title=(Απ)ενεργοποίηση πλευρικής στήλης
-toggle_sidebar_notification.title=(Απ)ενεργοποίηση πλευρικής στήλης (το έγγραφο περιέχει 
περίγραμμα/συνημμένα)
-toggle_sidebar_notification2.title=(Απ)ενεργοποίηση πλευρικής στήλης (το έγγραφο περιέχει 
περίγραμμα/συνημμένα/επίπεδα)
-toggle_sidebar_label=(Απ)ενεργοποίηση πλευρικής στήλης
+toggle_sidebar.title=(Απ)ενεργοποίηση πλαϊνής γραμμής
+toggle_sidebar_notification2.title=(Απ)ενεργοποίηση πλαϊνής γραμμής (το έγγραφο περιέχει 
περίγραμμα/συνημμένα/επίπεδα)
+toggle_sidebar_label=(Απ)ενεργοποίηση πλαϊνής γραμμής
 document_outline.title=Εμφάνιση διάρθρωσης εγγράφου (διπλό κλικ για ανάπτυξη/σύμπτυξη όλων των στοιχείων)
 document_outline_label=Διάρθρωση εγγράφου
-attachments.title=Προβολή συνημμένων
+attachments.title=Εμφάνιση συνημμένων
 attachments_label=Συνημμένα
 layers.title=Εμφάνιση επιπέδων (διπλό κλικ για επαναφορά όλων των επιπέδων στην προεπιλεγμένη κατάσταση)
 layers_label=Επίπεδα
-thumbs.title=Προβολή μικρογραφιών
+thumbs.title=Εμφάνιση μικρογραφιών
 thumbs_label=Μικρογραφίες
 current_outline_item.title=Εύρεση τρέχοντος στοιχείου διάρθρωσης
 current_outline_item_label=Τρέχον στοιχείο διάρθρωσης
 findbar.title=Εύρεση στο έγγραφο
 findbar_label=Εύρεση
 
-# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
-page_canvas=Σελίδα {{page}}
-
 additional_layers=Επιπρόσθετα επίπεδα
 # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number.
 page_landmark=Σελίδα {{page}}
@@ -165,7 +157,7 @@ page_landmark=Σελίδα {{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_input.title=Εύρεση
@@ -177,8 +169,8 @@ find_next_label=Επόμενο
 find_highlight=Επισήμανση όλων
 find_match_case_label=Συμφωνία πεζών/κεφαλαίων
 find_entire_word_label=Ολόκληρες λέξεις
-find_reached_top=Έλευση στην αρχή του εγγράφου, συνέχεια από το τέλος
-find_reached_bottom=Έλευση στο τέλος του εγγράφου, συνέχεια από την αρχή
+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
@@ -219,7 +211,7 @@ error_stack=Στοίβα: {{stack}}
 error_file=Αρχείο: {{file}}
 # LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number
 error_line=Γραμμή: {{line}}
-rendering_error=Προέκυψε σφάλμα κατά την ανάλυση της σελίδας.
+rendering_error=Προέκυψε σφάλμα κατά την εμφάνιση της σελίδας.
 
 # Predefined zoom values
 page_scale_width=Πλάτος σελίδας
@@ -230,12 +222,9 @@ page_scale_actual=Πραγματικό μέγεθος
 # numerical scale value.
 page_scale_percent={{scale}}%
 
-# Loading indicator messages
-loading_error_indicator=Σφάλμα
-
 # Loading indicator messages
 loading=Φόρτωση…
-loading_error=Προέκυψε ένα σφάλμα κατά τη φόρτωση του PDF.
+loading_error=Προέκυψε σφάλμα κατά τη φόρτωση του PDF.
 invalid_file_error=Μη έγκυρο ή κατεστραμμένο αρχείο PDF.
 missing_file_error=Λείπει αρχείο PDF.
 unexpected_response_error=Μη αναμενόμενη απόκριση από το διακομιστή.
@@ -248,12 +237,12 @@ annotation_date_string={{date}}, {{time}}
 # "{{type}}" will be replaced with an annotation type from a list defined in
 # the PDF spec (32000-1:2008 Table 169 – Annotation types).
 # Some common types are e.g.: "Check", "Text", "Comment", "Note"
-text_annotation_type.alt=[{{type}} Σχόλιο]
-password_label=Εισαγωγή κωδικού για το άνοιγμα του PDF αρχείου.
-password_invalid=Μη έγκυρος κωδικός. Προσπαθείστε ξανά.
+text_annotation_type.alt=[Σχόλιο «{{type}}»]
+password_label=Εισαγάγετε τον κωδικό πρόσβασης για να ανοίξετε αυτό το αρχείο PDF.
+password_invalid=Μη έγκυρος κωδικός πρόσβασης. Παρακαλώ δοκιμάστε ξανά.
 password_ok=OK
 password_cancel=Ακύρωση
 
 printing_not_supported=Προειδοποίηση: Η εκτύπωση δεν υποστηρίζεται πλήρως από το πρόγραμμα περιήγησης.
 printing_not_ready=Προειδοποίηση: Το PDF δεν φορτώθηκε πλήρως για εκτύπωση.
-web_fonts_disabled=Οι γραμματοσειρές Web απενεργοποιημένες: αδυναμία χρήσης των ενσωματωμένων γραμματοσειρών 
PDF.
+web_fonts_disabled=Οι γραμματοσειρές ιστού είναι ανενεργές: δεν είναι δυνατή η χρήση των ενσωματωμένων 
γραμματοσειρών PDF.
diff --git a/third-party/pdfjs/web/locale/en-CA/viewer.properties 
b/third-party/pdfjs/web/locale/en-CA/viewer.properties
index 49e5d90c9..a3c6823a8 100644
--- a/third-party/pdfjs/web/locale/en-CA/viewer.properties
+++ b/third-party/pdfjs/web/locale/en-CA/viewer.properties
@@ -48,16 +48,12 @@ bookmark_label=Current View
 tools.title=Tools
 tools_label=Tools
 first_page.title=Go to First Page
-first_page.label=Go to First Page
 first_page_label=Go to First Page
 last_page.title=Go to Last Page
-last_page.label=Go to Last Page
 last_page_label=Go to Last Page
 page_rotate_cw.title=Rotate Clockwise
-page_rotate_cw.label=Rotate Clockwise
 page_rotate_cw_label=Rotate Clockwise
 page_rotate_ccw.title=Rotate Counterclockwise
-page_rotate_ccw.label=Rotate Counterclockwise
 page_rotate_ccw_label=Rotate Counterclockwise
 
 cursor_text_select_tool.title=Enable Text Selection Tool
@@ -137,7 +133,6 @@ print_progress_close=Cancel
 # (the _label strings are alt text for the buttons, the .title strings are
 # tooltips)
 toggle_sidebar.title=Toggle Sidebar
-toggle_sidebar_notification.title=Toggle Sidebar (document contains outline/attachments)
 toggle_sidebar_notification2.title=Toggle Sidebar (document contains outline/attachments/layers)
 toggle_sidebar_label=Toggle Sidebar
 document_outline.title=Show Document Outline (double-click to expand/collapse all items)
@@ -153,9 +148,6 @@ current_outline_item_label=Current Outline Item
 findbar.title=Find in Document
 findbar_label=Find
 
-# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
-page_canvas=Page {{page}}
-
 additional_layers=Additional Layers
 # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number.
 page_landmark=Page {{page}}
@@ -230,9 +222,6 @@ page_scale_actual=Actual Size
 # numerical scale value.
 page_scale_percent={{scale}}%
 
-# Loading indicator messages
-loading_error_indicator=Error
-
 # Loading indicator messages
 loading=Loading…
 loading_error=An error occurred while loading the PDF.
diff --git a/third-party/pdfjs/web/locale/en-GB/viewer.properties 
b/third-party/pdfjs/web/locale/en-GB/viewer.properties
index 1b50cb379..0052e7f1a 100644
--- a/third-party/pdfjs/web/locale/en-GB/viewer.properties
+++ b/third-party/pdfjs/web/locale/en-GB/viewer.properties
@@ -48,16 +48,12 @@ bookmark_label=Current View
 tools.title=Tools
 tools_label=Tools
 first_page.title=Go to First Page
-first_page.label=Go to First Page
 first_page_label=Go to First Page
 last_page.title=Go to Last Page
-last_page.label=Go to Last Page
 last_page_label=Go to Last Page
 page_rotate_cw.title=Rotate Clockwise
-page_rotate_cw.label=Rotate Clockwise
 page_rotate_cw_label=Rotate Clockwise
 page_rotate_ccw.title=Rotate Anti-Clockwise
-page_rotate_ccw.label=Rotate Anti-Clockwise
 page_rotate_ccw_label=Rotate Anti-Clockwise
 
 cursor_text_select_tool.title=Enable Text Selection Tool
@@ -137,7 +133,6 @@ print_progress_close=Cancel
 # (the _label strings are alt text for the buttons, the .title strings are
 # tooltips)
 toggle_sidebar.title=Toggle Sidebar
-toggle_sidebar_notification.title=Toggle Sidebar (document contains outline/attachments)
 toggle_sidebar_notification2.title=Toggle Sidebar (document contains outline/attachments/layers)
 toggle_sidebar_label=Toggle Sidebar
 document_outline.title=Show Document Outline (double-click to expand/collapse all items)
@@ -153,9 +148,6 @@ current_outline_item_label=Current Outline Item
 findbar.title=Find in Document
 findbar_label=Find
 
-# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
-page_canvas=Page {{page}}
-
 additional_layers=Additional Layers
 # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number.
 page_landmark=Page {{page}}
@@ -230,9 +222,6 @@ page_scale_actual=Actual Size
 # numerical scale value.
 page_scale_percent={{scale}}%
 
-# Loading indicator messages
-loading_error_indicator=Error
-
 # Loading indicator messages
 loading=Loading…
 loading_error=An error occurred while loading the PDF.
diff --git a/third-party/pdfjs/web/locale/eo/viewer.properties 
b/third-party/pdfjs/web/locale/eo/viewer.properties
index 9500e8270..c883da1da 100644
--- a/third-party/pdfjs/web/locale/eo/viewer.properties
+++ b/third-party/pdfjs/web/locale/eo/viewer.properties
@@ -48,16 +48,12 @@ bookmark_label=Nuna vido
 tools.title=Iloj
 tools_label=Iloj
 first_page.title=Iri al la unua paĝo
-first_page.label=Iri al la unua paĝo
 first_page_label=Iri al la unua paĝo
 last_page.title=Iri al la lasta paĝo
-last_page.label=Iri al la lasta paĝo
 last_page_label=Iri al la lasta paĝo
 page_rotate_cw.title=Rotaciigi dekstrume
-page_rotate_cw.label=Rotaciigi dekstrume
 page_rotate_cw_label=Rotaciigi dekstrume
 page_rotate_ccw.title=Rotaciigi maldekstrume
-page_rotate_ccw.label=Rotaciigi maldekstrume
 page_rotate_ccw_label=Rotaciigi maldekstrume
 
 cursor_text_select_tool.title=Aktivigi tekstan elektilon
@@ -137,7 +133,6 @@ print_progress_close=Nuligi
 # (the _label strings are alt text for the buttons, the .title strings are
 # tooltips)
 toggle_sidebar.title=Montri/kaŝi flankan strion
-toggle_sidebar_notification.title=Montri/kaŝi flankan strion (la dokumento enhavas konturon/aneksaĵojn)
 toggle_sidebar_notification2.title=Montri/kaŝi flankan strion (la dokumento enhavas 
konturon/kunsendaĵojn/tavolojn)
 toggle_sidebar_label=Montri/kaŝi flankan strion
 document_outline.title=Montri la konturon de dokumento (alklaku duoble por faldi/malfaldi ĉiujn elementojn)
@@ -153,9 +148,6 @@ current_outline_item_label=Nuna kontura elemento
 findbar.title=Serĉi en dokumento
 findbar_label=Serĉi
 
-# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
-page_canvas=Paĝo {{page}}
-
 additional_layers=Aldonaj tavoloj
 # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number.
 page_landmark=Paĝo {{page}}
@@ -230,9 +222,6 @@ page_scale_actual=Reala grando
 # numerical scale value.
 page_scale_percent={{scale}}%
 
-# Loading indicator messages
-loading_error_indicator=Eraro
-
 # Loading indicator messages
 loading=Ŝargado…
 loading_error=Okazis eraro dum la ŝargado de la PDF dosiero.
diff --git a/third-party/pdfjs/web/locale/es-AR/viewer.properties 
b/third-party/pdfjs/web/locale/es-AR/viewer.properties
index 5e97d6ebc..befc3903f 100644
--- a/third-party/pdfjs/web/locale/es-AR/viewer.properties
+++ b/third-party/pdfjs/web/locale/es-AR/viewer.properties
@@ -48,16 +48,12 @@ bookmark_label=Vista actual
 tools.title=Herramientas
 tools_label=Herramientas
 first_page.title=Ir a primera página
-first_page.label=Ir a primera página
 first_page_label=Ir a primera página
 last_page.title=Ir a última página
-last_page.label=Ir a última página
 last_page_label=Ir a última página
 page_rotate_cw.title=Rotar horario
-page_rotate_cw.label=Rotar horario
 page_rotate_cw_label=Rotar horario
 page_rotate_ccw.title=Rotar antihorario
-page_rotate_ccw.label=Rotar antihorario
 page_rotate_ccw_label=Rotar antihorario
 
 cursor_text_select_tool.title=Habilitar herramienta de selección de texto
@@ -137,7 +133,6 @@ print_progress_close=Cancelar
 # (the _label strings are alt text for the buttons, the .title strings are
 # tooltips)
 toggle_sidebar.title=Alternar barra lateral
-toggle_sidebar_notification.title=Intercambiar barra lateral (el documento contiene esquema/adjuntos)
 toggle_sidebar_notification2.title=Alternar barra lateral (el documento contiene esquemas/adjuntos/capas)
 toggle_sidebar_label=Alternar barra lateral
 document_outline.title=Mostrar esquema del documento (doble clic para expandir/colapsar todos los ítems)
@@ -153,9 +148,6 @@ current_outline_item_label=Elemento de esquema actual
 findbar.title=Buscar en documento
 findbar_label=Buscar
 
-# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
-page_canvas=Página {{page}}
-
 additional_layers=Capas adicionales
 # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number.
 page_landmark=Página {{page}}
@@ -230,9 +222,6 @@ page_scale_actual=Tamaño real
 # numerical scale value.
 page_scale_percent={{scale}}%
 
-# Loading indicator messages
-loading_error_indicator=Error
-
 # Loading indicator messages
 loading=Cargando…
 loading_error=Ocurrió un error al cargar el PDF.
diff --git a/third-party/pdfjs/web/locale/es-CL/viewer.properties 
b/third-party/pdfjs/web/locale/es-CL/viewer.properties
index 23669e68d..140c5d419 100644
--- a/third-party/pdfjs/web/locale/es-CL/viewer.properties
+++ b/third-party/pdfjs/web/locale/es-CL/viewer.properties
@@ -48,16 +48,12 @@ bookmark_label=Vista actual
 tools.title=Herramientas
 tools_label=Herramientas
 first_page.title=Ir a la primera página
-first_page.label=Ir a la primera página
 first_page_label=Ir a la primera página
 last_page.title=Ir a la última página
-last_page.label=Ir a la última página
 last_page_label=Ir a la última página
 page_rotate_cw.title=Girar a la derecha
-page_rotate_cw.label=Girar a la derecha
 page_rotate_cw_label=Girar a la derecha
 page_rotate_ccw.title=Girar a la izquierda
-page_rotate_ccw.label=Girar a la izquierda
 page_rotate_ccw_label=Girar a la izquierda
 
 cursor_text_select_tool.title=Activar la herramienta de selección de texto
@@ -137,7 +133,6 @@ print_progress_close=Cancelar
 # (the _label strings are alt text for the buttons, the .title strings are
 # tooltips)
 toggle_sidebar.title=Barra lateral
-toggle_sidebar_notification.title=Cambiar barra lateral (índice de contenidos del documento/adjuntos)
 toggle_sidebar_notification2.title=Cambiar barra lateral (índice de contenidos del documento/adjuntos/capas)
 toggle_sidebar_label=Mostrar u ocultar la barra lateral
 document_outline.title=Mostrar esquema del documento (doble clic para expandir/contraer todos los elementos)
@@ -153,9 +148,6 @@ current_outline_item_label=Elemento de esquema actual
 findbar.title=Buscar en el documento
 findbar_label=Buscar
 
-# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
-page_canvas=Página {{page}}
-
 additional_layers=Capas adicionales
 # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number.
 page_landmark=Página {{page}}
@@ -230,9 +222,6 @@ page_scale_actual=Tamaño actual
 # numerical scale value.
 page_scale_percent={{scale}}%
 
-# Loading indicator messages
-loading_error_indicator=Error
-
 # Loading indicator messages
 loading=Cargando…
 loading_error=Ocurrió un error al cargar el PDF.
diff --git a/third-party/pdfjs/web/locale/es-ES/viewer.properties 
b/third-party/pdfjs/web/locale/es-ES/viewer.properties
index ef8c135ce..f5bdf9796 100644
--- a/third-party/pdfjs/web/locale/es-ES/viewer.properties
+++ b/third-party/pdfjs/web/locale/es-ES/viewer.properties
@@ -48,16 +48,12 @@ bookmark_label=Vista actual
 tools.title=Herramientas
 tools_label=Herramientas
 first_page.title=Ir a la primera página
-first_page.label=Ir a la primera página
 first_page_label=Ir a la primera página
 last_page.title=Ir a la última página
-last_page.label=Ir a la última página
 last_page_label=Ir a la última página
 page_rotate_cw.title=Rotar en sentido horario
-page_rotate_cw.label=Rotar en sentido horario
 page_rotate_cw_label=Rotar en sentido horario
 page_rotate_ccw.title=Rotar en sentido antihorario
-page_rotate_ccw.label=Rotar en sentido antihorario
 page_rotate_ccw_label=Rotar en sentido antihorario
 
 cursor_text_select_tool.title=Activar herramienta de selección de texto
@@ -137,7 +133,6 @@ print_progress_close=Cancelar
 # (the _label strings are alt text for the buttons, the .title strings are
 # tooltips)
 toggle_sidebar.title=Cambiar barra lateral
-toggle_sidebar_notification.title=Alternar panel lateral (el documento contiene un esquema o adjuntos)
 toggle_sidebar_notification2.title=Alternar barra lateral (el documento contiene esquemas/adjuntos/capas)
 toggle_sidebar_label=Cambiar barra lateral
 document_outline.title=Mostrar resumen del documento (doble clic para expandir/contraer todos los elementos)
@@ -153,9 +148,6 @@ current_outline_item_label=Elemento de esquema actual
 findbar.title=Buscar en el documento
 findbar_label=Buscar
 
-# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
-page_canvas=Página {{page}}
-
 additional_layers=Capas adicionales
 # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number.
 page_landmark=Página {{page}}
@@ -230,9 +222,6 @@ page_scale_actual=Tamaño real
 # numerical scale value.
 page_scale_percent={{scale}}%
 
-# Loading indicator messages
-loading_error_indicator=Error
-
 # Loading indicator messages
 loading=Cargando…
 loading_error=Ocurrió un error al cargar el PDF.
diff --git a/third-party/pdfjs/web/locale/es-MX/viewer.properties 
b/third-party/pdfjs/web/locale/es-MX/viewer.properties
index 217b2bfb1..4ac214213 100644
--- a/third-party/pdfjs/web/locale/es-MX/viewer.properties
+++ b/third-party/pdfjs/web/locale/es-MX/viewer.properties
@@ -48,16 +48,12 @@ bookmark_label=Vista actual
 tools.title=Herramientas
 tools_label=Herramientas
 first_page.title=Ir a la primera página
-first_page.label=Ir a la primera página
 first_page_label=Ir a la primera página
 last_page.title=Ir a la última página
-last_page.label=Ir a la última página
 last_page_label=Ir a la última página
 page_rotate_cw.title=Girar a la derecha
-page_rotate_cw.label=Girar a la derecha
 page_rotate_cw_label=Girar a la derecha
 page_rotate_ccw.title=Girar a la izquierda
-page_rotate_ccw.label=Girar a la izquierda
 page_rotate_ccw_label=Girar a la izquierda
 
 cursor_text_select_tool.title=Activar la herramienta de selección de texto
@@ -137,7 +133,6 @@ print_progress_close=Cancelar
 # (the _label strings are alt text for the buttons, the .title strings are
 # tooltips)
 toggle_sidebar.title=Cambiar barra lateral
-toggle_sidebar_notification.title=Cambiar barra lateral (índice de contenidos del documento/adjuntos)
 toggle_sidebar_notification2.title=Alternar barra lateral (el documento contiene esquemas/adjuntos/capas)
 toggle_sidebar_label=Cambiar barra lateral
 document_outline.title=Mostrar esquema del documento (doble clic para expandir/contraer todos los elementos)
@@ -153,9 +148,6 @@ current_outline_item_label=Elemento de esquema actual
 findbar.title=Buscar en el documento
 findbar_label=Buscar
 
-# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
-page_canvas=Página {{page}}
-
 additional_layers=Capas adicionales
 # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number.
 page_landmark=Página {{page}}
@@ -230,9 +222,6 @@ page_scale_actual=Tamaño real
 # numerical scale value.
 page_scale_percent={{scale}}%
 
-# Loading indicator messages
-loading_error_indicator=Error
-
 # Loading indicator messages
 loading=Cargando…
 loading_error=Un error ocurrió al cargar el PDF.
diff --git a/third-party/pdfjs/web/locale/et/viewer.properties 
b/third-party/pdfjs/web/locale/et/viewer.properties
index cab1ad4ba..5f9065bf1 100644
--- a/third-party/pdfjs/web/locale/et/viewer.properties
+++ b/third-party/pdfjs/web/locale/et/viewer.properties
@@ -48,16 +48,12 @@ bookmark_label=Praegune vaade
 tools.title=Tööriistad
 tools_label=Tööriistad
 first_page.title=Mine esimesele leheküljele
-first_page.label=Mine esimesele leheküljele
 first_page_label=Mine esimesele leheküljele
 last_page.title=Mine viimasele leheküljele
-last_page.label=Mine viimasele leheküljele
 last_page_label=Mine viimasele leheküljele
 page_rotate_cw.title=Pööra päripäeva
-page_rotate_cw.label=Pööra päripäeva
 page_rotate_cw_label=Pööra päripäeva
 page_rotate_ccw.title=Pööra vastupäeva
-page_rotate_ccw.label=Pööra vastupäeva
 page_rotate_ccw_label=Pööra vastupäeva
 
 cursor_text_select_tool.title=Luba teksti valimise tööriist
@@ -137,7 +133,6 @@ print_progress_close=Loobu
 # (the _label strings are alt text for the buttons, the .title strings are
 # tooltips)
 toggle_sidebar.title=Näita külgriba
-toggle_sidebar_notification.title=Näita külgriba (dokument sisaldab sisukorda/manuseid)
 toggle_sidebar_label=Näita külgriba
 document_outline.title=Näita sisukorda (kõigi punktide laiendamiseks/ahendamiseks topeltklõpsa)
 document_outline_label=Näita sisukorda
@@ -219,9 +214,6 @@ page_scale_actual=Tegelik suurus
 # numerical scale value.
 page_scale_percent={{scale}}%
 
-# Loading indicator messages
-loading_error_indicator=Viga
-
 loading_error=PDFi laadimisel esines viga.
 invalid_file_error=Vigane või rikutud PDF-fail.
 missing_file_error=PDF-fail puudub.
diff --git a/third-party/pdfjs/web/locale/eu/viewer.properties 
b/third-party/pdfjs/web/locale/eu/viewer.properties
index 7d73e3ede..5a379dc5d 100644
--- a/third-party/pdfjs/web/locale/eu/viewer.properties
+++ b/third-party/pdfjs/web/locale/eu/viewer.properties
@@ -48,16 +48,12 @@ bookmark_label=Uneko ikuspegia
 tools.title=Tresnak
 tools_label=Tresnak
 first_page.title=Joan lehen orrira
-first_page.label=Joan lehen orrira
 first_page_label=Joan lehen orrira
 last_page.title=Joan azken orrira
-last_page.label=Joan azken orrira
 last_page_label=Joan azken orrira
 page_rotate_cw.title=Biratu erlojuaren norantzan
-page_rotate_cw.label=Biratu erlojuaren norantzan
 page_rotate_cw_label=Biratu erlojuaren norantzan
 page_rotate_ccw.title=Biratu erlojuaren aurkako norantzan
-page_rotate_ccw.label=Biratu erlojuaren aurkako norantzan
 page_rotate_ccw_label=Biratu erlojuaren aurkako norantzan
 
 cursor_text_select_tool.title=Gaitu testuaren hautapen tresna
@@ -137,7 +133,6 @@ print_progress_close=Utzi
 # (the _label strings are alt text for the buttons, the .title strings are
 # tooltips)
 toggle_sidebar.title=Txandakatu alboko barra
-toggle_sidebar_notification.title=Txandakatu alboko barra (dokumentuak eskema/eranskinak ditu)
 toggle_sidebar_notification2.title=Txandakatu alboko barra (dokumentuak eskema/eranskinak/geruzak ditu)
 toggle_sidebar_label=Txandakatu alboko barra
 document_outline.title=Erakutsi dokumentuaren eskema (klik bikoitza elementu guztiak zabaltzeko/tolesteko)
@@ -153,9 +148,6 @@ current_outline_item_label=Uneko eskemaren elementua
 findbar.title=Bilatu dokumentuan
 findbar_label=Bilatu
 
-# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
-page_canvas={{page}}. orria
-
 additional_layers=Geruza gehigarriak
 # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number.
 page_landmark={{page}}. orria
@@ -230,9 +222,6 @@ page_scale_actual=Benetako tamaina
 # numerical scale value.
 page_scale_percent=%{{scale}}
 
-# Loading indicator messages
-loading_error_indicator=Errorea
-
 # Loading indicator messages
 loading=Kargatzen…
 loading_error=Errorea gertatu da PDFa kargatzean.
diff --git a/third-party/pdfjs/web/locale/fa/viewer.properties 
b/third-party/pdfjs/web/locale/fa/viewer.properties
index 00eb8b6e4..2c28f01b5 100644
--- a/third-party/pdfjs/web/locale/fa/viewer.properties
+++ b/third-party/pdfjs/web/locale/fa/viewer.properties
@@ -48,16 +48,12 @@ bookmark_label=نمای فعلی
 tools.title=ابزارها
 tools_label=ابزارها
 first_page.title=برو به اولین صفحه
-first_page.label=برو یه اولین صفحه
 first_page_label=برو به اولین صفحه
 last_page.title=برو به آخرین صفحه
-last_page.label=برو به آخرین صفحه
 last_page_label=برو به آخرین صفحه
 page_rotate_cw.title=چرخش ساعتگرد
-page_rotate_cw.label=چرخش ساعتگرد
 page_rotate_cw_label=چرخش ساعتگرد
 page_rotate_ccw.title=چرخش پاد ساعتگرد
-page_rotate_ccw.label=چرخش پاد ساعتگرد
 page_rotate_ccw_label=چرخش پاد ساعتگرد
 
 cursor_text_select_tool.title=فعال کردن ابزارِ انتخابِ متن
@@ -126,7 +122,6 @@ print_progress_close=لغو
 # (the _label strings are alt text for the buttons, the .title strings are
 # tooltips)
 toggle_sidebar.title=باز و بسته کردن نوار کناری
-toggle_sidebar_notification.title=تغییر وضعیت نوار کناری (سند حاوی طرح/پیوست است)
 toggle_sidebar_label=تغییرحالت نوارکناری
 document_outline.title=نمایش رئوس مطالب مدارک(برای بازشدن/جمع شدن همه موارد دوبار کلیک کنید)
 document_outline_label=طرح نوشتار
@@ -200,9 +195,6 @@ page_scale_actual=اندازه واقعی‌
 # numerical scale value.
 page_scale_percent={{scale}}%
 
-# Loading indicator messages
-loading_error_indicator=خطا
-
 loading_error=هنگام بارگیری پرونده PDF خطایی رخ داد.
 invalid_file_error=پرونده PDF نامعتبر یامعیوب می‌باشد.
 missing_file_error=پرونده PDF یافت نشد.
diff --git a/third-party/pdfjs/web/locale/ff/viewer.properties 
b/third-party/pdfjs/web/locale/ff/viewer.properties
index eb5ca99be..bc954578d 100644
--- a/third-party/pdfjs/web/locale/ff/viewer.properties
+++ b/third-party/pdfjs/web/locale/ff/viewer.properties
@@ -48,16 +48,12 @@ bookmark_label=Jiytol Gonangol
 tools.title=Kuutorɗe
 tools_label=Kuutorɗe
 first_page.title=Yah to hello adanngo
-first_page.label=Yah to hello adanngo
 first_page_label=Yah to hello adanngo
 last_page.title=Yah to hello wattindiingo
-last_page.label=Yah to hello wattindiingo
 last_page_label=Yah to hello wattindiingo
 page_rotate_cw.title=Yiiltu Faya Ñaamo
-page_rotate_cw.label=Yiiltu Faya Ñaamo
 page_rotate_cw_label=Yiiltu Faya Ñaamo
 page_rotate_ccw.title=Yiiltu Faya Nano
-page_rotate_ccw.label=Yiiltu Faya Nano
 page_rotate_ccw_label=Yiiltu Faya Nano
 
 cursor_text_select_tool.title=Gollin kaɓirgel cuɓirgel binndi
@@ -137,7 +133,6 @@ print_progress_close=Haaytu
 # (the _label strings are alt text for the buttons, the .title strings are
 # tooltips)
 toggle_sidebar.title=Toggilo Palal Sawndo
-toggle_sidebar_notification.title=Palal sawndo (dokimaa oo ina waɗi taarngo/cinnde)
 toggle_sidebar_label=Toggilo Palal Sawndo
 document_outline.title=Hollu Ƴiyal Fiilannde (dobdobo ngam wertude/taggude teme fof)
 document_outline_label=Toɓɓe Fiilannde
@@ -219,9 +214,6 @@ page_scale_actual=Ɓetol Jaati
 # numerical scale value.
 page_scale_percent={{scale}}%
 
-# Loading indicator messages
-loading_error_indicator=Juumre
-
 loading_error=Juumre waɗii tuma nde loowata PDF oo.
 invalid_file_error=Fiilde PDF moƴƴaani walla jiibii.
 missing_file_error=Fiilde PDF ena ŋakki.
diff --git a/third-party/pdfjs/web/locale/fi/viewer.properties 
b/third-party/pdfjs/web/locale/fi/viewer.properties
index a6d46e1bd..a5482800e 100644
--- a/third-party/pdfjs/web/locale/fi/viewer.properties
+++ b/third-party/pdfjs/web/locale/fi/viewer.properties
@@ -48,16 +48,12 @@ bookmark_label=Avoin ikkuna
 tools.title=Tools
 tools_label=Tools
 first_page.title=Siirry ensimmäiselle sivulle
-first_page.label=Siirry ensimmäiselle sivulle
 first_page_label=Siirry ensimmäiselle sivulle
 last_page.title=Siirry viimeiselle sivulle
-last_page.label=Siirry viimeiselle sivulle
 last_page_label=Siirry viimeiselle sivulle
 page_rotate_cw.title=Kierrä oikealle
-page_rotate_cw.label=Kierrä oikealle
 page_rotate_cw_label=Kierrä oikealle
 page_rotate_ccw.title=Kierrä vasemmalle
-page_rotate_ccw.label=Kierrä vasemmalle
 page_rotate_ccw_label=Kierrä vasemmalle
 
 cursor_text_select_tool.title=Käytä tekstinvalintatyökalua
@@ -137,7 +133,6 @@ print_progress_close=Peruuta
 # (the _label strings are alt text for the buttons, the .title strings are
 # tooltips)
 toggle_sidebar.title=Näytä/piilota sivupaneeli
-toggle_sidebar_notification.title=Näytä/piilota sivupaneeli (dokumentissa on sisällys tai liitteitä)
 toggle_sidebar_notification2.title=Näytä/piilota sivupaneeli (dokumentissa on sisällys/liitteitä/tasoja)
 toggle_sidebar_label=Näytä/piilota sivupaneeli
 document_outline.title=Näytä dokumentin sisällys (laajenna tai kutista kohdat kaksoisnapsauttamalla)
@@ -153,9 +148,6 @@ current_outline_item_label=Nykyinen sisällyksen kohta
 findbar.title=Etsi dokumentista
 findbar_label=Etsi
 
-# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
-page_canvas=Sivu {{page}}
-
 additional_layers=Lisätasot
 # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number.
 page_landmark=Sivu {{page}}
@@ -230,9 +222,6 @@ page_scale_actual=Todellinen koko
 # numerical scale value.
 page_scale_percent={{scale}} %
 
-# Loading indicator messages
-loading_error_indicator=Virhe
-
 # Loading indicator messages
 loading=Ladataan…
 loading_error=Tapahtui virhe ladattaessa PDF-tiedostoa.
diff --git a/third-party/pdfjs/web/locale/fr/viewer.properties 
b/third-party/pdfjs/web/locale/fr/viewer.properties
index addb629ef..38bc6df22 100644
--- a/third-party/pdfjs/web/locale/fr/viewer.properties
+++ b/third-party/pdfjs/web/locale/fr/viewer.properties
@@ -48,16 +48,12 @@ bookmark_label=Affichage actuel
 tools.title=Outils
 tools_label=Outils
 first_page.title=Aller à la première page
-first_page.label=Aller à la première page
 first_page_label=Aller à la première page
 last_page.title=Aller à la dernière page
-last_page.label=Aller à la dernière page
 last_page_label=Aller à la dernière page
 page_rotate_cw.title=Rotation horaire
-page_rotate_cw.label=Rotation horaire
 page_rotate_cw_label=Rotation horaire
 page_rotate_ccw.title=Rotation antihoraire
-page_rotate_ccw.label=Rotation antihoraire
 page_rotate_ccw_label=Rotation antihoraire
 
 cursor_text_select_tool.title=Activer l’outil de sélection de texte
@@ -137,7 +133,6 @@ print_progress_close=Annuler
 # (the _label strings are alt text for the buttons, the .title strings are
 # tooltips)
 toggle_sidebar.title=Afficher/Masquer le panneau latéral
-toggle_sidebar_notification.title=Afficher/Masquer le panneau latéral (le document contient des 
signets/pièces jointes)
 toggle_sidebar_notification2.title=Afficher/Masquer le panneau latéral (le document contient des 
signets/pièces jointes/calques)
 toggle_sidebar_label=Afficher/Masquer le panneau latéral
 document_outline.title=Afficher les signets du document (double-cliquer pour développer/réduire tous les 
éléments)
@@ -153,9 +148,6 @@ current_outline_item_label=Élément de plan actuel
 findbar.title=Rechercher dans le document
 findbar_label=Rechercher
 
-# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
-page_canvas=Page {{page}}
-
 additional_layers=Calques additionnels
 # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number.
 page_landmark=Page {{page}}
@@ -230,9 +222,6 @@ page_scale_actual=Taille réelle
 # numerical scale value.
 page_scale_percent={{scale}} %
 
-# Loading indicator messages
-loading_error_indicator=Erreur
-
 # Loading indicator messages
 loading=Chargement…
 loading_error=Une erreur s’est produite lors du chargement du fichier PDF.
diff --git a/third-party/pdfjs/web/locale/fy-NL/viewer.properties 
b/third-party/pdfjs/web/locale/fy-NL/viewer.properties
index 5fe493450..497844887 100644
--- a/third-party/pdfjs/web/locale/fy-NL/viewer.properties
+++ b/third-party/pdfjs/web/locale/fy-NL/viewer.properties
@@ -48,16 +48,12 @@ bookmark_label=Aktuele finster
 tools.title=Ark
 tools_label=Ark
 first_page.title=Gean nei earste side
-first_page.label=Nei earste side gean
 first_page_label=Gean nei earste side
 last_page.title=Gean nei lêste side
-last_page.label=Nei lêste side gean
 last_page_label=Gean nei lêste side
 page_rotate_cw.title=Rjochtsom draaie
-page_rotate_cw.label=Rjochtsom draaie
 page_rotate_cw_label=Rjochtsom draaie
 page_rotate_ccw.title=Loftsom draaie
-page_rotate_ccw.label=Loftsom draaie
 page_rotate_ccw_label=Loftsom draaie
 
 cursor_text_select_tool.title=Tekstseleksjehelpmiddel ynskeakelje
@@ -137,7 +133,6 @@ print_progress_close=Annulearje
 # (the _label strings are alt text for the buttons, the .title strings are
 # tooltips)
 toggle_sidebar.title=Sidebalke yn-/útskeakelje
-toggle_sidebar_notification.title=Sidebalke yn-/útskeakelje (dokumint befettet outline/bylagen)
 toggle_sidebar_notification2.title=Sidebalke yn-/útskeakelje (dokumint befettet oersjoch/bylagen/lagen)
 toggle_sidebar_label=Sidebalke yn-/útskeakelje
 document_outline.title=Dokumintoersjoch toane (dûbelklik om alle items út/yn te klappen)
@@ -153,9 +148,6 @@ current_outline_item_label=Aktueel item yn ynhâldsopjefte
 findbar.title=Sykje yn dokumint
 findbar_label=Sykje
 
-# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
-page_canvas=Side {{page}}
-
 additional_layers=Oanfoljende lagen
 # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number.
 page_landmark=Side {{page}}
@@ -230,9 +222,6 @@ page_scale_actual=Werklike grutte
 # numerical scale value.
 page_scale_percent={{scale}}%
 
-# Loading indicator messages
-loading_error_indicator=Flater
-
 # Loading indicator messages
 loading=Lade…
 loading_error=Der is in flater bard by it laden fan de PDF.
diff --git a/third-party/pdfjs/web/locale/ga-IE/viewer.properties 
b/third-party/pdfjs/web/locale/ga-IE/viewer.properties
index 07ae1f933..723ddd0b5 100644
--- a/third-party/pdfjs/web/locale/ga-IE/viewer.properties
+++ b/third-party/pdfjs/web/locale/ga-IE/viewer.properties
@@ -48,16 +48,12 @@ bookmark_label=An tAmharc Reatha
 tools.title=Uirlisí
 tools_label=Uirlisí
 first_page.title=Go dtí an chéad leathanach
-first_page.label=Go dtí an chéad leathanach
 first_page_label=Go dtí an chéad leathanach
 last_page.title=Go dtí an leathanach deiridh
-last_page.label=Go dtí an leathanach deiridh
 last_page_label=Go dtí an leathanach deiridh
 page_rotate_cw.title=Rothlaigh ar deiseal
-page_rotate_cw.label=Rothlaigh ar deiseal
 page_rotate_cw_label=Rothlaigh ar deiseal
 page_rotate_ccw.title=Rothlaigh ar tuathal
-page_rotate_ccw.label=Rothlaigh ar tuathal
 page_rotate_ccw_label=Rothlaigh ar tuathal
 
 cursor_text_select_tool.title=Cumasaigh an Uirlis Roghnaithe Téacs
@@ -101,7 +97,6 @@ print_progress_close=Cealaigh
 # (the _label strings are alt text for the buttons, the .title strings are
 # tooltips)
 toggle_sidebar.title=Scoránaigh an Barra Taoibh
-toggle_sidebar_notification.title=Scoránaigh an Barra Taoibh (achoimre/iatáin sa cháipéis)
 toggle_sidebar_label=Scoránaigh an Barra Taoibh
 document_outline.title=Taispeáin Imlíne na Cáipéise (déchliceáil chun chuile rud a leathnú nó a laghdú)
 document_outline_label=Creatlach na Cáipéise
@@ -161,9 +156,6 @@ page_scale_actual=Fíormhéid
 # numerical scale value.
 page_scale_percent={{scale}}%
 
-# Loading indicator messages
-loading_error_indicator=Earráid
-
 loading_error=Tharla earráid agus an cháipéis PDF á lódáil.
 invalid_file_error=Comhad neamhbhailí nó truaillithe PDF.
 missing_file_error=Comhad PDF ar iarraidh.
diff --git a/third-party/pdfjs/web/locale/gd/viewer.properties 
b/third-party/pdfjs/web/locale/gd/viewer.properties
index d1e54caa6..4f056b1e0 100644
--- a/third-party/pdfjs/web/locale/gd/viewer.properties
+++ b/third-party/pdfjs/web/locale/gd/viewer.properties
@@ -48,16 +48,12 @@ bookmark_label=An sealladh làithreach
 tools.title=Innealan
 tools_label=Innealan
 first_page.title=Rach gun chiad duilleag
-first_page.label=Rach gun chiad duilleag
 first_page_label=Rach gun chiad duilleag
 last_page.title=Rach gun duilleag mu dheireadh
-last_page.label=Rach gun duilleag mu dheireadh
 last_page_label=Rach gun duilleag mu dheireadh
 page_rotate_cw.title=Cuairtich gu deiseil
-page_rotate_cw.label=Cuairtich gu deiseil
 page_rotate_cw_label=Cuairtich gu deiseil
 page_rotate_ccw.title=Cuairtich gu tuathail
-page_rotate_ccw.label=Cuairtich gu tuathail
 page_rotate_ccw_label=Cuairtich gu tuathail
 
 cursor_text_select_tool.title=Cuir an comas inneal taghadh an teacsa
@@ -137,14 +133,13 @@ print_progress_close=Sguir dheth
 # (the _label strings are alt text for the buttons, the .title strings are
 # tooltips)
 toggle_sidebar.title=Toglaich am bàr-taoibh
-toggle_sidebar_notification.title=Toglaich am bàr-taoibh (tha oir-loidhne/ceanglachain aig an sgrìobhainn)
 toggle_sidebar_notification2.title=Toglaich am bàr-taoibh (tha oir-loidhne/ceanglachain/breathan aig an 
sgrìobhainn)
 toggle_sidebar_label=Toglaich am bàr-taoibh
 document_outline.title=Seall oir-loidhne na sgrìobhainn (dèan briogadh dùbailte airson a h-uile nì a 
leudachadh/a cho-theannadh)
 document_outline_label=Oir-loidhne na sgrìobhainne
 attachments.title=Seall na ceanglachain
 attachments_label=Ceanglachain
-layers.title=Seall na breathan (dèan briogadh dùbailte airson a h-uile breath ath-shuidheachadh dhan staid 
thùsail)
+layers.title=Seall na breathan (dèan briogadh dùbailte airson a h-uile breath ath-shuidheachadh dhan staid 
bhunaiteach)
 layers_label=Breathan
 thumbs.title=Seall na dealbhagan
 thumbs_label=Dealbhagan
@@ -153,9 +148,6 @@ current_outline_item_label=Nì làithreach na h-oir-loidhne
 findbar.title=Lorg san sgrìobhainn
 findbar_label=Lorg
 
-# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
-page_canvas=Duilleag {{page}}
-
 additional_layers=Barrachd breathan
 # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number.
 page_landmark=Duilleag {{page}}
@@ -230,9 +222,6 @@ page_scale_actual=Am fìor-mheud
 # numerical scale value.
 page_scale_percent={{scale}}%
 
-# Loading indicator messages
-loading_error_indicator=Mearachd
-
 # Loading indicator messages
 loading=’Ga luchdadh…
 loading_error=Thachair mearachd rè luchdadh a' PDF.
diff --git a/third-party/pdfjs/web/locale/gl/viewer.properties 
b/third-party/pdfjs/web/locale/gl/viewer.properties
index efbabc0da..d4ea8174f 100644
--- a/third-party/pdfjs/web/locale/gl/viewer.properties
+++ b/third-party/pdfjs/web/locale/gl/viewer.properties
@@ -48,16 +48,12 @@ bookmark_label=Vista actual
 tools.title=Ferramentas
 tools_label=Ferramentas
 first_page.title=Ir á primeira páxina
-first_page.label=Ir á primeira páxina
 first_page_label=Ir á primeira páxina
 last_page.title=Ir á última páxina
-last_page.label=Ir á última páxina
 last_page_label=Ir á última páxina
 page_rotate_cw.title=Rotar no sentido das agullas do reloxo
-page_rotate_cw.label=Rotar no sentido das agullas do reloxo
 page_rotate_cw_label=Rotar no sentido das agullas do reloxo
 page_rotate_ccw.title=Rotar no sentido contrario ás agullas do reloxo
-page_rotate_ccw.label=Rotar no sentido contrario ás agullas do reloxo
 page_rotate_ccw_label=Rotar no sentido contrario ás agullas do reloxo
 
 cursor_text_select_tool.title=Activar a ferramenta de selección de texto
@@ -137,7 +133,6 @@ print_progress_close=Cancelar
 # (the _label strings are alt text for the buttons, the .title strings are
 # tooltips)
 toggle_sidebar.title=Amosar/agochar a barra lateral
-toggle_sidebar_notification.title=Amosar/agochar a barra lateral (o documento contén un esquema ou anexos)
 toggle_sidebar_notification2.title=Alternar barra lateral (o documento contén esquema/anexos/capas)
 toggle_sidebar_label=Amosar/agochar a barra lateral
 document_outline.title=Amosar o esquema do documento (prema dúas veces para expandir/contraer todos os 
elementos)
@@ -153,9 +148,6 @@ current_outline_item_label=Elemento delimitado actualmente
 findbar.title=Atopar no documento
 findbar_label=Atopar
 
-# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
-page_canvas=Páxina {{page}}
-
 additional_layers=Capas adicionais
 # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number.
 page_landmark=Páxina {{page}}
@@ -230,9 +222,6 @@ page_scale_actual=Tamaño actual
 # numerical scale value.
 page_scale_percent={{scale}}%
 
-# Loading indicator messages
-loading_error_indicator=Erro
-
 # Loading indicator messages
 loading=A cargar…
 loading_error=Produciuse un erro ao cargar o PDF.
diff --git a/third-party/pdfjs/web/locale/gn/viewer.properties 
b/third-party/pdfjs/web/locale/gn/viewer.properties
index 301698028..ba7861127 100644
--- a/third-party/pdfjs/web/locale/gn/viewer.properties
+++ b/third-party/pdfjs/web/locale/gn/viewer.properties
@@ -48,16 +48,12 @@ bookmark_label=Ag̃agua jehecha
 tools.title=Tembipuru
 tools_label=Tembipuru
 first_page.title=Kuatiarogue ñepyrũme jeho
-first_page.label=Kuatiarogue ñepyrũme jeho
 first_page_label=Kuatiarogue ñepyrũme jeho
 last_page.title=Kuatiarogue pahápe jeho
-last_page.label=Kuatiarogue pahápe jeho
 last_page_label=Kuatiarogue pahápe jeho
 page_rotate_cw.title=Aravóicha mbojere
-page_rotate_cw.label=Aravóicha mbojere
 page_rotate_cw_label=Aravóicha mbojere
 page_rotate_ccw.title=Aravo rapykue gotyo mbojere
-page_rotate_ccw.label=Aravo rapykue gotyo mbojere
 page_rotate_ccw_label=Aravo rapykue gotyo mbojere
 
 cursor_text_select_tool.title=Emyandy moñe’ẽrã jeporavo rembipuru
@@ -137,7 +133,6 @@ print_progress_close=Heja
 # (the _label strings are alt text for the buttons, the .title strings are
 # tooltips)
 toggle_sidebar.title=Tenda yke moambue
-toggle_sidebar_notification.title=Embojopyru tenda ykegua (kuatia oguereko kora/marandurenda moirũha)
 toggle_sidebar_notification2.title=Embojopyru tenda ykegua (kuatia oguereko kuaakaha/moirũha/ñuãha)
 toggle_sidebar_label=Tenda yke moambue
 document_outline.title=Ehechauka kuatia rape (eikutu mokõi jey embotuicha/emomichĩ hag̃ua opavavete 
mba’epuru)
@@ -153,9 +148,6 @@ current_outline_item_label=Mba’epuru ag̃aguaitéva
 findbar.title=Kuatiápe jeheka
 findbar_label=Juhu
 
-# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
-page_canvas=Kuatiarogue {{page}}
-
 additional_layers=Ñuãha moirũguáva
 # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number.
 page_landmark=Kuatiarogue {{page}}
@@ -230,9 +222,6 @@ page_scale_actual=Tuichakue ag̃agua
 # numerical scale value.
 page_scale_percent={{scale}}%
 
-# Loading indicator messages
-loading_error_indicator=Oĩvaíva
-
 # Loading indicator messages
 loading=Henyhẽhína…
 loading_error=Oiko jejavy PDF oñemyeñyhẽnguévo.
diff --git a/third-party/pdfjs/web/locale/gu-IN/viewer.properties 
b/third-party/pdfjs/web/locale/gu-IN/viewer.properties
index d1b7040be..174d4648c 100644
--- a/third-party/pdfjs/web/locale/gu-IN/viewer.properties
+++ b/third-party/pdfjs/web/locale/gu-IN/viewer.properties
@@ -48,16 +48,12 @@ bookmark_label=વર્તમાન દૃશ્ય
 tools.title=સાધનો
 tools_label=સાધનો
 first_page.title=પહેલાં પાનામાં જાવ
-first_page.label=પહેલાં પાનામાં જાવ
 first_page_label=પ્રથમ પાનાં પર જાવ
 last_page.title=છેલ્લા પાનાં પર જાવ
-last_page.label=છેલ્લા પાનામાં જાવ
 last_page_label=છેલ્લા પાનાં પર જાવ
 page_rotate_cw.title=ઘડિયાળનાં કાંટા તરફ ફેરવો
-page_rotate_cw.label=ઘડિયાળનાં કાંટાની જેમ ફેરવો
 page_rotate_cw_label=ઘડિયાળનાં કાંટા તરફ ફેરવો
 page_rotate_ccw.title=ઘડિયાળનાં કાંટાની ઉલટી દિશામાં ફેરવો
-page_rotate_ccw.label=ઘડિયાળનાં કાંટાની ઉલટી દિશામાં ફેરવો
 page_rotate_ccw_label=ઘડિયાળનાં કાંટાની વિરુદ્દ ફેરવો
 
 cursor_text_select_tool.title=ટેક્સ્ટ પસંદગી ટૂલ સક્ષમ કરો
@@ -137,7 +133,6 @@ print_progress_close=રદ કરો
 # (the _label strings are alt text for the buttons, the .title strings are
 # tooltips)
 toggle_sidebar.title=ટૉગલ બાજુપટ્ટી
-toggle_sidebar_notification.title=સાઇડબારને ટૉગલ કરો(દસ્તાવેજની રૂપરેખા/જોડાણો શામેલ છે)
 toggle_sidebar_label=ટૉગલ બાજુપટ્ટી
 document_outline.title=દસ્તાવેજની રૂપરેખા બતાવો(બધી આઇટમ્સને વિસ્તૃત/સંકુચિત કરવા માટે ડબલ-ક્લિક કરો)
 document_outline_label=દસ્તાવેજ રૂપરેખા
@@ -219,9 +214,6 @@ page_scale_actual=ચોક્કસ માપ
 # numerical scale value.
 page_scale_percent={{scale}}%
 
-# Loading indicator messages
-loading_error_indicator=ભૂલ
-
 loading_error=ભૂલ ઉદ્ભવી જ્યારે PDF ને લાવી રહ્યા હોય.
 invalid_file_error=અયોગ્ય અથવા ભાંગેલ PDF ફાઇલ.
 missing_file_error=ગુમ થયેલ PDF ફાઇલ.
diff --git a/third-party/pdfjs/web/locale/he/viewer.properties 
b/third-party/pdfjs/web/locale/he/viewer.properties
index 0ed86b7cf..58be62203 100644
--- a/third-party/pdfjs/web/locale/he/viewer.properties
+++ b/third-party/pdfjs/web/locale/he/viewer.properties
@@ -48,16 +48,12 @@ bookmark_label=תצוגה נוכחית
 tools.title=כלים
 tools_label=כלים
 first_page.title=מעבר לעמוד הראשון
-first_page.label=מעבר לעמוד הראשון
 first_page_label=מעבר לעמוד הראשון
 last_page.title=מעבר לעמוד האחרון
-last_page.label=מעבר לעמוד האחרון
 last_page_label=מעבר לעמוד האחרון
 page_rotate_cw.title=הטיה עם כיוון השעון
-page_rotate_cw.label=הטיה עם כיוון השעון
 page_rotate_cw_label=הטיה עם כיוון השעון
 page_rotate_ccw.title=הטיה כנגד כיוון השעון
-page_rotate_ccw.label=הטיה כנגד כיוון השעון
 page_rotate_ccw_label=הטיה כנגד כיוון השעון
 
 cursor_text_select_tool.title=הפעלת כלי בחירת טקסט
@@ -137,7 +133,6 @@ print_progress_close=ביטול
 # (the _label strings are alt text for the buttons, the .title strings are
 # tooltips)
 toggle_sidebar.title=הצגה/הסתרה של סרגל הצד
-toggle_sidebar_notification.title=החלפת תצוגת סרגל צד (מסמך שמכיל תוכן עניינים/קבצים מצורפים)
 toggle_sidebar_notification2.title=החלפת תצוגת סרגל צד (מסמך שמכיל תוכן עניינים/קבצים מצורפים/שכבות)
 toggle_sidebar_label=הצגה/הסתרה של סרגל הצד
 document_outline.title=הצגת תוכן העניינים של המסמך (לחיצה כפולה כדי להרחיב או לצמצם את כל הפריטים)
@@ -153,9 +148,6 @@ current_outline_item_label=פריט תוכן העניינים הנוכחי
 findbar.title=חיפוש במסמך
 findbar_label=חיפוש
 
-# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
-page_canvas=עמוד {{page}}
-
 additional_layers=שכבות נוספות
 # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number.
 page_landmark=עמוד {{page}}
@@ -230,9 +222,6 @@ page_scale_actual=גודל אמיתי
 # numerical scale value.
 page_scale_percent={{scale}}%
 
-# Loading indicator messages
-loading_error_indicator=שגיאה
-
 # Loading indicator messages
 loading=בטעינה…
 loading_error=אירעה שגיאה בעת טעינת ה־PDF.
diff --git a/third-party/pdfjs/web/locale/hi-IN/viewer.properties 
b/third-party/pdfjs/web/locale/hi-IN/viewer.properties
index e69c9df69..27064ee93 100644
--- a/third-party/pdfjs/web/locale/hi-IN/viewer.properties
+++ b/third-party/pdfjs/web/locale/hi-IN/viewer.properties
@@ -48,16 +48,12 @@ bookmark_label=\u0020मौजूदा दृश्य
 tools.title=औज़ार
 tools_label=औज़ार
 first_page.title=प्रथम पृष्ठ पर जाएँ
-first_page.label=\u0020प्रथम पृष्ठ पर जाएँ
 first_page_label=प्रथम पृष्ठ पर जाएँ
 last_page.title=अंतिम पृष्ठ पर जाएँ
-last_page.label=\u0020अंतिम पृष्ठ पर जाएँ
 last_page_label=\u0020अंतिम पृष्ठ पर जाएँ
 page_rotate_cw.title=घड़ी की दिशा में घुमाएँ
-page_rotate_cw.label=घड़ी की दिशा में घुमाएँ
 page_rotate_cw_label=घड़ी की दिशा में घुमाएँ
 page_rotate_ccw.title=घड़ी की दिशा से उल्टा घुमाएँ
-page_rotate_ccw.label=घड़ी की दिशा से उल्टा घुमाएँ
 page_rotate_ccw_label=\u0020घड़ी की दिशा से उल्टा घुमाएँ
 
 cursor_text_select_tool.title=पाठ चयन उपकरण सक्षम करें
@@ -133,7 +129,6 @@ print_progress_close=रद्द करें
 # (the _label strings are alt text for the buttons, the .title strings are
 # tooltips)
 toggle_sidebar.title=\u0020स्लाइडर टॉगल करें
-toggle_sidebar_notification.title=साइडबार टॉगल करें (दस्तावेज़ में रूपरेखा शामिल है/attachments)
 toggle_sidebar_label=स्लाइडर टॉगल करें
 document_outline.title=दस्तावेज़ की रूपरेखा दिखाइए (सारी वस्तुओं को फलने अथवा समेटने के लिए दो बार क्लिक 
करें)
 document_outline_label=दस्तावेज़ आउटलाइन
@@ -144,9 +139,6 @@ thumbs_label=लघु छवि
 findbar.title=\u0020दस्तावेज़ में ढूँढ़ें
 findbar_label=ढूँढें
 
-# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
-page_canvas=पृष्ठ {{page}}
-
 # Thumbnails panel item (tooltip and alt text for images)
 # LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
 # number.
@@ -218,9 +210,6 @@ page_scale_actual=वास्तविक आकार
 # numerical scale value.
 page_scale_percent={{scale}}%
 
-# Loading indicator messages
-loading_error_indicator=त्रुटि
-
 loading_error=PDF लोड करते समय एक त्रुटि हुई.
 invalid_file_error=अमान्य या भ्रष्ट PDF फ़ाइल.
 missing_file_error=\u0020अनुपस्थित PDF फ़ाइल.
diff --git a/third-party/pdfjs/web/locale/hr/viewer.properties 
b/third-party/pdfjs/web/locale/hr/viewer.properties
index 53f1edfbf..395a97522 100644
--- a/third-party/pdfjs/web/locale/hr/viewer.properties
+++ b/third-party/pdfjs/web/locale/hr/viewer.properties
@@ -48,16 +48,12 @@ bookmark_label=Trenutačni prikaz
 tools.title=Alati
 tools_label=Alati
 first_page.title=Idi na prvu stranicu
-first_page.label=Idi na prvu stranicu
 first_page_label=Idi na prvu stranicu
 last_page.title=Idi na posljednju stranicu
-last_page.label=Idi na posljednju stranicu
 last_page_label=Idi na posljednju stranicu
 page_rotate_cw.title=Rotiraj u smjeru kazaljke na satu
-page_rotate_cw.label=Rotiraj u smjeru kazaljke na satu
 page_rotate_cw_label=Rotiraj u smjeru kazaljke na satu
 page_rotate_ccw.title=Rotiraj obrnutno od smjera kazaljke na satu
-page_rotate_ccw.label=Rotiraj obrnutno od smjera kazaljke na satu
 page_rotate_ccw_label=Rotiraj obrnutno od smjera kazaljke na satu
 
 cursor_text_select_tool.title=Omogući alat za označavanje teksta
@@ -137,7 +133,6 @@ print_progress_close=Odustani
 # (the _label strings are alt text for the buttons, the .title strings are
 # tooltips)
 toggle_sidebar.title=Prikaži/sakrij bočnu traku
-toggle_sidebar_notification.title=Prikazivanje i sklanjanje bočne trake (dokument sadrži strukturu/privitke)
 toggle_sidebar_notification2.title=Prikazivanje i sklanjanje bočne trake (dokument sadrži 
strukturu/privitke/slojeve)
 toggle_sidebar_label=Prikaži/sakrij bočnu traku
 document_outline.title=Prikaži strukturu dokumenta (dvostruki klik za rasklapanje/sklapanje svih stavki)
@@ -153,9 +148,6 @@ current_outline_item_label=Trenutačni element strukture
 findbar.title=Pronađi u dokumentu
 findbar_label=Pronađi
 
-# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
-page_canvas=Stranica br. {{page}}
-
 additional_layers=Dodatni slojevi
 # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number.
 page_landmark=Stranica {{page}}
@@ -230,9 +222,6 @@ page_scale_actual=Stvarna veličina
 # numerical scale value.
 page_scale_percent={{scale}} %
 
-# Loading indicator messages
-loading_error_indicator=Greška
-
 # Loading indicator messages
 loading=Učitavanje…
 loading_error=Došlo je do greške pri učitavanju PDF-a.
diff --git a/third-party/pdfjs/web/locale/hsb/viewer.properties 
b/third-party/pdfjs/web/locale/hsb/viewer.properties
index 3c692f690..f710d981a 100644
--- a/third-party/pdfjs/web/locale/hsb/viewer.properties
+++ b/third-party/pdfjs/web/locale/hsb/viewer.properties
@@ -48,16 +48,12 @@ bookmark_label=Aktualny napohlad
 tools.title=Nastroje
 tools_label=Nastroje
 first_page.title=K prěnjej stronje
-first_page.label=K prěnjej stronje
 first_page_label=K prěnjej stronje
 last_page.title=K poslednjej stronje
-last_page.label=K poslednjej stronje
 last_page_label=K poslednjej stronje
 page_rotate_cw.title=K směrej časnika wjerćeć
-page_rotate_cw.label=K směrej časnika wjerćeć
 page_rotate_cw_label=K směrej časnika wjerćeć
 page_rotate_ccw.title=Přećiwo směrej časnika wjerćeć
-page_rotate_ccw.label=Přećiwo směrej časnika wjerćeć
 page_rotate_ccw_label=Přećiwo směrej časnika wjerćeć
 
 cursor_text_select_tool.title=Nastroj za wuběranje teksta zmóžnić
@@ -137,7 +133,6 @@ print_progress_close=Přetorhnyć
 # (the _label strings are alt text for the buttons, the .title strings are
 # tooltips)
 toggle_sidebar.title=Bóčnicu pokazać/schować
-toggle_sidebar_notification.title=Bóčnicu přepinać (dokument wobsahuje wobrys/přiwěški)
 toggle_sidebar_notification2.title=Bóčnicu přepinać (dokument rozrjad/přiwěški/woršty wobsahuje)
 toggle_sidebar_label=Bóčnicu pokazać/schować
 document_outline.title=Dokumentowy naćisk pokazać (dwójne kliknjenje, zo bychu so wšě zapiski 
pokazali/schowali)
@@ -153,9 +148,6 @@ current_outline_item_label=Aktualny rozrjadowy zapisk
 findbar.title=W dokumenće pytać
 findbar_label=Pytać
 
-# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
-page_canvas=Strona {{page}}
-
 additional_layers=Dalše woršty
 # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number.
 page_landmark=Strona {{page}}
@@ -230,9 +222,6 @@ page_scale_actual=Aktualna wulkosć
 # numerical scale value.
 page_scale_percent={{scale}}%
 
-# Loading indicator messages
-loading_error_indicator=Zmylk
-
 # Loading indicator messages
 loading=Začituje so…
 loading_error=Při začitowanju PDF je zmylk wustupił.
diff --git a/third-party/pdfjs/web/locale/hu/viewer.properties 
b/third-party/pdfjs/web/locale/hu/viewer.properties
index 99cd45755..b72a6b5e6 100644
--- a/third-party/pdfjs/web/locale/hu/viewer.properties
+++ b/third-party/pdfjs/web/locale/hu/viewer.properties
@@ -48,16 +48,12 @@ bookmark_label=Aktuális nézet
 tools.title=Eszközök
 tools_label=Eszközök
 first_page.title=Ugrás az első oldalra
-first_page.label=Ugrás az első oldalra
 first_page_label=Ugrás az első oldalra
 last_page.title=Ugrás az utolsó oldalra
-last_page.label=Ugrás az utolsó oldalra
 last_page_label=Ugrás az utolsó oldalra
 page_rotate_cw.title=Forgatás az óramutató járásával egyezően
-page_rotate_cw.label=Forgatás az óramutató járásával egyezően
 page_rotate_cw_label=Forgatás az óramutató járásával egyezően
 page_rotate_ccw.title=Forgatás az óramutató járásával ellentétesen
-page_rotate_ccw.label=Forgatás az óramutató járásával ellentétesen
 page_rotate_ccw_label=Forgatás az óramutató járásával ellentétesen
 
 cursor_text_select_tool.title=Szövegkijelölő eszköz bekapcsolása
@@ -137,7 +133,6 @@ print_progress_close=Mégse
 # (the _label strings are alt text for the buttons, the .title strings are
 # tooltips)
 toggle_sidebar.title=Oldalsáv be/ki
-toggle_sidebar_notification.title=Oldalsáv be/ki (a dokumentum vázlatot/mellékleteket tartalmaz)
 toggle_sidebar_notification2.title=Oldalsáv be/ki (a dokumentum vázlatot/mellékleteket/rétegeket tartalmaz)
 toggle_sidebar_label=Oldalsáv be/ki
 document_outline.title=Dokumentum megjelenítése online (dupla kattintás minden elem 
kinyitásához/összecsukásához)
@@ -153,9 +148,6 @@ current_outline_item_label=Jelenlegi vázlatelem
 findbar.title=Keresés a dokumentumban
 findbar_label=Keresés
 
-# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
-page_canvas={{page}}. oldal
-
 additional_layers=További rétegek
 # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number.
 page_landmark={{page}}. oldal
@@ -230,9 +222,6 @@ page_scale_actual=Valódi méret
 # numerical scale value.
 page_scale_percent={{scale}}%
 
-# Loading indicator messages
-loading_error_indicator=Hiba
-
 # Loading indicator messages
 loading=Betöltés…
 loading_error=Hiba történt a PDF betöltésekor.
diff --git a/third-party/pdfjs/web/locale/hy-AM/viewer.properties 
b/third-party/pdfjs/web/locale/hy-AM/viewer.properties
index 2b3f0356d..a97ae3cef 100644
--- a/third-party/pdfjs/web/locale/hy-AM/viewer.properties
+++ b/third-party/pdfjs/web/locale/hy-AM/viewer.properties
@@ -48,16 +48,12 @@ bookmark_label=Ընթացիկ տեսքը
 tools.title=Գործիքներ
 tools_label=Գործիքներ
 first_page.title=Անցնել առաջին էջին
-first_page.label=Անցնել առաջին էջին
 first_page_label=Անցնել առաջին էջին
 last_page.title=Անցնել վերջին էջին
-last_page.label=Անցնել վերջին էջին
 last_page_label=Անցնել վերջին էջին
 page_rotate_cw.title=Պտտել ըստ ժամացույցի սլաքի
-page_rotate_cw.label=Պտտել ըստ ժամացույցի սլաքի
 page_rotate_cw_label=Պտտել ըստ ժամացույցի սլաքի
 page_rotate_ccw.title=Պտտել հակառակ ժամացույցի սլաքի
-page_rotate_ccw.label=Պտտել հակառակ ժամացույցի սլաքի
 page_rotate_ccw_label=Պտտել հակառակ ժամացույցի սլաքի
 
 cursor_text_select_tool.title=Միացնել գրույթ ընտրելու գործիքը
@@ -137,7 +133,6 @@ print_progress_close=Չեղարկել
 # (the _label strings are alt text for the buttons, the .title strings are
 # tooltips)
 toggle_sidebar.title=Բացել/Փակել Կողային վահանակը
-toggle_sidebar_notification.title=Փոխարկել Կողային փեղկը (փաստաթուղթը պարունակում է ուրվագիծ/կցորդներ)
 toggle_sidebar_label=Բացել/Փակել Կողային վահանակը
 document_outline.title=Ցուցադրել փաստաթղթի ուրվագիծը (կրկնակի սեղմեք՝ միավորները ընդարձակելու/կոծկելու համար)
 document_outline_label=Փաստաթղթի բովանդակությունը
@@ -148,9 +143,6 @@ thumbs_label=Մանրապատկերը
 findbar.title=Գտնել փաստաթղթում
 findbar_label=Որոնում
 
-# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
-page_canvas=Էջ {{page}}
-
 # Thumbnails panel item (tooltip and alt text for images)
 # LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
 # number.
@@ -222,9 +214,6 @@ page_scale_actual=Իրական չափը
 # numerical scale value.
 page_scale_percent={{scale}}%
 
-# Loading indicator messages
-loading_error_indicator=Սխալ
-
 loading_error=Սխալ՝ PDF ֆայլը բացելիս։
 invalid_file_error=Սխալ կամ վնասված PDF ֆայլ:
 missing_file_error=PDF ֆայլը բացակայում է:
diff --git a/third-party/pdfjs/web/locale/hye/viewer.properties 
b/third-party/pdfjs/web/locale/hye/viewer.properties
index 7bbfe1422..fb7bd7a70 100644
--- a/third-party/pdfjs/web/locale/hye/viewer.properties
+++ b/third-party/pdfjs/web/locale/hye/viewer.properties
@@ -48,16 +48,12 @@ bookmark_label=Ընթացիկ տեսք
 tools.title=Գործիքներ
 tools_label=Գործիքներ
 first_page.title=Գնալ դէպի առաջին էջ
-first_page.label=Գնալ դէպի առաջին էջ
 first_page_label=Գնալ դէպի առաջին էջ
 last_page.title=Գնալ դէպի վերջին էջ
-last_page.label=Գնալ դէպի վերջին էջ
 last_page_label=Գնալ դէպի վերջին էջ
 page_rotate_cw.title=Պտտել ժամացոյցի սլաքի ուղղութեամբ
-page_rotate_cw.label=Պտտել ժամացոյցի սլաքի ուղղութեամբ
 page_rotate_cw_label=Պտտել ժամացոյցի սլաքի ուղղութեամբ
 page_rotate_ccw.title=Պտտել ժամացոյցի սլաքի հակառակ ուղղութեամբ
-page_rotate_ccw.label=Պտտել ժամացոյցի սլաքի հակառակ ուղղութեամբ
 page_rotate_ccw_label=Պտտել ժամացոյցի սլաքի հակառակ ուղղութեամբ
 
 cursor_text_select_tool.title=Միացնել գրոյթ ընտրելու գործիքը
@@ -137,7 +133,6 @@ print_progress_close=Չեղարկել
 # (the _label strings are alt text for the buttons, the .title strings are
 # tooltips)
 toggle_sidebar.title=Փոխարկել կողային վահանակը
-toggle_sidebar_notification.title=Փոխարկել կողային վահանակը (փաստաթուղթը պարունակում է ուրուագիծ/կցորդ)
 toggle_sidebar_notification2.title=Փոխանջատել կողմնասիւնը (փաստաթուղթը պարունակում է 
ուրուագիծ/կցորդներ/շերտեր)
 toggle_sidebar_label=Փոխարկել կողային վահանակը
 document_outline.title=Ցուցադրել փաստաթղթի ուրուագիծը (կրկնակի սեղմէք՝ միաւորները ընդարձակելու/կոծկելու 
համար)
@@ -153,9 +148,6 @@ current_outline_item_label=Ընթացիկ գծագրման տարր
 findbar.title=Գտնել փաստաթղթում
 findbar_label=Որոնում
 
-# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
-page_canvas=Էջ {{page}}
-
 additional_layers=Լրացուցիչ շերտեր
 # Thumbnails panel item (tooltip and alt text for images)
 # LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
@@ -228,9 +220,6 @@ page_scale_actual=Իրական չափը
 # numerical scale value.
 page_scale_percent={{scale}}%
 
-# Loading indicator messages
-loading_error_indicator=Սխալ
-
 loading_error=PDF նիշքը բացելիս սխալ է տեղի ունեցել։
 invalid_file_error=Սխալ կամ վնասուած PDF նիշք։
 missing_file_error=PDF նիշքը բացակաիւմ է։
diff --git a/third-party/pdfjs/web/locale/ia/viewer.properties 
b/third-party/pdfjs/web/locale/ia/viewer.properties
index 4ae9850e6..e93b7a297 100644
--- a/third-party/pdfjs/web/locale/ia/viewer.properties
+++ b/third-party/pdfjs/web/locale/ia/viewer.properties
@@ -48,16 +48,12 @@ bookmark_label=Vista actual
 tools.title=Instrumentos
 tools_label=Instrumentos
 first_page.title=Ir al prime pagina
-first_page.label=Ir al prime pagina
 first_page_label=Ir al prime pagina
 last_page.title=Ir al prime pagina
-last_page.label=Ir al prime pagina
 last_page_label=Ir al prime pagina
 page_rotate_cw.title=Rotar in senso horari
-page_rotate_cw.label=Rotar in senso horari
 page_rotate_cw_label=Rotar in senso horari
 page_rotate_ccw.title=Rotar in senso antihorari
-page_rotate_ccw.label=Rotar in senso antihorari
 page_rotate_ccw_label=Rotar in senso antihorari
 
 cursor_text_select_tool.title=Activar le instrumento de selection de texto
@@ -137,7 +133,6 @@ print_progress_close=Cancellar
 # (the _label strings are alt text for the buttons, the .title strings are
 # tooltips)
 toggle_sidebar.title=Monstrar/celar le barra lateral
-toggle_sidebar_notification.title=Monstrar/celar le barra lateral (le documento contine 
structura/attachamentos)
 toggle_sidebar_notification2.title=Monstrar/celar le barra lateral (le documento contine 
structura/attachamentos/stratos)
 toggle_sidebar_label=Monstrar/celar le barra lateral
 document_outline.title=Monstrar le schema del documento (clic duple pro expander/contraher tote le elementos)
@@ -153,9 +148,6 @@ current_outline_item_label=Elemento de structura actual
 findbar.title=Cercar in le documento
 findbar_label=Cercar
 
-# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
-page_canvas=Pagina {{page}}
-
 additional_layers=Altere stratos
 # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number.
 page_landmark=Pagina {{page}}
@@ -230,9 +222,6 @@ page_scale_actual=Dimension actual
 # numerical scale value.
 page_scale_percent={{scale}}%
 
-# Loading indicator messages
-loading_error_indicator=Error
-
 # Loading indicator messages
 loading=Cargante…
 loading_error=Un error occurreva durante que on cargava le file PDF.
diff --git a/third-party/pdfjs/web/locale/id/viewer.properties 
b/third-party/pdfjs/web/locale/id/viewer.properties
index 2bdc8d566..ad7d04da9 100644
--- a/third-party/pdfjs/web/locale/id/viewer.properties
+++ b/third-party/pdfjs/web/locale/id/viewer.properties
@@ -48,16 +48,12 @@ bookmark_label=Tampilan Sekarang
 tools.title=Alat
 tools_label=Alat
 first_page.title=Buka Halaman Pertama
-first_page.label=Ke Halaman Pertama
 first_page_label=Buka Halaman Pertama
 last_page.title=Buka Halaman Terakhir
-last_page.label=Ke Halaman Terakhir
 last_page_label=Buka Halaman Terakhir
 page_rotate_cw.title=Putar Searah Jarum Jam
-page_rotate_cw.label=Putar Searah Jarum Jam
 page_rotate_cw_label=Putar Searah Jarum Jam
 page_rotate_ccw.title=Putar Berlawanan Arah Jarum Jam
-page_rotate_ccw.label=Putar Berlawanan Arah Jarum Jam
 page_rotate_ccw_label=Putar Berlawanan Arah Jarum Jam
 
 cursor_text_select_tool.title=Aktifkan Alat Seleksi Teks
@@ -137,7 +133,6 @@ print_progress_close=Batalkan
 # (the _label strings are alt text for the buttons, the .title strings are
 # tooltips)
 toggle_sidebar.title=Aktif/Nonaktifkan Bilah Samping
-toggle_sidebar_notification.title=Aktif/Nonaktifkan Bilah Samping (dokumen berisi kerangka/lampiran)
 toggle_sidebar_notification2.title=Aktif/Nonaktifkan Bilah Samping (dokumen berisi kerangka/lampiran/lapisan)
 toggle_sidebar_label=Aktif/Nonaktifkan Bilah Samping
 document_outline.title=Tampilkan Kerangka Dokumen (klik ganda untuk membentangkan/menciutkan semua item)
@@ -153,9 +148,6 @@ current_outline_item_label=Butir Ikhtisar Saat Ini
 findbar.title=Temukan di Dokumen
 findbar_label=Temukan
 
-# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
-page_canvas=Laman {{page}}
-
 additional_layers=Lapisan Tambahan
 # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number.
 page_landmark=Halaman {{page}}
@@ -230,9 +222,6 @@ page_scale_actual=Ukuran Asli
 # numerical scale value.
 page_scale_percent={{scale}}%
 
-# Loading indicator messages
-loading_error_indicator=Galat
-
 # Loading indicator messages
 loading=Memuat…
 loading_error=Galat terjadi saat memuat PDF.
diff --git a/third-party/pdfjs/web/locale/is/viewer.properties 
b/third-party/pdfjs/web/locale/is/viewer.properties
index 5fb4b0196..fdff9f814 100644
--- a/third-party/pdfjs/web/locale/is/viewer.properties
+++ b/third-party/pdfjs/web/locale/is/viewer.properties
@@ -48,16 +48,12 @@ bookmark_label=Núverandi sýn
 tools.title=Verkfæri
 tools_label=Verkfæri
 first_page.title=Fara á fyrstu síðu
-first_page.label=Fara á fyrstu síðu
 first_page_label=Fara á fyrstu síðu
 last_page.title=Fara á síðustu síðu
-last_page.label=Fara á síðustu síðu
 last_page_label=Fara á síðustu síðu
 page_rotate_cw.title=Snúa réttsælis
-page_rotate_cw.label=Snúa réttsælis
 page_rotate_cw_label=Snúa réttsælis
 page_rotate_ccw.title=Snúa rangsælis
-page_rotate_ccw.label=Snúa rangsælis
 page_rotate_ccw_label=Snúa rangsælis
 
 cursor_text_select_tool.title=Virkja textavalsáhald
@@ -134,7 +130,6 @@ print_progress_close=Hætta við
 # (the _label strings are alt text for the buttons, the .title strings are
 # tooltips)
 toggle_sidebar.title=Víxla hliðslá
-toggle_sidebar_notification.title=Víxla hliðarslá (skjal inniheldur yfirlit/viðhengi)
 toggle_sidebar_label=Víxla hliðslá
 document_outline.title=Sýna yfirlit skjals (tvísmelltu til að opna/loka öllum hlutum)
 document_outline_label=Efnisskipan skjals
@@ -216,9 +211,6 @@ page_scale_actual=Raunstærð
 # numerical scale value.
 page_scale_percent={{scale}}%
 
-# Loading indicator messages
-loading_error_indicator=Villa
-
 loading_error=Villa kom upp við að hlaða inn PDF.
 invalid_file_error=Ógild eða skemmd PDF skrá.
 missing_file_error=Vantar PDF skrá.
diff --git a/third-party/pdfjs/web/locale/it/viewer.properties 
b/third-party/pdfjs/web/locale/it/viewer.properties
index 325f697c9..0a98f01da 100644
--- a/third-party/pdfjs/web/locale/it/viewer.properties
+++ b/third-party/pdfjs/web/locale/it/viewer.properties
@@ -44,16 +44,12 @@ bookmark_label = Visualizzazione corrente
 tools.title = Strumenti
 tools_label = Strumenti
 first_page.title = Vai alla prima pagina
-first_page.label = Vai alla prima pagina
 first_page_label = Vai alla prima pagina
 last_page.title = Vai all’ultima pagina
-last_page.label = Vai all’ultima pagina
 last_page_label = Vai all’ultima pagina
 page_rotate_cw.title = Ruota in senso orario
-page_rotate_cw.label = Ruota in senso orario
 page_rotate_cw_label = Ruota in senso orario
 page_rotate_ccw.title = Ruota in senso antiorario
-page_rotate_ccw.label = Ruota in senso antiorario
 page_rotate_ccw_label = Ruota in senso antiorario
 
 cursor_text_select_tool.title = Attiva strumento di selezione testo
@@ -113,7 +109,6 @@ print_progress_percent = {{progress}}%
 print_progress_close = Annulla
 
 toggle_sidebar.title = Attiva/disattiva barra laterale
-toggle_sidebar_notification.title = Attiva/disattiva barra laterale (il documento contiene 
struttura/allegati)
 toggle_sidebar_notification2.title = Attiva/disattiva barra laterale (il documento contiene 
struttura/allegati/livelli)
 toggle_sidebar_label = Attiva/disattiva barra laterale
 document_outline.title = Visualizza la struttura del documento (doppio clic per visualizzare/comprimere 
tutti gli elementi)
@@ -129,8 +124,6 @@ current_outline_item_label = Elemento struttura corrente
 findbar.title = Trova nel documento
 findbar_label = Trova
 
-page_canvas = Pagina {{page}}
-
 additional_layers = Livelli aggiuntivi
 page_landmark = Pagina {{page}}
 thumb_page_title = Pagina {{page}}
@@ -178,8 +171,6 @@ page_scale_auto = Zoom automatico
 page_scale_actual = Dimensioni effettive
 page_scale_percent = {{scale}}%
 
-loading_error_indicator = Errore
-
 loading = Caricamento in corso…
 loading_error = Si è verificato un errore durante il caricamento del PDF.
 invalid_file_error = File PDF non valido o danneggiato.
diff --git a/third-party/pdfjs/web/locale/ja/viewer.properties 
b/third-party/pdfjs/web/locale/ja/viewer.properties
index ac51fa7e7..6869fc761 100644
--- a/third-party/pdfjs/web/locale/ja/viewer.properties
+++ b/third-party/pdfjs/web/locale/ja/viewer.properties
@@ -257,6 +257,3 @@ password_cancel=キャンセル
 printing_not_supported=警告: このブラウザーでは印刷が完全にサポートされていません。
 printing_not_ready=警告: PDF を印刷するための読み込みが終了していません。
 web_fonts_disabled=ウェブフォントが無効になっています: 埋め込まれた PDF のフォントを使用できません。
-# LOCALIZATION NOTE (unsupported_feature_signatures): Should contain the same
-# exact string as in the `chrome.properties` file.
-unsupported_feature_signatures=この PDF ドキュメントは、デジタル署名が含まれています。署名の検証はサポートされていません。
diff --git a/third-party/pdfjs/web/locale/ka/viewer.properties 
b/third-party/pdfjs/web/locale/ka/viewer.properties
index d6c32e8c2..4d5b92924 100644
--- a/third-party/pdfjs/web/locale/ka/viewer.properties
+++ b/third-party/pdfjs/web/locale/ka/viewer.properties
@@ -48,16 +48,12 @@ bookmark_label=მიმდინარე ხედი
 tools.title=ხელსაწყოები
 tools_label=ხელსაწყოები
 first_page.title=პირველ გვერდზე გადასვლა
-first_page.label=პირველ გვერდზე გადასვლა
 first_page_label=პირველ გვერდზე გადასვლა
 last_page.title=ბოლო გვერდზე გადასვლა
-last_page.label=ბოლო გვერდზე გადასვლა
 last_page_label=ბოლო გვერდზე გადასვლა
 page_rotate_cw.title=საათის ისრის მიმართულებით შებრუნება
-page_rotate_cw.label=მარჯვნივ გადაბრუნება
 page_rotate_cw_label=მარჯვნივ გადაბრუნება
 page_rotate_ccw.title=საათის ისრის საპირისპიროდ შებრუნება
-page_rotate_ccw.label=მარცხნივ გადაბრუნება
 page_rotate_ccw_label=მარცხნივ გადაბრუნება
 
 cursor_text_select_tool.title=მოსანიშნი მაჩვენებლის გამოყენება
@@ -137,7 +133,6 @@ print_progress_close=გაუქმება
 # (the _label strings are alt text for the buttons, the .title strings are
 # tooltips)
 toggle_sidebar.title=გვერდითა ზოლის გამოჩენა/დამალვა
-toggle_sidebar_notification.title=გვერდითა ზოლის გამოჩენა (შეიცავს სარჩევს/დანართს)
 toggle_sidebar_notification2.title=გვერდითი ზოლის გამოჩენა (შეიცავს სარჩევს/დანართს/ფენებს)
 toggle_sidebar_label=გვერდითა ზოლის გამოჩენა/დამალვა
 document_outline.title=დოკუმენტის სარჩევის ჩვენება (ორმაგი წკაპით თითოეულის ჩამოშლა/აკეცვა)
@@ -153,9 +148,6 @@ current_outline_item_label=მიმდინარე გვერდი სა
 findbar.title=პოვნა დოკუმენტში
 findbar_label=ძიება
 
-# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
-page_canvas=გვერდი {{page}}
-
 additional_layers=დამატებითი ფენები
 # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number.
 page_landmark=გვერდი {{page}}
@@ -230,9 +222,6 @@ page_scale_actual=საწყისი ზომა
 # numerical scale value.
 page_scale_percent={{scale}}%
 
-# Loading indicator messages
-loading_error_indicator=შეცდომა
-
 # Loading indicator messages
 loading=ჩატვირთვა…
 loading_error=შეცდომა, PDF-ფაილის ჩატვირთვისას.
diff --git a/third-party/pdfjs/web/locale/kab/viewer.properties 
b/third-party/pdfjs/web/locale/kab/viewer.properties
index a145dae07..bb249d0f9 100644
--- a/third-party/pdfjs/web/locale/kab/viewer.properties
+++ b/third-party/pdfjs/web/locale/kab/viewer.properties
@@ -48,16 +48,12 @@ bookmark_label=Askan amiran
 tools.title=Ifecka
 tools_label=Ifecka
 first_page.title=Ddu ɣer usebter amezwaru
-first_page.label=Ddu ɣer usebter amezwaru
 first_page_label=Ddu ɣer usebter amezwaru
 last_page.title=Ddu ɣer usebter aneggaru
-last_page.label=Ddu ɣer usebter aneggaru
 last_page_label=Ddu ɣer usebter aneggaru
 page_rotate_cw.title=Tuzzya tusrigt
-page_rotate_cw.label=Tuzzya tusrigt
 page_rotate_cw_label=Tuzzya tusrigt
 page_rotate_ccw.title=Tuzzya amgal-usrig
-page_rotate_ccw.label=Tuzzya amgal-usrig
 page_rotate_ccw_label=Tuzzya amgal-usrig
 
 cursor_text_select_tool.title=Rmed afecku n tefrant n uḍris
@@ -137,7 +133,6 @@ print_progress_close=Sefsex
 # (the _label strings are alt text for the buttons, the .title strings are
 # tooltips)
 toggle_sidebar.title=Sken/Fer agalis adisan
-toggle_sidebar_notification.title=Ffer/Sken agalis adisan (isemli yegber aɣawas/imeddayen)
 toggle_sidebar_notification2.title=Ffer/Sekn agalis adisan (isemli yegber aɣawas/ticeqqufin yeddan/tissiwin)
 toggle_sidebar_label=Sken/Fer agalis adisan
 document_outline.title=Sken isemli (Senned snat tikal i wesemɣer/Afneẓ n iferdisen meṛṛa)
@@ -153,9 +148,6 @@ current_outline_item_label=Aferdis n uɣawas amiran
 findbar.title=Nadi deg isemli
 findbar_label=Nadi
 
-# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
-page_canvas=Asebter {{page}}
-
 additional_layers=Tissiwin-nniḍen
 # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number.
 page_landmark=Asebter {{page}}
@@ -230,9 +222,6 @@ page_scale_actual=Teɣzi tilawt
 # numerical scale value.
 page_scale_percent={{scale}}%
 
-# Loading indicator messages
-loading_error_indicator=Error
-
 # Loading indicator messages
 loading=Asali…
 loading_error=Teḍra-d tuccḍa deg alluy n PDF:
diff --git a/third-party/pdfjs/web/locale/kk/viewer.properties 
b/third-party/pdfjs/web/locale/kk/viewer.properties
index de41d9d4f..a29c5d85b 100644
--- a/third-party/pdfjs/web/locale/kk/viewer.properties
+++ b/third-party/pdfjs/web/locale/kk/viewer.properties
@@ -48,16 +48,12 @@ bookmark_label=Ағымдағы көрініс
 tools.title=Құралдар
 tools_label=Құралдар
 first_page.title=Алғашқы параққа өту
-first_page.label=Алғашқы параққа өту
 first_page_label=Алғашқы параққа өту
 last_page.title=Соңғы параққа өту
-last_page.label=Соңғы параққа өту
 last_page_label=Соңғы параққа өту
 page_rotate_cw.title=Сағат тілі бағытымен айналдыру
-page_rotate_cw.label=Сағат тілі бағытымен бұру
 page_rotate_cw_label=Сағат тілі бағытымен бұру
 page_rotate_ccw.title=Сағат тілі бағытына қарсы бұру
-page_rotate_ccw.label=Сағат тілі бағытына қарсы бұру
 page_rotate_ccw_label=Сағат тілі бағытына қарсы бұру
 
 cursor_text_select_tool.title=Мәтінді таңдау құралын іске қосу
@@ -137,7 +133,6 @@ print_progress_close=Бас тарту
 # (the _label strings are alt text for the buttons, the .title strings are
 # tooltips)
 toggle_sidebar.title=Бүйір панелін көрсету/жасыру
-toggle_sidebar_notification.title=Бүйір панелін көрсету/жасыру (құжатта құрылымы/салынымдар бар)
 toggle_sidebar_notification2.title=Бүйір панелін көрсету/жасыру (құжатта құрылымы/салынымдар/қабаттар бар)
 toggle_sidebar_label=Бүйір панелін көрсету/жасыру
 document_outline.title=Құжат құрылымын көрсету (барлық нәрселерді жазық қылу/жинау үшін қос шерту керек)
@@ -153,9 +148,6 @@ current_outline_item_label=Құрылымның ағымдағы элемент
 findbar.title=Құжаттан табу
 findbar_label=Табу
 
-# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
-page_canvas=Бет {{page}}
-
 additional_layers=Қосымша қабаттар
 # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number.
 page_landmark=Бет {{page}}
@@ -230,9 +222,6 @@ page_scale_actual=Нақты өлшемі
 # numerical scale value.
 page_scale_percent={{scale}}%
 
-# Loading indicator messages
-loading_error_indicator=Қате
-
 # Loading indicator messages
 loading=Жүктелуде…
 loading_error=PDF жүктеу кезінде қате кетті.
diff --git a/third-party/pdfjs/web/locale/km/viewer.properties 
b/third-party/pdfjs/web/locale/km/viewer.properties
index cce6a81ae..3dcac78d7 100644
--- a/third-party/pdfjs/web/locale/km/viewer.properties
+++ b/third-party/pdfjs/web/locale/km/viewer.properties
@@ -48,16 +48,12 @@ bookmark_label=ទិដ្ឋភាព​បច្ចុប្បន្ន
 tools.title=ឧបករណ៍
 tools_label=ឧបករណ៍
 first_page.title=ទៅកាន់​ទំព័រ​ដំបូង​
-first_page.label=ទៅកាន់​ទំព័រ​ដំបូង​
 first_page_label=ទៅកាន់​ទំព័រ​ដំបូង​
 last_page.title=ទៅកាន់​ទំព័រ​ចុងក្រោយ​
-last_page.label=ទៅកាន់​ទំព័រ​ចុងក្រោយ​
 last_page_label=ទៅកាន់​ទំព័រ​ចុងក្រោយ
 page_rotate_cw.title=បង្វិល​ស្រប​ទ្រនិច​នាឡិកា
-page_rotate_cw.label=បង្វិល​ស្រប​ទ្រនិច​នាឡិកា
 page_rotate_cw_label=បង្វិល​ស្រប​ទ្រនិច​នាឡិកា
 page_rotate_ccw.title=បង្វិល​ច្រាស​ទ្រនិច​នាឡិកា​​
-page_rotate_ccw.label=បង្វិល​ច្រាស​ទ្រនិច​នាឡិកា​​
 page_rotate_ccw_label=បង្វិល​ច្រាស​ទ្រនិច​នាឡិកា​​
 
 cursor_text_select_tool.title=បើក​ឧបករណ៍​ជ្រើស​អត្ថបទ
@@ -122,7 +118,6 @@ print_progress_close=បោះបង់
 # (the _label strings are alt text for the buttons, the .title strings are
 # tooltips)
 toggle_sidebar.title=បិទ/បើក​គ្រាប់​រំកិល
-toggle_sidebar_notification.title=បិទ/បើក​របារ​ចំហៀង (ឯកសារ​មាន​មាតិកា​នៅ​ក្រៅ/attachments)
 toggle_sidebar_label=បិទ/បើក​គ្រាប់​រំកិល
 document_outline.title=បង្ហាញ​គ្រោង​ឯកសារ (ចុច​ទ្វេ​ដង​ដើម្បី​ពង្រីក/បង្រួម​ធាតុ​ទាំងអស់)
 document_outline_label=គ្រោង​ឯកសារ
@@ -191,9 +186,6 @@ page_scale_actual=ទំហំ​ជាក់ស្ដែង
 # numerical scale value.
 page_scale_percent={{scale}}%
 
-# Loading indicator messages
-loading_error_indicator=កំហុស
-
 loading_error=មាន​កំហុស​បាន​កើតឡើង​ពេល​កំពុង​ផ្ទុក PDF ។
 invalid_file_error=ឯកសារ PDF ខូច ឬ​មិន​ត្រឹមត្រូវ ។
 missing_file_error=បាត់​ឯកសារ PDF
diff --git a/third-party/pdfjs/web/locale/kn/viewer.properties 
b/third-party/pdfjs/web/locale/kn/viewer.properties
index 19f23b5b8..79c043753 100644
--- a/third-party/pdfjs/web/locale/kn/viewer.properties
+++ b/third-party/pdfjs/web/locale/kn/viewer.properties
@@ -48,16 +48,12 @@ bookmark_label=ಪ್ರಸಕ್ತ ನೋಟ
 tools.title=ಉಪಕರಣಗಳು
 tools_label=ಉಪಕರಣಗಳು
 first_page.title=ಮೊದಲ ಪುಟಕ್ಕೆ ತೆರಳು
-first_page.label=ಮೊದಲ ಪುಟಕ್ಕೆ ತೆರಳು
 first_page_label=ಮೊದಲ ಪುಟಕ್ಕೆ ತೆರಳು
 last_page.title=ಕೊನೆಯ ಪುಟಕ್ಕೆ ತೆರಳು
-last_page.label=ಕೊನೆಯ ಪುಟಕ್ಕೆ ತೆರಳು
 last_page_label=ಕೊನೆಯ ಪುಟಕ್ಕೆ ತೆರಳು
 page_rotate_cw.title=ಪ್ರದಕ್ಷಿಣೆಯಲ್ಲಿ ತಿರುಗಿಸು
-page_rotate_cw.label=ಪ್ರದಕ್ಷಿಣೆಯಲ್ಲಿ ತಿರುಗಿಸು
 page_rotate_cw_label=ಪ್ರದಕ್ಷಿಣೆಯಲ್ಲಿ ತಿರುಗಿಸು
 page_rotate_ccw.title=ಅಪ್ರದಕ್ಷಿಣೆಯಲ್ಲಿ ತಿರುಗಿಸು
-page_rotate_ccw.label=ಅಪ್ರದಕ್ಷಿಣೆಯಲ್ಲಿ ತಿರುಗಿಸು
 page_rotate_ccw_label=ಅಪ್ರದಕ್ಷಿಣೆಯಲ್ಲಿ ತಿರುಗಿಸು
 
 cursor_text_select_tool.title=ಪಠ್ಯ ಆಯ್ಕೆ ಉಪಕರಣವನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಿ
@@ -170,9 +166,6 @@ page_scale_actual=ನಿಜವಾದ ಗಾತ್ರ
 # numerical scale value.
 page_scale_percent={{scale}}%
 
-# Loading indicator messages
-loading_error_indicator=ದೋಷ
-
 loading_error=PDF ಅನ್ನು ಲೋಡ್ ಮಾಡುವಾಗ ಒಂದು ದೋಷ ಎದುರಾಗಿದೆ.
 invalid_file_error=ಅಮಾನ್ಯವಾದ ಅಥವ ಹಾಳಾದ PDF ಕಡತ.
 missing_file_error=PDF ಕಡತ ಇಲ್ಲ.
diff --git a/third-party/pdfjs/web/locale/ko/viewer.properties 
b/third-party/pdfjs/web/locale/ko/viewer.properties
index 33172673a..71e6bcd4c 100644
--- a/third-party/pdfjs/web/locale/ko/viewer.properties
+++ b/third-party/pdfjs/web/locale/ko/viewer.properties
@@ -48,16 +48,12 @@ bookmark_label=현재 보기
 tools.title=도구
 tools_label=도구
 first_page.title=첫 페이지로 이동
-first_page.label=첫 페이지로 이동
 first_page_label=첫 페이지로 이동
 last_page.title=마지막 페이지로 이동
-last_page.label=마지막 페이지로 이동
 last_page_label=마지막 페이지로 이동
 page_rotate_cw.title=시계방향으로 회전
-page_rotate_cw.label=시계방향으로 회전
 page_rotate_cw_label=시계방향으로 회전
 page_rotate_ccw.title=시계 반대방향으로 회전
-page_rotate_ccw.label=시계 반대방향으로 회전
 page_rotate_ccw_label=시계 반대방향으로 회전
 
 cursor_text_select_tool.title=텍스트 선택 도구 활성화
@@ -137,7 +133,6 @@ print_progress_close=취소
 # (the _label strings are alt text for the buttons, the .title strings are
 # tooltips)
 toggle_sidebar.title=탐색창 표시/숨기기
-toggle_sidebar_notification.title=탐색창 표시/숨기기 (문서에 아웃라인/첨부파일 포함됨)
 toggle_sidebar_notification2.title=탐색창 표시/숨기기 (문서에 아웃라인/첨부파일/레이어 포함됨)
 toggle_sidebar_label=탐색창 표시/숨기기
 document_outline.title=문서 아웃라인 보기 (더블 클릭해서 모든 항목 펼치기/접기)
@@ -153,9 +148,6 @@ current_outline_item_label=현재 아웃라인 항목
 findbar.title=검색
 findbar_label=검색
 
-# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
-page_canvas={{page}} 페이지
-
 additional_layers=추가 레이어
 # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number.
 page_landmark={{page}} 페이지
@@ -203,7 +195,7 @@ find_match_count_limit[other]={{limit}} 이상 일치
 find_not_found=검색 결과 없음
 
 # Error panel labels
-error_more_info=정보 더 보기
+error_more_info=자세한 정보
 error_less_info=정보 간단히 보기
 error_close=닫기
 # LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be
@@ -230,9 +222,6 @@ page_scale_actual=실제 크기
 # numerical scale value.
 page_scale_percent={{scale}}%
 
-# Loading indicator messages
-loading_error_indicator=오류
-
 # Loading indicator messages
 loading=로드 중…
 loading_error=PDF를 로드하는 동안 오류가 발생했습니다.
diff --git a/third-party/pdfjs/web/locale/lij/viewer.properties 
b/third-party/pdfjs/web/locale/lij/viewer.properties
index c1d8757a8..b89981c28 100644
--- a/third-party/pdfjs/web/locale/lij/viewer.properties
+++ b/third-party/pdfjs/web/locale/lij/viewer.properties
@@ -48,16 +48,12 @@ bookmark_label=Vixon corente
 tools.title=Atressi
 tools_label=Atressi
 first_page.title=Vanni a-a primma pagina
-first_page.label=Vanni a-a primma pagina
 first_page_label=Vanni a-a primma pagina
 last_page.title=Vanni a l'urtima pagina
-last_page.label=Vanni a l'urtima pagina
 last_page_label=Vanni a l'urtima pagina
 page_rotate_cw.title=Gia into verso oraio
-page_rotate_cw.label=Gia in senso do releuio
 page_rotate_cw_label=Gia into verso oraio
 page_rotate_ccw.title=Gia into verso antioraio
-page_rotate_ccw.label=Gia in senso do releuio a-a reversa
 page_rotate_ccw_label=Gia into verso antioraio
 
 cursor_text_select_tool.title=Abilita strumento de seleçion do testo
@@ -137,7 +133,6 @@ print_progress_close=Anulla
 # (the _label strings are alt text for the buttons, the .title strings are
 # tooltips)
 toggle_sidebar.title=Ativa/dizativa bara de scianco
-toggle_sidebar_notification.title=Cangia bara de löo (o documento o contegne di alegæ)
 toggle_sidebar_label=Ativa/dizativa bara de scianco
 document_outline.title=Fanni vedde o contorno do documento (scicca doggio pe espande/ridue tutti i elementi)
 document_outline_label=Contorno do documento
@@ -219,9 +214,6 @@ page_scale_actual=Dimenscioin efetive
 # numerical scale value.
 page_scale_percent={{scale}}%
 
-# Loading indicator messages
-loading_error_indicator=Erô
-
 loading_error=S'é verificou 'n'erô itno caregamento do PDF.
 invalid_file_error=O schedaio PDF o l'é no valido ò aroinou.
 missing_file_error=O schedaio PDF o no gh'é.
diff --git a/third-party/pdfjs/web/locale/lo/viewer.properties 
b/third-party/pdfjs/web/locale/lo/viewer.properties
index d21a687fa..8b877d00a 100644
--- a/third-party/pdfjs/web/locale/lo/viewer.properties
+++ b/third-party/pdfjs/web/locale/lo/viewer.properties
@@ -48,16 +48,12 @@ bookmark_label=ມຸມມອງປະຈຸບັນ
 tools.title=ເຄື່ອງມື
 tools_label=ເຄື່ອງມື
 first_page.title=ໄປທີ່ຫນ້າທຳອິດ
-first_page.label=ໄປທີ່ຫນ້າທຳອິດ
 first_page_label=ໄປທີ່ຫນ້າທຳອິດ
 last_page.title=ໄປທີ່ຫນ້າສຸດທ້າຍ
-last_page.label=ໄປທີ່ຫນ້າສຸດທ້າຍ
 last_page_label=ໄປທີ່ຫນ້າສຸດທ້າຍ
 page_rotate_cw.title=ຫມູນຕາມເຂັມໂມງ
-page_rotate_cw.label=ຫມູນຕາມເຂັມໂມງ
 page_rotate_cw_label=ຫມູນຕາມເຂັມໂມງ
 page_rotate_ccw.title=ຫມູນທວນເຂັມໂມງ
-page_rotate_ccw.label=ຫມູນທວນເຂັມໂມງ
 page_rotate_ccw_label=ຫມູນທວນເຂັມໂມງ
 
 
@@ -98,7 +94,6 @@ print_progress_close=ຍົກເລີກ
 # (the _label strings are alt text for the buttons, the .title strings are
 # tooltips)
 toggle_sidebar.title=ເປີດ/ປິດແຖບຂ້າງ
-toggle_sidebar_notification.title=ເປີດ/ປິດແຖບຂ້າງ (ເອກະສານມີເຄົ້າຮ່າງ/ໄຟລ໌ແນບ)
 toggle_sidebar_label=ເປີດ/ປິດແຖບຂ້າງ
 document_outline_label=ເຄົ້າຮ່າງເອກະສານ
 findbar_label=ຄົ້ນຫາ
@@ -138,9 +133,6 @@ rendering_error=ມີຂໍ້ຜິດພາດເກີດຂື້ນຂະ
 # LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a
 # numerical scale value.
 
-# Loading indicator messages
-loading_error_indicator=ຂໍ້ຜິດພາດ
-
 loading_error=ມີຂໍ້ຜິດພາດເກີດຂື້ນຂະນະທີ່ກຳລັງໂຫລດ PDF.
 invalid_file_error=ໄຟລ໌ PDF ບໍ່ຖືກຕ້ອງຫລືເສຍຫາຍ.
 
diff --git a/third-party/pdfjs/web/locale/lt/viewer.properties 
b/third-party/pdfjs/web/locale/lt/viewer.properties
index 78158fd3a..5577f6d59 100644
--- a/third-party/pdfjs/web/locale/lt/viewer.properties
+++ b/third-party/pdfjs/web/locale/lt/viewer.properties
@@ -48,16 +48,12 @@ bookmark_label=Esamasis rodinys
 tools.title=Priemonės
 tools_label=Priemonės
 first_page.title=Eiti į pirmą puslapį
-first_page.label=Eiti į pirmą puslapį
 first_page_label=Eiti į pirmą puslapį
 last_page.title=Eiti į paskutinį puslapį
-last_page.label=Eiti į paskutinį puslapį
 last_page_label=Eiti į paskutinį puslapį
 page_rotate_cw.title=Pasukti pagal laikrodžio rodyklę
-page_rotate_cw.label=Pasukti pagal laikrodžio rodyklę
 page_rotate_cw_label=Pasukti pagal laikrodžio rodyklę
 page_rotate_ccw.title=Pasukti prieš laikrodžio rodyklę
-page_rotate_ccw.label=Pasukti prieš laikrodžio rodyklę
 page_rotate_ccw_label=Pasukti prieš laikrodžio rodyklę
 
 cursor_text_select_tool.title=Įjungti teksto žymėjimo įrankį
@@ -137,7 +133,6 @@ print_progress_close=Atsisakyti
 # (the _label strings are alt text for the buttons, the .title strings are
 # tooltips)
 toggle_sidebar.title=Rodyti / slėpti šoninį polangį
-toggle_sidebar_notification.title=Parankinė (dokumentas turi struktūrą / priedų)
 toggle_sidebar_notification2.title=Parankinė (dokumentas turi struktūrą / priedų / sluoksnių)
 toggle_sidebar_label=Šoninis polangis
 document_outline.title=Rodyti dokumento struktūrą (spustelėkite dukart norėdami išplėsti/suskleisti visus 
elementus)
@@ -153,9 +148,6 @@ current_outline_item_label=Dabartinis struktūros elementas
 findbar.title=Ieškoti dokumente
 findbar_label=Rasti
 
-# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
-page_canvas={{page}} puslapis
-
 additional_layers=Papildomi sluoksniai
 # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number.
 page_landmark={{page}} puslapis
@@ -230,9 +222,6 @@ page_scale_actual=Tikras dydis
 # numerical scale value.
 page_scale_percent={{scale}}%
 
-# Loading indicator messages
-loading_error_indicator=Klaida
-
 # Loading indicator messages
 loading=Įkeliama…
 loading_error=Įkeliant PDF failą įvyko klaida.
diff --git a/third-party/pdfjs/web/locale/ltg/viewer.properties 
b/third-party/pdfjs/web/locale/ltg/viewer.properties
index 277aab56c..b0e202d2e 100644
--- a/third-party/pdfjs/web/locale/ltg/viewer.properties
+++ b/third-party/pdfjs/web/locale/ltg/viewer.properties
@@ -48,16 +48,12 @@ bookmark_label=Pošreizejais skots
 tools.title=Reiki
 tools_label=Reiki
 first_page.title=Īt iz pyrmū lopu
-first_page.label=Īt iz pyrmū lopu
 first_page_label=Īt iz pyrmū lopu
 last_page.title=Īt iz piedejū lopu
-last_page.label=Īt iz piedejū lopu
 last_page_label=Īt iz piedejū lopu
 page_rotate_cw.title=Pagrīzt pa pulksteni
-page_rotate_cw.label=Pagrīzt pa pulksteni
 page_rotate_cw_label=Pagrīzt pa pulksteni
 page_rotate_ccw.title=Pagrīzt pret pulksteni
-page_rotate_ccw.label=Pagrīzt pret pulksteni
 page_rotate_ccw_label=Pagrīzt pret pulksteni
 
 cursor_text_select_tool.title=Aktivizēt teksta izvieles reiku
@@ -137,7 +133,6 @@ print_progress_close=Atceļt
 # (the _label strings are alt text for the buttons, the .title strings are
 # tooltips)
 toggle_sidebar.title=Puorslēgt suonu jūslu
-toggle_sidebar_notification.title=Toggle Sidebar (document contains outline/attachments)
 toggle_sidebar_label=Puorslēgt suonu jūslu
 document_outline.title=Show Document Outline (double-click to expand/collapse all items)
 document_outline_label=Dokumenta saturs
@@ -197,9 +192,6 @@ page_scale_actual=Patīsais izmārs
 # numerical scale value.
 page_scale_percent={{scale}}%
 
-# Loading indicator messages
-loading_error_indicator=Klaida
-
 loading_error=Īluodejūt PDF nūtyka klaida.
 invalid_file_error=Nadereigs voi būjuots PDF fails.
 missing_file_error=PDF fails nav atrosts.
diff --git a/third-party/pdfjs/web/locale/lv/viewer.properties 
b/third-party/pdfjs/web/locale/lv/viewer.properties
index d6f89984d..b9b5c0336 100644
--- a/third-party/pdfjs/web/locale/lv/viewer.properties
+++ b/third-party/pdfjs/web/locale/lv/viewer.properties
@@ -48,16 +48,12 @@ bookmark_label=Pašreizējais skats
 tools.title=Rīki
 tools_label=Rīki
 first_page.title=Iet uz pirmo lapu
-first_page.label=Iet uz pirmo lapu
 first_page_label=Iet uz pirmo lapu
 last_page.title=Iet uz pēdējo lapu
-last_page.label=Iet uz pēdējo lapu
 last_page_label=Iet uz pēdējo lapu
 page_rotate_cw.title=Pagriezt pa pulksteni
-page_rotate_cw.label=Pagriezt pa pulksteni
 page_rotate_cw_label=Pagriezt pa pulksteni
 page_rotate_ccw.title=Pagriezt pret pulksteni
-page_rotate_ccw.label=Pagriezt pret pulksteni
 page_rotate_ccw_label=Pagriezt pret pulksteni
 
 cursor_text_select_tool.title=Aktivizēt teksta izvēles rīku
@@ -137,7 +133,6 @@ print_progress_close=Atcelt
 # (the _label strings are alt text for the buttons, the .title strings are
 # tooltips)
 toggle_sidebar.title=Pārslēgt sānu joslu
-toggle_sidebar_notification.title=Pārslēgt sānu joslu (dokumenta saturu un pielikumus)
 toggle_sidebar_label=Pārslēgt sānu joslu
 document_outline.title=Rādīt dokumenta struktūru (veiciet dubultklikšķi lai izvērstu/sakļautu visus vienumus)
 document_outline_label=Dokumenta saturs
@@ -219,9 +214,6 @@ page_scale_actual=Patiesais izmērs
 # numerical scale value.
 page_scale_percent={{scale}}%
 
-# Loading indicator messages
-loading_error_indicator=Kļūda
-
 loading_error=Ielādējot PDF notika kļūda.
 invalid_file_error=Nederīgs vai bojāts PDF fails.
 missing_file_error=PDF fails nav atrasts.
diff --git a/third-party/pdfjs/web/locale/mk/viewer.properties 
b/third-party/pdfjs/web/locale/mk/viewer.properties
index b6bb2f11b..24ff730b6 100644
--- a/third-party/pdfjs/web/locale/mk/viewer.properties
+++ b/third-party/pdfjs/web/locale/mk/viewer.properties
@@ -43,10 +43,6 @@ bookmark_label=Овој преглед
 
 # Secondary toolbar and context menu
 tools.title=Алатки
-first_page.label=Оди до првата страница
-last_page.label=Оди до последната страница
-page_rotate_cw.label=Ротирај по стрелките на часовникот
-page_rotate_ccw.label=Ротирај спротивно од стрелките на часовникот
 
 
 
@@ -127,9 +123,6 @@ page_scale_actual=Вистинска големина
 # LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a
 # numerical scale value.
 
-# Loading indicator messages
-loading_error_indicator=Грешка
-
 loading_error=Настана грешка при вчитувањето на PDF-от.
 invalid_file_error=Невалидна или корумпирана PDF датотека.
 missing_file_error=Недостасува PDF документ.
diff --git a/third-party/pdfjs/web/locale/mr/viewer.properties 
b/third-party/pdfjs/web/locale/mr/viewer.properties
index 0b2bd93bc..697c2a3f3 100644
--- a/third-party/pdfjs/web/locale/mr/viewer.properties
+++ b/third-party/pdfjs/web/locale/mr/viewer.properties
@@ -48,16 +48,12 @@ bookmark_label=सध्याचे अवलोकन
 tools.title=साधने
 tools_label=साधने
 first_page.title=पहिल्या पृष्ठावर जा
-first_page.label=पहिल्या पृष्ठावर जा
 first_page_label=पहिल्या पृष्ठावर जा
 last_page.title=शेवटच्या पृष्ठावर जा
-last_page.label=शेवटच्या पृष्ठावर जा
 last_page_label=शेवटच्या पृष्ठावर जा
 page_rotate_cw.title=घड्याळाच्या काट्याच्या दिशेने फिरवा
-page_rotate_cw.label=घड्याळाच्या काट्याच्या दिशेने फिरवा
 page_rotate_cw_label=घड्याळाच्या काट्याच्या दिशेने फिरवा
 page_rotate_ccw.title=घड्याळाच्या काट्याच्या उलट दिशेने फिरवा
-page_rotate_ccw.label=घड्याळाच्या काट्याच्या उलट दिशेने फिरवा
 page_rotate_ccw_label=घड्याळाच्या काट्याच्या उलट दिशेने फिरवा
 
 cursor_text_select_tool.title=मजकूर निवड साधन कार्यान्वयीत करा
@@ -129,7 +125,6 @@ print_progress_close=रद्द करा
 # (the _label strings are alt text for the buttons, the .title strings are
 # tooltips)
 toggle_sidebar.title=बाजूचीपट्टी टॉगल करा
-toggle_sidebar_notification.title=बाजूची पट्टी टॉगल करा (दस्तऐवजामध्ये रुपरेषा/जोडण्या आहेत)
 toggle_sidebar_label=बाजूचीपट्टी टॉगल करा
 document_outline.title=दस्तऐवज बाह्यरेखा दर्शवा (विस्तृत करण्यासाठी दोनवेळा क्लिक करा /सर्व घटक दाखवा)
 document_outline_label=दस्तऐवज रूपरेषा
@@ -211,9 +206,6 @@ page_scale_actual=प्रत्यक्ष आकार
 # numerical scale value.
 page_scale_percent={{scale}}%
 
-# Loading indicator messages
-loading_error_indicator=त्रुटी
-
 loading_error=PDF लोड करतेवेळी त्रुटी आढळली.
 invalid_file_error=अवैध किंवा दोषीत PDF फाइल.
 missing_file_error=न आढळणारी PDF फाइल.
diff --git a/third-party/pdfjs/web/locale/ms/viewer.properties 
b/third-party/pdfjs/web/locale/ms/viewer.properties
index 6ca482beb..a6d4ce8b6 100644
--- a/third-party/pdfjs/web/locale/ms/viewer.properties
+++ b/third-party/pdfjs/web/locale/ms/viewer.properties
@@ -48,16 +48,12 @@ bookmark_label=Paparan Semasa
 tools.title=Alatan
 tools_label=Alatan
 first_page.title=Pergi ke Halaman Pertama
-first_page.label=Pergi ke Halaman Pertama
 first_page_label=Pergi ke Halaman Pertama
 last_page.title=Pergi ke Halaman Terakhir
-last_page.label=Pergi ke Halaman Terakhir
 last_page_label=Pergi ke Halaman Terakhir
 page_rotate_cw.title=Berputar ikut arah Jam
-page_rotate_cw.label=Berputar ikut arah Jam
 page_rotate_cw_label=Berputar ikut arah Jam
 page_rotate_ccw.title=Pusing berlawan arah jam
-page_rotate_ccw.label=Pusing berlawan arah jam
 page_rotate_ccw_label=Pusing berlawan arah jam
 
 cursor_text_select_tool.title=Dayakan Alatan Pilihan Teks
@@ -137,7 +133,6 @@ print_progress_close=Batal
 # (the _label strings are alt text for the buttons, the .title strings are
 # tooltips)
 toggle_sidebar.title=Togol Bar Sisi
-toggle_sidebar_notification.title=Togol Sidebar (dokumen mengandungi rangka/attachments)
 toggle_sidebar_label=Togol Bar Sisi
 document_outline.title=Papar Rangka Dokumen (klik-dua-kali untuk kembangkan/kolaps semua item)
 document_outline_label=Rangka Dokumen
@@ -219,9 +214,6 @@ page_scale_actual=Saiz Sebenar
 # numerical scale value.
 page_scale_percent={{scale}}%
 
-# Loading indicator messages
-loading_error_indicator=Ralat
-
 loading_error=Masalah berlaku semasa menuatkan sebuah PDF.
 invalid_file_error=Tidak sah atau fail PDF rosak.
 missing_file_error=Fail PDF Hilang.
diff --git a/third-party/pdfjs/web/locale/my/viewer.properties 
b/third-party/pdfjs/web/locale/my/viewer.properties
index 7fc26092f..39944cdde 100644
--- a/third-party/pdfjs/web/locale/my/viewer.properties
+++ b/third-party/pdfjs/web/locale/my/viewer.properties
@@ -48,16 +48,12 @@ bookmark_label=လက်ရှိ မြင်ကွင်း
 tools.title=ကိရိယာများ
 tools_label=ကိရိယာများ
 first_page.title=ပထမ စာမျက်နှာသို့
-first_page.label=ပထမ စာမျက်နှာသို့
 first_page_label=ပထမ စာမျက်နှာသို့
 last_page.title=နောက်ဆုံး စာမျက်နှာသို့
-last_page.label=နောက်ဆုံး စာမျက်နှာသို့
 last_page_label=နောက်ဆုံး စာမျက်နှာသို့
 page_rotate_cw.title=နာရီလက်တံ အတိုင်း
-page_rotate_cw.label=နာရီလက်တံ အတိုင်း
 page_rotate_cw_label=နာရီလက်တံ အတိုင်း
 page_rotate_ccw.title=နာရီလက်တံ ပြောင်းပြန်
-page_rotate_ccw.label=နာရီလက်တံ ပြောင်းပြန်
 page_rotate_ccw_label=နာရီလက်တံ ပြောင်းပြန်
 
 
@@ -107,7 +103,6 @@ print_progress_close=ပယ်​ဖျက်ပါ
 # (the _label strings are alt text for the buttons, the .title strings are
 # tooltips)
 toggle_sidebar.title=ဘေးတန်းဖွင့်ပိတ်
-toggle_sidebar_notification.title=ဘေးဘားတန်းကို အဖွင့်/အပိတ် လုပ်ရန် (စာတမ်းတွင် outline/attachments 
ပါဝင်နိုင်သည်)
 toggle_sidebar_label=ဖွင့်ပိတ် ဆလိုက်ဒါ
 document_outline.title=စာတမ်းအကျဉ်းချုပ်ကို ပြပါ (စာရင်းအားလုံးကို ချုံ့/ချဲ့ရန် ကလစ်နှစ်ချက်နှိပ်ပါ)
 document_outline_label=စာတမ်းအကျဉ်းချုပ်
@@ -175,9 +170,6 @@ page_scale_actual=အမှန်တကယ်ရှိတဲ့ အရွယ်
 # numerical scale value.
 page_scale_percent={{scale}}%
 
-# Loading indicator messages
-loading_error_indicator=အမှား
-
 loading_error=PDF ဖိုင် ကိုဆွဲတင်နေချိန်မှာ အမှားတစ်ခုတွေ့ရပါတယ်။
 invalid_file_error=မရသော သို့ ပျက်နေသော PDF ဖိုင်
 missing_file_error=PDF ပျောက်ဆုံး
diff --git a/third-party/pdfjs/web/locale/nb-NO/viewer.properties 
b/third-party/pdfjs/web/locale/nb-NO/viewer.properties
index 3555c04b6..85c37f5c8 100644
--- a/third-party/pdfjs/web/locale/nb-NO/viewer.properties
+++ b/third-party/pdfjs/web/locale/nb-NO/viewer.properties
@@ -48,16 +48,12 @@ bookmark_label=Nåværende visning
 tools.title=Verktøy
 tools_label=Verktøy
 first_page.title=Gå til første side
-first_page.label=Gå til første side
 first_page_label=Gå til første side
 last_page.title=Gå til siste side
-last_page.label=Gå til siste side
 last_page_label=Gå til siste side
 page_rotate_cw.title=Roter med klokken
-page_rotate_cw.label=Roter med klokken
 page_rotate_cw_label=Roter med klokken
 page_rotate_ccw.title=Roter mot klokken
-page_rotate_ccw.label=Roter mot klokken
 page_rotate_ccw_label=Roter mot klokken
 
 cursor_text_select_tool.title=Aktiver tekstmarkeringsverktøy
@@ -137,7 +133,6 @@ print_progress_close=Avbryt
 # (the _label strings are alt text for the buttons, the .title strings are
 # tooltips)
 toggle_sidebar.title=Slå av/på sidestolpe
-toggle_sidebar_notification.title=Vis/gjem sidestolpe (dokumentet inneholder oversikt/vedlegg)
 toggle_sidebar_notification2.title=Vis/gjem sidestolpe (dokumentet inneholder oversikt/vedlegg/lag)
 toggle_sidebar_label=Slå av/på sidestolpe
 document_outline.title=Vis dokumentdisposisjonen (dobbeltklikk for å utvide/skjule alle elementer)
@@ -153,9 +148,6 @@ current_outline_item_label=Gjeldende disposisjonselement
 findbar.title=Finn i dokumentet
 findbar_label=Finn
 
-# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
-page_canvas=Side {{page}}
-
 additional_layers=Ytterligere lag
 # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number.
 page_landmark=Side {{page}}
@@ -230,9 +222,6 @@ page_scale_actual=Virkelig størrelse
 # numerical scale value.
 page_scale_percent={{scale}} %
 
-# Loading indicator messages
-loading_error_indicator=Feil
-
 # Loading indicator messages
 loading=Laster…
 loading_error=En feil oppstod ved lasting av PDF.
diff --git a/third-party/pdfjs/web/locale/ne-NP/viewer.properties 
b/third-party/pdfjs/web/locale/ne-NP/viewer.properties
index 4232c56a6..1e30fece8 100644
--- a/third-party/pdfjs/web/locale/ne-NP/viewer.properties
+++ b/third-party/pdfjs/web/locale/ne-NP/viewer.properties
@@ -48,16 +48,12 @@ bookmark_label=हालको दृश्य
 tools.title=औजारहरू
 tools_label=औजारहरू
 first_page.title=पहिलो पृष्ठमा जानुहोस्
-first_page.label=पहिलो पृष्ठमा जानुहोस्
 first_page_label=पहिलो पृष्ठमा जानुहोस्
 last_page.title=पछिल्लो पृष्ठमा जानुहोस्
-last_page.label=पछिल्लो पृष्ठमा जानुहोस्
 last_page_label=पछिल्लो पृष्ठमा जानुहोस्
 page_rotate_cw.title=घडीको दिशामा घुमाउनुहोस्
-page_rotate_cw.label=घडीको दिशामा घुमाउनुहोस्
 page_rotate_cw_label=घडीको दिशामा घुमाउनुहोस्
 page_rotate_ccw.title=घडीको विपरित दिशामा घुमाउनुहोस्
-page_rotate_ccw.label=घडीको विपरित दिशामा घुमाउनुहोस्
 page_rotate_ccw_label=घडीको विपरित दिशामा घुमाउनुहोस्
 
 cursor_text_select_tool.title=पाठ चयन उपकरण सक्षम गर्नुहोस्
@@ -101,7 +97,6 @@ print_progress_close=रद्द गर्नुहोस्
 # (the _label strings are alt text for the buttons, the .title strings are
 # tooltips)
 toggle_sidebar.title=टगल साइडबार
-toggle_sidebar_notification.title=साइडबार टगल गर्नुहोस् (कागजातमा समावेश भएको कुराहरू रूपरेखा/attachments)
 toggle_sidebar_label=टगल साइडबार
 document_outline.title=कागजातको रूपरेखा देखाउनुहोस् (सबै वस्तुहरू विस्तार/पतन गर्न डबल-क्लिक गर्नुहोस्)
 document_outline_label=दस्तावेजको रूपरेखा
@@ -161,9 +156,6 @@ page_scale_actual=वास्तविक आकार
 # numerical scale value.
 page_scale_percent={{scale}}%
 
-# Loading indicator messages
-loading_error_indicator=त्रुटि
-
 loading_error=यो PDF लोड गर्दा एउटा त्रुटि देखापर्‍यो।
 invalid_file_error=अवैध वा दुषित PDF फाइल।
 missing_file_error=हराईरहेको PDF फाइल।
diff --git a/third-party/pdfjs/web/locale/nl/viewer.properties 
b/third-party/pdfjs/web/locale/nl/viewer.properties
index fd19d6c81..98bf888a4 100644
--- a/third-party/pdfjs/web/locale/nl/viewer.properties
+++ b/third-party/pdfjs/web/locale/nl/viewer.properties
@@ -48,16 +48,12 @@ bookmark_label=Huidige weergave
 tools.title=Hulpmiddelen
 tools_label=Hulpmiddelen
 first_page.title=Naar eerste pagina gaan
-first_page.label=Naar eerste pagina gaan
 first_page_label=Naar eerste pagina gaan
 last_page.title=Naar laatste pagina gaan
-last_page.label=Naar laatste pagina gaan
 last_page_label=Naar laatste pagina gaan
 page_rotate_cw.title=Rechtsom draaien
-page_rotate_cw.label=Rechtsom draaien
 page_rotate_cw_label=Rechtsom draaien
 page_rotate_ccw.title=Linksom draaien
-page_rotate_ccw.label=Linksom draaien
 page_rotate_ccw_label=Linksom draaien
 
 cursor_text_select_tool.title=Tekstselectiehulpmiddel inschakelen
@@ -137,7 +133,6 @@ print_progress_close=Annuleren
 # (the _label strings are alt text for the buttons, the .title strings are
 # tooltips)
 toggle_sidebar.title=Zijbalk in-/uitschakelen
-toggle_sidebar_notification.title=Zijbalk in-/uitschakelen (document bevat overzicht/bijlagen)
 toggle_sidebar_notification2.title=Zijbalk in-/uitschakelen (document bevat overzicht/bijlagen/lagen)
 toggle_sidebar_label=Zijbalk in-/uitschakelen
 document_outline.title=Documentoverzicht tonen (dubbelklik om alle items uit/samen te vouwen)
@@ -153,9 +148,6 @@ current_outline_item_label=Huidig item in inhoudsopgave
 findbar.title=Zoeken in document
 findbar_label=Zoeken
 
-# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
-page_canvas=Pagina {{page}}
-
 additional_layers=Aanvullende lagen
 # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number.
 page_landmark=Pagina {{page}}
@@ -230,9 +222,6 @@ page_scale_actual=Werkelijke grootte
 # numerical scale value.
 page_scale_percent={{scale}}%
 
-# Loading indicator messages
-loading_error_indicator=Fout
-
 # Loading indicator messages
 loading=Laden…
 loading_error=Er is een fout opgetreden bij het laden van de PDF.
diff --git a/third-party/pdfjs/web/locale/nn-NO/viewer.properties 
b/third-party/pdfjs/web/locale/nn-NO/viewer.properties
index 0e228c31c..0827dc5ec 100644
--- a/third-party/pdfjs/web/locale/nn-NO/viewer.properties
+++ b/third-party/pdfjs/web/locale/nn-NO/viewer.properties
@@ -48,16 +48,12 @@ bookmark_label=Gjeldande vising
 tools.title=Verktøy
 tools_label=Verktøy
 first_page.title=Gå til første side
-first_page.label=Gå til første side
 first_page_label=Gå til første side
 last_page.title=Gå til siste side
-last_page.label=Gå til siste side
 last_page_label=Gå til siste side
 page_rotate_cw.title=Roter med klokka
-page_rotate_cw.label=Roter med klokka
 page_rotate_cw_label=Roter med klokka
 page_rotate_ccw.title=Roter mot klokka
-page_rotate_ccw.label=Roter mot klokka
 page_rotate_ccw_label=Roter mot klokka
 
 cursor_text_select_tool.title=Aktiver tekstmarkeringsverktøy
@@ -137,7 +133,6 @@ print_progress_close=Avbryt
 # (the _label strings are alt text for the buttons, the .title strings are
 # tooltips)
 toggle_sidebar.title=Slå av/på sidestolpe
-toggle_sidebar_notification.title=Vis/gøym sidestolpen (dokumentet inneheld oversikt/vedlegg)
 toggle_sidebar_notification2.title=Vis/gøym sidestolpe (dokumentet inneheld oversikt/vedlegg/lag)
 toggle_sidebar_label=Slå av/på sidestolpe
 document_outline.title=Vis dokumentdisposisjonen (dobbelklikk for å utvide/gøyme alle elementa)
@@ -153,9 +148,6 @@ current_outline_item_label=Gjeldande disposisjonselement
 findbar.title=Finn i dokumentet
 findbar_label=Finn
 
-# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
-page_canvas=Side {{page}}
-
 additional_layers=Ytterlegare lag
 # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number.
 page_landmark=Side {{page}}
@@ -230,9 +222,6 @@ page_scale_actual=Verkeleg storleik
 # numerical scale value.
 page_scale_percent={{scale}}%
 
-# Loading indicator messages
-loading_error_indicator=Feil
-
 # Loading indicator messages
 loading=Lastar…
 loading_error=Ein feil oppstod ved lasting av PDF.
diff --git a/third-party/pdfjs/web/locale/oc/viewer.properties 
b/third-party/pdfjs/web/locale/oc/viewer.properties
index 80348ab8d..b3ee54f9a 100644
--- a/third-party/pdfjs/web/locale/oc/viewer.properties
+++ b/third-party/pdfjs/web/locale/oc/viewer.properties
@@ -48,16 +48,12 @@ bookmark_label=Afichatge actual
 tools.title=Aisinas
 tools_label=Aisinas
 first_page.title=Anar a la primièra pagina
-first_page.label=Anar a la primièra pagina
 first_page_label=Anar a la primièra pagina
 last_page.title=Anar a la darrièra pagina
-last_page.label=Anar a la darrièra pagina
 last_page_label=Anar a la darrièra pagina
 page_rotate_cw.title=Rotacion orària
-page_rotate_cw.label=Rotacion orària
 page_rotate_cw_label=Rotacion orària
 page_rotate_ccw.title=Rotacion antiorària
-page_rotate_ccw.label=Rotacion antiorària
 page_rotate_ccw_label=Rotacion antiorària
 
 cursor_text_select_tool.title=Activar l'aisina de seleccion de tèxte
@@ -137,7 +133,6 @@ print_progress_close=Anullar
 # (the _label strings are alt text for the buttons, the .title strings are
 # tooltips)
 toggle_sidebar.title=Afichar/amagar lo panèl lateral
-toggle_sidebar_notification.title=Afichar/amagar lo panèl lateral (lo document conten esquèmas/pèças juntas)
 toggle_sidebar_notification2.title=Afichar/amagar lo panèl lateral (lo document conten esquèmas/pèças 
juntas/calques)
 toggle_sidebar_label=Afichar/amagar lo panèl lateral
 document_outline.title=Mostrar los esquèmas del document (dobleclicar per espandre/reduire totes los 
elements)
@@ -153,9 +148,6 @@ current_outline_item_label=Element de plan actual
 findbar.title=Cercar dins lo document
 findbar_label=Recercar
 
-# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
-page_canvas=Pagina {{page}}
-
 additional_layers=Calques suplementaris
 # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number.
 page_landmark=Pagina {{page}}
@@ -230,9 +222,6 @@ page_scale_actual=Talha vertadièra
 # numerical scale value.
 page_scale_percent={{scale}}%
 
-# Loading indicator messages
-loading_error_indicator=Error
-
 # Loading indicator messages
 loading=Cargament…
 loading_error=Una error s'es producha pendent lo cargament del fichièr PDF.
diff --git a/third-party/pdfjs/web/locale/pa-IN/viewer.properties 
b/third-party/pdfjs/web/locale/pa-IN/viewer.properties
index 010db9942..f63909f98 100644
--- a/third-party/pdfjs/web/locale/pa-IN/viewer.properties
+++ b/third-party/pdfjs/web/locale/pa-IN/viewer.properties
@@ -48,16 +48,12 @@ bookmark_label=ਮੌਜੂਦਾ ਝਲਕ
 tools.title=ਟੂਲ
 tools_label=ਟੂਲ
 first_page.title=ਪਹਿਲੇ ਸਫ਼ੇ ਉੱਤੇ ਜਾਓ
-first_page.label=ਪਹਿਲੇ ਸਫ਼ੇ ਉੱਤੇ ਜਾਓ
 first_page_label=ਪਹਿਲੇ ਸਫ਼ੇ ਉੱਤੇ ਜਾਓ
 last_page.title=ਆਖਰੀ ਸਫ਼ੇ ਉੱਤੇ ਜਾਓ
-last_page.label=ਆਖਰੀ ਸਫ਼ੇ ਉੱਤੇ ਜਾਓ
 last_page_label=ਆਖਰੀ ਸਫ਼ੇ ਉੱਤੇ ਜਾਓ
 page_rotate_cw.title=ਸੱਜੇ ਦਾਅ ਘੁੰਮਾਓ
-page_rotate_cw.label=ਸੱਜੇ ਦਾਅ ਘੁੰਮਾਉ
 page_rotate_cw_label=ਸੱਜੇ ਦਾਅ ਘੁੰਮਾਓ
 page_rotate_ccw.title=ਖੱਬੇ ਦਾਅ ਘੁੰਮਾਓ
-page_rotate_ccw.label=ਖੱਬੇ ਦਾਅ ਘੁੰਮਾਉ
 page_rotate_ccw_label=ਖੱਬੇ ਦਾਅ ਘੁੰਮਾਓ
 
 cursor_text_select_tool.title=ਲਿਖਤ ਚੋਣ ਟੂਲ ਸਮਰੱਥ ਕਰੋ
@@ -137,7 +133,6 @@ print_progress_close=ਰੱਦ ਕਰੋ
 # (the _label strings are alt text for the buttons, the .title strings are
 # tooltips)
 toggle_sidebar.title=ਬਾਹੀ ਬਦਲੋ
-toggle_sidebar_notification.title=ਬਾਹੀ ਨੂੰ ਬਦਲੋ (ਦਸਤਾਵੇਜ਼ ਖਾਕਾ/ਅਟੈਚਮੈਂਟਾਂ ਰੱਖਦਾ ਹੈ)
 toggle_sidebar_notification2.title=ਬਾਹੀ ਨੂੰ ਬਦਲੋ (ਦਸਤਾਵੇਜ਼ ਖਾਕਾ/ਅਟੈਚਮੈਂਟ/ਪਰਤਾਂ ਰੱਖਦਾ ਹੈ)
 toggle_sidebar_label=ਬਾਹੀ ਬਦਲੋ
 document_outline.title=ਦਸਤਾਵੇਜ਼ ਖਾਕਾ ਦਿਖਾਓ (ਸਾਰੀਆਂ ਆਈਟਮਾਂ ਨੂੰ ਫੈਲਾਉਣ/ਸਮੇਟਣ ਲਈ ਦੋ ਵਾਰ ਕਲਿੱਕ ਕਰੋ)
@@ -153,9 +148,6 @@ current_outline_item_label=ਮੌਜੂਦਾ ਖਾਕਾ ਚੀਜ਼
 findbar.title=ਦਸਤਾਵੇਜ਼ ਵਿੱਚ ਲੱਭੋ
 findbar_label=ਲੱਭੋ
 
-# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
-page_canvas=ਸਫ਼ਾ {{page}}
-
 additional_layers=ਵਾਧੂ ਪਰਤਾਂ
 # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number.
 page_landmark=ਸਫ਼ਾ {{page}}
@@ -230,9 +222,6 @@ page_scale_actual=ਆਟੋਮੈਟਿਕ ਆਕਾਰ
 # numerical scale value.
 page_scale_percent={{scale}}%
 
-# Loading indicator messages
-loading_error_indicator=ਗਲਤੀ
-
 # Loading indicator messages
 loading=…ਲੋਡ ਹੋ ਰਿਹਾ ਹੈ
 loading_error=PDF ਲੋਡ ਕਰਨ ਦੇ ਦੌਰਾਨ ਗਲਤੀ ਆਈ ਹੈ।
diff --git a/third-party/pdfjs/web/locale/pl/viewer.properties 
b/third-party/pdfjs/web/locale/pl/viewer.properties
index 83be380af..0fb8d9d87 100644
--- a/third-party/pdfjs/web/locale/pl/viewer.properties
+++ b/third-party/pdfjs/web/locale/pl/viewer.properties
@@ -48,16 +48,12 @@ bookmark_label=Bieżąca pozycja
 tools.title=Narzędzia
 tools_label=Narzędzia
 first_page.title=Przejdź do pierwszej strony
-first_page.label=Przejdź do pierwszej strony
 first_page_label=Przejdź do pierwszej strony
 last_page.title=Przejdź do ostatniej strony
-last_page.label=Przejdź do ostatniej strony
 last_page_label=Przejdź do ostatniej strony
 page_rotate_cw.title=Obróć zgodnie z ruchem wskazówek zegara
-page_rotate_cw.label=Obróć zgodnie z ruchem wskazówek zegara
 page_rotate_cw_label=Obróć zgodnie z ruchem wskazówek zegara
 page_rotate_ccw.title=Obróć przeciwnie do ruchu wskazówek zegara
-page_rotate_ccw.label=Obróć przeciwnie do ruchu wskazówek zegara
 page_rotate_ccw_label=Obróć przeciwnie do ruchu wskazówek zegara
 
 cursor_text_select_tool.title=Włącz narzędzie zaznaczania tekstu
@@ -137,7 +133,6 @@ print_progress_close=Anuluj
 # (the _label strings are alt text for the buttons, the .title strings are
 # tooltips)
 toggle_sidebar.title=Przełącz panel boczny
-toggle_sidebar_notification.title=Przełącz panel boczny (dokument zawiera konspekt/załączniki)
 toggle_sidebar_notification2.title=Przełącz panel boczny (dokument zawiera konspekt/załączniki/warstwy)
 toggle_sidebar_label=Przełącz panel boczny
 document_outline.title=Konspekt dokumentu (podwójne kliknięcie rozwija lub zwija wszystkie pozycje)
@@ -153,9 +148,6 @@ current_outline_item_label=Bieżący element konspektu
 findbar.title=Znajdź w dokumencie
 findbar_label=Znajdź
 
-# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
-page_canvas={{page}}. strona
-
 additional_layers=Dodatkowe warstwy
 # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number.
 page_landmark={{page}}. strona
@@ -230,9 +222,6 @@ page_scale_actual=Rozmiar oryginalny
 # numerical scale value.
 page_scale_percent={{scale}}%
 
-# Loading indicator messages
-loading_error_indicator=Błąd
-
 # Loading indicator messages
 loading=Wczytywanie…
 loading_error=Podczas wczytywania dokumentu PDF wystąpił błąd.
diff --git a/third-party/pdfjs/web/locale/pt-BR/viewer.properties 
b/third-party/pdfjs/web/locale/pt-BR/viewer.properties
index 8a0884da8..fc67ea7ec 100644
--- a/third-party/pdfjs/web/locale/pt-BR/viewer.properties
+++ b/third-party/pdfjs/web/locale/pt-BR/viewer.properties
@@ -48,16 +48,12 @@ bookmark_label=Visualização atual
 tools.title=Ferramentas
 tools_label=Ferramentas
 first_page.title=Ir para a primeira página
-first_page.label=Ir para a primeira página
 first_page_label=Ir para a primeira página
 last_page.title=Ir para a última página
-last_page.label=Ir para a última página
 last_page_label=Ir para a última página
 page_rotate_cw.title=Girar no sentido horário
-page_rotate_cw.label=Girar no sentido horário
 page_rotate_cw_label=Girar no sentido horário
 page_rotate_ccw.title=Girar no sentido anti-horário
-page_rotate_ccw.label=Girar no sentido anti-horário
 page_rotate_ccw_label=Girar no sentido anti-horário
 
 cursor_text_select_tool.title=Ativar a ferramenta de seleção de texto
@@ -137,7 +133,6 @@ print_progress_close=Cancelar
 # (the _label strings are alt text for the buttons, the .title strings are
 # tooltips)
 toggle_sidebar.title=Exibir/ocultar painel lateral
-toggle_sidebar_notification.title=Exibir/ocultar painel lateral (documento contém estrutura/anexos)
 toggle_sidebar_notification2.title=Exibir/ocultar painel (documento contém estrutura/anexos/camadas)
 toggle_sidebar_label=Exibir/ocultar painel
 document_outline.title=Mostrar a estrutura do documento (dê um duplo-clique para expandir/recolher todos os 
itens)
@@ -153,9 +148,6 @@ current_outline_item_label=Item atual da estrutura
 findbar.title=Procurar no documento
 findbar_label=Procurar
 
-# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
-page_canvas=Página {{page}}
-
 additional_layers=Camadas adicionais
 # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number.
 page_landmark=Página {{page}}
@@ -230,9 +222,6 @@ page_scale_actual=Tamanho real
 # numerical scale value.
 page_scale_percent={{scale}}%
 
-# Loading indicator messages
-loading_error_indicator=Erro
-
 # Loading indicator messages
 loading=Carregando…
 loading_error=Ocorreu um erro ao carregar o PDF.
diff --git a/third-party/pdfjs/web/locale/pt-PT/viewer.properties 
b/third-party/pdfjs/web/locale/pt-PT/viewer.properties
index 1a5e60df9..fa9493360 100644
--- a/third-party/pdfjs/web/locale/pt-PT/viewer.properties
+++ b/third-party/pdfjs/web/locale/pt-PT/viewer.properties
@@ -48,16 +48,12 @@ bookmark_label=Visão atual
 tools.title=Ferramentas
 tools_label=Ferramentas
 first_page.title=Ir para a primeira página
-first_page.label=Ir para a primeira página
 first_page_label=Ir para a primeira página
 last_page.title=Ir para a última página
-last_page.label=Ir para a última página
 last_page_label=Ir para a última página
 page_rotate_cw.title=Rodar à direita
-page_rotate_cw.label=Rodar à direita
 page_rotate_cw_label=Rodar à direita
 page_rotate_ccw.title=Rodar à esquerda
-page_rotate_ccw.label=Rodar à esquerda
 page_rotate_ccw_label=Rodar à esquerda
 
 cursor_text_select_tool.title=Ativar ferramenta de seleção de texto
@@ -137,7 +133,6 @@ print_progress_close=Cancelar
 # (the _label strings are alt text for the buttons, the .title strings are
 # tooltips)
 toggle_sidebar.title=Alternar barra lateral
-toggle_sidebar_notification.title=Alternar barra lateral (documento contém contorno/anexos)
 toggle_sidebar_notification2.title=Alternar barra lateral (o documento contém contornos/anexos/camadas)
 toggle_sidebar_label=Alternar barra lateral
 document_outline.title=Mostrar esquema do documento (duplo clique para expandir/colapsar todos os itens)
@@ -153,9 +148,6 @@ current_outline_item_label=Item atualmente destacado
 findbar.title=Localizar em documento
 findbar_label=Localizar
 
-# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
-page_canvas=Página {{page}}
-
 additional_layers=Camadas adicionais
 # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number.
 page_landmark=Página {{page}}
@@ -230,9 +222,6 @@ page_scale_actual=Tamanho real
 # numerical scale value.
 page_scale_percent={{scale}}%
 
-# Loading indicator messages
-loading_error_indicator=Erro
-
 # Loading indicator messages
 loading=A carregar…
 loading_error=Ocorreu um erro ao carregar o PDF.
diff --git a/third-party/pdfjs/web/locale/rm/viewer.properties 
b/third-party/pdfjs/web/locale/rm/viewer.properties
index fc4a9e112..cd79a35b4 100644
--- a/third-party/pdfjs/web/locale/rm/viewer.properties
+++ b/third-party/pdfjs/web/locale/rm/viewer.properties
@@ -48,16 +48,12 @@ bookmark_label=Vista actuala
 tools.title=Utensils
 tools_label=Utensils
 first_page.title=Siglir a l'emprima pagina
-first_page.label=Siglir a l'emprima pagina
 first_page_label=Siglir a l'emprima pagina
 last_page.title=Siglir a la davosa pagina
-last_page.label=Siglir a la davosa pagina
 last_page_label=Siglir a la davosa pagina
 page_rotate_cw.title=Rotar en direcziun da l'ura
-page_rotate_cw.label=Rotar en direcziun da l'ura
 page_rotate_cw_label=Rotar en direcziun da l'ura
 page_rotate_ccw.title=Rotar en direcziun cuntraria a l'ura
-page_rotate_ccw.label=Rotar en direcziun cuntraria a l'ura
 page_rotate_ccw_label=Rotar en direcziun cuntraria a l'ura
 
 cursor_text_select_tool.title=Activar l'utensil per selecziunar text
@@ -137,7 +133,6 @@ print_progress_close=Interrumper
 # (the _label strings are alt text for the buttons, the .title strings are
 # tooltips)
 toggle_sidebar.title=Activar/deactivar la trav laterala
-toggle_sidebar_notification.title=Activar/deactivar la trav laterala (structura dal document/agiuntas)
 toggle_sidebar_notification2.title=Activar/deactivar la trav laterala (il document cuntegna structura dal 
document/agiuntas/nivels)
 toggle_sidebar_label=Activar/deactivar la trav laterala
 document_outline.title=Mussar la structura dal document (cliccar duas giadas per extender/cumprimer tut ils 
elements)
@@ -153,9 +148,6 @@ current_outline_item_label=Element da structura actual
 findbar.title=Tschertgar en il document
 findbar_label=Tschertgar
 
-# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
-page_canvas=Pagina {{page}}
-
 additional_layers=Nivels supplementars
 # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number.
 page_landmark=Pagina {{page}}
@@ -230,9 +222,6 @@ page_scale_actual=Grondezza actuala
 # numerical scale value.
 page_scale_percent={{scale}}%
 
-# Loading indicator messages
-loading_error_indicator=Errur
-
 # Loading indicator messages
 loading=Chargiar…
 loading_error=Ina errur è cumparida cun chargiar il PDF.
diff --git a/third-party/pdfjs/web/locale/ro/viewer.properties 
b/third-party/pdfjs/web/locale/ro/viewer.properties
index 2e580f0d3..7c4ed2836 100644
--- a/third-party/pdfjs/web/locale/ro/viewer.properties
+++ b/third-party/pdfjs/web/locale/ro/viewer.properties
@@ -48,16 +48,12 @@ bookmark_label=Vizualizare actuală
 tools.title=Instrumente
 tools_label=Instrumente
 first_page.title=Mergi la prima pagină
-first_page.label=Mergi la prima pagină
 first_page_label=Mergi la prima pagină
 last_page.title=Mergi la ultima pagină
-last_page.label=Mergi la ultima pagină
 last_page_label=Mergi la ultima pagină
 page_rotate_cw.title=Rotește în sensul acelor de ceas
-page_rotate_cw.label=Rotește în sensul acelor de ceas
 page_rotate_cw_label=Rotește în sensul acelor de ceas
 page_rotate_ccw.title=Rotește în sens invers al acelor de ceas
-page_rotate_ccw.label=Rotește în sens invers al acelor de ceas
 page_rotate_ccw_label=Rotește în sens invers al acelor de ceas
 
 cursor_text_select_tool.title=Activează instrumentul de selecție a textului
@@ -137,7 +133,6 @@ print_progress_close=Renunță
 # (the _label strings are alt text for the buttons, the .title strings are
 # tooltips)
 toggle_sidebar.title=Comută bara laterală
-toggle_sidebar_notification.title=Comută bara laterală (documentul conține schițe/atașamente)
 toggle_sidebar_label=Comută bara laterală
 document_outline.title=Afișează schița documentului (dublu-clic pentru a extinde/restrânge toate elementele)
 document_outline_label=Schița documentului
@@ -148,9 +143,7 @@ thumbs_label=Miniaturi
 findbar.title=Caută în document
 findbar_label=Caută
 
-# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
-page_canvas=Pagina {{page}}
-
+# 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.
@@ -223,8 +216,6 @@ page_scale_actual=Mărime reală
 page_scale_percent={{scale}}%
 
 # Loading indicator messages
-loading_error_indicator=Eroare
-
 loading_error=A intervenit o eroare la încărcarea PDF-ului.
 invalid_file_error=Fișier PDF nevalid sau corupt.
 missing_file_error=Fișier PDF lipsă.
@@ -241,7 +232,7 @@ annotation_date_string={{date}}, {{time}}
 text_annotation_type.alt=[Adnotare {{type}}]
 password_label=Introdu parola pentru a deschide acest fișier PDF.
 password_invalid=Parolă nevalidă. Te rugăm să încerci din nou.
-password_ok=Ok
+password_ok=OK
 password_cancel=Renunță
 
 printing_not_supported=Avertisment: Tipărirea nu este suportată în totalitate de acest browser.
diff --git a/third-party/pdfjs/web/locale/ru/viewer.properties 
b/third-party/pdfjs/web/locale/ru/viewer.properties
index 402e0e5c3..e015623c1 100644
--- a/third-party/pdfjs/web/locale/ru/viewer.properties
+++ b/third-party/pdfjs/web/locale/ru/viewer.properties
@@ -48,16 +48,12 @@ bookmark_label=Текущий вид
 tools.title=Инструменты
 tools_label=Инструменты
 first_page.title=Перейти на первую страницу
-first_page.label=Перейти на первую страницу
 first_page_label=Перейти на первую страницу
 last_page.title=Перейти на последнюю страницу
-last_page.label=Перейти на последнюю страницу
 last_page_label=Перейти на последнюю страницу
 page_rotate_cw.title=Повернуть по часовой стрелке
-page_rotate_cw.label=Повернуть по часовой стрелке
 page_rotate_cw_label=Повернуть по часовой стрелке
 page_rotate_ccw.title=Повернуть против часовой стрелки
-page_rotate_ccw.label=Повернуть против часовой стрелки
 page_rotate_ccw_label=Повернуть против часовой стрелки
 
 cursor_text_select_tool.title=Включить Инструмент «Выделение текста»
@@ -137,7 +133,6 @@ print_progress_close=Отмена
 # (the _label strings are alt text for the buttons, the .title strings are
 # tooltips)
 toggle_sidebar.title=Показать/скрыть боковую панель
-toggle_sidebar_notification.title=Показать/скрыть боковую панель (документ имеет содержание/вложения)
 toggle_sidebar_notification2.title=Показать/скрыть боковую панель (документ имеет содержание/вложения/слои)
 toggle_sidebar_label=Показать/скрыть боковую панель
 document_outline.title=Показать содержание документа (двойной щелчок, чтобы развернуть/свернуть все элементы)
@@ -153,9 +148,6 @@ current_outline_item_label=Текущий элемент структуры
 findbar.title=Найти в документе
 findbar_label=Найти
 
-# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
-page_canvas=Страница {{page}}
-
 additional_layers=Дополнительные слои
 # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number.
 page_landmark=Страница {{page}}
@@ -230,9 +222,6 @@ page_scale_actual=Реальный размер
 # numerical scale value.
 page_scale_percent={{scale}}%
 
-# Loading indicator messages
-loading_error_indicator=Ошибка
-
 # Loading indicator messages
 loading=Загрузка…
 loading_error=При загрузке PDF произошла ошибка.
diff --git a/third-party/pdfjs/web/locale/sco/viewer.properties 
b/third-party/pdfjs/web/locale/sco/viewer.properties
index d101f28fb..656f9950b 100644
--- a/third-party/pdfjs/web/locale/sco/viewer.properties
+++ b/third-party/pdfjs/web/locale/sco/viewer.properties
@@ -48,16 +48,12 @@ bookmark_label=View The Noo
 tools.title=Tools
 tools_label=Tools
 first_page.title=Gang tae First Page
-first_page.label=Gang tae First Page
 first_page_label=Gang tae First Page
 last_page.title=Gang tae Lest Page
-last_page.label=Gang tae Lest Page
 last_page_label=Gang tae Lest Page
 page_rotate_cw.title=Rotate Clockwise
-page_rotate_cw.label=Rotate Clockwise
 page_rotate_cw_label=Rotate Clockwise
 page_rotate_ccw.title=Rotate Coonterclockwise
-page_rotate_ccw.label=Rotate Coonterclockwise
 page_rotate_ccw_label=Rotate Coonterclockwise
 
 cursor_text_select_tool.title=Enable Text Walin Tool
@@ -137,7 +133,6 @@ print_progress_close=Stap
 # (the _label strings are alt text for the buttons, the .title strings are
 # tooltips)
 toggle_sidebar.title=Toggle Sidebaur
-toggle_sidebar_notification.title=Toggle Sidebaur (document conteens ootline/attachments)
 toggle_sidebar_notification2.title=Toggle Sidebaur (document conteens ootline/attachments/layers)
 toggle_sidebar_label=Toggle Sidebaur
 document_outline.title=Kythe Document Ootline (double-click fur tae oot-fauld/in-fauld aw items)
@@ -153,9 +148,6 @@ current_outline_item_label=Current Ootline Item
 findbar.title=Find in Document
 findbar_label=Find
 
-# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
-page_canvas=Page {{page}}
-
 additional_layers=Mair Layers
 # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number.
 page_landmark=Page {{page}}
@@ -230,9 +222,6 @@ page_scale_actual=Actual Size
 # numerical scale value.
 page_scale_percent={{scale}}%
 
-# Loading indicator messages
-loading_error_indicator=Mishanter
-
 # Loading indicator messages
 loading=Loadin…
 loading_error=An mishanter tuik place while loadin the PDF.
diff --git a/third-party/pdfjs/web/locale/si/viewer.properties 
b/third-party/pdfjs/web/locale/si/viewer.properties
index 9ab24bb51..d4514c1c4 100644
--- a/third-party/pdfjs/web/locale/si/viewer.properties
+++ b/third-party/pdfjs/web/locale/si/viewer.properties
@@ -46,16 +46,12 @@ bookmark_label=දැනට ඇති දසුන
 tools.title=මෙවලම්
 tools_label=මෙවලම්
 first_page.title=මුල් පිටුවට යන්න
-first_page.label=මුල් පිටුවට යන්න
 first_page_label=මුල් පිටුවට යන්න
 last_page.title=අවසන් පිටුවට යන්න
-last_page.label=අවසන් පිටුවට යන්න
 last_page_label=අවසන් පිටුවට යන්න
 page_rotate_cw.title=දක්ශිණාවර්තව භ්‍රමණය
-page_rotate_cw.label=දක්ශිණාවර්තව භ්‍රමණය
 page_rotate_cw_label=දක්ශිණාවර්තව භ්‍රමණය
 page_rotate_ccw.title=වාමාවර්තව භ්‍රමණය
-page_rotate_ccw.label=වාමාවර්තව භ්‍රමණය
 page_rotate_ccw_label=වාමාවර්තව භ්‍රමණය
 
 cursor_hand_tool_label=අත් මෙවලම
@@ -185,9 +181,6 @@ page_scale_actual=නියමිත ප්‍රමාණය
 # numerical scale value.
 page_scale_percent={{scale}}%
 
-# Loading indicator messages
-loading_error_indicator=දෝෂය
-
 loading_error=PDF පූරණය විමේදි දෝෂයක් හට ගැනුණි.
 invalid_file_error=දූශිත හෝ සාවද්‍ය PDF ගොනුව.
 missing_file_error=නැතිවූ PDF ගොනුව.
diff --git a/third-party/pdfjs/web/locale/sk/viewer.properties 
b/third-party/pdfjs/web/locale/sk/viewer.properties
index b58f4c42c..0e2963a99 100644
--- a/third-party/pdfjs/web/locale/sk/viewer.properties
+++ b/third-party/pdfjs/web/locale/sk/viewer.properties
@@ -48,16 +48,12 @@ bookmark_label=Aktuálne zobrazenie
 tools.title=Nástroje
 tools_label=Nástroje
 first_page.title=Prejsť na prvú stranu
-first_page.label=Prejsť na prvú stranu
 first_page_label=Prejsť na prvú stranu
 last_page.title=Prejsť na poslednú stranu
-last_page.label=Prejsť na poslednú stranu
 last_page_label=Prejsť na poslednú stranu
 page_rotate_cw.title=Otočiť v smere hodinových ručičiek
-page_rotate_cw.label=Otočiť v smere hodinových ručičiek
 page_rotate_cw_label=Otočiť v smere hodinových ručičiek
 page_rotate_ccw.title=Otočiť proti smeru hodinových ručičiek
-page_rotate_ccw.label=Otočiť proti smeru hodinových ručičiek
 page_rotate_ccw_label=Otočiť proti smeru hodinových ručičiek
 
 cursor_text_select_tool.title=Povoliť výber textu
@@ -137,7 +133,6 @@ print_progress_close=Zrušiť
 # (the _label strings are alt text for the buttons, the .title strings are
 # tooltips)
 toggle_sidebar.title=Prepnúť bočný panel
-toggle_sidebar_notification.title=Prepnúť bočný panel (dokument obsahuje osnovu/prílohy)
 toggle_sidebar_notification2.title=Prepnúť bočný panel (dokument obsahuje osnovu/prílohy/vrstvy)
 toggle_sidebar_label=Prepnúť bočný panel
 document_outline.title=Zobraziť osnovu dokumentu (dvojitým kliknutím rozbalíte/zbalíte všetky položky)
@@ -153,9 +148,6 @@ current_outline_item_label=Aktuálna položka v osnove
 findbar.title=Hľadať v dokumente
 findbar_label=Hľadať
 
-# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
-page_canvas=Strana {{page}}
-
 additional_layers=Ďalšie vrstvy
 # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number.
 page_landmark=Strana {{page}}
@@ -230,9 +222,6 @@ page_scale_actual=Skutočná veľkosť
 # numerical scale value.
 page_scale_percent={{scale}} %
 
-# Loading indicator messages
-loading_error_indicator=Chyba
-
 # Loading indicator messages
 loading=Načítava sa…
 loading_error=Počas načítavania dokumentu PDF sa vyskytla chyba.
diff --git a/third-party/pdfjs/web/locale/sl/viewer.properties 
b/third-party/pdfjs/web/locale/sl/viewer.properties
index aacf99554..a6e725efa 100644
--- a/third-party/pdfjs/web/locale/sl/viewer.properties
+++ b/third-party/pdfjs/web/locale/sl/viewer.properties
@@ -48,16 +48,12 @@ bookmark_label=Trenutni pogled
 tools.title=Orodja
 tools_label=Orodja
 first_page.title=Pojdi na prvo stran
-first_page.label=Pojdi na prvo stran
 first_page_label=Pojdi na prvo stran
 last_page.title=Pojdi na zadnjo stran
-last_page.label=Pojdi na zadnjo stran
 last_page_label=Pojdi na zadnjo stran
 page_rotate_cw.title=Zavrti v smeri urnega kazalca
-page_rotate_cw.label=Zavrti v smeri urnega kazalca
 page_rotate_cw_label=Zavrti v smeri urnega kazalca
 page_rotate_ccw.title=Zavrti v nasprotni smeri urnega kazalca
-page_rotate_ccw.label=Zavrti v nasprotni smeri urnega kazalca
 page_rotate_ccw_label=Zavrti v nasprotni smeri urnega kazalca
 
 cursor_text_select_tool.title=Omogoči orodje za izbor besedila
@@ -137,7 +133,6 @@ print_progress_close=Prekliči
 # (the _label strings are alt text for the buttons, the .title strings are
 # tooltips)
 toggle_sidebar.title=Preklopi stransko vrstico
-toggle_sidebar_notification.title=Preklopi stransko vrstico (dokument vsebuje oris/priponke)
 toggle_sidebar_notification2.title=Preklopi stransko vrstico (dokument vsebuje oris/priponke/plasti)
 toggle_sidebar_label=Preklopi stransko vrstico
 document_outline.title=Prikaži oris dokumenta (dvokliknite za razširitev/strnitev vseh predmetov)
@@ -153,9 +148,6 @@ current_outline_item_label=Trenutni predmet orisa
 findbar.title=Iskanje po dokumentu
 findbar_label=Najdi
 
-# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
-page_canvas=Stran {{page}}
-
 additional_layers=Dodatne plasti
 # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number.
 page_landmark=Stran {{page}}
@@ -230,9 +222,6 @@ page_scale_actual=Dejanska velikost
 # numerical scale value.
 page_scale_percent={{scale}} %
 
-# Loading indicator messages
-loading_error_indicator=Napaka
-
 # Loading indicator messages
 loading=Nalaganje …
 loading_error=Med nalaganjem datoteke PDF je prišlo do napake.
diff --git a/third-party/pdfjs/web/locale/son/viewer.properties 
b/third-party/pdfjs/web/locale/son/viewer.properties
index 4f16cd96c..bd5e5ac7e 100644
--- a/third-party/pdfjs/web/locale/son/viewer.properties
+++ b/third-party/pdfjs/web/locale/son/viewer.properties
@@ -48,16 +48,12 @@ bookmark_label=Sohõ gunaroo
 tools.title=Goyjinawey
 tools_label=Goyjinawey
 first_page.title=Koy moo jinaa ga
-first_page.label=Koy moo jinaa ga
 first_page_label=Koy moo jinaa ga
 last_page.title=Koy moo koraa ga
-last_page.label=Koy moo koraa ga
 last_page_label=Koy moo koraa ga
 page_rotate_cw.title=Kuubi kanbe guma here
-page_rotate_cw.label=Kuubi kanbe guma here
 page_rotate_cw_label=Kuubi kanbe guma here
 page_rotate_ccw.title=Kuubi kanbe wowa here
-page_rotate_ccw.label=Kuubi kanbe wowa here
 page_rotate_ccw_label=Kuubi kanbe wowa here
 
 
@@ -97,7 +93,6 @@ print_progress_close=Naŋ
 # (the _label strings are alt text for the buttons, the .title strings are
 # tooltips)
 toggle_sidebar.title=Kanjari ceraw zuu
-toggle_sidebar_notification.title=Kanjari ceraw-zuu (takaddaa goo nda filla-boŋ/hangandiyaŋ)
 toggle_sidebar_label=Kanjari ceraw zuu
 document_outline.title=Takaddaa korfur alhaaloo cebe (naagu cee hinka ka haya-izey kul hayandi/kankamandi)
 document_outline_label=Takadda filla-boŋ
@@ -157,9 +152,6 @@ page_scale_actual=Adadu cimi
 # numerical scale value.
 page_scale_percent={{scale}}%
 
-# Loading indicator messages
-loading_error_indicator=Firka
-
 loading_error=Firka bangay kaŋ PDF goo ma zumandi.
 invalid_file_error=PDF tuku laala wala laybante.
 missing_file_error=PDF tuku kumante.
diff --git a/third-party/pdfjs/web/locale/sq/viewer.properties 
b/third-party/pdfjs/web/locale/sq/viewer.properties
index 62fb33ccd..281c25e0f 100644
--- a/third-party/pdfjs/web/locale/sq/viewer.properties
+++ b/third-party/pdfjs/web/locale/sq/viewer.properties
@@ -48,16 +48,12 @@ bookmark_label=Pamja e Tanishme
 tools.title=Mjete
 tools_label=Mjete
 first_page.title=Kaloni te Faqja e Parë
-first_page.label=Kaloni te Faqja e Parë
 first_page_label=Kaloni te Faqja e Parë
 last_page.title=Kaloni te Faqja e Fundit
-last_page.label=Kaloni te Faqja e Fundit
 last_page_label=Kaloni te Faqja e Fundit
 page_rotate_cw.title=Rrotullojeni Në Kahun Orar
-page_rotate_cw.label=Rrotulloje Në Kahun Orar
 page_rotate_cw_label=Rrotulloje Në Kahun Orar
 page_rotate_ccw.title=Rrotullojeni Në Kahun Kundërorar
-page_rotate_ccw.label=Rrotulloje Në Kahun Kundërorar
 page_rotate_ccw_label=Rrotulloje Në Kahun Kundërorar
 
 cursor_text_select_tool.title=Aktivizo Mjet Përzgjedhjeje Teksti
@@ -130,7 +126,6 @@ print_progress_close=Anuloje
 # (the _label strings are alt text for the buttons, the .title strings are
 # tooltips)
 toggle_sidebar.title=Shfaqni/Fshihni Anështyllën
-toggle_sidebar_notification.title=Shfaqni Anështyllën (dokumenti përmban përvijim/bashkëngjitje)
 toggle_sidebar_notification2.title=Hap/Mbyll Anështylë (dokumenti përmban përvijim/nashkëngjitje/shtresa)
 toggle_sidebar_label=Shfaq/Fshih Anështyllën
 document_outline.title=Shfaqni Përvijim Dokumenti (dyklikoni që të shfaqen/fshihen krejt elementët)
@@ -144,9 +139,6 @@ thumbs_label=Miniatura
 findbar.title=Gjeni në Dokument
 findbar_label=Gjej
 
-# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
-page_canvas=Faqja {{page}}
-
 additional_layers=Shtresa Shtesë
 # Thumbnails panel item (tooltip and alt text for images)
 # LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
@@ -219,9 +211,6 @@ page_scale_actual=Madhësia Faktike
 # numerical scale value.
 page_scale_percent={{scale}}%
 
-# Loading indicator messages
-loading_error_indicator=Gabim
-
 loading_error=Ndodhi një gabim gjatë ngarkimit të PDF-së.
 invalid_file_error=Kartelë PDF e pavlefshme ose e dëmtuar.
 missing_file_error=Kartelë PDF që mungon.
diff --git a/third-party/pdfjs/web/locale/sr/viewer.properties 
b/third-party/pdfjs/web/locale/sr/viewer.properties
index ea18b4031..9f997f9e9 100644
--- a/third-party/pdfjs/web/locale/sr/viewer.properties
+++ b/third-party/pdfjs/web/locale/sr/viewer.properties
@@ -48,16 +48,12 @@ bookmark_label=Тренутни приказ
 tools.title=Алатке
 tools_label=Алатке
 first_page.title=Иди на прву страницу
-first_page.label=Иди на прву страницу
 first_page_label=Иди на прву страницу
 last_page.title=Иди на последњу страницу
-last_page.label=Иди на последњу страницу
 last_page_label=Иди на последњу страницу
 page_rotate_cw.title=Ротирај у смеру казаљке на сату
-page_rotate_cw.label=Ротирај у смеру казаљке на сату
 page_rotate_cw_label=Ротирај у смеру казаљке на сату
 page_rotate_ccw.title=Ротирај у смеру супротном од казаљке на сату
-page_rotate_ccw.label=Ротирај у смеру супротном од казаљке на сату
 page_rotate_ccw_label=Ротирај у смеру супротном од казаљке на сату
 
 cursor_text_select_tool.title=Омогући алат за селектовање текста
@@ -137,7 +133,6 @@ print_progress_close=Откажи
 # (the _label strings are alt text for the buttons, the .title strings are
 # tooltips)
 toggle_sidebar.title=Прикажи додатну палету
-toggle_sidebar_notification.title=Прикажи додатну траку (докуменат садржи оквире/прилоге)
 toggle_sidebar_notification2.title=Прикажи/сакриј бочну траку (документ садржи контуру/прилоге/слојеве)
 toggle_sidebar_label=Прикажи додатну палету
 document_outline.title=Прикажи структуру документа (двоструким кликом проширујете/скупљате све ставке)
@@ -153,9 +148,6 @@ current_outline_item_label=Тренутна контура
 findbar.title=Пронађи у документу
 findbar_label=Пронађи
 
-# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
-page_canvas=Страница {{page}}
-
 additional_layers=Додатни слојеви
 # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number.
 page_landmark=Страница {{page}}
@@ -230,9 +222,6 @@ page_scale_actual=Стварна величина
 # numerical scale value.
 page_scale_percent={{scale}}%
 
-# Loading indicator messages
-loading_error_indicator=Грешка
-
 # Loading indicator messages
 loading=Учитавање…
 loading_error=Дошло је до грешке приликом учитавања PDF-а.
diff --git a/third-party/pdfjs/web/locale/sv-SE/viewer.properties 
b/third-party/pdfjs/web/locale/sv-SE/viewer.properties
index 60299d14b..75f675eab 100644
--- a/third-party/pdfjs/web/locale/sv-SE/viewer.properties
+++ b/third-party/pdfjs/web/locale/sv-SE/viewer.properties
@@ -48,16 +48,12 @@ bookmark_label=Aktuell vy
 tools.title=Verktyg
 tools_label=Verktyg
 first_page.title=Gå till första sidan
-first_page.label=Gå till första sidan
 first_page_label=Gå till första sidan
 last_page.title=Gå till sista sidan
-last_page.label=Gå till sista sidan
 last_page_label=Gå till sista sidan
 page_rotate_cw.title=Rotera medurs
-page_rotate_cw.label=Rotera medurs
 page_rotate_cw_label=Rotera medurs
 page_rotate_ccw.title=Rotera moturs
-page_rotate_ccw.label=Rotera moturs
 page_rotate_ccw_label=Rotera moturs
 
 cursor_text_select_tool.title=Aktivera textmarkeringsverktyg
@@ -137,7 +133,6 @@ print_progress_close=Avbryt
 # (the _label strings are alt text for the buttons, the .title strings are
 # tooltips)
 toggle_sidebar.title=Visa/dölj sidofält
-toggle_sidebar_notification.title=Visa/dölj sidofält (dokument innehåller översikt/bilagor)
 toggle_sidebar_notification2.title=Växla sidofält (dokumentet innehåller dokumentstruktur/bilagor/lager)
 toggle_sidebar_label=Visa/dölj sidofält
 document_outline.title=Visa dokumentdisposition (dubbelklicka för att expandera/komprimera alla objekt)
@@ -153,9 +148,6 @@ current_outline_item_label=Aktuellt dispositionsobjekt
 findbar.title=Sök i dokument
 findbar_label=Sök
 
-# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
-page_canvas=Sida {{page}}
-
 additional_layers=Ytterligare lager
 # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number.
 page_landmark=Sida {{page}}
@@ -230,9 +222,6 @@ page_scale_actual=Verklig storlek
 # numerical scale value.
 page_scale_percent={{scale}}%
 
-# Loading indicator messages
-loading_error_indicator=Fel
-
 # Loading indicator messages
 loading=Laddar…
 loading_error=Ett fel uppstod vid laddning av PDF-filen.
diff --git a/third-party/pdfjs/web/locale/szl/viewer.properties 
b/third-party/pdfjs/web/locale/szl/viewer.properties
index ed4bbd4e8..5980b6cc8 100644
--- a/third-party/pdfjs/web/locale/szl/viewer.properties
+++ b/third-party/pdfjs/web/locale/szl/viewer.properties
@@ -48,16 +48,12 @@ bookmark_label=Aktualny widok
 tools.title=Noczynia
 tools_label=Noczynia
 first_page.title=Idź ku piyrszyj strōnie
-first_page.label=Idź ku piyrszyj strōnie
 first_page_label=Idź ku piyrszyj strōnie
 last_page.title=Idź ku ôstatnij strōnie
-last_page.label=Idź ku ôstatnij strōnie
 last_page_label=Idź ku ôstatnij strōnie
 page_rotate_cw.title=Zwyrtnij w prawo
-page_rotate_cw.label=Zwyrtnij w prawo
 page_rotate_cw_label=Zwyrtnij w prawo
 page_rotate_ccw.title=Zwyrtnij w lewo
-page_rotate_ccw.label=Zwyrtnij w lewo
 page_rotate_ccw_label=Zwyrtnij w lewo
 
 cursor_text_select_tool.title=Załōncz noczynie ôbiyranio tekstu
@@ -137,7 +133,6 @@ print_progress_close=Pociep
 # (the _label strings are alt text for the buttons, the .title strings are
 # tooltips)
 toggle_sidebar.title=Przełōncz posek na rancie
-toggle_sidebar_notification.title=Przełōncz posek na rancie (dokumynt mo struktura/przidowki)
 toggle_sidebar_notification2.title=Przełōncz posek na rancie (dokumynt mo struktura/przidowki/warstwy)
 toggle_sidebar_label=Przełōncz posek na rancie
 document_outline.title=Pokoż struktura dokumyntu (tuplowane klikniyncie rozszyrzo/swijo wszyskie elymynta)
@@ -151,9 +146,6 @@ thumbs_label=Miniatury
 findbar.title=Znojdź w dokumyncie
 findbar_label=Znojdź
 
-# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
-page_canvas=Strōna {{page}}
-
 additional_layers=Nadbytnie warstwy
 # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number.
 # Thumbnails panel item (tooltip and alt text for images)
@@ -227,9 +219,6 @@ page_scale_actual=Aktualno srogość
 # numerical scale value.
 page_scale_percent={{scale}}%
 
-# Loading indicator messages
-loading_error_indicator=Feler
-
 # Loading indicator messages
 loading_error=Przi ladowaniu PDFa pokozoł sie feler.
 invalid_file_error=Zły abo felerny zbiōr PDF.
diff --git a/third-party/pdfjs/web/locale/ta/viewer.properties 
b/third-party/pdfjs/web/locale/ta/viewer.properties
index cade21bc7..d07a337d0 100644
--- a/third-party/pdfjs/web/locale/ta/viewer.properties
+++ b/third-party/pdfjs/web/locale/ta/viewer.properties
@@ -48,16 +48,12 @@ bookmark_label=தற்போதைய காட்சி
 tools.title=கருவிகள்
 tools_label=கருவிகள்
 first_page.title=முதல் பக்கத்திற்கு செல்லவும்
-first_page.label=முதல் பக்கத்திற்கு செல்லவும்
 first_page_label=முதல் பக்கத்திற்கு செல்லவும்
 last_page.title=கடைசி பக்கத்திற்கு செல்லவும்
-last_page.label=கடைசி பக்கத்திற்கு செல்லவும்
 last_page_label=கடைசி பக்கத்திற்கு செல்லவும்
 page_rotate_cw.title=வலஞ்சுழியாக சுழற்று
-page_rotate_cw.label=வலஞ்சுழியாக சுழற்று
 page_rotate_cw_label=வலஞ்சுழியாக சுழற்று
 page_rotate_ccw.title=இடஞ்சுழியாக சுழற்று
-page_rotate_ccw.label=இடஞ்சுழியாக சுழற்று
 page_rotate_ccw_label=இடஞ்சுழியாக சுழற்று
 
 cursor_text_select_tool.title=உரைத் தெரிவு கருவியைச் செயல்படுத்து
@@ -118,7 +114,6 @@ print_progress_close=ரத்து
 # (the _label strings are alt text for the buttons, the .title strings are
 # tooltips)
 toggle_sidebar.title=பக்கப் பட்டியை நிலைமாற்று
-toggle_sidebar_notification.title=பக்கப்பட்டையை நிலைமாற்று (வெளிக்கோடு/இணைப்புகளை ஆவணம் கொண்டுள்ளது)
 toggle_sidebar_label=பக்கப் பட்டியை நிலைமாற்று
 document_outline.title=ஆவண அடக்கத்தைக் காட்டு (இருமுறைச் சொடுக்கி அனைத்து உறுப்பிடிகளையும் விரி/சேர்)
 document_outline_label=ஆவண வெளிவரை
@@ -178,9 +173,6 @@ page_scale_actual=உண்மையான அளவு
 # numerical scale value.
 page_scale_percent={{scale}}%
 
-# Loading indicator messages
-loading_error_indicator=பிழை
-
 loading_error=PDF ஐ ஏற்றும் போது ஒரு பிழை ஏற்பட்டது.
 invalid_file_error=செல்லுபடியாகாத அல்லது சிதைந்த PDF கோப்பு.
 missing_file_error=PDF கோப்பு காணவில்லை.
diff --git a/third-party/pdfjs/web/locale/te/viewer.properties 
b/third-party/pdfjs/web/locale/te/viewer.properties
index 517509324..6cd691a01 100644
--- a/third-party/pdfjs/web/locale/te/viewer.properties
+++ b/third-party/pdfjs/web/locale/te/viewer.properties
@@ -48,16 +48,12 @@ bookmark_label=ప్రస్తుత దర్శనం
 tools.title=పనిముట్లు
 tools_label=పనిముట్లు
 first_page.title=మొదటి పేజీకి వెళ్ళు
-first_page.label=మొదటి పేజీకి వెళ్ళు
 first_page_label=మొదటి పేజీకి వెళ్ళు
 last_page.title=చివరి పేజీకి వెళ్ళు
-last_page.label=చివరి పేజీకి వెళ్ళు
 last_page_label=చివరి పేజీకి వెళ్ళు
 page_rotate_cw.title=సవ్యదిశలో తిప్పు
-page_rotate_cw.label=సవ్యదిశలో తిప్పు
 page_rotate_cw_label=సవ్యదిశలో తిప్పు
 page_rotate_ccw.title=అపసవ్యదిశలో తిప్పు
-page_rotate_ccw.label=అపసవ్యదిశలో తిప్పు
 page_rotate_ccw_label=అపసవ్యదిశలో తిప్పు
 
 cursor_text_select_tool.title=టెక్స్ట్ ఎంపిక సాధనాన్ని ప్రారంభించండి
@@ -136,9 +132,6 @@ thumbs_label=థంబ్‌నైల్స్
 findbar.title=పత్రములో కనుగొనుము
 findbar_label=కనుగొను
 
-# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
-page_canvas=పేజి {{page}}
-
 additional_layers=అదనపు పొరలు
 # Thumbnails panel item (tooltip and alt text for images)
 # LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
@@ -200,9 +193,6 @@ page_scale_actual=యథార్ధ పరిమాణం
 # numerical scale value.
 page_scale_percent={{scale}}%
 
-# Loading indicator messages
-loading_error_indicator=దోషం
-
 loading_error=PDF లోడవుచున్నప్పుడు ఒక దోషం ఎదురైంది.
 invalid_file_error=చెల్లని లేదా పాడైన PDF ఫైలు.
 missing_file_error=దొరకని PDF ఫైలు.
diff --git a/third-party/pdfjs/web/locale/th/viewer.properties 
b/third-party/pdfjs/web/locale/th/viewer.properties
index 4ce6147d0..78e859654 100644
--- a/third-party/pdfjs/web/locale/th/viewer.properties
+++ b/third-party/pdfjs/web/locale/th/viewer.properties
@@ -48,16 +48,12 @@ bookmark_label=มุมมองปัจจุบัน
 tools.title=เครื่องมือ
 tools_label=เครื่องมือ
 first_page.title=ไปยังหน้าแรก
-first_page.label=ไปยังหน้าแรก
 first_page_label=ไปยังหน้าแรก
 last_page.title=ไปยังหน้าสุดท้าย
-last_page.label=ไปยังหน้าสุดท้าย
 last_page_label=ไปยังหน้าสุดท้าย
 page_rotate_cw.title=หมุนตามเข็มนาฬิกา
-page_rotate_cw.label=หมุนตามเข็มนาฬิกา
 page_rotate_cw_label=หมุนตามเข็มนาฬิกา
 page_rotate_ccw.title=หมุนทวนเข็มนาฬิกา
-page_rotate_ccw.label=หมุนทวนเข็มนาฬิกา
 page_rotate_ccw_label=หมุนทวนเข็มนาฬิกา
 
 cursor_text_select_tool.title=เปิดใช้งานเครื่องมือการเลือกข้อความ
@@ -137,7 +133,6 @@ print_progress_close=ยกเลิก
 # (the _label strings are alt text for the buttons, the .title strings are
 # tooltips)
 toggle_sidebar.title=เปิด/ปิดแถบข้าง
-toggle_sidebar_notification.title=เปิด/ปิดแถบข้าง (เอกสารมีเค้าร่าง/ไฟล์แนบ)
 toggle_sidebar_notification2.title=เปิด/ปิดแถบข้าง (เอกสารมีเค้าร่าง/ไฟล์แนบ/เลเยอร์)
 toggle_sidebar_label=เปิด/ปิดแถบข้าง
 document_outline.title=แสดงเค้าร่างเอกสาร (คลิกสองครั้งเพื่อขยาย/ยุบรายการทั้งหมด)
@@ -153,9 +148,6 @@ current_outline_item_label=รายการเค้าร่างปัจ
 findbar.title=ค้นหาในเอกสาร
 findbar_label=ค้นหา
 
-# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
-page_canvas=หน้า {{page}}
-
 additional_layers=เลเยอร์เพิ่มเติม
 # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number.
 page_landmark=หน้า {{page}}
@@ -230,9 +222,6 @@ page_scale_actual=ขนาดจริง
 # numerical scale value.
 page_scale_percent={{scale}}%
 
-# Loading indicator messages
-loading_error_indicator=ข้อผิดพลาด
-
 # Loading indicator messages
 loading=กำลังโหลด…
 loading_error=เกิดข้อผิดพลาดขณะโหลด PDF
diff --git a/third-party/pdfjs/web/locale/tl/viewer.properties 
b/third-party/pdfjs/web/locale/tl/viewer.properties
index 6a9fd03b1..1e988e75e 100644
--- a/third-party/pdfjs/web/locale/tl/viewer.properties
+++ b/third-party/pdfjs/web/locale/tl/viewer.properties
@@ -48,16 +48,12 @@ bookmark_label=Kasalukuyang tingin
 tools.title=Mga Kagamitan
 tools_label=Mga Kagamitan
 first_page.title=Pumunta sa Unang Pahina
-first_page.label=Pumunta sa Unang Pahina
 first_page_label=Pumunta sa Unang Pahina
 last_page.title=Pumunta sa Huling Pahina
-last_page.label=Pumunta sa Huling Pahina
 last_page_label=Pumunta sa Huling Pahina
 page_rotate_cw.title=Paikutin Pakanan
-page_rotate_cw.label=Paikutin Pakanan
 page_rotate_cw_label=Paikutin Pakanan
 page_rotate_ccw.title=Paikutin Pakaliwa
-page_rotate_ccw.label=Paikutin Pakaliwa
 page_rotate_ccw_label=Paikutin Pakaliwa
 
 cursor_text_select_tool.title=I-enable ang Text Selection Tool
@@ -137,7 +133,6 @@ print_progress_close=Kanselahin
 # (the _label strings are alt text for the buttons, the .title strings are
 # tooltips)
 toggle_sidebar.title=Ipakita/Itago ang Sidebar
-toggle_sidebar_notification.title=Ipakita/Itago ang Sidebar (nagtataglay ang dokumento ng balangkas/mga 
attachment)
 toggle_sidebar_notification2.title=Ipakita/Itago ang Sidebar (nagtataglay ang dokumento ng balangkas/mga 
attachment/mga layer)
 toggle_sidebar_label=Ipakita/Itago ang Sidebar
 document_outline.title=Ipakita ang Document Outline (mag-double-click para i-expand/collapse ang laman)
@@ -151,9 +146,6 @@ thumbs_label=Mga thumbnail
 findbar.title=Hanapin sa Dokumento
 findbar_label=Hanapin
 
-# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
-page_canvas=Pahina {{page}}
-
 additional_layers=Mga Karagdagang Layer
 # Thumbnails panel item (tooltip and alt text for images)
 # LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
@@ -226,9 +218,6 @@ page_scale_actual=Totoong sukat
 # numerical scale value.
 page_scale_percent={{scale}}%
 
-# Loading indicator messages
-loading_error_indicator=Error
-
 loading_error=Nagkaproblema habang niloload ang PDF.
 invalid_file_error=Di-wasto o sira ang PDF file.
 missing_file_error=Nawawalang PDF file.
diff --git a/third-party/pdfjs/web/locale/tr/viewer.properties 
b/third-party/pdfjs/web/locale/tr/viewer.properties
index 7e14fbba2..7bfba6401 100644
--- a/third-party/pdfjs/web/locale/tr/viewer.properties
+++ b/third-party/pdfjs/web/locale/tr/viewer.properties
@@ -48,16 +48,12 @@ bookmark_label=Geçerli görünüm
 tools.title=Araçlar
 tools_label=Araçlar
 first_page.title=İlk sayfaya git
-first_page.label=İlk sayfaya git
 first_page_label=İlk sayfaya git
 last_page.title=Son sayfaya git
-last_page.label=Son sayfaya git
 last_page_label=Son sayfaya git
 page_rotate_cw.title=Saat yönünde döndür
-page_rotate_cw.label=Saat yönünde döndür
 page_rotate_cw_label=Saat yönünde döndür
 page_rotate_ccw.title=Saat yönünün tersine döndür
-page_rotate_ccw.label=Saat yönünün tersine döndür
 page_rotate_ccw_label=Saat yönünün tersine döndür
 
 cursor_text_select_tool.title=Metin seçme aracını etkinleştir
@@ -137,7 +133,6 @@ print_progress_close=İptal
 # (the _label strings are alt text for the buttons, the .title strings are
 # tooltips)
 toggle_sidebar.title=Kenar çubuğunu aç/kapat
-toggle_sidebar_notification.title=Kenar çubuğunu aç/kapat (Belge ana hat/ekler içeriyor)
 toggle_sidebar_notification2.title=Kenar çubuğunu aç/kapat (Belge ana hat/ekler/katmanlar içeriyor)
 toggle_sidebar_label=Kenar çubuğunu aç/kapat
 document_outline.title=Belge ana hatlarını göster (Tüm öğeleri genişletmek/daraltmak için çift tıklayın)
@@ -153,9 +148,6 @@ current_outline_item_label=Mevcut ana hat öğesi
 findbar.title=Belgede bul
 findbar_label=Bul
 
-# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
-page_canvas=Sayfa {{page}}
-
 additional_layers=Ek katmanlar
 # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number.
 page_landmark=Sayfa {{page}}
@@ -230,9 +222,6 @@ page_scale_actual=Gerçek boyut
 # numerical scale value.
 page_scale_percent=%{{scale}}
 
-# Loading indicator messages
-loading_error_indicator=Hata
-
 # Loading indicator messages
 loading=Yükleniyor…
 loading_error=PDF yüklenirken bir hata oluştu.
diff --git a/third-party/pdfjs/web/locale/trs/viewer.properties 
b/third-party/pdfjs/web/locale/trs/viewer.properties
index 65252f7fe..8bd1fe1db 100644
--- a/third-party/pdfjs/web/locale/trs/viewer.properties
+++ b/third-party/pdfjs/web/locale/trs/viewer.properties
@@ -48,16 +48,12 @@ bookmark_label=Daj hua ma
 tools.title=Rasun
 tools_label=Nej rasùun
 first_page.title=gun' riña pajina asiniin
-first_page.label=Gun' riña pajina asiniin
 first_page_label=Gun' riña pajina asiniin
 last_page.title=Gun' riña pajina rukù ni'in
-last_page.label=Gun' riña pajina rukù ni'inj
 last_page_label=Gun' riña pajina rukù ni'inj
 page_rotate_cw.title=Tanikaj ne' huat
-page_rotate_cw.label=Tanikaj ne' huat
 page_rotate_cw_label=Tanikaj ne' huat
 page_rotate_ccw.title=Tanikaj ne' chînt'
-page_rotate_ccw.label=Tanikaj ne' chint
 page_rotate_ccw_label=Tanikaj ne' chint
 
 cursor_text_select_tool.title=Dugi'iaj sun' sa ganahui texto
@@ -198,9 +194,6 @@ page_scale_actual=Dàj yàchi akuan' nín
 # numerical scale value.
 page_scale_percent={{scale}}%
 
-# Loading indicator messages
-loading_error_indicator=Nitaj si hua hue'ej
-
 # LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be
 # replaced by the modification date, and time, of the annotation.
 
diff --git a/third-party/pdfjs/web/locale/uk/viewer.properties 
b/third-party/pdfjs/web/locale/uk/viewer.properties
index 87d407c99..30c609185 100644
--- a/third-party/pdfjs/web/locale/uk/viewer.properties
+++ b/third-party/pdfjs/web/locale/uk/viewer.properties
@@ -48,16 +48,12 @@ bookmark_label=Поточний вигляд
 tools.title=Інструменти
 tools_label=Інструменти
 first_page.title=На першу сторінку
-first_page.label=На першу сторінку
 first_page_label=На першу сторінку
 last_page.title=На останню сторінку
-last_page.label=На останню сторінку
 last_page_label=На останню сторінку
 page_rotate_cw.title=Повернути за годинниковою стрілкою
-page_rotate_cw.label=Повернути за годинниковою стрілкою
 page_rotate_cw_label=Повернути за годинниковою стрілкою
 page_rotate_ccw.title=Повернути проти годинникової стрілки
-page_rotate_ccw.label=Повернути проти годинникової стрілки
 page_rotate_ccw_label=Повернути проти годинникової стрілки
 
 cursor_text_select_tool.title=Увімкнути інструмент вибору тексту
@@ -137,7 +133,6 @@ print_progress_close=Скасувати
 # (the _label strings are alt text for the buttons, the .title strings are
 # tooltips)
 toggle_sidebar.title=Бічна панель
-toggle_sidebar_notification.title=Перемкнути бічну панель (документ має вміст/вкладення)
 toggle_sidebar_notification2.title=Перемкнути бічну панель (документ містить ескіз/вкладення/шари)
 toggle_sidebar_label=Перемкнути бічну панель
 document_outline.title=Показати схему документу (подвійний клік для розгортання/згортання елементів)
@@ -153,9 +148,6 @@ current_outline_item_label=Поточний елемент змісту
 findbar.title=Знайти в документі
 findbar_label=Знайти
 
-# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
-page_canvas=Сторінка {{page}}
-
 additional_layers=Додаткові шари
 # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number.
 page_landmark=Сторінка {{page}}
@@ -230,9 +222,6 @@ page_scale_actual=Дійсний розмір
 # numerical scale value.
 page_scale_percent={{scale}}%
 
-# Loading indicator messages
-loading_error_indicator=Помилка
-
 # Loading indicator messages
 loading=Завантаження…
 loading_error=Під час завантаження PDF сталася помилка.
diff --git a/third-party/pdfjs/web/locale/ur/viewer.properties 
b/third-party/pdfjs/web/locale/ur/viewer.properties
index beaa4cfbf..6235c159f 100644
--- a/third-party/pdfjs/web/locale/ur/viewer.properties
+++ b/third-party/pdfjs/web/locale/ur/viewer.properties
@@ -48,16 +48,12 @@ bookmark_label=حالیہ نظارہ
 tools.title=آلات
 tools_label=آلات
 first_page.title=پہلے صفحہ پر جائیں
-first_page.label=پہلے صفحہ پر جائیں
 first_page_label=پہلے صفحہ پر جائیں
 last_page.title=آخری صفحہ پر جائیں
-last_page.label=آخری صفحہ پر جائیں
 last_page_label=آخری صفحہ پر جائیں
 page_rotate_cw.title=گھڑی وار گھمائیں
-page_rotate_cw.label=گھڑی وار گھمائیں
 page_rotate_cw_label=گھڑی وار گھمائیں
 page_rotate_ccw.title=ضد گھڑی وار گھمائیں
-page_rotate_ccw.label=ضد گھڑی وار گھمائیں
 page_rotate_ccw_label=ضد گھڑی وار گھمائیں
 
 cursor_text_select_tool.title=متن کے انتخاب کے ٹول کو فعال بناے
@@ -143,9 +139,6 @@ thumbs_label=مجمل
 findbar.title=دستاویز میں ڈھونڈیں
 findbar_label=ڈھونڈیں
 
-# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
-page_canvas=صفحہ {{page}}
-
 # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number.
 page_landmark=صفحہ {{page}}
 # Thumbnails panel item (tooltip and alt text for images)
@@ -218,9 +211,6 @@ page_scale_actual=اصل سائز
 # numerical scale value.
 page_scale_percent={{scale}}%
 
-# Loading indicator messages
-loading_error_indicator=نقص
-
 # Loading indicator messages
 loading_error=PDF لوڈ کرتے وقت نقص آ گیا۔
 invalid_file_error=ناجائز یا خراب PDF مسل
diff --git a/third-party/pdfjs/web/locale/uz/viewer.properties 
b/third-party/pdfjs/web/locale/uz/viewer.properties
index 638fde579..a17eb6b3b 100644
--- a/third-party/pdfjs/web/locale/uz/viewer.properties
+++ b/third-party/pdfjs/web/locale/uz/viewer.properties
@@ -46,16 +46,12 @@ bookmark_label=Joriy koʻrinish
 tools.title=Vositalar
 tools_label=Vositalar
 first_page.title=Birinchi sahifaga oʻtish
-first_page.label=Birinchi sahifaga oʻtish
 first_page_label=Birinchi sahifaga oʻtish
 last_page.title=Soʻnggi sahifaga oʻtish
-last_page.label=Soʻnggi sahifaga oʻtish
 last_page_label=Soʻnggi sahifaga oʻtish
 page_rotate_cw.title=Soat yoʻnalishi boʻyicha burish
-page_rotate_cw.label=Soat yoʻnalishi boʻyicha burish
 page_rotate_cw_label=Soat yoʻnalishi boʻyicha burish
 page_rotate_ccw.title=Soat yoʻnalishiga qarshi burish
-page_rotate_ccw.label=Soat yoʻnalishiga qarshi burish
 page_rotate_ccw_label=Soat yoʻnalishiga qarshi burish
 
 
@@ -147,9 +143,6 @@ page_scale_actual=Haqiqiy hajmi
 # numerical scale value.
 page_scale_percent={{scale}}%
 
-# Loading indicator messages
-loading_error_indicator=Xato
-
 loading_error=PDF yuklanayotganda xato yuz berdi.
 invalid_file_error=Xato yoki buzuq PDF fayli.
 missing_file_error=PDF fayl kerak.
diff --git a/third-party/pdfjs/web/locale/vi/viewer.properties 
b/third-party/pdfjs/web/locale/vi/viewer.properties
index a8aa396da..98aa8d14a 100644
--- a/third-party/pdfjs/web/locale/vi/viewer.properties
+++ b/third-party/pdfjs/web/locale/vi/viewer.properties
@@ -48,16 +48,12 @@ bookmark_label=Chế độ xem hiện tại
 tools.title=Công cụ
 tools_label=Công cụ
 first_page.title=Về trang đầu
-first_page.label=Về trang đầu
 first_page_label=Về trang đầu
 last_page.title=Đến trang cuối
-last_page.label=Đến trang cuối
 last_page_label=Đến trang cuối
 page_rotate_cw.title=Xoay theo chiều kim đồng hồ
-page_rotate_cw.label=Xoay theo chiều kim đồng hồ
 page_rotate_cw_label=Xoay theo chiều kim đồng hồ
 page_rotate_ccw.title=Xoay ngược chiều kim đồng hồ
-page_rotate_ccw.label=Xoay ngược chiều kim đồng hồ
 page_rotate_ccw_label=Xoay ngược chiều kim đồng hồ
 
 cursor_text_select_tool.title=Kích hoạt công cụ chọn vùng văn bản
@@ -137,7 +133,6 @@ print_progress_close=Hủy bỏ
 # (the _label strings are alt text for the buttons, the .title strings are
 # tooltips)
 toggle_sidebar.title=Bật/Tắt thanh lề
-toggle_sidebar_notification.title=Bật tắt thanh lề (tài liệu bao gồm bản phác thảo/tập tin đính kèm)
 toggle_sidebar_notification2.title=Bật tắt thanh lề (tài liệu bao gồm bản phác thảo/tập tin đính kèm/lớp)
 toggle_sidebar_label=Bật/Tắt thanh lề
 document_outline.title=Hiện tài liệu phác thảo (nhấp đúp vào để mở rộng/thu gọn tất cả các mục)
@@ -153,9 +148,6 @@ current_outline_item_label=Mục phác thảo hiện tại
 findbar.title=Tìm trong tài liệu
 findbar_label=Tìm
 
-# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
-page_canvas=Trang {{page}}
-
 additional_layers=Các lớp bổ sung
 # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number.
 page_landmark=Trang {{page}}
@@ -230,9 +222,6 @@ page_scale_actual=Kích thước thực
 # numerical scale value.
 page_scale_percent={{scale}}%
 
-# Loading indicator messages
-loading_error_indicator=Lỗi
-
 # Loading indicator messages
 loading=Đang tải…
 loading_error=Lỗi khi tải tài liệu PDF.
diff --git a/third-party/pdfjs/web/locale/wo/viewer.properties 
b/third-party/pdfjs/web/locale/wo/viewer.properties
index 3c7b89942..ca3f4c316 100644
--- a/third-party/pdfjs/web/locale/wo/viewer.properties
+++ b/third-party/pdfjs/web/locale/wo/viewer.properties
@@ -108,9 +108,6 @@ page_scale_actual=Dayo bi am
 # LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a
 # numerical scale value.
 
-# Loading indicator messages
-loading_error_indicator=Njumte
-
 loading_error=Am na njumte ci yebum dencukaay PDF bi.
 invalid_file_error=Dencukaay PDF bi baaxul walla mu sankar.
 
diff --git a/third-party/pdfjs/web/locale/xh/viewer.properties 
b/third-party/pdfjs/web/locale/xh/viewer.properties
index 6f76c4523..541ddbfc9 100644
--- a/third-party/pdfjs/web/locale/xh/viewer.properties
+++ b/third-party/pdfjs/web/locale/xh/viewer.properties
@@ -48,16 +48,12 @@ bookmark_label=Imbonakalo ekhoyo
 tools.title=Izixhobo zemiyalelo
 tools_label=Izixhobo zemiyalelo
 first_page.title=Yiya kwiphepha lokuqala
-first_page.label=Yiya kwiphepha lokuqala
 first_page_label=Yiya kwiphepha lokuqala
 last_page.title=Yiya kwiphepha lokugqibela
-last_page.label=Yiya kwiphepha lokugqibela
 last_page_label=Yiya kwiphepha lokugqibela
 page_rotate_cw.title=Jikelisa ngasekunene
-page_rotate_cw.label=Jikelisa ngasekunene
 page_rotate_cw_label=Jikelisa ngasekunene
 page_rotate_ccw.title=Jikelisa ngasekhohlo
-page_rotate_ccw.label=Jikelisa ngasekhohlo
 page_rotate_ccw_label=Jikelisa ngasekhohlo
 
 cursor_text_select_tool.title=Vumela iSixhobo sokuKhetha iTeksti
@@ -101,7 +97,6 @@ print_progress_close=Rhoxisa
 # (the _label strings are alt text for the buttons, the .title strings are
 # tooltips)
 toggle_sidebar.title=Togola ngebha eseCaleni
-toggle_sidebar_notification.title=ISidebar yeQhosha (uxwebhu lunolwandlalo/iziqhotyoshelwa)
 toggle_sidebar_label=Togola ngebha eseCaleni
 document_outline.title=Bonisa uLwandlalo loXwebhu (cofa kabini ukuze wandise/diliza zonke izinto)
 document_outline_label=Isishwankathelo soxwebhu
@@ -161,9 +156,6 @@ page_scale_actual=Ubungakanani bokwenene
 # numerical scale value.
 page_scale_percent={{scale}}%
 
-# Loading indicator messages
-loading_error_indicator=Imposiso
-
 loading_error=Imposiso yenzekile xa kulayishwa i-PDF.
 invalid_file_error=Ifayile ye-PDF engeyiyo okanye eyonakalisiweyo.
 missing_file_error=Ifayile ye-PDF edukileyo.
diff --git a/third-party/pdfjs/web/locale/zh-CN/viewer.properties 
b/third-party/pdfjs/web/locale/zh-CN/viewer.properties
index 0648ee277..b08377130 100644
--- a/third-party/pdfjs/web/locale/zh-CN/viewer.properties
+++ b/third-party/pdfjs/web/locale/zh-CN/viewer.properties
@@ -48,16 +48,12 @@ bookmark_label=当前在看
 tools.title=工具
 tools_label=工具
 first_page.title=转到第一页
-first_page.label=转到第一页
 first_page_label=转到第一页
 last_page.title=转到最后一页
-last_page.label=转到最后一页
 last_page_label=转到最后一页
 page_rotate_cw.title=顺时针旋转
-page_rotate_cw.label=顺时针旋转
 page_rotate_cw_label=顺时针旋转
 page_rotate_ccw.title=逆时针旋转
-page_rotate_ccw.label=逆时针旋转
 page_rotate_ccw_label=逆时针旋转
 
 cursor_text_select_tool.title=启用文本选择工具
@@ -137,7 +133,6 @@ print_progress_close=取消
 # (the _label strings are alt text for the buttons, the .title strings are
 # tooltips)
 toggle_sidebar.title=切换侧栏
-toggle_sidebar_notification.title=切换侧栏(文档所含的大纲/附件)
 toggle_sidebar_notification2.title=切换侧栏(文档所含的大纲/附件/图层)
 toggle_sidebar_label=切换侧栏
 document_outline.title=显示文档大纲(双击展开/折叠所有项)
@@ -153,9 +148,6 @@ current_outline_item_label=当前大纲项目
 findbar.title=在文档中查找
 findbar_label=查找
 
-# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
-page_canvas=第 {{page}} 页
-
 additional_layers=其他图层
 # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number.
 page_landmark=第 {{page}} 页
@@ -230,9 +222,6 @@ page_scale_actual=实际大小
 # numerical scale value.
 page_scale_percent={{scale}}%
 
-# Loading indicator messages
-loading_error_indicator=错误
-
 # Loading indicator messages
 loading=正在载入…
 loading_error=载入 PDF 时发生错误。
diff --git a/third-party/pdfjs/web/locale/zh-TW/viewer.properties 
b/third-party/pdfjs/web/locale/zh-TW/viewer.properties
index e29bcf428..322ffd20a 100644
--- a/third-party/pdfjs/web/locale/zh-TW/viewer.properties
+++ b/third-party/pdfjs/web/locale/zh-TW/viewer.properties
@@ -48,16 +48,12 @@ bookmark_label=目前檢視
 tools.title=工具
 tools_label=工具
 first_page.title=跳到第一頁
-first_page.label=跳到第一頁
 first_page_label=跳到第一頁
 last_page.title=跳到最後一頁
-last_page.label=跳到最後一頁
 last_page_label=跳到最後一頁
 page_rotate_cw.title=順時針旋轉
-page_rotate_cw.label=順時針旋轉
 page_rotate_cw_label=順時針旋轉
 page_rotate_ccw.title=逆時針旋轉
-page_rotate_ccw.label=逆時針旋轉
 page_rotate_ccw_label=逆時針旋轉
 
 cursor_text_select_tool.title=開啟文字選擇工具
@@ -137,7 +133,6 @@ print_progress_close=取消
 # (the _label strings are alt text for the buttons, the .title strings are
 # tooltips)
 toggle_sidebar.title=切換側邊欄
-toggle_sidebar_notification.title=切換側邊攔(文件包含大綱或附件)
 toggle_sidebar_notification2.title=切換側邊欄(包含大綱、附件、圖層的文件)
 toggle_sidebar_label=切換側邊欄
 document_outline.title=顯示文件大綱(雙擊展開/摺疊所有項目)
@@ -153,9 +148,6 @@ current_outline_item_label=目前的大綱項目
 findbar.title=在文件中尋找
 findbar_label=尋找
 
-# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
-page_canvas=第 {{page}} 頁
-
 additional_layers=其他圖層
 # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number.
 page_landmark=第 {{page}} 頁
@@ -230,9 +222,6 @@ page_scale_actual=實際大小
 # numerical scale value.
 page_scale_percent={{scale}}%
 
-# Loading indicator messages
-loading_error_indicator=錯誤
-
 # Loading indicator messages
 loading=載入中…
 loading_error=載入 PDF 時發生錯誤。
diff --git a/third-party/pdfjs/web/viewer.css b/third-party/pdfjs/web/viewer.css
index 5261568a8..81a09f7f5 100644
--- a/third-party/pdfjs/web/viewer.css
+++ b/third-party/pdfjs/web/viewer.css
@@ -70,6 +70,14 @@
   background: rgba(0, 0, 255, 1);
 }
 
+/* Avoids https://github.com/mozilla/pdf.js/issues/13840 in Chrome */
+.textLayer br::-moz-selection {
+  background: transparent;
+}
+.textLayer br::selection {
+  background: transparent;
+}
+
 .textLayer .endOfContent {
   display: block;
   position: absolute;
@@ -89,6 +97,10 @@
 }
 
 
+:root {
+  --annotation-unfocused-field-background: url("data:image/svg+xml;charset=UTF-8,<svg width='1px' 
height='1px' xmlns='http://www.w3.org/2000/svg'><rect width='100%' height='100%' style='fill:rgba(0, 54, 255, 
0.13);'/></svg>");
+}
+
 .annotationLayer section {
   position: absolute;
   text-align: initial;
@@ -121,7 +133,7 @@
 .annotationLayer .choiceWidgetAnnotation select,
 .annotationLayer .buttonWidgetAnnotation.checkBox input,
 .annotationLayer .buttonWidgetAnnotation.radioButton input {
-  background-color: rgba(0, 54, 255, 0.13);
+  background-image: var(--annotation-unfocused-field-background);
   border: 1px solid transparent;
   box-sizing: border-box;
   font-size: 9px;
@@ -171,6 +183,16 @@
   border: 1px solid transparent;
 }
 
+.annotationLayer .textWidgetAnnotation input :focus,
+.annotationLayer .textWidgetAnnotation textarea :focus,
+.annotationLayer .choiceWidgetAnnotation select :focus,
+.annotationLayer .buttonWidgetAnnotation.checkBox :focus,
+.annotationLayer .buttonWidgetAnnotation.radioButton :focus {
+  background-image: none;
+  background-color: transparent;
+  outline: auto;
+}
+
 .annotationLayer .buttonWidgetAnnotation.checkBox input:checked:before,
 .annotationLayer .buttonWidgetAnnotation.checkBox input:checked:after,
 .annotationLayer .buttonWidgetAnnotation.radioButton input:checked:before {
@@ -209,16 +231,6 @@
   padding-right: 0;
 }
 
-.annotationLayer .textWidgetAnnotation input.comb:focus {
-  /*
-   * Letter spacing is placed on the right side of each character. Hence, the
-   * letter spacing of the last character may be placed outside the visible
-   * area, causing horizontal scrolling. We avoid this by extending the width
-   * when the element has focus and revert this when it loses focus.
-   */
-  width: 103%;
-}
-
 .annotationLayer .buttonWidgetAnnotation.checkBox input,
 .annotationLayer .buttonWidgetAnnotation.radioButton input {
   -webkit-appearance: none;
@@ -285,6 +297,45 @@
 }
 
 
+:root {
+  --xfa-unfocused-field-background: url("data:image/svg+xml;charset=UTF-8,<svg width='1px' height='1px' 
xmlns='http://www.w3.org/2000/svg'><rect width='100%' height='100%' style='fill:rgba(0, 54, 255, 
0.13);'/></svg>");
+}
+
+.xfaLayer .highlight {
+  margin: -1px;
+  padding: 1px;
+  background-color: rgba(239, 203, 237, 1);
+  border-radius: 4px;
+}
+
+.xfaLayer .highlight.appended {
+  position: initial;
+}
+
+.xfaLayer .highlight.begin {
+  border-radius: 4px 0 0 4px;
+}
+
+.xfaLayer .highlight.end {
+  border-radius: 0 4px 4px 0;
+}
+
+.xfaLayer .highlight.middle {
+  border-radius: 0;
+}
+
+.xfaLayer .highlight.selected {
+  background-color: rgba(203, 223, 203, 1);
+}
+
+.xfaLayer ::-moz-selection {
+  background: rgba(0, 0, 255, 1);
+}
+
+.xfaLayer ::selection {
+  background: rgba(0, 0, 255, 1);
+}
+
 .xfaPage {
   overflow: hidden;
   position: relative;
@@ -317,10 +368,11 @@
   text-align: inherit;
   text-decoration: inherit;
   box-sizing: border-box;
-  background: transparent;
+  background-color: transparent;
   padding: 0;
   margin: 0;
   pointer-events: auto;
+  line-height: inherit;
 }
 
 .xfaLayer div {
@@ -356,7 +408,7 @@
 
 .xfaCaption {
   overflow: hidden;
-  flex: 0 1 auto;
+  flex: 0 0 auto;
 }
 
 .xfaCaptionForCheckButton {
@@ -375,8 +427,16 @@
   align-items: center;
 }
 
+.xfaRight {
+  display: flex;
+  flex-direction: row-reverse;
+  align-items: center;
+}
+
 .xfaLeft > .xfaCaption,
-.xfaLeft > .xfaCaptionForCheckButton {
+.xfaLeft > .xfaCaptionForCheckButton,
+.xfaRight > .xfaCaption,
+.xfaRight > .xfaCaptionForCheckButton {
   max-height: 100%;
 }
 
@@ -386,13 +446,21 @@
   align-items: flex-start;
 }
 
+.xfaBottom {
+  display: flex;
+  flex-direction: column-reverse;
+  align-items: flex-start;
+}
+
 .xfaTop > .xfaCaption,
-.xfaTop > .xfaCaptionForCheckButton {
+.xfaTop > .xfaCaptionForCheckButton,
+.xfaBottom > .xfaCaption,
+.xfaBottom > .xfaCaptionForCheckButton {
   width: 100%;
 }
 
 .xfaBorder {
-  background: transparent;
+  background-color: transparent;
   position: absolute;
   pointer-events: none;
 }
@@ -402,24 +470,34 @@
   height: 100%;
 }
 
-.xfaTextfield,
-.xfaSelect {
-  background-color: rgba(0, 54, 255, 0.13);
-}
-
 .xfaTextfield:focus,
 .xfaSelect:focus {
+  background-image: none;
   background-color: transparent;
-  outline: none;
+  outline: auto;
+  outline-offset: -1px;
+}
+
+.xfaCheckbox:focus,
+.xfaRadio:focus {
+  outline: auto;
 }
 
 .xfaTextfield,
 .xfaSelect {
-  width: 100%;
   height: 100%;
-  flex: 1 1 0;
+  width: 100%;
+  flex: 1 1 auto;
   border: none;
   resize: none;
+  background-image: var(--xfa-unfocused-field-background);
+}
+
+.xfaTop > .xfaTextfield,
+.xfaTop > .xfaSelect,
+.xfaBottom > .xfaTextfield,
+.xfaBottom > .xfaSelect {
+  flex: 0 1 auto;
 }
 
 .xfaButton {
@@ -430,8 +508,9 @@
   text-align: center;
 }
 
-.xfaButton:hover {
-  background: Highlight;
+.xfaLink {
+  width: 100%;
+  height: 100%;
 }
 
 .xfaCheckbox,
@@ -529,7 +608,7 @@
 @media print {
   .xfaTextfield,
   .xfaSelect {
-    background-color: transparent;
+    background: transparent;
   }
 
   .xfaSelect {
@@ -546,6 +625,7 @@
   --page-margin: 1px auto -8px;
   --page-border: 9px solid transparent;
   --spreadHorizontalWrapped-margin-LR: -3.5px;
+  --zoom-factor: 1;
 }
 
 @media screen and (forced-colors: active) {
@@ -685,6 +765,8 @@
   --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;
@@ -816,7 +898,6 @@
 
 @media screen and (forced-colors: active) {
   :root {
-    --main-color: ButtonText;
     --button-hover-color: Highlight;
     --doorhanger-hover-bg-color: Highlight;
     --toolbar-icon-opacity: 1;
@@ -1593,7 +1674,7 @@ html[dir="rtl"] #toolbarViewerLeft > .toolbarButton:first-child {
 }
 
 .dropdownToolbarButton {
-  width: 140px;
+  width: var(--scale-select-container-width);
   padding: 0;
   overflow: hidden;
   background-color: var(--dropdown-btn-bg-color);
@@ -1615,7 +1696,7 @@ html[dir="rtl"] .dropdownToolbarButton::after {
 
 .dropdownToolbarButton > select {
   -webkit-appearance: none;
-  width: 162px;
+  width: calc(var(--scale-select-container-width) + var(--scale-select-overflow));
   height: 28px;
   font-size: 12px;
   color: var(--main-color);
@@ -2564,7 +2645,7 @@ html[dir="rtl"] #documentPropertiesOverlay .row > * {
   }
 
   #printContainer > .xfaPrintedPage .xfaPage {
-    position: initial;
+    position: absolute;
   }
 
   #printContainer > .xfaPrintedPage {
diff --git a/third-party/pdfjs/web/viewer.js b/third-party/pdfjs/web/viewer.js
index d0064cf18..cad44eeb1 100644
--- a/third-party/pdfjs/web/viewer.js
+++ b/third-party/pdfjs/web/viewer.js
@@ -26,17 +26,36 @@
 /******/       var __webpack_modules__ = ([
 /* 0 */,
 /* 1 */
-/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
+/***/ ((__unused_webpack_module, exports) => {
 
 
 
 Object.defineProperty(exports, "__esModule", ({
   value: true
 }));
-exports.OptionKind = exports.AppOptions = void 0;
+exports.OptionKind = exports.compatibilityParams = exports.AppOptions = void 0;
+const compatibilityParams = Object.create(null);
+exports.compatibilityParams = compatibilityParams;
+{
+  const userAgent = typeof navigator !== "undefined" && navigator.userAgent || "";
+  const platform = typeof navigator !== "undefined" && navigator.platform || "";
+  const maxTouchPoints = typeof navigator !== "undefined" && navigator.maxTouchPoints || 1;
+  const isAndroid = /Android/.test(userAgent);
+  const isIOS = /\b(iPad|iPhone|iPod)(?=;)/.test(userAgent) || platform === "MacIntel" && maxTouchPoints > 1;
+  const isIOSChrome = /CriOS/.test(userAgent);
 
-var _viewer_compatibility = __webpack_require__(2);
+  (function checkOnBlobSupport() {
+    if (isIOSChrome) {
+      compatibilityParams.disableCreateObjectURL = true;
+    }
+  })();
 
+  (function checkCanvasSizeLimitation() {
+    if (isIOS || isAndroid) {
+      compatibilityParams.maxCanvasPixels = 5242880;
+    }
+  })();
+}
 const OptionKind = {
   VIEWER: 0x02,
   API: 0x04,
@@ -45,6 +64,10 @@ const OptionKind = {
 };
 exports.OptionKind = OptionKind;
 const defaultOptions = {
+  annotationMode: {
+    value: 2,
+    kind: OptionKind.VIEWER + OptionKind.PREFERENCE
+  },
   cursorToolOnLoad: {
     value: 0,
     kind: OptionKind.VIEWER + OptionKind.PREFERENCE
@@ -99,7 +122,7 @@ const defaultOptions = {
   },
   maxCanvasPixels: {
     value: 16777216,
-    compatibility: _viewer_compatibility.viewerCompatibilityParams.maxCanvasPixels,
+    compatibility: compatibilityParams.maxCanvasPixels,
     kind: OptionKind.VIEWER
   },
   pdfBugEnabled: {
@@ -114,10 +137,6 @@ const defaultOptions = {
     value: "canvas",
     kind: OptionKind.VIEWER
   },
-  renderInteractiveForms: {
-    value: true,
-    kind: OptionKind.VIEWER + OptionKind.PREFERENCE
-  },
   sidebarViewOnLoad: {
     value: -1,
     kind: OptionKind.VIEWER + OptionKind.PREFERENCE
@@ -175,7 +194,7 @@ const defaultOptions = {
     kind: OptionKind.API
   },
   enableXfa: {
-    value: false,
+    value: true,
     kind: OptionKind.API + OptionKind.PREFERENCE
   },
   fontExtraProperties: {
@@ -294,46 +313,16 @@ class AppOptions {
     delete userOptions[name];
   }
 
+  static _hasUserOptions() {
+    return Object.keys(userOptions).length > 0;
+  }
+
 }
 
 exports.AppOptions = AppOptions;
 
 /***/ }),
 /* 2 */
-/***/ ((__unused_webpack_module, exports) => {
-
-
-
-Object.defineProperty(exports, "__esModule", ({
-  value: true
-}));
-exports.viewerCompatibilityParams = void 0;
-const compatibilityParams = Object.create(null);
-{
-  const userAgent = typeof navigator !== "undefined" && navigator.userAgent || "";
-  const platform = typeof navigator !== "undefined" && navigator.platform || "";
-  const maxTouchPoints = typeof navigator !== "undefined" && navigator.maxTouchPoints || 1;
-  const isAndroid = /Android/.test(userAgent);
-  const isIOS = /\b(iPad|iPhone|iPod)(?=;)/.test(userAgent) || platform === "MacIntel" && maxTouchPoints > 1;
-  const isIOSChrome = /CriOS/.test(userAgent);
-
-  (function checkOnBlobSupport() {
-    if (isIOSChrome) {
-      compatibilityParams.disableCreateObjectURL = true;
-    }
-  })();
-
-  (function checkCanvasSizeLimitation() {
-    if (isIOS || isAndroid) {
-      compatibilityParams.maxCanvasPixels = 5242880;
-    }
-  })();
-}
-const viewerCompatibilityParams = Object.freeze(compatibilityParams);
-exports.viewerCompatibilityParams = viewerCompatibilityParams;
-
-/***/ }),
-/* 3 */
 /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
 
 
@@ -343,57 +332,54 @@ Object.defineProperty(exports, "__esModule", ({
 }));
 exports.PDFViewerApplication = exports.PDFPrintServiceFactory = exports.DefaultExternalServices = void 0;
 
-var _ui_utils = __webpack_require__(4);
+var _ui_utils = __webpack_require__(3);
 
 var _app_options = __webpack_require__(1);
 
-var _pdfjsLib = __webpack_require__(5);
+var _pdfjsLib = __webpack_require__(4);
 
-var _pdf_cursor_tools = __webpack_require__(6);
+var _pdf_cursor_tools = __webpack_require__(5);
 
-var _pdf_rendering_queue = __webpack_require__(8);
+var _pdf_rendering_queue = __webpack_require__(7);
 
-var _overlay_manager = __webpack_require__(9);
+var _overlay_manager = __webpack_require__(8);
 
-var _password_prompt = __webpack_require__(10);
+var _password_prompt = __webpack_require__(9);
 
-var _pdf_attachment_viewer = __webpack_require__(11);
+var _pdf_attachment_viewer = __webpack_require__(10);
 
-var _pdf_document_properties = __webpack_require__(13);
+var _pdf_document_properties = __webpack_require__(12);
 
-var _pdf_find_bar = __webpack_require__(14);
+var _pdf_find_bar = __webpack_require__(13);
 
-var _pdf_find_controller = __webpack_require__(15);
+var _pdf_find_controller = __webpack_require__(14);
 
-var _pdf_history = __webpack_require__(17);
+var _pdf_history = __webpack_require__(16);
 
-var _pdf_layer_viewer = __webpack_require__(18);
+var _pdf_layer_viewer = __webpack_require__(17);
 
-var _pdf_link_service = __webpack_require__(19);
+var _pdf_link_service = __webpack_require__(18);
 
-var _pdf_outline_viewer = __webpack_require__(20);
+var _pdf_outline_viewer = __webpack_require__(19);
 
-var _pdf_presentation_mode = __webpack_require__(21);
+var _pdf_presentation_mode = __webpack_require__(20);
 
-var _pdf_scripting_manager = __webpack_require__(22);
+var _pdf_scripting_manager = __webpack_require__(21);
 
-var _pdf_sidebar = __webpack_require__(23);
+var _pdf_sidebar = __webpack_require__(22);
 
-var _pdf_sidebar_resizer = __webpack_require__(24);
+var _pdf_sidebar_resizer = __webpack_require__(23);
 
-var _pdf_thumbnail_viewer = __webpack_require__(25);
+var _pdf_thumbnail_viewer = __webpack_require__(24);
 
-var _pdf_viewer = __webpack_require__(27);
+var _pdf_viewer = __webpack_require__(26);
 
 var _secondary_toolbar = __webpack_require__(35);
 
 var _toolbar = __webpack_require__(37);
 
-var _viewer_compatibility = __webpack_require__(2);
-
 var _view_history = __webpack_require__(38);
 
-const DEFAULT_SCALE_DELTA = 1.1;
 const DISABLE_AUTO_FETCH_LOADING_BAR_TIMEOUT = 5000;
 const FORCE_PAGES_LOADED_TIMEOUT = 10000;
 const WHEEL_ZOOM_DISABLED_TIMEOUT = 1000;
@@ -499,6 +485,7 @@ const PDFViewerApplication = {
   isViewerEmbedded: window.parent !== window,
   url: "",
   baseUrl: "",
+  _downloadUrl: "",
   externalServices: DefaultExternalServices,
   _boundEvents: Object.create(null),
   documentInfo: null,
@@ -541,6 +528,10 @@ const PDFViewerApplication = {
       return;
     }
 
+    if (_app_options.AppOptions._hasUserOptions()) {
+      console.warn("_readPreferences: The Preferences may override manually set AppOptions; " + 'please use 
the "disablePreferences"-option in order to prevent that.');
+    }
+
     try {
       _app_options.AppOptions.setAll(await this.preferences.getAll());
     } catch (reason) {
@@ -550,48 +541,48 @@ const PDFViewerApplication = {
 
   async _parseHashParameters() {
     if (!_app_options.AppOptions.get("pdfBugEnabled")) {
-      return undefined;
+      return;
     }
 
     const hash = document.location.hash.substring(1);
 
     if (!hash) {
-      return undefined;
+      return;
     }
 
-    const hashParams = (0, _ui_utils.parseQueryString)(hash),
+    const params = (0, _ui_utils.parseQueryString)(hash),
           waitOn = [];
 
-    if ("disableworker" in hashParams && hashParams.disableworker === "true") {
+    if (params.get("disableworker") === "true") {
       waitOn.push(loadFakeWorker());
     }
 
-    if ("disablerange" in hashParams) {
-      _app_options.AppOptions.set("disableRange", hashParams.disablerange === "true");
+    if (params.has("disablerange")) {
+      _app_options.AppOptions.set("disableRange", params.get("disablerange") === "true");
     }
 
-    if ("disablestream" in hashParams) {
-      _app_options.AppOptions.set("disableStream", hashParams.disablestream === "true");
+    if (params.has("disablestream")) {
+      _app_options.AppOptions.set("disableStream", params.get("disablestream") === "true");
     }
 
-    if ("disableautofetch" in hashParams) {
-      _app_options.AppOptions.set("disableAutoFetch", hashParams.disableautofetch === "true");
+    if (params.has("disableautofetch")) {
+      _app_options.AppOptions.set("disableAutoFetch", params.get("disableautofetch") === "true");
     }
 
-    if ("disablefontface" in hashParams) {
-      _app_options.AppOptions.set("disableFontFace", hashParams.disablefontface === "true");
+    if (params.has("disablefontface")) {
+      _app_options.AppOptions.set("disableFontFace", params.get("disablefontface") === "true");
     }
 
-    if ("disablehistory" in hashParams) {
-      _app_options.AppOptions.set("disableHistory", hashParams.disablehistory === "true");
+    if (params.has("disablehistory")) {
+      _app_options.AppOptions.set("disableHistory", params.get("disablehistory") === "true");
     }
 
-    if ("verbosity" in hashParams) {
-      _app_options.AppOptions.set("verbosity", hashParams.verbosity | 0);
+    if (params.has("verbosity")) {
+      _app_options.AppOptions.set("verbosity", params.get("verbosity") | 0);
     }
 
-    if ("textlayer" in hashParams) {
-      switch (hashParams.textlayer) {
+    if (params.has("textlayer")) {
+      switch (params.get("textlayer")) {
         case "off":
           _app_options.AppOptions.set("textLayerMode", _ui_utils.TextLayerMode.DISABLE);
 
@@ -601,31 +592,33 @@ const PDFViewerApplication = {
         case "shadow":
         case "hover":
           const viewer = this.appConfig.viewerContainer;
-          viewer.classList.add("textLayer-" + hashParams.textlayer);
+          viewer.classList.add(`textLayer-${params.get("textlayer")}`);
           break;
       }
     }
 
-    if ("pdfbug" in hashParams) {
+    if (params.has("pdfbug")) {
       _app_options.AppOptions.set("pdfBug", true);
 
       _app_options.AppOptions.set("fontExtraProperties", true);
 
-      const enabled = hashParams.pdfbug.split(",");
-      waitOn.push(loadAndEnablePDFBug(enabled));
+      const enabled = params.get("pdfbug").split(",");
+      waitOn.push(initPDFBug(enabled));
     }
 
-    if ("locale" in hashParams) {
-      _app_options.AppOptions.set("locale", hashParams.locale);
+    if (params.has("locale")) {
+      _app_options.AppOptions.set("locale", params.get("locale"));
     }
 
     if (waitOn.length === 0) {
-      return undefined;
+      return;
     }
 
-    return Promise.all(waitOn).catch(reason => {
+    try {
+      await Promise.all(waitOn);
+    } catch (reason) {
       console.error(`_parseHashParameters: "${reason.message}".`);
-    });
+    }
   },
 
   async _initializeL10n() {
@@ -675,10 +668,20 @@ const PDFViewerApplication = {
   },
 
   async _initializeViewerComponents() {
-    const appConfig = this.appConfig;
-    const eventBus = appConfig.eventBus || new _ui_utils.EventBus({
-      isInAutomation: this.externalServices.isInAutomation
-    });
+    const {
+      appConfig,
+      externalServices
+    } = this;
+    let eventBus;
+
+    if (appConfig.eventBus) {
+      eventBus = appConfig.eventBus;
+    } else if (externalServices.isInAutomation) {
+      eventBus = new _ui_utils.AutomationEventBus();
+    } else {
+      eventBus = new _ui_utils.EventBus();
+    }
+
     this.eventBus = eventBus;
     this.overlayManager = new _overlay_manager.OverlayManager();
     const pdfRenderingQueue = new _pdf_rendering_queue.PDFRenderingQueue();
@@ -691,7 +694,7 @@ const PDFViewerApplication = {
       ignoreDestinationZoom: _app_options.AppOptions.get("ignoreDestinationZoom")
     });
     this.pdfLinkService = pdfLinkService;
-    const downloadManager = this.externalServices.createDownloadManager();
+    const downloadManager = externalServices.createDownloadManager();
     this.downloadManager = downloadManager;
     const findController = new _pdf_find_controller.PDFFindController({
       linkService: pdfLinkService,
@@ -701,7 +704,7 @@ const PDFViewerApplication = {
     const pdfScriptingManager = new _pdf_scripting_manager.PDFScriptingManager({
       eventBus,
       sandboxBundleSrc: _app_options.AppOptions.get("sandboxBundleSrc"),
-      scriptingFactory: this.externalServices,
+      scriptingFactory: externalServices,
       docPropertiesLookup: this._scriptingDocProperties.bind(this)
     });
     this.pdfScriptingManager = pdfScriptingManager;
@@ -715,16 +718,15 @@ const PDFViewerApplication = {
       linkService: pdfLinkService,
       downloadManager,
       findController,
-      scriptingManager: pdfScriptingManager,
+      scriptingManager: _app_options.AppOptions.get("enableScripting") && pdfScriptingManager,
       renderer: _app_options.AppOptions.get("renderer"),
       l10n: this.l10n,
       textLayerMode: _app_options.AppOptions.get("textLayerMode"),
+      annotationMode: _app_options.AppOptions.get("annotationMode"),
       imageResourcesPath: _app_options.AppOptions.get("imageResourcesPath"),
-      renderInteractiveForms: _app_options.AppOptions.get("renderInteractiveForms"),
       enablePrintAutoRotate: _app_options.AppOptions.get("enablePrintAutoRotate"),
       useOnlyCssZoom: _app_options.AppOptions.get("useOnlyCssZoom"),
-      maxCanvasPixels: _app_options.AppOptions.get("maxCanvasPixels"),
-      enableScripting: _app_options.AppOptions.get("enableScripting")
+      maxCanvasPixels: _app_options.AppOptions.get("maxCanvasPixels")
     });
     pdfRenderingQueue.setViewer(this.pdfViewer);
     pdfLinkService.setViewer(this.pdfViewer);
@@ -737,11 +739,14 @@ const PDFViewerApplication = {
       l10n: this.l10n
     });
     pdfRenderingQueue.setThumbnailViewer(this.pdfThumbnailViewer);
-    this.pdfHistory = new _pdf_history.PDFHistory({
-      linkService: pdfLinkService,
-      eventBus
-    });
-    pdfLinkService.setHistory(this.pdfHistory);
+
+    if (!this.isViewerEmbedded && !_app_options.AppOptions.get("disableHistory")) {
+      this.pdfHistory = new _pdf_history.PDFHistory({
+        linkService: pdfLinkService,
+        eventBus
+      });
+      pdfLinkService.setHistory(this.pdfHistory);
+    }
 
     if (!this.supportsIntegratedFind) {
       this.findBar = new _pdf_find_bar.PDFFindBar(appConfig.findBar, eventBus, this.l10n);
@@ -803,36 +808,20 @@ const PDFViewerApplication = {
     return this._initializedCapability.promise;
   },
 
-  zoomIn(ticks) {
+  zoomIn(steps) {
     if (this.pdfViewer.isInPresentationMode) {
       return;
     }
 
-    let newScale = this.pdfViewer.currentScale;
-
-    do {
-      newScale = (newScale * DEFAULT_SCALE_DELTA).toFixed(2);
-      newScale = Math.ceil(newScale * 10) / 10;
-      newScale = Math.min(_ui_utils.MAX_SCALE, newScale);
-    } while (--ticks > 0 && newScale < _ui_utils.MAX_SCALE);
-
-    this.pdfViewer.currentScaleValue = newScale;
+    this.pdfViewer.increaseScale(steps);
   },
 
-  zoomOut(ticks) {
+  zoomOut(steps) {
     if (this.pdfViewer.isInPresentationMode) {
       return;
     }
 
-    let newScale = this.pdfViewer.currentScale;
-
-    do {
-      newScale = (newScale / DEFAULT_SCALE_DELTA).toFixed(2);
-      newScale = Math.floor(newScale * 10) / 10;
-      newScale = Math.max(_ui_utils.MIN_SCALE, newScale);
-    } while (--ticks > 0 && newScale > _ui_utils.MIN_SCALE);
-
-    this.pdfViewer.currentScaleValue = newScale;
+    this.pdfViewer.decreaseScale(steps);
   },
 
   zoomReset() {
@@ -860,14 +849,7 @@ const PDFViewerApplication = {
   },
 
   get supportsFullscreen() {
-    const doc = document.documentElement;
-    let support = !!(doc.requestFullscreen || doc.mozRequestFullScreen || doc.webkitRequestFullScreen);
-
-    if (document.fullscreenEnabled === false || document.mozFullScreenEnabled === false || 
document.webkitFullscreenEnabled === false) {
-      support = false;
-    }
-
-    return (0, _pdfjsLib.shadow)(this, "supportsFullscreen", support);
+    return (0, _pdfjsLib.shadow)(this, "supportsFullscreen", document.fullscreenEnabled || 
document.mozFullScreenEnabled || document.webkitFullscreenEnabled);
   },
 
   get supportsIntegratedFind() {
@@ -891,9 +873,14 @@ const PDFViewerApplication = {
     throw new Error("Not implemented: initPassiveLoading");
   },
 
-  setTitleUsingUrl(url = "") {
+  setTitleUsingUrl(url = "", downloadUrl = null) {
     this.url = url;
     this.baseUrl = url.split("#")[0];
+
+    if (downloadUrl) {
+      this._downloadUrl = downloadUrl === url ? this.baseUrl : downloadUrl.split("#")[0];
+    }
+
     let title = (0, _pdfjsLib.getPdfFilenameFromUrl)(url, "");
 
     if (!title) {
@@ -919,6 +906,15 @@ const PDFViewerApplication = {
     return this._contentDispositionFilename || (0, _pdfjsLib.getPdfFilenameFromUrl)(this.url);
   },
 
+  _hideViewBookmark() {
+    const {
+      toolbar,
+      secondaryToolbar
+    } = this.appConfig;
+    toolbar.viewBookmark.hidden = true;
+    secondaryToolbar.viewBookmarkButton.hidden = true;
+  },
+
   _cancelIdleCallbacks() {
     if (!this._idleCallbacks.size) {
       return;
@@ -934,6 +930,8 @@ const PDFViewerApplication = {
   async close() {
     this._unblockDocumentLoadEvent();
 
+    this._hideViewBookmark();
+
     const {
       container
     } = this.appConfig.errorWrapper;
@@ -971,6 +969,7 @@ const PDFViewerApplication = {
     this.downloadComplete = false;
     this.url = "";
     this.baseUrl = "";
+    this._downloadUrl = "";
     this.documentInfo = null;
     this.metadata = null;
     this._contentDispositionFilename = null;
@@ -984,15 +983,8 @@ const PDFViewerApplication = {
     this.pdfOutlineViewer.reset();
     this.pdfAttachmentViewer.reset();
     this.pdfLayerViewer.reset();
-
-    if (this.pdfHistory) {
-      this.pdfHistory.reset();
-    }
-
-    if (this.findBar) {
-      this.findBar.reset();
-    }
-
+    this.pdfHistory?.reset();
+    this.findBar?.reset();
     this.toolbar.reset();
     this.secondaryToolbar.reset();
 
@@ -1017,12 +1009,12 @@ const PDFViewerApplication = {
     const parameters = Object.create(null);
 
     if (typeof file === "string") {
-      this.setTitleUsingUrl(file);
+      this.setTitleUsingUrl(file, file);
       parameters.url = file;
     } else if (file && "byteLength" in file) {
       parameters.data = file;
     } else if (file.url && file.originalUrl) {
-      this.setTitleUsingUrl(file.originalUrl);
+      this.setTitleUsingUrl(file.originalUrl, file.url);
       parameters.url = file.url;
     }
 
@@ -1097,7 +1089,7 @@ const PDFViewerApplication = {
   async download({
     sourceEventType = "download"
   } = {}) {
-    const url = this.baseUrl,
+    const url = this._downloadUrl,
           filename = this._docFilename;
 
     try {
@@ -1122,7 +1114,7 @@ const PDFViewerApplication = {
 
     this._saveInProgress = true;
     await this.pdfScriptingManager.dispatchWillSave();
-    const url = this.baseUrl,
+    const url = this._downloadUrl,
           filename = this._docFilename;
 
     try {
@@ -1134,6 +1126,7 @@ const PDFViewerApplication = {
       });
       await this.downloadManager.download(blob, url, filename, sourceEventType);
     } catch (reason) {
+      console.error(`Error when saving the document: ${reason.message}`);
       await this.download({
         sourceEventType
       });
@@ -1566,8 +1559,8 @@ const PDFViewerApplication = {
 
     this.documentInfo = info;
     this.metadata = metadata;
-    this._contentDispositionFilename ?? (this._contentDispositionFilename = contentDispositionFilename);
-    this._contentLength ?? (this._contentLength = contentLength);
+    this._contentDispositionFilename ??= contentDispositionFilename;
+    this._contentLength ??= contentLength;
     console.log(`PDF ${pdfDocument.fingerprints[0]} [${info.PDFFormatVersion} ` + `${(info.Producer || 
"-").trim()} / ${(info.Creator || "-").trim()}] ` + `(PDF.js: ${_pdfjsLib.version || "-"})`);
     let pdfTitle = info?.Title;
     const metadataTitle = metadata?.get("dc:title");
@@ -1585,9 +1578,14 @@ const PDFViewerApplication = {
     }
 
     if (info.IsXFAPresent && !info.IsAcroFormPresent && !pdfDocument.isPureXfa) {
-      console.warn("Warning: XFA support is not enabled");
+      if (pdfDocument.loadingParams.enableXfa) {
+        console.warn("Warning: XFA Foreground documents are not supported");
+      } else {
+        console.warn("Warning: XFA support is not enabled");
+      }
+
       this.fallback(_pdfjsLib.UNSUPPORTED_FEATURES.forms);
-    } else if ((info.IsAcroFormPresent || info.IsXFAPresent) && !this.pdfViewer.renderInteractiveForms) {
+    } else if ((info.IsAcroFormPresent || info.IsXFAPresent) && !this.pdfViewer.renderForms) {
       console.warn("Warning: Interactive form support is not enabled");
       this.fallback(_pdfjsLib.UNSUPPORTED_FEATURES.forms);
     }
@@ -1680,7 +1678,7 @@ const PDFViewerApplication = {
     viewOnLoad,
     initialDest = null
   }) {
-    if (this.isViewerEmbedded || _app_options.AppOptions.get("disableHistory")) {
+    if (!this.pdfHistory) {
       return;
     }
 
@@ -1842,10 +1840,7 @@ const PDFViewerApplication = {
     if (this.printService) {
       this.printService.destroy();
       this.printService = null;
-
-      if (this.pdfDocument) {
-        this.pdfDocument.annotationStorage.resetModified();
-      }
+      this.pdfDocument?.annotationStorage.resetModified();
     }
 
     this.forceRendering();
@@ -1856,11 +1851,7 @@ const PDFViewerApplication = {
   },
 
   requestPresentationMode() {
-    if (!this.pdfPresentationMode) {
-      return;
-    }
-
-    this.pdfPresentationMode.request();
+    this.pdfPresentationMode?.request();
   },
 
   triggerPrinting() {
@@ -2210,17 +2201,18 @@ async function loadFakeWorker() {
     _pdfjsLib.GlobalWorkerOptions.workerSrc = _app_options.AppOptions.get("workerSrc");
   }
 
-  return (0, _pdfjsLib.loadScript)(_pdfjsLib.PDFWorker.getWorkerSrc());
+  await (0, _pdfjsLib.loadScript)(_pdfjsLib.PDFWorker.workerSrc);
 }
 
-function loadAndEnablePDFBug(enabledTabs) {
-  const appConfig = PDFViewerApplication.appConfig;
-  return (0, _pdfjsLib.loadScript)(appConfig.debuggerScriptPath).then(function () {
-    PDFBug.enable(enabledTabs);
-    PDFBug.init({
-      OPS: _pdfjsLib.OPS
-    }, appConfig.mainContainer);
-  });
+async function initPDFBug(enabledTabs) {
+  const {
+    debuggerScriptPath,
+    mainContainer
+  } = PDFViewerApplication.appConfig;
+  await (0, _pdfjsLib.loadScript)(debuggerScriptPath);
+  PDFBug.init({
+    OPS: _pdfjsLib.OPS
+  }, mainContainer, enabledTabs);
 }
 
 function reportPageStatsPDFBug({
@@ -2315,7 +2307,7 @@ function webViewerInitialized() {
       });
     }
   }, true);
-
+  
   var file_name = document.head.getAttribute('pdf_name')
   var raw = atob(document.head.getAttribute('pdf_data'));
   var raw_length = raw.length;
@@ -2338,6 +2330,8 @@ function webViewerInitialized() {
 function webViewerOpenFileViaURL(file) {
   if (file) {
     PDFViewerApplication.open(file);
+  } else {
+    PDFViewerApplication._hideViewBookmark();
   }
 }
 
@@ -2526,7 +2520,7 @@ function webViewerHashchange(evt) {
 
   if (!PDFViewerApplication.isInitialViewSet) {
     PDFViewerApplication.initialBookmark = hash;
-  } else if (!PDFViewerApplication.pdfHistory.popStateInProgress) {
+  } else if (!PDFViewerApplication.pdfHistory?.popStateInProgress) {
     PDFViewerApplication.pdfLinkService.setHash(hash);
   }
 }
@@ -2540,7 +2534,7 @@ let webViewerFileInputChange, webViewerOpenFile;
 
     const file = evt.fileInput.files[0];
 
-    if (!_viewer_compatibility.viewerCompatibilityParams.disableCreateObjectURL) {
+    if (!_app_options.compatibilityParams.disableCreateObjectURL) {
       let url = URL.createObjectURL(file);
 
       if (file.name) {
@@ -2562,12 +2556,6 @@ let webViewerFileInputChange, webViewerOpenFile;
 
       fileReader.readAsArrayBuffer(file);
     }
-
-    const appConfig = PDFViewerApplication.appConfig;
-    appConfig.toolbar.viewBookmark.hidden = true;
-    appConfig.secondaryToolbar.viewBookmarkButton.hidden = true;
-    appConfig.toolbar.download.hidden = true;
-    appConfig.secondaryToolbar.downloadButton.hidden = true;
   };
 
   webViewerOpenFile = function (evt) {
@@ -3153,7 +3141,7 @@ const PDFPrintServiceFactory = {
 exports.PDFPrintServiceFactory = PDFPrintServiceFactory;
 
 /***/ }),
-/* 4 */
+/* 3 */
 /***/ ((__unused_webpack_module, exports) => {
 
 
@@ -3183,13 +3171,13 @@ exports.roundToDivide = roundToDivide;
 exports.scrollIntoView = scrollIntoView;
 exports.waitOnEventOrTimeout = waitOnEventOrTimeout;
 exports.watchScroll = watchScroll;
-exports.WaitOnType = exports.VERTICAL_PADDING = exports.UNKNOWN_SCALE = exports.TextLayerMode = 
exports.SpreadMode = exports.SidebarView = exports.ScrollMode = exports.SCROLLBAR_PADDING = 
exports.RendererType = exports.ProgressBar = exports.PresentationModeState = exports.MIN_SCALE = 
exports.MAX_SCALE = exports.MAX_AUTO_SCALE = exports.EventBus = exports.DEFAULT_SCALE_VALUE = 
exports.DEFAULT_SCALE = exports.CSS_UNITS = exports.AutoPrintRegExp = exports.animationStarted = void 0;
-const CSS_UNITS = 96.0 / 72.0;
-exports.CSS_UNITS = CSS_UNITS;
+exports.WaitOnType = exports.VERTICAL_PADDING = exports.UNKNOWN_SCALE = exports.TextLayerMode = 
exports.SpreadMode = exports.SidebarView = exports.ScrollMode = exports.SCROLLBAR_PADDING = 
exports.RendererType = exports.ProgressBar = exports.PresentationModeState = exports.MIN_SCALE = 
exports.MAX_SCALE = exports.MAX_AUTO_SCALE = exports.EventBus = exports.DEFAULT_SCALE_VALUE = 
exports.DEFAULT_SCALE_DELTA = exports.DEFAULT_SCALE = exports.AutoPrintRegExp = exports.AutomationEventBus = 
exports.animationStarted = void 0;
 const DEFAULT_SCALE_VALUE = "auto";
 exports.DEFAULT_SCALE_VALUE = DEFAULT_SCALE_VALUE;
 const DEFAULT_SCALE = 1.0;
 exports.DEFAULT_SCALE = DEFAULT_SCALE;
+const DEFAULT_SCALE_DELTA = 1.1;
+exports.DEFAULT_SCALE_DELTA = DEFAULT_SCALE_DELTA;
 const MIN_SCALE = 0.1;
 exports.MIN_SCALE = MIN_SCALE;
 const MAX_SCALE = 10.0;
@@ -3334,14 +3322,13 @@ function watchScroll(viewAreaElement, callback) {
 }
 
 function parseQueryString(query) {
-  const parts = query.split("&");
-  const params = Object.create(null);
+  const params = new Map();
 
-  for (let i = 0, ii = parts.length; i < ii; ++i) {
-    const param = parts[i].split("=");
-    const key = param[0].toLowerCase();
-    const value = param.length > 1 ? param[1] : null;
-    params[decodeURIComponent(key)] = decodeURIComponent(value);
+  for (const part of query.split("&")) {
+    const param = part.split("="),
+          key = param[0].toLowerCase(),
+          value = param.length > 1 ? param[1] : "";
+    params.set(decodeURIComponent(key), decodeURIComponent(value));
   }
 
   return params;
@@ -3656,12 +3643,8 @@ const animationStarted = new Promise(function (resolve) {
 });
 exports.animationStarted = animationStarted;
 
-function dispatchDOMEvent(eventName, args = null) {
-  throw new Error("Not implemented: dispatchDOMEvent");
-}
-
 class EventBus {
-  constructor(options) {
+  constructor() {
     this._listeners = Object.create(null);
   }
 
@@ -3679,14 +3662,13 @@ class EventBus {
     });
   }
 
-  dispatch(eventName) {
+  dispatch(eventName, data) {
     const eventListeners = this._listeners[eventName];
 
     if (!eventListeners || eventListeners.length === 0) {
       return;
     }
 
-    const args = Array.prototype.slice.call(arguments, 1);
     let externalListeners;
 
     for (const {
@@ -3699,16 +3681,16 @@ class EventBus {
       }
 
       if (external) {
-        (externalListeners || (externalListeners = [])).push(listener);
+        (externalListeners ||= []).push(listener);
         continue;
       }
 
-      listener.apply(null, args);
+      listener(data);
     }
 
     if (externalListeners) {
       for (const listener of externalListeners) {
-        listener.apply(null, args);
+        listener(data);
       }
 
       externalListeners = null;
@@ -3716,9 +3698,7 @@ class EventBus {
   }
 
   _on(eventName, listener, options = null) {
-    var _this$_listeners;
-
-    const eventListeners = (_this$_listeners = this._listeners)[eventName] || (_this$_listeners[eventName] = 
[]);
+    const eventListeners = this._listeners[eventName] ||= [];
     eventListeners.push({
       listener,
       external: options?.external === true,
@@ -3745,6 +3725,15 @@ class EventBus {
 
 exports.EventBus = EventBus;
 
+class AutomationEventBus extends EventBus {
+  dispatch(eventName, data) {
+    throw new Error("Not implemented: AutomationEventBus.dispatch");
+  }
+
+}
+
+exports.AutomationEventBus = AutomationEventBus;
+
 function clamp(v, min, max) {
   return Math.min(Math.max(v, min), max);
 }
@@ -3895,7 +3884,7 @@ function apiPageModeToSidebarView(mode) {
 }
 
 /***/ }),
-/* 5 */
+/* 4 */
 /***/ ((module) => {
 
 
@@ -3911,7 +3900,7 @@ if (typeof window !== "undefined" && window["pdfjs-dist/build/pdf"]) {
 module.exports = pdfjsLib;
 
 /***/ }),
-/* 6 */
+/* 5 */
 /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
 
 
@@ -3921,9 +3910,9 @@ Object.defineProperty(exports, "__esModule", ({
 }));
 exports.PDFCursorTools = exports.CursorTool = void 0;
 
-var _grab_to_pan = __webpack_require__(7);
+var _grab_to_pan = __webpack_require__(6);
 
-var _ui_utils = __webpack_require__(4);
+var _ui_utils = __webpack_require__(3);
 
 const CursorTool = {
   SELECT: 0,
@@ -4038,7 +4027,7 @@ class PDFCursorTools {
 exports.PDFCursorTools = PDFCursorTools;
 
 /***/ }),
-/* 7 */
+/* 6 */
 /***/ ((__unused_webpack_module, exports) => {
 
 
@@ -4186,7 +4175,7 @@ function isLeftMouseReleased(event) {
 }
 
 /***/ }),
-/* 8 */
+/* 7 */
 /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
 
 
@@ -4196,7 +4185,7 @@ Object.defineProperty(exports, "__esModule", ({
 }));
 exports.RenderingStates = exports.PDFRenderingQueue = void 0;
 
-var _pdfjsLib = __webpack_require__(5);
+var _pdfjsLib = __webpack_require__(4);
 
 const CLEANUP_TIMEOUT = 30000;
 const RenderingStates = {
@@ -4230,6 +4219,10 @@ class PDFRenderingQueue {
     return this.highestPriorityPage === view.renderingId;
   }
 
+  hasViewer() {
+    return !!this.pdfViewer;
+  }
+
   renderHighestPriority(currentlyVisiblePages) {
     if (this.idleTimeout) {
       clearTimeout(this.idleTimeout);
@@ -4255,7 +4248,7 @@ class PDFRenderingQueue {
     }
   }
 
-  getHighestPriority(visible, views, scrolledDown) {
+  getHighestPriority(visible, views, scrolledDown, preRenderExtra = false) {
     const visibleViews = visible.views;
     const numVisible = visibleViews.length;
 
@@ -4271,17 +4264,19 @@ class PDFRenderingQueue {
       }
     }
 
-    if (scrolledDown) {
-      const nextPageIndex = visible.last.id;
+    let preRenderIndex = scrolledDown ? visible.last.id : visible.first.id - 2;
+    let preRenderView = views[preRenderIndex];
 
-      if (views[nextPageIndex] && !this.isViewFinished(views[nextPageIndex])) {
-        return views[nextPageIndex];
-      }
-    } else {
-      const previousPageIndex = visible.first.id - 2;
+    if (preRenderView && !this.isViewFinished(preRenderView)) {
+      return preRenderView;
+    }
+
+    if (preRenderExtra) {
+      preRenderIndex += scrolledDown ? 1 : -1;
+      preRenderView = views[preRenderIndex];
 
-      if (views[previousPageIndex] && !this.isViewFinished(views[previousPageIndex])) {
-        return views[previousPageIndex];
+      if (preRenderView && !this.isViewFinished(preRenderView)) {
+        return preRenderView;
       }
     }
 
@@ -4328,7 +4323,7 @@ class PDFRenderingQueue {
 exports.PDFRenderingQueue = PDFRenderingQueue;
 
 /***/ }),
-/* 9 */
+/* 8 */
 /***/ ((__unused_webpack_module, exports) => {
 
 
@@ -4438,7 +4433,7 @@ class OverlayManager {
 exports.OverlayManager = OverlayManager;
 
 /***/ }),
-/* 10 */
+/* 9 */
 /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
 
 
@@ -4448,7 +4443,7 @@ Object.defineProperty(exports, "__esModule", ({
 }));
 exports.PasswordPrompt = void 0;
 
-var _pdfjsLib = __webpack_require__(5);
+var _pdfjsLib = __webpack_require__(4);
 
 class PasswordPrompt {
   constructor(options, overlayManager, l10n, isViewerEmbedded = false) {
@@ -4509,7 +4504,7 @@ class PasswordPrompt {
 exports.PasswordPrompt = PasswordPrompt;
 
 /***/ }),
-/* 11 */
+/* 10 */
 /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
 
 
@@ -4519,9 +4514,9 @@ Object.defineProperty(exports, "__esModule", ({
 }));
 exports.PDFAttachmentViewer = void 0;
 
-var _pdfjsLib = __webpack_require__(5);
+var _pdfjsLib = __webpack_require__(4);
 
-var _base_tree_viewer = __webpack_require__(12);
+var _base_tree_viewer = __webpack_require__(11);
 
 class PDFAttachmentViewer extends _base_tree_viewer.BaseTreeViewer {
   constructor(options) {
@@ -4664,7 +4659,7 @@ class PDFAttachmentViewer extends _base_tree_viewer.BaseTreeViewer {
 exports.PDFAttachmentViewer = PDFAttachmentViewer;
 
 /***/ }),
-/* 12 */
+/* 11 */
 /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
 
 
@@ -4674,7 +4669,7 @@ Object.defineProperty(exports, "__esModule", ({
 }));
 exports.BaseTreeViewer = void 0;
 
-var _pdfjsLib = __webpack_require__(5);
+var _pdfjsLib = __webpack_require__(4);
 
 const TREEITEM_OFFSET_TOP = -100;
 const TREEITEM_SELECTED_CLASS = "selected";
@@ -4798,7 +4793,7 @@ class BaseTreeViewer {
 exports.BaseTreeViewer = BaseTreeViewer;
 
 /***/ }),
-/* 13 */
+/* 12 */
 /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
 
 
@@ -4808,9 +4803,9 @@ Object.defineProperty(exports, "__esModule", ({
 }));
 exports.PDFDocumentProperties = void 0;
 
-var _pdfjsLib = __webpack_require__(5);
+var _pdfjsLib = __webpack_require__(4);
 
-var _ui_utils = __webpack_require__(4);
+var _ui_utils = __webpack_require__(3);
 
 const DEFAULT_FIELD_CONTENT = "-";
 const NON_METRIC_LOCALES = ["en-us", "en-lr", "my"];
@@ -5070,7 +5065,7 @@ class PDFDocumentProperties {
 exports.PDFDocumentProperties = PDFDocumentProperties;
 
 /***/ }),
-/* 14 */
+/* 13 */
 /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
 
 
@@ -5080,7 +5075,7 @@ Object.defineProperty(exports, "__esModule", ({
 }));
 exports.PDFFindBar = void 0;
 
-var _pdf_find_controller = __webpack_require__(15);
+var _pdf_find_controller = __webpack_require__(14);
 
 const MATCHES_COUNT_LIMIT = 1000;
 
@@ -5271,7 +5266,7 @@ class PDFFindBar {
 exports.PDFFindBar = PDFFindBar;
 
 /***/ }),
-/* 15 */
+/* 14 */
 /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
 
 
@@ -5281,11 +5276,11 @@ Object.defineProperty(exports, "__esModule", ({
 }));
 exports.PDFFindController = exports.FindState = void 0;
 
-var _pdfjsLib = __webpack_require__(5);
+var _pdfjsLib = __webpack_require__(4);
 
-var _pdf_find_utils = __webpack_require__(16);
+var _pdf_find_utils = __webpack_require__(15);
 
-var _ui_utils = __webpack_require__(4);
+var _ui_utils = __webpack_require__(3);
 
 const FindState = {
   FOUND: 0,
@@ -5325,7 +5320,7 @@ function normalize(text) {
           diff = normalizedCh.length - ch.length;
 
     if (diff !== 0) {
-      (diffs || (diffs = [])).push([index, diff]);
+      (diffs ||= []).push([index, diff]);
     }
 
     return normalizedCh;
@@ -6000,7 +5995,7 @@ class PDFFindController {
 exports.PDFFindController = PDFFindController;
 
 /***/ }),
-/* 16 */
+/* 15 */
 /***/ ((__unused_webpack_module, exports) => {
 
 
@@ -6095,7 +6090,7 @@ function getCharacterType(charCode) {
 }
 
 /***/ }),
-/* 17 */
+/* 16 */
 /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
 
 
@@ -6107,7 +6102,7 @@ exports.isDestArraysEqual = isDestArraysEqual;
 exports.isDestHashesEqual = isDestHashesEqual;
 exports.PDFHistory = void 0;
 
-var _ui_utils = __webpack_require__(4);
+var _ui_utils = __webpack_require__(3);
 
 const HASH_CHANGE_TIMEOUT = 1000;
 const POSITION_UPDATED_THRESHOLD = 50;
@@ -6496,8 +6491,8 @@ class PDFHistory {
   _parseCurrentHash(checkNameddest = false) {
     const hash = unescape(getCurrentHash()).substring(1);
     const params = (0, _ui_utils.parseQueryString)(hash);
-    const nameddest = params.nameddest || "";
-    let page = params.page | 0;
+    const nameddest = params.get("nameddest") || "";
+    let page = params.get("page") | 0;
 
     if (!this._isValidPage(page) || checkNameddest && nameddest.length > 0) {
       page = null;
@@ -6655,9 +6650,7 @@ function isDestHashesEqual(destHash, pushHash) {
     return true;
   }
 
-  const {
-    nameddest
-  } = (0, _ui_utils.parseQueryString)(destHash);
+  const nameddest = (0, _ui_utils.parseQueryString)(destHash).get("nameddest");
 
   if (nameddest === pushHash) {
     return true;
@@ -6711,7 +6704,7 @@ function isDestArraysEqual(firstDest, secondDest) {
 }
 
 /***/ }),
-/* 18 */
+/* 17 */
 /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
 
 
@@ -6721,7 +6714,7 @@ Object.defineProperty(exports, "__esModule", ({
 }));
 exports.PDFLayerViewer = void 0;
 
-var _base_tree_viewer = __webpack_require__(12);
+var _base_tree_viewer = __webpack_require__(11);
 
 class PDFLayerViewer extends _base_tree_viewer.BaseTreeViewer {
   constructor(options) {
@@ -6895,7 +6888,7 @@ class PDFLayerViewer extends _base_tree_viewer.BaseTreeViewer {
 exports.PDFLayerViewer = PDFLayerViewer;
 
 /***/ }),
-/* 19 */
+/* 18 */
 /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
 
 
@@ -6905,7 +6898,9 @@ Object.defineProperty(exports, "__esModule", ({
 }));
 exports.SimpleLinkService = exports.PDFLinkService = void 0;
 
-var _ui_utils = __webpack_require__(4);
+var _pdfjsLib = __webpack_require__(4);
+
+var _ui_utils = __webpack_require__(3);
 
 class PDFLinkService {
   constructor({
@@ -7050,6 +7045,15 @@ class PDFLinkService {
     });
   }
 
+  addLinkAttributes(link, url, newWindow = false) {
+    (0, _pdfjsLib.addLinkAttributes)(link, {
+      url,
+      target: newWindow ? _pdfjsLib.LinkTarget.BLANK : this.externalLinkTarget,
+      rel: this.externalLinkRel,
+      enabled: this.externalLinkEnabled
+    });
+  }
+
   getDestinationHash(dest) {
     if (typeof dest === "string") {
       if (dest.length > 0) {
@@ -7080,20 +7084,20 @@ class PDFLinkService {
     if (hash.includes("=")) {
       const params = (0, _ui_utils.parseQueryString)(hash);
 
-      if ("search" in params) {
+      if (params.has("search")) {
         this.eventBus.dispatch("findfromurlhash", {
           source: this,
-          query: params.search.replace(/"/g, ""),
-          phraseSearch: params.phrase === "true"
+          query: params.get("search").replace(/"/g, ""),
+          phraseSearch: params.get("phrase") === "true"
         });
       }
 
-      if ("page" in params) {
-        pageNumber = params.page | 0 || 1;
+      if (params.has("page")) {
+        pageNumber = params.get("page") | 0 || 1;
       }
 
-      if ("zoom" in params) {
-        const zoomArgs = params.zoom.split(",");
+      if (params.has("zoom")) {
+        const zoomArgs = params.get("zoom").split(",");
         const zoomArg = zoomArgs[0];
         const zoomArgNumber = parseFloat(zoomArg);
 
@@ -7134,15 +7138,15 @@ class PDFLinkService {
         this.page = pageNumber;
       }
 
-      if ("pagemode" in params) {
+      if (params.has("pagemode")) {
         this.eventBus.dispatch("pagemode", {
           source: this,
-          mode: params.pagemode
+          mode: params.get("pagemode")
         });
       }
 
-      if ("nameddest" in params) {
-        this.goToDestination(params.nameddest);
+      if (params.has("nameddest")) {
+        this.goToDestination(params.get("nameddest"));
       }
     } else {
       dest = unescape(hash);
@@ -7167,17 +7171,11 @@ class PDFLinkService {
   executeNamedAction(action) {
     switch (action) {
       case "GoBack":
-        if (this.pdfHistory) {
-          this.pdfHistory.back();
-        }
-
+        this.pdfHistory?.back();
         break;
 
       case "GoForward":
-        if (this.pdfHistory) {
-          this.pdfHistory.forward();
-        }
-
+        this.pdfHistory?.forward();
         break;
 
       case "NextPage":
@@ -7304,10 +7302,7 @@ function isValidExplicitDestination(dest) {
 
 class SimpleLinkService {
   constructor() {
-    this.externalLinkTarget = null;
-    this.externalLinkRel = null;
     this.externalLinkEnabled = true;
-    this._ignoreDestinationZoom = false;
   }
 
   get pagesCount() {
@@ -7330,6 +7325,13 @@ class SimpleLinkService {
 
   goToPage(val) {}
 
+  addLinkAttributes(link, url, newWindow = false) {
+    (0, _pdfjsLib.addLinkAttributes)(link, {
+      url,
+      enabled: this.externalLinkEnabled
+    });
+  }
+
   getDestinationHash(dest) {
     return "#";
   }
@@ -7357,7 +7359,7 @@ class SimpleLinkService {
 exports.SimpleLinkService = SimpleLinkService;
 
 /***/ }),
-/* 20 */
+/* 19 */
 /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
 
 
@@ -7367,11 +7369,11 @@ Object.defineProperty(exports, "__esModule", ({
 }));
 exports.PDFOutlineViewer = void 0;
 
-var _pdfjsLib = __webpack_require__(5);
+var _base_tree_viewer = __webpack_require__(11);
 
-var _base_tree_viewer = __webpack_require__(12);
+var _pdfjsLib = __webpack_require__(4);
 
-var _ui_utils = __webpack_require__(4);
+var _ui_utils = __webpack_require__(3);
 
 class PDFOutlineViewer extends _base_tree_viewer.BaseTreeViewer {
   constructor(options) {
@@ -7439,12 +7441,7 @@ class PDFOutlineViewer extends _base_tree_viewer.BaseTreeViewer {
     } = this;
 
     if (url) {
-      (0, _pdfjsLib.addLinkAttributes)(element, {
-        url,
-        target: newWindow ? _pdfjsLib.LinkTarget.BLANK : linkService.externalLinkTarget,
-        rel: linkService.externalLinkRel,
-        enabled: linkService.externalLinkEnabled
-      });
+      linkService.addLinkAttributes(element, url, newWindow);
       return;
     }
 
@@ -7697,7 +7694,7 @@ class PDFOutlineViewer extends _base_tree_viewer.BaseTreeViewer {
 exports.PDFOutlineViewer = PDFOutlineViewer;
 
 /***/ }),
-/* 21 */
+/* 20 */
 /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
 
 
@@ -7707,7 +7704,7 @@ Object.defineProperty(exports, "__esModule", ({
 }));
 exports.PDFPresentationMode = void 0;
 
-var _ui_utils = __webpack_require__(4);
+var _ui_utils = __webpack_require__(3);
 
 const DELAY_BEFORE_RESETTING_SWITCH_IN_PROGRESS = 1500;
 const DELAY_BEFORE_HIDING_CONTROLS = 3000;
@@ -8056,7 +8053,7 @@ class PDFPresentationMode {
 exports.PDFPresentationMode = PDFPresentationMode;
 
 /***/ }),
-/* 22 */
+/* 21 */
 /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
 
 
@@ -8066,11 +8063,11 @@ Object.defineProperty(exports, "__esModule", ({
 }));
 exports.PDFScriptingManager = void 0;
 
-var _pdfjsLib = __webpack_require__(5);
+var _pdfjsLib = __webpack_require__(4);
 
-var _ui_utils = __webpack_require__(4);
+var _ui_utils = __webpack_require__(3);
 
-var _pdf_rendering_queue = __webpack_require__(8);
+var _pdf_rendering_queue = __webpack_require__(7);
 
 class PDFScriptingManager {
   constructor({
@@ -8333,6 +8330,49 @@ class PDFScriptingManager {
 
           this._pdfViewer.currentScaleValue = value;
           break;
+
+        case "SaveAs":
+          this._eventBus.dispatch("save", {
+            source: this
+          });
+
+          break;
+
+        case "FirstPage":
+          this._pdfViewer.currentPageNumber = 1;
+          break;
+
+        case "LastPage":
+          this._pdfViewer.currentPageNumber = this._pdfViewer.pagesCount;
+          break;
+
+        case "NextPage":
+          this._pdfViewer.nextPage();
+
+          break;
+
+        case "PrevPage":
+          this._pdfViewer.previousPage();
+
+          break;
+
+        case "ZoomViewIn":
+          if (isInPresentationMode) {
+            return;
+          }
+
+          this._pdfViewer.increaseScale();
+
+          break;
+
+        case "ZoomViewOut":
+          if (isInPresentationMode) {
+            return;
+          }
+
+          this._pdfViewer.decreaseScale();
+
+          break;
       }
 
       return;
@@ -8504,7 +8544,7 @@ class PDFScriptingManager {
 exports.PDFScriptingManager = PDFScriptingManager;
 
 /***/ }),
-/* 23 */
+/* 22 */
 /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
 
 
@@ -8514,9 +8554,9 @@ Object.defineProperty(exports, "__esModule", ({
 }));
 exports.PDFSidebar = void 0;
 
-var _ui_utils = __webpack_require__(4);
+var _ui_utils = __webpack_require__(3);
 
-var _pdf_rendering_queue = __webpack_require__(8);
+var _pdf_rendering_queue = __webpack_require__(7);
 
 const UI_NOTIFICATION_CLASS = "pdfSidebarNotification";
 
@@ -8864,7 +8904,7 @@ class PDFSidebar {
 exports.PDFSidebar = PDFSidebar;
 
 /***/ }),
-/* 24 */
+/* 23 */
 /***/ ((__unused_webpack_module, exports) => {
 
 
@@ -8896,7 +8936,7 @@ class PDFSidebarResizer {
   }
 
   get outerContainerWidth() {
-    return this._outerContainerWidth || (this._outerContainerWidth = this.outerContainer.clientWidth);
+    return this._outerContainerWidth ||= this.outerContainer.clientWidth;
   }
 
   _updateWidth(width = 0) {
@@ -8995,7 +9035,7 @@ class PDFSidebarResizer {
 exports.PDFSidebarResizer = PDFSidebarResizer;
 
 /***/ }),
-/* 25 */
+/* 24 */
 /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
 
 
@@ -9005,11 +9045,11 @@ Object.defineProperty(exports, "__esModule", ({
 }));
 exports.PDFThumbnailViewer = void 0;
 
-var _ui_utils = __webpack_require__(4);
+var _ui_utils = __webpack_require__(3);
 
-var _pdf_thumbnail_view = __webpack_require__(26);
+var _pdf_thumbnail_view = __webpack_require__(25);
 
-var _pdf_rendering_queue = __webpack_require__(8);
+var _pdf_rendering_queue = __webpack_require__(7);
 
 const THUMBNAIL_SCROLL_MARGIN = -19;
 const THUMBNAIL_SELECTED_CLASS = "selected";
@@ -9118,9 +9158,12 @@ class PDFThumbnailViewer {
     }
 
     this._pagesRotation = rotation;
+    const updateArgs = {
+      rotation
+    };
 
-    for (let i = 0, ii = this._thumbnails.length; i < ii; i++) {
-      this._thumbnails[i].update(rotation);
+    for (const thumbnail of this._thumbnails) {
+      thumbnail.update(updateArgs);
     }
   }
 
@@ -9275,7 +9318,7 @@ class PDFThumbnailViewer {
 exports.PDFThumbnailViewer = PDFThumbnailViewer;
 
 /***/ }),
-/* 26 */
+/* 25 */
 /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
 
 
@@ -9285,11 +9328,11 @@ Object.defineProperty(exports, "__esModule", ({
 }));
 exports.TempImageFactory = exports.PDFThumbnailView = void 0;
 
-var _ui_utils = __webpack_require__(4);
+var _ui_utils = __webpack_require__(3);
 
-var _pdfjsLib = __webpack_require__(5);
+var _pdfjsLib = __webpack_require__(4);
 
-var _pdf_rendering_queue = __webpack_require__(8);
+var _pdf_rendering_queue = __webpack_require__(7);
 
 const DRAW_UPSCALE_FACTOR = 2;
 const MAX_NUM_SCALING_STEPS = 3;
@@ -9438,8 +9481,10 @@ class PDFThumbnailView {
     }
   }
 
-  update(rotation) {
-    if (typeof rotation !== "undefined") {
+  update({
+    rotation = null
+  }) {
+    if (typeof rotation === "number") {
       this.rotation = rotation;
     }
 
@@ -9678,7 +9723,7 @@ class PDFThumbnailView {
 exports.PDFThumbnailView = PDFThumbnailView;
 
 /***/ }),
-/* 27 */
+/* 26 */
 /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
 
 
@@ -9688,11 +9733,11 @@ Object.defineProperty(exports, "__esModule", ({
 }));
 exports.PDFViewer = void 0;
 
-var _ui_utils = __webpack_require__(4);
+var _ui_utils = __webpack_require__(3);
 
-var _base_viewer = __webpack_require__(28);
+var _base_viewer = __webpack_require__(27);
 
-var _pdfjsLib = __webpack_require__(5);
+var _pdfjsLib = __webpack_require__(4);
 
 class PDFViewer extends _base_viewer.BaseViewer {
   get _viewerElement() {
@@ -9766,7 +9811,7 @@ class PDFViewer extends _base_viewer.BaseViewer {
 exports.PDFViewer = PDFViewer;
 
 /***/ }),
-/* 28 */
+/* 27 */
 /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
 
 
@@ -9776,21 +9821,23 @@ Object.defineProperty(exports, "__esModule", ({
 }));
 exports.BaseViewer = void 0;
 
-var _pdfjsLib = __webpack_require__(5);
+var _pdfjsLib = __webpack_require__(4);
+
+var _ui_utils = __webpack_require__(3);
 
-var _ui_utils = __webpack_require__(4);
+var _pdf_rendering_queue = __webpack_require__(7);
 
-var _pdf_rendering_queue = __webpack_require__(8);
+var _annotation_layer_builder = __webpack_require__(28);
 
-var _annotation_layer_builder = __webpack_require__(29);
+var _l10n_utils = __webpack_require__(29);
 
-var _l10n_utils = __webpack_require__(30);
+var _pdf_page_view = __webpack_require__(30);
 
-var _pdf_page_view = __webpack_require__(31);
+var _pdf_link_service = __webpack_require__(18);
 
-var _pdf_link_service = __webpack_require__(19);
+var _struct_tree_layer_builder = __webpack_require__(31);
 
-var _struct_tree_layer_builder = __webpack_require__(32);
+var _text_highlighter = __webpack_require__(32);
 
 var _text_layer_builder = __webpack_require__(33);
 
@@ -9858,13 +9905,12 @@ class BaseViewer {
       throw new Error("Cannot initialize BaseViewer.");
     }
 
-    const viewerVersion = '2.10.377';
+    const viewerVersion = '2.11.338';
 
     if (_pdfjsLib.version !== viewerVersion) {
       throw new Error(`The API version "${_pdfjsLib.version}" does not match the Viewer version 
"${viewerVersion}".`);
     }
 
-    this._name = this.constructor.name;
     this.container = options.container;
     this.viewer = options.viewer || options.container.firstElementChild;
 
@@ -9882,15 +9928,14 @@ class BaseViewer {
     this.findController = options.findController || null;
     this._scriptingManager = options.scriptingManager || null;
     this.removePageBorders = options.removePageBorders || false;
-    this.textLayerMode = Number.isInteger(options.textLayerMode) ? options.textLayerMode : 
_ui_utils.TextLayerMode.ENABLE;
+    this.textLayerMode = options.textLayerMode ?? _ui_utils.TextLayerMode.ENABLE;
+    this._annotationMode = options.annotationMode ?? _pdfjsLib.AnnotationMode.ENABLE_FORMS;
     this.imageResourcesPath = options.imageResourcesPath || "";
-    this.renderInteractiveForms = options.renderInteractiveForms !== false;
     this.enablePrintAutoRotate = options.enablePrintAutoRotate || false;
     this.renderer = options.renderer || _ui_utils.RendererType.CANVAS;
     this.useOnlyCssZoom = options.useOnlyCssZoom || false;
     this.maxCanvasPixels = options.maxCanvasPixels;
     this.l10n = options.l10n || _l10n_utils.NullL10n;
-    this.enableScripting = options.enableScripting === true && !!this._scriptingManager;
     this.defaultRenderingQueue = !options.renderingQueue;
 
     if (this.defaultRenderingQueue) {
@@ -9900,6 +9945,7 @@ class BaseViewer {
       this.renderingQueue = options.renderingQueue;
     }
 
+    this._doc = document.documentElement;
     this.scroll = (0, _ui_utils.watchScroll)(this.container, this._scrollUpdate.bind(this));
     this.presentationModeState = _ui_utils.PresentationModeState.UNKNOWN;
     this._onBeforeDraw = this._onAfterDraw = null;
@@ -9935,6 +9981,14 @@ class BaseViewer {
     });
   }
 
+  get renderForms() {
+    return this._annotationMode === _pdfjsLib.AnnotationMode.ENABLE_FORMS;
+  }
+
+  get enableScripting() {
+    return !!this._scriptingManager;
+  }
+
   get currentPageNumber() {
     return this._currentPageNumber;
   }
@@ -9949,7 +10003,7 @@ class BaseViewer {
     }
 
     if (!this._setCurrentPageNumber(val, true)) {
-      console.error(`${this._name}.currentPageNumber: "${val}" is not a valid page.`);
+      console.error(`currentPageNumber: "${val}" is not a valid page.`);
     }
   }
 
@@ -10002,7 +10056,7 @@ class BaseViewer {
     }
 
     if (!this._setCurrentPageNumber(page, true)) {
-      console.error(`${this._name}.currentPageLabel: "${val}" is not a valid page.`);
+      console.error(`currentPageLabel: "${val}" is not a valid page.`);
     }
   }
 
@@ -10059,10 +10113,12 @@ class BaseViewer {
 
     this._pagesRotation = rotation;
     const pageNumber = this._currentPageNumber;
+    const updateArgs = {
+      rotation
+    };
 
-    for (let i = 0, ii = this._pages.length; i < ii; i++) {
-      const pageView = this._pages[i];
-      pageView.update(pageView.scale, rotation);
+    for (const pageView of this._pages) {
+      pageView.update(updateArgs);
     }
 
     if (this._currentScaleValue) {
@@ -10173,9 +10229,10 @@ class BaseViewer {
       this._optionalContentConfigPromise = optionalContentConfigPromise;
       const scale = this.currentScale;
       const viewport = firstPdfPage.getViewport({
-        scale: scale * _ui_utils.CSS_UNITS
+        scale: scale * _pdfjsLib.PixelsPerInch.PDF_TO_CSS_UNITS
       });
-      const textLayerFactory = this.textLayerMode !== _ui_utils.TextLayerMode.DISABLE ? this : null;
+      const textLayerFactory = this.textLayerMode !== _ui_utils.TextLayerMode.DISABLE && !isPureXfa ? this : 
null;
+      const annotationLayerFactory = this._annotationMode !== _pdfjsLib.AnnotationMode.DISABLE ? this : null;
       const xfaLayerFactory = isPureXfa ? this : null;
 
       for (let pageNum = 1; pageNum <= pagesCount; ++pageNum) {
@@ -10189,11 +10246,12 @@ class BaseViewer {
           renderingQueue: this.renderingQueue,
           textLayerFactory,
           textLayerMode: this.textLayerMode,
-          annotationLayerFactory: this,
+          annotationLayerFactory,
+          annotationMode: this._annotationMode,
           xfaLayerFactory,
+          textHighlighterFactory: this,
           structTreeLayerFactory: this,
           imageResourcesPath: this.imageResourcesPath,
-          renderInteractiveForms: this.renderInteractiveForms,
           renderer: this.renderer,
           useOnlyCssZoom: this.useOnlyCssZoom,
           maxCanvasPixels: this.maxCanvasPixels,
@@ -10219,7 +10277,7 @@ class BaseViewer {
           this.findController.setDocument(pdfDocument);
         }
 
-        if (this.enableScripting) {
+        if (this._scriptingManager) {
           this._scriptingManager.setDocument(pdfDocument);
         }
 
@@ -10281,7 +10339,7 @@ class BaseViewer {
       this._pageLabels = null;
     } else if (!(Array.isArray(labels) && this.pdfDocument.numPages === labels.length)) {
       this._pageLabels = null;
-      console.error(`${this._name}.setPageLabels: Invalid page labels.`);
+      console.error(`setPageLabels: Invalid page labels.`);
     } else {
       this._pageLabels = labels;
     }
@@ -10356,8 +10414,14 @@ class BaseViewer {
       return;
     }
 
-    for (let i = 0, ii = this._pages.length; i < ii; i++) {
-      this._pages[i].update(newScale);
+    this._doc.style.setProperty("--zoom-factor", newScale);
+
+    const updateArgs = {
+      scale: newScale
+    };
+
+    for (const pageView of this._pages) {
+      pageView.update(updateArgs);
     }
 
     this._currentScale = newScale;
@@ -10445,7 +10509,7 @@ class BaseViewer {
           break;
 
         default:
-          console.error(`${this._name}._setScale: "${value}" is an unknown zoom value.`);
+          console.error(`_setScale: "${value}" is an unknown zoom value.`);
           return;
       }
 
@@ -10492,7 +10556,7 @@ class BaseViewer {
     const pageView = Number.isInteger(pageNumber) && this._pages[pageNumber - 1];
 
     if (!pageView) {
-      console.error(`${this._name}.scrollPageIntoView: ` + `"${pageNumber}" is not a valid pageNumber 
parameter.`);
+      console.error(`scrollPageIntoView: "${pageNumber}" is not a valid pageNumber parameter.`);
       return;
     }
 
@@ -10509,8 +10573,8 @@ class BaseViewer {
         widthScale,
         heightScale;
     const changeOrientation = pageView.rotation % 180 !== 0;
-    const pageWidth = (changeOrientation ? pageView.height : pageView.width) / pageView.scale / 
_ui_utils.CSS_UNITS;
-    const pageHeight = (changeOrientation ? pageView.width : pageView.height) / pageView.scale / 
_ui_utils.CSS_UNITS;
+    const pageWidth = (changeOrientation ? pageView.height : pageView.width) / pageView.scale / 
_pdfjsLib.PixelsPerInch.PDF_TO_CSS_UNITS;
+    const pageHeight = (changeOrientation ? pageView.width : pageView.height) / pageView.scale / 
_pdfjsLib.PixelsPerInch.PDF_TO_CSS_UNITS;
     let scale = 0;
 
     switch (destArray[1].name) {
@@ -10556,13 +10620,13 @@ class BaseViewer {
         height = destArray[5] - y;
         const hPadding = this.removePageBorders ? 0 : _ui_utils.SCROLLBAR_PADDING;
         const vPadding = this.removePageBorders ? 0 : _ui_utils.VERTICAL_PADDING;
-        widthScale = (this.container.clientWidth - hPadding) / width / _ui_utils.CSS_UNITS;
-        heightScale = (this.container.clientHeight - vPadding) / height / _ui_utils.CSS_UNITS;
+        widthScale = (this.container.clientWidth - hPadding) / width / 
_pdfjsLib.PixelsPerInch.PDF_TO_CSS_UNITS;
+        heightScale = (this.container.clientHeight - vPadding) / height / 
_pdfjsLib.PixelsPerInch.PDF_TO_CSS_UNITS;
         scale = Math.min(Math.abs(widthScale), Math.abs(heightScale));
         break;
 
       default:
-        console.error(`${this._name}.scrollPageIntoView: ` + `"${destArray[1].name}" is not a valid 
destination type.`);
+        console.error(`scrollPageIntoView: "${destArray[1].name}" is not a valid destination type.`);
         return;
     }
 
@@ -10725,7 +10789,7 @@ class BaseViewer {
     }
 
     if (!(Number.isInteger(pageNumber) && pageNumber > 0 && pageNumber <= this.pagesCount)) {
-      console.error(`${this._name}.isPageVisible: "${pageNumber}" is not a valid page.`);
+      console.error(`isPageVisible: "${pageNumber}" is not a valid page.`);
       return false;
     }
 
@@ -10740,7 +10804,7 @@ class BaseViewer {
     }
 
     if (!(Number.isInteger(pageNumber) && pageNumber > 0 && pageNumber <= this.pagesCount)) {
-      console.error(`${this._name}.isPageCached: "${pageNumber}" is not a valid page.`);
+      console.error(`isPageCached: "${pageNumber}" is not a valid page.`);
       return false;
     }
 
@@ -10801,7 +10865,8 @@ class BaseViewer {
     const visiblePages = currentlyVisiblePages || this._getVisiblePages();
 
     const scrollAhead = this._isScrollModeHorizontal ? this.scroll.right : this.scroll.down;
-    const pageView = this.renderingQueue.getHighestPriority(visiblePages, this._pages, scrollAhead);
+    const preRenderExtra = this._scrollMode === _ui_utils.ScrollMode.VERTICAL && this._spreadMode !== 
_ui_utils.SpreadMode.NONE && !this.isInPresentationMode;
+    const pageView = this.renderingQueue.getHighestPriority(visiblePages, this._pages, scrollAhead, 
preRenderExtra);
 
     if (pageView) {
       this._ensurePdfPageLoaded(pageView).then(() => {
@@ -10814,29 +10879,38 @@ class BaseViewer {
     return false;
   }
 
-  createTextLayerBuilder(textLayerDiv, pageIndex, viewport, enhanceTextSelection = false, eventBus) {
+  createTextLayerBuilder(textLayerDiv, pageIndex, viewport, enhanceTextSelection = false, eventBus, 
highlighter) {
     return new _text_layer_builder.TextLayerBuilder({
       textLayerDiv,
       eventBus,
       pageIndex,
       viewport,
-      findController: this.isInPresentationMode ? null : this.findController,
-      enhanceTextSelection: this.isInPresentationMode ? false : enhanceTextSelection
+      enhanceTextSelection: this.isInPresentationMode ? false : enhanceTextSelection,
+      highlighter
     });
   }
 
-  createAnnotationLayerBuilder(pageDiv, pdfPage, annotationStorage = null, imageResourcesPath = "", 
renderInteractiveForms = false, l10n = _l10n_utils.NullL10n, enableScripting = null, hasJSActionsPromise = 
null, mouseState = null) {
-    return new _annotation_layer_builder.AnnotationLayerBuilder({
+  createTextHighlighter(pageIndex, eventBus) {
+    return new _text_highlighter.TextHighlighter({
+      eventBus,
+      pageIndex,
+      findController: this.isInPresentationMode ? null : this.findController
+    });
+  }
+
+  createAnnotationLayerBuilder(pageDiv, pdfPage, annotationStorage = null, imageResourcesPath = "", 
renderForms = true, l10n = _l10n_utils.NullL10n, enableScripting = null, hasJSActionsPromise = null, 
mouseState = null, fieldObjectsPromise = null) {
+    return new _annotation_layer_builder.AnnotationLayerBuilder({
       pageDiv,
       pdfPage,
       annotationStorage: annotationStorage || this.pdfDocument?.annotationStorage,
       imageResourcesPath,
-      renderInteractiveForms,
+      renderForms,
       linkService: this.linkService,
       downloadManager: this.downloadManager,
       l10n,
       enableScripting: enableScripting ?? this.enableScripting,
       hasJSActionsPromise: hasJSActionsPromise || this.pdfDocument?.hasJSActions(),
+      fieldObjectsPromise: fieldObjectsPromise || this.pdfDocument?.getFieldObjects(),
       mouseState: mouseState || this._scriptingManager?.mouseState
     });
   }
@@ -10845,7 +10919,8 @@ class BaseViewer {
     return new _xfa_layer_builder.XfaLayerBuilder({
       pageDiv,
       pdfPage,
-      annotationStorage: annotationStorage || this.pdfDocument?.annotationStorage
+      annotationStorage: annotationStorage || this.pdfDocument?.annotationStorage,
+      linkService: this.linkService
     });
   }
 
@@ -10917,9 +10992,12 @@ class BaseViewer {
     }
 
     this._optionalContentConfigPromise = promise;
+    const updateArgs = {
+      optionalContentConfigPromise: promise
+    };
 
     for (const pageView of this._pages) {
-      pageView.update(pageView.scale, pageView.rotation, promise);
+      pageView.update(updateArgs);
     }
 
     this.update();
@@ -11062,7 +11140,7 @@ class BaseViewer {
             let yArray = pageLayout.get(y);
 
             if (!yArray) {
-              pageLayout.set(y, yArray || (yArray = []));
+              pageLayout.set(y, yArray ||= []);
             }
 
             yArray.push(id);
@@ -11193,12 +11271,36 @@ class BaseViewer {
     return true;
   }
 
+  increaseScale(steps = 1) {
+    let newScale = this._currentScale;
+
+    do {
+      newScale = (newScale * _ui_utils.DEFAULT_SCALE_DELTA).toFixed(2);
+      newScale = Math.ceil(newScale * 10) / 10;
+      newScale = Math.min(_ui_utils.MAX_SCALE, newScale);
+    } while (--steps > 0 && newScale < _ui_utils.MAX_SCALE);
+
+    this.currentScaleValue = newScale;
+  }
+
+  decreaseScale(steps = 1) {
+    let newScale = this._currentScale;
+
+    do {
+      newScale = (newScale / _ui_utils.DEFAULT_SCALE_DELTA).toFixed(2);
+      newScale = Math.floor(newScale * 10) / 10;
+      newScale = Math.max(_ui_utils.MIN_SCALE, newScale);
+    } while (--steps > 0 && newScale > _ui_utils.MIN_SCALE);
+
+    this.currentScaleValue = newScale;
+  }
+
 }
 
 exports.BaseViewer = BaseViewer;
 
 /***/ }),
-/* 29 */
+/* 28 */
 /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
 
 
@@ -11208,11 +11310,11 @@ Object.defineProperty(exports, "__esModule", ({
 }));
 exports.DefaultAnnotationLayerFactory = exports.AnnotationLayerBuilder = void 0;
 
-var _pdfjsLib = __webpack_require__(5);
+var _pdfjsLib = __webpack_require__(4);
 
-var _l10n_utils = __webpack_require__(30);
+var _l10n_utils = __webpack_require__(29);
 
-var _pdf_link_service = __webpack_require__(19);
+var _pdf_link_service = __webpack_require__(18);
 
 class AnnotationLayerBuilder {
   constructor({
@@ -11222,10 +11324,11 @@ class AnnotationLayerBuilder {
     downloadManager,
     annotationStorage = null,
     imageResourcesPath = "",
-    renderInteractiveForms = true,
+    renderForms = true,
     l10n = _l10n_utils.NullL10n,
     enableScripting = false,
     hasJSActionsPromise = null,
+    fieldObjectsPromise = null,
     mouseState = null
   }) {
     this.pageDiv = pageDiv;
@@ -11233,58 +11336,56 @@ class AnnotationLayerBuilder {
     this.linkService = linkService;
     this.downloadManager = downloadManager;
     this.imageResourcesPath = imageResourcesPath;
-    this.renderInteractiveForms = renderInteractiveForms;
+    this.renderForms = renderForms;
     this.l10n = l10n;
     this.annotationStorage = annotationStorage;
     this.enableScripting = enableScripting;
     this._hasJSActionsPromise = hasJSActionsPromise;
+    this._fieldObjectsPromise = fieldObjectsPromise;
     this._mouseState = mouseState;
     this.div = null;
     this._cancelled = false;
   }
 
-  render(viewport, intent = "display") {
-    return Promise.all([this.pdfPage.getAnnotations({
+  async render(viewport, intent = "display") {
+    const [annotations, hasJSActions = false, fieldObjects = null] = await 
Promise.all([this.pdfPage.getAnnotations({
       intent
-    }), this._hasJSActionsPromise]).then(([annotations, hasJSActions = false]) => {
-      if (this._cancelled) {
-        return;
-      }
+    }), this._hasJSActionsPromise, this._fieldObjectsPromise]);
 
-      if (annotations.length === 0) {
-        return;
-      }
+    if (this._cancelled || annotations.length === 0) {
+      return;
+    }
 
-      const parameters = {
-        viewport: viewport.clone({
-          dontFlip: true
-        }),
-        div: this.div,
-        annotations,
-        page: this.pdfPage,
-        imageResourcesPath: this.imageResourcesPath,
-        renderInteractiveForms: this.renderInteractiveForms,
-        linkService: this.linkService,
-        downloadManager: this.downloadManager,
-        annotationStorage: this.annotationStorage,
-        enableScripting: this.enableScripting,
-        hasJSActions,
-        mouseState: this._mouseState
-      };
+    const parameters = {
+      viewport: viewport.clone({
+        dontFlip: true
+      }),
+      div: this.div,
+      annotations,
+      page: this.pdfPage,
+      imageResourcesPath: this.imageResourcesPath,
+      renderForms: this.renderForms,
+      linkService: this.linkService,
+      downloadManager: this.downloadManager,
+      annotationStorage: this.annotationStorage,
+      enableScripting: this.enableScripting,
+      hasJSActions,
+      fieldObjects,
+      mouseState: this._mouseState
+    };
 
-      if (this.div) {
-        _pdfjsLib.AnnotationLayer.update(parameters);
-      } else {
-        this.div = document.createElement("div");
-        this.div.className = "annotationLayer";
-        this.pageDiv.appendChild(this.div);
-        parameters.div = this.div;
+    if (this.div) {
+      _pdfjsLib.AnnotationLayer.update(parameters);
+    } else {
+      this.div = document.createElement("div");
+      this.div.className = "annotationLayer";
+      this.pageDiv.appendChild(this.div);
+      parameters.div = this.div;
 
-        _pdfjsLib.AnnotationLayer.render(parameters);
+      _pdfjsLib.AnnotationLayer.render(parameters);
 
-        this.l10n.translate(this.div);
-      }
-    });
+      this.l10n.translate(this.div);
+    }
   }
 
   cancel() {
@@ -11304,17 +11405,18 @@ class AnnotationLayerBuilder {
 exports.AnnotationLayerBuilder = AnnotationLayerBuilder;
 
 class DefaultAnnotationLayerFactory {
-  createAnnotationLayerBuilder(pageDiv, pdfPage, annotationStorage = null, imageResourcesPath = "", 
renderInteractiveForms = true, l10n = _l10n_utils.NullL10n, enableScripting = false, hasJSActionsPromise = 
null, mouseState = null) {
+  createAnnotationLayerBuilder(pageDiv, pdfPage, annotationStorage = null, imageResourcesPath = "", 
renderForms = true, l10n = _l10n_utils.NullL10n, enableScripting = false, hasJSActionsPromise = null, 
mouseState = null, fieldObjectsPromise = null) {
     return new AnnotationLayerBuilder({
       pageDiv,
       pdfPage,
       imageResourcesPath,
-      renderInteractiveForms,
+      renderForms,
       linkService: new _pdf_link_service.SimpleLinkService(),
       l10n,
       annotationStorage,
       enableScripting,
       hasJSActionsPromise,
+      fieldObjectsPromise,
       mouseState
     });
   }
@@ -11324,7 +11426,7 @@ class DefaultAnnotationLayerFactory {
 exports.DefaultAnnotationLayerFactory = DefaultAnnotationLayerFactory;
 
 /***/ }),
-/* 30 */
+/* 29 */
 /***/ ((__unused_webpack_module, exports) => {
 
 
@@ -11452,7 +11554,7 @@ const NullL10n = {
 exports.NullL10n = NullL10n;
 
 /***/ }),
-/* 31 */
+/* 30 */
 /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
 
 
@@ -11462,17 +11564,17 @@ Object.defineProperty(exports, "__esModule", ({
 }));
 exports.PDFPageView = void 0;
 
-var _ui_utils = __webpack_require__(4);
+var _pdfjsLib = __webpack_require__(4);
 
-var _pdfjsLib = __webpack_require__(5);
+var _ui_utils = __webpack_require__(3);
 
-var _l10n_utils = __webpack_require__(30);
+var _app_options = __webpack_require__(1);
 
-var _pdf_rendering_queue = __webpack_require__(8);
+var _l10n_utils = __webpack_require__(29);
 
-var _viewer_compatibility = __webpack_require__(2);
+var _pdf_rendering_queue = __webpack_require__(7);
 
-const MAX_CANVAS_PIXELS = _viewer_compatibility.viewerCompatibilityParams.maxCanvasPixels || 16777216;
+const MAX_CANVAS_PIXELS = _app_options.compatibilityParams.maxCanvasPixels || 16777216;
 
 class PDFPageView {
   constructor(options) {
@@ -11488,9 +11590,9 @@ class PDFPageView {
     this.pdfPageRotate = defaultViewport.rotation;
     this._optionalContentConfigPromise = options.optionalContentConfigPromise || null;
     this.hasRestrictedScaling = false;
-    this.textLayerMode = Number.isInteger(options.textLayerMode) ? options.textLayerMode : 
_ui_utils.TextLayerMode.ENABLE;
+    this.textLayerMode = options.textLayerMode ?? _ui_utils.TextLayerMode.ENABLE;
+    this._annotationMode = options.annotationMode ?? _pdfjsLib.AnnotationMode.ENABLE_FORMS;
     this.imageResourcesPath = options.imageResourcesPath || "";
-    this.renderInteractiveForms = options.renderInteractiveForms !== false;
     this.useOnlyCssZoom = options.useOnlyCssZoom || false;
     this.maxCanvasPixels = options.maxCanvasPixels || MAX_CANVAS_PIXELS;
     this.eventBus = options.eventBus;
@@ -11498,6 +11600,7 @@ class PDFPageView {
     this.textLayerFactory = options.textLayerFactory;
     this.annotationLayerFactory = options.annotationLayerFactory;
     this.xfaLayerFactory = options.xfaLayerFactory;
+    this.textHighlighter = options.textHighlighterFactory?.createTextHighlighter(this.id - 1, this.eventBus);
     this.structTreeLayerFactory = options.structTreeLayerFactory;
     this.renderer = options.renderer || _ui_utils.RendererType.CANVAS;
     this.l10n = options.l10n || _l10n_utils.NullL10n;
@@ -11506,6 +11609,7 @@ class PDFPageView {
     this.renderingState = _pdf_rendering_queue.RenderingStates.INITIAL;
     this.resume = null;
     this._renderError = null;
+    this._isStandalone = !this.renderingQueue?.hasViewer();
     this.annotationLayer = null;
     this.textLayer = null;
     this.zoomLayer = null;
@@ -11531,7 +11635,7 @@ class PDFPageView {
     this.pdfPageRotate = pdfPage.rotate;
     const totalRotation = (this.rotation + this.pdfPageRotate) % 360;
     this.viewport = pdfPage.getViewport({
-      scale: this.scale * _ui_utils.CSS_UNITS,
+      scale: this.scale * _pdfjsLib.PixelsPerInch.PDF_TO_CSS_UNITS,
       rotation: totalRotation
     });
     this.reset();
@@ -11565,7 +11669,11 @@ class PDFPageView {
     let error = null;
 
     try {
-      await this.xfaLayer.render(this.viewport, "display");
+      const result = await this.xfaLayer.render(this.viewport, "display");
+
+      if (this.textHighlighter) {
+        this._buildXfaTextContentItems(result.textDivs);
+      }
     } catch (ex) {
       error = ex;
     } finally {
@@ -11577,6 +11685,18 @@ class PDFPageView {
     }
   }
 
+  async _buildXfaTextContentItems(textDivs) {
+    const text = await this.pdfPage.getTextContent();
+    const items = [];
+
+    for (const item of text.items) {
+      items.push(item.str);
+    }
+
+    this.textHighlighter.setTextMapping(textDivs, items);
+    this.textHighlighter.enable();
+  }
+
   _resetZoomLayer(removeFromDOM = false) {
     if (!this.zoomLayer) {
       return;
@@ -11660,10 +11780,24 @@ class PDFPageView {
     div.appendChild(this.loadingIconDiv);
   }
 
-  update(scale, rotation, optionalContentConfigPromise = null) {
+  update({
+    scale = 0,
+    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 !== "undefined") {
+    if (typeof rotation === "number") {
       this.rotation = rotation;
     }
 
@@ -11671,9 +11805,14 @@ class PDFPageView {
       this._optionalContentConfigPromise = optionalContentConfigPromise;
     }
 
+    if (this._isStandalone) {
+      const doc = document.documentElement;
+      doc.style.setProperty("--zoom-factor", this.scale);
+    }
+
     const totalRotation = (this.rotation + this.pdfPageRotate) % 360;
     this.viewport = this.viewport.clone({
-      scale: this.scale * _ui_utils.CSS_UNITS,
+      scale: this.scale * _pdfjsLib.PixelsPerInch.PDF_TO_CSS_UNITS,
       rotation: totalRotation
     });
 
@@ -11763,6 +11902,7 @@ class PDFPageView {
     if (this.xfaLayer && (!keepXfaLayer || !this.xfaLayer.div)) {
       this.xfaLayer.cancel();
       this.xfaLayer = null;
+      this.textHighlighter?.disable();
     }
 
     if (this._onTextLayerRendered) {
@@ -11905,7 +12045,7 @@ class PDFPageView {
         div.appendChild(textLayerDiv);
       }
 
-      textLayer = this.textLayerFactory.createTextLayerBuilder(textLayerDiv, this.id - 1, this.viewport, 
this.textLayerMode === _ui_utils.TextLayerMode.ENABLE_ENHANCE, this.eventBus);
+      textLayer = this.textLayerFactory.createTextLayerBuilder(textLayerDiv, this.id - 1, this.viewport, 
this.textLayerMode === _ui_utils.TextLayerMode.ENABLE_ENHANCE, this.eventBus, this.textHighlighter);
     }
 
     this.textLayer = textLayer;
@@ -11984,9 +12124,9 @@ class PDFPageView {
       return finishPaintTask(reason);
     });
 
-    if (this.annotationLayerFactory) {
+    if (this._annotationMode !== _pdfjsLib.AnnotationMode.DISABLE && this.annotationLayerFactory) {
       if (!this.annotationLayer) {
-        this.annotationLayer = this.annotationLayerFactory.createAnnotationLayerBuilder(div, pdfPage, null, 
this.imageResourcesPath, this.renderInteractiveForms, this.l10n, null, null, null);
+        this.annotationLayer = this.annotationLayerFactory.createAnnotationLayerBuilder(div, pdfPage, null, 
this.imageResourcesPath, this._annotationMode === _pdfjsLib.AnnotationMode.ENABLE_FORMS, this.l10n, null, 
null, null, null);
       }
 
       this._renderAnnotationLayer();
@@ -12079,7 +12219,7 @@ class PDFPageView {
 
     if (this.useOnlyCssZoom) {
       const actualSizeViewport = viewport.clone({
-        scale: _ui_utils.CSS_UNITS
+        scale: _pdfjsLib.PixelsPerInch.PDF_TO_CSS_UNITS
       });
       outputScale.sx *= actualSizeViewport.width / viewport.width;
       outputScale.sy *= actualSizeViewport.height / viewport.height;
@@ -12112,7 +12252,7 @@ class PDFPageView {
       canvasContext: ctx,
       transform,
       viewport: this.viewport,
-      renderInteractiveForms: this.renderInteractiveForms,
+      annotationMode: this._annotationMode,
       optionalContentConfigPromise: this._optionalContentConfigPromise
     };
     const renderTask = this.pdfPage.render(renderContext);
@@ -12148,11 +12288,13 @@ class PDFPageView {
 
     const pdfPage = this.pdfPage;
     const actualSizeViewport = this.viewport.clone({
-      scale: _ui_utils.CSS_UNITS
+      scale: _pdfjsLib.PixelsPerInch.PDF_TO_CSS_UNITS
     });
-    const promise = pdfPage.getOperatorList().then(opList => {
+    const promise = pdfPage.getOperatorList({
+      annotationMode: this._annotationMode
+    }).then(opList => {
       ensureNotCancelled();
-      const svgGfx = new _pdfjsLib.SVGGraphics(pdfPage.commonObjs, pdfPage.objs, 
_viewer_compatibility.viewerCompatibilityParams.disableCreateObjectURL);
+      const svgGfx = new _pdfjsLib.SVGGraphics(pdfPage.commonObjs, pdfPage.objs, 
_app_options.compatibilityParams.disableCreateObjectURL);
       return svgGfx.getSVG(opList, actualSizeViewport).then(svg => {
         ensureNotCancelled();
         this.svg = svg;
@@ -12192,7 +12334,7 @@ class PDFPageView {
 exports.PDFPageView = PDFPageView;
 
 /***/ }),
-/* 32 */
+/* 31 */
 /***/ ((__unused_webpack_module, exports) => {
 
 
@@ -12318,89 +12460,47 @@ class DefaultStructTreeLayerFactory {
 exports.DefaultStructTreeLayerFactory = DefaultStructTreeLayerFactory;
 
 /***/ }),
-/* 33 */
-/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
+/* 32 */
+/***/ ((__unused_webpack_module, exports) => {
 
 
 
 Object.defineProperty(exports, "__esModule", ({
   value: true
 }));
-exports.TextLayerBuilder = exports.DefaultTextLayerFactory = void 0;
+exports.TextHighlighter = void 0;
 
-var _pdfjsLib = __webpack_require__(5);
-
-const EXPAND_DIVS_TIMEOUT = 300;
-
-class TextLayerBuilder {
+class TextHighlighter {
   constructor({
-    textLayerDiv,
+    findController,
     eventBus,
-    pageIndex,
-    viewport,
-    findController = null,
-    enhanceTextSelection = false
+    pageIndex
   }) {
-    this.textLayerDiv = textLayerDiv;
+    this.findController = findController;
+    this.matches = [];
     this.eventBus = eventBus;
-    this.textContent = null;
-    this.textContentItemsStr = [];
-    this.textContentStream = null;
-    this.renderingDone = false;
     this.pageIdx = pageIndex;
-    this.pageNumber = this.pageIdx + 1;
-    this.matches = [];
-    this.viewport = viewport;
-    this.textDivs = [];
-    this.findController = findController;
-    this.textLayerRenderTask = null;
-    this.enhanceTextSelection = enhanceTextSelection;
     this._onUpdateTextLayerMatches = null;
-
-    this._bindMouse();
+    this.textDivs = null;
+    this.textContentItemsStr = null;
+    this.enabled = false;
   }
 
-  _finishRendering() {
-    this.renderingDone = true;
-
-    if (!this.enhanceTextSelection) {
-      const endOfContent = document.createElement("div");
-      endOfContent.className = "endOfContent";
-      this.textLayerDiv.appendChild(endOfContent);
-    }
-
-    this.eventBus.dispatch("textlayerrendered", {
-      source: this,
-      pageNumber: this.pageNumber,
-      numTextDivs: this.textDivs.length
-    });
+  setTextMapping(divs, texts) {
+    this.textDivs = divs;
+    this.textContentItemsStr = texts;
   }
 
-  render(timeout = 0) {
-    if (!(this.textContent || this.textContentStream) || this.renderingDone) {
-      return;
+  enable() {
+    if (!this.textDivs || !this.textContentItemsStr) {
+      throw new Error("Text divs and strings have not been set.");
     }
 
-    this.cancel();
-    this.textDivs = [];
-    const textLayerFrag = document.createDocumentFragment();
-    this.textLayerRenderTask = (0, _pdfjsLib.renderTextLayer)({
-      textContent: this.textContent,
-      textContentStream: this.textContentStream,
-      container: textLayerFrag,
-      viewport: this.viewport,
-      textDivs: this.textDivs,
-      textContentItemsStr: this.textContentItemsStr,
-      timeout,
-      enhanceTextSelection: this.enhanceTextSelection
-    });
-    this.textLayerRenderTask.promise.then(() => {
-      this.textLayerDiv.appendChild(textLayerFrag);
+    if (this.enabled) {
+      throw new Error("TextHighlighter is already enabled.");
+    }
 
-      this._finishRendering();
-
-      this._updateMatches();
-    }, function (reason) {});
+    this.enabled = true;
 
     if (!this._onUpdateTextLayerMatches) {
       this._onUpdateTextLayerMatches = evt => {
@@ -12411,14 +12511,17 @@ class TextLayerBuilder {
 
       this.eventBus._on("updatetextlayermatches", this._onUpdateTextLayerMatches);
     }
+
+    this._updateMatches();
   }
 
-  cancel() {
-    if (this.textLayerRenderTask) {
-      this.textLayerRenderTask.cancel();
-      this.textLayerRenderTask = null;
+  disable() {
+    if (!this.enabled) {
+      return;
     }
 
+    this.enabled = false;
+
     if (this._onUpdateTextLayerMatches) {
       this.eventBus._off("updatetextlayermatches", this._onUpdateTextLayerMatches);
 
@@ -12426,16 +12529,6 @@ class TextLayerBuilder {
     }
   }
 
-  setTextContentStream(readableStream) {
-    this.cancel();
-    this.textContentStream = readableStream;
-  }
-
-  setTextContent(textContent) {
-    this.cancel();
-    this.textContent = textContent;
-  }
-
   _convertMatches(matches, matchesLength) {
     if (!matches) {
       return [];
@@ -12491,7 +12584,9 @@ class TextLayerBuilder {
 
     const {
       findController,
-      pageIdx,
+      pageIdx
+    } = this;
+    const {
       textContentItemsStr,
       textDivs
     } = this;
@@ -12511,7 +12606,16 @@ class TextLayerBuilder {
     }
 
     function appendTextToDiv(divIdx, fromOffset, toOffset, className) {
-      const div = textDivs[divIdx];
+      let div = textDivs[divIdx];
+
+      if (div.nodeType === Node.TEXT_NODE) {
+        const span = document.createElement("span");
+        div.parentNode.insertBefore(span, div);
+        span.appendChild(div);
+        textDivs[divIdx] = span;
+        div = span;
+      }
+
       const content = textContentItemsStr[divIdx].substring(fromOffset, toOffset);
       const node = document.createTextNode(content);
 
@@ -12585,14 +12689,16 @@ class TextLayerBuilder {
   }
 
   _updateMatches() {
-    if (!this.renderingDone) {
+    if (!this.enabled) {
       return;
     }
 
     const {
       findController,
       matches,
-      pageIdx,
+      pageIdx
+    } = this;
+    const {
       textContentItemsStr,
       textDivs
     } = this;
@@ -12622,6 +12728,113 @@ class TextLayerBuilder {
     this._renderMatches(this.matches);
   }
 
+}
+
+exports.TextHighlighter = TextHighlighter;
+
+/***/ }),
+/* 33 */
+/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
+
+
+
+Object.defineProperty(exports, "__esModule", ({
+  value: true
+}));
+exports.TextLayerBuilder = exports.DefaultTextLayerFactory = void 0;
+
+var _pdfjsLib = __webpack_require__(4);
+
+const EXPAND_DIVS_TIMEOUT = 300;
+
+class TextLayerBuilder {
+  constructor({
+    textLayerDiv,
+    eventBus,
+    pageIndex,
+    viewport,
+    highlighter = null,
+    enhanceTextSelection = false
+  }) {
+    this.textLayerDiv = textLayerDiv;
+    this.eventBus = eventBus;
+    this.textContent = null;
+    this.textContentItemsStr = [];
+    this.textContentStream = null;
+    this.renderingDone = false;
+    this.pageNumber = pageIndex + 1;
+    this.viewport = viewport;
+    this.textDivs = [];
+    this.textLayerRenderTask = null;
+    this.highlighter = highlighter;
+    this.enhanceTextSelection = enhanceTextSelection;
+
+    this._bindMouse();
+  }
+
+  _finishRendering() {
+    this.renderingDone = true;
+
+    if (!this.enhanceTextSelection) {
+      const endOfContent = document.createElement("div");
+      endOfContent.className = "endOfContent";
+      this.textLayerDiv.appendChild(endOfContent);
+    }
+
+    this.eventBus.dispatch("textlayerrendered", {
+      source: this,
+      pageNumber: this.pageNumber,
+      numTextDivs: this.textDivs.length
+    });
+  }
+
+  render(timeout = 0) {
+    if (!(this.textContent || this.textContentStream) || this.renderingDone) {
+      return;
+    }
+
+    this.cancel();
+    this.textDivs.length = 0;
+    this.highlighter?.setTextMapping(this.textDivs, this.textContentItemsStr);
+    const textLayerFrag = document.createDocumentFragment();
+    this.textLayerRenderTask = (0, _pdfjsLib.renderTextLayer)({
+      textContent: this.textContent,
+      textContentStream: this.textContentStream,
+      container: textLayerFrag,
+      viewport: this.viewport,
+      textDivs: this.textDivs,
+      textContentItemsStr: this.textContentItemsStr,
+      timeout,
+      enhanceTextSelection: this.enhanceTextSelection
+    });
+    this.textLayerRenderTask.promise.then(() => {
+      this.textLayerDiv.appendChild(textLayerFrag);
+
+      this._finishRendering();
+
+      this.highlighter?.enable();
+    }, function (reason) {});
+  }
+
+  cancel() {
+    if (this.textLayerRenderTask) {
+      this.textLayerRenderTask.cancel();
+      this.textLayerRenderTask = null;
+    }
+
+    this.highlighter?.disable();
+  }
+
+  setTextContentStream(readableStream) {
+    this.cancel();
+    this.textContentStream = readableStream;
+  }
+
+  setTextContent(textContent) {
+    this.cancel();
+    this.textContent = textContent;
+  }
+
   _bindMouse() {
     const div = this.textLayerDiv;
     let expandDivsTimer = null;
@@ -12682,13 +12895,14 @@ class TextLayerBuilder {
 exports.TextLayerBuilder = TextLayerBuilder;
 
 class DefaultTextLayerFactory {
-  createTextLayerBuilder(textLayerDiv, pageIndex, viewport, enhanceTextSelection = false, eventBus) {
+  createTextLayerBuilder(textLayerDiv, pageIndex, viewport, enhanceTextSelection = false, eventBus, 
highlighter) {
     return new TextLayerBuilder({
       textLayerDiv,
       pageIndex,
       viewport,
       enhanceTextSelection,
-      eventBus
+      eventBus,
+      highlighter
     });
   }
 
@@ -12707,19 +12921,23 @@ Object.defineProperty(exports, "__esModule", ({
 }));
 exports.XfaLayerBuilder = exports.DefaultXfaLayerFactory = void 0;
 
-var _pdfjsLib = __webpack_require__(5);
+var _pdf_link_service = __webpack_require__(18);
+
+var _pdfjsLib = __webpack_require__(4);
 
 class XfaLayerBuilder {
   constructor({
     pageDiv,
     pdfPage,
-    xfaHtml,
-    annotationStorage
+    annotationStorage,
+    linkService,
+    xfaHtml
   }) {
     this.pageDiv = pageDiv;
     this.pdfPage = pdfPage;
-    this.xfaHtml = xfaHtml;
     this.annotationStorage = annotationStorage;
+    this.linkService = linkService;
+    this.xfaHtml = xfaHtml;
     this.div = null;
     this._cancelled = false;
   }
@@ -12734,20 +12952,23 @@ class XfaLayerBuilder {
         xfa: this.xfaHtml,
         page: null,
         annotationStorage: this.annotationStorage,
+        linkService: this.linkService,
         intent
       };
       const div = document.createElement("div");
       this.pageDiv.appendChild(div);
       parameters.div = div;
 
-      _pdfjsLib.XfaLayer.render(parameters);
+      const result = _pdfjsLib.XfaLayer.render(parameters);
 
-      return Promise.resolve();
+      return Promise.resolve(result);
     }
 
     return this.pdfPage.getXfa().then(xfa => {
-      if (this._cancelled) {
-        return;
+      if (this._cancelled || !xfa) {
+        return {
+          textDivs: []
+        };
       }
 
       const parameters = {
@@ -12758,18 +12979,18 @@ class XfaLayerBuilder {
         xfa,
         page: this.pdfPage,
         annotationStorage: this.annotationStorage,
+        linkService: this.linkService,
         intent
       };
 
       if (this.div) {
-        _pdfjsLib.XfaLayer.update(parameters);
-      } else {
-        this.div = document.createElement("div");
-        this.pageDiv.appendChild(this.div);
-        parameters.div = this.div;
-
-        _pdfjsLib.XfaLayer.render(parameters);
+        return _pdfjsLib.XfaLayer.update(parameters);
       }
+
+      this.div = document.createElement("div");
+      this.pageDiv.appendChild(this.div);
+      parameters.div = this.div;
+      return _pdfjsLib.XfaLayer.render(parameters);
     }).catch(error => {
       console.error(error);
     });
@@ -12797,6 +13018,7 @@ class DefaultXfaLayerFactory {
       pageDiv,
       pdfPage,
       annotationStorage,
+      linkService: new _pdf_link_service.SimpleLinkService(),
       xfaHtml
     });
   }
@@ -12816,9 +13038,9 @@ Object.defineProperty(exports, "__esModule", ({
 }));
 exports.SecondaryToolbar = void 0;
 
-var _ui_utils = __webpack_require__(4);
+var _ui_utils = __webpack_require__(3);
 
-var _pdf_cursor_tools = __webpack_require__(6);
+var _pdf_cursor_tools = __webpack_require__(5);
 
 var _pdf_single_page_viewer = __webpack_require__(36);
 
@@ -13135,9 +13357,9 @@ Object.defineProperty(exports, "__esModule", ({
 }));
 exports.PDFSinglePageViewer = void 0;
 
-var _base_viewer = __webpack_require__(28);
+var _base_viewer = __webpack_require__(27);
 
-var _pdfjsLib = __webpack_require__(5);
+var _pdfjsLib = __webpack_require__(4);
 
 class PDFSinglePageViewer extends _base_viewer.BaseViewer {
   constructor(options) {
@@ -13264,11 +13486,9 @@ Object.defineProperty(exports, "__esModule", ({
 }));
 exports.Toolbar = void 0;
 
-var _ui_utils = __webpack_require__(4);
+var _ui_utils = __webpack_require__(3);
 
 const PAGE_NUMBER_LOADING_INDICATOR = "visiblePageIsLoading";
-const SCALE_SELECT_CONTAINER_WIDTH = 140;
-const SCALE_SELECT_WIDTH = 162;
 
 class Toolbar {
   constructor(options, eventBus, l10n) {
@@ -13306,7 +13526,6 @@ class Toolbar {
     this.items = {
       numPages: options.numPages,
       pageNumber: options.pageNumber,
-      scaleSelectContainer: options.scaleSelectContainer,
       scaleSelect: options.scaleSelect,
       customScaleOption: options.customScaleOption,
       previous: options.previous,
@@ -13488,17 +13707,16 @@ class Toolbar {
       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")]);
+    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", {
       alpha: false
     });
     await _ui_utils.animationStarted;
-    const {
-      fontSize,
-      fontFamily
-    } = getComputedStyle(items.scaleSelect);
-    ctx.font = `${fontSize} ${fontFamily}`;
+    ctx.font = `${style.fontSize} ${style.fontFamily}`;
     let maxWidth = 0;
 
     for (const predefinedValue of await predefinedValuesPromise) {
@@ -13511,12 +13729,11 @@ class Toolbar {
       }
     }
 
-    const overflow = SCALE_SELECT_WIDTH - SCALE_SELECT_CONTAINER_WIDTH;
-    maxWidth += 2 * overflow;
+    maxWidth += 2 * scaleSelectOverflow;
 
-    if (maxWidth > SCALE_SELECT_CONTAINER_WIDTH) {
-      items.scaleSelect.style.width = `${maxWidth + overflow}px`;
-      items.scaleSelectContainer.style.width = `${maxWidth}px`;
+    if (maxWidth > scaleSelectContainerWidth) {
+      const doc = document.documentElement;
+      doc.style.setProperty("--scale-select-container-width", `${maxWidth}px`);
     }
 
     canvas.width = 0;
@@ -13634,7 +13851,7 @@ Object.defineProperty(exports, "__esModule", ({
 }));
 exports.GenericCom = void 0;
 
-var _app = __webpack_require__(3);
+var _app = __webpack_require__(2);
 
 var _preferences = __webpack_require__(40);
 
@@ -13705,6 +13922,7 @@ class BasePreferences {
 
     Object.defineProperty(this, "defaults", {
       value: Object.freeze({
+        "annotationMode": 2,
         "cursorToolOnLoad": 0,
         "defaultZoomValue": "",
         "disablePageLabels": false,
@@ -13716,7 +13934,6 @@ class BasePreferences {
         "ignoreDestinationZoom": false,
         "pdfBugEnabled": false,
         "renderer": "canvas",
-        "renderInteractiveForms": true,
         "sidebarViewOnLoad": -1,
         "scrollModeOnLoad": -1,
         "spreadModeOnLoad": -1,
@@ -13728,7 +13945,7 @@ class BasePreferences {
         "disableFontFace": false,
         "disableRange": false,
         "disableStream": false,
-        "enableXfa": false
+        "enableXfa": true
       }),
       writable: false,
       enumerable: true,
@@ -13828,9 +14045,9 @@ Object.defineProperty(exports, "__esModule", ({
 }));
 exports.DownloadManager = void 0;
 
-var _pdfjsLib = __webpack_require__(5);
+var _pdfjsLib = __webpack_require__(4);
 
-var _viewer_compatibility = __webpack_require__(2);
+var _app_options = __webpack_require__(1);
 
 ;
 
@@ -13860,6 +14077,7 @@ class DownloadManager {
 
   downloadUrl(url, filename) {
     if (!(0, _pdfjsLib.createValidAbsoluteUrl)(url, "http://example.com";)) {
+      console.error(`downloadUrl - not a valid URL: ${url}`);
       return;
     }
 
@@ -13867,7 +14085,7 @@ class DownloadManager {
   }
 
   downloadData(data, filename, contentType) {
-    const blobUrl = (0, _pdfjsLib.createObjectURL)(data, contentType, 
_viewer_compatibility.viewerCompatibilityParams.disableCreateObjectURL);
+    const blobUrl = (0, _pdfjsLib.createObjectURL)(data, contentType, 
_app_options.compatibilityParams.disableCreateObjectURL);
     download(blobUrl, filename);
   }
 
@@ -13875,7 +14093,7 @@ class DownloadManager {
     const isPdfData = (0, _pdfjsLib.isPdfFile)(filename);
     const contentType = isPdfData ? "application/pdf" : "";
 
-    if (isPdfData && !_viewer_compatibility.viewerCompatibilityParams.disableCreateObjectURL) {
+    if (isPdfData && !_app_options.compatibilityParams.disableCreateObjectURL) {
       let blobUrl = this._openBlobUrls.get(element);
 
       if (!blobUrl) {
@@ -13905,7 +14123,7 @@ class DownloadManager {
   }
 
   download(blob, url, filename, sourceEventType = "download") {
-    if (_viewer_compatibility.viewerCompatibilityParams.disableCreateObjectURL) {
+    if (_app_options.compatibilityParams.disableCreateObjectURL) {
       this.downloadUrl(url, filename);
       return;
     }
@@ -13931,7 +14149,7 @@ exports.GenericL10n = void 0;
 
 __webpack_require__(43);
 
-var _l10n_utils = __webpack_require__(30);
+var _l10n_utils = __webpack_require__(29);
 
 const webL10n = document.webL10n;
 
@@ -14803,7 +15021,7 @@ Object.defineProperty(exports, "__esModule", ({
 exports.docPropertiesLookup = docPropertiesLookup;
 exports.GenericScripting = void 0;
 
-var _pdfjsLib = __webpack_require__(5);
+var _pdfjsLib = __webpack_require__(4);
 
 async function docPropertiesLookup(pdfDocument) {
   const url = "",
@@ -14870,18 +15088,20 @@ Object.defineProperty(exports, "__esModule", ({
 }));
 exports.PDFPrintService = PDFPrintService;
 
-var _app = __webpack_require__(3);
+var _pdfjsLib = __webpack_require__(4);
 
-var _print_utils = __webpack_require__(46);
+var _app = __webpack_require__(2);
 
-var _viewer_compatibility = __webpack_require__(2);
+var _app_options = __webpack_require__(1);
+
+var _print_utils = __webpack_require__(46);
 
 let activeService = null;
 let overlayManager = null;
 
 function renderPage(activeServiceOnEntry, pdfDocument, pageNumber, size, printResolution, 
optionalContentConfigPromise) {
   const scratchCanvas = activeService.scratchCanvas;
-  const PRINT_UNITS = printResolution / 72.0;
+  const PRINT_UNITS = printResolution / _pdfjsLib.PixelsPerInch.PDF;
   scratchCanvas.width = Math.floor(size.width * PRINT_UNITS);
   scratchCanvas.height = Math.floor(size.height * PRINT_UNITS);
   const ctx = scratchCanvas.getContext("2d");
@@ -14898,7 +15118,7 @@ function renderPage(activeServiceOnEntry, pdfDocument, pageNumber, size, printRe
         rotation: size.rotation
       }),
       intent: "print",
-      includeAnnotationStorage: true,
+      annotationMode: _pdfjsLib.AnnotationMode.ENABLE_STORAGE,
       optionalContentConfigPromise
     };
     return pdfPage.render(renderContext).promise;
@@ -14993,7 +15213,7 @@ PDFPrintService.prototype = {
     const img = document.createElement("img");
     const scratchCanvas = this.scratchCanvas;
 
-    if ("toBlob" in scratchCanvas && 
!_viewer_compatibility.viewerCompatibilityParams.disableCreateObjectURL) {
+    if ("toBlob" in scratchCanvas && !_app_options.compatibilityParams.disableCreateObjectURL) {
       scratchCanvas.toBlob(function (blob) {
         img.src = URL.createObjectURL(blob);
       });
@@ -15167,16 +15387,14 @@ Object.defineProperty(exports, "__esModule", ({
 }));
 exports.getXfaHtmlForPrinting = getXfaHtmlForPrinting;
 
-var _ui_utils = __webpack_require__(4);
+var _pdfjsLib = __webpack_require__(4);
 
 var _xfa_layer_builder = __webpack_require__(34);
 
-var _pdfjsLib = __webpack_require__(5);
-
 function getXfaHtmlForPrinting(printContainer, pdfDocument) {
   const xfaHtml = pdfDocument.allXfaHtml;
   const factory = new _xfa_layer_builder.DefaultXfaLayerFactory();
-  const scale = Math.round(_ui_utils.CSS_UNITS * 100) / 100;
+  const scale = Math.round(_pdfjsLib.PixelsPerInch.PDF_TO_CSS_UNITS * 100) / 100;
 
   for (const xfaPage of xfaHtml.children) {
     const page = document.createElement("div");
@@ -15242,10 +15460,10 @@ Object.defineProperty(exports, "PDFViewerApplication", ({
 
 var _app_options = __webpack_require__(1);
 
-var _app = __webpack_require__(3);
+var _app = __webpack_require__(2);
 
-const pdfjsVersion = '2.10.377';
-const pdfjsBuild = '156762c48';
+const pdfjsVersion = '2.11.338';
+const pdfjsBuild = 'dedff3c98';
 window.PDFViewerApplication = _app.PDFViewerApplication;
 window.PDFViewerApplicationOptions = _app_options.AppOptions;
 ;
@@ -15277,7 +15495,6 @@ function getViewerConfiguration() {
       container: document.getElementById("toolbarViewer"),
       numPages: document.getElementById("numPages"),
       pageNumber: document.getElementById("pageNumber"),
-      scaleSelectContainer: document.getElementById("scaleSelectContainer"),
       scaleSelect: document.getElementById("scaleSelect"),
       customScaleOption: document.getElementById("customScaleOption"),
       previous: document.getElementById("previous"),


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