{"version":3,"file":"pdf.worker.js","mappings":"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","sources":["webpack://pdfjs-dist/build/pdf.worker/webpack/universalModuleDefinition","webpack://pdfjs-dist/build/pdf.worker/src/core/worker.js","webpack://pdfjs-dist/build/pdf.worker/src/shared/util.js","webpack://pdfjs-dist/build/pdf.worker/src/shared/compatibility.js","webpack://pdfjs-dist/build/pdf.worker/src/shared/is_node.js","webpack://pdfjs-dist/build/pdf.worker/src/core/primitives.js","webpack://pdfjs-dist/build/pdf.worker/src/core/base_stream.js","webpack://pdfjs-dist/build/pdf.worker/src/core/pdf_manager.js","webpack://pdfjs-dist/build/pdf.worker/src/core/chunked_stream.js","webpack://pdfjs-dist/build/pdf.worker/src/core/core_utils.js","webpack://pdfjs-dist/build/pdf.worker/src/core/stream.js","webpack://pdfjs-dist/build/pdf.worker/src/core/document.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa_fonts.js","webpack://pdfjs-dist/build/pdf.worker/src/core/calibri_factors.js","webpack://pdfjs-dist/build/pdf.worker/src/core/helvetica_factors.js","webpack://pdfjs-dist/build/pdf.worker/src/core/liberationsans_widths.js","webpack://pdfjs-dist/build/pdf.worker/src/core/myriadpro_factors.js","webpack://pdfjs-dist/build/pdf.worker/src/core/segoeui_factors.js","webpack://pdfjs-dist/build/pdf.worker/src/core/fonts_utils.js","webpack://pdfjs-dist/build/pdf.worker/src/core/encodings.js","webpack://pdfjs-dist/build/pdf.worker/src/core/glyphlist.js","webpack://pdfjs-dist/build/pdf.worker/src/core/unicode.js","webpack://pdfjs-dist/build/pdf.worker/src/core/annotation.js","webpack://pdfjs-dist/build/pdf.worker/src/core/default_appearance.js","webpack://pdfjs-dist/build/pdf.worker/src/core/colorspace.js","webpack://pdfjs-dist/build/pdf.worker/src/core/evaluator.js","webpack://pdfjs-dist/build/pdf.worker/src/core/cmap.js","webpack://pdfjs-dist/build/pdf.worker/src/core/parser.js","webpack://pdfjs-dist/build/pdf.worker/src/core/ascii_85_stream.js","webpack://pdfjs-dist/build/pdf.worker/src/core/decode_stream.js","webpack://pdfjs-dist/build/pdf.worker/src/core/ascii_hex_stream.js","webpack://pdfjs-dist/build/pdf.worker/src/core/ccitt_stream.js","webpack://pdfjs-dist/build/pdf.worker/src/core/ccitt.js","webpack://pdfjs-dist/build/pdf.worker/src/core/flate_stream.js","webpack://pdfjs-dist/build/pdf.worker/src/core/jbig2_stream.js","webpack://pdfjs-dist/build/pdf.worker/src/core/jbig2.js","webpack://pdfjs-dist/build/pdf.worker/src/core/arithmetic_decoder.js","webpack://pdfjs-dist/build/pdf.worker/src/core/jpeg_stream.js","webpack://pdfjs-dist/build/pdf.worker/src/core/jpg.js","webpack://pdfjs-dist/build/pdf.worker/src/core/jpx_stream.js","webpack://pdfjs-dist/build/pdf.worker/src/core/jpx.js","webpack://pdfjs-dist/build/pdf.worker/src/core/lzw_stream.js","webpack://pdfjs-dist/build/pdf.worker/src/core/predictor_stream.js","webpack://pdfjs-dist/build/pdf.worker/src/core/run_length_stream.js","webpack://pdfjs-dist/build/pdf.worker/src/core/fonts.js","webpack://pdfjs-dist/build/pdf.worker/src/core/cff_parser.js","webpack://pdfjs-dist/build/pdf.worker/src/core/charsets.js","webpack://pdfjs-dist/build/pdf.worker/src/core/standard_fonts.js","webpack://pdfjs-dist/build/pdf.worker/src/core/to_unicode_map.js","webpack://pdfjs-dist/build/pdf.worker/src/core/cff_font.js","webpack://pdfjs-dist/build/pdf.worker/src/core/font_renderer.js","webpack://pdfjs-dist/build/pdf.worker/src/core/glyf.js","webpack://pdfjs-dist/build/pdf.worker/src/core/opentype_file_builder.js","webpack://pdfjs-dist/build/pdf.worker/src/core/type1_font.js","webpack://pdfjs-dist/build/pdf.worker/src/core/type1_parser.js","webpack://pdfjs-dist/build/pdf.worker/src/core/pattern.js","webpack://pdfjs-dist/build/pdf.worker/src/core/function.js","webpack://pdfjs-dist/build/pdf.worker/src/core/ps_parser.js","webpack://pdfjs-dist/build/pdf.worker/src/core/image_utils.js","webpack://pdfjs-dist/build/pdf.worker/src/core/bidi.js","webpack://pdfjs-dist/build/pdf.worker/src/core/metrics.js","webpack://pdfjs-dist/build/pdf.worker/src/core/murmurhash3.js","webpack://pdfjs-dist/build/pdf.worker/src/core/operator_list.js","webpack://pdfjs-dist/build/pdf.worker/src/core/image.js","webpack://pdfjs-dist/build/pdf.worker/src/core/catalog.js","webpack://pdfjs-dist/build/pdf.worker/src/core/name_number_tree.js","webpack://pdfjs-dist/build/pdf.worker/src/core/file_spec.js","webpack://pdfjs-dist/build/pdf.worker/src/core/metadata_parser.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xml_parser.js","webpack://pdfjs-dist/build/pdf.worker/src/core/struct_tree.js","webpack://pdfjs-dist/build/pdf.worker/src/core/object_loader.js","webpack://pdfjs-dist/build/pdf.worker/src/core/writer.js","webpack://pdfjs-dist/build/pdf.worker/src/core/crypto.js","webpack://pdfjs-dist/build/pdf.worker/src/core/decrypt_stream.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/factory.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/xfa_object.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/utils.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/namespaces.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/som.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/bind.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/template.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/layout.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/html_utils.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/fonts.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/text.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/data.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/parser.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/builder.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/setup.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/config.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/connection_set.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/datasets.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/locale_set.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/signature.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/stylesheet.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/xdp.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/xhtml.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/unknown.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xref.js","webpack://pdfjs-dist/build/pdf.worker/src/shared/message_handler.js","webpack://pdfjs-dist/build/pdf.worker/src/core/worker_stream.js","webpack://pdfjs-dist/build/pdf.worker/webpack/bootstrap","webpack://pdfjs-dist/build/pdf.worker/webpack/runtime/define property getters","webpack://pdfjs-dist/build/pdf.worker/webpack/runtime/hasOwnProperty shorthand","webpack://pdfjs-dist/build/pdf.worker/webpack/runtime/make namespace object","webpack://pdfjs-dist/build/pdf.worker/src/pdf.worker.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"pdfjs-dist/build/pdf.worker\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"pdfjs-dist/build/pdf.worker\"] = factory();\n\telse\n\t\troot[\"pdfjs-dist/build/pdf.worker\"] = factory();\n})(this, function() {\nreturn ","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n  AbortException,\n  arrayByteLength,\n  arraysToBytes,\n  createPromiseCapability,\n  getVerbosityLevel,\n  info,\n  InvalidPDFException,\n  isString,\n  MissingPDFException,\n  PasswordException,\n  setVerbosityLevel,\n  stringToPDFString,\n  UnexpectedResponseException,\n  UnknownErrorException,\n  UNSUPPORTED_FEATURES,\n  VerbosityLevel,\n  warn,\n} from \"../shared/util.js\";\nimport { clearPrimitiveCaches, Dict, Ref } from \"./primitives.js\";\nimport { LocalPdfManager, NetworkPdfManager } from \"./pdf_manager.js\";\nimport { incrementalUpdate } from \"./writer.js\";\nimport { isNodeJS } from \"../shared/is_node.js\";\nimport { MessageHandler } from \"../shared/message_handler.js\";\nimport { PDFWorkerStream } from \"./worker_stream.js\";\nimport { XRefParseException } from \"./core_utils.js\";\n\nclass WorkerTask {\n  constructor(name) {\n    this.name = name;\n    this.terminated = false;\n    this._capability = createPromiseCapability();\n  }\n\n  get finished() {\n    return this._capability.promise;\n  }\n\n  finish() {\n    this._capability.resolve();\n  }\n\n  terminate() {\n    this.terminated = true;\n  }\n\n  ensureNotTerminated() {\n    if (this.terminated) {\n      throw new Error(\"Worker task was terminated\");\n    }\n  }\n}\n\nclass WorkerMessageHandler {\n  static setup(handler, port) {\n    let testMessageProcessed = false;\n    handler.on(\"test\", function wphSetupTest(data) {\n      if (testMessageProcessed) {\n        return; // we already processed 'test' message once\n      }\n      testMessageProcessed = true;\n\n      // Ensure that `TypedArray`s can be sent to the worker,\n      // and that `postMessage` transfers are supported.\n      handler.send(\"test\", data instanceof Uint8Array && data[0] === 255);\n    });\n\n    handler.on(\"configure\", function wphConfigure(data) {\n      setVerbosityLevel(data.verbosity);\n    });\n\n    handler.on(\"GetDocRequest\", function wphSetupDoc(data) {\n      return WorkerMessageHandler.createDocumentHandler(data, port);\n    });\n  }\n\n  static createDocumentHandler(docParams, port) {\n    // This context is actually holds references on pdfManager and handler,\n    // until the latter is destroyed.\n    let pdfManager;\n    let terminated = false;\n    let cancelXHRs = null;\n    const WorkerTasks = [];\n    const verbosity = getVerbosityLevel();\n\n    const apiVersion = docParams.apiVersion;\n    const workerVersion =\n      typeof PDFJSDev !== \"undefined\" && !PDFJSDev.test(\"TESTING\")\n        ? PDFJSDev.eval(\"BUNDLE_VERSION\")\n        : null;\n    if (apiVersion !== workerVersion) {\n      throw new Error(\n        `The API version \"${apiVersion}\" does not match ` +\n          `the Worker version \"${workerVersion}\".`\n      );\n    }\n\n    if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) {\n      // Fail early, and predictably, rather than having (some) fonts fail to\n      // load/render with slightly cryptic error messages in environments where\n      // the `Array.prototype` has been *incorrectly* extended.\n      //\n      // PLEASE NOTE: We do *not* want to slow down font parsing by adding\n      //              `hasOwnProperty` checks all over the code-base.\n      const enumerableProperties = [];\n      for (const property in []) {\n        enumerableProperties.push(property);\n      }\n      if (enumerableProperties.length) {\n        throw new Error(\n          \"The `Array.prototype` contains unexpected enumerable properties: \" +\n            enumerableProperties.join(\", \") +\n            \"; thus breaking e.g. `for...in` iteration of `Array`s.\"\n        );\n      }\n\n      // Ensure that (primarily) Node.js users won't accidentally attempt to use\n      // a non-translated/non-polyfilled build of the library, since that would\n      // quickly fail anyway because of missing functionality.\n      if (\n        (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"SKIP_BABEL\")) &&\n        typeof ReadableStream === \"undefined\"\n      ) {\n        throw new Error(\n          \"The browser/environment lacks native support for critical \" +\n            \"functionality used by the PDF.js library (e.g. `ReadableStream`); \" +\n            \"please use a `legacy`-build instead.\"\n        );\n      }\n    }\n\n    const docId = docParams.docId;\n    const docBaseUrl = docParams.docBaseUrl;\n    const workerHandlerName = docParams.docId + \"_worker\";\n    let handler = new MessageHandler(workerHandlerName, docId, port);\n\n    function ensureNotTerminated() {\n      if (terminated) {\n        throw new Error(\"Worker was terminated\");\n      }\n    }\n\n    function startWorkerTask(task) {\n      WorkerTasks.push(task);\n    }\n\n    function finishWorkerTask(task) {\n      task.finish();\n      const i = WorkerTasks.indexOf(task);\n      WorkerTasks.splice(i, 1);\n    }\n\n    async function loadDocument(recoveryMode) {\n      await pdfManager.ensureDoc(\"checkHeader\");\n      await pdfManager.ensureDoc(\"parseStartXRef\");\n      await pdfManager.ensureDoc(\"parse\", [recoveryMode]);\n\n      // Check that at least the first page can be successfully loaded,\n      // since otherwise the XRef table is definitely not valid.\n      await pdfManager.ensureDoc(\"checkFirstPage\", [recoveryMode]);\n      // Check that the last page can be sucessfully loaded, to ensure that\n      // `numPages` is correct, and fallback to walking the entire /Pages-tree.\n      await pdfManager.ensureDoc(\"checkLastPage\", [recoveryMode]);\n\n      const isPureXfa = await pdfManager.ensureDoc(\"isPureXfa\");\n      if (isPureXfa) {\n        const task = new WorkerTask(\"loadXfaFonts\");\n        startWorkerTask(task);\n        await Promise.all([\n          pdfManager\n            .loadXfaFonts(handler, task)\n            .catch(reason => {\n              // Ignore errors, to allow the document to load.\n            })\n            .then(() => finishWorkerTask(task)),\n          pdfManager.loadXfaImages(),\n        ]);\n      }\n\n      const [numPages, fingerprints] = await Promise.all([\n        pdfManager.ensureDoc(\"numPages\"),\n        pdfManager.ensureDoc(\"fingerprints\"),\n      ]);\n\n      // Get htmlForXfa after numPages to avoid to create HTML twice.\n      const htmlForXfa = isPureXfa\n        ? await pdfManager.ensureDoc(\"htmlForXfa\")\n        : null;\n\n      return { numPages, fingerprints, htmlForXfa };\n    }\n\n    function getPdfManager(data, evaluatorOptions, enableXfa) {\n      const pdfManagerCapability = createPromiseCapability();\n      let newPdfManager;\n\n      const source = data.source;\n      if (source.data) {\n        try {\n          newPdfManager = new LocalPdfManager(\n            docId,\n            source.data,\n            source.password,\n            handler,\n            evaluatorOptions,\n            enableXfa,\n            docBaseUrl\n          );\n          pdfManagerCapability.resolve(newPdfManager);\n        } catch (ex) {\n          pdfManagerCapability.reject(ex);\n        }\n        return pdfManagerCapability.promise;\n      }\n\n      let pdfStream,\n        cachedChunks = [];\n      try {\n        pdfStream = new PDFWorkerStream(handler);\n      } catch (ex) {\n        pdfManagerCapability.reject(ex);\n        return pdfManagerCapability.promise;\n      }\n\n      const fullRequest = pdfStream.getFullReader();\n      fullRequest.headersReady\n        .then(function () {\n          if (!fullRequest.isRangeSupported) {\n            return;\n          }\n\n          // We don't need auto-fetch when streaming is enabled.\n          const disableAutoFetch =\n            source.disableAutoFetch || fullRequest.isStreamingSupported;\n          newPdfManager = new NetworkPdfManager(\n            docId,\n            pdfStream,\n            {\n              msgHandler: handler,\n              password: source.password,\n              length: fullRequest.contentLength,\n              disableAutoFetch,\n              rangeChunkSize: source.rangeChunkSize,\n            },\n            evaluatorOptions,\n            enableXfa,\n            docBaseUrl\n          );\n          // There may be a chance that `newPdfManager` is not initialized for\n          // the first few runs of `readchunk` block of code. Be sure to send\n          // all cached chunks, if any, to chunked_stream via pdf_manager.\n          for (let i = 0; i < cachedChunks.length; i++) {\n            newPdfManager.sendProgressiveData(cachedChunks[i]);\n          }\n\n          cachedChunks = [];\n          pdfManagerCapability.resolve(newPdfManager);\n          cancelXHRs = null;\n        })\n        .catch(function (reason) {\n          pdfManagerCapability.reject(reason);\n          cancelXHRs = null;\n        });\n\n      let loaded = 0;\n      const flushChunks = function () {\n        const pdfFile = arraysToBytes(cachedChunks);\n        if (source.length && pdfFile.length !== source.length) {\n          warn(\"reported HTTP length is different from actual\");\n        }\n        // the data is array, instantiating directly from it\n        try {\n          newPdfManager = new LocalPdfManager(\n            docId,\n            pdfFile,\n            source.password,\n            handler,\n            evaluatorOptions,\n            enableXfa,\n            docBaseUrl\n          );\n          pdfManagerCapability.resolve(newPdfManager);\n        } catch (ex) {\n          pdfManagerCapability.reject(ex);\n        }\n        cachedChunks = [];\n      };\n      const readPromise = new Promise(function (resolve, reject) {\n        const readChunk = function ({ value, done }) {\n          try {\n            ensureNotTerminated();\n            if (done) {\n              if (!newPdfManager) {\n                flushChunks();\n              }\n              cancelXHRs = null;\n              return;\n            }\n\n            loaded += arrayByteLength(value);\n            if (!fullRequest.isStreamingSupported) {\n              handler.send(\"DocProgress\", {\n                loaded,\n                total: Math.max(loaded, fullRequest.contentLength || 0),\n              });\n            }\n\n            if (newPdfManager) {\n              newPdfManager.sendProgressiveData(value);\n            } else {\n              cachedChunks.push(value);\n            }\n\n            fullRequest.read().then(readChunk, reject);\n          } catch (e) {\n            reject(e);\n          }\n        };\n        fullRequest.read().then(readChunk, reject);\n      });\n      readPromise.catch(function (e) {\n        pdfManagerCapability.reject(e);\n        cancelXHRs = null;\n      });\n\n      cancelXHRs = function (reason) {\n        pdfStream.cancelAllRequests(reason);\n      };\n\n      return pdfManagerCapability.promise;\n    }\n\n    function setupDoc(data) {\n      function onSuccess(doc) {\n        ensureNotTerminated();\n        handler.send(\"GetDoc\", { pdfInfo: doc });\n      }\n\n      function onFailure(ex) {\n        ensureNotTerminated();\n\n        if (ex instanceof PasswordException) {\n          const task = new WorkerTask(`PasswordException: response ${ex.code}`);\n          startWorkerTask(task);\n\n          handler\n            .sendWithPromise(\"PasswordRequest\", ex)\n            .then(function ({ password }) {\n              finishWorkerTask(task);\n              pdfManager.updatePassword(password);\n              pdfManagerReady();\n            })\n            .catch(function () {\n              finishWorkerTask(task);\n              handler.send(\"DocException\", ex);\n            });\n        } else if (\n          ex instanceof InvalidPDFException ||\n          ex instanceof MissingPDFException ||\n          ex instanceof UnexpectedResponseException ||\n          ex instanceof UnknownErrorException\n        ) {\n          handler.send(\"DocException\", ex);\n        } else {\n          handler.send(\n            \"DocException\",\n            new UnknownErrorException(ex.message, ex.toString())\n          );\n        }\n      }\n\n      function pdfManagerReady() {\n        ensureNotTerminated();\n\n        loadDocument(false).then(onSuccess, function (reason) {\n          ensureNotTerminated();\n\n          // Try again with recoveryMode == true\n          if (!(reason instanceof XRefParseException)) {\n            onFailure(reason);\n            return;\n          }\n          pdfManager.requestLoadedStream();\n          pdfManager.onLoadedStream().then(function () {\n            ensureNotTerminated();\n\n            loadDocument(true).then(onSuccess, onFailure);\n          });\n        });\n      }\n\n      ensureNotTerminated();\n\n      const evaluatorOptions = {\n        maxImageSize: data.maxImageSize,\n        disableFontFace: data.disableFontFace,\n        ignoreErrors: data.ignoreErrors,\n        isEvalSupported: data.isEvalSupported,\n        fontExtraProperties: data.fontExtraProperties,\n        useSystemFonts: data.useSystemFonts,\n        cMapUrl: data.cMapUrl,\n        standardFontDataUrl: data.standardFontDataUrl,\n      };\n\n      getPdfManager(data, evaluatorOptions, data.enableXfa)\n        .then(function (newPdfManager) {\n          if (terminated) {\n            // We were in a process of setting up the manager, but it got\n            // terminated in the middle.\n            newPdfManager.terminate(\n              new AbortException(\"Worker was terminated.\")\n            );\n            throw new Error(\"Worker was terminated\");\n          }\n          pdfManager = newPdfManager;\n\n          pdfManager.onLoadedStream().then(function (stream) {\n            handler.send(\"DataLoaded\", { length: stream.bytes.byteLength });\n          });\n        })\n        .then(pdfManagerReady, onFailure);\n    }\n\n    handler.on(\"GetPage\", function wphSetupGetPage(data) {\n      return pdfManager.getPage(data.pageIndex).then(function (page) {\n        return Promise.all([\n          pdfManager.ensure(page, \"rotate\"),\n          pdfManager.ensure(page, \"ref\"),\n          pdfManager.ensure(page, \"userUnit\"),\n          pdfManager.ensure(page, \"view\"),\n        ]).then(function ([rotate, ref, userUnit, view]) {\n          return {\n            rotate,\n            ref,\n            userUnit,\n            view,\n          };\n        });\n      });\n    });\n\n    handler.on(\"GetPageIndex\", function wphSetupGetPageIndex({ ref }) {\n      const pageRef = Ref.get(ref.num, ref.gen);\n      return pdfManager.ensureCatalog(\"getPageIndex\", [pageRef]);\n    });\n\n    handler.on(\"GetDestinations\", function wphSetupGetDestinations(data) {\n      return pdfManager.ensureCatalog(\"destinations\");\n    });\n\n    handler.on(\"GetDestination\", function wphSetupGetDestination(data) {\n      return pdfManager.ensureCatalog(\"getDestination\", [data.id]);\n    });\n\n    handler.on(\"GetPageLabels\", function wphSetupGetPageLabels(data) {\n      return pdfManager.ensureCatalog(\"pageLabels\");\n    });\n\n    handler.on(\"GetPageLayout\", function wphSetupGetPageLayout(data) {\n      return pdfManager.ensureCatalog(\"pageLayout\");\n    });\n\n    handler.on(\"GetPageMode\", function wphSetupGetPageMode(data) {\n      return pdfManager.ensureCatalog(\"pageMode\");\n    });\n\n    handler.on(\"GetViewerPreferences\", function (data) {\n      return pdfManager.ensureCatalog(\"viewerPreferences\");\n    });\n\n    handler.on(\"GetOpenAction\", function (data) {\n      return pdfManager.ensureCatalog(\"openAction\");\n    });\n\n    handler.on(\"GetAttachments\", function wphSetupGetAttachments(data) {\n      return pdfManager.ensureCatalog(\"attachments\");\n    });\n\n    handler.on(\"GetJavaScript\", function wphSetupGetJavaScript(data) {\n      return pdfManager.ensureCatalog(\"javaScript\");\n    });\n\n    handler.on(\"GetDocJSActions\", function wphSetupGetDocJSActions(data) {\n      return pdfManager.ensureCatalog(\"jsActions\");\n    });\n\n    handler.on(\"GetPageJSActions\", function ({ pageIndex }) {\n      return pdfManager.getPage(pageIndex).then(function (page) {\n        return pdfManager.ensure(page, \"jsActions\");\n      });\n    });\n\n    handler.on(\"GetOutline\", function wphSetupGetOutline(data) {\n      return pdfManager.ensureCatalog(\"documentOutline\");\n    });\n\n    handler.on(\"GetOptionalContentConfig\", function (data) {\n      return pdfManager.ensureCatalog(\"optionalContentConfig\");\n    });\n\n    handler.on(\"GetPermissions\", function (data) {\n      return pdfManager.ensureCatalog(\"permissions\");\n    });\n\n    handler.on(\"GetMetadata\", function wphSetupGetMetadata(data) {\n      return Promise.all([\n        pdfManager.ensureDoc(\"documentInfo\"),\n        pdfManager.ensureCatalog(\"metadata\"),\n      ]);\n    });\n\n    handler.on(\"GetMarkInfo\", function wphSetupGetMarkInfo(data) {\n      return pdfManager.ensureCatalog(\"markInfo\");\n    });\n\n    handler.on(\"GetData\", function wphSetupGetData(data) {\n      pdfManager.requestLoadedStream();\n      return pdfManager.onLoadedStream().then(function (stream) {\n        return stream.bytes;\n      });\n    });\n\n    handler.on(\"GetAnnotations\", function ({ pageIndex, intent }) {\n      return pdfManager.getPage(pageIndex).then(function (page) {\n        return page.getAnnotationsData(intent);\n      });\n    });\n\n    handler.on(\"GetFieldObjects\", function (data) {\n      return pdfManager.ensureDoc(\"fieldObjects\");\n    });\n\n    handler.on(\"HasJSActions\", function (data) {\n      return pdfManager.ensureDoc(\"hasJSActions\");\n    });\n\n    handler.on(\"GetCalculationOrderIds\", function (data) {\n      return pdfManager.ensureDoc(\"calculationOrderIds\");\n    });\n\n    handler.on(\n      \"SaveDocument\",\n      function ({ isPureXfa, numPages, annotationStorage, filename }) {\n        pdfManager.requestLoadedStream();\n\n        const promises = [\n          pdfManager.onLoadedStream(),\n          pdfManager.ensureCatalog(\"acroForm\"),\n          pdfManager.ensureCatalog(\"acroFormRef\"),\n          pdfManager.ensureDoc(\"xref\"),\n          pdfManager.ensureDoc(\"startXRef\"),\n        ];\n\n        if (isPureXfa) {\n          promises.push(pdfManager.serializeXfaData(annotationStorage));\n        } else {\n          for (let pageIndex = 0; pageIndex < numPages; pageIndex++) {\n            promises.push(\n              pdfManager.getPage(pageIndex).then(function (page) {\n                const task = new WorkerTask(`Save: page ${pageIndex}`);\n                return page\n                  .save(handler, task, annotationStorage)\n                  .finally(function () {\n                    finishWorkerTask(task);\n                  });\n              })\n            );\n          }\n        }\n\n        return Promise.all(promises).then(function ([\n          stream,\n          acroForm,\n          acroFormRef,\n          xref,\n          startXRef,\n          ...refs\n        ]) {\n          let newRefs = [];\n          let xfaData = null;\n          if (isPureXfa) {\n            xfaData = refs[0];\n            if (!xfaData) {\n              return stream.bytes;\n            }\n          } else {\n            for (const ref of refs) {\n              newRefs = ref\n                .filter(x => x !== null)\n                .reduce((a, b) => a.concat(b), newRefs);\n            }\n\n            if (newRefs.length === 0) {\n              // No new refs so just return the initial bytes\n              return stream.bytes;\n            }\n          }\n\n          const xfa = (acroForm instanceof Dict && acroForm.get(\"XFA\")) || null;\n          let xfaDatasetsRef = null;\n          let hasXfaDatasetsEntry = false;\n          if (Array.isArray(xfa)) {\n            for (let i = 0, ii = xfa.length; i < ii; i += 2) {\n              if (xfa[i] === \"datasets\") {\n                xfaDatasetsRef = xfa[i + 1];\n                acroFormRef = null;\n                hasXfaDatasetsEntry = true;\n              }\n            }\n            if (xfaDatasetsRef === null) {\n              xfaDatasetsRef = xref.getNewRef();\n            }\n          } else if (xfa) {\n            acroFormRef = null;\n            // TODO: Support XFA streams.\n            warn(\"Unsupported XFA type.\");\n          }\n\n          let newXrefInfo = Object.create(null);\n          if (xref.trailer) {\n            // Get string info from Info in order to compute fileId.\n            const infoObj = Object.create(null);\n            const xrefInfo = xref.trailer.get(\"Info\") || null;\n            if (xrefInfo instanceof Dict) {\n              xrefInfo.forEach((key, value) => {\n                if (isString(key) && isString(value)) {\n                  infoObj[key] = stringToPDFString(value);\n                }\n              });\n            }\n\n            newXrefInfo = {\n              rootRef: xref.trailer.getRaw(\"Root\") || null,\n              encryptRef: xref.trailer.getRaw(\"Encrypt\") || null,\n              newRef: xref.getNewRef(),\n              infoRef: xref.trailer.getRaw(\"Info\") || null,\n              info: infoObj,\n              fileIds: xref.trailer.get(\"ID\") || null,\n              startXRef,\n              filename,\n            };\n          }\n          xref.resetNewRef();\n\n          return incrementalUpdate({\n            originalData: stream.bytes,\n            xrefInfo: newXrefInfo,\n            newRefs,\n            xref,\n            hasXfa: !!xfa,\n            xfaDatasetsRef,\n            hasXfaDatasetsEntry,\n            acroFormRef,\n            acroForm,\n            xfaData,\n          });\n        });\n      }\n    );\n\n    handler.on(\"GetOperatorList\", function wphSetupRenderPage(data, sink) {\n      const pageIndex = data.pageIndex;\n      pdfManager.getPage(pageIndex).then(function (page) {\n        const task = new WorkerTask(`GetOperatorList: page ${pageIndex}`);\n        startWorkerTask(task);\n\n        // NOTE: Keep this condition in sync with the `info` helper function.\n        const start = verbosity >= VerbosityLevel.INFOS ? Date.now() : 0;\n\n        // Pre compile the pdf page and fetch the fonts/images.\n        page\n          .getOperatorList({\n            handler,\n            sink,\n            task,\n            intent: data.intent,\n            cacheKey: data.cacheKey,\n            annotationStorage: data.annotationStorage,\n          })\n          .then(\n            function (operatorListInfo) {\n              finishWorkerTask(task);\n\n              if (start) {\n                info(\n                  `page=${pageIndex + 1} - getOperatorList: time=` +\n                    `${Date.now() - start}ms, len=${operatorListInfo.length}`\n                );\n              }\n              sink.close();\n            },\n            function (reason) {\n              finishWorkerTask(task);\n              if (task.terminated) {\n                return; // ignoring errors from the terminated thread\n              }\n              // For compatibility with older behavior, generating unknown\n              // unsupported feature notification on errors.\n              handler.send(\"UnsupportedFeature\", {\n                featureId: UNSUPPORTED_FEATURES.errorOperatorList,\n              });\n\n              sink.error(reason);\n\n              // TODO: Should `reason` be re-thrown here (currently that casues\n              //       \"Uncaught exception: ...\" messages in the console)?\n            }\n          );\n      });\n    });\n\n    handler.on(\"GetTextContent\", function wphExtractText(data, sink) {\n      const pageIndex = data.pageIndex;\n\n      pdfManager.getPage(pageIndex).then(function (page) {\n        const task = new WorkerTask(\"GetTextContent: page \" + pageIndex);\n        startWorkerTask(task);\n\n        // NOTE: Keep this condition in sync with the `info` helper function.\n        const start = verbosity >= VerbosityLevel.INFOS ? Date.now() : 0;\n\n        page\n          .extractTextContent({\n            handler,\n            task,\n            sink,\n            normalizeWhitespace: data.normalizeWhitespace,\n            includeMarkedContent: data.includeMarkedContent,\n            combineTextItems: data.combineTextItems,\n          })\n          .then(\n            function () {\n              finishWorkerTask(task);\n\n              if (start) {\n                info(\n                  `page=${pageIndex + 1} - getTextContent: time=` +\n                    `${Date.now() - start}ms`\n                );\n              }\n              sink.close();\n            },\n            function (reason) {\n              finishWorkerTask(task);\n              if (task.terminated) {\n                return; // ignoring errors from the terminated thread\n              }\n              sink.error(reason);\n\n              // TODO: Should `reason` be re-thrown here (currently that casues\n              //       \"Uncaught exception: ...\" messages in the console)?\n            }\n          );\n      });\n    });\n\n    handler.on(\"GetStructTree\", function wphGetStructTree(data) {\n      return pdfManager.getPage(data.pageIndex).then(function (page) {\n        return pdfManager.ensure(page, \"getStructTree\");\n      });\n    });\n\n    handler.on(\"FontFallback\", function (data) {\n      return pdfManager.fontFallback(data.id, handler);\n    });\n\n    handler.on(\"Cleanup\", function wphCleanup(data) {\n      return pdfManager.cleanup(/* manuallyTriggered = */ true);\n    });\n\n    handler.on(\"Terminate\", function wphTerminate(data) {\n      terminated = true;\n\n      const waitOn = [];\n      if (pdfManager) {\n        pdfManager.terminate(new AbortException(\"Worker was terminated.\"));\n\n        const cleanupPromise = pdfManager.cleanup();\n        waitOn.push(cleanupPromise);\n\n        pdfManager = null;\n      } else {\n        clearPrimitiveCaches();\n      }\n      if (cancelXHRs) {\n        cancelXHRs(new AbortException(\"Worker was terminated.\"));\n      }\n\n      for (const task of WorkerTasks) {\n        waitOn.push(task.finished);\n        task.terminate();\n      }\n\n      return Promise.all(waitOn).then(function () {\n        // Notice that even if we destroying handler, resolved response promise\n        // must be sent back.\n        handler.destroy();\n        handler = null;\n      });\n    });\n\n    handler.on(\"Ready\", function wphReady(data) {\n      setupDoc(docParams);\n      docParams = null; // we don't need docParams anymore -- saving memory.\n    });\n    return workerHandlerName;\n  }\n\n  static initializeFromPort(port) {\n    const handler = new MessageHandler(\"worker\", \"main\", port);\n    WorkerMessageHandler.setup(handler, port);\n    handler.send(\"ready\", null);\n  }\n}\n\nfunction isMessagePort(maybePort) {\n  return (\n    typeof maybePort.postMessage === \"function\" && \"onmessage\" in maybePort\n  );\n}\n\n// Worker thread (and not Node.js)?\nif (\n  typeof window === \"undefined\" &&\n  !isNodeJS &&\n  typeof self !== \"undefined\" &&\n  isMessagePort(self)\n) {\n  WorkerMessageHandler.initializeFromPort(self);\n}\n\nexport { WorkerMessageHandler, WorkerTask };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport \"./compatibility.js\";\n\nconst IDENTITY_MATRIX = [1, 0, 0, 1, 0, 0];\nconst FONT_IDENTITY_MATRIX = [0.001, 0, 0, 0.001, 0, 0];\n\n/**\n * Refer to the `WorkerTransport.getRenderingIntent`-method in the API, to see\n * how these flags are being used:\n *  - ANY, DISPLAY, and PRINT are the normal rendering intents, note the\n *    `PDFPageProxy.{render, getOperatorList, getAnnotations}`-methods.\n *  - ANNOTATIONS_FORMS, ANNOTATIONS_STORAGE, ANNOTATIONS_DISABLE control which\n *    annotations are rendered onto the canvas (i.e. by being included in the\n *    operatorList), note the `PDFPageProxy.{render, getOperatorList}`-methods\n *    and their `annotationMode`-option.\n *  - OPLIST is used with the `PDFPageProxy.getOperatorList`-method, note the\n *    `OperatorList`-constructor (on the worker-thread).\n */\nconst RenderingIntentFlag = {\n  ANY: 0x01,\n  DISPLAY: 0x02,\n  PRINT: 0x04,\n  ANNOTATIONS_FORMS: 0x10,\n  ANNOTATIONS_STORAGE: 0x20,\n  ANNOTATIONS_DISABLE: 0x40,\n  OPLIST: 0x100,\n};\n\nconst AnnotationMode = {\n  DISABLE: 0,\n  ENABLE: 1,\n  ENABLE_FORMS: 2,\n  ENABLE_STORAGE: 3,\n};\n\n// Permission flags from Table 22, Section 7.6.3.2 of the PDF specification.\nconst PermissionFlag = {\n  PRINT: 0x04,\n  MODIFY_CONTENTS: 0x08,\n  COPY: 0x10,\n  MODIFY_ANNOTATIONS: 0x20,\n  FILL_INTERACTIVE_FORMS: 0x100,\n  COPY_FOR_ACCESSIBILITY: 0x200,\n  ASSEMBLE: 0x400,\n  PRINT_HIGH_QUALITY: 0x800,\n};\n\nconst TextRenderingMode = {\n  FILL: 0,\n  STROKE: 1,\n  FILL_STROKE: 2,\n  INVISIBLE: 3,\n  FILL_ADD_TO_PATH: 4,\n  STROKE_ADD_TO_PATH: 5,\n  FILL_STROKE_ADD_TO_PATH: 6,\n  ADD_TO_PATH: 7,\n  FILL_STROKE_MASK: 3,\n  ADD_TO_PATH_FLAG: 4,\n};\n\nconst ImageKind = {\n  GRAYSCALE_1BPP: 1,\n  RGB_24BPP: 2,\n  RGBA_32BPP: 3,\n};\n\nconst AnnotationType = {\n  TEXT: 1,\n  LINK: 2,\n  FREETEXT: 3,\n  LINE: 4,\n  SQUARE: 5,\n  CIRCLE: 6,\n  POLYGON: 7,\n  POLYLINE: 8,\n  HIGHLIGHT: 9,\n  UNDERLINE: 10,\n  SQUIGGLY: 11,\n  STRIKEOUT: 12,\n  STAMP: 13,\n  CARET: 14,\n  INK: 15,\n  POPUP: 16,\n  FILEATTACHMENT: 17,\n  SOUND: 18,\n  MOVIE: 19,\n  WIDGET: 20,\n  SCREEN: 21,\n  PRINTERMARK: 22,\n  TRAPNET: 23,\n  WATERMARK: 24,\n  THREED: 25,\n  REDACT: 26,\n};\n\nconst AnnotationStateModelType = {\n  MARKED: \"Marked\",\n  REVIEW: \"Review\",\n};\n\nconst AnnotationMarkedState = {\n  MARKED: \"Marked\",\n  UNMARKED: \"Unmarked\",\n};\n\nconst AnnotationReviewState = {\n  ACCEPTED: \"Accepted\",\n  REJECTED: \"Rejected\",\n  CANCELLED: \"Cancelled\",\n  COMPLETED: \"Completed\",\n  NONE: \"None\",\n};\n\nconst AnnotationReplyType = {\n  GROUP: \"Group\",\n  REPLY: \"R\",\n};\n\nconst AnnotationFlag = {\n  INVISIBLE: 0x01,\n  HIDDEN: 0x02,\n  PRINT: 0x04,\n  NOZOOM: 0x08,\n  NOROTATE: 0x10,\n  NOVIEW: 0x20,\n  READONLY: 0x40,\n  LOCKED: 0x80,\n  TOGGLENOVIEW: 0x100,\n  LOCKEDCONTENTS: 0x200,\n};\n\nconst AnnotationFieldFlag = {\n  READONLY: 0x0000001,\n  REQUIRED: 0x0000002,\n  NOEXPORT: 0x0000004,\n  MULTILINE: 0x0001000,\n  PASSWORD: 0x0002000,\n  NOTOGGLETOOFF: 0x0004000,\n  RADIO: 0x0008000,\n  PUSHBUTTON: 0x0010000,\n  COMBO: 0x0020000,\n  EDIT: 0x0040000,\n  SORT: 0x0080000,\n  FILESELECT: 0x0100000,\n  MULTISELECT: 0x0200000,\n  DONOTSPELLCHECK: 0x0400000,\n  DONOTSCROLL: 0x0800000,\n  COMB: 0x1000000,\n  RICHTEXT: 0x2000000,\n  RADIOSINUNISON: 0x2000000,\n  COMMITONSELCHANGE: 0x4000000,\n};\n\nconst AnnotationBorderStyleType = {\n  SOLID: 1,\n  DASHED: 2,\n  BEVELED: 3,\n  INSET: 4,\n  UNDERLINE: 5,\n};\n\nconst AnnotationActionEventType = {\n  E: \"Mouse Enter\",\n  X: \"Mouse Exit\",\n  D: \"Mouse Down\",\n  U: \"Mouse Up\",\n  Fo: \"Focus\",\n  Bl: \"Blur\",\n  PO: \"PageOpen\",\n  PC: \"PageClose\",\n  PV: \"PageVisible\",\n  PI: \"PageInvisible\",\n  K: \"Keystroke\",\n  F: \"Format\",\n  V: \"Validate\",\n  C: \"Calculate\",\n};\n\nconst DocumentActionEventType = {\n  WC: \"WillClose\",\n  WS: \"WillSave\",\n  DS: \"DidSave\",\n  WP: \"WillPrint\",\n  DP: \"DidPrint\",\n};\n\nconst PageActionEventType = {\n  O: \"PageOpen\",\n  C: \"PageClose\",\n};\n\nconst StreamType = {\n  UNKNOWN: \"UNKNOWN\",\n  FLATE: \"FLATE\",\n  LZW: \"LZW\",\n  DCT: \"DCT\",\n  JPX: \"JPX\",\n  JBIG: \"JBIG\",\n  A85: \"A85\",\n  AHX: \"AHX\",\n  CCF: \"CCF\",\n  RLX: \"RLX\", // PDF short name is 'RL', but telemetry requires three chars.\n};\n\nconst FontType = {\n  UNKNOWN: \"UNKNOWN\",\n  TYPE1: \"TYPE1\",\n  TYPE1STANDARD: \"TYPE1STANDARD\",\n  TYPE1C: \"TYPE1C\",\n  CIDFONTTYPE0: \"CIDFONTTYPE0\",\n  CIDFONTTYPE0C: \"CIDFONTTYPE0C\",\n  TRUETYPE: \"TRUETYPE\",\n  CIDFONTTYPE2: \"CIDFONTTYPE2\",\n  TYPE3: \"TYPE3\",\n  OPENTYPE: \"OPENTYPE\",\n  TYPE0: \"TYPE0\",\n  MMTYPE1: \"MMTYPE1\",\n};\n\nconst VerbosityLevel = {\n  ERRORS: 0,\n  WARNINGS: 1,\n  INFOS: 5,\n};\n\nconst CMapCompressionType = {\n  NONE: 0,\n  BINARY: 1,\n  STREAM: 2,\n};\n\n// All the possible operations for an operator list.\nconst OPS = {\n  // Intentionally start from 1 so it is easy to spot bad operators that will be\n  // 0's.\n  dependency: 1,\n  setLineWidth: 2,\n  setLineCap: 3,\n  setLineJoin: 4,\n  setMiterLimit: 5,\n  setDash: 6,\n  setRenderingIntent: 7,\n  setFlatness: 8,\n  setGState: 9,\n  save: 10,\n  restore: 11,\n  transform: 12,\n  moveTo: 13,\n  lineTo: 14,\n  curveTo: 15,\n  curveTo2: 16,\n  curveTo3: 17,\n  closePath: 18,\n  rectangle: 19,\n  stroke: 20,\n  closeStroke: 21,\n  fill: 22,\n  eoFill: 23,\n  fillStroke: 24,\n  eoFillStroke: 25,\n  closeFillStroke: 26,\n  closeEOFillStroke: 27,\n  endPath: 28,\n  clip: 29,\n  eoClip: 30,\n  beginText: 31,\n  endText: 32,\n  setCharSpacing: 33,\n  setWordSpacing: 34,\n  setHScale: 35,\n  setLeading: 36,\n  setFont: 37,\n  setTextRenderingMode: 38,\n  setTextRise: 39,\n  moveText: 40,\n  setLeadingMoveText: 41,\n  setTextMatrix: 42,\n  nextLine: 43,\n  showText: 44,\n  showSpacedText: 45,\n  nextLineShowText: 46,\n  nextLineSetSpacingShowText: 47,\n  setCharWidth: 48,\n  setCharWidthAndBounds: 49,\n  setStrokeColorSpace: 50,\n  setFillColorSpace: 51,\n  setStrokeColor: 52,\n  setStrokeColorN: 53,\n  setFillColor: 54,\n  setFillColorN: 55,\n  setStrokeGray: 56,\n  setFillGray: 57,\n  setStrokeRGBColor: 58,\n  setFillRGBColor: 59,\n  setStrokeCMYKColor: 60,\n  setFillCMYKColor: 61,\n  shadingFill: 62,\n  beginInlineImage: 63,\n  beginImageData: 64,\n  endInlineImage: 65,\n  paintXObject: 66,\n  markPoint: 67,\n  markPointProps: 68,\n  beginMarkedContent: 69,\n  beginMarkedContentProps: 70,\n  endMarkedContent: 71,\n  beginCompat: 72,\n  endCompat: 73,\n  paintFormXObjectBegin: 74,\n  paintFormXObjectEnd: 75,\n  beginGroup: 76,\n  endGroup: 77,\n  beginAnnotations: 78,\n  endAnnotations: 79,\n  beginAnnotation: 80,\n  endAnnotation: 81,\n  /** @deprecated unused */\n  paintJpegXObject: 82,\n  paintImageMaskXObject: 83,\n  paintImageMaskXObjectGroup: 84,\n  paintImageXObject: 85,\n  paintInlineImageXObject: 86,\n  paintInlineImageXObjectGroup: 87,\n  paintImageXObjectRepeat: 88,\n  paintImageMaskXObjectRepeat: 89,\n  paintSolidColorImageMask: 90,\n  constructPath: 91,\n};\n\nconst UNSUPPORTED_FEATURES = {\n  /** @deprecated unused */\n  unknown: \"unknown\",\n  forms: \"forms\",\n  javaScript: \"javaScript\",\n  signatures: \"signatures\",\n  smask: \"smask\",\n  shadingPattern: \"shadingPattern\",\n  /** @deprecated unused */\n  font: \"font\",\n  errorTilingPattern: \"errorTilingPattern\",\n  errorExtGState: \"errorExtGState\",\n  errorXObject: \"errorXObject\",\n  errorFontLoadType3: \"errorFontLoadType3\",\n  errorFontState: \"errorFontState\",\n  errorFontMissing: \"errorFontMissing\",\n  errorFontTranslate: \"errorFontTranslate\",\n  errorColorSpace: \"errorColorSpace\",\n  errorOperatorList: \"errorOperatorList\",\n  errorFontToUnicode: \"errorFontToUnicode\",\n  errorFontLoadNative: \"errorFontLoadNative\",\n  errorFontBuildPath: \"errorFontBuildPath\",\n  errorFontGetPath: \"errorFontGetPath\",\n  errorMarkedContent: \"errorMarkedContent\",\n  errorContentSubStream: \"errorContentSubStream\",\n};\n\nconst PasswordResponses = {\n  NEED_PASSWORD: 1,\n  INCORRECT_PASSWORD: 2,\n};\n\nlet verbosity = VerbosityLevel.WARNINGS;\n\nfunction setVerbosityLevel(level) {\n  if (Number.isInteger(level)) {\n    verbosity = level;\n  }\n}\n\nfunction getVerbosityLevel() {\n  return verbosity;\n}\n\n// A notice for devs. These are good for things that are helpful to devs, such\n// as warning that Workers were disabled, which is important to devs but not\n// end users.\nfunction info(msg) {\n  if (verbosity >= VerbosityLevel.INFOS) {\n    console.log(`Info: ${msg}`);\n  }\n}\n\n// Non-fatal warnings.\nfunction warn(msg) {\n  if (verbosity >= VerbosityLevel.WARNINGS) {\n    console.log(`Warning: ${msg}`);\n  }\n}\n\nfunction unreachable(msg) {\n  throw new Error(msg);\n}\n\nfunction assert(cond, msg) {\n  if (!cond) {\n    unreachable(msg);\n  }\n}\n\n// Checks if URLs have the same origin. For non-HTTP based URLs, returns false.\nfunction isSameOrigin(baseUrl, otherUrl) {\n  let base;\n  try {\n    base = new URL(baseUrl);\n    if (!base.origin || base.origin === \"null\") {\n      return false; // non-HTTP url\n    }\n  } catch (e) {\n    return false;\n  }\n\n  const other = new URL(otherUrl, base);\n  return base.origin === other.origin;\n}\n\n// Checks if URLs use one of the allowed protocols, e.g. to avoid XSS.\nfunction _isValidProtocol(url) {\n  if (!url) {\n    return false;\n  }\n  switch (url.protocol) {\n    case \"http:\":\n    case \"https:\":\n    case \"ftp:\":\n    case \"mailto:\":\n    case \"tel:\":\n      return true;\n    default:\n      return false;\n  }\n}\n\n/**\n * Attempts to create a valid absolute URL.\n *\n * @param {URL|string} url - An absolute, or relative, URL.\n * @param {URL|string} [baseUrl] - An absolute URL.\n * @param {Object} [options]\n * @returns Either a valid {URL}, or `null` otherwise.\n */\nfunction createValidAbsoluteUrl(url, baseUrl = null, options = null) {\n  if (!url) {\n    return null;\n  }\n  try {\n    if (options && typeof url === \"string\") {\n      // Let URLs beginning with \"www.\" default to using the \"http://\" protocol.\n      if (options.addDefaultProtocol && url.startsWith(\"www.\")) {\n        const dots = url.match(/\\./g);\n        // Avoid accidentally matching a *relative* URL pointing to a file named\n        // e.g. \"www.pdf\" or similar.\n        if (dots && dots.length >= 2) {\n          url = `http://${url}`;\n        }\n      }\n\n      // According to ISO 32000-1:2008, section 12.6.4.7, URIs should be encoded\n      // in 7-bit ASCII. Some bad PDFs use UTF-8 encoding; see bug 1122280.\n      if (options.tryConvertEncoding) {\n        try {\n          url = stringToUTF8String(url);\n        } catch (ex) {}\n      }\n    }\n\n    const absoluteUrl = baseUrl ? new URL(url, baseUrl) : new URL(url);\n    if (_isValidProtocol(absoluteUrl)) {\n      return absoluteUrl;\n    }\n  } catch (ex) {\n    /* `new URL()` will throw on incorrect data. */\n  }\n  return null;\n}\n\nfunction shadow(obj, prop, value) {\n  if (\n    typeof PDFJSDev === \"undefined\" ||\n    PDFJSDev.test(\"!PRODUCTION || TESTING\")\n  ) {\n    assert(\n      prop in obj,\n      `shadow: Property \"${prop && prop.toString()}\" not found in object.`\n    );\n  }\n  Object.defineProperty(obj, prop, {\n    value,\n    enumerable: true,\n    configurable: true,\n    writable: false,\n  });\n  return value;\n}\n\n/**\n * @type {any}\n */\nconst BaseException = (function BaseExceptionClosure() {\n  // eslint-disable-next-line no-shadow\n  function BaseException(message, name) {\n    if (this.constructor === BaseException) {\n      unreachable(\"Cannot initialize BaseException.\");\n    }\n    this.message = message;\n    this.name = name;\n  }\n  BaseException.prototype = new Error();\n  BaseException.constructor = BaseException;\n\n  return BaseException;\n})();\n\nclass PasswordException extends BaseException {\n  constructor(msg, code) {\n    super(msg, \"PasswordException\");\n    this.code = code;\n  }\n}\n\nclass UnknownErrorException extends BaseException {\n  constructor(msg, details) {\n    super(msg, \"UnknownErrorException\");\n    this.details = details;\n  }\n}\n\nclass InvalidPDFException extends BaseException {\n  constructor(msg) {\n    super(msg, \"InvalidPDFException\");\n  }\n}\n\nclass MissingPDFException extends BaseException {\n  constructor(msg) {\n    super(msg, \"MissingPDFException\");\n  }\n}\n\nclass UnexpectedResponseException extends BaseException {\n  constructor(msg, status) {\n    super(msg, \"UnexpectedResponseException\");\n    this.status = status;\n  }\n}\n\n/**\n * Error caused during parsing PDF data.\n */\nclass FormatError extends BaseException {\n  constructor(msg) {\n    super(msg, \"FormatError\");\n  }\n}\n\n/**\n * Error used to indicate task cancellation.\n */\nclass AbortException extends BaseException {\n  constructor(msg) {\n    super(msg, \"AbortException\");\n  }\n}\n\nconst NullCharactersRegExp = /\\x00+/g;\nconst InvisibleCharactersRegExp = /[\\x01-\\x1F]/g;\n\n/**\n * @param {string} str\n */\nfunction removeNullCharacters(str, replaceInvisible = false) {\n  if (typeof str !== \"string\") {\n    warn(\"The argument for removeNullCharacters must be a string.\");\n    return str;\n  }\n  if (replaceInvisible) {\n    str = str.replace(InvisibleCharactersRegExp, \" \");\n  }\n  return str.replace(NullCharactersRegExp, \"\");\n}\n\nfunction bytesToString(bytes) {\n  assert(\n    bytes !== null && typeof bytes === \"object\" && bytes.length !== undefined,\n    \"Invalid argument for bytesToString\"\n  );\n  const length = bytes.length;\n  const MAX_ARGUMENT_COUNT = 8192;\n  if (length < MAX_ARGUMENT_COUNT) {\n    return String.fromCharCode.apply(null, bytes);\n  }\n  const strBuf = [];\n  for (let i = 0; i < length; i += MAX_ARGUMENT_COUNT) {\n    const chunkEnd = Math.min(i + MAX_ARGUMENT_COUNT, length);\n    const chunk = bytes.subarray(i, chunkEnd);\n    strBuf.push(String.fromCharCode.apply(null, chunk));\n  }\n  return strBuf.join(\"\");\n}\n\nfunction stringToBytes(str) {\n  assert(typeof str === \"string\", \"Invalid argument for stringToBytes\");\n  const length = str.length;\n  const bytes = new Uint8Array(length);\n  for (let i = 0; i < length; ++i) {\n    bytes[i] = str.charCodeAt(i) & 0xff;\n  }\n  return bytes;\n}\n\n/**\n * Gets length of the array (Array, Uint8Array, or string) in bytes.\n * @param {Array<any>|Uint8Array|string} arr\n * @returns {number}\n */\nfunction arrayByteLength(arr) {\n  if (arr.length !== undefined) {\n    return arr.length;\n  }\n  assert(arr.byteLength !== undefined, \"arrayByteLength - invalid argument.\");\n  return arr.byteLength;\n}\n\n/**\n * Combines array items (arrays) into single Uint8Array object.\n * @param {Array<Array<any>|Uint8Array|string>} arr - the array of the arrays\n *   (Array, Uint8Array, or string).\n * @returns {Uint8Array}\n */\nfunction arraysToBytes(arr) {\n  const length = arr.length;\n  // Shortcut: if first and only item is Uint8Array, return it.\n  if (length === 1 && arr[0] instanceof Uint8Array) {\n    return arr[0];\n  }\n  let resultLength = 0;\n  for (let i = 0; i < length; i++) {\n    resultLength += arrayByteLength(arr[i]);\n  }\n  let pos = 0;\n  const data = new Uint8Array(resultLength);\n  for (let i = 0; i < length; i++) {\n    let item = arr[i];\n    if (!(item instanceof Uint8Array)) {\n      if (typeof item === \"string\") {\n        item = stringToBytes(item);\n      } else {\n        item = new Uint8Array(item);\n      }\n    }\n    const itemLength = item.byteLength;\n    data.set(item, pos);\n    pos += itemLength;\n  }\n  return data;\n}\n\nfunction string32(value) {\n  if (\n    typeof PDFJSDev === \"undefined\" ||\n    PDFJSDev.test(\"!PRODUCTION || TESTING\")\n  ) {\n    assert(\n      typeof value === \"number\" && Math.abs(value) < 2 ** 32,\n      `string32: Unexpected input \"${value}\".`\n    );\n  }\n  return String.fromCharCode(\n    (value >> 24) & 0xff,\n    (value >> 16) & 0xff,\n    (value >> 8) & 0xff,\n    value & 0xff\n  );\n}\n\nfunction objectSize(obj) {\n  return Object.keys(obj).length;\n}\n\n// Ensure that the returned Object has a `null` prototype; hence why\n// `Object.fromEntries(...)` is not used.\nfunction objectFromMap(map) {\n  const obj = Object.create(null);\n  for (const [key, value] of map) {\n    obj[key] = value;\n  }\n  return obj;\n}\n\n// Checks the endianness of the platform.\nfunction isLittleEndian() {\n  const buffer8 = new Uint8Array(4);\n  buffer8[0] = 1;\n  const view32 = new Uint32Array(buffer8.buffer, 0, 1);\n  return view32[0] === 1;\n}\nconst IsLittleEndianCached = {\n  get value() {\n    return shadow(this, \"value\", isLittleEndian());\n  },\n};\n\n// Checks if it's possible to eval JS expressions.\nfunction isEvalSupported() {\n  try {\n    new Function(\"\"); // eslint-disable-line no-new, no-new-func\n    return true;\n  } catch (e) {\n    return false;\n  }\n}\nconst IsEvalSupportedCached = {\n  get value() {\n    return shadow(this, \"value\", isEvalSupported());\n  },\n};\n\nconst hexNumbers = [...Array(256).keys()].map(n =>\n  n.toString(16).padStart(2, \"0\")\n);\n\nclass Util {\n  static makeHexColor(r, g, b) {\n    return `#${hexNumbers[r]}${hexNumbers[g]}${hexNumbers[b]}`;\n  }\n\n  // Concatenates two transformation matrices together and returns the result.\n  static transform(m1, m2) {\n    return [\n      m1[0] * m2[0] + m1[2] * m2[1],\n      m1[1] * m2[0] + m1[3] * m2[1],\n      m1[0] * m2[2] + m1[2] * m2[3],\n      m1[1] * m2[2] + m1[3] * m2[3],\n      m1[0] * m2[4] + m1[2] * m2[5] + m1[4],\n      m1[1] * m2[4] + m1[3] * m2[5] + m1[5],\n    ];\n  }\n\n  // For 2d affine transforms\n  static applyTransform(p, m) {\n    const xt = p[0] * m[0] + p[1] * m[2] + m[4];\n    const yt = p[0] * m[1] + p[1] * m[3] + m[5];\n    return [xt, yt];\n  }\n\n  static applyInverseTransform(p, m) {\n    const d = m[0] * m[3] - m[1] * m[2];\n    const xt = (p[0] * m[3] - p[1] * m[2] + m[2] * m[5] - m[4] * m[3]) / d;\n    const yt = (-p[0] * m[1] + p[1] * m[0] + m[4] * m[1] - m[5] * m[0]) / d;\n    return [xt, yt];\n  }\n\n  // Applies the transform to the rectangle and finds the minimum axially\n  // aligned bounding box.\n  static getAxialAlignedBoundingBox(r, m) {\n    const p1 = Util.applyTransform(r, m);\n    const p2 = Util.applyTransform(r.slice(2, 4), m);\n    const p3 = Util.applyTransform([r[0], r[3]], m);\n    const p4 = Util.applyTransform([r[2], r[1]], m);\n    return [\n      Math.min(p1[0], p2[0], p3[0], p4[0]),\n      Math.min(p1[1], p2[1], p3[1], p4[1]),\n      Math.max(p1[0], p2[0], p3[0], p4[0]),\n      Math.max(p1[1], p2[1], p3[1], p4[1]),\n    ];\n  }\n\n  static inverseTransform(m) {\n    const d = m[0] * m[3] - m[1] * m[2];\n    return [\n      m[3] / d,\n      -m[1] / d,\n      -m[2] / d,\n      m[0] / d,\n      (m[2] * m[5] - m[4] * m[3]) / d,\n      (m[4] * m[1] - m[5] * m[0]) / d,\n    ];\n  }\n\n  // Apply a generic 3d matrix M on a 3-vector v:\n  //   | a b c |   | X |\n  //   | d e f | x | Y |\n  //   | g h i |   | Z |\n  // M is assumed to be serialized as [a,b,c,d,e,f,g,h,i],\n  // with v as [X,Y,Z]\n  static apply3dTransform(m, v) {\n    return [\n      m[0] * v[0] + m[1] * v[1] + m[2] * v[2],\n      m[3] * v[0] + m[4] * v[1] + m[5] * v[2],\n      m[6] * v[0] + m[7] * v[1] + m[8] * v[2],\n    ];\n  }\n\n  // This calculation uses Singular Value Decomposition.\n  // The SVD can be represented with formula A = USV. We are interested in the\n  // matrix S here because it represents the scale values.\n  static singularValueDecompose2dScale(m) {\n    const transpose = [m[0], m[2], m[1], m[3]];\n\n    // Multiply matrix m with its transpose.\n    const a = m[0] * transpose[0] + m[1] * transpose[2];\n    const b = m[0] * transpose[1] + m[1] * transpose[3];\n    const c = m[2] * transpose[0] + m[3] * transpose[2];\n    const d = m[2] * transpose[1] + m[3] * transpose[3];\n\n    // Solve the second degree polynomial to get roots.\n    const first = (a + d) / 2;\n    const second = Math.sqrt((a + d) ** 2 - 4 * (a * d - c * b)) / 2;\n    const sx = first + second || 1;\n    const sy = first - second || 1;\n\n    // Scale values are the square roots of the eigenvalues.\n    return [Math.sqrt(sx), Math.sqrt(sy)];\n  }\n\n  // Normalize rectangle rect=[x1, y1, x2, y2] so that (x1,y1) < (x2,y2)\n  // For coordinate systems whose origin lies in the bottom-left, this\n  // means normalization to (BL,TR) ordering. For systems with origin in the\n  // top-left, this means (TL,BR) ordering.\n  static normalizeRect(rect) {\n    const r = rect.slice(0); // clone rect\n    if (rect[0] > rect[2]) {\n      r[0] = rect[2];\n      r[2] = rect[0];\n    }\n    if (rect[1] > rect[3]) {\n      r[1] = rect[3];\n      r[3] = rect[1];\n    }\n    return r;\n  }\n\n  // Returns a rectangle [x1, y1, x2, y2] corresponding to the\n  // intersection of rect1 and rect2. If no intersection, returns 'false'\n  // The rectangle coordinates of rect1, rect2 should be [x1, y1, x2, y2]\n  static intersect(rect1, rect2) {\n    function compare(a, b) {\n      return a - b;\n    }\n\n    // Order points along the axes\n    const orderedX = [rect1[0], rect1[2], rect2[0], rect2[2]].sort(compare);\n    const orderedY = [rect1[1], rect1[3], rect2[1], rect2[3]].sort(compare);\n    const result = [];\n\n    rect1 = Util.normalizeRect(rect1);\n    rect2 = Util.normalizeRect(rect2);\n\n    // X: first and second points belong to different rectangles?\n    if (\n      (orderedX[0] === rect1[0] && orderedX[1] === rect2[0]) ||\n      (orderedX[0] === rect2[0] && orderedX[1] === rect1[0])\n    ) {\n      // Intersection must be between second and third points\n      result[0] = orderedX[1];\n      result[2] = orderedX[2];\n    } else {\n      return null;\n    }\n\n    // Y: first and second points belong to different rectangles?\n    if (\n      (orderedY[0] === rect1[1] && orderedY[1] === rect2[1]) ||\n      (orderedY[0] === rect2[1] && orderedY[1] === rect1[1])\n    ) {\n      // Intersection must be between second and third points\n      result[1] = orderedY[1];\n      result[3] = orderedY[2];\n    } else {\n      return null;\n    }\n\n    return result;\n  }\n\n  // From https://github.com/adobe-webplatform/Snap.svg/blob/b365287722a72526000ac4bfcf0ce4cac2faa015/src/path.js#L852\n  static bezierBoundingBox(x0, y0, x1, y1, x2, y2, x3, y3) {\n    const tvalues = [],\n      bounds = [[], []];\n    let a, b, c, t, t1, t2, b2ac, sqrtb2ac;\n    for (let i = 0; i < 2; ++i) {\n      if (i === 0) {\n        b = 6 * x0 - 12 * x1 + 6 * x2;\n        a = -3 * x0 + 9 * x1 - 9 * x2 + 3 * x3;\n        c = 3 * x1 - 3 * x0;\n      } else {\n        b = 6 * y0 - 12 * y1 + 6 * y2;\n        a = -3 * y0 + 9 * y1 - 9 * y2 + 3 * y3;\n        c = 3 * y1 - 3 * y0;\n      }\n      if (Math.abs(a) < 1e-12) {\n        if (Math.abs(b) < 1e-12) {\n          continue;\n        }\n        t = -c / b;\n        if (0 < t && t < 1) {\n          tvalues.push(t);\n        }\n        continue;\n      }\n      b2ac = b * b - 4 * c * a;\n      sqrtb2ac = Math.sqrt(b2ac);\n      if (b2ac < 0) {\n        continue;\n      }\n      t1 = (-b + sqrtb2ac) / (2 * a);\n      if (0 < t1 && t1 < 1) {\n        tvalues.push(t1);\n      }\n      t2 = (-b - sqrtb2ac) / (2 * a);\n      if (0 < t2 && t2 < 1) {\n        tvalues.push(t2);\n      }\n    }\n\n    let j = tvalues.length,\n      mt;\n    const jlen = j;\n    while (j--) {\n      t = tvalues[j];\n      mt = 1 - t;\n      bounds[0][j] =\n        mt * mt * mt * x0 +\n        3 * mt * mt * t * x1 +\n        3 * mt * t * t * x2 +\n        t * t * t * x3;\n      bounds[1][j] =\n        mt * mt * mt * y0 +\n        3 * mt * mt * t * y1 +\n        3 * mt * t * t * y2 +\n        t * t * t * y3;\n    }\n\n    bounds[0][jlen] = x0;\n    bounds[1][jlen] = y0;\n    bounds[0][jlen + 1] = x3;\n    bounds[1][jlen + 1] = y3;\n    bounds[0].length = bounds[1].length = jlen + 2;\n\n    return [\n      Math.min(...bounds[0]),\n      Math.min(...bounds[1]),\n      Math.max(...bounds[0]),\n      Math.max(...bounds[1]),\n    ];\n  }\n}\n\nconst PDFStringTranslateTable = [\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2d8,\n  0x2c7, 0x2c6, 0x2d9, 0x2dd, 0x2db, 0x2da, 0x2dc, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0x2022, 0x2020, 0x2021, 0x2026, 0x2014, 0x2013, 0x192,\n  0x2044, 0x2039, 0x203a, 0x2212, 0x2030, 0x201e, 0x201c, 0x201d, 0x2018,\n  0x2019, 0x201a, 0x2122, 0xfb01, 0xfb02, 0x141, 0x152, 0x160, 0x178, 0x17d,\n  0x131, 0x142, 0x153, 0x161, 0x17e, 0, 0x20ac,\n];\n\nfunction stringToPDFString(str) {\n  const length = str.length,\n    strBuf = [];\n  if (str[0] === \"\\xFE\" && str[1] === \"\\xFF\") {\n    // UTF16BE BOM\n    for (let i = 2; i < length; i += 2) {\n      strBuf.push(\n        String.fromCharCode((str.charCodeAt(i) << 8) | str.charCodeAt(i + 1))\n      );\n    }\n  } else if (str[0] === \"\\xFF\" && str[1] === \"\\xFE\") {\n    // UTF16LE BOM\n    for (let i = 2; i < length; i += 2) {\n      strBuf.push(\n        String.fromCharCode((str.charCodeAt(i + 1) << 8) | str.charCodeAt(i))\n      );\n    }\n  } else {\n    for (let i = 0; i < length; ++i) {\n      const code = PDFStringTranslateTable[str.charCodeAt(i)];\n      strBuf.push(code ? String.fromCharCode(code) : str.charAt(i));\n    }\n  }\n  return strBuf.join(\"\");\n}\n\nfunction escapeString(str) {\n  // replace \"(\", \")\", \"\\n\", \"\\r\" and \"\\\"\n  // by \"\\(\", \"\\)\", \"\\\\n\", \"\\\\r\" and \"\\\\\"\n  // in order to write it in a PDF file.\n  return str.replace(/([()\\\\\\n\\r])/g, match => {\n    if (match === \"\\n\") {\n      return \"\\\\n\";\n    } else if (match === \"\\r\") {\n      return \"\\\\r\";\n    }\n    return `\\\\${match}`;\n  });\n}\n\nfunction isAscii(str) {\n  return /^[\\x00-\\x7F]*$/.test(str);\n}\n\nfunction stringToUTF16BEString(str) {\n  const buf = [\"\\xFE\\xFF\"];\n  for (let i = 0, ii = str.length; i < ii; i++) {\n    const char = str.charCodeAt(i);\n    buf.push(\n      String.fromCharCode((char >> 8) & 0xff),\n      String.fromCharCode(char & 0xff)\n    );\n  }\n  return buf.join(\"\");\n}\n\nfunction stringToUTF8String(str) {\n  return decodeURIComponent(escape(str));\n}\n\nfunction utf8StringToString(str) {\n  return unescape(encodeURIComponent(str));\n}\n\nfunction isBool(v) {\n  return typeof v === \"boolean\";\n}\n\nfunction isNum(v) {\n  return typeof v === \"number\";\n}\n\nfunction isString(v) {\n  return typeof v === \"string\";\n}\n\nfunction isArrayBuffer(v) {\n  return typeof v === \"object\" && v !== null && v.byteLength !== undefined;\n}\n\nfunction isArrayEqual(arr1, arr2) {\n  if (arr1.length !== arr2.length) {\n    return false;\n  }\n  for (let i = 0, ii = arr1.length; i < ii; i++) {\n    if (arr1[i] !== arr2[i]) {\n      return false;\n    }\n  }\n  return true;\n}\n\nfunction getModificationDate(date = new Date()) {\n  const buffer = [\n    date.getUTCFullYear().toString(),\n    (date.getUTCMonth() + 1).toString().padStart(2, \"0\"),\n    date.getUTCDate().toString().padStart(2, \"0\"),\n    date.getUTCHours().toString().padStart(2, \"0\"),\n    date.getUTCMinutes().toString().padStart(2, \"0\"),\n    date.getUTCSeconds().toString().padStart(2, \"0\"),\n  ];\n\n  return buffer.join(\"\");\n}\n\n/**\n * Promise Capability object.\n *\n * @typedef {Object} PromiseCapability\n * @property {Promise<any>} promise - A Promise object.\n * @property {boolean} settled - If the Promise has been fulfilled/rejected.\n * @property {function} resolve - Fulfills the Promise.\n * @property {function} reject - Rejects the Promise.\n */\n\n/**\n * Creates a promise capability object.\n * @alias createPromiseCapability\n *\n * @returns {PromiseCapability}\n */\nfunction createPromiseCapability() {\n  const capability = Object.create(null);\n  let isSettled = false;\n\n  Object.defineProperty(capability, \"settled\", {\n    get() {\n      return isSettled;\n    },\n  });\n  capability.promise = new Promise(function (resolve, reject) {\n    capability.resolve = function (data) {\n      isSettled = true;\n      resolve(data);\n    };\n    capability.reject = function (reason) {\n      isSettled = true;\n      reject(reason);\n    };\n  });\n  return capability;\n}\n\nfunction createObjectURL(data, contentType = \"\", forceDataSchema = false) {\n  if (URL.createObjectURL && typeof Blob !== \"undefined\" && !forceDataSchema) {\n    return URL.createObjectURL(new Blob([data], { type: contentType }));\n  }\n  // Blob/createObjectURL is not available, falling back to data schema.\n  const digits =\n    \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\n\n  let buffer = `data:${contentType};base64,`;\n  for (let i = 0, ii = data.length; i < ii; i += 3) {\n    const b1 = data[i] & 0xff;\n    const b2 = data[i + 1] & 0xff;\n    const b3 = data[i + 2] & 0xff;\n    const d1 = b1 >> 2,\n      d2 = ((b1 & 3) << 4) | (b2 >> 4);\n    const d3 = i + 1 < ii ? ((b2 & 0xf) << 2) | (b3 >> 6) : 64;\n    const d4 = i + 2 < ii ? b3 & 0x3f : 64;\n    buffer += digits[d1] + digits[d2] + digits[d3] + digits[d4];\n  }\n  return buffer;\n}\n\nexport {\n  AbortException,\n  AnnotationActionEventType,\n  AnnotationBorderStyleType,\n  AnnotationFieldFlag,\n  AnnotationFlag,\n  AnnotationMarkedState,\n  AnnotationMode,\n  AnnotationReplyType,\n  AnnotationReviewState,\n  AnnotationStateModelType,\n  AnnotationType,\n  arrayByteLength,\n  arraysToBytes,\n  assert,\n  BaseException,\n  bytesToString,\n  CMapCompressionType,\n  createObjectURL,\n  createPromiseCapability,\n  createValidAbsoluteUrl,\n  DocumentActionEventType,\n  escapeString,\n  FONT_IDENTITY_MATRIX,\n  FontType,\n  FormatError,\n  getModificationDate,\n  getVerbosityLevel,\n  IDENTITY_MATRIX,\n  ImageKind,\n  info,\n  InvalidPDFException,\n  isArrayBuffer,\n  isArrayEqual,\n  isAscii,\n  isBool,\n  IsEvalSupportedCached,\n  IsLittleEndianCached,\n  isNum,\n  isSameOrigin,\n  isString,\n  MissingPDFException,\n  objectFromMap,\n  objectSize,\n  OPS,\n  PageActionEventType,\n  PasswordException,\n  PasswordResponses,\n  PermissionFlag,\n  removeNullCharacters,\n  RenderingIntentFlag,\n  setVerbosityLevel,\n  shadow,\n  StreamType,\n  string32,\n  stringToBytes,\n  stringToPDFString,\n  stringToUTF16BEString,\n  stringToUTF8String,\n  TextRenderingMode,\n  UnexpectedResponseException,\n  UnknownErrorException,\n  unreachable,\n  UNSUPPORTED_FEATURES,\n  utf8StringToString,\n  Util,\n  VerbosityLevel,\n  warn,\n};\n","/* Copyright 2017 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { isNodeJS } from \"./is_node.js\";\n\n// Skip compatibility checks for modern builds and if we already ran the module.\nif (\n  (typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"SKIP_BABEL\")) &&\n  (typeof globalThis === \"undefined\" || !globalThis._pdfjsCompatibilityChecked)\n) {\n  // Provides support for `globalThis` in legacy browsers.\n  // Support: Firefox<65, Chrome<71, Safari<12.1, Node.js<12.0.0\n  if (typeof globalThis === \"undefined\" || globalThis.Math !== Math) {\n    // eslint-disable-next-line no-global-assign\n    globalThis = require(\"core-js/es/global-this\");\n  }\n  globalThis._pdfjsCompatibilityChecked = true;\n\n  // Support: Node.js\n  (function checkNodeBtoa() {\n    if (globalThis.btoa || !isNodeJS) {\n      return;\n    }\n    globalThis.btoa = function (chars) {\n      // eslint-disable-next-line no-undef\n      return Buffer.from(chars, \"binary\").toString(\"base64\");\n    };\n  })();\n\n  // Support: Node.js\n  (function checkNodeAtob() {\n    if (globalThis.atob || !isNodeJS) {\n      return;\n    }\n    globalThis.atob = function (input) {\n      // eslint-disable-next-line no-undef\n      return Buffer.from(input, \"base64\").toString(\"binary\");\n    };\n  })();\n\n  // Support: Node.js\n  (function checkDOMMatrix() {\n    if (globalThis.DOMMatrix || !isNodeJS) {\n      return;\n    }\n    globalThis.DOMMatrix = require(\"dommatrix/dist/dommatrix.js\");\n  })();\n\n  // Provides support for Object.fromEntries in legacy browsers.\n  // Support: Firefox<63, Chrome<73, Safari<12.1, Node.js<12.0.0\n  (function checkObjectFromEntries() {\n    if (Object.fromEntries) {\n      return;\n    }\n    require(\"core-js/es/object/from-entries.js\");\n  })();\n\n  // Provides support for *recent* additions to the Promise specification,\n  // however basic Promise support is assumed to be available natively.\n  // Support: Firefox<71, Chrome<76, Safari<13, Node.js<12.9.0\n  (function checkPromise() {\n    if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"IMAGE_DECODERS\")) {\n      // The current image decoders are synchronous, hence `Promise` shouldn't\n      // need to be polyfilled for the IMAGE_DECODERS build target.\n      return;\n    }\n    if (globalThis.Promise.allSettled) {\n      return;\n    }\n    globalThis.Promise = require(\"core-js/es/promise/index.js\");\n  })();\n\n  // Support: Node.js\n  (function checkReadableStream() {\n    if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"IMAGE_DECODERS\")) {\n      // The current image decoders are synchronous, hence `ReadableStream`\n      // shouldn't need to be polyfilled for the IMAGE_DECODERS build target.\n      return;\n    }\n    if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"CHROME\")) {\n      // Slightly reduce the size of the Chromium-extension, given\n      // that `ReadableStream` has been supported since Chrome 43.\n      return;\n    }\n    if (globalThis.ReadableStream || !isNodeJS) {\n      return;\n    }\n    globalThis.ReadableStream =\n      require(\"web-streams-polyfill/dist/ponyfill.js\").ReadableStream;\n  })();\n}\n","/* Copyright 2018 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* globals process */\n\n// NW.js / Electron is a browser context, but copies some Node.js objects; see\n// http://docs.nwjs.io/en/latest/For%20Users/Advanced/JavaScript%20Contexts%20in%20NW.js/#access-nodejs-and-nwjs-api-in-browser-context\n// https://www.electronjs.org/docs/api/process#processversionselectron-readonly\n// https://www.electronjs.org/docs/api/process#processtype-readonly\nconst isNodeJS =\n  typeof process === \"object\" &&\n  process + \"\" === \"[object process]\" &&\n  !process.versions.nw &&\n  !(process.versions.electron && process.type && process.type !== \"browser\");\n\nexport { isNodeJS };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { assert, shadow, unreachable } from \"../shared/util.js\";\nimport { BaseStream } from \"./base_stream.js\";\n\nconst CIRCULAR_REF = Symbol(\"CIRCULAR_REF\");\nconst EOF = Symbol(\"EOF\");\n\nconst Name = (function NameClosure() {\n  let nameCache = Object.create(null);\n\n  // eslint-disable-next-line no-shadow\n  class Name {\n    constructor(name) {\n      this.name = name;\n    }\n\n    static get(name) {\n      const nameValue = nameCache[name];\n      // eslint-disable-next-line no-restricted-syntax\n      return nameValue ? nameValue : (nameCache[name] = new Name(name));\n    }\n\n    static _clearCache() {\n      nameCache = Object.create(null);\n    }\n  }\n\n  return Name;\n})();\n\nconst Cmd = (function CmdClosure() {\n  let cmdCache = Object.create(null);\n\n  // eslint-disable-next-line no-shadow\n  class Cmd {\n    constructor(cmd) {\n      this.cmd = cmd;\n    }\n\n    static get(cmd) {\n      const cmdValue = cmdCache[cmd];\n      // eslint-disable-next-line no-restricted-syntax\n      return cmdValue ? cmdValue : (cmdCache[cmd] = new Cmd(cmd));\n    }\n\n    static _clearCache() {\n      cmdCache = Object.create(null);\n    }\n  }\n\n  return Cmd;\n})();\n\nconst nonSerializable = function nonSerializableClosure() {\n  return nonSerializable; // Creating closure on some variable.\n};\n\nclass Dict {\n  constructor(xref = null) {\n    // Map should only be used internally, use functions below to access.\n    this._map = Object.create(null);\n    this.xref = xref;\n    this.objId = null;\n    this.suppressEncryption = false;\n    this.__nonSerializable__ = nonSerializable; // Disable cloning of the Dict.\n  }\n\n  assignXref(newXref) {\n    this.xref = newXref;\n  }\n\n  get size() {\n    return Object.keys(this._map).length;\n  }\n\n  // Automatically dereferences Ref objects.\n  get(key1, key2, key3) {\n    let value = this._map[key1];\n    if (value === undefined && key2 !== undefined) {\n      if (\n        (typeof PDFJSDev === \"undefined\" ||\n          PDFJSDev.test(\"!PRODUCTION || TESTING\")) &&\n        key2.length < key1.length\n      ) {\n        unreachable(\"Dict.get: Expected keys to be ordered by length.\");\n      }\n      value = this._map[key2];\n      if (value === undefined && key3 !== undefined) {\n        if (\n          (typeof PDFJSDev === \"undefined\" ||\n            PDFJSDev.test(\"!PRODUCTION || TESTING\")) &&\n          key3.length < key2.length\n        ) {\n          unreachable(\"Dict.get: Expected keys to be ordered by length.\");\n        }\n        value = this._map[key3];\n      }\n    }\n    if (value instanceof Ref && this.xref) {\n      return this.xref.fetch(value, this.suppressEncryption);\n    }\n    return value;\n  }\n\n  // Same as get(), but returns a promise and uses fetchIfRefAsync().\n  async getAsync(key1, key2, key3) {\n    let value = this._map[key1];\n    if (value === undefined && key2 !== undefined) {\n      if (\n        (typeof PDFJSDev === \"undefined\" ||\n          PDFJSDev.test(\"!PRODUCTION || TESTING\")) &&\n        key2.length < key1.length\n      ) {\n        unreachable(\"Dict.getAsync: Expected keys to be ordered by length.\");\n      }\n      value = this._map[key2];\n      if (value === undefined && key3 !== undefined) {\n        if (\n          (typeof PDFJSDev === \"undefined\" ||\n            PDFJSDev.test(\"!PRODUCTION || TESTING\")) &&\n          key3.length < key2.length\n        ) {\n          unreachable(\"Dict.getAsync: Expected keys to be ordered by length.\");\n        }\n        value = this._map[key3];\n      }\n    }\n    if (value instanceof Ref && this.xref) {\n      return this.xref.fetchAsync(value, this.suppressEncryption);\n    }\n    return value;\n  }\n\n  // Same as get(), but dereferences all elements if the result is an Array.\n  getArray(key1, key2, key3) {\n    let value = this._map[key1];\n    if (value === undefined && key2 !== undefined) {\n      if (\n        (typeof PDFJSDev === \"undefined\" ||\n          PDFJSDev.test(\"!PRODUCTION || TESTING\")) &&\n        key2.length < key1.length\n      ) {\n        unreachable(\"Dict.getArray: Expected keys to be ordered by length.\");\n      }\n      value = this._map[key2];\n      if (value === undefined && key3 !== undefined) {\n        if (\n          (typeof PDFJSDev === \"undefined\" ||\n            PDFJSDev.test(\"!PRODUCTION || TESTING\")) &&\n          key3.length < key2.length\n        ) {\n          unreachable(\"Dict.getArray: Expected keys to be ordered by length.\");\n        }\n        value = this._map[key3];\n      }\n    }\n    if (value instanceof Ref && this.xref) {\n      value = this.xref.fetch(value, this.suppressEncryption);\n    }\n\n    if (Array.isArray(value)) {\n      value = value.slice(); // Ensure that we don't modify the Dict data.\n      for (let i = 0, ii = value.length; i < ii; i++) {\n        if (value[i] instanceof Ref && this.xref) {\n          value[i] = this.xref.fetch(value[i], this.suppressEncryption);\n        }\n      }\n    }\n    return value;\n  }\n\n  // No dereferencing.\n  getRaw(key) {\n    return this._map[key];\n  }\n\n  getKeys() {\n    return Object.keys(this._map);\n  }\n\n  // No dereferencing.\n  getRawValues() {\n    return Object.values(this._map);\n  }\n\n  set(key, value) {\n    if (\n      (typeof PDFJSDev === \"undefined\" ||\n        PDFJSDev.test(\"!PRODUCTION || TESTING\")) &&\n      value === undefined\n    ) {\n      unreachable('Dict.set: The \"value\" cannot be undefined.');\n    }\n    this._map[key] = value;\n  }\n\n  has(key) {\n    return this._map[key] !== undefined;\n  }\n\n  forEach(callback) {\n    for (const key in this._map) {\n      callback(key, this.get(key));\n    }\n  }\n\n  static get empty() {\n    const emptyDict = new Dict(null);\n\n    emptyDict.set = (key, value) => {\n      unreachable(\"Should not call `set` on the empty dictionary.\");\n    };\n    return shadow(this, \"empty\", emptyDict);\n  }\n\n  static merge({ xref, dictArray, mergeSubDicts = false }) {\n    const mergedDict = new Dict(xref),\n      properties = new Map();\n\n    for (const dict of dictArray) {\n      if (!(dict instanceof Dict)) {\n        continue;\n      }\n      for (const [key, value] of Object.entries(dict._map)) {\n        let property = properties.get(key);\n        if (property === undefined) {\n          property = [];\n          properties.set(key, property);\n        } else if (!mergeSubDicts || !(value instanceof Dict)) {\n          // Ignore additional entries, if either:\n          //  - This is a \"shallow\" merge, where only the first element matters.\n          //  - The value is *not* a `Dict`, since other types cannot be merged.\n          continue;\n        }\n        property.push(value);\n      }\n    }\n    for (const [name, values] of properties) {\n      if (values.length === 1 || !(values[0] instanceof Dict)) {\n        mergedDict._map[name] = values[0];\n        continue;\n      }\n      const subDict = new Dict(xref);\n\n      for (const dict of values) {\n        for (const [key, value] of Object.entries(dict._map)) {\n          if (subDict._map[key] === undefined) {\n            subDict._map[key] = value;\n          }\n        }\n      }\n      if (subDict.size > 0) {\n        mergedDict._map[name] = subDict;\n      }\n    }\n    properties.clear();\n\n    return mergedDict.size > 0 ? mergedDict : Dict.empty;\n  }\n}\n\nconst Ref = (function RefClosure() {\n  let refCache = Object.create(null);\n\n  // eslint-disable-next-line no-shadow\n  class Ref {\n    constructor(num, gen) {\n      this.num = num;\n      this.gen = gen;\n    }\n\n    toString() {\n      // This function is hot, so we make the string as compact as possible.\n      // |this.gen| is almost always zero, so we treat that case specially.\n      if (this.gen === 0) {\n        return `${this.num}R`;\n      }\n      return `${this.num}R${this.gen}`;\n    }\n\n    static get(num, gen) {\n      const key = gen === 0 ? `${num}R` : `${num}R${gen}`;\n      const refValue = refCache[key];\n      // eslint-disable-next-line no-restricted-syntax\n      return refValue ? refValue : (refCache[key] = new Ref(num, gen));\n    }\n\n    static _clearCache() {\n      refCache = Object.create(null);\n    }\n  }\n\n  return Ref;\n})();\n\n// The reference is identified by number and generation.\n// This structure stores only one instance of the reference.\nclass RefSet {\n  constructor(parent = null) {\n    if (\n      (typeof PDFJSDev === \"undefined\" ||\n        PDFJSDev.test(\"!PRODUCTION || TESTING\")) &&\n      parent &&\n      !(parent instanceof RefSet)\n    ) {\n      unreachable('RefSet: Invalid \"parent\" value.');\n    }\n    this._set = new Set(parent && parent._set);\n  }\n\n  has(ref) {\n    return this._set.has(ref.toString());\n  }\n\n  put(ref) {\n    this._set.add(ref.toString());\n  }\n\n  remove(ref) {\n    this._set.delete(ref.toString());\n  }\n\n  forEach(callback) {\n    for (const ref of this._set.values()) {\n      callback(ref);\n    }\n  }\n\n  clear() {\n    this._set.clear();\n  }\n}\n\nclass RefSetCache {\n  constructor() {\n    this._map = new Map();\n  }\n\n  get size() {\n    return this._map.size;\n  }\n\n  get(ref) {\n    return this._map.get(ref.toString());\n  }\n\n  has(ref) {\n    return this._map.has(ref.toString());\n  }\n\n  put(ref, obj) {\n    this._map.set(ref.toString(), obj);\n  }\n\n  putAlias(ref, aliasRef) {\n    this._map.set(ref.toString(), this.get(aliasRef));\n  }\n\n  forEach(callback) {\n    for (const value of this._map.values()) {\n      callback(value);\n    }\n  }\n\n  clear() {\n    this._map.clear();\n  }\n}\n\nfunction isName(v, name) {\n  return v instanceof Name && (name === undefined || v.name === name);\n}\n\nfunction isCmd(v, cmd) {\n  return v instanceof Cmd && (cmd === undefined || v.cmd === cmd);\n}\n\nfunction isDict(v, type) {\n  return (\n    v instanceof Dict && (type === undefined || isName(v.get(\"Type\"), type))\n  );\n}\n\nfunction isRef(v) {\n  return v instanceof Ref;\n}\n\nfunction isRefsEqual(v1, v2) {\n  if (\n    typeof PDFJSDev === \"undefined\" ||\n    PDFJSDev.test(\"!PRODUCTION || TESTING\")\n  ) {\n    assert(\n      v1 instanceof Ref && v2 instanceof Ref,\n      \"isRefsEqual: Both parameters should be `Ref`s.\"\n    );\n  }\n  return v1.num === v2.num && v1.gen === v2.gen;\n}\n\nfunction isStream(v) {\n  return v instanceof BaseStream;\n}\n\nfunction clearPrimitiveCaches() {\n  Cmd._clearCache();\n  Name._clearCache();\n  Ref._clearCache();\n}\n\nexport {\n  CIRCULAR_REF,\n  clearPrimitiveCaches,\n  Cmd,\n  Dict,\n  EOF,\n  isCmd,\n  isDict,\n  isName,\n  isRef,\n  isRefsEqual,\n  isStream,\n  Name,\n  Ref,\n  RefSet,\n  RefSetCache,\n};\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { bytesToString, shadow, unreachable } from \"../shared/util.js\";\n\nclass BaseStream {\n  constructor() {\n    if (this.constructor === BaseStream) {\n      unreachable(\"Cannot initialize BaseStream.\");\n    }\n  }\n\n  // eslint-disable-next-line getter-return\n  get length() {\n    unreachable(\"Abstract getter `length` accessed\");\n  }\n\n  // eslint-disable-next-line getter-return\n  get isEmpty() {\n    unreachable(\"Abstract getter `isEmpty` accessed\");\n  }\n\n  get isDataLoaded() {\n    return shadow(this, \"isDataLoaded\", true);\n  }\n\n  getByte() {\n    unreachable(\"Abstract method `getByte` called\");\n  }\n\n  getBytes(length, forceClamped = false) {\n    unreachable(\"Abstract method `getBytes` called\");\n  }\n\n  peekByte() {\n    const peekedByte = this.getByte();\n    if (peekedByte !== -1) {\n      this.pos--;\n    }\n    return peekedByte;\n  }\n\n  peekBytes(length, forceClamped = false) {\n    const bytes = this.getBytes(length, forceClamped);\n    this.pos -= bytes.length;\n    return bytes;\n  }\n\n  getUint16() {\n    const b0 = this.getByte();\n    const b1 = this.getByte();\n    if (b0 === -1 || b1 === -1) {\n      return -1;\n    }\n    return (b0 << 8) + b1;\n  }\n\n  getInt32() {\n    const b0 = this.getByte();\n    const b1 = this.getByte();\n    const b2 = this.getByte();\n    const b3 = this.getByte();\n    return (b0 << 24) + (b1 << 16) + (b2 << 8) + b3;\n  }\n\n  getByteRange(begin, end) {\n    unreachable(\"Abstract method `getByteRange` called\");\n  }\n\n  getString(length) {\n    return bytesToString(this.getBytes(length, /* forceClamped = */ false));\n  }\n\n  skip(n) {\n    this.pos += n || 1;\n  }\n\n  reset() {\n    unreachable(\"Abstract method `reset` called\");\n  }\n\n  moveStart() {\n    unreachable(\"Abstract method `moveStart` called\");\n  }\n\n  makeSubStream(start, length, dict = null) {\n    unreachable(\"Abstract method `makeSubStream` called\");\n  }\n\n  /**\n   * @returns {Array | null}\n   */\n  getBaseStreams() {\n    return null;\n  }\n}\n\nexport { BaseStream };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { createValidAbsoluteUrl, unreachable, warn } from \"../shared/util.js\";\nimport { ChunkedStreamManager } from \"./chunked_stream.js\";\nimport { MissingDataException } from \"./core_utils.js\";\nimport { PDFDocument } from \"./document.js\";\nimport { Stream } from \"./stream.js\";\n\nfunction parseDocBaseUrl(url) {\n  if (url) {\n    const absoluteUrl = createValidAbsoluteUrl(url);\n    if (absoluteUrl) {\n      return absoluteUrl.href;\n    }\n    warn(`Invalid absolute docBaseUrl: \"${url}\".`);\n  }\n  return null;\n}\n\nclass BasePdfManager {\n  constructor() {\n    if (this.constructor === BasePdfManager) {\n      unreachable(\"Cannot initialize BasePdfManager.\");\n    }\n  }\n\n  get docId() {\n    return this._docId;\n  }\n\n  get password() {\n    return this._password;\n  }\n\n  get docBaseUrl() {\n    return this._docBaseUrl;\n  }\n\n  onLoadedStream() {\n    unreachable(\"Abstract method `onLoadedStream` called\");\n  }\n\n  ensureDoc(prop, args) {\n    return this.ensure(this.pdfDocument, prop, args);\n  }\n\n  ensureXRef(prop, args) {\n    return this.ensure(this.pdfDocument.xref, prop, args);\n  }\n\n  ensureCatalog(prop, args) {\n    return this.ensure(this.pdfDocument.catalog, prop, args);\n  }\n\n  getPage(pageIndex) {\n    return this.pdfDocument.getPage(pageIndex);\n  }\n\n  fontFallback(id, handler) {\n    return this.pdfDocument.fontFallback(id, handler);\n  }\n\n  loadXfaFonts(handler, task) {\n    return this.pdfDocument.loadXfaFonts(handler, task);\n  }\n\n  loadXfaImages() {\n    return this.pdfDocument.loadXfaImages();\n  }\n\n  serializeXfaData(annotationStorage) {\n    return this.pdfDocument.serializeXfaData(annotationStorage);\n  }\n\n  cleanup(manuallyTriggered = false) {\n    return this.pdfDocument.cleanup(manuallyTriggered);\n  }\n\n  async ensure(obj, prop, args) {\n    unreachable(\"Abstract method `ensure` called\");\n  }\n\n  requestRange(begin, end) {\n    unreachable(\"Abstract method `requestRange` called\");\n  }\n\n  requestLoadedStream() {\n    unreachable(\"Abstract method `requestLoadedStream` called\");\n  }\n\n  sendProgressiveData(chunk) {\n    unreachable(\"Abstract method `sendProgressiveData` called\");\n  }\n\n  updatePassword(password) {\n    this._password = password;\n  }\n\n  terminate(reason) {\n    unreachable(\"Abstract method `terminate` called\");\n  }\n}\n\nclass LocalPdfManager extends BasePdfManager {\n  constructor(\n    docId,\n    data,\n    password,\n    msgHandler,\n    evaluatorOptions,\n    enableXfa,\n    docBaseUrl\n  ) {\n    super();\n\n    this._docId = docId;\n    this._password = password;\n    this._docBaseUrl = parseDocBaseUrl(docBaseUrl);\n    this.msgHandler = msgHandler;\n    this.evaluatorOptions = evaluatorOptions;\n    this.enableXfa = enableXfa;\n\n    const stream = new Stream(data);\n    this.pdfDocument = new PDFDocument(this, stream);\n    this._loadedStreamPromise = Promise.resolve(stream);\n  }\n\n  async ensure(obj, prop, args) {\n    const value = obj[prop];\n    if (typeof value === \"function\") {\n      return value.apply(obj, args);\n    }\n    return value;\n  }\n\n  requestRange(begin, end) {\n    return Promise.resolve();\n  }\n\n  requestLoadedStream() {}\n\n  onLoadedStream() {\n    return this._loadedStreamPromise;\n  }\n\n  terminate(reason) {}\n}\n\nclass NetworkPdfManager extends BasePdfManager {\n  constructor(\n    docId,\n    pdfNetworkStream,\n    args,\n    evaluatorOptions,\n    enableXfa,\n    docBaseUrl\n  ) {\n    super();\n\n    this._docId = docId;\n    this._password = args.password;\n    this._docBaseUrl = parseDocBaseUrl(docBaseUrl);\n    this.msgHandler = args.msgHandler;\n    this.evaluatorOptions = evaluatorOptions;\n    this.enableXfa = enableXfa;\n\n    this.streamManager = new ChunkedStreamManager(pdfNetworkStream, {\n      msgHandler: args.msgHandler,\n      length: args.length,\n      disableAutoFetch: args.disableAutoFetch,\n      rangeChunkSize: args.rangeChunkSize,\n    });\n    this.pdfDocument = new PDFDocument(this, this.streamManager.getStream());\n  }\n\n  async ensure(obj, prop, args) {\n    try {\n      const value = obj[prop];\n      if (typeof value === \"function\") {\n        return value.apply(obj, args);\n      }\n      return value;\n    } catch (ex) {\n      if (!(ex instanceof MissingDataException)) {\n        throw ex;\n      }\n      await this.requestRange(ex.begin, ex.end);\n      return this.ensure(obj, prop, args);\n    }\n  }\n\n  requestRange(begin, end) {\n    return this.streamManager.requestRange(begin, end);\n  }\n\n  requestLoadedStream() {\n    this.streamManager.requestAllChunks();\n  }\n\n  sendProgressiveData(chunk) {\n    this.streamManager.onReceiveData({ chunk });\n  }\n\n  onLoadedStream() {\n    return this.streamManager.onLoadedStream();\n  }\n\n  terminate(reason) {\n    this.streamManager.abort(reason);\n  }\n}\n\nexport { LocalPdfManager, NetworkPdfManager };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n  arrayByteLength,\n  arraysToBytes,\n  createPromiseCapability,\n} from \"../shared/util.js\";\nimport { MissingDataException } from \"./core_utils.js\";\nimport { Stream } from \"./stream.js\";\n\nclass ChunkedStream extends Stream {\n  constructor(length, chunkSize, manager) {\n    super(\n      /* arrayBuffer = */ new Uint8Array(length),\n      /* start = */ 0,\n      /* length = */ length,\n      /* dict = */ null\n    );\n\n    this.chunkSize = chunkSize;\n    this._loadedChunks = new Set();\n    this.numChunks = Math.ceil(length / chunkSize);\n    this.manager = manager;\n    this.progressiveDataLength = 0;\n    this.lastSuccessfulEnsureByteChunk = -1; // Single-entry cache\n  }\n\n  // If a particular stream does not implement one or more of these methods,\n  // an error should be thrown.\n  getMissingChunks() {\n    const chunks = [];\n    for (let chunk = 0, n = this.numChunks; chunk < n; ++chunk) {\n      if (!this._loadedChunks.has(chunk)) {\n        chunks.push(chunk);\n      }\n    }\n    return chunks;\n  }\n\n  get numChunksLoaded() {\n    return this._loadedChunks.size;\n  }\n\n  get isDataLoaded() {\n    return this.numChunksLoaded === this.numChunks;\n  }\n\n  onReceiveData(begin, chunk) {\n    const chunkSize = this.chunkSize;\n    if (begin % chunkSize !== 0) {\n      throw new Error(`Bad begin offset: ${begin}`);\n    }\n\n    // Using `this.length` is inaccurate here since `this.start` can be moved\n    // (see the `moveStart` method).\n    const end = begin + chunk.byteLength;\n    if (end % chunkSize !== 0 && end !== this.bytes.length) {\n      throw new Error(`Bad end offset: ${end}`);\n    }\n\n    this.bytes.set(new Uint8Array(chunk), begin);\n    const beginChunk = Math.floor(begin / chunkSize);\n    const endChunk = Math.floor((end - 1) / chunkSize) + 1;\n\n    for (let curChunk = beginChunk; curChunk < endChunk; ++curChunk) {\n      // Since a value can only occur *once* in a `Set`, there's no need to\n      // manually check `Set.prototype.has()` before adding the value here.\n      this._loadedChunks.add(curChunk);\n    }\n  }\n\n  onReceiveProgressiveData(data) {\n    let position = this.progressiveDataLength;\n    const beginChunk = Math.floor(position / this.chunkSize);\n\n    this.bytes.set(new Uint8Array(data), position);\n    position += data.byteLength;\n    this.progressiveDataLength = position;\n    const endChunk =\n      position >= this.end\n        ? this.numChunks\n        : Math.floor(position / this.chunkSize);\n\n    for (let curChunk = beginChunk; curChunk < endChunk; ++curChunk) {\n      // Since a value can only occur *once* in a `Set`, there's no need to\n      // manually check `Set.prototype.has()` before adding the value here.\n      this._loadedChunks.add(curChunk);\n    }\n  }\n\n  ensureByte(pos) {\n    if (pos < this.progressiveDataLength) {\n      return;\n    }\n\n    const chunk = Math.floor(pos / this.chunkSize);\n    if (chunk > this.numChunks) {\n      return;\n    }\n    if (chunk === this.lastSuccessfulEnsureByteChunk) {\n      return;\n    }\n\n    if (!this._loadedChunks.has(chunk)) {\n      throw new MissingDataException(pos, pos + 1);\n    }\n    this.lastSuccessfulEnsureByteChunk = chunk;\n  }\n\n  ensureRange(begin, end) {\n    if (begin >= end) {\n      return;\n    }\n    if (end <= this.progressiveDataLength) {\n      return;\n    }\n\n    const beginChunk = Math.floor(begin / this.chunkSize);\n    if (beginChunk > this.numChunks) {\n      return;\n    }\n    const endChunk = Math.min(\n      Math.floor((end - 1) / this.chunkSize) + 1,\n      this.numChunks\n    );\n    for (let chunk = beginChunk; chunk < endChunk; ++chunk) {\n      if (!this._loadedChunks.has(chunk)) {\n        throw new MissingDataException(begin, end);\n      }\n    }\n  }\n\n  nextEmptyChunk(beginChunk) {\n    const numChunks = this.numChunks;\n    for (let i = 0; i < numChunks; ++i) {\n      const chunk = (beginChunk + i) % numChunks; // Wrap around to beginning.\n      if (!this._loadedChunks.has(chunk)) {\n        return chunk;\n      }\n    }\n    return null;\n  }\n\n  hasChunk(chunk) {\n    return this._loadedChunks.has(chunk);\n  }\n\n  getByte() {\n    const pos = this.pos;\n    if (pos >= this.end) {\n      return -1;\n    }\n    if (pos >= this.progressiveDataLength) {\n      this.ensureByte(pos);\n    }\n    return this.bytes[this.pos++];\n  }\n\n  getBytes(length, forceClamped = false) {\n    const bytes = this.bytes;\n    const pos = this.pos;\n    const strEnd = this.end;\n\n    if (!length) {\n      if (strEnd > this.progressiveDataLength) {\n        this.ensureRange(pos, strEnd);\n      }\n      const subarray = bytes.subarray(pos, strEnd);\n      // `this.bytes` is always a `Uint8Array` here.\n      return forceClamped ? new Uint8ClampedArray(subarray) : subarray;\n    }\n\n    let end = pos + length;\n    if (end > strEnd) {\n      end = strEnd;\n    }\n    if (end > this.progressiveDataLength) {\n      this.ensureRange(pos, end);\n    }\n\n    this.pos = end;\n    const subarray = bytes.subarray(pos, end);\n    // `this.bytes` is always a `Uint8Array` here.\n    return forceClamped ? new Uint8ClampedArray(subarray) : subarray;\n  }\n\n  getByteRange(begin, end) {\n    if (begin < 0) {\n      begin = 0;\n    }\n    if (end > this.end) {\n      end = this.end;\n    }\n    if (end > this.progressiveDataLength) {\n      this.ensureRange(begin, end);\n    }\n    return this.bytes.subarray(begin, end);\n  }\n\n  makeSubStream(start, length, dict = null) {\n    if (length) {\n      if (start + length > this.progressiveDataLength) {\n        this.ensureRange(start, start + length);\n      }\n    } else {\n      // When the `length` is undefined you do *not*, under any circumstances,\n      // want to fallback on calling `this.ensureRange(start, this.end)` since\n      // that would force the *entire* PDF file to be loaded, thus completely\n      // breaking the whole purpose of using streaming and/or range requests.\n      //\n      // However, not doing any checking here could very easily lead to wasted\n      // time/resources during e.g. parsing, since `MissingDataException`s will\n      // require data to be re-parsed, which we attempt to minimize by at least\n      // checking that the *beginning* of the data is available here.\n      if (start >= this.progressiveDataLength) {\n        this.ensureByte(start);\n      }\n    }\n\n    function ChunkedStreamSubstream() {}\n    ChunkedStreamSubstream.prototype = Object.create(this);\n    ChunkedStreamSubstream.prototype.getMissingChunks = function () {\n      const chunkSize = this.chunkSize;\n      const beginChunk = Math.floor(this.start / chunkSize);\n      const endChunk = Math.floor((this.end - 1) / chunkSize) + 1;\n      const missingChunks = [];\n      for (let chunk = beginChunk; chunk < endChunk; ++chunk) {\n        if (!this._loadedChunks.has(chunk)) {\n          missingChunks.push(chunk);\n        }\n      }\n      return missingChunks;\n    };\n    Object.defineProperty(ChunkedStreamSubstream.prototype, \"isDataLoaded\", {\n      get() {\n        if (this.numChunksLoaded === this.numChunks) {\n          return true;\n        }\n        return this.getMissingChunks().length === 0;\n      },\n      configurable: true,\n    });\n\n    const subStream = new ChunkedStreamSubstream();\n    subStream.pos = subStream.start = start;\n    subStream.end = start + length || this.end;\n    subStream.dict = dict;\n    return subStream;\n  }\n\n  getBaseStreams() {\n    return [this];\n  }\n}\n\nclass ChunkedStreamManager {\n  constructor(pdfNetworkStream, args) {\n    this.length = args.length;\n    this.chunkSize = args.rangeChunkSize;\n    this.stream = new ChunkedStream(this.length, this.chunkSize, this);\n    this.pdfNetworkStream = pdfNetworkStream;\n    this.disableAutoFetch = args.disableAutoFetch;\n    this.msgHandler = args.msgHandler;\n\n    this.currRequestId = 0;\n\n    this._chunksNeededByRequest = new Map();\n    this._requestsByChunk = new Map();\n    this._promisesByRequest = new Map();\n    this.progressiveDataLength = 0;\n    this.aborted = false;\n\n    this._loadedStreamCapability = createPromiseCapability();\n  }\n\n  onLoadedStream() {\n    return this._loadedStreamCapability.promise;\n  }\n\n  sendRequest(begin, end) {\n    const rangeReader = this.pdfNetworkStream.getRangeReader(begin, end);\n    if (!rangeReader.isStreamingSupported) {\n      rangeReader.onProgress = this.onProgress.bind(this);\n    }\n\n    let chunks = [],\n      loaded = 0;\n    return new Promise((resolve, reject) => {\n      const readChunk = chunk => {\n        try {\n          if (!chunk.done) {\n            const data = chunk.value;\n            chunks.push(data);\n            loaded += arrayByteLength(data);\n            if (rangeReader.isStreamingSupported) {\n              this.onProgress({ loaded });\n            }\n            rangeReader.read().then(readChunk, reject);\n            return;\n          }\n          const chunkData = arraysToBytes(chunks);\n          chunks = null;\n          resolve(chunkData);\n        } catch (e) {\n          reject(e);\n        }\n      };\n      rangeReader.read().then(readChunk, reject);\n    }).then(data => {\n      if (this.aborted) {\n        return; // Ignoring any data after abort.\n      }\n      this.onReceiveData({ chunk: data, begin });\n    });\n  }\n\n  /**\n   * Get all the chunks that are not yet loaded and group them into\n   * contiguous ranges to load in as few requests as possible.\n   */\n  requestAllChunks() {\n    const missingChunks = this.stream.getMissingChunks();\n    this._requestChunks(missingChunks);\n    return this._loadedStreamCapability.promise;\n  }\n\n  _requestChunks(chunks) {\n    const requestId = this.currRequestId++;\n\n    const chunksNeeded = new Set();\n    this._chunksNeededByRequest.set(requestId, chunksNeeded);\n    for (const chunk of chunks) {\n      if (!this.stream.hasChunk(chunk)) {\n        chunksNeeded.add(chunk);\n      }\n    }\n\n    if (chunksNeeded.size === 0) {\n      return Promise.resolve();\n    }\n\n    const capability = createPromiseCapability();\n    this._promisesByRequest.set(requestId, capability);\n\n    const chunksToRequest = [];\n    for (const chunk of chunksNeeded) {\n      let requestIds = this._requestsByChunk.get(chunk);\n      if (!requestIds) {\n        requestIds = [];\n        this._requestsByChunk.set(chunk, requestIds);\n\n        chunksToRequest.push(chunk);\n      }\n      requestIds.push(requestId);\n    }\n\n    if (chunksToRequest.length > 0) {\n      const groupedChunksToRequest = this.groupChunks(chunksToRequest);\n      for (const groupedChunk of groupedChunksToRequest) {\n        const begin = groupedChunk.beginChunk * this.chunkSize;\n        const end = Math.min(\n          groupedChunk.endChunk * this.chunkSize,\n          this.length\n        );\n        this.sendRequest(begin, end).catch(capability.reject);\n      }\n    }\n\n    return capability.promise.catch(reason => {\n      if (this.aborted) {\n        return; // Ignoring any pending requests after abort.\n      }\n      throw reason;\n    });\n  }\n\n  getStream() {\n    return this.stream;\n  }\n\n  /**\n   * Loads any chunks in the requested range that are not yet loaded.\n   */\n  requestRange(begin, end) {\n    end = Math.min(end, this.length);\n\n    const beginChunk = this.getBeginChunk(begin);\n    const endChunk = this.getEndChunk(end);\n\n    const chunks = [];\n    for (let chunk = beginChunk; chunk < endChunk; ++chunk) {\n      chunks.push(chunk);\n    }\n    return this._requestChunks(chunks);\n  }\n\n  requestRanges(ranges = []) {\n    const chunksToRequest = [];\n    for (const range of ranges) {\n      const beginChunk = this.getBeginChunk(range.begin);\n      const endChunk = this.getEndChunk(range.end);\n      for (let chunk = beginChunk; chunk < endChunk; ++chunk) {\n        if (!chunksToRequest.includes(chunk)) {\n          chunksToRequest.push(chunk);\n        }\n      }\n    }\n\n    chunksToRequest.sort(function (a, b) {\n      return a - b;\n    });\n    return this._requestChunks(chunksToRequest);\n  }\n\n  /**\n   * Groups a sorted array of chunks into as few contiguous larger\n   * chunks as possible.\n   */\n  groupChunks(chunks) {\n    const groupedChunks = [];\n    let beginChunk = -1;\n    let prevChunk = -1;\n\n    for (let i = 0, ii = chunks.length; i < ii; ++i) {\n      const chunk = chunks[i];\n      if (beginChunk < 0) {\n        beginChunk = chunk;\n      }\n\n      if (prevChunk >= 0 && prevChunk + 1 !== chunk) {\n        groupedChunks.push({ beginChunk, endChunk: prevChunk + 1 });\n        beginChunk = chunk;\n      }\n      if (i + 1 === chunks.length) {\n        groupedChunks.push({ beginChunk, endChunk: chunk + 1 });\n      }\n\n      prevChunk = chunk;\n    }\n    return groupedChunks;\n  }\n\n  onProgress(args) {\n    this.msgHandler.send(\"DocProgress\", {\n      loaded: this.stream.numChunksLoaded * this.chunkSize + args.loaded,\n      total: this.length,\n    });\n  }\n\n  onReceiveData(args) {\n    const chunk = args.chunk;\n    const isProgressive = args.begin === undefined;\n    const begin = isProgressive ? this.progressiveDataLength : args.begin;\n    const end = begin + chunk.byteLength;\n\n    const beginChunk = Math.floor(begin / this.chunkSize);\n    const endChunk =\n      end < this.length\n        ? Math.floor(end / this.chunkSize)\n        : Math.ceil(end / this.chunkSize);\n\n    if (isProgressive) {\n      this.stream.onReceiveProgressiveData(chunk);\n      this.progressiveDataLength = end;\n    } else {\n      this.stream.onReceiveData(begin, chunk);\n    }\n\n    if (this.stream.isDataLoaded) {\n      this._loadedStreamCapability.resolve(this.stream);\n    }\n\n    const loadedRequests = [];\n    for (let curChunk = beginChunk; curChunk < endChunk; ++curChunk) {\n      // The server might return more chunks than requested.\n      const requestIds = this._requestsByChunk.get(curChunk);\n      if (!requestIds) {\n        continue;\n      }\n      this._requestsByChunk.delete(curChunk);\n\n      for (const requestId of requestIds) {\n        const chunksNeeded = this._chunksNeededByRequest.get(requestId);\n        if (chunksNeeded.has(curChunk)) {\n          chunksNeeded.delete(curChunk);\n        }\n\n        if (chunksNeeded.size > 0) {\n          continue;\n        }\n        loadedRequests.push(requestId);\n      }\n    }\n\n    // If there are no pending requests, automatically fetch the next\n    // unfetched chunk of the PDF file.\n    if (!this.disableAutoFetch && this._requestsByChunk.size === 0) {\n      let nextEmptyChunk;\n      if (this.stream.numChunksLoaded === 1) {\n        // This is a special optimization so that after fetching the first\n        // chunk, rather than fetching the second chunk, we fetch the last\n        // chunk.\n        const lastChunk = this.stream.numChunks - 1;\n        if (!this.stream.hasChunk(lastChunk)) {\n          nextEmptyChunk = lastChunk;\n        }\n      } else {\n        nextEmptyChunk = this.stream.nextEmptyChunk(endChunk);\n      }\n      if (Number.isInteger(nextEmptyChunk)) {\n        this._requestChunks([nextEmptyChunk]);\n      }\n    }\n\n    for (const requestId of loadedRequests) {\n      const capability = this._promisesByRequest.get(requestId);\n      this._promisesByRequest.delete(requestId);\n      capability.resolve();\n    }\n\n    this.msgHandler.send(\"DocProgress\", {\n      loaded: this.stream.numChunksLoaded * this.chunkSize,\n      total: this.length,\n    });\n  }\n\n  onError(err) {\n    this._loadedStreamCapability.reject(err);\n  }\n\n  getBeginChunk(begin) {\n    return Math.floor(begin / this.chunkSize);\n  }\n\n  getEndChunk(end) {\n    return Math.floor((end - 1) / this.chunkSize) + 1;\n  }\n\n  abort(reason) {\n    this.aborted = true;\n    if (this.pdfNetworkStream) {\n      this.pdfNetworkStream.cancelAllRequests(reason);\n    }\n    for (const capability of this._promisesByRequest.values()) {\n      capability.reject(reason);\n    }\n  }\n}\n\nexport { ChunkedStream, ChunkedStreamManager };\n","/* Copyright 2019 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n  assert,\n  BaseException,\n  FontType,\n  objectSize,\n  StreamType,\n  stringToPDFString,\n  warn,\n} from \"../shared/util.js\";\nimport { Dict, isName, isRef, isStream, RefSet } from \"./primitives.js\";\n\nfunction getLookupTableFactory(initializer) {\n  let lookup;\n  return function () {\n    if (initializer) {\n      lookup = Object.create(null);\n      initializer(lookup);\n      initializer = null;\n    }\n    return lookup;\n  };\n}\n\nfunction getArrayLookupTableFactory(initializer) {\n  let lookup;\n  return function () {\n    if (initializer) {\n      let arr = initializer();\n      initializer = null;\n      lookup = Object.create(null);\n      for (let i = 0, ii = arr.length; i < ii; i += 2) {\n        lookup[arr[i]] = arr[i + 1];\n      }\n      arr = null;\n    }\n    return lookup;\n  };\n}\n\nclass MissingDataException extends BaseException {\n  constructor(begin, end) {\n    super(`Missing data [${begin}, ${end})`, \"MissingDataException\");\n    this.begin = begin;\n    this.end = end;\n  }\n}\n\nclass ParserEOFException extends BaseException {\n  constructor(msg) {\n    super(msg, \"ParserEOFException\");\n  }\n}\n\nclass XRefEntryException extends BaseException {\n  constructor(msg) {\n    super(msg, \"XRefEntryException\");\n  }\n}\n\nclass XRefParseException extends BaseException {\n  constructor(msg) {\n    super(msg, \"XRefParseException\");\n  }\n}\n\nclass DocStats {\n  constructor(handler) {\n    this._handler = handler;\n\n    this._streamTypes = new Set();\n    this._fontTypes = new Set();\n  }\n\n  _send() {\n    const streamTypes = Object.create(null),\n      fontTypes = Object.create(null);\n    for (const type of this._streamTypes) {\n      streamTypes[type] = true;\n    }\n    for (const type of this._fontTypes) {\n      fontTypes[type] = true;\n    }\n    this._handler.send(\"DocStats\", { streamTypes, fontTypes });\n  }\n\n  addStreamType(type) {\n    if (\n      typeof PDFJSDev === \"undefined\" ||\n      PDFJSDev.test(\"!PRODUCTION || TESTING\")\n    ) {\n      assert(StreamType[type] === type, 'addStreamType: Invalid \"type\" value.');\n    }\n    if (this._streamTypes.has(type)) {\n      return;\n    }\n    this._streamTypes.add(type);\n    this._send();\n  }\n\n  addFontType(type) {\n    if (\n      typeof PDFJSDev === \"undefined\" ||\n      PDFJSDev.test(\"!PRODUCTION || TESTING\")\n    ) {\n      assert(FontType[type] === type, 'addFontType: Invalid \"type\" value.');\n    }\n    if (this._fontTypes.has(type)) {\n      return;\n    }\n    this._fontTypes.add(type);\n    this._send();\n  }\n}\n\n/**\n * Get the value of an inheritable property.\n *\n * If the PDF specification explicitly lists a property in a dictionary as\n * inheritable, then the value of the property may be present in the dictionary\n * itself or in one or more parents of the dictionary.\n *\n * If the key is not found in the tree, `undefined` is returned. Otherwise,\n * the value for the key is returned or, if `stopWhenFound` is `false`, a list\n * of values is returned.\n *\n * @param {Dict} dict - Dictionary from where to start the traversal.\n * @param {string} key - The key of the property to find the value for.\n * @param {boolean} getArray - Whether or not the value should be fetched as an\n *   array. The default value is `false`.\n * @param {boolean} stopWhenFound - Whether or not to stop the traversal when\n *   the key is found. If set to `false`, we always walk up the entire parent\n *   chain, for example to be able to find `\\Resources` placed on multiple\n *   levels of the tree. The default value is `true`.\n */\nfunction getInheritableProperty({\n  dict,\n  key,\n  getArray = false,\n  stopWhenFound = true,\n}) {\n  let values;\n  const visited = new RefSet();\n\n  while (dict instanceof Dict && !(dict.objId && visited.has(dict.objId))) {\n    if (dict.objId) {\n      visited.put(dict.objId);\n    }\n    const value = getArray ? dict.getArray(key) : dict.get(key);\n    if (value !== undefined) {\n      if (stopWhenFound) {\n        return value;\n      }\n      if (!values) {\n        values = [];\n      }\n      values.push(value);\n    }\n    dict = dict.get(\"Parent\");\n  }\n  return values;\n}\n\n// prettier-ignore\nconst ROMAN_NUMBER_MAP = [\n  \"\", \"C\", \"CC\", \"CCC\", \"CD\", \"D\", \"DC\", \"DCC\", \"DCCC\", \"CM\",\n  \"\", \"X\", \"XX\", \"XXX\", \"XL\", \"L\", \"LX\", \"LXX\", \"LXXX\", \"XC\",\n  \"\", \"I\", \"II\", \"III\", \"IV\", \"V\", \"VI\", \"VII\", \"VIII\", \"IX\"\n];\n\n/**\n * Converts positive integers to (upper case) Roman numerals.\n * @param {number} number - The number that should be converted.\n * @param {boolean} lowerCase - Indicates if the result should be converted\n *   to lower case letters. The default value is `false`.\n * @returns {string} The resulting Roman number.\n */\nfunction toRomanNumerals(number, lowerCase = false) {\n  assert(\n    Number.isInteger(number) && number > 0,\n    \"The number should be a positive integer.\"\n  );\n  const romanBuf = [];\n  let pos;\n  // Thousands\n  while (number >= 1000) {\n    number -= 1000;\n    romanBuf.push(\"M\");\n  }\n  // Hundreds\n  pos = (number / 100) | 0;\n  number %= 100;\n  romanBuf.push(ROMAN_NUMBER_MAP[pos]);\n  // Tens\n  pos = (number / 10) | 0;\n  number %= 10;\n  romanBuf.push(ROMAN_NUMBER_MAP[10 + pos]);\n  // Ones\n  romanBuf.push(ROMAN_NUMBER_MAP[20 + number]); // eslint-disable-line unicorn/no-array-push-push\n\n  const romanStr = romanBuf.join(\"\");\n  return lowerCase ? romanStr.toLowerCase() : romanStr;\n}\n\n// Calculate the base 2 logarithm of the number `x`. This differs from the\n// native function in the sense that it returns the ceiling value and that it\n// returns 0 instead of `Infinity`/`NaN` for `x` values smaller than/equal to 0.\nfunction log2(x) {\n  if (x <= 0) {\n    return 0;\n  }\n  return Math.ceil(Math.log2(x));\n}\n\nfunction readInt8(data, offset) {\n  return (data[offset] << 24) >> 24;\n}\n\nfunction readUint16(data, offset) {\n  return (data[offset] << 8) | data[offset + 1];\n}\n\nfunction readUint32(data, offset) {\n  return (\n    ((data[offset] << 24) |\n      (data[offset + 1] << 16) |\n      (data[offset + 2] << 8) |\n      data[offset + 3]) >>>\n    0\n  );\n}\n\n// Checks if ch is one of the following characters: SPACE, TAB, CR or LF.\nfunction isWhiteSpace(ch) {\n  return ch === 0x20 || ch === 0x09 || ch === 0x0d || ch === 0x0a;\n}\n\n/**\n * AcroForm field names use an array like notation to refer to\n * repeated XFA elements e.g. foo.bar[nnn].\n * see: XFA Spec Chapter 3 - Repeated Elements\n *\n * @param {string} path - XFA path name.\n * @returns {Array} - Array of Objects with the name and pos of\n * each part of the path.\n */\nfunction parseXFAPath(path) {\n  const positionPattern = /(.+)\\[(\\d+)\\]$/;\n  return path.split(\".\").map(component => {\n    const m = component.match(positionPattern);\n    if (m) {\n      return { name: m[1], pos: parseInt(m[2], 10) };\n    }\n    return { name: component, pos: 0 };\n  });\n}\n\nfunction escapePDFName(str) {\n  const buffer = [];\n  let start = 0;\n  for (let i = 0, ii = str.length; i < ii; i++) {\n    const char = str.charCodeAt(i);\n    // Whitespace or delimiters aren't regular chars, so escape them.\n    if (\n      char < 0x21 ||\n      char > 0x7e ||\n      char === 0x23 /* # */ ||\n      char === 0x28 /* ( */ ||\n      char === 0x29 /* ) */ ||\n      char === 0x3c /* < */ ||\n      char === 0x3e /* > */ ||\n      char === 0x5b /* [ */ ||\n      char === 0x5d /* ] */ ||\n      char === 0x7b /* { */ ||\n      char === 0x7d /* } */ ||\n      char === 0x2f /* / */ ||\n      char === 0x25 /* % */\n    ) {\n      if (start < i) {\n        buffer.push(str.substring(start, i));\n      }\n      buffer.push(`#${char.toString(16)}`);\n      start = i + 1;\n    }\n  }\n\n  if (buffer.length === 0) {\n    return str;\n  }\n\n  if (start < str.length) {\n    buffer.push(str.substring(start, str.length));\n  }\n\n  return buffer.join(\"\");\n}\n\nfunction _collectJS(entry, xref, list, parents) {\n  if (!entry) {\n    return;\n  }\n\n  let parent = null;\n  if (isRef(entry)) {\n    if (parents.has(entry)) {\n      // If we've already found entry then we've a cycle.\n      return;\n    }\n    parent = entry;\n    parents.put(parent);\n    entry = xref.fetch(entry);\n  }\n  if (Array.isArray(entry)) {\n    for (const element of entry) {\n      _collectJS(element, xref, list, parents);\n    }\n  } else if (entry instanceof Dict) {\n    if (isName(entry.get(\"S\"), \"JavaScript\") && entry.has(\"JS\")) {\n      const js = entry.get(\"JS\");\n      let code;\n      if (isStream(js)) {\n        code = js.getString();\n      } else {\n        code = js;\n      }\n      code = stringToPDFString(code);\n      if (code) {\n        list.push(code);\n      }\n    }\n    _collectJS(entry.getRaw(\"Next\"), xref, list, parents);\n  }\n\n  if (parent) {\n    parents.remove(parent);\n  }\n}\n\nfunction collectActions(xref, dict, eventType) {\n  const actions = Object.create(null);\n  const additionalActionsDicts = getInheritableProperty({\n    dict,\n    key: \"AA\",\n    stopWhenFound: false,\n  });\n  if (additionalActionsDicts) {\n    // additionalActionsDicts contains dicts from ancestors\n    // as they're found in the tree from bottom to top.\n    // So the dicts are visited in reverse order to guarantee\n    // that actions from elder ancestors will be overwritten\n    // by ones from younger ancestors.\n    for (let i = additionalActionsDicts.length - 1; i >= 0; i--) {\n      const additionalActions = additionalActionsDicts[i];\n      if (!(additionalActions instanceof Dict)) {\n        continue;\n      }\n      for (const key of additionalActions.getKeys()) {\n        const action = eventType[key];\n        if (!action) {\n          continue;\n        }\n        const actionDict = additionalActions.getRaw(key);\n        const parents = new RefSet();\n        const list = [];\n        _collectJS(actionDict, xref, list, parents);\n        if (list.length > 0) {\n          actions[action] = list;\n        }\n      }\n    }\n  }\n  // Collect the Action if any (we may have one on pushbutton).\n  if (dict.has(\"A\")) {\n    const actionDict = dict.get(\"A\");\n    const parents = new RefSet();\n    const list = [];\n    _collectJS(actionDict, xref, list, parents);\n    if (list.length > 0) {\n      actions.Action = list;\n    }\n  }\n  return objectSize(actions) > 0 ? actions : null;\n}\n\nconst XMLEntities = {\n  /* < */ 0x3c: \"&lt;\",\n  /* > */ 0x3e: \"&gt;\",\n  /* & */ 0x26: \"&amp;\",\n  /* \" */ 0x22: \"&quot;\",\n  /* ' */ 0x27: \"&apos;\",\n};\n\nfunction encodeToXmlString(str) {\n  const buffer = [];\n  let start = 0;\n  for (let i = 0, ii = str.length; i < ii; i++) {\n    const char = str.codePointAt(i);\n    if (0x20 <= char && char <= 0x7e) {\n      // ascii\n      const entity = XMLEntities[char];\n      if (entity) {\n        if (start < i) {\n          buffer.push(str.substring(start, i));\n        }\n        buffer.push(entity);\n        start = i + 1;\n      }\n    } else {\n      if (start < i) {\n        buffer.push(str.substring(start, i));\n      }\n      buffer.push(`&#x${char.toString(16).toUpperCase()};`);\n      if (char > 0xd7ff && (char < 0xe000 || char > 0xfffd)) {\n        // char is represented by two u16\n        i++;\n      }\n      start = i + 1;\n    }\n  }\n\n  if (buffer.length === 0) {\n    return str;\n  }\n  if (start < str.length) {\n    buffer.push(str.substring(start, str.length));\n  }\n  return buffer.join(\"\");\n}\n\nfunction validateCSSFont(cssFontInfo) {\n  // See https://developer.mozilla.org/en-US/docs/Web/CSS/font-style.\n  const DEFAULT_CSS_FONT_OBLIQUE = \"14\";\n  // See https://developer.mozilla.org/en-US/docs/Web/CSS/font-weight.\n  const DEFAULT_CSS_FONT_WEIGHT = \"400\";\n  const CSS_FONT_WEIGHT_VALUES = new Set([\n    \"100\",\n    \"200\",\n    \"300\",\n    \"400\",\n    \"500\",\n    \"600\",\n    \"700\",\n    \"800\",\n    \"900\",\n    \"1000\",\n    \"normal\",\n    \"bold\",\n    \"bolder\",\n    \"lighter\",\n  ]);\n\n  const { fontFamily, fontWeight, italicAngle } = cssFontInfo;\n\n  // See https://developer.mozilla.org/en-US/docs/Web/CSS/string.\n  if (/^\".*\"$/.test(fontFamily)) {\n    if (/[^\\\\]\"/.test(fontFamily.slice(1, fontFamily.length - 1))) {\n      warn(`XFA - FontFamily contains some unescaped \": ${fontFamily}.`);\n      return false;\n    }\n  } else if (/^'.*'$/.test(fontFamily)) {\n    if (/[^\\\\]'/.test(fontFamily.slice(1, fontFamily.length - 1))) {\n      warn(`XFA - FontFamily contains some unescaped ': ${fontFamily}.`);\n      return false;\n    }\n  } else {\n    // See https://developer.mozilla.org/en-US/docs/Web/CSS/custom-ident.\n    for (const ident of fontFamily.split(/[ \\t]+/)) {\n      if (/^(\\d|(-(\\d|-)))/.test(ident) || !/^[\\w-\\\\]+$/.test(ident)) {\n        warn(\n          `XFA - FontFamily contains some invalid <custom-ident>: ${fontFamily}.`\n        );\n        return false;\n      }\n    }\n  }\n\n  const weight = fontWeight ? fontWeight.toString() : \"\";\n  cssFontInfo.fontWeight = CSS_FONT_WEIGHT_VALUES.has(weight)\n    ? weight\n    : DEFAULT_CSS_FONT_WEIGHT;\n\n  const angle = parseFloat(italicAngle);\n  cssFontInfo.italicAngle =\n    isNaN(angle) || angle < -90 || angle > 90\n      ? DEFAULT_CSS_FONT_OBLIQUE\n      : italicAngle.toString();\n\n  return true;\n}\n\nfunction recoverJsURL(str) {\n  // Attempt to recover valid URLs from `JS` entries with certain\n  // white-listed formats:\n  //  - window.open('http://example.com')\n  //  - app.launchURL('http://example.com', true)\n  //  - xfa.host.gotoURL('http://example.com')\n  const URL_OPEN_METHODS = [\"app.launchURL\", \"window.open\", \"xfa.host.gotoURL\"];\n  const regex = new RegExp(\n    \"^\\\\s*(\" +\n      URL_OPEN_METHODS.join(\"|\").split(\".\").join(\"\\\\.\") +\n      \")\\\\((?:'|\\\")([^'\\\"]*)(?:'|\\\")(?:,\\\\s*(\\\\w+)\\\\)|\\\\))\",\n    \"i\"\n  );\n\n  const jsUrl = regex.exec(str);\n  if (jsUrl && jsUrl[2]) {\n    const url = jsUrl[2];\n    let newWindow = false;\n\n    if (jsUrl[3] === \"true\" && jsUrl[1] === \"app.launchURL\") {\n      newWindow = true;\n    }\n    return { url, newWindow };\n  }\n\n  return null;\n}\n\nexport {\n  collectActions,\n  DocStats,\n  encodeToXmlString,\n  escapePDFName,\n  getArrayLookupTableFactory,\n  getInheritableProperty,\n  getLookupTableFactory,\n  isWhiteSpace,\n  log2,\n  MissingDataException,\n  ParserEOFException,\n  parseXFAPath,\n  readInt8,\n  readUint16,\n  readUint32,\n  recoverJsURL,\n  toRomanNumerals,\n  validateCSSFont,\n  XRefEntryException,\n  XRefParseException,\n};\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { BaseStream } from \"./base_stream.js\";\nimport { stringToBytes } from \"../shared/util.js\";\n\nclass Stream extends BaseStream {\n  constructor(arrayBuffer, start, length, dict) {\n    super();\n\n    this.bytes =\n      arrayBuffer instanceof Uint8Array\n        ? arrayBuffer\n        : new Uint8Array(arrayBuffer);\n    this.start = start || 0;\n    this.pos = this.start;\n    this.end = start + length || this.bytes.length;\n    this.dict = dict;\n  }\n\n  get length() {\n    return this.end - this.start;\n  }\n\n  get isEmpty() {\n    return this.length === 0;\n  }\n\n  getByte() {\n    if (this.pos >= this.end) {\n      return -1;\n    }\n    return this.bytes[this.pos++];\n  }\n\n  getBytes(length, forceClamped = false) {\n    const bytes = this.bytes;\n    const pos = this.pos;\n    const strEnd = this.end;\n\n    if (!length) {\n      const subarray = bytes.subarray(pos, strEnd);\n      // `this.bytes` is always a `Uint8Array` here.\n      return forceClamped ? new Uint8ClampedArray(subarray) : subarray;\n    }\n    let end = pos + length;\n    if (end > strEnd) {\n      end = strEnd;\n    }\n    this.pos = end;\n    const subarray = bytes.subarray(pos, end);\n    // `this.bytes` is always a `Uint8Array` here.\n    return forceClamped ? new Uint8ClampedArray(subarray) : subarray;\n  }\n\n  getByteRange(begin, end) {\n    if (begin < 0) {\n      begin = 0;\n    }\n    if (end > this.end) {\n      end = this.end;\n    }\n    return this.bytes.subarray(begin, end);\n  }\n\n  reset() {\n    this.pos = this.start;\n  }\n\n  moveStart() {\n    this.start = this.pos;\n  }\n\n  makeSubStream(start, length, dict = null) {\n    return new Stream(this.bytes.buffer, start, length, dict);\n  }\n}\n\nclass StringStream extends Stream {\n  constructor(str) {\n    super(stringToBytes(str));\n  }\n}\n\nclass NullStream extends Stream {\n  constructor() {\n    super(new Uint8Array(0));\n  }\n}\n\nexport { NullStream, Stream, StringStream };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n  assert,\n  FormatError,\n  info,\n  InvalidPDFException,\n  isArrayBuffer,\n  isArrayEqual,\n  isBool,\n  isNum,\n  isString,\n  OPS,\n  PageActionEventType,\n  RenderingIntentFlag,\n  shadow,\n  stringToBytes,\n  stringToPDFString,\n  stringToUTF8String,\n  unreachable,\n  UNSUPPORTED_FEATURES,\n  Util,\n  warn,\n} from \"../shared/util.js\";\nimport {\n  clearPrimitiveCaches,\n  Dict,\n  isDict,\n  isName,\n  isRef,\n  isStream,\n  Name,\n  Ref,\n} from \"./primitives.js\";\nimport {\n  collectActions,\n  getInheritableProperty,\n  isWhiteSpace,\n  MissingDataException,\n  validateCSSFont,\n  XRefEntryException,\n  XRefParseException,\n} from \"./core_utils.js\";\nimport { getXfaFontDict, getXfaFontName } from \"./xfa_fonts.js\";\nimport { NullStream, Stream } from \"./stream.js\";\nimport { AnnotationFactory } from \"./annotation.js\";\nimport { BaseStream } from \"./base_stream.js\";\nimport { calculateMD5 } from \"./crypto.js\";\nimport { Catalog } from \"./catalog.js\";\nimport { Linearization } from \"./parser.js\";\nimport { ObjectLoader } from \"./object_loader.js\";\nimport { OperatorList } from \"./operator_list.js\";\nimport { PartialEvaluator } from \"./evaluator.js\";\nimport { StreamsSequenceStream } from \"./decode_stream.js\";\nimport { StructTreePage } from \"./struct_tree.js\";\nimport { XFAFactory } from \"./xfa/factory.js\";\nimport { XRef } from \"./xref.js\";\n\nconst DEFAULT_USER_UNIT = 1.0;\nconst LETTER_SIZE_MEDIABOX = [0, 0, 612, 792];\n\nclass Page {\n  constructor({\n    pdfManager,\n    xref,\n    pageIndex,\n    pageDict,\n    ref,\n    globalIdFactory,\n    fontCache,\n    builtInCMapCache,\n    standardFontDataCache,\n    globalImageCache,\n    nonBlendModesSet,\n    xfaFactory,\n  }) {\n    this.pdfManager = pdfManager;\n    this.pageIndex = pageIndex;\n    this.pageDict = pageDict;\n    this.xref = xref;\n    this.ref = ref;\n    this.fontCache = fontCache;\n    this.builtInCMapCache = builtInCMapCache;\n    this.standardFontDataCache = standardFontDataCache;\n    this.globalImageCache = globalImageCache;\n    this.nonBlendModesSet = nonBlendModesSet;\n    this.evaluatorOptions = pdfManager.evaluatorOptions;\n    this.resourcesPromise = null;\n    this.xfaFactory = xfaFactory;\n\n    const idCounters = {\n      obj: 0,\n    };\n    this._localIdFactory = class extends globalIdFactory {\n      static createObjId() {\n        return `p${pageIndex}_${++idCounters.obj}`;\n      }\n\n      static getPageObjId() {\n        return `page${ref.toString()}`;\n      }\n    };\n  }\n\n  /**\n   * @private\n   */\n  _getInheritableProperty(key, getArray = false) {\n    const value = getInheritableProperty({\n      dict: this.pageDict,\n      key,\n      getArray,\n      stopWhenFound: false,\n    });\n    if (!Array.isArray(value)) {\n      return value;\n    }\n    if (value.length === 1 || !isDict(value[0])) {\n      return value[0];\n    }\n    return Dict.merge({ xref: this.xref, dictArray: value });\n  }\n\n  get content() {\n    return this.pageDict.getArray(\"Contents\");\n  }\n\n  get resources() {\n    // For robustness: The spec states that a \\Resources entry has to be\n    // present, but can be empty. Some documents still omit it; in this case\n    // we return an empty dictionary.\n    return shadow(\n      this,\n      \"resources\",\n      this._getInheritableProperty(\"Resources\") || Dict.empty\n    );\n  }\n\n  _getBoundingBox(name) {\n    if (this.xfaData) {\n      return this.xfaData.bbox;\n    }\n\n    const box = this._getInheritableProperty(name, /* getArray = */ true);\n\n    if (Array.isArray(box) && box.length === 4) {\n      if (box[2] - box[0] !== 0 && box[3] - box[1] !== 0) {\n        return box;\n      }\n      warn(`Empty /${name} entry.`);\n    }\n    return null;\n  }\n\n  get mediaBox() {\n    // Reset invalid media box to letter size.\n    return shadow(\n      this,\n      \"mediaBox\",\n      this._getBoundingBox(\"MediaBox\") || LETTER_SIZE_MEDIABOX\n    );\n  }\n\n  get cropBox() {\n    // Reset invalid crop box to media box.\n    return shadow(\n      this,\n      \"cropBox\",\n      this._getBoundingBox(\"CropBox\") || this.mediaBox\n    );\n  }\n\n  get userUnit() {\n    let obj = this.pageDict.get(\"UserUnit\");\n    if (!isNum(obj) || obj <= 0) {\n      obj = DEFAULT_USER_UNIT;\n    }\n    return shadow(this, \"userUnit\", obj);\n  }\n\n  get view() {\n    // From the spec, 6th ed., p.963:\n    // \"The crop, bleed, trim, and art boxes should not ordinarily\n    // extend beyond the boundaries of the media box. If they do, they are\n    // effectively reduced to their intersection with the media box.\"\n    const { cropBox, mediaBox } = this;\n    let view;\n    if (cropBox === mediaBox || isArrayEqual(cropBox, mediaBox)) {\n      view = mediaBox;\n    } else {\n      const box = Util.intersect(cropBox, mediaBox);\n      if (box && box[2] - box[0] !== 0 && box[3] - box[1] !== 0) {\n        view = box;\n      } else {\n        warn(\"Empty /CropBox and /MediaBox intersection.\");\n      }\n    }\n    return shadow(this, \"view\", view || mediaBox);\n  }\n\n  get rotate() {\n    let rotate = this._getInheritableProperty(\"Rotate\") || 0;\n\n    // Normalize rotation so it's a multiple of 90 and between 0 and 270.\n    if (rotate % 90 !== 0) {\n      rotate = 0;\n    } else if (rotate >= 360) {\n      rotate %= 360;\n    } else if (rotate < 0) {\n      // The spec doesn't cover negatives. Assume it's counterclockwise\n      // rotation. The following is the other implementation of modulo.\n      rotate = ((rotate % 360) + 360) % 360;\n    }\n    return shadow(this, \"rotate\", rotate);\n  }\n\n  /**\n   * @private\n   */\n  _onSubStreamError(handler, reason, objId) {\n    if (this.evaluatorOptions.ignoreErrors) {\n      // Error(s) when reading one of the /Contents sub-streams -- sending\n      // unsupported feature notification and allow parsing to continue.\n      handler.send(\"UnsupportedFeature\", {\n        featureId: UNSUPPORTED_FEATURES.errorContentSubStream,\n      });\n      warn(`getContentStream - ignoring sub-stream (${objId}): \"${reason}\".`);\n      return;\n    }\n    throw reason;\n  }\n\n  /**\n   * @returns {Promise<BaseStream>}\n   */\n  getContentStream(handler) {\n    return this.pdfManager.ensure(this, \"content\").then(content => {\n      if (content instanceof BaseStream) {\n        return content;\n      }\n      if (Array.isArray(content)) {\n        return new StreamsSequenceStream(\n          content,\n          this._onSubStreamError.bind(this, handler)\n        );\n      }\n      // Replace non-existent page content with empty content.\n      return new NullStream();\n    });\n  }\n\n  get xfaData() {\n    return shadow(\n      this,\n      \"xfaData\",\n      this.xfaFactory\n        ? { bbox: this.xfaFactory.getBoundingBox(this.pageIndex) }\n        : null\n    );\n  }\n\n  save(handler, task, annotationStorage) {\n    const partialEvaluator = new PartialEvaluator({\n      xref: this.xref,\n      handler,\n      pageIndex: this.pageIndex,\n      idFactory: this._localIdFactory,\n      fontCache: this.fontCache,\n      builtInCMapCache: this.builtInCMapCache,\n      standardFontDataCache: this.standardFontDataCache,\n      globalImageCache: this.globalImageCache,\n      options: this.evaluatorOptions,\n    });\n\n    // Fetch the page's annotations and save the content\n    // in case of interactive form fields.\n    return this._parsedAnnotations.then(function (annotations) {\n      const newRefsPromises = [];\n      for (const annotation of annotations) {\n        if (!annotation.mustBePrinted(annotationStorage)) {\n          continue;\n        }\n        newRefsPromises.push(\n          annotation\n            .save(partialEvaluator, task, annotationStorage)\n            .catch(function (reason) {\n              warn(\n                \"save - ignoring annotation data during \" +\n                  `\"${task.name}\" task: \"${reason}\".`\n              );\n              return null;\n            })\n        );\n      }\n\n      return Promise.all(newRefsPromises);\n    });\n  }\n\n  loadResources(keys) {\n    if (!this.resourcesPromise) {\n      // TODO: add async `_getInheritableProperty` and remove this.\n      this.resourcesPromise = this.pdfManager.ensure(this, \"resources\");\n    }\n    return this.resourcesPromise.then(() => {\n      const objectLoader = new ObjectLoader(this.resources, keys, this.xref);\n      return objectLoader.load();\n    });\n  }\n\n  getOperatorList({\n    handler,\n    sink,\n    task,\n    intent,\n    cacheKey,\n    annotationStorage = null,\n  }) {\n    const contentStreamPromise = this.getContentStream(handler);\n    const resourcesPromise = this.loadResources([\n      \"ColorSpace\",\n      \"ExtGState\",\n      \"Font\",\n      \"Pattern\",\n      \"Properties\",\n      \"Shading\",\n      \"XObject\",\n    ]);\n\n    const partialEvaluator = new PartialEvaluator({\n      xref: this.xref,\n      handler,\n      pageIndex: this.pageIndex,\n      idFactory: this._localIdFactory,\n      fontCache: this.fontCache,\n      builtInCMapCache: this.builtInCMapCache,\n      standardFontDataCache: this.standardFontDataCache,\n      globalImageCache: this.globalImageCache,\n      options: this.evaluatorOptions,\n    });\n\n    const dataPromises = Promise.all([contentStreamPromise, resourcesPromise]);\n    const pageListPromise = dataPromises.then(([contentStream]) => {\n      const opList = new OperatorList(intent, sink);\n\n      handler.send(\"StartRenderPage\", {\n        transparency: partialEvaluator.hasBlendModes(\n          this.resources,\n          this.nonBlendModesSet\n        ),\n        pageIndex: this.pageIndex,\n        cacheKey,\n      });\n\n      return partialEvaluator\n        .getOperatorList({\n          stream: contentStream,\n          task,\n          resources: this.resources,\n          operatorList: opList,\n        })\n        .then(function () {\n          return opList;\n        });\n    });\n\n    // Fetch the page's annotations and add their operator lists to the\n    // page's operator list to render them.\n    return Promise.all([pageListPromise, this._parsedAnnotations]).then(\n      function ([pageOpList, annotations]) {\n        if (\n          annotations.length === 0 ||\n          intent & RenderingIntentFlag.ANNOTATIONS_DISABLE\n        ) {\n          pageOpList.flush(true);\n          return { length: pageOpList.totalLength };\n        }\n        const renderForms = !!(intent & RenderingIntentFlag.ANNOTATIONS_FORMS),\n          intentAny = !!(intent & RenderingIntentFlag.ANY),\n          intentDisplay = !!(intent & RenderingIntentFlag.DISPLAY),\n          intentPrint = !!(intent & RenderingIntentFlag.PRINT);\n\n        // Collect the operator list promises for the annotations. Each promise\n        // is resolved with the complete operator list for a single annotation.\n        const opListPromises = [];\n        for (const annotation of annotations) {\n          if (\n            intentAny ||\n            (intentDisplay && annotation.mustBeViewed(annotationStorage)) ||\n            (intentPrint && annotation.mustBePrinted(annotationStorage))\n          ) {\n            opListPromises.push(\n              annotation\n                .getOperatorList(\n                  partialEvaluator,\n                  task,\n                  intent,\n                  renderForms,\n                  annotationStorage\n                )\n                .catch(function (reason) {\n                  warn(\n                    \"getOperatorList - ignoring annotation data during \" +\n                      `\"${task.name}\" task: \"${reason}\".`\n                  );\n                  return null;\n                })\n            );\n          }\n        }\n\n        return Promise.all(opListPromises).then(function (opLists) {\n          pageOpList.addOp(OPS.beginAnnotations, []);\n          for (const opList of opLists) {\n            pageOpList.addOpList(opList);\n          }\n          pageOpList.addOp(OPS.endAnnotations, []);\n          pageOpList.flush(true);\n          return { length: pageOpList.totalLength };\n        });\n      }\n    );\n  }\n\n  extractTextContent({\n    handler,\n    task,\n    normalizeWhitespace,\n    includeMarkedContent,\n    sink,\n    combineTextItems,\n  }) {\n    const contentStreamPromise = this.getContentStream(handler);\n    const resourcesPromise = this.loadResources([\n      \"ExtGState\",\n      \"Font\",\n      \"Properties\",\n      \"XObject\",\n    ]);\n\n    const dataPromises = Promise.all([contentStreamPromise, resourcesPromise]);\n    return dataPromises.then(([contentStream]) => {\n      const partialEvaluator = new PartialEvaluator({\n        xref: this.xref,\n        handler,\n        pageIndex: this.pageIndex,\n        idFactory: this._localIdFactory,\n        fontCache: this.fontCache,\n        builtInCMapCache: this.builtInCMapCache,\n        standardFontDataCache: this.standardFontDataCache,\n        globalImageCache: this.globalImageCache,\n        options: this.evaluatorOptions,\n      });\n\n      return partialEvaluator.getTextContent({\n        stream: contentStream,\n        task,\n        resources: this.resources,\n        normalizeWhitespace,\n        includeMarkedContent,\n        combineTextItems,\n        sink,\n      });\n    });\n  }\n\n  async getStructTree() {\n    const structTreeRoot = await this.pdfManager.ensureCatalog(\n      \"structTreeRoot\"\n    );\n    if (!structTreeRoot) {\n      return null;\n    }\n    const structTree = await this.pdfManager.ensure(this, \"_parseStructTree\", [\n      structTreeRoot,\n    ]);\n    return structTree.serializable;\n  }\n\n  /**\n   * @private\n   */\n  _parseStructTree(structTreeRoot) {\n    const tree = new StructTreePage(structTreeRoot, this.pageDict);\n    tree.parse();\n    return tree;\n  }\n\n  getAnnotationsData(intent) {\n    return this._parsedAnnotations.then(function (annotations) {\n      const annotationsData = [];\n\n      if (annotations.length === 0) {\n        return annotationsData;\n      }\n      const intentAny = !!(intent & RenderingIntentFlag.ANY),\n        intentDisplay = !!(intent & RenderingIntentFlag.DISPLAY),\n        intentPrint = !!(intent & RenderingIntentFlag.PRINT);\n\n      for (const annotation of annotations) {\n        // Get the annotation even if it's hidden because\n        // JS can change its display.\n        if (\n          intentAny ||\n          (intentDisplay && annotation.viewable) ||\n          (intentPrint && annotation.printable)\n        ) {\n          annotationsData.push(annotation.data);\n        }\n      }\n      return annotationsData;\n    });\n  }\n\n  get annotations() {\n    const annots = this._getInheritableProperty(\"Annots\");\n    return shadow(this, \"annotations\", Array.isArray(annots) ? annots : []);\n  }\n\n  get _parsedAnnotations() {\n    const parsedAnnotations = this.pdfManager\n      .ensure(this, \"annotations\")\n      .then(() => {\n        const annotationPromises = [];\n        for (const annotationRef of this.annotations) {\n          annotationPromises.push(\n            AnnotationFactory.create(\n              this.xref,\n              annotationRef,\n              this.pdfManager,\n              this._localIdFactory,\n              /* collectFields */ false\n            ).catch(function (reason) {\n              warn(`_parsedAnnotations: \"${reason}\".`);\n              return null;\n            })\n          );\n        }\n\n        return Promise.all(annotationPromises).then(function (annotations) {\n          return annotations.filter(annotation => !!annotation);\n        });\n      });\n\n    return shadow(this, \"_parsedAnnotations\", parsedAnnotations);\n  }\n\n  get jsActions() {\n    const actions = collectActions(\n      this.xref,\n      this.pageDict,\n      PageActionEventType\n    );\n    return shadow(this, \"jsActions\", actions);\n  }\n}\n\nconst PDF_HEADER_SIGNATURE = new Uint8Array([0x25, 0x50, 0x44, 0x46, 0x2d]);\nconst STARTXREF_SIGNATURE = new Uint8Array([\n  0x73, 0x74, 0x61, 0x72, 0x74, 0x78, 0x72, 0x65, 0x66,\n]);\nconst ENDOBJ_SIGNATURE = new Uint8Array([0x65, 0x6e, 0x64, 0x6f, 0x62, 0x6a]);\n\nconst FINGERPRINT_FIRST_BYTES = 1024;\nconst EMPTY_FINGERPRINT =\n  \"\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\n\nconst PDF_HEADER_VERSION_REGEXP = /^[1-9]\\.\\d$/;\n\nfunction find(stream, signature, limit = 1024, backwards = false) {\n  if (\n    typeof PDFJSDev === \"undefined\" ||\n    PDFJSDev.test(\"!PRODUCTION || TESTING\")\n  ) {\n    assert(limit > 0, 'The \"limit\" must be a positive integer.');\n  }\n  const signatureLength = signature.length;\n\n  const scanBytes = stream.peekBytes(limit);\n  const scanLength = scanBytes.length - signatureLength;\n\n  if (scanLength <= 0) {\n    return false;\n  }\n  if (backwards) {\n    const signatureEnd = signatureLength - 1;\n\n    let pos = scanBytes.length - 1;\n    while (pos >= signatureEnd) {\n      let j = 0;\n      while (\n        j < signatureLength &&\n        scanBytes[pos - j] === signature[signatureEnd - j]\n      ) {\n        j++;\n      }\n      if (j >= signatureLength) {\n        // `signature` found.\n        stream.pos += pos - signatureEnd;\n        return true;\n      }\n      pos--;\n    }\n  } else {\n    // forwards\n    let pos = 0;\n    while (pos <= scanLength) {\n      let j = 0;\n      while (j < signatureLength && scanBytes[pos + j] === signature[j]) {\n        j++;\n      }\n      if (j >= signatureLength) {\n        // `signature` found.\n        stream.pos += pos;\n        return true;\n      }\n      pos++;\n    }\n  }\n  return false;\n}\n\n/**\n * The `PDFDocument` class holds all the (worker-thread) data of the PDF file.\n */\nclass PDFDocument {\n  constructor(pdfManager, arg) {\n    let stream;\n    if (isStream(arg)) {\n      stream = arg;\n    } else if (isArrayBuffer(arg)) {\n      stream = new Stream(arg);\n    } else {\n      throw new Error(\"PDFDocument: Unknown argument type\");\n    }\n    if (stream.length <= 0) {\n      throw new InvalidPDFException(\n        \"The PDF file is empty, i.e. its size is zero bytes.\"\n      );\n    }\n\n    this.pdfManager = pdfManager;\n    this.stream = stream;\n    this.xref = new XRef(stream, pdfManager);\n    this._pagePromises = new Map();\n    this._version = null;\n\n    const idCounters = {\n      font: 0,\n    };\n    this._globalIdFactory = class {\n      static getDocId() {\n        return `g_${pdfManager.docId}`;\n      }\n\n      static createFontId() {\n        return `f${++idCounters.font}`;\n      }\n\n      static createObjId() {\n        unreachable(\"Abstract method `createObjId` called.\");\n      }\n\n      static getPageObjId() {\n        unreachable(\"Abstract method `getPageObjId` called.\");\n      }\n    };\n  }\n\n  parse(recoveryMode) {\n    this.xref.parse(recoveryMode);\n    this.catalog = new Catalog(this.pdfManager, this.xref);\n\n    // The `checkHeader` method is called before this method and parses the\n    // version from the header. The specification states in section 7.5.2\n    // that the version from the catalog, if present, should overwrite the\n    // version from the header.\n    if (this.catalog.version) {\n      this._version = this.catalog.version;\n    }\n  }\n\n  get linearization() {\n    let linearization = null;\n    try {\n      linearization = Linearization.create(this.stream);\n    } catch (err) {\n      if (err instanceof MissingDataException) {\n        throw err;\n      }\n      info(err);\n    }\n    return shadow(this, \"linearization\", linearization);\n  }\n\n  get startXRef() {\n    const stream = this.stream;\n    let startXRef = 0;\n\n    if (this.linearization) {\n      // Find the end of the first object.\n      stream.reset();\n      if (find(stream, ENDOBJ_SIGNATURE)) {\n        startXRef = stream.pos + 6 - stream.start;\n      }\n    } else {\n      // Find `startxref` by checking backwards from the end of the file.\n      const step = 1024;\n      const startXRefLength = STARTXREF_SIGNATURE.length;\n      let found = false,\n        pos = stream.end;\n\n      while (!found && pos > 0) {\n        pos -= step - startXRefLength;\n        if (pos < 0) {\n          pos = 0;\n        }\n        stream.pos = pos;\n        found = find(stream, STARTXREF_SIGNATURE, step, true);\n      }\n\n      if (found) {\n        stream.skip(9);\n        let ch;\n        do {\n          ch = stream.getByte();\n        } while (isWhiteSpace(ch));\n        let str = \"\";\n        while (ch >= /* Space = */ 0x20 && ch <= /* '9' = */ 0x39) {\n          str += String.fromCharCode(ch);\n          ch = stream.getByte();\n        }\n        startXRef = parseInt(str, 10);\n        if (isNaN(startXRef)) {\n          startXRef = 0;\n        }\n      }\n    }\n    return shadow(this, \"startXRef\", startXRef);\n  }\n\n  // Find the header, get the PDF format version and setup the\n  // stream to start from the header.\n  checkHeader() {\n    const stream = this.stream;\n    stream.reset();\n\n    if (!find(stream, PDF_HEADER_SIGNATURE)) {\n      // May not be a PDF file, but don't throw an error and let\n      // parsing continue.\n      return;\n    }\n    stream.moveStart();\n\n    // Read the PDF format version.\n    const MAX_PDF_VERSION_LENGTH = 12;\n    let version = \"\",\n      ch;\n    while ((ch = stream.getByte()) > /* Space = */ 0x20) {\n      if (version.length >= MAX_PDF_VERSION_LENGTH) {\n        break;\n      }\n      version += String.fromCharCode(ch);\n    }\n    if (!this._version) {\n      // Remove the \"%PDF-\" prefix.\n      this._version = version.substring(5);\n    }\n  }\n\n  parseStartXRef() {\n    this.xref.setStartXRef(this.startXRef);\n  }\n\n  get numPages() {\n    let num = 0;\n    if (this.catalog.hasActualNumPages) {\n      num = this.catalog.numPages;\n    } else if (this.xfaFactory) {\n      // num is a Promise.\n      num = this.xfaFactory.getNumPages();\n    } else if (this.linearization) {\n      num = this.linearization.numPages;\n    } else {\n      num = this.catalog.numPages;\n    }\n    return shadow(this, \"numPages\", num);\n  }\n\n  /**\n   * @private\n   */\n  _hasOnlyDocumentSignatures(fields, recursionDepth = 0) {\n    const RECURSION_LIMIT = 10;\n\n    if (!Array.isArray(fields)) {\n      return false;\n    }\n    return fields.every(field => {\n      field = this.xref.fetchIfRef(field);\n      if (!(field instanceof Dict)) {\n        return false;\n      }\n      if (field.has(\"Kids\")) {\n        if (++recursionDepth > RECURSION_LIMIT) {\n          warn(\"_hasOnlyDocumentSignatures: maximum recursion depth reached\");\n          return false;\n        }\n        return this._hasOnlyDocumentSignatures(\n          field.get(\"Kids\"),\n          recursionDepth\n        );\n      }\n      const isSignature = isName(field.get(\"FT\"), \"Sig\");\n      const rectangle = field.get(\"Rect\");\n      const isInvisible =\n        Array.isArray(rectangle) && rectangle.every(value => value === 0);\n      return isSignature && isInvisible;\n    });\n  }\n\n  get xfaData() {\n    const acroForm = this.catalog.acroForm;\n    if (!acroForm) {\n      return null;\n    }\n\n    const xfa = acroForm.get(\"XFA\");\n    const entries = {\n      \"xdp:xdp\": \"\",\n      template: \"\",\n      datasets: \"\",\n      config: \"\",\n      connectionSet: \"\",\n      localeSet: \"\",\n      stylesheet: \"\",\n      \"/xdp:xdp\": \"\",\n    };\n    if (isStream(xfa) && !xfa.isEmpty) {\n      try {\n        entries[\"xdp:xdp\"] = stringToUTF8String(xfa.getString());\n        return entries;\n      } catch (_) {\n        warn(\"XFA - Invalid utf-8 string.\");\n        return null;\n      }\n    }\n\n    if (!Array.isArray(xfa) || xfa.length === 0) {\n      return null;\n    }\n\n    for (let i = 0, ii = xfa.length; i < ii; i += 2) {\n      let name;\n      if (i === 0) {\n        name = \"xdp:xdp\";\n      } else if (i === ii - 2) {\n        name = \"/xdp:xdp\";\n      } else {\n        name = xfa[i];\n      }\n\n      if (!entries.hasOwnProperty(name)) {\n        continue;\n      }\n      const data = this.xref.fetchIfRef(xfa[i + 1]);\n      if (!isStream(data) || data.isEmpty) {\n        continue;\n      }\n      try {\n        entries[name] = stringToUTF8String(data.getString());\n      } catch (_) {\n        warn(\"XFA - Invalid utf-8 string.\");\n        return null;\n      }\n    }\n    return entries;\n  }\n\n  get xfaFactory() {\n    let data;\n    if (\n      this.pdfManager.enableXfa &&\n      this.catalog.needsRendering &&\n      this.formInfo.hasXfa &&\n      !this.formInfo.hasAcroForm\n    ) {\n      data = this.xfaData;\n    }\n    return shadow(this, \"xfaFactory\", data ? new XFAFactory(data) : null);\n  }\n\n  get isPureXfa() {\n    return this.xfaFactory ? this.xfaFactory.isValid() : false;\n  }\n\n  get htmlForXfa() {\n    return this.xfaFactory ? this.xfaFactory.getPages() : null;\n  }\n\n  async loadXfaImages() {\n    const xfaImagesDict = await this.pdfManager.ensureCatalog(\"xfaImages\");\n    if (!xfaImagesDict) {\n      return;\n    }\n\n    const keys = xfaImagesDict.getKeys();\n    const objectLoader = new ObjectLoader(xfaImagesDict, keys, this.xref);\n    await objectLoader.load();\n\n    const xfaImages = new Map();\n    for (const key of keys) {\n      const stream = xfaImagesDict.get(key);\n      if (!isStream(stream)) {\n        continue;\n      }\n      xfaImages.set(key, stream.getBytes());\n    }\n\n    this.xfaFactory.setImages(xfaImages);\n  }\n\n  async loadXfaFonts(handler, task) {\n    const acroForm = await this.pdfManager.ensureCatalog(\"acroForm\");\n    if (!acroForm) {\n      return;\n    }\n    const resources = await acroForm.getAsync(\"DR\");\n    if (!(resources instanceof Dict)) {\n      return;\n    }\n    const objectLoader = new ObjectLoader(resources, [\"Font\"], this.xref);\n    await objectLoader.load();\n\n    const fontRes = resources.get(\"Font\");\n    if (!(fontRes instanceof Dict)) {\n      return;\n    }\n\n    const options = Object.assign(\n      Object.create(null),\n      this.pdfManager.evaluatorOptions\n    );\n    options.useSystemFonts = false;\n\n    const partialEvaluator = new PartialEvaluator({\n      xref: this.xref,\n      handler,\n      pageIndex: -1,\n      idFactory: this._globalIdFactory,\n      fontCache: this.catalog.fontCache,\n      builtInCMapCache: this.catalog.builtInCMapCache,\n      standardFontDataCache: this.catalog.standardFontDataCache,\n      options,\n    });\n    const operatorList = new OperatorList();\n    const pdfFonts = [];\n    const initialState = {\n      get font() {\n        return pdfFonts[pdfFonts.length - 1];\n      },\n      set font(font) {\n        pdfFonts.push(font);\n      },\n      clone() {\n        return this;\n      },\n    };\n\n    const fonts = new Map();\n    fontRes.forEach((fontName, font) => {\n      fonts.set(fontName, font);\n    });\n    const promises = [];\n\n    for (const [fontName, font] of fonts) {\n      const descriptor = font.get(\"FontDescriptor\");\n      if (!(descriptor instanceof Dict)) {\n        continue;\n      }\n      let fontFamily = descriptor.get(\"FontFamily\");\n      // For example, \"Wingdings 3\" is not a valid font name in the css specs.\n      fontFamily = fontFamily.replace(/[ ]+(\\d)/g, \"$1\");\n      const fontWeight = descriptor.get(\"FontWeight\");\n\n      // Angle is expressed in degrees counterclockwise in PDF\n      // when it's clockwise in CSS\n      // (see https://drafts.csswg.org/css-fonts-4/#valdef-font-style-oblique-angle)\n      const italicAngle = -descriptor.get(\"ItalicAngle\");\n      const cssFontInfo = { fontFamily, fontWeight, italicAngle };\n\n      if (!validateCSSFont(cssFontInfo)) {\n        continue;\n      }\n      promises.push(\n        partialEvaluator\n          .handleSetFont(\n            resources,\n            [Name.get(fontName), 1],\n            /* fontRef = */ null,\n            operatorList,\n            task,\n            initialState,\n            /* fallbackFontDict = */ null,\n            /* cssFontInfo = */ cssFontInfo\n          )\n          .catch(function (reason) {\n            warn(`loadXfaFonts: \"${reason}\".`);\n            return null;\n          })\n      );\n    }\n\n    await Promise.all(promises);\n    const missingFonts = this.xfaFactory.setFonts(pdfFonts);\n\n    if (!missingFonts) {\n      return;\n    }\n\n    options.ignoreErrors = true;\n    promises.length = 0;\n    pdfFonts.length = 0;\n\n    const reallyMissingFonts = new Set();\n    for (const missing of missingFonts) {\n      if (!getXfaFontName(`${missing}-Regular`)) {\n        // No substitution available: we'll fallback on Myriad.\n        reallyMissingFonts.add(missing);\n      }\n    }\n\n    if (reallyMissingFonts.size) {\n      missingFonts.push(\"PdfJS-Fallback\");\n    }\n\n    for (const missing of missingFonts) {\n      if (reallyMissingFonts.has(missing)) {\n        continue;\n      }\n      for (const fontInfo of [\n        { name: \"Regular\", fontWeight: 400, italicAngle: 0 },\n        { name: \"Bold\", fontWeight: 700, italicAngle: 0 },\n        { name: \"Italic\", fontWeight: 400, italicAngle: 12 },\n        { name: \"BoldItalic\", fontWeight: 700, italicAngle: 12 },\n      ]) {\n        const name = `${missing}-${fontInfo.name}`;\n        const dict = getXfaFontDict(name);\n\n        promises.push(\n          partialEvaluator\n            .handleSetFont(\n              resources,\n              [Name.get(name), 1],\n              /* fontRef = */ null,\n              operatorList,\n              task,\n              initialState,\n              /* fallbackFontDict = */ dict,\n              /* cssFontInfo = */ {\n                fontFamily: missing,\n                fontWeight: fontInfo.fontWeight,\n                italicAngle: fontInfo.italicAngle,\n              }\n            )\n            .catch(function (reason) {\n              warn(`loadXfaFonts: \"${reason}\".`);\n              return null;\n            })\n        );\n      }\n    }\n\n    await Promise.all(promises);\n    this.xfaFactory.appendFonts(pdfFonts, reallyMissingFonts);\n  }\n\n  async serializeXfaData(annotationStorage) {\n    return this.xfaFactory\n      ? this.xfaFactory.serializeData(annotationStorage)\n      : null;\n  }\n\n  get formInfo() {\n    const formInfo = {\n      hasFields: false,\n      hasAcroForm: false,\n      hasXfa: false,\n      hasSignatures: false,\n    };\n    const acroForm = this.catalog.acroForm;\n    if (!acroForm) {\n      return shadow(this, \"formInfo\", formInfo);\n    }\n\n    try {\n      const fields = acroForm.get(\"Fields\");\n      const hasFields = Array.isArray(fields) && fields.length > 0;\n      formInfo.hasFields = hasFields; // Used by the `fieldObjects` getter.\n\n      // The document contains XFA data if the `XFA` entry is a non-empty\n      // array or stream.\n      const xfa = acroForm.get(\"XFA\");\n      formInfo.hasXfa =\n        (Array.isArray(xfa) && xfa.length > 0) ||\n        (isStream(xfa) && !xfa.isEmpty);\n\n      // The document contains AcroForm data if the `Fields` entry is a\n      // non-empty array and it doesn't consist of only document signatures.\n      // This second check is required for files that don't actually contain\n      // AcroForm data (only XFA data), but that use the `Fields` entry to\n      // store (invisible) document signatures. This can be detected using\n      // the first bit of the `SigFlags` integer (see Table 219 in the\n      // specification).\n      const sigFlags = acroForm.get(\"SigFlags\");\n      const hasSignatures = !!(sigFlags & 0x1);\n      const hasOnlyDocumentSignatures =\n        hasSignatures && this._hasOnlyDocumentSignatures(fields);\n      formInfo.hasAcroForm = hasFields && !hasOnlyDocumentSignatures;\n      formInfo.hasSignatures = hasSignatures;\n    } catch (ex) {\n      if (ex instanceof MissingDataException) {\n        throw ex;\n      }\n      warn(`Cannot fetch form information: \"${ex}\".`);\n    }\n    return shadow(this, \"formInfo\", formInfo);\n  }\n\n  get documentInfo() {\n    const DocumentInfoValidators = {\n      Title: isString,\n      Author: isString,\n      Subject: isString,\n      Keywords: isString,\n      Creator: isString,\n      Producer: isString,\n      CreationDate: isString,\n      ModDate: isString,\n      Trapped: isName,\n    };\n\n    let version = this._version;\n    if (\n      typeof version !== \"string\" ||\n      !PDF_HEADER_VERSION_REGEXP.test(version)\n    ) {\n      warn(`Invalid PDF header version number: ${version}`);\n      version = null;\n    }\n\n    const docInfo = {\n      PDFFormatVersion: version,\n      Language: this.catalog.lang,\n      EncryptFilterName: this.xref.encrypt\n        ? this.xref.encrypt.filterName\n        : null,\n      IsLinearized: !!this.linearization,\n      IsAcroFormPresent: this.formInfo.hasAcroForm,\n      IsXFAPresent: this.formInfo.hasXfa,\n      IsCollectionPresent: !!this.catalog.collection,\n      IsSignaturesPresent: this.formInfo.hasSignatures,\n    };\n\n    let infoDict;\n    try {\n      infoDict = this.xref.trailer.get(\"Info\");\n    } catch (err) {\n      if (err instanceof MissingDataException) {\n        throw err;\n      }\n      info(\"The document information dictionary is invalid.\");\n    }\n\n    if (isDict(infoDict)) {\n      // Fill the document info with valid entries from the specification,\n      // as well as any existing well-formed custom entries.\n      for (const key of infoDict.getKeys()) {\n        const value = infoDict.get(key);\n\n        if (DocumentInfoValidators[key]) {\n          // Make sure the (standard) value conforms to the specification.\n          if (DocumentInfoValidators[key](value)) {\n            docInfo[key] =\n              typeof value !== \"string\" ? value : stringToPDFString(value);\n          } else {\n            info(`Bad value in document info for \"${key}\".`);\n          }\n        } else if (typeof key === \"string\") {\n          // For custom values, only accept white-listed types to prevent\n          // errors that would occur when trying to send non-serializable\n          // objects to the main-thread (for example `Dict` or `Stream`).\n          let customValue;\n          if (isString(value)) {\n            customValue = stringToPDFString(value);\n          } else if (isName(value) || isNum(value) || isBool(value)) {\n            customValue = value;\n          } else {\n            info(`Unsupported value in document info for (custom) \"${key}\".`);\n            continue;\n          }\n\n          if (!docInfo.Custom) {\n            docInfo.Custom = Object.create(null);\n          }\n          docInfo.Custom[key] = customValue;\n        }\n      }\n    }\n    return shadow(this, \"documentInfo\", docInfo);\n  }\n\n  get fingerprints() {\n    function validate(data) {\n      return (\n        typeof data === \"string\" &&\n        data.length > 0 &&\n        data !== EMPTY_FINGERPRINT\n      );\n    }\n\n    function hexString(hash) {\n      const buf = [];\n      for (let i = 0, ii = hash.length; i < ii; i++) {\n        const hex = hash[i].toString(16);\n        buf.push(hex.padStart(2, \"0\"));\n      }\n      return buf.join(\"\");\n    }\n\n    const idArray = this.xref.trailer.get(\"ID\");\n    let hashOriginal, hashModified;\n    if (Array.isArray(idArray) && validate(idArray[0])) {\n      hashOriginal = stringToBytes(idArray[0]);\n\n      if (idArray[1] !== idArray[0] && validate(idArray[1])) {\n        hashModified = stringToBytes(idArray[1]);\n      }\n    } else {\n      hashOriginal = calculateMD5(\n        this.stream.getByteRange(0, FINGERPRINT_FIRST_BYTES),\n        0,\n        FINGERPRINT_FIRST_BYTES\n      );\n    }\n\n    return shadow(this, \"fingerprints\", [\n      hexString(hashOriginal),\n      hashModified ? hexString(hashModified) : null,\n    ]);\n  }\n\n  async _getLinearizationPage(pageIndex) {\n    const { catalog, linearization } = this;\n    if (\n      typeof PDFJSDev === \"undefined\" ||\n      PDFJSDev.test(\"!PRODUCTION || TESTING\")\n    ) {\n      assert(\n        linearization && linearization.pageFirst === pageIndex,\n        \"_getLinearizationPage - invalid pageIndex argument.\"\n      );\n    }\n\n    const ref = Ref.get(linearization.objectNumberFirst, 0);\n    try {\n      const obj = await this.xref.fetchAsync(ref);\n      // Ensure that the object that was found is actually a Page dictionary.\n      if (\n        isDict(obj, \"Page\") ||\n        (isDict(obj) && !obj.has(\"Type\") && obj.has(\"Contents\"))\n      ) {\n        if (ref && !catalog.pageKidsCountCache.has(ref)) {\n          catalog.pageKidsCountCache.put(ref, 1); // Cache the Page reference.\n        }\n        return [obj, ref];\n      }\n      throw new FormatError(\n        \"The Linearization dictionary doesn't point to a valid Page dictionary.\"\n      );\n    } catch (reason) {\n      info(reason);\n      return catalog.getPageDict(pageIndex);\n    }\n  }\n\n  getPage(pageIndex) {\n    const cachedPromise = this._pagePromises.get(pageIndex);\n    if (cachedPromise) {\n      return cachedPromise;\n    }\n    const { catalog, linearization, xfaFactory } = this;\n\n    let promise;\n    if (xfaFactory) {\n      promise = Promise.resolve([Dict.empty, null]);\n    } else if (linearization && linearization.pageFirst === pageIndex) {\n      promise = this._getLinearizationPage(pageIndex);\n    } else {\n      promise = catalog.getPageDict(pageIndex);\n    }\n    promise = promise.then(([pageDict, ref]) => {\n      return new Page({\n        pdfManager: this.pdfManager,\n        xref: this.xref,\n        pageIndex,\n        pageDict,\n        ref,\n        globalIdFactory: this._globalIdFactory,\n        fontCache: catalog.fontCache,\n        builtInCMapCache: catalog.builtInCMapCache,\n        standardFontDataCache: catalog.standardFontDataCache,\n        globalImageCache: catalog.globalImageCache,\n        nonBlendModesSet: catalog.nonBlendModesSet,\n        xfaFactory,\n      });\n    });\n\n    this._pagePromises.set(pageIndex, promise);\n    return promise;\n  }\n\n  async checkFirstPage(recoveryMode = false) {\n    if (recoveryMode) {\n      return;\n    }\n    try {\n      await this.getPage(0);\n    } catch (reason) {\n      if (reason instanceof XRefEntryException) {\n        // Clear out the various caches to ensure that we haven't stored any\n        // inconsistent and/or incorrect state, since that could easily break\n        // subsequent `this.getPage` calls.\n        this._pagePromises.delete(0);\n        await this.cleanup();\n\n        throw new XRefParseException();\n      }\n    }\n  }\n\n  async checkLastPage(recoveryMode = false) {\n    const { catalog, pdfManager } = this;\n\n    catalog.setActualNumPages(); // Ensure that it's always reset.\n    let numPages;\n\n    try {\n      await Promise.all([\n        pdfManager.ensureDoc(\"xfaFactory\"),\n        pdfManager.ensureDoc(\"linearization\"),\n        pdfManager.ensureCatalog(\"numPages\"),\n      ]);\n\n      if (this.xfaFactory) {\n        return; // The Page count is always calculated for XFA-documents.\n      } else if (this.linearization) {\n        numPages = this.linearization.numPages;\n      } else {\n        numPages = catalog.numPages;\n      }\n\n      if (!Number.isInteger(numPages)) {\n        throw new FormatError(\"Page count is not an integer.\");\n      } else if (numPages <= 1) {\n        return;\n      }\n      await this.getPage(numPages - 1);\n    } catch (reason) {\n      // Clear out the various caches to ensure that we haven't stored any\n      // inconsistent and/or incorrect state, since that could easily break\n      // subsequent `this.getPage` calls.\n      this._pagePromises.delete(numPages - 1);\n      await this.cleanup();\n\n      if (reason instanceof XRefEntryException && !recoveryMode) {\n        throw new XRefParseException();\n      }\n      warn(`checkLastPage - invalid /Pages tree /Count: ${numPages}.`);\n\n      let pagesTree;\n      try {\n        pagesTree = await pdfManager.ensureCatalog(\"getAllPageDicts\", [\n          recoveryMode,\n        ]);\n      } catch (reasonAll) {\n        if (reasonAll instanceof XRefEntryException && !recoveryMode) {\n          throw new XRefParseException();\n        }\n        catalog.setActualNumPages(1);\n        return;\n      }\n\n      for (const [pageIndex, [pageDict, ref]] of pagesTree) {\n        let promise;\n        if (pageDict instanceof Error) {\n          promise = Promise.reject(pageDict);\n\n          // Prevent \"uncaught exception: Object\"-messages in the console.\n          promise.catch(() => {});\n        } else {\n          promise = Promise.resolve(\n            new Page({\n              pdfManager,\n              xref: this.xref,\n              pageIndex,\n              pageDict,\n              ref,\n              globalIdFactory: this._globalIdFactory,\n              fontCache: catalog.fontCache,\n              builtInCMapCache: catalog.builtInCMapCache,\n              standardFontDataCache: catalog.standardFontDataCache,\n              globalImageCache: catalog.globalImageCache,\n              nonBlendModesSet: catalog.nonBlendModesSet,\n              xfaFactory: null,\n            })\n          );\n        }\n\n        this._pagePromises.set(pageIndex, promise);\n      }\n      catalog.setActualNumPages(pagesTree.size);\n    }\n  }\n\n  fontFallback(id, handler) {\n    return this.catalog.fontFallback(id, handler);\n  }\n\n  async cleanup(manuallyTriggered = false) {\n    return this.catalog\n      ? this.catalog.cleanup(manuallyTriggered)\n      : clearPrimitiveCaches();\n  }\n\n  /**\n   * @private\n   */\n  _collectFieldObjects(name, fieldRef, promises) {\n    const field = this.xref.fetchIfRef(fieldRef);\n    if (field.has(\"T\")) {\n      const partName = stringToPDFString(field.get(\"T\"));\n      if (name === \"\") {\n        name = partName;\n      } else {\n        name = `${name}.${partName}`;\n      }\n    }\n\n    if (!promises.has(name)) {\n      promises.set(name, []);\n    }\n    promises.get(name).push(\n      AnnotationFactory.create(\n        this.xref,\n        fieldRef,\n        this.pdfManager,\n        this._localIdFactory,\n        /* collectFields */ true\n      )\n        .then(annotation => annotation && annotation.getFieldObject())\n        .catch(function (reason) {\n          warn(`_collectFieldObjects: \"${reason}\".`);\n          return null;\n        })\n    );\n\n    if (field.has(\"Kids\")) {\n      const kids = field.get(\"Kids\");\n      for (const kid of kids) {\n        this._collectFieldObjects(name, kid, promises);\n      }\n    }\n  }\n\n  get fieldObjects() {\n    if (!this.formInfo.hasFields) {\n      return shadow(this, \"fieldObjects\", Promise.resolve(null));\n    }\n\n    const allFields = Object.create(null);\n    const fieldPromises = new Map();\n    for (const fieldRef of this.catalog.acroForm.get(\"Fields\")) {\n      this._collectFieldObjects(\"\", fieldRef, fieldPromises);\n    }\n\n    const allPromises = [];\n    for (const [name, promises] of fieldPromises) {\n      allPromises.push(\n        Promise.all(promises).then(fields => {\n          fields = fields.filter(field => !!field);\n          if (fields.length > 0) {\n            allFields[name] = fields;\n          }\n        })\n      );\n    }\n\n    return shadow(\n      this,\n      \"fieldObjects\",\n      Promise.all(allPromises).then(() => allFields)\n    );\n  }\n\n  get hasJSActions() {\n    const promise = this.pdfManager.ensureDoc(\"_parseHasJSActions\");\n    return shadow(this, \"hasJSActions\", promise);\n  }\n\n  /**\n   * @private\n   */\n  async _parseHasJSActions() {\n    const [catalogJsActions, fieldObjects] = await Promise.all([\n      this.pdfManager.ensureCatalog(\"jsActions\"),\n      this.pdfManager.ensureDoc(\"fieldObjects\"),\n    ]);\n\n    if (catalogJsActions) {\n      return true;\n    }\n    if (fieldObjects) {\n      return Object.values(fieldObjects).some(fieldObject =>\n        fieldObject.some(object => object.actions !== null)\n      );\n    }\n    return false;\n  }\n\n  get calculationOrderIds() {\n    const acroForm = this.catalog.acroForm;\n    if (!acroForm || !acroForm.has(\"CO\")) {\n      return shadow(this, \"calculationOrderIds\", null);\n    }\n\n    const calculationOrder = acroForm.get(\"CO\");\n    if (!Array.isArray(calculationOrder) || calculationOrder.length === 0) {\n      return shadow(this, \"calculationOrderIds\", null);\n    }\n\n    const ids = calculationOrder.filter(isRef).map(ref => ref.toString());\n    if (ids.length === 0) {\n      return shadow(this, \"calculationOrderIds\", null);\n    }\n    return shadow(this, \"calculationOrderIds\", ids);\n  }\n}\n\nexport { Page, PDFDocument };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n  CalibriBoldFactors,\n  CalibriBoldItalicFactors,\n  CalibriBoldItalicMetrics,\n  CalibriBoldMetrics,\n  CalibriItalicFactors,\n  CalibriItalicMetrics,\n  CalibriRegularFactors,\n  CalibriRegularMetrics,\n} from \"./calibri_factors.js\";\nimport { Dict, Name } from \"./primitives.js\";\nimport {\n  HelveticaBoldFactors,\n  HelveticaBoldItalicFactors,\n  HelveticaBoldItalicMetrics,\n  HelveticaBoldMetrics,\n  HelveticaItalicFactors,\n  HelveticaItalicMetrics,\n  HelveticaRegularFactors,\n  HelveticaRegularMetrics,\n} from \"./helvetica_factors.js\";\nimport {\n  LiberationSansBoldItalicMapping,\n  LiberationSansBoldItalicWidths,\n  LiberationSansBoldMapping,\n  LiberationSansBoldWidths,\n  LiberationSansItalicMapping,\n  LiberationSansItalicWidths,\n  LiberationSansRegularMapping,\n  LiberationSansRegularWidths,\n} from \"./liberationsans_widths.js\";\nimport {\n  MyriadProBoldFactors,\n  MyriadProBoldItalicFactors,\n  MyriadProBoldItalicMetrics,\n  MyriadProBoldMetrics,\n  MyriadProItalicFactors,\n  MyriadProItalicMetrics,\n  MyriadProRegularFactors,\n  MyriadProRegularMetrics,\n} from \"./myriadpro_factors.js\";\nimport {\n  SegoeuiBoldFactors,\n  SegoeuiBoldItalicFactors,\n  SegoeuiBoldItalicMetrics,\n  SegoeuiBoldMetrics,\n  SegoeuiItalicFactors,\n  SegoeuiItalicMetrics,\n  SegoeuiRegularFactors,\n  SegoeuiRegularMetrics,\n} from \"./segoeui_factors.js\";\nimport { getLookupTableFactory } from \"./core_utils.js\";\nimport { normalizeFontName } from \"./fonts_utils.js\";\n\nconst getXFAFontMap = getLookupTableFactory(function (t) {\n  t[\"MyriadPro-Regular\"] = t[\"PdfJS-Fallback-Regular\"] = {\n    name: \"LiberationSans-Regular\",\n    factors: MyriadProRegularFactors,\n    baseWidths: LiberationSansRegularWidths,\n    baseMapping: LiberationSansRegularMapping,\n    metrics: MyriadProRegularMetrics,\n  };\n  t[\"MyriadPro-Bold\"] = t[\"PdfJS-Fallback-Bold\"] = {\n    name: \"LiberationSans-Bold\",\n    factors: MyriadProBoldFactors,\n    baseWidths: LiberationSansBoldWidths,\n    baseMapping: LiberationSansBoldMapping,\n    metrics: MyriadProBoldMetrics,\n  };\n  t[\"MyriadPro-It\"] =\n    t[\"MyriadPro-Italic\"] =\n    t[\"PdfJS-Fallback-Italic\"] =\n      {\n        name: \"LiberationSans-Italic\",\n        factors: MyriadProItalicFactors,\n        baseWidths: LiberationSansItalicWidths,\n        baseMapping: LiberationSansItalicMapping,\n        metrics: MyriadProItalicMetrics,\n      };\n  t[\"MyriadPro-BoldIt\"] =\n    t[\"MyriadPro-BoldItalic\"] =\n    t[\"PdfJS-Fallback-BoldItalic\"] =\n      {\n        name: \"LiberationSans-BoldItalic\",\n        factors: MyriadProBoldItalicFactors,\n        baseWidths: LiberationSansBoldItalicWidths,\n        baseMapping: LiberationSansBoldItalicMapping,\n        metrics: MyriadProBoldItalicMetrics,\n      };\n  t.ArialMT =\n    t.Arial =\n    t[\"Arial-Regular\"] =\n      {\n        name: \"LiberationSans-Regular\",\n        baseWidths: LiberationSansRegularWidths,\n        baseMapping: LiberationSansRegularMapping,\n      };\n  t[\"Arial-BoldMT\"] = t[\"Arial-Bold\"] = {\n    name: \"LiberationSans-Bold\",\n    baseWidths: LiberationSansBoldWidths,\n    baseMapping: LiberationSansBoldMapping,\n  };\n  t[\"Arial-ItalicMT\"] = t[\"Arial-Italic\"] = {\n    name: \"LiberationSans-Italic\",\n    baseWidths: LiberationSansItalicWidths,\n    baseMapping: LiberationSansItalicMapping,\n  };\n  t[\"Arial-BoldItalicMT\"] = t[\"Arial-BoldItalic\"] = {\n    name: \"LiberationSans-BoldItalic\",\n    baseWidths: LiberationSansBoldItalicWidths,\n    baseMapping: LiberationSansBoldItalicMapping,\n  };\n  t[\"Calibri-Regular\"] = {\n    name: \"LiberationSans-Regular\",\n    factors: CalibriRegularFactors,\n    baseWidths: LiberationSansRegularWidths,\n    baseMapping: LiberationSansRegularMapping,\n    metrics: CalibriRegularMetrics,\n  };\n  t[\"Calibri-Bold\"] = {\n    name: \"LiberationSans-Bold\",\n    factors: CalibriBoldFactors,\n    baseWidths: LiberationSansBoldWidths,\n    baseMapping: LiberationSansBoldMapping,\n    metrics: CalibriBoldMetrics,\n  };\n  t[\"Calibri-Italic\"] = {\n    name: \"LiberationSans-Italic\",\n    factors: CalibriItalicFactors,\n    baseWidths: LiberationSansItalicWidths,\n    baseMapping: LiberationSansItalicMapping,\n    metrics: CalibriItalicMetrics,\n  };\n  t[\"Calibri-BoldItalic\"] = {\n    name: \"LiberationSans-BoldItalic\",\n    factors: CalibriBoldItalicFactors,\n    baseWidths: LiberationSansBoldItalicWidths,\n    baseMapping: LiberationSansBoldItalicMapping,\n    metrics: CalibriBoldItalicMetrics,\n  };\n  t[\"Segoeui-Regular\"] = {\n    name: \"LiberationSans-Regular\",\n    factors: SegoeuiRegularFactors,\n    baseWidths: LiberationSansRegularWidths,\n    baseMapping: LiberationSansRegularMapping,\n    metrics: SegoeuiRegularMetrics,\n  };\n  t[\"Segoeui-Bold\"] = {\n    name: \"LiberationSans-Bold\",\n    factors: SegoeuiBoldFactors,\n    baseWidths: LiberationSansBoldWidths,\n    baseMapping: LiberationSansBoldMapping,\n    metrics: SegoeuiBoldMetrics,\n  };\n  t[\"Segoeui-Italic\"] = {\n    name: \"LiberationSans-Italic\",\n    factors: SegoeuiItalicFactors,\n    baseWidths: LiberationSansItalicWidths,\n    baseMapping: LiberationSansItalicMapping,\n    metrics: SegoeuiItalicMetrics,\n  };\n  t[\"Segoeui-BoldItalic\"] = {\n    name: \"LiberationSans-BoldItalic\",\n    factors: SegoeuiBoldItalicFactors,\n    baseWidths: LiberationSansBoldItalicWidths,\n    baseMapping: LiberationSansBoldItalicMapping,\n    metrics: SegoeuiBoldItalicMetrics,\n  };\n  t[\"Helvetica-Regular\"] = t.Helvetica = {\n    name: \"LiberationSans-Regular\",\n    factors: HelveticaRegularFactors,\n    baseWidths: LiberationSansRegularWidths,\n    baseMapping: LiberationSansRegularMapping,\n    metrics: HelveticaRegularMetrics,\n  };\n  t[\"Helvetica-Bold\"] = {\n    name: \"LiberationSans-Bold\",\n    factors: HelveticaBoldFactors,\n    baseWidths: LiberationSansBoldWidths,\n    baseMapping: LiberationSansBoldMapping,\n    metrics: HelveticaBoldMetrics,\n  };\n  t[\"Helvetica-Italic\"] = {\n    name: \"LiberationSans-Italic\",\n    factors: HelveticaItalicFactors,\n    baseWidths: LiberationSansItalicWidths,\n    baseMapping: LiberationSansItalicMapping,\n    metrics: HelveticaItalicMetrics,\n  };\n  t[\"Helvetica-BoldItalic\"] = {\n    name: \"LiberationSans-BoldItalic\",\n    factors: HelveticaBoldItalicFactors,\n    baseWidths: LiberationSansBoldItalicWidths,\n    baseMapping: LiberationSansBoldItalicMapping,\n    metrics: HelveticaBoldItalicMetrics,\n  };\n});\n\nfunction getXfaFontName(name) {\n  const fontName = normalizeFontName(name);\n  const fontMap = getXFAFontMap();\n  return fontMap[fontName];\n}\n\nfunction getXfaFontWidths(name) {\n  const info = getXfaFontName(name);\n  if (!info) {\n    return null;\n  }\n\n  const { baseWidths, baseMapping, factors } = info;\n  let rescaledBaseWidths;\n  if (!factors) {\n    rescaledBaseWidths = baseWidths;\n  } else {\n    rescaledBaseWidths = baseWidths.map((w, i) => w * factors[i]);\n  }\n\n  let currentCode = -2;\n  let currentArray;\n\n  // Widths array for composite font is:\n  // CharCode1 [10, 20, 30] ...\n  // which means:\n  //   - CharCode1 has a width equal to 10\n  //   - CharCode1+1 has a width equal to 20\n  //   - CharCode1+2 has a width equal to 30\n  //\n  // The baseMapping array contains a map for glyph index to unicode.\n  // So from baseMapping we'll get sorted unicodes and their positions\n  // (i.e. glyph indices) and then we put widths in an array for the\n  // the consecutive unicodes.\n  const newWidths = [];\n  for (const [unicode, glyphIndex] of baseMapping\n    .map(\n      (charUnicode, index) => [\n        charUnicode,\n        index,\n      ] /* collect unicode and glyph index */\n    )\n    .sort(\n      ([unicode1], [unicode2]) =>\n        unicode1 - unicode2 /* order by unicode only */\n    )) {\n    if (unicode === -1) {\n      continue;\n    }\n\n    if (unicode === currentCode + 1) {\n      currentArray.push(rescaledBaseWidths[glyphIndex]);\n      currentCode += 1;\n    } else {\n      currentCode = unicode;\n      currentArray = [rescaledBaseWidths[glyphIndex]];\n      newWidths.push(unicode, currentArray);\n    }\n  }\n\n  return newWidths;\n}\n\nfunction getXfaFontDict(name) {\n  const widths = getXfaFontWidths(name);\n  const dict = new Dict(null);\n  dict.set(\"BaseFont\", Name.get(name));\n  dict.set(\"Type\", Name.get(\"Font\"));\n  dict.set(\"Subtype\", Name.get(\"CIDFontType2\"));\n  dict.set(\"Encoding\", Name.get(\"Identity-H\"));\n  dict.set(\"CIDToGIDMap\", Name.get(\"Identity\"));\n  dict.set(\"W\", widths);\n  dict.set(\"FirstChar\", widths[0]);\n  dict.set(\n    \"LastChar\",\n    widths[widths.length - 2] + widths[widths.length - 1].length - 1\n  );\n  const descriptor = new Dict(null);\n  dict.set(\"FontDescriptor\", descriptor);\n  const systemInfo = new Dict(null);\n  systemInfo.set(\"Ordering\", \"Identity\");\n  systemInfo.set(\"Registry\", \"Adobe\");\n  systemInfo.set(\"Supplement\", 0);\n  dict.set(\"CIDSystemInfo\", systemInfo);\n\n  return dict;\n}\n\nexport { getXfaFontDict, getXfaFontName };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// Factors to rescale LiberationSans-Bold.ttf to have the same\n// metrics as calibrib.ttf.\nconst CalibriBoldFactors = [\n  1.3877, 1, 1, 1, 0.97801, 0.92482, 0.89552, 0.91133, 0.81988, 0.97566,\n  0.98152, 0.93548, 0.93548, 1.2798, 0.85284, 0.92794, 1, 0.96134, 1.54657,\n  0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133,\n  0.91133, 0.91133, 0.82845, 0.82845, 0.85284, 0.85284, 0.85284, 0.75859,\n  0.92138, 0.83908, 0.7762, 0.73293, 0.87289, 0.73133, 0.7514, 0.81921, 0.87356,\n  0.95958, 0.59526, 0.75727, 0.69225, 1.04924, 0.9121, 0.86943, 0.79795,\n  0.88198, 0.77958, 0.70864, 0.81055, 0.90399, 0.88653, 0.96017, 0.82577,\n  0.77892, 0.78257, 0.97507, 1.54657, 0.97507, 0.85284, 0.89552, 0.90176,\n  0.88762, 0.8785, 0.75241, 0.8785, 0.90518, 0.95015, 0.77618, 0.8785, 0.88401,\n  0.91916, 0.86304, 0.88401, 0.91488, 0.8785, 0.8801, 0.8785, 0.8785, 0.91343,\n  0.7173, 1.04106, 0.8785, 0.85075, 0.95794, 0.82616, 0.85162, 0.79492, 0.88331,\n  1.69808, 0.88331, 0.85284, 0.97801, 0.89552, 0.91133, 0.89552, 0.91133,\n  1.7801, 0.89552, 1.24487, 1.13254, 1.12401, 0.96839, 0.85284, 0.68787,\n  0.70645, 0.85592, 0.90747, 1.01466, 1.0088, 0.90323, 1, 1.07463, 1, 0.91056,\n  0.75806, 1.19118, 0.96839, 0.78864, 0.82845, 0.84133, 0.75859, 0.83908,\n  0.83908, 0.83908, 0.83908, 0.83908, 0.83908, 0.77539, 0.73293, 0.73133,\n  0.73133, 0.73133, 0.73133, 0.95958, 0.95958, 0.95958, 0.95958, 0.88506,\n  0.9121, 0.86943, 0.86943, 0.86943, 0.86943, 0.86943, 0.85284, 0.87508,\n  0.90399, 0.90399, 0.90399, 0.90399, 0.77892, 0.79795, 0.90807, 0.88762,\n  0.88762, 0.88762, 0.88762, 0.88762, 0.88762, 0.8715, 0.75241, 0.90518,\n  0.90518, 0.90518, 0.90518, 0.88401, 0.88401, 0.88401, 0.88401, 0.8785, 0.8785,\n  0.8801, 0.8801, 0.8801, 0.8801, 0.8801, 0.90747, 0.89049, 0.8785, 0.8785,\n  0.8785, 0.8785, 0.85162, 0.8785, 0.85162, 0.83908, 0.88762, 0.83908, 0.88762,\n  0.83908, 0.88762, 0.73293, 0.75241, 0.73293, 0.75241, 0.73293, 0.75241,\n  0.73293, 0.75241, 0.87289, 0.83016, 0.88506, 0.93125, 0.73133, 0.90518,\n  0.73133, 0.90518, 0.73133, 0.90518, 0.73133, 0.90518, 0.73133, 0.90518,\n  0.81921, 0.77618, 0.81921, 0.77618, 0.81921, 0.77618, 1, 1, 0.87356, 0.8785,\n  0.91075, 0.89608, 0.95958, 0.88401, 0.95958, 0.88401, 0.95958, 0.88401,\n  0.95958, 0.88401, 0.95958, 0.88401, 0.76229, 0.90167, 0.59526, 0.91916, 1, 1,\n  0.86304, 0.69225, 0.88401, 1, 1, 0.70424, 0.79468, 0.91926, 0.88175, 0.70823,\n  0.94903, 0.9121, 0.8785, 1, 1, 0.9121, 0.8785, 0.87802, 0.88656, 0.8785,\n  0.86943, 0.8801, 0.86943, 0.8801, 0.86943, 0.8801, 0.87402, 0.89291, 0.77958,\n  0.91343, 1, 1, 0.77958, 0.91343, 0.70864, 0.7173, 0.70864, 0.7173, 0.70864,\n  0.7173, 0.70864, 0.7173, 1, 1, 0.81055, 0.75841, 0.81055, 1.06452, 0.90399,\n  0.8785, 0.90399, 0.8785, 0.90399, 0.8785, 0.90399, 0.8785, 0.90399, 0.8785,\n  0.90399, 0.8785, 0.96017, 0.95794, 0.77892, 0.85162, 0.77892, 0.78257,\n  0.79492, 0.78257, 0.79492, 0.78257, 0.79492, 0.9297, 0.56892, 0.83908,\n  0.88762, 0.77539, 0.8715, 0.87508, 0.89049, 1, 1, 0.81055, 1.04106, 1.20528,\n  1.20528, 1, 1.15543, 0.70674, 0.98387, 0.94721, 1.33431, 1.45894, 0.95161,\n  1.06303, 0.83908, 0.80352, 0.57184, 0.6965, 0.56289, 0.82001, 0.56029,\n  0.81235, 1.02988, 0.83908, 0.7762, 0.68156, 0.80367, 0.73133, 0.78257,\n  0.87356, 0.86943, 0.95958, 0.75727, 0.89019, 1.04924, 0.9121, 0.7648, 0.86943,\n  0.87356, 0.79795, 0.78275, 0.81055, 0.77892, 0.9762, 0.82577, 0.99819,\n  0.84896, 0.95958, 0.77892, 0.96108, 1.01407, 0.89049, 1.02988, 0.94211,\n  0.96108, 0.8936, 0.84021, 0.87842, 0.96399, 0.79109, 0.89049, 1.00813,\n  1.02988, 0.86077, 0.87445, 0.92099, 0.84723, 0.86513, 0.8801, 0.75638,\n  0.85714, 0.78216, 0.79586, 0.87965, 0.94211, 0.97747, 0.78287, 0.97926,\n  0.84971, 1.02988, 0.94211, 0.8801, 0.94211, 0.84971, 0.73133, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 0.90264, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  0.90518, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.90548, 1, 1, 1, 1, 1, 1,\n  0.96017, 0.95794, 0.96017, 0.95794, 0.96017, 0.95794, 0.77892, 0.85162, 1, 1,\n  0.89552, 0.90527, 1, 0.90363, 0.92794, 0.92794, 0.92794, 0.92794, 0.87012,\n  0.87012, 0.87012, 0.89552, 0.89552, 1.42259, 0.71143, 1.06152, 1, 1, 1.03372,\n  1.03372, 0.97171, 1.4956, 2.2807, 0.93835, 0.83406, 0.91133, 0.84107, 0.91133,\n  1, 1, 1, 0.72021, 1, 1.23108, 0.83489, 0.88525, 0.88525, 0.81499, 0.90527,\n  1.81055, 0.90527, 1.81055, 1.31006, 1.53711, 0.94434, 1.08696, 1, 0.95018,\n  0.77192, 0.85284, 0.90747, 1.17534, 0.69825, 0.9716, 1.37077, 0.90747,\n  0.90747, 0.85356, 0.90747, 0.90747, 1.44947, 0.85284, 0.8941, 0.8941, 0.70572,\n  0.8, 0.70572, 0.70572, 0.70572, 0.70572, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 0.99862, 0.99862, 1, 1, 1, 1, 1, 1.08004, 0.91027, 1, 1, 1,\n  0.99862, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.90727, 0.90727, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n];\nconst CalibriBoldMetrics = { lineHeight: 1.2207, lineGap: 0.2207 };\n\n// Factors to rescale LiberationSans-BoldItalic.ttf to have the same\n// metrics as calibriz.ttf.\nconst CalibriBoldItalicFactors = [\n  1.3877, 1, 1, 1, 0.97801, 0.92482, 0.89552, 0.91133, 0.81988, 0.97566,\n  0.98152, 0.93548, 0.93548, 1.2798, 0.85284, 0.92794, 1, 0.96134, 1.56239,\n  0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133,\n  0.91133, 0.91133, 0.82845, 0.82845, 0.85284, 0.85284, 0.85284, 0.75859,\n  0.92138, 0.83908, 0.7762, 0.71805, 0.87289, 0.73133, 0.7514, 0.81921, 0.87356,\n  0.95958, 0.59526, 0.75727, 0.69225, 1.04924, 0.90872, 0.85938, 0.79795,\n  0.87068, 0.77958, 0.69766, 0.81055, 0.90399, 0.88653, 0.96068, 0.82577,\n  0.77892, 0.78257, 0.97507, 1.529, 0.97507, 0.85284, 0.89552, 0.90176, 0.94908,\n  0.86411, 0.74012, 0.86411, 0.88323, 0.95015, 0.86411, 0.86331, 0.88401,\n  0.91916, 0.86304, 0.88401, 0.9039, 0.86331, 0.86331, 0.86411, 0.86411,\n  0.90464, 0.70852, 1.04106, 0.86331, 0.84372, 0.95794, 0.82616, 0.84548,\n  0.79492, 0.88331, 1.69808, 0.88331, 0.85284, 0.97801, 0.89552, 0.91133,\n  0.89552, 0.91133, 1.7801, 0.89552, 1.24487, 1.13254, 1.19129, 0.96839,\n  0.85284, 0.68787, 0.70645, 0.85592, 0.90747, 1.01466, 1.0088, 0.90323, 1,\n  1.07463, 1, 0.91056, 0.75806, 1.19118, 0.96839, 0.78864, 0.82845, 0.84133,\n  0.75859, 0.83908, 0.83908, 0.83908, 0.83908, 0.83908, 0.83908, 0.77539,\n  0.71805, 0.73133, 0.73133, 0.73133, 0.73133, 0.95958, 0.95958, 0.95958,\n  0.95958, 0.88506, 0.90872, 0.85938, 0.85938, 0.85938, 0.85938, 0.85938,\n  0.85284, 0.87068, 0.90399, 0.90399, 0.90399, 0.90399, 0.77892, 0.79795,\n  0.90807, 0.94908, 0.94908, 0.94908, 0.94908, 0.94908, 0.94908, 0.85887,\n  0.74012, 0.88323, 0.88323, 0.88323, 0.88323, 0.88401, 0.88401, 0.88401,\n  0.88401, 0.8785, 0.86331, 0.86331, 0.86331, 0.86331, 0.86331, 0.86331,\n  0.90747, 0.89049, 0.86331, 0.86331, 0.86331, 0.86331, 0.84548, 0.86411,\n  0.84548, 0.83908, 0.94908, 0.83908, 0.94908, 0.83908, 0.94908, 0.71805,\n  0.74012, 0.71805, 0.74012, 0.71805, 0.74012, 0.71805, 0.74012, 0.87289,\n  0.79538, 0.88506, 0.92726, 0.73133, 0.88323, 0.73133, 0.88323, 0.73133,\n  0.88323, 0.73133, 0.88323, 0.73133, 0.88323, 0.81921, 0.86411, 0.81921,\n  0.86411, 0.81921, 0.86411, 1, 1, 0.87356, 0.86331, 0.91075, 0.8777, 0.95958,\n  0.88401, 0.95958, 0.88401, 0.95958, 0.88401, 0.95958, 0.88401, 0.95958,\n  0.88401, 0.76467, 0.90167, 0.59526, 0.91916, 1, 1, 0.86304, 0.69225, 0.88401,\n  1, 1, 0.70424, 0.77312, 0.91926, 0.88175, 0.70823, 0.94903, 0.90872, 0.86331,\n  1, 1, 0.90872, 0.86331, 0.86906, 0.88116, 0.86331, 0.85938, 0.86331, 0.85938,\n  0.86331, 0.85938, 0.86331, 0.87402, 0.86549, 0.77958, 0.90464, 1, 1, 0.77958,\n  0.90464, 0.69766, 0.70852, 0.69766, 0.70852, 0.69766, 0.70852, 0.69766,\n  0.70852, 1, 1, 0.81055, 0.75841, 0.81055, 1.06452, 0.90399, 0.86331, 0.90399,\n  0.86331, 0.90399, 0.86331, 0.90399, 0.86331, 0.90399, 0.86331, 0.90399,\n  0.86331, 0.96068, 0.95794, 0.77892, 0.84548, 0.77892, 0.78257, 0.79492,\n  0.78257, 0.79492, 0.78257, 0.79492, 0.9297, 0.56892, 0.83908, 0.94908,\n  0.77539, 0.85887, 0.87068, 0.89049, 1, 1, 0.81055, 1.04106, 1.20528, 1.20528,\n  1, 1.15543, 0.70088, 0.98387, 0.94721, 1.33431, 1.45894, 0.95161, 1.48387,\n  0.83908, 0.80352, 0.57118, 0.6965, 0.56347, 0.79179, 0.55853, 0.80346,\n  1.02988, 0.83908, 0.7762, 0.67174, 0.86036, 0.73133, 0.78257, 0.87356,\n  0.86441, 0.95958, 0.75727, 0.89019, 1.04924, 0.90872, 0.74889, 0.85938,\n  0.87891, 0.79795, 0.7957, 0.81055, 0.77892, 0.97447, 0.82577, 0.97466,\n  0.87179, 0.95958, 0.77892, 0.94252, 0.95612, 0.8753, 1.02988, 0.92733,\n  0.94252, 0.87411, 0.84021, 0.8728, 0.95612, 0.74081, 0.8753, 1.02189, 1.02988,\n  0.84814, 0.87445, 0.91822, 0.84723, 0.85668, 0.86331, 0.81344, 0.87581,\n  0.76422, 0.82046, 0.96057, 0.92733, 0.99375, 0.78022, 0.95452, 0.86015,\n  1.02988, 0.92733, 0.86331, 0.92733, 0.86015, 0.73133, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 0.90631, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.88323, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.85174, 1, 1, 1, 1, 1, 1, 0.96068, 0.95794,\n  0.96068, 0.95794, 0.96068, 0.95794, 0.77892, 0.84548, 1, 1, 0.89552, 0.90527,\n  1, 0.90363, 0.92794, 0.92794, 0.92794, 0.89807, 0.87012, 0.87012, 0.87012,\n  0.89552, 0.89552, 1.42259, 0.71094, 1.06152, 1, 1, 1.03372, 1.03372, 0.97171,\n  1.4956, 2.2807, 0.92972, 0.83406, 0.91133, 0.83326, 0.91133, 1, 1, 1, 0.72021,\n  1, 1.23108, 0.83489, 0.88525, 0.88525, 0.81499, 0.90616, 1.81055, 0.90527,\n  1.81055, 1.3107, 1.53711, 0.94434, 1.08696, 1, 0.95018, 0.77192, 0.85284,\n  0.90747, 1.17534, 0.69825, 0.9716, 1.37077, 0.90747, 0.90747, 0.85356,\n  0.90747, 0.90747, 1.44947, 0.85284, 0.8941, 0.8941, 0.70572, 0.8, 0.70572,\n  0.70572, 0.70572, 0.70572, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 0.99862, 0.99862, 1, 1, 1, 1, 1, 1.08004, 0.91027, 1, 1, 1, 0.99862, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.90727, 0.90727, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1,\n];\nconst CalibriBoldItalicMetrics = { lineHeight: 1.2207, lineGap: 0.2207 };\n\n// Factors to rescale LiberationSans-Italic.ttf to have the same\n// metrics as calibrii.ttf.\nconst CalibriItalicFactors = [\n  1.3877, 1, 1, 1, 1.17223, 1.1293, 0.89552, 0.91133, 0.80395, 1.02269, 1.15601,\n  0.91056, 0.91056, 1.2798, 0.85284, 0.89807, 1, 0.90861, 1.39543, 0.91133,\n  0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133,\n  0.91133, 0.96309, 0.96309, 0.85284, 0.85284, 0.85284, 0.83319, 0.88071,\n  0.8675, 0.81552, 0.72346, 0.85193, 0.73206, 0.7522, 0.81105, 0.86275, 0.90685,\n  0.6377, 0.77892, 0.75593, 1.02638, 0.89249, 0.84118, 0.77452, 0.85374,\n  0.75186, 0.67789, 0.79776, 0.88844, 0.85066, 0.94309, 0.77818, 0.7306,\n  0.76659, 1.10369, 1.38313, 1.10369, 1.06139, 0.89552, 0.8739, 0.9245, 0.9245,\n  0.83203, 0.9245, 0.85865, 1.09842, 0.9245, 0.9245, 1.03297, 1.07692, 0.90918,\n  1.03297, 0.94959, 0.9245, 0.92274, 0.9245, 0.9245, 1.02933, 0.77832, 1.20562,\n  0.9245, 0.8916, 0.98986, 0.86621, 0.89453, 0.79004, 0.94152, 1.77256, 0.94152,\n  0.85284, 0.97801, 0.89552, 0.91133, 0.89552, 0.91133, 1.91729, 0.89552,\n  1.17889, 1.13254, 1.16359, 0.92098, 0.85284, 0.68787, 0.71353, 0.84737,\n  0.90747, 1.0088, 1.0044, 0.87683, 1, 1.09091, 1, 0.92229, 0.739, 1.15642,\n  0.92098, 0.76288, 0.80504, 0.80972, 0.75859, 0.8675, 0.8675, 0.8675, 0.8675,\n  0.8675, 0.8675, 0.76318, 0.72346, 0.73206, 0.73206, 0.73206, 0.73206, 0.90685,\n  0.90685, 0.90685, 0.90685, 0.86477, 0.89249, 0.84118, 0.84118, 0.84118,\n  0.84118, 0.84118, 0.85284, 0.84557, 0.88844, 0.88844, 0.88844, 0.88844,\n  0.7306, 0.77452, 0.86331, 0.9245, 0.9245, 0.9245, 0.9245, 0.9245, 0.9245,\n  0.84843, 0.83203, 0.85865, 0.85865, 0.85865, 0.85865, 0.82601, 0.82601,\n  0.82601, 0.82601, 0.94469, 0.9245, 0.92274, 0.92274, 0.92274, 0.92274,\n  0.92274, 0.90747, 0.86651, 0.9245, 0.9245, 0.9245, 0.9245, 0.89453, 0.9245,\n  0.89453, 0.8675, 0.9245, 0.8675, 0.9245, 0.8675, 0.9245, 0.72346, 0.83203,\n  0.72346, 0.83203, 0.72346, 0.83203, 0.72346, 0.83203, 0.85193, 0.8875,\n  0.86477, 0.99034, 0.73206, 0.85865, 0.73206, 0.85865, 0.73206, 0.85865,\n  0.73206, 0.85865, 0.73206, 0.85865, 0.81105, 0.9245, 0.81105, 0.9245, 0.81105,\n  0.9245, 1, 1, 0.86275, 0.9245, 0.90872, 0.93591, 0.90685, 0.82601, 0.90685,\n  0.82601, 0.90685, 0.82601, 0.90685, 1.03297, 0.90685, 0.82601, 0.77896,\n  1.05611, 0.6377, 1.07692, 1, 1, 0.90918, 0.75593, 1.03297, 1, 1, 0.76032,\n  0.9375, 0.98156, 0.93407, 0.77261, 1.11429, 0.89249, 0.9245, 1, 1, 0.89249,\n  0.9245, 0.92534, 0.86698, 0.9245, 0.84118, 0.92274, 0.84118, 0.92274, 0.84118,\n  0.92274, 0.8667, 0.86291, 0.75186, 1.02933, 1, 1, 0.75186, 1.02933, 0.67789,\n  0.77832, 0.67789, 0.77832, 0.67789, 0.77832, 0.67789, 0.77832, 1, 1, 0.79776,\n  0.97655, 0.79776, 1.23023, 0.88844, 0.9245, 0.88844, 0.9245, 0.88844, 0.9245,\n  0.88844, 0.9245, 0.88844, 0.9245, 0.88844, 0.9245, 0.94309, 0.98986, 0.7306,\n  0.89453, 0.7306, 0.76659, 0.79004, 0.76659, 0.79004, 0.76659, 0.79004,\n  1.09231, 0.54873, 0.8675, 0.9245, 0.76318, 0.84843, 0.84557, 0.86651, 1, 1,\n  0.79776, 1.20562, 1.18622, 1.18622, 1, 1.1437, 0.67009, 0.96334, 0.93695,\n  1.35191, 1.40909, 0.95161, 1.48387, 0.8675, 0.90861, 0.6192, 0.7363, 0.64824,\n  0.82411, 0.56321, 0.85696, 1.23516, 0.8675, 0.81552, 0.7286, 0.84134, 0.73206,\n  0.76659, 0.86275, 0.84369, 0.90685, 0.77892, 0.85871, 1.02638, 0.89249,\n  0.75828, 0.84118, 0.85984, 0.77452, 0.76466, 0.79776, 0.7306, 0.90782,\n  0.77818, 0.903, 0.87291, 0.90685, 0.7306, 0.99058, 1.03667, 0.94635, 1.23516,\n  0.9849, 0.99058, 0.92393, 0.8916, 0.942, 1.03667, 0.75026, 0.94635, 1.0297,\n  1.23516, 0.90918, 0.94048, 0.98217, 0.89746, 0.84153, 0.92274, 0.82507,\n  0.88832, 0.84438, 0.88178, 1.03525, 0.9849, 1.00225, 0.78086, 0.97248,\n  0.89404, 1.23516, 0.9849, 0.92274, 0.9849, 0.89404, 0.73206, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 0.89693, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.85865,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.90933, 1, 1, 1, 1, 1, 1, 0.94309,\n  0.98986, 0.94309, 0.98986, 0.94309, 0.98986, 0.7306, 0.89453, 1, 1, 0.89552,\n  0.90527, 1, 0.90186, 1.12308, 1.12308, 1.12308, 1.12308, 1.2566, 1.2566,\n  1.2566, 0.89552, 0.89552, 1.42259, 0.68994, 1.03809, 1, 1, 1.0176, 1.0176,\n  1.11523, 1.4956, 2.01462, 0.97858, 0.82616, 0.91133, 0.83437, 0.91133, 1, 1,\n  1, 0.70508, 1, 1.23108, 0.79801, 0.84426, 0.84426, 0.774, 0.90572, 1.81055,\n  0.90749, 1.81055, 1.28809, 1.55469, 0.94434, 1.07806, 1, 0.97094, 0.7589,\n  0.85284, 0.90747, 1.19658, 0.69825, 0.97622, 1.33512, 0.90747, 0.90747,\n  0.85284, 0.90747, 0.90747, 1.44947, 0.85284, 0.8941, 0.8941, 0.70572, 0.8,\n  0.70572, 0.70572, 0.70572, 0.70572, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 0.99862, 0.99862, 1, 1, 1, 1, 1, 1.0336, 0.91027, 1, 1, 1,\n  0.99862, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.05859, 1.05859, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n];\nconst CalibriItalicMetrics = { lineHeight: 1.2207, lineGap: 0.2207 };\n\n// Factors to rescale LiberationSans-Regular.ttf to have the same\n// metrics as calibri.ttf.\nconst CalibriRegularFactors = [\n  1.3877, 1, 1, 1, 1.17223, 1.1293, 0.89552, 0.91133, 0.80395, 1.02269, 1.15601,\n  0.91056, 0.91056, 1.2798, 0.85284, 0.89807, 1, 0.90861, 1.39016, 0.91133,\n  0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133,\n  0.91133, 0.96309, 0.96309, 0.85284, 0.85284, 0.85284, 0.83319, 0.88071,\n  0.8675, 0.81552, 0.73834, 0.85193, 0.73206, 0.7522, 0.81105, 0.86275, 0.90685,\n  0.6377, 0.77892, 0.75593, 1.02638, 0.89385, 0.85122, 0.77452, 0.86503,\n  0.75186, 0.68887, 0.79776, 0.88844, 0.85066, 0.94258, 0.77818, 0.7306,\n  0.76659, 1.10369, 1.39016, 1.10369, 1.06139, 0.89552, 0.8739, 0.86128,\n  0.94469, 0.8457, 0.94469, 0.89464, 1.09842, 0.84636, 0.94469, 1.03297,\n  1.07692, 0.90918, 1.03297, 0.95897, 0.94469, 0.9482, 0.94469, 0.94469,\n  1.04692, 0.78223, 1.20562, 0.94469, 0.90332, 0.98986, 0.86621, 0.90527,\n  0.79004, 0.94152, 1.77256, 0.94152, 0.85284, 0.97801, 0.89552, 0.91133,\n  0.89552, 0.91133, 1.91729, 0.89552, 1.17889, 1.13254, 1.08707, 0.92098,\n  0.85284, 0.68787, 0.71353, 0.84737, 0.90747, 1.0088, 1.0044, 0.87683, 1,\n  1.09091, 1, 0.92229, 0.739, 1.15642, 0.92098, 0.76288, 0.80504, 0.80972,\n  0.75859, 0.8675, 0.8675, 0.8675, 0.8675, 0.8675, 0.8675, 0.76318, 0.73834,\n  0.73206, 0.73206, 0.73206, 0.73206, 0.90685, 0.90685, 0.90685, 0.90685,\n  0.86477, 0.89385, 0.85122, 0.85122, 0.85122, 0.85122, 0.85122, 0.85284,\n  0.85311, 0.88844, 0.88844, 0.88844, 0.88844, 0.7306, 0.77452, 0.86331,\n  0.86128, 0.86128, 0.86128, 0.86128, 0.86128, 0.86128, 0.8693, 0.8457, 0.89464,\n  0.89464, 0.89464, 0.89464, 0.82601, 0.82601, 0.82601, 0.82601, 0.94469,\n  0.94469, 0.9482, 0.9482, 0.9482, 0.9482, 0.9482, 0.90747, 0.86651, 0.94469,\n  0.94469, 0.94469, 0.94469, 0.90527, 0.94469, 0.90527, 0.8675, 0.86128, 0.8675,\n  0.86128, 0.8675, 0.86128, 0.73834, 0.8457, 0.73834, 0.8457, 0.73834, 0.8457,\n  0.73834, 0.8457, 0.85193, 0.92454, 0.86477, 0.9921, 0.73206, 0.89464, 0.73206,\n  0.89464, 0.73206, 0.89464, 0.73206, 0.89464, 0.73206, 0.89464, 0.81105,\n  0.84636, 0.81105, 0.84636, 0.81105, 0.84636, 1, 1, 0.86275, 0.94469, 0.90872,\n  0.95786, 0.90685, 0.82601, 0.90685, 0.82601, 0.90685, 0.82601, 0.90685,\n  1.03297, 0.90685, 0.82601, 0.77741, 1.05611, 0.6377, 1.07692, 1, 1, 0.90918,\n  0.75593, 1.03297, 1, 1, 0.76032, 0.90452, 0.98156, 1.11842, 0.77261, 1.11429,\n  0.89385, 0.94469, 1, 1, 0.89385, 0.94469, 0.95877, 0.86901, 0.94469, 0.85122,\n  0.9482, 0.85122, 0.9482, 0.85122, 0.9482, 0.8667, 0.90016, 0.75186, 1.04692,\n  1, 1, 0.75186, 1.04692, 0.68887, 0.78223, 0.68887, 0.78223, 0.68887, 0.78223,\n  0.68887, 0.78223, 1, 1, 0.79776, 0.92188, 0.79776, 1.23023, 0.88844, 0.94469,\n  0.88844, 0.94469, 0.88844, 0.94469, 0.88844, 0.94469, 0.88844, 0.94469,\n  0.88844, 0.94469, 0.94258, 0.98986, 0.7306, 0.90527, 0.7306, 0.76659, 0.79004,\n  0.76659, 0.79004, 0.76659, 0.79004, 1.09231, 0.54873, 0.8675, 0.86128,\n  0.76318, 0.8693, 0.85311, 0.86651, 1, 1, 0.79776, 1.20562, 1.18622, 1.18622,\n  1, 1.1437, 0.67742, 0.96334, 0.93695, 1.35191, 1.40909, 0.95161, 1.48387,\n  0.86686, 0.90861, 0.62267, 0.74359, 0.65649, 0.85498, 0.56963, 0.88254,\n  1.23516, 0.8675, 0.81552, 0.75443, 0.84503, 0.73206, 0.76659, 0.86275,\n  0.85122, 0.90685, 0.77892, 0.85746, 1.02638, 0.89385, 0.75657, 0.85122,\n  0.86275, 0.77452, 0.74171, 0.79776, 0.7306, 0.95165, 0.77818, 0.89772,\n  0.88831, 0.90685, 0.7306, 0.98142, 1.02191, 0.96576, 1.23516, 0.99018,\n  0.98142, 0.9236, 0.89258, 0.94035, 1.02191, 0.78848, 0.96576, 0.9561, 1.23516,\n  0.90918, 0.92578, 0.95424, 0.89746, 0.83969, 0.9482, 0.80113, 0.89442,\n  0.85208, 0.86155, 0.98022, 0.99018, 1.00452, 0.81209, 0.99247, 0.89181,\n  1.23516, 0.99018, 0.9482, 0.99018, 0.89181, 0.73206, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 0.88844, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.89464, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.96766, 1, 1, 1, 1, 1, 1, 0.94258, 0.98986,\n  0.94258, 0.98986, 0.94258, 0.98986, 0.7306, 0.90527, 1, 1, 0.89552, 0.90527,\n  1, 0.90186, 1.12308, 1.12308, 1.12308, 1.12308, 1.2566, 1.2566, 1.2566,\n  0.89552, 0.89552, 1.42259, 0.69043, 1.03809, 1, 1, 1.0176, 1.0176, 1.11523,\n  1.4956, 2.01462, 0.99331, 0.82616, 0.91133, 0.84286, 0.91133, 1, 1, 1,\n  0.70508, 1, 1.23108, 0.79801, 0.84426, 0.84426, 0.774, 0.90527, 1.81055,\n  0.90527, 1.81055, 1.28809, 1.55469, 0.94434, 1.07806, 1, 0.97094, 0.7589,\n  0.85284, 0.90747, 1.19658, 0.69825, 0.97622, 1.33512, 0.90747, 0.90747,\n  0.85356, 0.90747, 0.90747, 1.44947, 0.85284, 0.8941, 0.8941, 0.70572, 0.8,\n  0.70572, 0.70572, 0.70572, 0.70572, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 0.99862, 0.99862, 1, 1, 1, 1, 1, 1.0336, 0.91027, 1, 1, 1,\n  0.99862, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.05859, 1.05859, 1, 1, 1,\n  1.07185, 0.99413, 0.96334, 1.08065, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n];\nconst CalibriRegularMetrics = { lineHeight: 1.2207, lineGap: 0.2207 };\n\nexport {\n  CalibriBoldFactors,\n  CalibriBoldItalicFactors,\n  CalibriBoldItalicMetrics,\n  CalibriBoldMetrics,\n  CalibriItalicFactors,\n  CalibriItalicMetrics,\n  CalibriRegularFactors,\n  CalibriRegularMetrics,\n};\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// Factors to rescale LiberationSans-Bold.ttf to have the same\n// metrics as NimbusSans-Bold.otf.\nconst HelveticaBoldFactors = [\n  0.76116, 1, 1, 1.0006, 0.99998, 0.99974, 0.99973, 0.99973, 0.99982, 0.99977,\n  1.00087, 0.99998, 0.99998, 0.99959, 1.00003, 1.0006, 0.99998, 1.0006, 1.0006,\n  0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973,\n  0.99973, 0.99973, 0.99998, 1, 1.00003, 1.00003, 1.00003, 1.00026, 0.9999,\n  0.99977, 0.99977, 0.99977, 0.99977, 1.00001, 1.00026, 1.00022, 0.99977,\n  1.0006, 0.99973, 0.99977, 1.00026, 0.99999, 0.99977, 1.00022, 1.00001,\n  1.00022, 0.99977, 1.00001, 1.00026, 0.99977, 1.00001, 1.00016, 1.00001,\n  1.00001, 1.00026, 0.99998, 1.0006, 0.99998, 1.00003, 0.99973, 0.99998,\n  0.99973, 1.00026, 0.99973, 1.00026, 0.99973, 0.99998, 1.00026, 1.00026,\n  1.0006, 1.0006, 0.99973, 1.0006, 0.99982, 1.00026, 1.00026, 1.00026, 1.00026,\n  0.99959, 0.99973, 0.99998, 1.00026, 0.99973, 1.00022, 0.99973, 0.99973, 1,\n  0.99959, 1.00077, 0.99959, 1.00003, 0.99998, 0.99973, 0.99973, 0.99973,\n  0.99973, 1.00077, 0.99973, 0.99998, 1.00025, 0.99968, 0.99973, 1.00003,\n  1.00025, 0.60299, 1.00024, 1.06409, 1, 1, 0.99998, 1, 0.99973, 1.0006,\n  0.99998, 1, 0.99936, 0.99973, 1.00002, 1.00002, 1.00002, 1.00026, 0.99977,\n  0.99977, 0.99977, 0.99977, 0.99977, 0.99977, 1, 0.99977, 1.00001, 1.00001,\n  1.00001, 1.00001, 1.0006, 1.0006, 1.0006, 1.0006, 0.99977, 0.99977, 1.00022,\n  1.00022, 1.00022, 1.00022, 1.00022, 1.00003, 1.00022, 0.99977, 0.99977,\n  0.99977, 0.99977, 1.00001, 1.00001, 1.00026, 0.99973, 0.99973, 0.99973,\n  0.99973, 0.99973, 0.99973, 0.99982, 0.99973, 0.99973, 0.99973, 0.99973,\n  0.99973, 1.0006, 1.0006, 1.0006, 1.0006, 1.00026, 1.00026, 1.00026, 1.00026,\n  1.00026, 1.00026, 1.00026, 1.06409, 1.00026, 1.00026, 1.00026, 1.00026,\n  1.00026, 0.99973, 1.00026, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973,\n  0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973,\n  0.99977, 0.99973, 0.99977, 1.03374, 0.99977, 1.00026, 1.00001, 0.99973,\n  1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973,\n  1.00022, 1.00026, 1.00022, 1.00026, 1.00022, 1.00026, 1.00022, 1.00026,\n  0.99977, 1.00026, 0.99977, 1.00026, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006,\n  1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.00042, 0.99973, 0.99973, 1.0006,\n  0.99977, 0.99973, 0.99973, 1.00026, 1.0006, 1.00026, 1.0006, 1.00026, 1.03828,\n  1.00026, 0.99999, 1.00026, 1.0006, 0.99977, 1.00026, 0.99977, 1.00026,\n  0.99977, 1.00026, 0.9993, 0.9998, 1.00026, 1.00022, 1.00026, 1.00022, 1.00026,\n  1.00022, 1.00026, 1, 1.00016, 0.99977, 0.99959, 0.99977, 0.99959, 0.99977,\n  0.99959, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001,\n  0.99973, 1.00026, 0.99998, 1.00026, 0.8121, 1.00026, 0.99998, 0.99977,\n  1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 0.99977,\n  1.00026, 0.99977, 1.00026, 1.00016, 1.00022, 1.00001, 0.99973, 1.00001,\n  1.00026, 1, 1.00026, 1, 1.00026, 1, 1.0006, 0.99973, 0.99977, 0.99973, 1,\n  0.99982, 1.00022, 1.00026, 1.00001, 0.99973, 1.00026, 0.99998, 0.99998,\n  0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998,\n  0.99998, 1.00034, 0.99977, 1, 0.99997, 1.00026, 1.00078, 1.00036, 0.99973,\n  1.00013, 1.0006, 0.99977, 0.99977, 0.99988, 0.85148, 1.00001, 1.00026,\n  0.99977, 1.00022, 1.0006, 0.99977, 1.00001, 0.99999, 0.99977, 1.00069,\n  1.00022, 0.99977, 1.00001, 0.99984, 1.00026, 1.00001, 1.00024, 1.00001,\n  0.9999, 1, 1.0006, 1.00001, 1.00041, 0.99962, 1.00026, 1.0006, 0.99995,\n  1.00041, 0.99942, 0.99973, 0.99927, 1.00082, 0.99902, 1.00026, 1.00087,\n  1.0006, 1.00069, 0.99973, 0.99867, 0.99973, 0.9993, 1.00026, 1.00049, 1.00056,\n  1, 0.99988, 0.99935, 0.99995, 0.99954, 1.00055, 0.99945, 1.00032, 1.0006,\n  0.99995, 1.00026, 0.99995, 1.00032, 1.00001, 1.00008, 0.99971, 1.00019,\n  0.9994, 1.00001, 1.0006, 1.00044, 0.99973, 1.00023, 1.00047, 1, 0.99942,\n  0.99561, 0.99989, 1.00035, 0.99977, 1.00035, 0.99977, 1.00019, 0.99944,\n  1.00001, 1.00021, 0.99926, 1.00035, 1.00035, 0.99942, 1.00048, 0.99999,\n  0.99977, 1.00022, 1.00035, 1.00001, 0.99977, 1.00026, 0.99989, 1.00057,\n  1.00001, 0.99936, 1.00052, 1.00012, 0.99996, 1.00043, 1, 1.00035, 0.9994,\n  0.99976, 1.00035, 0.99973, 1.00052, 1.00041, 1.00119, 1.00037, 0.99973,\n  1.00002, 0.99986, 1.00041, 1.00041, 0.99902, 0.9996, 1.00034, 0.99999,\n  1.00026, 0.99999, 1.00026, 0.99973, 1.00052, 0.99973, 1, 0.99973, 1.00041,\n  1.00075, 0.9994, 1.0003, 0.99999, 1, 1.00041, 0.99955, 1, 0.99915, 0.99973,\n  0.99973, 1.00026, 1.00119, 0.99955, 0.99973, 1.0006, 0.99911, 1.0006, 1.00026,\n  0.99972, 1.00026, 0.99902, 1.00041, 0.99973, 0.99999, 1, 1, 1.00038, 1.0005,\n  1.00016, 1.00022, 1.00016, 1.00022, 1.00016, 1.00022, 1.00001, 0.99973, 1, 1,\n  0.99973, 1, 1, 0.99955, 1.0006, 1.0006, 1.0006, 1.0006, 1, 1, 1, 0.99973,\n  0.99973, 0.99972, 1, 1, 1.00106, 0.99999, 0.99998, 0.99998, 0.99999, 0.99998,\n  1.66475, 1, 0.99973, 0.99973, 1.00023, 0.99973, 0.99971, 1.00047, 1.00023, 1,\n  0.99991, 0.99984, 1.00002, 1.00002, 1.00002, 1.00002, 1, 1, 1, 1, 1, 1, 1,\n  0.99972, 1, 1.20985, 1.39713, 1.00003, 1.00031, 1.00015, 1, 0.99561, 1.00027,\n  1.00031, 1.00031, 0.99915, 1.00031, 1.00031, 0.99999, 1.00003, 0.99999,\n  0.99999, 1.41144, 1.6, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n  1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n  1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n  1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n  1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n  1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.40579, 1.40579, 1.36625,\n  0.99999, 1, 0.99861, 0.99861, 1, 1.00026, 1.00026, 1.00026, 1.00026, 0.99972,\n  0.99999, 0.99999, 0.99999, 0.99999, 1.40483, 1, 0.99977, 1.00054, 1, 1,\n  0.99953, 0.99962, 1.00042, 0.9995, 1, 1, 1, 1, 1, 1, 1, 1, 0.99998, 0.99998,\n  0.99998, 0.99998, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n];\nconst HelveticaBoldMetrics = { lineHeight: 1.2, lineGap: 0.2 };\n\n// Factors to rescale LiberationSans-BoldItalic.ttf to have the same\n// metrics as NimbusSans-BoldItalic.otf.\nconst HelveticaBoldItalicFactors = [\n  0.76116, 1, 1, 1.0006, 0.99998, 0.99974, 0.99973, 0.99973, 0.99982, 0.99977,\n  1.00087, 0.99998, 0.99998, 0.99959, 1.00003, 1.0006, 0.99998, 1.0006, 1.0006,\n  0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973,\n  0.99973, 0.99973, 0.99998, 1, 1.00003, 1.00003, 1.00003, 1.00026, 0.9999,\n  0.99977, 0.99977, 0.99977, 0.99977, 1.00001, 1.00026, 1.00022, 0.99977,\n  1.0006, 0.99973, 0.99977, 1.00026, 0.99999, 0.99977, 1.00022, 1.00001,\n  1.00022, 0.99977, 1.00001, 1.00026, 0.99977, 1.00001, 1.00016, 1.00001,\n  1.00001, 1.00026, 0.99998, 1.0006, 0.99998, 1.00003, 0.99973, 0.99998,\n  0.99973, 1.00026, 0.99973, 1.00026, 0.99973, 0.99998, 1.00026, 1.00026,\n  1.0006, 1.0006, 0.99973, 1.0006, 0.99982, 1.00026, 1.00026, 1.00026, 1.00026,\n  0.99959, 0.99973, 0.99998, 1.00026, 0.99973, 1.00022, 0.99973, 0.99973, 1,\n  0.99959, 1.00077, 0.99959, 1.00003, 0.99998, 0.99973, 0.99973, 0.99973,\n  0.99973, 1.00077, 0.99973, 0.99998, 1.00025, 0.99968, 0.99973, 1.00003,\n  1.00025, 0.60299, 1.00024, 1.06409, 1, 1, 0.99998, 1, 0.99973, 1.0006,\n  0.99998, 1, 0.99936, 0.99973, 1.00002, 1.00002, 1.00002, 1.00026, 0.99977,\n  0.99977, 0.99977, 0.99977, 0.99977, 0.99977, 1, 0.99977, 1.00001, 1.00001,\n  1.00001, 1.00001, 1.0006, 1.0006, 1.0006, 1.0006, 0.99977, 0.99977, 1.00022,\n  1.00022, 1.00022, 1.00022, 1.00022, 1.00003, 1.00022, 0.99977, 0.99977,\n  0.99977, 0.99977, 1.00001, 1.00001, 1.00026, 0.99973, 0.99973, 0.99973,\n  0.99973, 0.99973, 0.99973, 0.99982, 0.99973, 0.99973, 0.99973, 0.99973,\n  0.99973, 1.0006, 1.0006, 1.0006, 1.0006, 1.00026, 1.00026, 1.00026, 1.00026,\n  1.00026, 1.00026, 1.00026, 1.06409, 1.00026, 1.00026, 1.00026, 1.00026,\n  1.00026, 0.99973, 1.00026, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973,\n  0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973,\n  0.99977, 0.99973, 0.99977, 1.0044, 0.99977, 1.00026, 1.00001, 0.99973,\n  1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973,\n  1.00022, 1.00026, 1.00022, 1.00026, 1.00022, 1.00026, 1.00022, 1.00026,\n  0.99977, 1.00026, 0.99977, 1.00026, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006,\n  1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 0.99971, 0.99973, 0.99973, 1.0006,\n  0.99977, 0.99973, 0.99973, 1.00026, 1.0006, 1.00026, 1.0006, 1.00026, 1.01011,\n  1.00026, 0.99999, 1.00026, 1.0006, 0.99977, 1.00026, 0.99977, 1.00026,\n  0.99977, 1.00026, 0.9993, 0.9998, 1.00026, 1.00022, 1.00026, 1.00022, 1.00026,\n  1.00022, 1.00026, 1, 1.00016, 0.99977, 0.99959, 0.99977, 0.99959, 0.99977,\n  0.99959, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001,\n  0.99973, 1.00026, 0.99998, 1.00026, 0.8121, 1.00026, 0.99998, 0.99977,\n  1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 0.99977,\n  1.00026, 0.99977, 1.00026, 1.00016, 1.00022, 1.00001, 0.99973, 1.00001,\n  1.00026, 1, 1.00026, 1, 1.00026, 1, 1.0006, 0.99973, 0.99977, 0.99973, 1,\n  0.99982, 1.00022, 1.00026, 1.00001, 0.99973, 1.00026, 0.99998, 0.99998,\n  0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998,\n  0.99998, 0.99998, 0.99977, 1, 1, 1.00026, 0.99969, 0.99972, 0.99981, 0.9998,\n  1.0006, 0.99977, 0.99977, 1.00022, 0.91155, 1.00001, 1.00026, 0.99977,\n  1.00022, 1.0006, 0.99977, 1.00001, 0.99999, 0.99977, 0.99966, 1.00022,\n  1.00032, 1.00001, 0.99944, 1.00026, 1.00001, 0.99968, 1.00001, 1.00047, 1,\n  1.0006, 1.00001, 0.99981, 1.00101, 1.00026, 1.0006, 0.99948, 0.99981, 1.00064,\n  0.99973, 0.99942, 1.00101, 1.00061, 1.00026, 1.00069, 1.0006, 1.00014,\n  0.99973, 1.01322, 0.99973, 1.00065, 1.00026, 1.00012, 0.99923, 1, 1.00064,\n  1.00076, 0.99948, 1.00055, 1.00063, 1.00007, 0.99943, 1.0006, 0.99948,\n  1.00026, 0.99948, 0.99943, 1.00001, 1.00001, 1.00029, 1.00038, 1.00035,\n  1.00001, 1.0006, 1.0006, 0.99973, 0.99978, 1.00001, 1.00057, 0.99989, 0.99967,\n  0.99964, 0.99967, 0.99977, 0.99999, 0.99977, 1.00038, 0.99977, 1.00001,\n  0.99973, 1.00066, 0.99967, 0.99967, 1.00041, 0.99998, 0.99999, 0.99977,\n  1.00022, 0.99967, 1.00001, 0.99977, 1.00026, 0.99964, 1.00031, 1.00001,\n  0.99999, 0.99999, 1, 1.00023, 1, 1, 0.99999, 1.00035, 1.00001, 0.99999,\n  0.99973, 0.99977, 0.99999, 1.00058, 0.99973, 0.99973, 0.99955, 0.9995,\n  1.00026, 1.00026, 1.00032, 0.99989, 1.00034, 0.99999, 1.00026, 1.00026,\n  1.00026, 0.99973, 0.45998, 0.99973, 1.00026, 0.99973, 1.00001, 0.99999,\n  0.99982, 0.99994, 0.99996, 1, 1.00042, 1.00044, 1.00029, 1.00023, 0.99973,\n  0.99973, 1.00026, 0.99949, 1.00002, 0.99973, 1.0006, 1.0006, 1.0006, 0.99975,\n  1.00026, 1.00026, 1.00032, 0.98685, 0.99973, 1.00026, 1, 1, 0.99966, 1.00044,\n  1.00016, 1.00022, 1.00016, 1.00022, 1.00016, 1.00022, 1.00001, 0.99973, 1, 1,\n  0.99973, 1, 1, 0.99955, 1.0006, 1.0006, 1.0006, 1.0006, 1, 1, 1, 0.99973,\n  0.99973, 0.99972, 1, 1, 1.00106, 0.99999, 0.99998, 0.99998, 0.99999, 0.99998,\n  1.66475, 1, 0.99973, 0.99973, 1, 0.99973, 0.99971, 0.99978, 1, 1, 0.99991,\n  0.99984, 1.00002, 1.00002, 1.00002, 1.00002, 1.00098, 1, 1, 1, 1.00049, 1, 1,\n  0.99972, 1, 1.20985, 1.39713, 1.00003, 1.00031, 1.00015, 1, 0.99561, 1.00027,\n  1.00031, 1.00031, 0.99915, 1.00031, 1.00031, 0.99999, 1.00003, 0.99999,\n  0.99999, 1.41144, 1.6, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n  1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n  1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n  1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n  1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n  1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.40579, 1.40579, 1.36625,\n  0.99999, 1, 0.99861, 0.99861, 1, 1.00026, 1.00026, 1.00026, 1.00026, 0.99972,\n  0.99999, 0.99999, 0.99999, 0.99999, 1.40483, 1, 0.99977, 1.00054, 1, 1,\n  0.99953, 0.99962, 1.00042, 0.9995, 1, 1, 1, 1, 1, 1, 1, 1, 0.99998, 0.99998,\n  0.99998, 0.99998, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n];\nconst HelveticaBoldItalicMetrics = { lineHeight: 1.35, lineGap: 0.2 };\n\n// Factors to rescale LiberationSans-Italic.ttf to have the same\n// metrics as NimbusSans-Italic.otf.\nconst HelveticaItalicFactors = [\n  0.76116, 1, 1, 1.0006, 1.0006, 1.00006, 0.99973, 0.99973, 0.99982, 1.00001,\n  1.00043, 0.99998, 0.99998, 0.99959, 1.00003, 1.0006, 0.99998, 1.0006, 1.0006,\n  0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973,\n  0.99973, 0.99973, 1.0006, 1, 1.00003, 1.00003, 1.00003, 0.99973, 0.99987,\n  1.00001, 1.00001, 0.99977, 0.99977, 1.00001, 1.00026, 1.00022, 0.99977,\n  1.0006, 1, 1.00001, 0.99973, 0.99999, 0.99977, 1.00022, 1.00001, 1.00022,\n  0.99977, 1.00001, 1.00026, 0.99977, 1.00001, 1.00016, 1.00001, 1.00001,\n  1.00026, 1.0006, 1.0006, 1.0006, 0.99949, 0.99973, 0.99998, 0.99973, 0.99973,\n  1, 0.99973, 0.99973, 1.0006, 0.99973, 0.99973, 0.99924, 0.99924, 1, 0.99924,\n  0.99999, 0.99973, 0.99973, 0.99973, 0.99973, 0.99998, 1, 1.0006, 0.99973, 1,\n  0.99977, 1, 1, 1, 1.00005, 1.0009, 1.00005, 1.00003, 0.99998, 0.99973,\n  0.99973, 0.99973, 0.99973, 1.0009, 0.99973, 0.99998, 1.00025, 0.99968,\n  0.99973, 1.00003, 1.00025, 0.60299, 1.00024, 1.06409, 1, 1, 0.99998, 1,\n  0.9998, 1.0006, 0.99998, 1, 0.99936, 0.99973, 1.00002, 1.00002, 1.00002,\n  1.00026, 1.00001, 1.00001, 1.00001, 1.00001, 1.00001, 1.00001, 1, 0.99977,\n  1.00001, 1.00001, 1.00001, 1.00001, 1.0006, 1.0006, 1.0006, 1.0006, 0.99977,\n  0.99977, 1.00022, 1.00022, 1.00022, 1.00022, 1.00022, 1.00003, 1.00022,\n  0.99977, 0.99977, 0.99977, 0.99977, 1.00001, 1.00001, 1.00026, 0.99973,\n  0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99982, 1, 0.99973, 0.99973,\n  0.99973, 0.99973, 1.0006, 1.0006, 1.0006, 1.0006, 0.99973, 0.99973, 0.99973,\n  0.99973, 0.99973, 0.99973, 0.99973, 1.06409, 1.00026, 0.99973, 0.99973,\n  0.99973, 0.99973, 1, 0.99973, 1, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001,\n  0.99973, 0.99977, 1, 0.99977, 1, 0.99977, 1, 0.99977, 1, 0.99977, 1.0288,\n  0.99977, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973,\n  1.00001, 0.99973, 1.00001, 0.99973, 1.00022, 0.99973, 1.00022, 0.99973,\n  1.00022, 0.99973, 1.00022, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973,\n  1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 0.99924, 1.0006,\n  1.0006, 0.99946, 1.00034, 1, 0.99924, 1.00001, 1, 1, 0.99973, 0.99924,\n  0.99973, 0.99924, 0.99973, 1.06311, 0.99973, 1.00024, 0.99973, 0.99924,\n  0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 1.00041, 0.9998,\n  0.99973, 1.00022, 0.99973, 1.00022, 0.99973, 1.00022, 0.99973, 1, 1.00016,\n  0.99977, 0.99998, 0.99977, 0.99998, 0.99977, 0.99998, 1.00001, 1, 1.00001, 1,\n  1.00001, 1, 1.00001, 1, 1.00026, 1.0006, 1.00026, 0.89547, 1.00026, 1.0006,\n  0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973,\n  0.99977, 0.99973, 0.99977, 0.99973, 1.00016, 0.99977, 1.00001, 1, 1.00001,\n  1.00026, 1, 1.00026, 1, 1.00026, 1, 0.99924, 0.99973, 1.00001, 0.99973, 1,\n  0.99982, 1.00022, 1.00026, 1.00001, 1, 1.00026, 1.0006, 0.99998, 0.99998,\n  0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998,\n  0.99998, 1.00001, 1, 1.00054, 0.99977, 1.00084, 1.00007, 0.99973, 1.00013,\n  0.99924, 1.00001, 1.00001, 0.99945, 0.91221, 1.00001, 1.00026, 0.99977,\n  1.00022, 1.0006, 1.00001, 1.00001, 0.99999, 0.99977, 0.99933, 1.00022,\n  1.00054, 1.00001, 1.00065, 1.00026, 1.00001, 1.0001, 1.00001, 1.00052, 1,\n  1.0006, 1.00001, 0.99945, 0.99897, 0.99968, 0.99924, 1.00036, 0.99945,\n  0.99949, 1, 1.0006, 0.99897, 0.99918, 0.99968, 0.99911, 0.99924, 1, 0.99962,\n  1.01487, 1, 1.0005, 0.99973, 1.00012, 1.00043, 1, 0.99995, 0.99994, 1.00036,\n  0.99947, 1.00019, 1.00063, 1.00025, 0.99924, 1.00036, 0.99973, 1.00036,\n  1.00025, 1.00001, 1.00001, 1.00027, 1.0001, 1.00068, 1.00001, 1.0006, 1.0006,\n  1, 1.00008, 0.99957, 0.99972, 0.9994, 0.99954, 0.99975, 1.00051, 1.00001,\n  1.00019, 1.00001, 1.0001, 0.99986, 1.00001, 1.00001, 1.00038, 0.99954,\n  0.99954, 0.9994, 1.00066, 0.99999, 0.99977, 1.00022, 1.00054, 1.00001,\n  0.99977, 1.00026, 0.99975, 1.0001, 1.00001, 0.99993, 0.9995, 0.99955, 1.00016,\n  0.99978, 0.99974, 1.00019, 1.00022, 0.99955, 1.00053, 0.99973, 1.00089,\n  1.00005, 0.99967, 1.00048, 0.99973, 1.00002, 1.00034, 0.99973, 0.99973,\n  0.99964, 1.00006, 1.00066, 0.99947, 0.99973, 0.98894, 0.99973, 1, 0.44898, 1,\n  0.99946, 1, 1.00039, 1.00082, 0.99991, 0.99991, 0.99985, 1.00022, 1.00023,\n  1.00061, 1.00006, 0.99966, 0.99973, 0.99973, 0.99973, 1.00019, 1.0008, 1,\n  0.99924, 0.99924, 0.99924, 0.99983, 1.00044, 0.99973, 0.99964, 0.98332, 1,\n  0.99973, 1, 1, 0.99962, 0.99895, 1.00016, 0.99977, 1.00016, 0.99977, 1.00016,\n  0.99977, 1.00001, 1, 1, 1, 0.99973, 1, 1, 0.99955, 0.99924, 0.99924, 0.99924,\n  0.99924, 0.99998, 0.99998, 0.99998, 0.99973, 0.99973, 0.99972, 1, 1, 1.00267,\n  0.99999, 0.99998, 0.99998, 1, 0.99998, 1.66475, 1, 0.99973, 0.99973, 1.00023,\n  0.99973, 1.00423, 0.99925, 0.99999, 1, 0.99991, 0.99984, 1.00002, 1.00002,\n  1.00002, 1.00002, 1.00049, 1, 1.00245, 1, 1, 1, 1, 0.96329, 1, 1.20985,\n  1.39713, 1.00003, 0.8254, 1.00015, 1, 1.00035, 1.00027, 1.00031, 1.00031,\n  1.00003, 1.00031, 1.00031, 0.99999, 1.00003, 0.99999, 0.99999, 1.41144, 1.6,\n  1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n  1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n  1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n  1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n  1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n  1.41144, 1.41144, 1.41144, 1.40579, 1.40579, 1.36625, 0.99999, 1, 0.99861,\n  0.99861, 1, 1.00026, 1.00026, 1.00026, 1.00026, 0.95317, 0.99999, 0.99999,\n  0.99999, 0.99999, 1.40483, 1, 0.99977, 1.00054, 1, 1, 0.99953, 0.99962,\n  1.00042, 0.9995, 1, 1, 1, 1, 1, 1, 1, 1, 0.99998, 0.99998, 0.99998, 0.99998,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n];\nconst HelveticaItalicMetrics = { lineHeight: 1.35, lineGap: 0.2 };\n\n// Factors to rescale LiberationSans-Regular.ttf to have the same\n// metrics as NimbusSans-Regular.otf.\nconst HelveticaRegularFactors = [\n  0.76116, 1, 1, 1.0006, 1.0006, 1.00006, 0.99973, 0.99973, 0.99982, 1.00001,\n  1.00043, 0.99998, 0.99998, 0.99959, 1.00003, 1.0006, 0.99998, 1.0006, 1.0006,\n  0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973,\n  0.99973, 0.99973, 1.0006, 1, 1.00003, 1.00003, 1.00003, 0.99973, 0.99987,\n  1.00001, 1.00001, 0.99977, 0.99977, 1.00001, 1.00026, 1.00022, 0.99977,\n  1.0006, 1, 1.00001, 0.99973, 0.99999, 0.99977, 1.00022, 1.00001, 1.00022,\n  0.99977, 1.00001, 1.00026, 0.99977, 1.00001, 1.00016, 1.00001, 1.00001,\n  1.00026, 1.0006, 1.0006, 1.0006, 0.99949, 0.99973, 0.99998, 0.99973, 0.99973,\n  1, 0.99973, 0.99973, 1.0006, 0.99973, 0.99973, 0.99924, 0.99924, 1, 0.99924,\n  0.99999, 0.99973, 0.99973, 0.99973, 0.99973, 0.99998, 1, 1.0006, 0.99973, 1,\n  0.99977, 1, 1, 1, 1.00005, 1.0009, 1.00005, 1.00003, 0.99998, 0.99973,\n  0.99973, 0.99973, 0.99973, 1.0009, 0.99973, 0.99998, 1.00025, 0.99968,\n  0.99973, 1.00003, 1.00025, 0.60299, 1.00024, 1.06409, 1, 1, 0.99998, 1,\n  0.9998, 1.0006, 0.99998, 1, 0.99936, 0.99973, 1.00002, 1.00002, 1.00002,\n  1.00026, 1.00001, 1.00001, 1.00001, 1.00001, 1.00001, 1.00001, 1, 0.99977,\n  1.00001, 1.00001, 1.00001, 1.00001, 1.0006, 1.0006, 1.0006, 1.0006, 0.99977,\n  0.99977, 1.00022, 1.00022, 1.00022, 1.00022, 1.00022, 1.00003, 1.00022,\n  0.99977, 0.99977, 0.99977, 0.99977, 1.00001, 1.00001, 1.00026, 0.99973,\n  0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99982, 1, 0.99973, 0.99973,\n  0.99973, 0.99973, 1.0006, 1.0006, 1.0006, 1.0006, 0.99973, 0.99973, 0.99973,\n  0.99973, 0.99973, 0.99973, 0.99973, 1.06409, 1.00026, 0.99973, 0.99973,\n  0.99973, 0.99973, 1, 0.99973, 1, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001,\n  0.99973, 0.99977, 1, 0.99977, 1, 0.99977, 1, 0.99977, 1, 0.99977, 1.04596,\n  0.99977, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973,\n  1.00001, 0.99973, 1.00001, 0.99973, 1.00022, 0.99973, 1.00022, 0.99973,\n  1.00022, 0.99973, 1.00022, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973,\n  1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 0.99924, 1.0006,\n  1.0006, 1.00019, 1.00034, 1, 0.99924, 1.00001, 1, 1, 0.99973, 0.99924,\n  0.99973, 0.99924, 0.99973, 1.02572, 0.99973, 1.00005, 0.99973, 0.99924,\n  0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99999, 0.9998,\n  0.99973, 1.00022, 0.99973, 1.00022, 0.99973, 1.00022, 0.99973, 1, 1.00016,\n  0.99977, 0.99998, 0.99977, 0.99998, 0.99977, 0.99998, 1.00001, 1, 1.00001, 1,\n  1.00001, 1, 1.00001, 1, 1.00026, 1.0006, 1.00026, 0.84533, 1.00026, 1.0006,\n  0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973,\n  0.99977, 0.99973, 0.99977, 0.99973, 1.00016, 0.99977, 1.00001, 1, 1.00001,\n  1.00026, 1, 1.00026, 1, 1.00026, 1, 0.99924, 0.99973, 1.00001, 0.99973, 1,\n  0.99982, 1.00022, 1.00026, 1.00001, 1, 1.00026, 1.0006, 0.99998, 0.99998,\n  0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998,\n  0.99998, 0.99928, 1, 0.99977, 1.00013, 1.00055, 0.99947, 0.99945, 0.99941,\n  0.99924, 1.00001, 1.00001, 1.0004, 0.91621, 1.00001, 1.00026, 0.99977,\n  1.00022, 1.0006, 1.00001, 1.00005, 0.99999, 0.99977, 1.00015, 1.00022,\n  0.99977, 1.00001, 0.99973, 1.00026, 1.00001, 1.00019, 1.00001, 0.99946, 1,\n  1.0006, 1.00001, 0.99978, 1.00045, 0.99973, 0.99924, 1.00023, 0.99978,\n  0.99966, 1, 1.00065, 1.00045, 1.00019, 0.99973, 0.99973, 0.99924, 1, 1,\n  0.96499, 1, 1.00055, 0.99973, 1.00008, 1.00027, 1, 0.9997, 0.99995, 1.00023,\n  0.99933, 1.00019, 1.00015, 1.00031, 0.99924, 1.00023, 0.99973, 1.00023,\n  1.00031, 1.00001, 0.99928, 1.00029, 1.00092, 1.00035, 1.00001, 1.0006, 1.0006,\n  1, 0.99988, 0.99975, 1, 1.00082, 0.99561, 0.9996, 1.00035, 1.00001, 0.99962,\n  1.00001, 1.00092, 0.99964, 1.00001, 0.99963, 0.99999, 1.00035, 1.00035,\n  1.00082, 0.99962, 0.99999, 0.99977, 1.00022, 1.00035, 1.00001, 0.99977,\n  1.00026, 0.9996, 0.99967, 1.00001, 1.00034, 1.00074, 1.00054, 1.00053,\n  1.00063, 0.99971, 0.99962, 1.00035, 0.99975, 0.99977, 0.99973, 1.00043,\n  0.99953, 1.0007, 0.99915, 0.99973, 1.00008, 0.99892, 1.00073, 1.00073,\n  1.00114, 0.99915, 1.00073, 0.99955, 0.99973, 1.00092, 0.99973, 1, 0.99998, 1,\n  1.0003, 1, 1.00043, 1.00001, 0.99969, 1.0003, 1, 1.00035, 1.00001, 0.9995, 1,\n  1.00092, 0.99973, 0.99973, 0.99973, 1.0007, 0.9995, 1, 0.99924, 1.0006,\n  0.99924, 0.99972, 1.00062, 0.99973, 1.00114, 1.00073, 1, 0.99955, 1, 1,\n  1.00047, 0.99968, 1.00016, 0.99977, 1.00016, 0.99977, 1.00016, 0.99977,\n  1.00001, 1, 1, 1, 0.99973, 1, 1, 0.99955, 0.99924, 0.99924, 0.99924, 0.99924,\n  0.99998, 0.99998, 0.99998, 0.99973, 0.99973, 0.99972, 1, 1, 1.00267, 0.99999,\n  0.99998, 0.99998, 1, 0.99998, 1.66475, 1, 0.99973, 0.99973, 1.00023, 0.99973,\n  0.99971, 0.99925, 1.00023, 1, 0.99991, 0.99984, 1.00002, 1.00002, 1.00002,\n  1.00002, 1, 1, 1, 1, 1, 1, 1, 0.96329, 1, 1.20985, 1.39713, 1.00003, 0.8254,\n  1.00015, 1, 1.00035, 1.00027, 1.00031, 1.00031, 0.99915, 1.00031, 1.00031,\n  0.99999, 1.00003, 0.99999, 0.99999, 1.41144, 1.6, 1.41144, 1.41144, 1.41144,\n  1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n  1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n  1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n  1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n  1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n  1.40579, 1.40579, 1.36625, 0.99999, 1, 0.99861, 0.99861, 1, 1.00026, 1.00026,\n  1.00026, 1.00026, 0.95317, 0.99999, 0.99999, 0.99999, 0.99999, 1.40483, 1,\n  0.99977, 1.00054, 1, 1, 0.99953, 0.99962, 1.00042, 0.9995, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n];\nconst HelveticaRegularMetrics = { lineHeight: 1.2, lineGap: 0.2 };\n\nexport {\n  HelveticaBoldFactors,\n  HelveticaBoldItalicFactors,\n  HelveticaBoldItalicMetrics,\n  HelveticaBoldMetrics,\n  HelveticaItalicFactors,\n  HelveticaItalicMetrics,\n  HelveticaRegularFactors,\n  HelveticaRegularMetrics,\n};\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// Widths of glyphs in LiberationSans-Bold.ttf.\nconst LiberationSansBoldWidths = [\n  365, 0, 333, 278, 333, 474, 556, 556, 889, 722, 238, 333, 333, 389, 584, 278,\n  333, 278, 278, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 333, 333,\n  584, 584, 584, 611, 975, 722, 722, 722, 722, 667, 611, 778, 722, 278, 556,\n  722, 611, 833, 722, 778, 667, 778, 722, 667, 611, 722, 667, 944, 667, 667,\n  611, 333, 278, 333, 584, 556, 333, 556, 611, 556, 611, 556, 333, 611, 611,\n  278, 278, 556, 278, 889, 611, 611, 611, 611, 389, 556, 333, 611, 556, 778,\n  556, 556, 500, 389, 280, 389, 584, 333, 556, 556, 556, 556, 280, 556, 333,\n  737, 370, 556, 584, 737, 552, 400, 549, 333, 333, 333, 576, 556, 278, 333,\n  333, 365, 556, 834, 834, 834, 611, 722, 722, 722, 722, 722, 722, 1000, 722,\n  667, 667, 667, 667, 278, 278, 278, 278, 722, 722, 778, 778, 778, 778, 778,\n  584, 778, 722, 722, 722, 722, 667, 667, 611, 556, 556, 556, 556, 556, 556,\n  889, 556, 556, 556, 556, 556, 278, 278, 278, 278, 611, 611, 611, 611, 611,\n  611, 611, 549, 611, 611, 611, 611, 611, 556, 611, 556, 722, 556, 722, 556,\n  722, 556, 722, 556, 722, 556, 722, 556, 722, 556, 722, 719, 722, 611, 667,\n  556, 667, 556, 667, 556, 667, 556, 667, 556, 778, 611, 778, 611, 778, 611,\n  778, 611, 722, 611, 722, 611, 278, 278, 278, 278, 278, 278, 278, 278, 278,\n  278, 785, 556, 556, 278, 722, 556, 556, 611, 278, 611, 278, 611, 385, 611,\n  479, 611, 278, 722, 611, 722, 611, 722, 611, 708, 723, 611, 778, 611, 778,\n  611, 778, 611, 1000, 944, 722, 389, 722, 389, 722, 389, 667, 556, 667, 556,\n  667, 556, 667, 556, 611, 333, 611, 479, 611, 333, 722, 611, 722, 611, 722,\n  611, 722, 611, 722, 611, 722, 611, 944, 778, 667, 556, 667, 611, 500, 611,\n  500, 611, 500, 278, 556, 722, 556, 1000, 889, 778, 611, 667, 556, 611, 333,\n  333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 465, 722, 333, 853, 906,\n  474, 825, 927, 838, 278, 722, 722, 601, 719, 667, 611, 722, 778, 278, 722,\n  667, 833, 722, 644, 778, 722, 667, 600, 611, 667, 821, 667, 809, 802, 278,\n  667, 615, 451, 611, 278, 582, 615, 610, 556, 606, 475, 460, 611, 541, 278,\n  558, 556, 612, 556, 445, 611, 766, 619, 520, 684, 446, 582, 715, 576, 753,\n  845, 278, 582, 611, 582, 845, 667, 669, 885, 567, 711, 667, 278, 276, 556,\n  1094, 1062, 875, 610, 722, 622, 719, 722, 719, 722, 567, 712, 667, 904, 626,\n  719, 719, 610, 702, 833, 722, 778, 719, 667, 722, 611, 622, 854, 667, 730,\n  703, 1005, 1019, 870, 979, 719, 711, 1031, 719, 556, 618, 615, 417, 635, 556,\n  709, 497, 615, 615, 500, 635, 740, 604, 611, 604, 611, 556, 490, 556, 875,\n  556, 615, 581, 833, 844, 729, 854, 615, 552, 854, 583, 556, 556, 611, 417,\n  552, 556, 278, 281, 278, 969, 906, 611, 500, 615, 556, 604, 778, 611, 487,\n  447, 944, 778, 944, 778, 944, 778, 667, 556, 333, 333, 556, 1000, 1000, 552,\n  278, 278, 278, 278, 500, 500, 500, 556, 556, 350, 1000, 1000, 240, 479, 333,\n  333, 604, 333, 167, 396, 556, 556, 1094, 556, 885, 489, 1115, 1000, 768, 600,\n  834, 834, 834, 834, 1000, 500, 1000, 500, 1000, 500, 500, 494, 612, 823, 713,\n  584, 549, 713, 979, 722, 274, 549, 549, 583, 549, 549, 604, 584, 604, 604,\n  708, 625, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708,\n  708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708,\n  708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708,\n  708, 708, 729, 604, 604, 354, 354, 1000, 990, 990, 990, 990, 494, 604, 604,\n  604, 604, 354, 1021, 1052, 917, 750, 750, 531, 656, 594, 510, 500, 750, 750,\n  611, 611, 333, 333, 333, 333, 333, 333, 333, 333, 222, 222, 333, 333, 333,\n  333, 333, 333, 333, 333,\n];\n\n// Char code of glyphs in LiberationSans-Bold.ttf.\nconst LiberationSansBoldMapping = [\n  -1, -1, -1, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,\n  48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66,\n  67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85,\n  86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103,\n  104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118,\n  119, 120, 121, 122, 123, 124, 125, 126, 161, 162, 163, 164, 165, 166, 167,\n  168, 169, 170, 171, 172, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183,\n  184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198,\n  199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213,\n  214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228,\n  229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243,\n  244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258,\n  259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273,\n  274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288,\n  289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303,\n  304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318,\n  319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333,\n  334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348,\n  349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363,\n  364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378,\n  379, 380, 381, 382, 383, 402, 506, 507, 508, 509, 510, 511, 536, 537, 538,\n  539, 710, 711, 713, 728, 729, 730, 731, 732, 733, 900, 901, 902, 903, 904,\n  905, 906, 908, 910, 911, 912, 913, 914, 915, 916, 917, 918, 919, 920, 921,\n  922, 923, 924, 925, 926, 927, 928, 929, 931, 932, 933, 934, 935, 936, 937,\n  938, 939, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 952,\n  953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 966, 967,\n  968, 969, 970, 971, 972, 973, 974, 1024, 1025, 1026, 1027, 1028, 1029, 1030,\n  1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043,\n  1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056,\n  1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069,\n  1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082,\n  1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095,\n  1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107, 1108,\n  1109, 1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1118, 1119, 1138, 1139,\n  1168, 1169, 7808, 7809, 7810, 7811, 7812, 7813, 7922, 7923, 8208, 8209, 8211,\n  8212, 8213, 8215, 8216, 8217, 8218, 8219, 8220, 8221, 8222, 8224, 8225, 8226,\n  8230, 8240, 8242, 8243, 8249, 8250, 8252, 8254, 8260, 8319, 8355, 8356, 8359,\n  8364, 8453, 8467, 8470, 8482, 8486, 8494, 8539, 8540, 8541, 8542, 8592, 8593,\n  8594, 8595, 8596, 8597, 8616, 8706, 8710, 8719, 8721, 8722, 8730, 8734, 8735,\n  8745, 8747, 8776, 8800, 8801, 8804, 8805, 8962, 8976, 8992, 8993, 9472, 9474,\n  9484, 9488, 9492, 9496, 9500, 9508, 9516, 9524, 9532, 9552, 9553, 9554, 9555,\n  9556, 9557, 9558, 9559, 9560, 9561, 9562, 9563, 9564, 9565, 9566, 9567, 9568,\n  9569, 9570, 9571, 9572, 9573, 9574, 9575, 9576, 9577, 9578, 9579, 9580, 9600,\n  9604, 9608, 9612, 9616, 9617, 9618, 9619, 9632, 9633, 9642, 9643, 9644, 9650,\n  9658, 9660, 9668, 9674, 9675, 9679, 9688, 9689, 9702, 9786, 9787, 9788, 9792,\n  9794, 9824, 9827, 9829, 9830, 9834, 9835, 9836, 61441, 61442, 61445, -1, -1,\n  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n];\n\n// Widths of glyphs in LiberationSans-BoldItalic.ttf.\nconst LiberationSansBoldItalicWidths = [\n  365, 0, 333, 278, 333, 474, 556, 556, 889, 722, 238, 333, 333, 389, 584, 278,\n  333, 278, 278, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 333, 333,\n  584, 584, 584, 611, 975, 722, 722, 722, 722, 667, 611, 778, 722, 278, 556,\n  722, 611, 833, 722, 778, 667, 778, 722, 667, 611, 722, 667, 944, 667, 667,\n  611, 333, 278, 333, 584, 556, 333, 556, 611, 556, 611, 556, 333, 611, 611,\n  278, 278, 556, 278, 889, 611, 611, 611, 611, 389, 556, 333, 611, 556, 778,\n  556, 556, 500, 389, 280, 389, 584, 333, 556, 556, 556, 556, 280, 556, 333,\n  737, 370, 556, 584, 737, 552, 400, 549, 333, 333, 333, 576, 556, 278, 333,\n  333, 365, 556, 834, 834, 834, 611, 722, 722, 722, 722, 722, 722, 1000, 722,\n  667, 667, 667, 667, 278, 278, 278, 278, 722, 722, 778, 778, 778, 778, 778,\n  584, 778, 722, 722, 722, 722, 667, 667, 611, 556, 556, 556, 556, 556, 556,\n  889, 556, 556, 556, 556, 556, 278, 278, 278, 278, 611, 611, 611, 611, 611,\n  611, 611, 549, 611, 611, 611, 611, 611, 556, 611, 556, 722, 556, 722, 556,\n  722, 556, 722, 556, 722, 556, 722, 556, 722, 556, 722, 740, 722, 611, 667,\n  556, 667, 556, 667, 556, 667, 556, 667, 556, 778, 611, 778, 611, 778, 611,\n  778, 611, 722, 611, 722, 611, 278, 278, 278, 278, 278, 278, 278, 278, 278,\n  278, 782, 556, 556, 278, 722, 556, 556, 611, 278, 611, 278, 611, 396, 611,\n  479, 611, 278, 722, 611, 722, 611, 722, 611, 708, 723, 611, 778, 611, 778,\n  611, 778, 611, 1000, 944, 722, 389, 722, 389, 722, 389, 667, 556, 667, 556,\n  667, 556, 667, 556, 611, 333, 611, 479, 611, 333, 722, 611, 722, 611, 722,\n  611, 722, 611, 722, 611, 722, 611, 944, 778, 667, 556, 667, 611, 500, 611,\n  500, 611, 500, 278, 556, 722, 556, 1000, 889, 778, 611, 667, 556, 611, 333,\n  333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 722, 333, 854, 906,\n  473, 844, 930, 847, 278, 722, 722, 610, 671, 667, 611, 722, 778, 278, 722,\n  667, 833, 722, 657, 778, 718, 667, 590, 611, 667, 822, 667, 829, 781, 278,\n  667, 620, 479, 611, 278, 591, 620, 621, 556, 610, 479, 492, 611, 558, 278,\n  566, 556, 603, 556, 450, 611, 712, 605, 532, 664, 409, 591, 704, 578, 773,\n  834, 278, 591, 611, 591, 834, 667, 667, 886, 614, 719, 667, 278, 278, 556,\n  1094, 1042, 854, 622, 719, 677, 719, 722, 708, 722, 614, 722, 667, 927, 643,\n  719, 719, 615, 687, 833, 722, 778, 719, 667, 722, 611, 677, 781, 667, 729,\n  708, 979, 989, 854, 1000, 708, 719, 1042, 729, 556, 619, 604, 534, 618, 556,\n  736, 510, 611, 611, 507, 622, 740, 604, 611, 611, 611, 556, 889, 556, 885,\n  556, 646, 583, 889, 935, 707, 854, 594, 552, 865, 589, 556, 556, 611, 469,\n  563, 556, 278, 278, 278, 969, 906, 611, 507, 619, 556, 611, 778, 611, 575,\n  467, 944, 778, 944, 778, 944, 778, 667, 556, 333, 333, 556, 1000, 1000, 552,\n  278, 278, 278, 278, 500, 500, 500, 556, 556, 350, 1000, 1000, 240, 479, 333,\n  333, 604, 333, 167, 396, 556, 556, 1104, 556, 885, 516, 1146, 1000, 768, 600,\n  834, 834, 834, 834, 999, 500, 1000, 500, 1000, 500, 500, 494, 612, 823, 713,\n  584, 549, 713, 979, 722, 274, 549, 549, 583, 549, 549, 604, 584, 604, 604,\n  708, 625, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708,\n  708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708,\n  708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708,\n  708, 708, 729, 604, 604, 354, 354, 1000, 990, 990, 990, 990, 494, 604, 604,\n  604, 604, 354, 1021, 1052, 917, 750, 750, 531, 656, 594, 510, 500, 750, 750,\n  611, 611, 333, 333, 333, 333, 333, 333, 333, 333, 222, 222, 333, 333, 333,\n  333, 333, 333, 333, 333,\n];\n\n// Char code of glyphs in LiberationSans-BoldItalic.ttf.\nconst LiberationSansBoldItalicMapping = [\n  -1, -1, -1, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,\n  48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66,\n  67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85,\n  86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103,\n  104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118,\n  119, 120, 121, 122, 123, 124, 125, 126, 161, 162, 163, 164, 165, 166, 167,\n  168, 169, 170, 171, 172, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183,\n  184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198,\n  199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213,\n  214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228,\n  229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243,\n  244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258,\n  259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273,\n  274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288,\n  289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303,\n  304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318,\n  319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333,\n  334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348,\n  349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363,\n  364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378,\n  379, 380, 381, 382, 383, 402, 506, 507, 508, 509, 510, 511, 536, 537, 538,\n  539, 710, 711, 713, 728, 729, 730, 731, 732, 733, 900, 901, 902, 903, 904,\n  905, 906, 908, 910, 911, 912, 913, 914, 915, 916, 917, 918, 919, 920, 921,\n  922, 923, 924, 925, 926, 927, 928, 929, 931, 932, 933, 934, 935, 936, 937,\n  938, 939, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 952,\n  953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 966, 967,\n  968, 969, 970, 971, 972, 973, 974, 1024, 1025, 1026, 1027, 1028, 1029, 1030,\n  1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043,\n  1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056,\n  1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069,\n  1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082,\n  1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095,\n  1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107, 1108,\n  1109, 1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1118, 1119, 1138, 1139,\n  1168, 1169, 7808, 7809, 7810, 7811, 7812, 7813, 7922, 7923, 8208, 8209, 8211,\n  8212, 8213, 8215, 8216, 8217, 8218, 8219, 8220, 8221, 8222, 8224, 8225, 8226,\n  8230, 8240, 8242, 8243, 8249, 8250, 8252, 8254, 8260, 8319, 8355, 8356, 8359,\n  8364, 8453, 8467, 8470, 8482, 8486, 8494, 8539, 8540, 8541, 8542, 8592, 8593,\n  8594, 8595, 8596, 8597, 8616, 8706, 8710, 8719, 8721, 8722, 8730, 8734, 8735,\n  8745, 8747, 8776, 8800, 8801, 8804, 8805, 8962, 8976, 8992, 8993, 9472, 9474,\n  9484, 9488, 9492, 9496, 9500, 9508, 9516, 9524, 9532, 9552, 9553, 9554, 9555,\n  9556, 9557, 9558, 9559, 9560, 9561, 9562, 9563, 9564, 9565, 9566, 9567, 9568,\n  9569, 9570, 9571, 9572, 9573, 9574, 9575, 9576, 9577, 9578, 9579, 9580, 9600,\n  9604, 9608, 9612, 9616, 9617, 9618, 9619, 9632, 9633, 9642, 9643, 9644, 9650,\n  9658, 9660, 9668, 9674, 9675, 9679, 9688, 9689, 9702, 9786, 9787, 9788, 9792,\n  9794, 9824, 9827, 9829, 9830, 9834, 9835, 9836, 61441, 61442, 61445, -1, -1,\n  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n];\n\n// Widths of glyphs in LiberationSans-Italic.ttf.\nconst LiberationSansItalicWidths = [\n  365, 0, 333, 278, 278, 355, 556, 556, 889, 667, 191, 333, 333, 389, 584, 278,\n  333, 278, 278, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 278, 278,\n  584, 584, 584, 556, 1015, 667, 667, 722, 722, 667, 611, 778, 722, 278, 500,\n  667, 556, 833, 722, 778, 667, 778, 722, 667, 611, 722, 667, 944, 667, 667,\n  611, 278, 278, 278, 469, 556, 333, 556, 556, 500, 556, 556, 278, 556, 556,\n  222, 222, 500, 222, 833, 556, 556, 556, 556, 333, 500, 278, 556, 500, 722,\n  500, 500, 500, 334, 260, 334, 584, 333, 556, 556, 556, 556, 260, 556, 333,\n  737, 370, 556, 584, 737, 552, 400, 549, 333, 333, 333, 576, 537, 278, 333,\n  333, 365, 556, 834, 834, 834, 611, 667, 667, 667, 667, 667, 667, 1000, 722,\n  667, 667, 667, 667, 278, 278, 278, 278, 722, 722, 778, 778, 778, 778, 778,\n  584, 778, 722, 722, 722, 722, 667, 667, 611, 556, 556, 556, 556, 556, 556,\n  889, 500, 556, 556, 556, 556, 278, 278, 278, 278, 556, 556, 556, 556, 556,\n  556, 556, 549, 611, 556, 556, 556, 556, 500, 556, 500, 667, 556, 667, 556,\n  667, 556, 722, 500, 722, 500, 722, 500, 722, 500, 722, 625, 722, 556, 667,\n  556, 667, 556, 667, 556, 667, 556, 667, 556, 778, 556, 778, 556, 778, 556,\n  778, 556, 722, 556, 722, 556, 278, 278, 278, 278, 278, 278, 278, 222, 278,\n  278, 733, 444, 500, 222, 667, 500, 500, 556, 222, 556, 222, 556, 281, 556,\n  400, 556, 222, 722, 556, 722, 556, 722, 556, 615, 723, 556, 778, 556, 778,\n  556, 778, 556, 1000, 944, 722, 333, 722, 333, 722, 333, 667, 500, 667, 500,\n  667, 500, 667, 500, 611, 278, 611, 354, 611, 278, 722, 556, 722, 556, 722,\n  556, 722, 556, 722, 556, 722, 556, 944, 722, 667, 500, 667, 611, 500, 611,\n  500, 611, 500, 222, 556, 667, 556, 1000, 889, 778, 611, 667, 500, 611, 278,\n  333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 667, 278, 789, 846,\n  389, 794, 865, 775, 222, 667, 667, 570, 671, 667, 611, 722, 778, 278, 667,\n  667, 833, 722, 648, 778, 725, 667, 600, 611, 667, 837, 667, 831, 761, 278,\n  667, 570, 439, 555, 222, 550, 570, 571, 500, 556, 439, 463, 555, 542, 222,\n  500, 492, 548, 500, 447, 556, 670, 573, 486, 603, 374, 550, 652, 546, 728,\n  779, 222, 550, 556, 550, 779, 667, 667, 843, 544, 708, 667, 278, 278, 500,\n  1066, 982, 844, 589, 715, 639, 724, 667, 651, 667, 544, 704, 667, 917, 614,\n  715, 715, 589, 686, 833, 722, 778, 725, 667, 722, 611, 639, 795, 667, 727,\n  673, 920, 923, 805, 886, 651, 694, 1022, 682, 556, 562, 522, 493, 553, 556,\n  688, 465, 556, 556, 472, 564, 686, 550, 556, 556, 556, 500, 833, 500, 835,\n  500, 572, 518, 830, 851, 621, 736, 526, 492, 752, 534, 556, 556, 556, 378,\n  496, 500, 222, 222, 222, 910, 828, 556, 472, 565, 500, 556, 778, 556, 492,\n  339, 944, 722, 944, 722, 944, 722, 667, 500, 333, 333, 556, 1000, 1000, 552,\n  222, 222, 222, 222, 333, 333, 333, 556, 556, 350, 1000, 1000, 188, 354, 333,\n  333, 500, 333, 167, 365, 556, 556, 1094, 556, 885, 323, 1083, 1000, 768, 600,\n  834, 834, 834, 834, 1000, 500, 998, 500, 1000, 500, 500, 494, 612, 823, 713,\n  584, 549, 713, 979, 719, 274, 549, 549, 584, 549, 549, 604, 584, 604, 604,\n  708, 625, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708,\n  708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708,\n  708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708,\n  708, 708, 729, 604, 604, 354, 354, 1000, 990, 990, 990, 990, 494, 604, 604,\n  604, 604, 354, 1021, 1052, 917, 750, 750, 531, 656, 594, 510, 500, 750, 750,\n  500, 500, 333, 333, 333, 333, 333, 333, 333, 333, 222, 222, 294, 294, 324,\n  324, 316, 328, 398, 285,\n];\n\n// Char code of glyphs in LiberationSans-Italic.ttf.\nconst LiberationSansItalicMapping = [\n  -1, -1, -1, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,\n  48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66,\n  67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85,\n  86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103,\n  104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118,\n  119, 120, 121, 122, 123, 124, 125, 126, 161, 162, 163, 164, 165, 166, 167,\n  168, 169, 170, 171, 172, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183,\n  184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198,\n  199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213,\n  214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228,\n  229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243,\n  244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258,\n  259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273,\n  274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288,\n  289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303,\n  304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318,\n  319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333,\n  334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348,\n  349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363,\n  364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378,\n  379, 380, 381, 382, 383, 402, 506, 507, 508, 509, 510, 511, 536, 537, 538,\n  539, 710, 711, 713, 728, 729, 730, 731, 732, 733, 900, 901, 902, 903, 904,\n  905, 906, 908, 910, 911, 912, 913, 914, 915, 916, 917, 918, 919, 920, 921,\n  922, 923, 924, 925, 926, 927, 928, 929, 931, 932, 933, 934, 935, 936, 937,\n  938, 939, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 952,\n  953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 966, 967,\n  968, 969, 970, 971, 972, 973, 974, 1024, 1025, 1026, 1027, 1028, 1029, 1030,\n  1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043,\n  1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056,\n  1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069,\n  1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082,\n  1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095,\n  1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107, 1108,\n  1109, 1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1118, 1119, 1138, 1139,\n  1168, 1169, 7808, 7809, 7810, 7811, 7812, 7813, 7922, 7923, 8208, 8209, 8211,\n  8212, 8213, 8215, 8216, 8217, 8218, 8219, 8220, 8221, 8222, 8224, 8225, 8226,\n  8230, 8240, 8242, 8243, 8249, 8250, 8252, 8254, 8260, 8319, 8355, 8356, 8359,\n  8364, 8453, 8467, 8470, 8482, 8486, 8494, 8539, 8540, 8541, 8542, 8592, 8593,\n  8594, 8595, 8596, 8597, 8616, 8706, 8710, 8719, 8721, 8722, 8730, 8734, 8735,\n  8745, 8747, 8776, 8800, 8801, 8804, 8805, 8962, 8976, 8992, 8993, 9472, 9474,\n  9484, 9488, 9492, 9496, 9500, 9508, 9516, 9524, 9532, 9552, 9553, 9554, 9555,\n  9556, 9557, 9558, 9559, 9560, 9561, 9562, 9563, 9564, 9565, 9566, 9567, 9568,\n  9569, 9570, 9571, 9572, 9573, 9574, 9575, 9576, 9577, 9578, 9579, 9580, 9600,\n  9604, 9608, 9612, 9616, 9617, 9618, 9619, 9632, 9633, 9642, 9643, 9644, 9650,\n  9658, 9660, 9668, 9674, 9675, 9679, 9688, 9689, 9702, 9786, 9787, 9788, 9792,\n  9794, 9824, 9827, 9829, 9830, 9834, 9835, 9836, 61441, 61442, 61445, -1, -1,\n  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n];\n\n// Widths of glyphs in LiberationSans-Regular.ttf.\nconst LiberationSansRegularWidths = [\n  365, 0, 333, 278, 278, 355, 556, 556, 889, 667, 191, 333, 333, 389, 584, 278,\n  333, 278, 278, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 278, 278,\n  584, 584, 584, 556, 1015, 667, 667, 722, 722, 667, 611, 778, 722, 278, 500,\n  667, 556, 833, 722, 778, 667, 778, 722, 667, 611, 722, 667, 944, 667, 667,\n  611, 278, 278, 278, 469, 556, 333, 556, 556, 500, 556, 556, 278, 556, 556,\n  222, 222, 500, 222, 833, 556, 556, 556, 556, 333, 500, 278, 556, 500, 722,\n  500, 500, 500, 334, 260, 334, 584, 333, 556, 556, 556, 556, 260, 556, 333,\n  737, 370, 556, 584, 737, 552, 400, 549, 333, 333, 333, 576, 537, 278, 333,\n  333, 365, 556, 834, 834, 834, 611, 667, 667, 667, 667, 667, 667, 1000, 722,\n  667, 667, 667, 667, 278, 278, 278, 278, 722, 722, 778, 778, 778, 778, 778,\n  584, 778, 722, 722, 722, 722, 667, 667, 611, 556, 556, 556, 556, 556, 556,\n  889, 500, 556, 556, 556, 556, 278, 278, 278, 278, 556, 556, 556, 556, 556,\n  556, 556, 549, 611, 556, 556, 556, 556, 500, 556, 500, 667, 556, 667, 556,\n  667, 556, 722, 500, 722, 500, 722, 500, 722, 500, 722, 615, 722, 556, 667,\n  556, 667, 556, 667, 556, 667, 556, 667, 556, 778, 556, 778, 556, 778, 556,\n  778, 556, 722, 556, 722, 556, 278, 278, 278, 278, 278, 278, 278, 222, 278,\n  278, 735, 444, 500, 222, 667, 500, 500, 556, 222, 556, 222, 556, 292, 556,\n  334, 556, 222, 722, 556, 722, 556, 722, 556, 604, 723, 556, 778, 556, 778,\n  556, 778, 556, 1000, 944, 722, 333, 722, 333, 722, 333, 667, 500, 667, 500,\n  667, 500, 667, 500, 611, 278, 611, 375, 611, 278, 722, 556, 722, 556, 722,\n  556, 722, 556, 722, 556, 722, 556, 944, 722, 667, 500, 667, 611, 500, 611,\n  500, 611, 500, 222, 556, 667, 556, 1000, 889, 778, 611, 667, 500, 611, 278,\n  333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 667, 278, 784, 838,\n  384, 774, 855, 752, 222, 667, 667, 551, 668, 667, 611, 722, 778, 278, 667,\n  668, 833, 722, 650, 778, 722, 667, 618, 611, 667, 798, 667, 835, 748, 278,\n  667, 578, 446, 556, 222, 547, 578, 575, 500, 557, 446, 441, 556, 556, 222,\n  500, 500, 576, 500, 448, 556, 690, 569, 482, 617, 395, 547, 648, 525, 713,\n  781, 222, 547, 556, 547, 781, 667, 667, 865, 542, 719, 667, 278, 278, 500,\n  1057, 1010, 854, 583, 722, 635, 719, 667, 656, 667, 542, 677, 667, 923, 604,\n  719, 719, 583, 656, 833, 722, 778, 719, 667, 722, 611, 635, 760, 667, 740,\n  667, 917, 938, 792, 885, 656, 719, 1010, 722, 556, 573, 531, 365, 583, 556,\n  669, 458, 559, 559, 438, 583, 688, 552, 556, 542, 556, 500, 458, 500, 823,\n  500, 573, 521, 802, 823, 625, 719, 521, 510, 750, 542, 556, 556, 556, 365,\n  510, 500, 222, 278, 222, 906, 812, 556, 438, 559, 500, 552, 778, 556, 489,\n  411, 944, 722, 944, 722, 944, 722, 667, 500, 333, 333, 556, 1000, 1000, 552,\n  222, 222, 222, 222, 333, 333, 333, 556, 556, 350, 1000, 1000, 188, 354, 333,\n  333, 500, 333, 167, 365, 556, 556, 1094, 556, 885, 323, 1073, 1000, 768, 600,\n  834, 834, 834, 834, 1000, 500, 1000, 500, 1000, 500, 500, 494, 612, 823, 713,\n  584, 549, 713, 979, 719, 274, 549, 549, 583, 549, 549, 604, 584, 604, 604,\n  708, 625, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708,\n  708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708,\n  708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708,\n  708, 708, 729, 604, 604, 354, 354, 1000, 990, 990, 990, 990, 494, 604, 604,\n  604, 604, 354, 1021, 1052, 917, 750, 750, 531, 656, 594, 510, 500, 750, 750,\n  500, 500, 333, 333, 333, 333, 333, 333, 333, 333, 222, 222, 294, 294, 324,\n  324, 316, 328, 398, 285,\n];\n\n// Char code of glyphs in LiberationSans-Regular.ttf.\nconst LiberationSansRegularMapping = [\n  -1, -1, -1, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,\n  48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66,\n  67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85,\n  86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103,\n  104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118,\n  119, 120, 121, 122, 123, 124, 125, 126, 161, 162, 163, 164, 165, 166, 167,\n  168, 169, 170, 171, 172, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183,\n  184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198,\n  199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213,\n  214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228,\n  229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243,\n  244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258,\n  259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273,\n  274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288,\n  289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303,\n  304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318,\n  319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333,\n  334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348,\n  349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363,\n  364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378,\n  379, 380, 381, 382, 383, 402, 506, 507, 508, 509, 510, 511, 536, 537, 538,\n  539, 710, 711, 713, 728, 729, 730, 731, 732, 733, 900, 901, 902, 903, 904,\n  905, 906, 908, 910, 911, 912, 913, 914, 915, 916, 917, 918, 919, 920, 921,\n  922, 923, 924, 925, 926, 927, 928, 929, 931, 932, 933, 934, 935, 936, 937,\n  938, 939, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 952,\n  953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 966, 967,\n  968, 969, 970, 971, 972, 973, 974, 1024, 1025, 1026, 1027, 1028, 1029, 1030,\n  1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043,\n  1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056,\n  1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069,\n  1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082,\n  1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095,\n  1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107, 1108,\n  1109, 1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1118, 1119, 1138, 1139,\n  1168, 1169, 7808, 7809, 7810, 7811, 7812, 7813, 7922, 7923, 8208, 8209, 8211,\n  8212, 8213, 8215, 8216, 8217, 8218, 8219, 8220, 8221, 8222, 8224, 8225, 8226,\n  8230, 8240, 8242, 8243, 8249, 8250, 8252, 8254, 8260, 8319, 8355, 8356, 8359,\n  8364, 8453, 8467, 8470, 8482, 8486, 8494, 8539, 8540, 8541, 8542, 8592, 8593,\n  8594, 8595, 8596, 8597, 8616, 8706, 8710, 8719, 8721, 8722, 8730, 8734, 8735,\n  8745, 8747, 8776, 8800, 8801, 8804, 8805, 8962, 8976, 8992, 8993, 9472, 9474,\n  9484, 9488, 9492, 9496, 9500, 9508, 9516, 9524, 9532, 9552, 9553, 9554, 9555,\n  9556, 9557, 9558, 9559, 9560, 9561, 9562, 9563, 9564, 9565, 9566, 9567, 9568,\n  9569, 9570, 9571, 9572, 9573, 9574, 9575, 9576, 9577, 9578, 9579, 9580, 9600,\n  9604, 9608, 9612, 9616, 9617, 9618, 9619, 9632, 9633, 9642, 9643, 9644, 9650,\n  9658, 9660, 9668, 9674, 9675, 9679, 9688, 9689, 9702, 9786, 9787, 9788, 9792,\n  9794, 9824, 9827, 9829, 9830, 9834, 9835, 9836, 61441, 61442, 61445, -1, -1,\n  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n];\n\nexport {\n  LiberationSansBoldItalicMapping,\n  LiberationSansBoldItalicWidths,\n  LiberationSansBoldMapping,\n  LiberationSansBoldWidths,\n  LiberationSansItalicMapping,\n  LiberationSansItalicWidths,\n  LiberationSansRegularMapping,\n  LiberationSansRegularWidths,\n};\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// Factors to rescale LiberationSans-Bold.ttf to have the same\n// metrics as MyriadPro-Bold.otf.\nconst MyriadProBoldFactors = [\n  1.36898, 1, 1, 0.72706, 0.80479, 0.83734, 0.98894, 0.99793, 0.9897, 0.93884,\n  0.86209, 0.94292, 0.94292, 1.16661, 1.02058, 0.93582, 0.96694, 0.93582,\n  1.19137, 0.99793, 0.99793, 0.99793, 0.99793, 0.99793, 0.99793, 0.99793,\n  0.99793, 0.99793, 0.99793, 0.78076, 0.78076, 1.02058, 1.02058, 1.02058,\n  0.72851, 0.78966, 0.90838, 0.83637, 0.82391, 0.96376, 0.80061, 0.86275,\n  0.8768, 0.95407, 1.0258, 0.73901, 0.85022, 0.83655, 1.0156, 0.95546, 0.92179,\n  0.87107, 0.92179, 0.82114, 0.8096, 0.89713, 0.94438, 0.95353, 0.94083,\n  0.91905, 0.90406, 0.9446, 0.94292, 1.18777, 0.94292, 1.02058, 0.89903,\n  0.90088, 0.94938, 0.97898, 0.81093, 0.97571, 0.94938, 1.024, 0.9577, 0.95933,\n  0.98621, 1.0474, 0.97455, 0.98981, 0.9672, 0.95933, 0.9446, 0.97898, 0.97407,\n  0.97646, 0.78036, 1.10208, 0.95442, 0.95298, 0.97579, 0.9332, 0.94039, 0.938,\n  0.80687, 1.01149, 0.80687, 1.02058, 0.80479, 0.99793, 0.99793, 0.99793,\n  0.99793, 1.01149, 1.00872, 0.90088, 0.91882, 1.0213, 0.8361, 1.02058, 0.62295,\n  0.54324, 0.89022, 1.08595, 1, 1, 0.90088, 1, 0.97455, 0.93582, 0.90088, 1,\n  1.05686, 0.8361, 0.99642, 0.99642, 0.99642, 0.72851, 0.90838, 0.90838,\n  0.90838, 0.90838, 0.90838, 0.90838, 0.868, 0.82391, 0.80061, 0.80061, 0.80061,\n  0.80061, 1.0258, 1.0258, 1.0258, 1.0258, 0.97484, 0.95546, 0.92179, 0.92179,\n  0.92179, 0.92179, 0.92179, 1.02058, 0.92179, 0.94438, 0.94438, 0.94438,\n  0.94438, 0.90406, 0.86958, 0.98225, 0.94938, 0.94938, 0.94938, 0.94938,\n  0.94938, 0.94938, 0.9031, 0.81093, 0.94938, 0.94938, 0.94938, 0.94938,\n  0.98621, 0.98621, 0.98621, 0.98621, 0.93969, 0.95933, 0.9446, 0.9446, 0.9446,\n  0.9446, 0.9446, 1.08595, 0.9446, 0.95442, 0.95442, 0.95442, 0.95442, 0.94039,\n  0.97898, 0.94039, 0.90838, 0.94938, 0.90838, 0.94938, 0.90838, 0.94938,\n  0.82391, 0.81093, 0.82391, 0.81093, 0.82391, 0.81093, 0.82391, 0.81093,\n  0.96376, 0.84313, 0.97484, 0.97571, 0.80061, 0.94938, 0.80061, 0.94938,\n  0.80061, 0.94938, 0.80061, 0.94938, 0.80061, 0.94938, 0.8768, 0.9577, 0.8768,\n  0.9577, 0.8768, 0.9577, 1, 1, 0.95407, 0.95933, 0.97069, 0.95933, 1.0258,\n  0.98621, 1.0258, 0.98621, 1.0258, 0.98621, 1.0258, 0.98621, 1.0258, 0.98621,\n  0.887, 1.01591, 0.73901, 1.0474, 1, 1, 0.97455, 0.83655, 0.98981, 1, 1,\n  0.83655, 0.73977, 0.83655, 0.73903, 0.84638, 1.033, 0.95546, 0.95933, 1, 1,\n  0.95546, 0.95933, 0.8271, 0.95417, 0.95933, 0.92179, 0.9446, 0.92179, 0.9446,\n  0.92179, 0.9446, 0.936, 0.91964, 0.82114, 0.97646, 1, 1, 0.82114, 0.97646,\n  0.8096, 0.78036, 0.8096, 0.78036, 1, 1, 0.8096, 0.78036, 1, 1, 0.89713,\n  0.77452, 0.89713, 1.10208, 0.94438, 0.95442, 0.94438, 0.95442, 0.94438,\n  0.95442, 0.94438, 0.95442, 0.94438, 0.95442, 0.94438, 0.95442, 0.94083,\n  0.97579, 0.90406, 0.94039, 0.90406, 0.9446, 0.938, 0.9446, 0.938, 0.9446,\n  0.938, 1, 0.99793, 0.90838, 0.94938, 0.868, 0.9031, 0.92179, 0.9446, 1, 1,\n  0.89713, 1.10208, 0.90088, 0.90088, 0.90088, 0.90088, 0.90088, 0.90088,\n  0.90088, 0.90088, 0.90088, 0.90989, 0.9358, 0.91945, 0.83181, 0.75261,\n  0.87992, 0.82976, 0.96034, 0.83689, 0.97268, 1.0078, 0.90838, 0.83637, 0.8019,\n  0.90157, 0.80061, 0.9446, 0.95407, 0.92436, 1.0258, 0.85022, 0.97153, 1.0156,\n  0.95546, 0.89192, 0.92179, 0.92361, 0.87107, 0.96318, 0.89713, 0.93704,\n  0.95638, 0.91905, 0.91709, 0.92796, 1.0258, 0.93704, 0.94836, 1.0373, 0.95933,\n  1.0078, 0.95871, 0.94836, 0.96174, 0.92601, 0.9498, 0.98607, 0.95776, 0.95933,\n  1.05453, 1.0078, 0.98275, 0.9314, 0.95617, 0.91701, 1.05993, 0.9446, 0.78367,\n  0.9553, 1, 0.86832, 1.0128, 0.95871, 0.99394, 0.87548, 0.96361, 0.86774,\n  1.0078, 0.95871, 0.9446, 0.95871, 0.86774, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.94083, 0.97579, 0.94083, 0.97579, 0.94083,\n  0.97579, 0.90406, 0.94039, 0.96694, 1, 0.89903, 1, 1, 1, 0.93582, 0.93582,\n  0.93582, 1, 0.908, 0.908, 0.918, 0.94219, 0.94219, 0.96544, 1, 1.285, 1, 1,\n  0.81079, 0.81079, 1, 1, 0.74854, 1, 1, 1, 1, 0.99793, 1, 1, 1, 0.65, 1,\n  1.36145, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.17173, 1, 0.80535, 0.76169,\n  1.02058, 1.0732, 1.05486, 1, 1, 1.30692, 1.08595, 1.08595, 1, 1.08595,\n  1.08595, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.16161, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n];\nconst MyriadProBoldMetrics = { lineHeight: 1.2, lineGap: 0.2 };\n\n// Factors to rescale LiberationSans-BoldItalic.ttf to have the same\n// metrics as MyriadPro-BoldIt.otf.\nconst MyriadProBoldItalicFactors = [\n  1.36898, 1, 1, 0.66227, 0.80779, 0.81625, 0.97276, 0.97276, 0.97733, 0.92222,\n  0.83266, 0.94292, 0.94292, 1.16148, 1.02058, 0.93582, 0.96694, 0.93582,\n  1.17337, 0.97276, 0.97276, 0.97276, 0.97276, 0.97276, 0.97276, 0.97276,\n  0.97276, 0.97276, 0.97276, 0.78076, 0.78076, 1.02058, 1.02058, 1.02058,\n  0.71541, 0.76813, 0.85576, 0.80591, 0.80729, 0.94299, 0.77512, 0.83655,\n  0.86523, 0.92222, 0.98621, 0.71743, 0.81698, 0.79726, 0.98558, 0.92222,\n  0.90637, 0.83809, 0.90637, 0.80729, 0.76463, 0.86275, 0.90699, 0.91605,\n  0.9154, 0.85308, 0.85458, 0.90531, 0.94292, 1.21296, 0.94292, 1.02058,\n  0.89903, 1.18616, 0.99613, 0.91677, 0.78216, 0.91677, 0.90083, 0.98796,\n  0.9135, 0.92168, 0.95381, 0.98981, 0.95298, 0.95381, 0.93459, 0.92168,\n  0.91513, 0.92004, 0.91677, 0.95077, 0.748, 1.04502, 0.91677, 0.92061, 0.94236,\n  0.89544, 0.89364, 0.9, 0.80687, 0.8578, 0.80687, 1.02058, 0.80779, 0.97276,\n  0.97276, 0.97276, 0.97276, 0.8578, 0.99973, 1.18616, 0.91339, 1.08074,\n  0.82891, 1.02058, 0.55509, 0.71526, 0.89022, 1.08595, 1, 1, 1.18616, 1,\n  0.96736, 0.93582, 1.18616, 1, 1.04864, 0.82711, 0.99043, 0.99043, 0.99043,\n  0.71541, 0.85576, 0.85576, 0.85576, 0.85576, 0.85576, 0.85576, 0.845, 0.80729,\n  0.77512, 0.77512, 0.77512, 0.77512, 0.98621, 0.98621, 0.98621, 0.98621,\n  0.95961, 0.92222, 0.90637, 0.90637, 0.90637, 0.90637, 0.90637, 1.02058,\n  0.90251, 0.90699, 0.90699, 0.90699, 0.90699, 0.85458, 0.83659, 0.94951,\n  0.99613, 0.99613, 0.99613, 0.99613, 0.99613, 0.99613, 0.85811, 0.78216,\n  0.90083, 0.90083, 0.90083, 0.90083, 0.95381, 0.95381, 0.95381, 0.95381,\n  0.9135, 0.92168, 0.91513, 0.91513, 0.91513, 0.91513, 0.91513, 1.08595,\n  0.91677, 0.91677, 0.91677, 0.91677, 0.91677, 0.89364, 0.92332, 0.89364,\n  0.85576, 0.99613, 0.85576, 0.99613, 0.85576, 0.99613, 0.80729, 0.78216,\n  0.80729, 0.78216, 0.80729, 0.78216, 0.80729, 0.78216, 0.94299, 0.76783,\n  0.95961, 0.91677, 0.77512, 0.90083, 0.77512, 0.90083, 0.77512, 0.90083,\n  0.77512, 0.90083, 0.77512, 0.90083, 0.86523, 0.9135, 0.86523, 0.9135, 0.86523,\n  0.9135, 1, 1, 0.92222, 0.92168, 0.92222, 0.92168, 0.98621, 0.95381, 0.98621,\n  0.95381, 0.98621, 0.95381, 0.98621, 0.95381, 0.98621, 0.95381, 0.86036,\n  0.97096, 0.71743, 0.98981, 1, 1, 0.95298, 0.79726, 0.95381, 1, 1, 0.79726,\n  0.6894, 0.79726, 0.74321, 0.81691, 1.0006, 0.92222, 0.92168, 1, 1, 0.92222,\n  0.92168, 0.79464, 0.92098, 0.92168, 0.90637, 0.91513, 0.90637, 0.91513,\n  0.90637, 0.91513, 0.909, 0.87514, 0.80729, 0.95077, 1, 1, 0.80729, 0.95077,\n  0.76463, 0.748, 0.76463, 0.748, 1, 1, 0.76463, 0.748, 1, 1, 0.86275, 0.72651,\n  0.86275, 1.04502, 0.90699, 0.91677, 0.90699, 0.91677, 0.90699, 0.91677,\n  0.90699, 0.91677, 0.90699, 0.91677, 0.90699, 0.91677, 0.9154, 0.94236,\n  0.85458, 0.89364, 0.85458, 0.90531, 0.9, 0.90531, 0.9, 0.90531, 0.9, 1,\n  0.97276, 0.85576, 0.99613, 0.845, 0.85811, 0.90251, 0.91677, 1, 1, 0.86275,\n  1.04502, 1.18616, 1.18616, 1.18616, 1.18616, 1.18616, 1.18616, 1.18616,\n  1.18616, 1.18616, 1.00899, 1.30628, 0.85576, 0.80178, 0.66862, 0.7927,\n  0.69323, 0.88127, 0.72459, 0.89711, 0.95381, 0.85576, 0.80591, 0.7805,\n  0.94729, 0.77512, 0.90531, 0.92222, 0.90637, 0.98621, 0.81698, 0.92655,\n  0.98558, 0.92222, 0.85359, 0.90637, 0.90976, 0.83809, 0.94523, 0.86275,\n  0.83509, 0.93157, 0.85308, 0.83392, 0.92346, 0.98621, 0.83509, 0.92886,\n  0.91324, 0.92168, 0.95381, 0.90646, 0.92886, 0.90557, 0.86847, 0.90276,\n  0.91324, 0.86842, 0.92168, 0.99531, 0.95381, 0.9224, 0.85408, 0.92699,\n  0.86847, 1.0051, 0.91513, 0.80487, 0.93481, 1, 0.88159, 1.05214, 0.90646,\n  0.97355, 0.81539, 0.89398, 0.85923, 0.95381, 0.90646, 0.91513, 0.90646,\n  0.85923, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  0.9154, 0.94236, 0.9154, 0.94236, 0.9154, 0.94236, 0.85458, 0.89364, 0.96694,\n  1, 0.89903, 1, 1, 1, 0.91782, 0.91782, 0.91782, 1, 0.896, 0.896, 0.896,\n  0.9332, 0.9332, 0.95973, 1, 1.26, 1, 1, 0.80479, 0.80178, 1, 1, 0.85633, 1, 1,\n  1, 1, 0.97276, 1, 1, 1, 0.698, 1, 1.36145, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1.14542, 1, 0.79199, 0.78694, 1.02058, 1.03493, 1.05486, 1, 1, 1.23026,\n  1.08595, 1.08595, 1, 1.08595, 1.08595, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.20006, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n];\nconst MyriadProBoldItalicMetrics = { lineHeight: 1.2, lineGap: 0.2 };\n\n// Factors to rescale LiberationSans-Italic.ttf to have the same\n// metrics as MyriadPro-It.otf.\nconst MyriadProItalicFactors = [\n  1.36898, 1, 1, 0.65507, 0.84943, 0.85639, 0.88465, 0.88465, 0.86936, 0.88307,\n  0.86948, 0.85283, 0.85283, 1.06383, 1.02058, 0.75945, 0.9219, 0.75945,\n  1.17337, 0.88465, 0.88465, 0.88465, 0.88465, 0.88465, 0.88465, 0.88465,\n  0.88465, 0.88465, 0.88465, 0.75945, 0.75945, 1.02058, 1.02058, 1.02058,\n  0.69046, 0.70926, 0.85158, 0.77812, 0.76852, 0.89591, 0.70466, 0.76125,\n  0.80094, 0.86822, 0.83864, 0.728, 0.77212, 0.79475, 0.93637, 0.87514, 0.8588,\n  0.76013, 0.8588, 0.72421, 0.69866, 0.77598, 0.85991, 0.80811, 0.87832,\n  0.78112, 0.77512, 0.8562, 1.0222, 1.18417, 1.0222, 1.27014, 0.89903, 1.15012,\n  0.93859, 0.94399, 0.846, 0.94399, 0.81453, 1.0186, 0.94219, 0.96017, 1.03075,\n  1.02175, 0.912, 1.03075, 0.96998, 0.96017, 0.93859, 0.94399, 0.94399, 0.95493,\n  0.746, 1.12658, 0.94578, 0.91, 0.979, 0.882, 0.882, 0.83, 0.85034, 0.83537,\n  0.85034, 1.02058, 0.70869, 0.88465, 0.88465, 0.88465, 0.88465, 0.83537,\n  0.90083, 1.15012, 0.9161, 0.94565, 0.73541, 1.02058, 0.53609, 0.69353,\n  0.79519, 1.08595, 1, 1, 1.15012, 1, 0.91974, 0.75945, 1.15012, 1, 0.9446,\n  0.73361, 0.9005, 0.9005, 0.9005, 0.62864, 0.85158, 0.85158, 0.85158, 0.85158,\n  0.85158, 0.85158, 0.773, 0.76852, 0.70466, 0.70466, 0.70466, 0.70466, 0.83864,\n  0.83864, 0.83864, 0.83864, 0.90561, 0.87514, 0.8588, 0.8588, 0.8588, 0.8588,\n  0.8588, 1.02058, 0.85751, 0.85991, 0.85991, 0.85991, 0.85991, 0.77512,\n  0.76013, 0.88075, 0.93859, 0.93859, 0.93859, 0.93859, 0.93859, 0.93859,\n  0.8075, 0.846, 0.81453, 0.81453, 0.81453, 0.81453, 0.82424, 0.82424, 0.82424,\n  0.82424, 0.9278, 0.96017, 0.93859, 0.93859, 0.93859, 0.93859, 0.93859,\n  1.08595, 0.8562, 0.94578, 0.94578, 0.94578, 0.94578, 0.882, 0.94578, 0.882,\n  0.85158, 0.93859, 0.85158, 0.93859, 0.85158, 0.93859, 0.76852, 0.846, 0.76852,\n  0.846, 0.76852, 0.846, 0.76852, 0.846, 0.89591, 0.8544, 0.90561, 0.94399,\n  0.70466, 0.81453, 0.70466, 0.81453, 0.70466, 0.81453, 0.70466, 0.81453,\n  0.70466, 0.81453, 0.80094, 0.94219, 0.80094, 0.94219, 0.80094, 0.94219, 1, 1,\n  0.86822, 0.96017, 0.86822, 0.96017, 0.83864, 0.82424, 0.83864, 0.82424,\n  0.83864, 0.82424, 0.83864, 1.03075, 0.83864, 0.82424, 0.81402, 1.02738, 0.728,\n  1.02175, 1, 1, 0.912, 0.79475, 1.03075, 1, 1, 0.79475, 0.83911, 0.79475,\n  0.66266, 0.80553, 1.06676, 0.87514, 0.96017, 1, 1, 0.87514, 0.96017, 0.86865,\n  0.87396, 0.96017, 0.8588, 0.93859, 0.8588, 0.93859, 0.8588, 0.93859, 0.867,\n  0.84759, 0.72421, 0.95493, 1, 1, 0.72421, 0.95493, 0.69866, 0.746, 0.69866,\n  0.746, 1, 1, 0.69866, 0.746, 1, 1, 0.77598, 0.88417, 0.77598, 1.12658,\n  0.85991, 0.94578, 0.85991, 0.94578, 0.85991, 0.94578, 0.85991, 0.94578,\n  0.85991, 0.94578, 0.85991, 0.94578, 0.87832, 0.979, 0.77512, 0.882, 0.77512,\n  0.8562, 0.83, 0.8562, 0.83, 0.8562, 0.83, 1, 0.88465, 0.85158, 0.93859, 0.773,\n  0.8075, 0.85751, 0.8562, 1, 1, 0.77598, 1.12658, 1.15012, 1.15012, 1.15012,\n  1.15012, 1.15012, 1.15313, 1.15012, 1.15012, 1.15012, 1.08106, 1.03901,\n  0.85158, 0.77025, 0.62264, 0.7646, 0.65351, 0.86026, 0.69461, 0.89947,\n  1.03075, 0.85158, 0.77812, 0.76449, 0.88836, 0.70466, 0.8562, 0.86822, 0.8588,\n  0.83864, 0.77212, 0.85308, 0.93637, 0.87514, 0.82352, 0.8588, 0.85701,\n  0.76013, 0.89058, 0.77598, 0.8156, 0.82565, 0.78112, 0.77899, 0.89386,\n  0.83864, 0.8156, 0.9486, 0.92388, 0.96186, 1.03075, 0.91123, 0.9486, 0.93298,\n  0.878, 0.93942, 0.92388, 0.84596, 0.96186, 0.95119, 1.03075, 0.922, 0.88787,\n  0.95829, 0.88, 0.93559, 0.93859, 0.78815, 0.93758, 1, 0.89217, 1.03737,\n  0.91123, 0.93969, 0.77487, 0.85769, 0.86799, 1.03075, 0.91123, 0.93859,\n  0.91123, 0.86799, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 0.87832, 0.979, 0.87832, 0.979, 0.87832, 0.979, 0.77512, 0.882, 0.9219,\n  1, 0.89903, 1, 1, 1, 0.87321, 0.87321, 0.87321, 1, 1.027, 1.027, 1.027,\n  0.86847, 0.86847, 0.79121, 1, 1.124, 1, 1, 0.73572, 0.73572, 1, 1, 0.85034, 1,\n  1, 1, 1, 0.88465, 1, 1, 1, 0.669, 1, 1.36145, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1.04828, 1, 0.74948, 0.75187, 1.02058, 0.98391, 1.02119, 1, 1, 1.06233,\n  1.08595, 1.08595, 1, 1.08595, 1.08595, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.05233, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n];\nconst MyriadProItalicMetrics = { lineHeight: 1.2, lineGap: 0.2 };\n\n// Factors to rescale LiberationSans-Regular.ttf to have the same\n// metrics as MyriadPro-Regular.otf.\nconst MyriadProRegularFactors = [\n  1.36898, 1, 1, 0.76305, 0.82784, 0.94935, 0.89364, 0.92241, 0.89073, 0.90706,\n  0.98472, 0.85283, 0.85283, 1.0664, 1.02058, 0.74505, 0.9219, 0.74505, 1.23456,\n  0.92241, 0.92241, 0.92241, 0.92241, 0.92241, 0.92241, 0.92241, 0.92241,\n  0.92241, 0.92241, 0.74505, 0.74505, 1.02058, 1.02058, 1.02058, 0.73002,\n  0.72601, 0.91755, 0.8126, 0.80314, 0.92222, 0.73764, 0.79726, 0.83051,\n  0.90284, 0.86023, 0.74, 0.8126, 0.84869, 0.96518, 0.91115, 0.8858, 0.79761,\n  0.8858, 0.74498, 0.73914, 0.81363, 0.89591, 0.83659, 0.89633, 0.85608, 0.8111,\n  0.90531, 1.0222, 1.22736, 1.0222, 1.27014, 0.89903, 0.90088, 0.86667, 1.0231,\n  0.896, 1.01411, 0.90083, 1.05099, 1.00512, 0.99793, 1.05326, 1.09377, 0.938,\n  1.06226, 1.00119, 0.99793, 0.98714, 1.0231, 1.01231, 0.98196, 0.792, 1.19137,\n  0.99074, 0.962, 1.01915, 0.926, 0.942, 0.856, 0.85034, 0.92006, 0.85034,\n  1.02058, 0.69067, 0.92241, 0.92241, 0.92241, 0.92241, 0.92006, 0.9332,\n  0.90088, 0.91882, 0.93484, 0.75339, 1.02058, 0.56866, 0.54324, 0.79519,\n  1.08595, 1, 1, 0.90088, 1, 0.95325, 0.74505, 0.90088, 1, 0.97198, 0.75339,\n  0.91009, 0.91009, 0.91009, 0.66466, 0.91755, 0.91755, 0.91755, 0.91755,\n  0.91755, 0.91755, 0.788, 0.80314, 0.73764, 0.73764, 0.73764, 0.73764, 0.86023,\n  0.86023, 0.86023, 0.86023, 0.92915, 0.91115, 0.8858, 0.8858, 0.8858, 0.8858,\n  0.8858, 1.02058, 0.8858, 0.89591, 0.89591, 0.89591, 0.89591, 0.8111, 0.79611,\n  0.89713, 0.86667, 0.86667, 0.86667, 0.86667, 0.86667, 0.86667, 0.86936, 0.896,\n  0.90083, 0.90083, 0.90083, 0.90083, 0.84224, 0.84224, 0.84224, 0.84224,\n  0.97276, 0.99793, 0.98714, 0.98714, 0.98714, 0.98714, 0.98714, 1.08595,\n  0.89876, 0.99074, 0.99074, 0.99074, 0.99074, 0.942, 1.0231, 0.942, 0.91755,\n  0.86667, 0.91755, 0.86667, 0.91755, 0.86667, 0.80314, 0.896, 0.80314, 0.896,\n  0.80314, 0.896, 0.80314, 0.896, 0.92222, 0.93372, 0.92915, 1.01411, 0.73764,\n  0.90083, 0.73764, 0.90083, 0.73764, 0.90083, 0.73764, 0.90083, 0.73764,\n  0.90083, 0.83051, 1.00512, 0.83051, 1.00512, 0.83051, 1.00512, 1, 1, 0.90284,\n  0.99793, 0.90976, 0.99793, 0.86023, 0.84224, 0.86023, 0.84224, 0.86023,\n  0.84224, 0.86023, 1.05326, 0.86023, 0.84224, 0.82873, 1.07469, 0.74, 1.09377,\n  1, 1, 0.938, 0.84869, 1.06226, 1, 1, 0.84869, 0.83704, 0.84869, 0.81441,\n  0.85588, 1.08927, 0.91115, 0.99793, 1, 1, 0.91115, 0.99793, 0.91887, 0.90991,\n  0.99793, 0.8858, 0.98714, 0.8858, 0.98714, 0.8858, 0.98714, 0.894, 0.91434,\n  0.74498, 0.98196, 1, 1, 0.74498, 0.98196, 0.73914, 0.792, 0.73914, 0.792, 1,\n  1, 0.73914, 0.792, 1, 1, 0.81363, 0.904, 0.81363, 1.19137, 0.89591, 0.99074,\n  0.89591, 0.99074, 0.89591, 0.99074, 0.89591, 0.99074, 0.89591, 0.99074,\n  0.89591, 0.99074, 0.89633, 1.01915, 0.8111, 0.942, 0.8111, 0.90531, 0.856,\n  0.90531, 0.856, 0.90531, 0.856, 1, 0.92241, 0.91755, 0.86667, 0.788, 0.86936,\n  0.8858, 0.89876, 1, 1, 0.81363, 1.19137, 0.90088, 0.90088, 0.90088, 0.90088,\n  0.90088, 0.90088, 0.90088, 0.90088, 0.90088, 0.90388, 1.03901, 0.92138,\n  0.78105, 0.7154, 0.86169, 0.80513, 0.94007, 0.82528, 0.98612, 1.06226,\n  0.91755, 0.8126, 0.81884, 0.92819, 0.73764, 0.90531, 0.90284, 0.8858, 0.86023,\n  0.8126, 0.91172, 0.96518, 0.91115, 0.83089, 0.8858, 0.87791, 0.79761, 0.89297,\n  0.81363, 0.88157, 0.89992, 0.85608, 0.81992, 0.94307, 0.86023, 0.88157,\n  0.95308, 0.98699, 0.99793, 1.06226, 0.95817, 0.95308, 0.97358, 0.928, 0.98088,\n  0.98699, 0.92761, 0.99793, 0.96017, 1.06226, 0.986, 0.944, 0.95978, 0.938,\n  0.96705, 0.98714, 0.80442, 0.98972, 1, 0.89762, 1.04552, 0.95817, 0.99007,\n  0.87064, 0.91879, 0.88888, 1.06226, 0.95817, 0.98714, 0.95817, 0.88888, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.89633, 1.01915,\n  0.89633, 1.01915, 0.89633, 1.01915, 0.8111, 0.942, 0.9219, 1, 0.89903, 1, 1,\n  1, 0.93173, 0.93173, 0.93173, 1, 1.06304, 1.06304, 1.06904, 0.89903, 0.89903,\n  0.80549, 1, 1.156, 1, 1, 0.76575, 0.76575, 1, 1, 0.72458, 1, 1, 1, 1, 0.92241,\n  1, 1, 1, 0.619, 1, 1.36145, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.07257, 1,\n  0.74705, 0.71119, 1.02058, 1.024, 1.02119, 1, 1, 1.1536, 1.08595, 1.08595, 1,\n  1.08595, 1.08595, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.05638, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1,\n];\nconst MyriadProRegularMetrics = { lineHeight: 1.2, lineGap: 0.2 };\n\nexport {\n  MyriadProBoldFactors,\n  MyriadProBoldItalicFactors,\n  MyriadProBoldItalicMetrics,\n  MyriadProBoldMetrics,\n  MyriadProItalicFactors,\n  MyriadProItalicMetrics,\n  MyriadProRegularFactors,\n  MyriadProRegularMetrics,\n};\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// Factors to rescale LiberationSans-Bold.ttf to have the same\n// metrics as segoeuib.ttf.\nconst SegoeuiBoldFactors = [\n  1.76738, 1, 1, 0.99297, 0.9824, 1.04016, 1.06497, 1.03424, 0.97529, 1.17647,\n  1.23203, 1.1085, 1.1085, 1.16939, 1.2107, 0.9754, 1.21408, 0.9754, 1.59578,\n  1.03424, 1.03424, 1.03424, 1.03424, 1.03424, 1.03424, 1.03424, 1.03424,\n  1.03424, 1.03424, 0.81378, 0.81378, 1.2107, 1.2107, 1.2107, 0.71703, 0.97847,\n  0.97363, 0.88776, 0.8641, 1.02096, 0.79795, 0.85132, 0.914, 1.06085, 1.1406,\n  0.8007, 0.89858, 0.83693, 1.14889, 1.09398, 0.97489, 0.92094, 0.97489,\n  0.90399, 0.84041, 0.95923, 1.00135, 1, 1.06467, 0.98243, 0.90996, 0.99361,\n  1.1085, 1.56942, 1.1085, 1.2107, 0.74627, 0.94282, 0.96752, 1.01519, 0.86304,\n  1.01359, 0.97278, 1.15103, 1.01359, 0.98561, 1.02285, 1.02285, 1.00527,\n  1.02285, 1.0302, 0.99041, 1.0008, 1.01519, 1.01359, 1.02258, 0.79104, 1.16862,\n  0.99041, 0.97454, 1.02511, 0.99298, 0.96752, 0.95801, 0.94856, 1.16579,\n  0.94856, 1.2107, 0.9824, 1.03424, 1.03424, 1, 1.03424, 1.16579, 0.8727,\n  1.3871, 1.18622, 1.10818, 1.04478, 1.2107, 1.18622, 0.75155, 0.94994, 1.28826,\n  1.21408, 1.21408, 0.91056, 1, 0.91572, 0.9754, 0.64663, 1.18328, 1.24866,\n  1.04478, 1.14169, 1.15749, 1.17389, 0.71703, 0.97363, 0.97363, 0.97363,\n  0.97363, 0.97363, 0.97363, 0.93506, 0.8641, 0.79795, 0.79795, 0.79795,\n  0.79795, 1.1406, 1.1406, 1.1406, 1.1406, 1.02096, 1.09398, 0.97426, 0.97426,\n  0.97426, 0.97426, 0.97426, 1.2107, 0.97489, 1.00135, 1.00135, 1.00135,\n  1.00135, 0.90996, 0.92094, 1.02798, 0.96752, 0.96752, 0.96752, 0.96752,\n  0.96752, 0.96752, 0.93136, 0.86304, 0.97278, 0.97278, 0.97278, 0.97278,\n  1.02285, 1.02285, 1.02285, 1.02285, 0.97122, 0.99041, 1, 1, 1, 1, 1, 1.28826,\n  1.0008, 0.99041, 0.99041, 0.99041, 0.99041, 0.96752, 1.01519, 0.96752,\n  0.97363, 0.96752, 0.97363, 0.96752, 0.97363, 0.96752, 0.8641, 0.86304, 0.8641,\n  0.86304, 0.8641, 0.86304, 0.8641, 0.86304, 1.02096, 1.03057, 1.02096, 1.03517,\n  0.79795, 0.97278, 0.79795, 0.97278, 0.79795, 0.97278, 0.79795, 0.97278,\n  0.79795, 0.97278, 0.914, 1.01359, 0.914, 1.01359, 0.914, 1.01359, 1, 1,\n  1.06085, 0.98561, 1.06085, 1.00879, 1.1406, 1.02285, 1.1406, 1.02285, 1.1406,\n  1.02285, 1.1406, 1.02285, 1.1406, 1.02285, 0.97138, 1.08692, 0.8007, 1.02285,\n  1, 1, 1.00527, 0.83693, 1.02285, 1, 1, 0.83693, 0.9455, 0.83693, 0.90418,\n  0.83693, 1.13005, 1.09398, 0.99041, 1, 1, 1.09398, 0.99041, 0.96692, 1.09251,\n  0.99041, 0.97489, 1.0008, 0.97489, 1.0008, 0.97489, 1.0008, 0.93994, 0.97931,\n  0.90399, 1.02258, 1, 1, 0.90399, 1.02258, 0.84041, 0.79104, 0.84041, 0.79104,\n  0.84041, 0.79104, 0.84041, 0.79104, 1, 1, 0.95923, 1.07034, 0.95923, 1.16862,\n  1.00135, 0.99041, 1.00135, 0.99041, 1.00135, 0.99041, 1.00135, 0.99041,\n  1.00135, 0.99041, 1.00135, 0.99041, 1.06467, 1.02511, 0.90996, 0.96752,\n  0.90996, 0.99361, 0.95801, 0.99361, 0.95801, 0.99361, 0.95801, 1.07733,\n  1.03424, 0.97363, 0.96752, 0.93506, 0.93136, 0.97489, 1.0008, 1, 1, 0.95923,\n  1.16862, 1.15103, 1.15103, 1.01173, 1.03959, 0.75953, 0.81378, 0.79912,\n  1.15103, 1.21994, 0.95161, 0.87815, 1.01149, 0.81525, 0.7676, 0.98167,\n  1.01134, 1.02546, 0.84097, 1.03089, 1.18102, 0.97363, 0.88776, 0.85134,\n  0.97826, 0.79795, 0.99361, 1.06085, 0.97489, 1.1406, 0.89858, 1.0388, 1.14889,\n  1.09398, 0.86039, 0.97489, 1.0595, 0.92094, 0.94793, 0.95923, 0.90996,\n  0.99346, 0.98243, 1.02112, 0.95493, 1.1406, 0.90996, 1.03574, 1.02597, 1.0008,\n  1.18102, 1.06628, 1.03574, 1.0192, 1.01932, 1.00886, 0.97531, 1.0106, 1.0008,\n  1.13189, 1.18102, 1.02277, 0.98683, 1.0016, 0.99561, 1.07237, 1.0008, 0.90434,\n  0.99921, 0.93803, 0.8965, 1.23085, 1.06628, 1.04983, 0.96268, 1.0499, 0.98439,\n  1.18102, 1.06628, 1.0008, 1.06628, 0.98439, 0.79795, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1.09466, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.97278, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.02065, 1, 1, 1, 1, 1, 1, 1.06467, 1.02511,\n  1.06467, 1.02511, 1.06467, 1.02511, 0.90996, 0.96752, 1, 1.21408, 0.89903, 1,\n  1, 0.75155, 1.04394, 1.04394, 1.04394, 1.04394, 0.98633, 0.98633, 0.98633,\n  0.73047, 0.73047, 1.20642, 0.91211, 1.25635, 1.222, 1.02956, 1.03372, 1.03372,\n  0.96039, 1.24633, 1, 1.12454, 0.93503, 1.03424, 1.19687, 1.03424, 1, 1, 1,\n  0.771, 1, 1, 1.15749, 1.15749, 1.15749, 1.10948, 0.86279, 0.94434, 0.86279,\n  0.94434, 0.86182, 1, 1, 1.16897, 1, 0.96085, 0.90137, 1.2107, 1.18416,\n  1.13973, 0.69825, 0.9716, 2.10339, 1.29004, 1.29004, 1.21172, 1.29004,\n  1.29004, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1.42603, 1, 0.99862, 0.99862, 1, 0.87025, 0.87025, 0.87025, 0.87025,\n  1.18874, 1.42603, 1, 1.42603, 1.42603, 0.99862, 1, 1, 1, 1, 1, 1.2886,\n  1.04315, 1.15296, 1.34163, 1, 1, 1, 1.09193, 1.09193, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n];\nconst SegoeuiBoldMetrics = { lineHeight: 1.33008, lineGap: 0 };\n\n// Factors to rescale LiberationSans-BoldItalic.ttf to have the same\n// metrics as segoeuiz.ttf.\nconst SegoeuiBoldItalicFactors = [\n  1.76738, 1, 1, 0.98946, 1.03959, 1.04016, 1.02809, 1.036, 0.97639, 1.10953,\n  1.23203, 1.11144, 1.11144, 1.16939, 1.21237, 0.9754, 1.21261, 0.9754, 1.59754,\n  1.036, 1.036, 1.036, 1.036, 1.036, 1.036, 1.036, 1.036, 1.036, 1.036, 0.81378,\n  0.81378, 1.21237, 1.21237, 1.21237, 0.73541, 0.97847, 0.97363, 0.89723,\n  0.87897, 1.0426, 0.79429, 0.85292, 0.91149, 1.05815, 1.1406, 0.79631, 0.90128,\n  0.83853, 1.04396, 1.10615, 0.97552, 0.94436, 0.97552, 0.88641, 0.80527,\n  0.96083, 1.00135, 1, 1.06777, 0.9817, 0.91142, 0.99361, 1.11144, 1.57293,\n  1.11144, 1.21237, 0.74627, 1.31818, 1.06585, 0.97042, 0.83055, 0.97042,\n  0.93503, 1.1261, 0.97042, 0.97922, 1.14236, 0.94552, 1.01054, 1.14236,\n  1.02471, 0.97922, 0.94165, 0.97042, 0.97042, 1.0276, 0.78929, 1.1261, 0.97922,\n  0.95874, 1.02197, 0.98507, 0.96752, 0.97168, 0.95107, 1.16579, 0.95107,\n  1.21237, 1.03959, 1.036, 1.036, 1, 1.036, 1.16579, 0.87357, 1.31818, 1.18754,\n  1.26781, 1.05356, 1.21237, 1.18622, 0.79487, 0.94994, 1.29004, 1.24047,\n  1.24047, 1.31818, 1, 0.91484, 0.9754, 1.31818, 1.1349, 1.24866, 1.05356,\n  1.13934, 1.15574, 1.17389, 0.73541, 0.97363, 0.97363, 0.97363, 0.97363,\n  0.97363, 0.97363, 0.94385, 0.87897, 0.79429, 0.79429, 0.79429, 0.79429,\n  1.1406, 1.1406, 1.1406, 1.1406, 1.0426, 1.10615, 0.97552, 0.97552, 0.97552,\n  0.97552, 0.97552, 1.21237, 0.97552, 1.00135, 1.00135, 1.00135, 1.00135,\n  0.91142, 0.94436, 0.98721, 1.06585, 1.06585, 1.06585, 1.06585, 1.06585,\n  1.06585, 0.96705, 0.83055, 0.93503, 0.93503, 0.93503, 0.93503, 1.14236,\n  1.14236, 1.14236, 1.14236, 0.93125, 0.97922, 0.94165, 0.94165, 0.94165,\n  0.94165, 0.94165, 1.29004, 0.94165, 0.97922, 0.97922, 0.97922, 0.97922,\n  0.96752, 0.97042, 0.96752, 0.97363, 1.06585, 0.97363, 1.06585, 0.97363,\n  1.06585, 0.87897, 0.83055, 0.87897, 0.83055, 0.87897, 0.83055, 0.87897,\n  0.83055, 1.0426, 1.0033, 1.0426, 0.97042, 0.79429, 0.93503, 0.79429, 0.93503,\n  0.79429, 0.93503, 0.79429, 0.93503, 0.79429, 0.93503, 0.91149, 0.97042,\n  0.91149, 0.97042, 0.91149, 0.97042, 1, 1, 1.05815, 0.97922, 1.05815, 0.97922,\n  1.1406, 1.14236, 1.1406, 1.14236, 1.1406, 1.14236, 1.1406, 1.14236, 1.1406,\n  1.14236, 0.97441, 1.04302, 0.79631, 1.01582, 1, 1, 1.01054, 0.83853, 1.14236,\n  1, 1, 0.83853, 1.09125, 0.83853, 0.90418, 0.83853, 1.19508, 1.10615, 0.97922,\n  1, 1, 1.10615, 0.97922, 1.01034, 1.10466, 0.97922, 0.97552, 0.94165, 0.97552,\n  0.94165, 0.97552, 0.94165, 0.91602, 0.91981, 0.88641, 1.0276, 1, 1, 0.88641,\n  1.0276, 0.80527, 0.78929, 0.80527, 0.78929, 0.80527, 0.78929, 0.80527,\n  0.78929, 1, 1, 0.96083, 1.05403, 0.95923, 1.16862, 1.00135, 0.97922, 1.00135,\n  0.97922, 1.00135, 0.97922, 1.00135, 0.97922, 1.00135, 0.97922, 1.00135,\n  0.97922, 1.06777, 1.02197, 0.91142, 0.96752, 0.91142, 0.99361, 0.97168,\n  0.99361, 0.97168, 0.99361, 0.97168, 1.23199, 1.036, 0.97363, 1.06585, 0.94385,\n  0.96705, 0.97552, 0.94165, 1, 1, 0.96083, 1.1261, 1.31818, 1.31818, 1.31818,\n  1.31818, 1.31818, 1.31818, 1.31818, 1.31818, 1.31818, 0.95161, 1.27126,\n  1.00811, 0.83284, 0.77702, 0.99137, 0.95253, 1.0347, 0.86142, 1.07205,\n  1.14236, 0.97363, 0.89723, 0.86869, 1.09818, 0.79429, 0.99361, 1.05815,\n  0.97552, 1.1406, 0.90128, 1.06662, 1.04396, 1.10615, 0.84918, 0.97552,\n  1.04694, 0.94436, 0.98015, 0.96083, 0.91142, 1.00356, 0.9817, 1.01945,\n  0.98999, 1.1406, 0.91142, 1.04961, 0.9898, 1.00639, 1.14236, 1.07514, 1.04961,\n  0.99607, 1.02897, 1.008, 0.9898, 0.95134, 1.00639, 1.11121, 1.14236, 1.00518,\n  0.97981, 1.02186, 1, 1.08578, 0.94165, 0.99314, 0.98387, 0.93028, 0.93377,\n  1.35125, 1.07514, 1.10687, 0.93491, 1.04232, 1.00351, 1.14236, 1.07514,\n  0.94165, 1.07514, 1.00351, 0.79429, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1.09097, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.93503, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 0.96609, 1, 1, 1, 1, 1, 1, 1.06777, 1.02197, 1.06777,\n  1.02197, 1.06777, 1.02197, 0.91142, 0.96752, 1, 1.21261, 0.89903, 1, 1,\n  0.75155, 1.04745, 1.04745, 1.04745, 1.04394, 0.98633, 0.98633, 0.98633,\n  0.72959, 0.72959, 1.20502, 0.91406, 1.26514, 1.222, 1.02956, 1.03372, 1.03372,\n  0.96039, 1.24633, 1, 1.09125, 0.93327, 1.03336, 1.16541, 1.036, 1, 1, 1,\n  0.771, 1, 1, 1.15574, 1.15574, 1.15574, 1.15574, 0.86364, 0.94434, 0.86279,\n  0.94434, 0.86224, 1, 1, 1.16798, 1, 0.96085, 0.90068, 1.21237, 1.18416,\n  1.13904, 0.69825, 0.9716, 2.10339, 1.29004, 1.29004, 1.21339, 1.29004,\n  1.29004, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1.42603, 1, 0.99862, 0.99862, 1, 0.87025, 0.87025, 0.87025, 0.87025,\n  1.18775, 1.42603, 1, 1.42603, 1.42603, 0.99862, 1, 1, 1, 1, 1, 1.2886,\n  1.04315, 1.15296, 1.34163, 1, 1, 1, 1.13269, 1.13269, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n];\nconst SegoeuiBoldItalicMetrics = { lineHeight: 1.33008, lineGap: 0 };\n\n// Factors to rescale LiberationSans-Italic.ttf to have the same\n// metrics as segoeuii.ttf.\nconst SegoeuiItalicFactors = [\n  1.76738, 1, 1, 0.98946, 1.14763, 1.05365, 1.06234, 0.96927, 0.92586, 1.15373,\n  1.18414, 0.91349, 0.91349, 1.07403, 1.17308, 0.78383, 1.20088, 0.78383,\n  1.42531, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927,\n  0.96927, 0.96927, 0.96927, 0.78383, 0.78383, 1.17308, 1.17308, 1.17308,\n  0.77349, 0.94565, 0.94729, 0.85944, 0.88506, 0.9858, 0.74817, 0.80016,\n  0.88449, 0.98039, 0.95782, 0.69238, 0.89898, 0.83231, 0.98183, 1.03989,\n  0.96924, 0.86237, 0.96924, 0.80595, 0.74524, 0.86091, 0.95402, 0.94143,\n  0.98448, 0.8858, 0.83089, 0.93285, 1.0949, 1.39016, 1.0949, 1.45994, 0.74627,\n  1.04839, 0.97454, 0.97454, 0.87207, 0.97454, 0.87533, 1.06151, 0.97454,\n  1.00176, 1.16484, 1.08132, 0.98047, 1.16484, 1.02989, 1.01054, 0.96225,\n  0.97454, 0.97454, 1.06598, 0.79004, 1.16344, 1.00351, 0.94629, 0.9973,\n  0.91016, 0.96777, 0.9043, 0.91082, 0.92481, 0.91082, 1.17308, 0.95748,\n  0.96927, 0.96927, 1, 0.96927, 0.92481, 0.80597, 1.04839, 1.23393, 1.1781,\n  0.9245, 1.17308, 1.20808, 0.63218, 0.94261, 1.24822, 1.09971, 1.09971,\n  1.04839, 1, 0.85273, 0.78032, 1.04839, 1.09971, 1.22326, 0.9245, 1.09836,\n  1.13525, 1.15222, 0.70424, 0.94729, 0.94729, 0.94729, 0.94729, 0.94729,\n  0.94729, 0.85498, 0.88506, 0.74817, 0.74817, 0.74817, 0.74817, 0.95782,\n  0.95782, 0.95782, 0.95782, 0.9858, 1.03989, 0.96924, 0.96924, 0.96924,\n  0.96924, 0.96924, 1.17308, 0.96924, 0.95402, 0.95402, 0.95402, 0.95402,\n  0.83089, 0.86237, 0.88409, 0.97454, 0.97454, 0.97454, 0.97454, 0.97454,\n  0.97454, 0.92916, 0.87207, 0.87533, 0.87533, 0.87533, 0.87533, 0.93146,\n  0.93146, 0.93146, 0.93146, 0.93854, 1.01054, 0.96225, 0.96225, 0.96225,\n  0.96225, 0.96225, 1.24822, 0.8761, 1.00351, 1.00351, 1.00351, 1.00351,\n  0.96777, 0.97454, 0.96777, 0.94729, 0.97454, 0.94729, 0.97454, 0.94729,\n  0.97454, 0.88506, 0.87207, 0.88506, 0.87207, 0.88506, 0.87207, 0.88506,\n  0.87207, 0.9858, 0.95391, 0.9858, 0.97454, 0.74817, 0.87533, 0.74817, 0.87533,\n  0.74817, 0.87533, 0.74817, 0.87533, 0.74817, 0.87533, 0.88449, 0.97454,\n  0.88449, 0.97454, 0.88449, 0.97454, 1, 1, 0.98039, 1.00176, 0.98039, 1.00176,\n  0.95782, 0.93146, 0.95782, 0.93146, 0.95782, 0.93146, 0.95782, 1.16484,\n  0.95782, 0.93146, 0.84421, 1.12761, 0.69238, 1.08132, 1, 1, 0.98047, 0.83231,\n  1.16484, 1, 1, 0.84723, 1.04861, 0.84723, 0.78755, 0.83231, 1.23736, 1.03989,\n  1.01054, 1, 1, 1.03989, 1.01054, 0.9857, 1.03849, 1.01054, 0.96924, 0.96225,\n  0.96924, 0.96225, 0.96924, 0.96225, 0.92383, 0.90171, 0.80595, 1.06598, 1, 1,\n  0.80595, 1.06598, 0.74524, 0.79004, 0.74524, 0.79004, 0.74524, 0.79004,\n  0.74524, 0.79004, 1, 1, 0.86091, 1.02759, 0.85771, 1.16344, 0.95402, 1.00351,\n  0.95402, 1.00351, 0.95402, 1.00351, 0.95402, 1.00351, 0.95402, 1.00351,\n  0.95402, 1.00351, 0.98448, 0.9973, 0.83089, 0.96777, 0.83089, 0.93285, 0.9043,\n  0.93285, 0.9043, 0.93285, 0.9043, 1.31868, 0.96927, 0.94729, 0.97454, 0.85498,\n  0.92916, 0.96924, 0.8761, 1, 1, 0.86091, 1.16344, 1.04839, 1.04839, 1.04839,\n  1.04839, 1.04839, 1.04839, 1.04839, 1.04839, 1.04839, 0.81965, 0.81965,\n  0.94729, 0.78032, 0.71022, 0.90883, 0.84171, 0.99877, 0.77596, 1.05734, 1.2,\n  0.94729, 0.85944, 0.82791, 0.9607, 0.74817, 0.93285, 0.98039, 0.96924,\n  0.95782, 0.89898, 0.98316, 0.98183, 1.03989, 0.78614, 0.96924, 0.97642,\n  0.86237, 0.86075, 0.86091, 0.83089, 0.90082, 0.8858, 0.97296, 1.01284,\n  0.95782, 0.83089, 1.0976, 1.04, 1.03342, 1.2, 1.0675, 1.0976, 0.98205,\n  1.03809, 1.05097, 1.04, 0.95364, 1.03342, 1.05401, 1.2, 1.02148, 1.0119,\n  1.04724, 1.0127, 1.02732, 0.96225, 0.8965, 0.97783, 0.93574, 0.94818, 1.30679,\n  1.0675, 1.11826, 0.99821, 1.0557, 1.0326, 1.2, 1.0675, 0.96225, 1.0675,\n  1.0326, 0.74817, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.03754, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 0.87533, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  0.98705, 1, 1, 1, 1, 1, 1, 0.98448, 0.9973, 0.98448, 0.9973, 0.98448, 0.9973,\n  0.83089, 0.96777, 1, 1.20088, 0.89903, 1, 1, 0.75155, 0.94945, 0.94945,\n  0.94945, 0.94945, 1.12317, 1.12317, 1.12317, 0.67603, 0.67603, 1.15621,\n  0.73584, 1.21191, 1.22135, 1.06483, 0.94868, 0.94868, 0.95996, 1.24633, 1,\n  1.07497, 0.87709, 0.96927, 1.01473, 0.96927, 1, 1, 1, 0.77295, 1, 1, 1.09836,\n  1.09836, 1.09836, 1.01522, 0.86321, 0.94434, 0.8649, 0.94434, 0.86182, 1, 1,\n  1.083, 1, 0.91578, 0.86438, 1.17308, 1.18416, 1.14589, 0.69825, 0.97622,\n  1.96791, 1.24822, 1.24822, 1.17308, 1.24822, 1.24822, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.42603, 1, 0.99862,\n  0.99862, 1, 0.87025, 0.87025, 0.87025, 0.87025, 1.17984, 1.42603, 1, 1.42603,\n  1.42603, 0.99862, 1, 1, 1, 1, 1, 1.2886, 1.04315, 1.15296, 1.34163, 1, 1, 1,\n  1.10742, 1.10742, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n];\nconst SegoeuiItalicMetrics = { lineHeight: 1.33008, lineGap: 0 };\n\n// Factors to rescale LiberationSans-Regular.ttf to have the same\n// metrics as segoeui.ttf.\nconst SegoeuiRegularFactors = [\n  1.76738, 1, 1, 0.98594, 1.02285, 1.10454, 1.06234, 0.96927, 0.92037, 1.19985,\n  1.2046, 0.90616, 0.90616, 1.07152, 1.1714, 0.78032, 1.20088, 0.78032, 1.40246,\n  0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927,\n  0.96927, 0.96927, 0.78032, 0.78032, 1.1714, 1.1714, 1.1714, 0.80597, 0.94084,\n  0.96706, 0.85944, 0.85734, 0.97093, 0.75842, 0.79936, 0.88198, 0.9831,\n  0.95782, 0.71387, 0.86969, 0.84636, 1.07796, 1.03584, 0.96924, 0.83968,\n  0.96924, 0.82826, 0.79649, 0.85771, 0.95132, 0.93119, 0.98965, 0.88433,\n  0.8287, 0.93365, 1.08612, 1.3638, 1.08612, 1.45786, 0.74627, 0.80499, 0.91484,\n  1.05707, 0.92383, 1.05882, 0.9403, 1.12654, 1.05882, 1.01756, 1.09011,\n  1.09011, 0.99414, 1.09011, 1.034, 1.01756, 1.05356, 1.05707, 1.05882, 1.04399,\n  0.84863, 1.21968, 1.01756, 0.95801, 1.00068, 0.91797, 0.96777, 0.9043,\n  0.90351, 0.92105, 0.90351, 1.1714, 0.85337, 0.96927, 0.96927, 0.99912,\n  0.96927, 0.92105, 0.80597, 1.2434, 1.20808, 1.05937, 0.90957, 1.1714, 1.20808,\n  0.75155, 0.94261, 1.24644, 1.09971, 1.09971, 0.84751, 1, 0.85273, 0.78032,\n  0.61584, 1.05425, 1.17914, 0.90957, 1.08665, 1.11593, 1.14169, 0.73381,\n  0.96706, 0.96706, 0.96706, 0.96706, 0.96706, 0.96706, 0.86035, 0.85734,\n  0.75842, 0.75842, 0.75842, 0.75842, 0.95782, 0.95782, 0.95782, 0.95782,\n  0.97093, 1.03584, 0.96924, 0.96924, 0.96924, 0.96924, 0.96924, 1.1714,\n  0.96924, 0.95132, 0.95132, 0.95132, 0.95132, 0.8287, 0.83968, 0.89049,\n  0.91484, 0.91484, 0.91484, 0.91484, 0.91484, 0.91484, 0.93575, 0.92383,\n  0.9403, 0.9403, 0.9403, 0.9403, 0.8717, 0.8717, 0.8717, 0.8717, 1.00527,\n  1.01756, 1.05356, 1.05356, 1.05356, 1.05356, 1.05356, 1.24644, 0.95923,\n  1.01756, 1.01756, 1.01756, 1.01756, 0.96777, 1.05707, 0.96777, 0.96706,\n  0.91484, 0.96706, 0.91484, 0.96706, 0.91484, 0.85734, 0.92383, 0.85734,\n  0.92383, 0.85734, 0.92383, 0.85734, 0.92383, 0.97093, 1.0969, 0.97093,\n  1.05882, 0.75842, 0.9403, 0.75842, 0.9403, 0.75842, 0.9403, 0.75842, 0.9403,\n  0.75842, 0.9403, 0.88198, 1.05882, 0.88198, 1.05882, 0.88198, 1.05882, 1, 1,\n  0.9831, 1.01756, 0.9831, 1.01756, 0.95782, 0.8717, 0.95782, 0.8717, 0.95782,\n  0.8717, 0.95782, 1.09011, 0.95782, 0.8717, 0.84784, 1.11551, 0.71387, 1.09011,\n  1, 1, 0.99414, 0.84636, 1.09011, 1, 1, 0.84636, 1.0536, 0.84636, 0.94298,\n  0.84636, 1.23297, 1.03584, 1.01756, 1, 1, 1.03584, 1.01756, 1.00323, 1.03444,\n  1.01756, 0.96924, 1.05356, 0.96924, 1.05356, 0.96924, 1.05356, 0.93066,\n  0.98293, 0.82826, 1.04399, 1, 1, 0.82826, 1.04399, 0.79649, 0.84863, 0.79649,\n  0.84863, 0.79649, 0.84863, 0.79649, 0.84863, 1, 1, 0.85771, 1.17318, 0.85771,\n  1.21968, 0.95132, 1.01756, 0.95132, 1.01756, 0.95132, 1.01756, 0.95132,\n  1.01756, 0.95132, 1.01756, 0.95132, 1.01756, 0.98965, 1.00068, 0.8287,\n  0.96777, 0.8287, 0.93365, 0.9043, 0.93365, 0.9043, 0.93365, 0.9043, 1.08571,\n  0.96927, 0.96706, 0.91484, 0.86035, 0.93575, 0.96924, 0.95923, 1, 1, 0.85771,\n  1.21968, 1.11437, 1.11437, 0.93109, 0.91202, 0.60411, 0.84164, 0.55572,\n  1.01173, 0.97361, 0.81818, 0.81818, 0.96635, 0.78032, 0.72727, 0.92366,\n  0.98601, 1.03405, 0.77968, 1.09799, 1.2, 0.96706, 0.85944, 0.85638, 0.96491,\n  0.75842, 0.93365, 0.9831, 0.96924, 0.95782, 0.86969, 0.94152, 1.07796,\n  1.03584, 0.78437, 0.96924, 0.98715, 0.83968, 0.83491, 0.85771, 0.8287,\n  0.94492, 0.88433, 0.9287, 1.0098, 0.95782, 0.8287, 1.0625, 0.98248, 1.03424,\n  1.2, 1.01071, 1.0625, 0.95246, 1.03809, 1.04912, 0.98248, 1.00221, 1.03424,\n  1.05443, 1.2, 1.04785, 0.99609, 1.00169, 1.05176, 0.99346, 1.05356, 0.9087,\n  1.03004, 0.95542, 0.93117, 1.23362, 1.01071, 1.07831, 1.02512, 1.05205,\n  1.03502, 1.2, 1.01071, 1.05356, 1.01071, 1.03502, 0.75842, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1.03719, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.9403,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.04021, 1, 1, 1, 1, 1, 1, 0.98965,\n  1.00068, 0.98965, 1.00068, 0.98965, 1.00068, 0.8287, 0.96777, 1, 1.20088,\n  0.89903, 1, 1, 0.75155, 1.03077, 1.03077, 1.03077, 1.03077, 1.13196, 1.13196,\n  1.13196, 0.67428, 0.67428, 1.16039, 0.73291, 1.20996, 1.22135, 1.06483,\n  0.94868, 0.94868, 0.95996, 1.24633, 1, 1.07497, 0.87796, 0.96927, 1.01518,\n  0.96927, 1, 1, 1, 0.77295, 1, 1, 1.10539, 1.10539, 1.11358, 1.06967, 0.86279,\n  0.94434, 0.86279, 0.94434, 0.86182, 1, 1, 1.083, 1, 0.91578, 0.86507, 1.1714,\n  1.18416, 1.14589, 0.69825, 0.97622, 1.9697, 1.24822, 1.24822, 1.17238,\n  1.24822, 1.24822, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1.42603, 1, 0.99862, 0.99862, 1, 0.87025, 0.87025, 0.87025,\n  0.87025, 1.18083, 1.42603, 1, 1.42603, 1.42603, 0.99862, 1, 1, 1, 1, 1,\n  1.2886, 1.04315, 1.15296, 1.34163, 1, 1, 1, 1.10938, 1.10938, 1, 1, 1,\n  1.05425, 1.09971, 1.09971, 1.09971, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n];\nconst SegoeuiRegularMetrics = { lineHeight: 1.33008, lineGap: 0 };\n\nexport {\n  SegoeuiBoldFactors,\n  SegoeuiBoldItalicFactors,\n  SegoeuiBoldItalicMetrics,\n  SegoeuiBoldMetrics,\n  SegoeuiItalicFactors,\n  SegoeuiItalicMetrics,\n  SegoeuiRegularFactors,\n  SegoeuiRegularMetrics,\n};\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { FontType, info } from \"../shared/util.js\";\nimport { getEncoding, StandardEncoding } from \"./encodings.js\";\nimport { getGlyphsUnicode } from \"./glyphlist.js\";\nimport { getUnicodeForGlyph } from \"./unicode.js\";\n\n// Accented characters have issues on Windows and Linux. When this flag is\n// enabled glyphs that use seac and seac style endchar operators are truncated\n// and we instead just store the glyph id's of the base glyph and its accent to\n// be drawn individually.\n// Linux (freetype) requires that when a seac style endchar is used\n// that the charset must be a predefined one, however we build a\n// custom one. Windows just refuses to draw glyphs with seac operators.\nconst SEAC_ANALYSIS_ENABLED = true;\n\nconst FontFlags = {\n  FixedPitch: 1,\n  Serif: 2,\n  Symbolic: 4,\n  Script: 8,\n  Nonsymbolic: 32,\n  Italic: 64,\n  AllCap: 65536,\n  SmallCap: 131072,\n  ForceBold: 262144,\n};\n\n// prettier-ignore\nconst MacStandardGlyphOrdering = [\n  \".notdef\", \".null\", \"nonmarkingreturn\", \"space\", \"exclam\", \"quotedbl\",\n  \"numbersign\", \"dollar\", \"percent\", \"ampersand\", \"quotesingle\", \"parenleft\",\n  \"parenright\", \"asterisk\", \"plus\", \"comma\", \"hyphen\", \"period\", \"slash\",\n  \"zero\", \"one\", \"two\", \"three\", \"four\", \"five\", \"six\", \"seven\", \"eight\",\n  \"nine\", \"colon\", \"semicolon\", \"less\", \"equal\", \"greater\", \"question\", \"at\",\n  \"A\", \"B\", \"C\", \"D\", \"E\", \"F\", \"G\", \"H\", \"I\", \"J\", \"K\", \"L\", \"M\", \"N\", \"O\",\n  \"P\", \"Q\", \"R\", \"S\", \"T\", \"U\", \"V\", \"W\", \"X\", \"Y\", \"Z\", \"bracketleft\",\n  \"backslash\", \"bracketright\", \"asciicircum\", \"underscore\", \"grave\", \"a\", \"b\",\n  \"c\", \"d\", \"e\", \"f\", \"g\", \"h\", \"i\", \"j\", \"k\", \"l\", \"m\", \"n\", \"o\", \"p\", \"q\",\n  \"r\", \"s\", \"t\", \"u\", \"v\", \"w\", \"x\", \"y\", \"z\", \"braceleft\", \"bar\", \"braceright\",\n  \"asciitilde\", \"Adieresis\", \"Aring\", \"Ccedilla\", \"Eacute\", \"Ntilde\",\n  \"Odieresis\", \"Udieresis\", \"aacute\", \"agrave\", \"acircumflex\", \"adieresis\",\n  \"atilde\", \"aring\", \"ccedilla\", \"eacute\", \"egrave\", \"ecircumflex\", \"edieresis\",\n  \"iacute\", \"igrave\", \"icircumflex\", \"idieresis\", \"ntilde\", \"oacute\", \"ograve\",\n  \"ocircumflex\", \"odieresis\", \"otilde\", \"uacute\", \"ugrave\", \"ucircumflex\",\n  \"udieresis\", \"dagger\", \"degree\", \"cent\", \"sterling\", \"section\", \"bullet\",\n  \"paragraph\", \"germandbls\", \"registered\", \"copyright\", \"trademark\", \"acute\",\n  \"dieresis\", \"notequal\", \"AE\", \"Oslash\", \"infinity\", \"plusminus\", \"lessequal\",\n  \"greaterequal\", \"yen\", \"mu\", \"partialdiff\", \"summation\", \"product\", \"pi\",\n  \"integral\", \"ordfeminine\", \"ordmasculine\", \"Omega\", \"ae\", \"oslash\",\n  \"questiondown\", \"exclamdown\", \"logicalnot\", \"radical\", \"florin\",\n  \"approxequal\", \"Delta\", \"guillemotleft\", \"guillemotright\", \"ellipsis\",\n  \"nonbreakingspace\", \"Agrave\", \"Atilde\", \"Otilde\", \"OE\", \"oe\", \"endash\",\n  \"emdash\", \"quotedblleft\", \"quotedblright\", \"quoteleft\", \"quoteright\",\n  \"divide\", \"lozenge\", \"ydieresis\", \"Ydieresis\", \"fraction\", \"currency\",\n  \"guilsinglleft\", \"guilsinglright\", \"fi\", \"fl\", \"daggerdbl\", \"periodcentered\",\n  \"quotesinglbase\", \"quotedblbase\", \"perthousand\", \"Acircumflex\",\n  \"Ecircumflex\", \"Aacute\", \"Edieresis\", \"Egrave\", \"Iacute\", \"Icircumflex\",\n  \"Idieresis\", \"Igrave\", \"Oacute\", \"Ocircumflex\", \"apple\", \"Ograve\", \"Uacute\",\n  \"Ucircumflex\", \"Ugrave\", \"dotlessi\", \"circumflex\", \"tilde\", \"macron\",\n  \"breve\", \"dotaccent\", \"ring\", \"cedilla\", \"hungarumlaut\", \"ogonek\", \"caron\",\n  \"Lslash\", \"lslash\", \"Scaron\", \"scaron\", \"Zcaron\", \"zcaron\", \"brokenbar\",\n  \"Eth\", \"eth\", \"Yacute\", \"yacute\", \"Thorn\", \"thorn\", \"minus\", \"multiply\",\n  \"onesuperior\", \"twosuperior\", \"threesuperior\", \"onehalf\", \"onequarter\",\n  \"threequarters\", \"franc\", \"Gbreve\", \"gbreve\", \"Idotaccent\", \"Scedilla\",\n  \"scedilla\", \"Cacute\", \"cacute\", \"Ccaron\", \"ccaron\", \"dcroat\"];\n\nfunction getFontType(type, subtype, isStandardFont = false) {\n  switch (type) {\n    case \"Type1\":\n      if (isStandardFont) {\n        return FontType.TYPE1STANDARD;\n      }\n      return subtype === \"Type1C\" ? FontType.TYPE1C : FontType.TYPE1;\n    case \"CIDFontType0\":\n      return subtype === \"CIDFontType0C\"\n        ? FontType.CIDFONTTYPE0C\n        : FontType.CIDFONTTYPE0;\n    case \"OpenType\":\n      return FontType.OPENTYPE;\n    case \"TrueType\":\n      return FontType.TRUETYPE;\n    case \"CIDFontType2\":\n      return FontType.CIDFONTTYPE2;\n    case \"MMType1\":\n      return FontType.MMTYPE1;\n    case \"Type0\":\n      return FontType.TYPE0;\n    default:\n      return FontType.UNKNOWN;\n  }\n}\n\n// Some bad PDF generators, e.g. Scribus PDF, include glyph names\n// in a 'uniXXXX' format -- attempting to recover proper ones.\nfunction recoverGlyphName(name, glyphsUnicodeMap) {\n  if (glyphsUnicodeMap[name] !== undefined) {\n    return name;\n  }\n  // The glyph name is non-standard, trying to recover.\n  const unicode = getUnicodeForGlyph(name, glyphsUnicodeMap);\n  if (unicode !== -1) {\n    for (const key in glyphsUnicodeMap) {\n      if (glyphsUnicodeMap[key] === unicode) {\n        return key;\n      }\n    }\n  }\n  info(\"Unable to recover a standard glyph name for: \" + name);\n  return name;\n}\n\n/**\n * Shared logic for building a char code to glyph id mapping for Type1 and\n * simple CFF fonts. See section 9.6.6.2 of the spec.\n * @param {Object} properties Font properties object.\n * @param {Object} builtInEncoding The encoding contained within the actual font\n *   data.\n * @param {Array} glyphNames Array of glyph names where the index is the\n *   glyph ID.\n * @returns {Object} A char code to glyph ID map.\n */\nfunction type1FontGlyphMapping(properties, builtInEncoding, glyphNames) {\n  const charCodeToGlyphId = Object.create(null);\n  let glyphId, charCode, baseEncoding;\n  const isSymbolicFont = !!(properties.flags & FontFlags.Symbolic);\n\n  if (properties.isInternalFont) {\n    baseEncoding = builtInEncoding;\n    for (charCode = 0; charCode < baseEncoding.length; charCode++) {\n      glyphId = glyphNames.indexOf(baseEncoding[charCode]);\n      if (glyphId >= 0) {\n        charCodeToGlyphId[charCode] = glyphId;\n      } else {\n        charCodeToGlyphId[charCode] = 0; // notdef\n      }\n    }\n  } else if (properties.baseEncodingName) {\n    // If a valid base encoding name was used, the mapping is initialized with\n    // that.\n    baseEncoding = getEncoding(properties.baseEncodingName);\n    for (charCode = 0; charCode < baseEncoding.length; charCode++) {\n      glyphId = glyphNames.indexOf(baseEncoding[charCode]);\n      if (glyphId >= 0) {\n        charCodeToGlyphId[charCode] = glyphId;\n      } else {\n        charCodeToGlyphId[charCode] = 0; // notdef\n      }\n    }\n  } else if (isSymbolicFont) {\n    // For a symbolic font the encoding should be the fonts built-in encoding.\n    for (charCode in builtInEncoding) {\n      charCodeToGlyphId[charCode] = builtInEncoding[charCode];\n    }\n  } else {\n    // For non-symbolic fonts that don't have a base encoding the standard\n    // encoding should be used.\n    baseEncoding = StandardEncoding;\n    for (charCode = 0; charCode < baseEncoding.length; charCode++) {\n      glyphId = glyphNames.indexOf(baseEncoding[charCode]);\n      if (glyphId >= 0) {\n        charCodeToGlyphId[charCode] = glyphId;\n      } else {\n        charCodeToGlyphId[charCode] = 0; // notdef\n      }\n    }\n  }\n\n  // Lastly, merge in the differences.\n  const differences = properties.differences;\n  let glyphsUnicodeMap;\n  if (differences) {\n    for (charCode in differences) {\n      const glyphName = differences[charCode];\n      glyphId = glyphNames.indexOf(glyphName);\n\n      if (glyphId === -1) {\n        if (!glyphsUnicodeMap) {\n          glyphsUnicodeMap = getGlyphsUnicode();\n        }\n        const standardGlyphName = recoverGlyphName(glyphName, glyphsUnicodeMap);\n        if (standardGlyphName !== glyphName) {\n          glyphId = glyphNames.indexOf(standardGlyphName);\n        }\n      }\n      if (glyphId >= 0) {\n        charCodeToGlyphId[charCode] = glyphId;\n      } else {\n        charCodeToGlyphId[charCode] = 0; // notdef\n      }\n    }\n  }\n  return charCodeToGlyphId;\n}\n\nfunction normalizeFontName(name) {\n  return name.replace(/[,_]/g, \"-\").replace(/\\s/g, \"\");\n}\n\nexport {\n  FontFlags,\n  getFontType,\n  MacStandardGlyphOrdering,\n  normalizeFontName,\n  recoverGlyphName,\n  SEAC_ANALYSIS_ENABLED,\n  type1FontGlyphMapping,\n};\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// prettier-ignore\nconst ExpertEncoding = [\n  \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n  \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n  \"space\", \"exclamsmall\", \"Hungarumlautsmall\", \"\", \"dollaroldstyle\",\n  \"dollarsuperior\", \"ampersandsmall\", \"Acutesmall\", \"parenleftsuperior\",\n  \"parenrightsuperior\", \"twodotenleader\", \"onedotenleader\", \"comma\",\n  \"hyphen\", \"period\", \"fraction\", \"zerooldstyle\", \"oneoldstyle\",\n  \"twooldstyle\", \"threeoldstyle\", \"fouroldstyle\", \"fiveoldstyle\",\n  \"sixoldstyle\", \"sevenoldstyle\", \"eightoldstyle\", \"nineoldstyle\", \"colon\",\n  \"semicolon\", \"commasuperior\", \"threequartersemdash\", \"periodsuperior\",\n  \"questionsmall\", \"\", \"asuperior\", \"bsuperior\", \"centsuperior\", \"dsuperior\",\n  \"esuperior\", \"\", \"\", \"\", \"isuperior\", \"\", \"\", \"lsuperior\", \"msuperior\",\n  \"nsuperior\", \"osuperior\", \"\", \"\", \"rsuperior\", \"ssuperior\", \"tsuperior\",\n  \"\", \"ff\", \"fi\", \"fl\", \"ffi\", \"ffl\", \"parenleftinferior\", \"\",\n  \"parenrightinferior\", \"Circumflexsmall\", \"hyphensuperior\", \"Gravesmall\",\n  \"Asmall\", \"Bsmall\", \"Csmall\", \"Dsmall\", \"Esmall\", \"Fsmall\", \"Gsmall\",\n  \"Hsmall\", \"Ismall\", \"Jsmall\", \"Ksmall\", \"Lsmall\", \"Msmall\", \"Nsmall\",\n  \"Osmall\", \"Psmall\", \"Qsmall\", \"Rsmall\", \"Ssmall\", \"Tsmall\", \"Usmall\",\n  \"Vsmall\", \"Wsmall\", \"Xsmall\", \"Ysmall\", \"Zsmall\", \"colonmonetary\",\n  \"onefitted\", \"rupiah\", \"Tildesmall\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n  \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n  \"\", \"\", \"\", \"\", \"\", \"\", \"exclamdownsmall\", \"centoldstyle\", \"Lslashsmall\",\n  \"\", \"\", \"Scaronsmall\", \"Zcaronsmall\", \"Dieresissmall\", \"Brevesmall\",\n  \"Caronsmall\", \"\", \"Dotaccentsmall\", \"\", \"\", \"Macronsmall\", \"\", \"\",\n  \"figuredash\", \"hypheninferior\", \"\", \"\", \"Ogoneksmall\", \"Ringsmall\",\n  \"Cedillasmall\", \"\", \"\", \"\", \"onequarter\", \"onehalf\", \"threequarters\",\n  \"questiondownsmall\", \"oneeighth\", \"threeeighths\", \"fiveeighths\",\n  \"seveneighths\", \"onethird\", \"twothirds\", \"\", \"\", \"zerosuperior\",\n  \"onesuperior\", \"twosuperior\", \"threesuperior\", \"foursuperior\",\n  \"fivesuperior\", \"sixsuperior\", \"sevensuperior\", \"eightsuperior\",\n  \"ninesuperior\", \"zeroinferior\", \"oneinferior\", \"twoinferior\",\n  \"threeinferior\", \"fourinferior\", \"fiveinferior\", \"sixinferior\",\n  \"seveninferior\", \"eightinferior\", \"nineinferior\", \"centinferior\",\n  \"dollarinferior\", \"periodinferior\", \"commainferior\", \"Agravesmall\",\n  \"Aacutesmall\", \"Acircumflexsmall\", \"Atildesmall\", \"Adieresissmall\",\n  \"Aringsmall\", \"AEsmall\", \"Ccedillasmall\", \"Egravesmall\", \"Eacutesmall\",\n  \"Ecircumflexsmall\", \"Edieresissmall\", \"Igravesmall\", \"Iacutesmall\",\n  \"Icircumflexsmall\", \"Idieresissmall\", \"Ethsmall\", \"Ntildesmall\",\n  \"Ogravesmall\", \"Oacutesmall\", \"Ocircumflexsmall\", \"Otildesmall\",\n  \"Odieresissmall\", \"OEsmall\", \"Oslashsmall\", \"Ugravesmall\", \"Uacutesmall\",\n  \"Ucircumflexsmall\", \"Udieresissmall\", \"Yacutesmall\", \"Thornsmall\",\n  \"Ydieresissmall\"];\n\n// prettier-ignore\nconst MacExpertEncoding = [\n  \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n  \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n  \"space\", \"exclamsmall\", \"Hungarumlautsmall\", \"centoldstyle\",\n  \"dollaroldstyle\", \"dollarsuperior\", \"ampersandsmall\", \"Acutesmall\",\n  \"parenleftsuperior\", \"parenrightsuperior\", \"twodotenleader\",\n  \"onedotenleader\", \"comma\", \"hyphen\", \"period\", \"fraction\", \"zerooldstyle\",\n  \"oneoldstyle\", \"twooldstyle\", \"threeoldstyle\", \"fouroldstyle\",\n  \"fiveoldstyle\", \"sixoldstyle\", \"sevenoldstyle\", \"eightoldstyle\",\n  \"nineoldstyle\", \"colon\", \"semicolon\", \"\", \"threequartersemdash\", \"\",\n  \"questionsmall\", \"\", \"\", \"\", \"\", \"Ethsmall\", \"\", \"\", \"onequarter\",\n  \"onehalf\", \"threequarters\", \"oneeighth\", \"threeeighths\", \"fiveeighths\",\n  \"seveneighths\", \"onethird\", \"twothirds\", \"\", \"\", \"\", \"\", \"\", \"\", \"ff\",\n  \"fi\", \"fl\", \"ffi\", \"ffl\", \"parenleftinferior\", \"\", \"parenrightinferior\",\n  \"Circumflexsmall\", \"hypheninferior\", \"Gravesmall\", \"Asmall\", \"Bsmall\",\n  \"Csmall\", \"Dsmall\", \"Esmall\", \"Fsmall\", \"Gsmall\", \"Hsmall\", \"Ismall\",\n  \"Jsmall\", \"Ksmall\", \"Lsmall\", \"Msmall\", \"Nsmall\", \"Osmall\", \"Psmall\",\n  \"Qsmall\", \"Rsmall\", \"Ssmall\", \"Tsmall\", \"Usmall\", \"Vsmall\", \"Wsmall\",\n  \"Xsmall\", \"Ysmall\", \"Zsmall\", \"colonmonetary\", \"onefitted\", \"rupiah\",\n  \"Tildesmall\", \"\", \"\", \"asuperior\", \"centsuperior\", \"\", \"\", \"\", \"\",\n  \"Aacutesmall\", \"Agravesmall\", \"Acircumflexsmall\", \"Adieresissmall\",\n  \"Atildesmall\", \"Aringsmall\", \"Ccedillasmall\", \"Eacutesmall\", \"Egravesmall\",\n  \"Ecircumflexsmall\", \"Edieresissmall\", \"Iacutesmall\", \"Igravesmall\",\n  \"Icircumflexsmall\", \"Idieresissmall\", \"Ntildesmall\", \"Oacutesmall\",\n  \"Ogravesmall\", \"Ocircumflexsmall\", \"Odieresissmall\", \"Otildesmall\",\n  \"Uacutesmall\", \"Ugravesmall\", \"Ucircumflexsmall\", \"Udieresissmall\", \"\",\n  \"eightsuperior\", \"fourinferior\", \"threeinferior\", \"sixinferior\",\n  \"eightinferior\", \"seveninferior\", \"Scaronsmall\", \"\", \"centinferior\",\n  \"twoinferior\", \"\", \"Dieresissmall\", \"\", \"Caronsmall\", \"osuperior\",\n  \"fiveinferior\", \"\", \"commainferior\", \"periodinferior\", \"Yacutesmall\", \"\",\n  \"dollarinferior\", \"\", \"\", \"Thornsmall\", \"\", \"nineinferior\", \"zeroinferior\",\n  \"Zcaronsmall\", \"AEsmall\", \"Oslashsmall\", \"questiondownsmall\",\n  \"oneinferior\", \"Lslashsmall\", \"\", \"\", \"\", \"\", \"\", \"\", \"Cedillasmall\", \"\",\n  \"\", \"\", \"\", \"\", \"OEsmall\", \"figuredash\", \"hyphensuperior\", \"\", \"\", \"\", \"\",\n  \"exclamdownsmall\", \"\", \"Ydieresissmall\", \"\", \"onesuperior\", \"twosuperior\",\n  \"threesuperior\", \"foursuperior\", \"fivesuperior\", \"sixsuperior\",\n  \"sevensuperior\", \"ninesuperior\", \"zerosuperior\", \"\", \"esuperior\",\n  \"rsuperior\", \"tsuperior\", \"\", \"\", \"isuperior\", \"ssuperior\", \"dsuperior\",\n  \"\", \"\", \"\", \"\", \"\", \"lsuperior\", \"Ogoneksmall\", \"Brevesmall\",\n  \"Macronsmall\", \"bsuperior\", \"nsuperior\", \"msuperior\", \"commasuperior\",\n  \"periodsuperior\", \"Dotaccentsmall\", \"Ringsmall\", \"\", \"\", \"\", \"\"];\n\n// prettier-ignore\nconst MacRomanEncoding = [\n  \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n  \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n  \"space\", \"exclam\", \"quotedbl\", \"numbersign\", \"dollar\", \"percent\",\n  \"ampersand\", \"quotesingle\", \"parenleft\", \"parenright\", \"asterisk\", \"plus\",\n  \"comma\", \"hyphen\", \"period\", \"slash\", \"zero\", \"one\", \"two\", \"three\",\n  \"four\", \"five\", \"six\", \"seven\", \"eight\", \"nine\", \"colon\", \"semicolon\",\n  \"less\", \"equal\", \"greater\", \"question\", \"at\", \"A\", \"B\", \"C\", \"D\", \"E\", \"F\",\n  \"G\", \"H\", \"I\", \"J\", \"K\", \"L\", \"M\", \"N\", \"O\", \"P\", \"Q\", \"R\", \"S\", \"T\", \"U\",\n  \"V\", \"W\", \"X\", \"Y\", \"Z\", \"bracketleft\", \"backslash\", \"bracketright\",\n  \"asciicircum\", \"underscore\", \"grave\", \"a\", \"b\", \"c\", \"d\", \"e\", \"f\", \"g\",\n  \"h\", \"i\", \"j\", \"k\", \"l\", \"m\", \"n\", \"o\", \"p\", \"q\", \"r\", \"s\", \"t\", \"u\", \"v\",\n  \"w\", \"x\", \"y\", \"z\", \"braceleft\", \"bar\", \"braceright\", \"asciitilde\", \"\",\n  \"Adieresis\", \"Aring\", \"Ccedilla\", \"Eacute\", \"Ntilde\", \"Odieresis\",\n  \"Udieresis\", \"aacute\", \"agrave\", \"acircumflex\", \"adieresis\", \"atilde\",\n  \"aring\", \"ccedilla\", \"eacute\", \"egrave\", \"ecircumflex\", \"edieresis\",\n  \"iacute\", \"igrave\", \"icircumflex\", \"idieresis\", \"ntilde\", \"oacute\",\n  \"ograve\", \"ocircumflex\", \"odieresis\", \"otilde\", \"uacute\", \"ugrave\",\n  \"ucircumflex\", \"udieresis\", \"dagger\", \"degree\", \"cent\", \"sterling\",\n  \"section\", \"bullet\", \"paragraph\", \"germandbls\", \"registered\", \"copyright\",\n  \"trademark\", \"acute\", \"dieresis\", \"notequal\", \"AE\", \"Oslash\", \"infinity\",\n  \"plusminus\", \"lessequal\", \"greaterequal\", \"yen\", \"mu\", \"partialdiff\",\n  \"summation\", \"product\", \"pi\", \"integral\", \"ordfeminine\", \"ordmasculine\",\n  \"Omega\", \"ae\", \"oslash\", \"questiondown\", \"exclamdown\", \"logicalnot\",\n  \"radical\", \"florin\", \"approxequal\", \"Delta\", \"guillemotleft\",\n  \"guillemotright\", \"ellipsis\", \"space\", \"Agrave\", \"Atilde\", \"Otilde\", \"OE\",\n  \"oe\", \"endash\", \"emdash\", \"quotedblleft\", \"quotedblright\", \"quoteleft\",\n  \"quoteright\", \"divide\", \"lozenge\", \"ydieresis\", \"Ydieresis\", \"fraction\",\n  \"currency\", \"guilsinglleft\", \"guilsinglright\", \"fi\", \"fl\", \"daggerdbl\",\n  \"periodcentered\", \"quotesinglbase\", \"quotedblbase\", \"perthousand\",\n  \"Acircumflex\", \"Ecircumflex\", \"Aacute\", \"Edieresis\", \"Egrave\", \"Iacute\",\n  \"Icircumflex\", \"Idieresis\", \"Igrave\", \"Oacute\", \"Ocircumflex\", \"apple\",\n  \"Ograve\", \"Uacute\", \"Ucircumflex\", \"Ugrave\", \"dotlessi\", \"circumflex\",\n  \"tilde\", \"macron\", \"breve\", \"dotaccent\", \"ring\", \"cedilla\", \"hungarumlaut\",\n  \"ogonek\", \"caron\"];\n\n// prettier-ignore\nconst StandardEncoding = [\n  \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n  \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n  \"space\", \"exclam\", \"quotedbl\", \"numbersign\", \"dollar\", \"percent\",\n  \"ampersand\", \"quoteright\", \"parenleft\", \"parenright\", \"asterisk\", \"plus\",\n  \"comma\", \"hyphen\", \"period\", \"slash\", \"zero\", \"one\", \"two\", \"three\",\n  \"four\", \"five\", \"six\", \"seven\", \"eight\", \"nine\", \"colon\", \"semicolon\",\n  \"less\", \"equal\", \"greater\", \"question\", \"at\", \"A\", \"B\", \"C\", \"D\", \"E\", \"F\",\n  \"G\", \"H\", \"I\", \"J\", \"K\", \"L\", \"M\", \"N\", \"O\", \"P\", \"Q\", \"R\", \"S\", \"T\", \"U\",\n  \"V\", \"W\", \"X\", \"Y\", \"Z\", \"bracketleft\", \"backslash\", \"bracketright\",\n  \"asciicircum\", \"underscore\", \"quoteleft\", \"a\", \"b\", \"c\", \"d\", \"e\", \"f\",\n  \"g\", \"h\", \"i\", \"j\", \"k\", \"l\", \"m\", \"n\", \"o\", \"p\", \"q\", \"r\", \"s\", \"t\", \"u\",\n  \"v\", \"w\", \"x\", \"y\", \"z\", \"braceleft\", \"bar\", \"braceright\", \"asciitilde\",\n  \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n  \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"exclamdown\",\n  \"cent\", \"sterling\", \"fraction\", \"yen\", \"florin\", \"section\", \"currency\",\n  \"quotesingle\", \"quotedblleft\", \"guillemotleft\", \"guilsinglleft\",\n  \"guilsinglright\", \"fi\", \"fl\", \"\", \"endash\", \"dagger\", \"daggerdbl\",\n  \"periodcentered\", \"\", \"paragraph\", \"bullet\", \"quotesinglbase\",\n  \"quotedblbase\", \"quotedblright\", \"guillemotright\", \"ellipsis\",\n  \"perthousand\", \"\", \"questiondown\", \"\", \"grave\", \"acute\", \"circumflex\",\n  \"tilde\", \"macron\", \"breve\", \"dotaccent\", \"dieresis\", \"\", \"ring\", \"cedilla\",\n  \"\", \"hungarumlaut\", \"ogonek\", \"caron\", \"emdash\", \"\", \"\", \"\", \"\", \"\", \"\",\n  \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"AE\", \"\", \"ordfeminine\", \"\", \"\",\n  \"\", \"\", \"Lslash\", \"Oslash\", \"OE\", \"ordmasculine\", \"\", \"\", \"\", \"\", \"\", \"ae\",\n  \"\", \"\", \"\", \"dotlessi\", \"\", \"\", \"lslash\", \"oslash\", \"oe\", \"germandbls\", \"\",\n  \"\", \"\", \"\"];\n\n// prettier-ignore\nconst WinAnsiEncoding = [\n  \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n  \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n  \"space\", \"exclam\", \"quotedbl\", \"numbersign\", \"dollar\", \"percent\",\n  \"ampersand\", \"quotesingle\", \"parenleft\", \"parenright\", \"asterisk\", \"plus\",\n  \"comma\", \"hyphen\", \"period\", \"slash\", \"zero\", \"one\", \"two\", \"three\",\n  \"four\", \"five\", \"six\", \"seven\", \"eight\", \"nine\", \"colon\", \"semicolon\",\n  \"less\", \"equal\", \"greater\", \"question\", \"at\", \"A\", \"B\", \"C\", \"D\", \"E\", \"F\",\n  \"G\", \"H\", \"I\", \"J\", \"K\", \"L\", \"M\", \"N\", \"O\", \"P\", \"Q\", \"R\", \"S\", \"T\", \"U\",\n  \"V\", \"W\", \"X\", \"Y\", \"Z\", \"bracketleft\", \"backslash\", \"bracketright\",\n  \"asciicircum\", \"underscore\", \"grave\", \"a\", \"b\", \"c\", \"d\", \"e\", \"f\", \"g\",\n  \"h\", \"i\", \"j\", \"k\", \"l\", \"m\", \"n\", \"o\", \"p\", \"q\", \"r\", \"s\", \"t\", \"u\", \"v\",\n  \"w\", \"x\", \"y\", \"z\", \"braceleft\", \"bar\", \"braceright\", \"asciitilde\",\n  \"bullet\", \"Euro\", \"bullet\", \"quotesinglbase\", \"florin\", \"quotedblbase\",\n  \"ellipsis\", \"dagger\", \"daggerdbl\", \"circumflex\", \"perthousand\", \"Scaron\",\n  \"guilsinglleft\", \"OE\", \"bullet\", \"Zcaron\", \"bullet\", \"bullet\", \"quoteleft\",\n  \"quoteright\", \"quotedblleft\", \"quotedblright\", \"bullet\", \"endash\",\n  \"emdash\", \"tilde\", \"trademark\", \"scaron\", \"guilsinglright\", \"oe\", \"bullet\",\n  \"zcaron\", \"Ydieresis\", \"space\", \"exclamdown\", \"cent\", \"sterling\",\n  \"currency\", \"yen\", \"brokenbar\", \"section\", \"dieresis\", \"copyright\",\n  \"ordfeminine\", \"guillemotleft\", \"logicalnot\", \"hyphen\", \"registered\",\n  \"macron\", \"degree\", \"plusminus\", \"twosuperior\", \"threesuperior\", \"acute\",\n  \"mu\", \"paragraph\", \"periodcentered\", \"cedilla\", \"onesuperior\",\n  \"ordmasculine\", \"guillemotright\", \"onequarter\", \"onehalf\", \"threequarters\",\n  \"questiondown\", \"Agrave\", \"Aacute\", \"Acircumflex\", \"Atilde\", \"Adieresis\",\n  \"Aring\", \"AE\", \"Ccedilla\", \"Egrave\", \"Eacute\", \"Ecircumflex\", \"Edieresis\",\n  \"Igrave\", \"Iacute\", \"Icircumflex\", \"Idieresis\", \"Eth\", \"Ntilde\", \"Ograve\",\n  \"Oacute\", \"Ocircumflex\", \"Otilde\", \"Odieresis\", \"multiply\", \"Oslash\",\n  \"Ugrave\", \"Uacute\", \"Ucircumflex\", \"Udieresis\", \"Yacute\", \"Thorn\",\n  \"germandbls\", \"agrave\", \"aacute\", \"acircumflex\", \"atilde\", \"adieresis\",\n  \"aring\", \"ae\", \"ccedilla\", \"egrave\", \"eacute\", \"ecircumflex\", \"edieresis\",\n  \"igrave\", \"iacute\", \"icircumflex\", \"idieresis\", \"eth\", \"ntilde\", \"ograve\",\n  \"oacute\", \"ocircumflex\", \"otilde\", \"odieresis\", \"divide\", \"oslash\",\n  \"ugrave\", \"uacute\", \"ucircumflex\", \"udieresis\", \"yacute\", \"thorn\",\n  \"ydieresis\"];\n\n// prettier-ignore\nconst SymbolSetEncoding = [\n  \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n  \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n  \"space\", \"exclam\", \"universal\", \"numbersign\", \"existential\", \"percent\",\n  \"ampersand\", \"suchthat\", \"parenleft\", \"parenright\", \"asteriskmath\", \"plus\",\n  \"comma\", \"minus\", \"period\", \"slash\", \"zero\", \"one\", \"two\", \"three\", \"four\",\n  \"five\", \"six\", \"seven\", \"eight\", \"nine\", \"colon\", \"semicolon\", \"less\",\n  \"equal\", \"greater\", \"question\", \"congruent\", \"Alpha\", \"Beta\", \"Chi\",\n  \"Delta\", \"Epsilon\", \"Phi\", \"Gamma\", \"Eta\", \"Iota\", \"theta1\", \"Kappa\",\n  \"Lambda\", \"Mu\", \"Nu\", \"Omicron\", \"Pi\", \"Theta\", \"Rho\", \"Sigma\", \"Tau\",\n  \"Upsilon\", \"sigma1\", \"Omega\", \"Xi\", \"Psi\", \"Zeta\", \"bracketleft\",\n  \"therefore\", \"bracketright\", \"perpendicular\", \"underscore\", \"radicalex\",\n  \"alpha\", \"beta\", \"chi\", \"delta\", \"epsilon\", \"phi\", \"gamma\", \"eta\", \"iota\",\n  \"phi1\", \"kappa\", \"lambda\", \"mu\", \"nu\", \"omicron\", \"pi\", \"theta\", \"rho\",\n  \"sigma\", \"tau\", \"upsilon\", \"omega1\", \"omega\", \"xi\", \"psi\", \"zeta\",\n  \"braceleft\", \"bar\", \"braceright\", \"similar\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n  \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n  \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"Euro\", \"Upsilon1\", \"minute\", \"lessequal\",\n  \"fraction\", \"infinity\", \"florin\", \"club\", \"diamond\", \"heart\", \"spade\",\n  \"arrowboth\", \"arrowleft\", \"arrowup\", \"arrowright\", \"arrowdown\", \"degree\",\n  \"plusminus\", \"second\", \"greaterequal\", \"multiply\", \"proportional\",\n  \"partialdiff\", \"bullet\", \"divide\", \"notequal\", \"equivalence\",\n  \"approxequal\", \"ellipsis\", \"arrowvertex\", \"arrowhorizex\", \"carriagereturn\",\n  \"aleph\", \"Ifraktur\", \"Rfraktur\", \"weierstrass\", \"circlemultiply\",\n  \"circleplus\", \"emptyset\", \"intersection\", \"union\", \"propersuperset\",\n  \"reflexsuperset\", \"notsubset\", \"propersubset\", \"reflexsubset\", \"element\",\n  \"notelement\", \"angle\", \"gradient\", \"registerserif\", \"copyrightserif\",\n  \"trademarkserif\", \"product\", \"radical\", \"dotmath\", \"logicalnot\",\n  \"logicaland\", \"logicalor\", \"arrowdblboth\", \"arrowdblleft\", \"arrowdblup\",\n  \"arrowdblright\", \"arrowdbldown\", \"lozenge\", \"angleleft\", \"registersans\",\n  \"copyrightsans\", \"trademarksans\", \"summation\", \"parenlefttp\",\n  \"parenleftex\", \"parenleftbt\", \"bracketlefttp\", \"bracketleftex\",\n  \"bracketleftbt\", \"bracelefttp\", \"braceleftmid\", \"braceleftbt\", \"braceex\",\n  \"\", \"angleright\", \"integral\", \"integraltp\", \"integralex\", \"integralbt\",\n  \"parenrighttp\", \"parenrightex\", \"parenrightbt\", \"bracketrighttp\",\n  \"bracketrightex\", \"bracketrightbt\", \"bracerighttp\", \"bracerightmid\",\n  \"bracerightbt\", \"\"];\n\n// prettier-ignore\nconst ZapfDingbatsEncoding = [\n  \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n  \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n  \"space\", \"a1\", \"a2\", \"a202\", \"a3\", \"a4\", \"a5\", \"a119\", \"a118\", \"a117\",\n  \"a11\", \"a12\", \"a13\", \"a14\", \"a15\", \"a16\", \"a105\", \"a17\", \"a18\", \"a19\",\n  \"a20\", \"a21\", \"a22\", \"a23\", \"a24\", \"a25\", \"a26\", \"a27\", \"a28\", \"a6\", \"a7\",\n  \"a8\", \"a9\", \"a10\", \"a29\", \"a30\", \"a31\", \"a32\", \"a33\", \"a34\", \"a35\", \"a36\",\n  \"a37\", \"a38\", \"a39\", \"a40\", \"a41\", \"a42\", \"a43\", \"a44\", \"a45\", \"a46\",\n  \"a47\", \"a48\", \"a49\", \"a50\", \"a51\", \"a52\", \"a53\", \"a54\", \"a55\", \"a56\",\n  \"a57\", \"a58\", \"a59\", \"a60\", \"a61\", \"a62\", \"a63\", \"a64\", \"a65\", \"a66\",\n  \"a67\", \"a68\", \"a69\", \"a70\", \"a71\", \"a72\", \"a73\", \"a74\", \"a203\", \"a75\",\n  \"a204\", \"a76\", \"a77\", \"a78\", \"a79\", \"a81\", \"a82\", \"a83\", \"a84\", \"a97\",\n  \"a98\", \"a99\", \"a100\", \"\", \"a89\", \"a90\", \"a93\", \"a94\", \"a91\", \"a92\", \"a205\",\n  \"a85\", \"a206\", \"a86\", \"a87\", \"a88\", \"a95\", \"a96\", \"\", \"\", \"\", \"\", \"\", \"\",\n  \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"a101\", \"a102\", \"a103\",\n  \"a104\", \"a106\", \"a107\", \"a108\", \"a112\", \"a111\", \"a110\", \"a109\", \"a120\",\n  \"a121\", \"a122\", \"a123\", \"a124\", \"a125\", \"a126\", \"a127\", \"a128\", \"a129\",\n  \"a130\", \"a131\", \"a132\", \"a133\", \"a134\", \"a135\", \"a136\", \"a137\", \"a138\",\n  \"a139\", \"a140\", \"a141\", \"a142\", \"a143\", \"a144\", \"a145\", \"a146\", \"a147\",\n  \"a148\", \"a149\", \"a150\", \"a151\", \"a152\", \"a153\", \"a154\", \"a155\", \"a156\",\n  \"a157\", \"a158\", \"a159\", \"a160\", \"a161\", \"a163\", \"a164\", \"a196\", \"a165\",\n  \"a192\", \"a166\", \"a167\", \"a168\", \"a169\", \"a170\", \"a171\", \"a172\", \"a173\",\n  \"a162\", \"a174\", \"a175\", \"a176\", \"a177\", \"a178\", \"a179\", \"a193\", \"a180\",\n  \"a199\", \"a181\", \"a200\", \"a182\", \"\", \"a201\", \"a183\", \"a184\", \"a197\", \"a185\",\n  \"a194\", \"a198\", \"a186\", \"a195\", \"a187\", \"a188\", \"a189\", \"a190\", \"a191\", \"\"];\n\nfunction getEncoding(encodingName) {\n  switch (encodingName) {\n    case \"WinAnsiEncoding\":\n      return WinAnsiEncoding;\n    case \"StandardEncoding\":\n      return StandardEncoding;\n    case \"MacRomanEncoding\":\n      return MacRomanEncoding;\n    case \"SymbolSetEncoding\":\n      return SymbolSetEncoding;\n    case \"ZapfDingbatsEncoding\":\n      return ZapfDingbatsEncoding;\n    case \"ExpertEncoding\":\n      return ExpertEncoding;\n    case \"MacExpertEncoding\":\n      return MacExpertEncoding;\n    default:\n      return null;\n  }\n}\n\nexport {\n  ExpertEncoding,\n  getEncoding,\n  MacRomanEncoding,\n  StandardEncoding,\n  SymbolSetEncoding,\n  WinAnsiEncoding,\n  ZapfDingbatsEncoding,\n};\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* no-babel-preset */\n\nimport { getArrayLookupTableFactory } from \"./core_utils.js\";\n\nconst getGlyphsUnicode = getArrayLookupTableFactory(function () {\n  // prettier-ignore\n  return [\n    \"A\", 0x0041,\n    \"AE\", 0x00c6,\n    \"AEacute\", 0x01fc,\n    \"AEmacron\", 0x01e2,\n    \"AEsmall\", 0xf7e6,\n    \"Aacute\", 0x00c1,\n    \"Aacutesmall\", 0xf7e1,\n    \"Abreve\", 0x0102,\n    \"Abreveacute\", 0x1eae,\n    \"Abrevecyrillic\", 0x04d0,\n    \"Abrevedotbelow\", 0x1eb6,\n    \"Abrevegrave\", 0x1eb0,\n    \"Abrevehookabove\", 0x1eb2,\n    \"Abrevetilde\", 0x1eb4,\n    \"Acaron\", 0x01cd,\n    \"Acircle\", 0x24b6,\n    \"Acircumflex\", 0x00c2,\n    \"Acircumflexacute\", 0x1ea4,\n    \"Acircumflexdotbelow\", 0x1eac,\n    \"Acircumflexgrave\", 0x1ea6,\n    \"Acircumflexhookabove\", 0x1ea8,\n    \"Acircumflexsmall\", 0xf7e2,\n    \"Acircumflextilde\", 0x1eaa,\n    \"Acute\", 0xf6c9,\n    \"Acutesmall\", 0xf7b4,\n    \"Acyrillic\", 0x0410,\n    \"Adblgrave\", 0x0200,\n    \"Adieresis\", 0x00c4,\n    \"Adieresiscyrillic\", 0x04d2,\n    \"Adieresismacron\", 0x01de,\n    \"Adieresissmall\", 0xf7e4,\n    \"Adotbelow\", 0x1ea0,\n    \"Adotmacron\", 0x01e0,\n    \"Agrave\", 0x00c0,\n    \"Agravesmall\", 0xf7e0,\n    \"Ahookabove\", 0x1ea2,\n    \"Aiecyrillic\", 0x04d4,\n    \"Ainvertedbreve\", 0x0202,\n    \"Alpha\", 0x0391,\n    \"Alphatonos\", 0x0386,\n    \"Amacron\", 0x0100,\n    \"Amonospace\", 0xff21,\n    \"Aogonek\", 0x0104,\n    \"Aring\", 0x00c5,\n    \"Aringacute\", 0x01fa,\n    \"Aringbelow\", 0x1e00,\n    \"Aringsmall\", 0xf7e5,\n    \"Asmall\", 0xf761,\n    \"Atilde\", 0x00c3,\n    \"Atildesmall\", 0xf7e3,\n    \"Aybarmenian\", 0x0531,\n    \"B\", 0x0042,\n    \"Bcircle\", 0x24b7,\n    \"Bdotaccent\", 0x1e02,\n    \"Bdotbelow\", 0x1e04,\n    \"Becyrillic\", 0x0411,\n    \"Benarmenian\", 0x0532,\n    \"Beta\", 0x0392,\n    \"Bhook\", 0x0181,\n    \"Blinebelow\", 0x1e06,\n    \"Bmonospace\", 0xff22,\n    \"Brevesmall\", 0xf6f4,\n    \"Bsmall\", 0xf762,\n    \"Btopbar\", 0x0182,\n    \"C\", 0x0043,\n    \"Caarmenian\", 0x053e,\n    \"Cacute\", 0x0106,\n    \"Caron\", 0xf6ca,\n    \"Caronsmall\", 0xf6f5,\n    \"Ccaron\", 0x010c,\n    \"Ccedilla\", 0x00c7,\n    \"Ccedillaacute\", 0x1e08,\n    \"Ccedillasmall\", 0xf7e7,\n    \"Ccircle\", 0x24b8,\n    \"Ccircumflex\", 0x0108,\n    \"Cdot\", 0x010a,\n    \"Cdotaccent\", 0x010a,\n    \"Cedillasmall\", 0xf7b8,\n    \"Chaarmenian\", 0x0549,\n    \"Cheabkhasiancyrillic\", 0x04bc,\n    \"Checyrillic\", 0x0427,\n    \"Chedescenderabkhasiancyrillic\", 0x04be,\n    \"Chedescendercyrillic\", 0x04b6,\n    \"Chedieresiscyrillic\", 0x04f4,\n    \"Cheharmenian\", 0x0543,\n    \"Chekhakassiancyrillic\", 0x04cb,\n    \"Cheverticalstrokecyrillic\", 0x04b8,\n    \"Chi\", 0x03a7,\n    \"Chook\", 0x0187,\n    \"Circumflexsmall\", 0xf6f6,\n    \"Cmonospace\", 0xff23,\n    \"Coarmenian\", 0x0551,\n    \"Csmall\", 0xf763,\n    \"D\", 0x0044,\n    \"DZ\", 0x01f1,\n    \"DZcaron\", 0x01c4,\n    \"Daarmenian\", 0x0534,\n    \"Dafrican\", 0x0189,\n    \"Dcaron\", 0x010e,\n    \"Dcedilla\", 0x1e10,\n    \"Dcircle\", 0x24b9,\n    \"Dcircumflexbelow\", 0x1e12,\n    \"Dcroat\", 0x0110,\n    \"Ddotaccent\", 0x1e0a,\n    \"Ddotbelow\", 0x1e0c,\n    \"Decyrillic\", 0x0414,\n    \"Deicoptic\", 0x03ee,\n    \"Delta\", 0x2206,\n    \"Deltagreek\", 0x0394,\n    \"Dhook\", 0x018a,\n    \"Dieresis\", 0xf6cb,\n    \"DieresisAcute\", 0xf6cc,\n    \"DieresisGrave\", 0xf6cd,\n    \"Dieresissmall\", 0xf7a8,\n    \"Digammagreek\", 0x03dc,\n    \"Djecyrillic\", 0x0402,\n    \"Dlinebelow\", 0x1e0e,\n    \"Dmonospace\", 0xff24,\n    \"Dotaccentsmall\", 0xf6f7,\n    \"Dslash\", 0x0110,\n    \"Dsmall\", 0xf764,\n    \"Dtopbar\", 0x018b,\n    \"Dz\", 0x01f2,\n    \"Dzcaron\", 0x01c5,\n    \"Dzeabkhasiancyrillic\", 0x04e0,\n    \"Dzecyrillic\", 0x0405,\n    \"Dzhecyrillic\", 0x040f,\n    \"E\", 0x0045,\n    \"Eacute\", 0x00c9,\n    \"Eacutesmall\", 0xf7e9,\n    \"Ebreve\", 0x0114,\n    \"Ecaron\", 0x011a,\n    \"Ecedillabreve\", 0x1e1c,\n    \"Echarmenian\", 0x0535,\n    \"Ecircle\", 0x24ba,\n    \"Ecircumflex\", 0x00ca,\n    \"Ecircumflexacute\", 0x1ebe,\n    \"Ecircumflexbelow\", 0x1e18,\n    \"Ecircumflexdotbelow\", 0x1ec6,\n    \"Ecircumflexgrave\", 0x1ec0,\n    \"Ecircumflexhookabove\", 0x1ec2,\n    \"Ecircumflexsmall\", 0xf7ea,\n    \"Ecircumflextilde\", 0x1ec4,\n    \"Ecyrillic\", 0x0404,\n    \"Edblgrave\", 0x0204,\n    \"Edieresis\", 0x00cb,\n    \"Edieresissmall\", 0xf7eb,\n    \"Edot\", 0x0116,\n    \"Edotaccent\", 0x0116,\n    \"Edotbelow\", 0x1eb8,\n    \"Efcyrillic\", 0x0424,\n    \"Egrave\", 0x00c8,\n    \"Egravesmall\", 0xf7e8,\n    \"Eharmenian\", 0x0537,\n    \"Ehookabove\", 0x1eba,\n    \"Eightroman\", 0x2167,\n    \"Einvertedbreve\", 0x0206,\n    \"Eiotifiedcyrillic\", 0x0464,\n    \"Elcyrillic\", 0x041b,\n    \"Elevenroman\", 0x216a,\n    \"Emacron\", 0x0112,\n    \"Emacronacute\", 0x1e16,\n    \"Emacrongrave\", 0x1e14,\n    \"Emcyrillic\", 0x041c,\n    \"Emonospace\", 0xff25,\n    \"Encyrillic\", 0x041d,\n    \"Endescendercyrillic\", 0x04a2,\n    \"Eng\", 0x014a,\n    \"Enghecyrillic\", 0x04a4,\n    \"Enhookcyrillic\", 0x04c7,\n    \"Eogonek\", 0x0118,\n    \"Eopen\", 0x0190,\n    \"Epsilon\", 0x0395,\n    \"Epsilontonos\", 0x0388,\n    \"Ercyrillic\", 0x0420,\n    \"Ereversed\", 0x018e,\n    \"Ereversedcyrillic\", 0x042d,\n    \"Escyrillic\", 0x0421,\n    \"Esdescendercyrillic\", 0x04aa,\n    \"Esh\", 0x01a9,\n    \"Esmall\", 0xf765,\n    \"Eta\", 0x0397,\n    \"Etarmenian\", 0x0538,\n    \"Etatonos\", 0x0389,\n    \"Eth\", 0x00d0,\n    \"Ethsmall\", 0xf7f0,\n    \"Etilde\", 0x1ebc,\n    \"Etildebelow\", 0x1e1a,\n    \"Euro\", 0x20ac,\n    \"Ezh\", 0x01b7,\n    \"Ezhcaron\", 0x01ee,\n    \"Ezhreversed\", 0x01b8,\n    \"F\", 0x0046,\n    \"Fcircle\", 0x24bb,\n    \"Fdotaccent\", 0x1e1e,\n    \"Feharmenian\", 0x0556,\n    \"Feicoptic\", 0x03e4,\n    \"Fhook\", 0x0191,\n    \"Fitacyrillic\", 0x0472,\n    \"Fiveroman\", 0x2164,\n    \"Fmonospace\", 0xff26,\n    \"Fourroman\", 0x2163,\n    \"Fsmall\", 0xf766,\n    \"G\", 0x0047,\n    \"GBsquare\", 0x3387,\n    \"Gacute\", 0x01f4,\n    \"Gamma\", 0x0393,\n    \"Gammaafrican\", 0x0194,\n    \"Gangiacoptic\", 0x03ea,\n    \"Gbreve\", 0x011e,\n    \"Gcaron\", 0x01e6,\n    \"Gcedilla\", 0x0122,\n    \"Gcircle\", 0x24bc,\n    \"Gcircumflex\", 0x011c,\n    \"Gcommaaccent\", 0x0122,\n    \"Gdot\", 0x0120,\n    \"Gdotaccent\", 0x0120,\n    \"Gecyrillic\", 0x0413,\n    \"Ghadarmenian\", 0x0542,\n    \"Ghemiddlehookcyrillic\", 0x0494,\n    \"Ghestrokecyrillic\", 0x0492,\n    \"Gheupturncyrillic\", 0x0490,\n    \"Ghook\", 0x0193,\n    \"Gimarmenian\", 0x0533,\n    \"Gjecyrillic\", 0x0403,\n    \"Gmacron\", 0x1e20,\n    \"Gmonospace\", 0xff27,\n    \"Grave\", 0xf6ce,\n    \"Gravesmall\", 0xf760,\n    \"Gsmall\", 0xf767,\n    \"Gsmallhook\", 0x029b,\n    \"Gstroke\", 0x01e4,\n    \"H\", 0x0048,\n    \"H18533\", 0x25cf,\n    \"H18543\", 0x25aa,\n    \"H18551\", 0x25ab,\n    \"H22073\", 0x25a1,\n    \"HPsquare\", 0x33cb,\n    \"Haabkhasiancyrillic\", 0x04a8,\n    \"Hadescendercyrillic\", 0x04b2,\n    \"Hardsigncyrillic\", 0x042a,\n    \"Hbar\", 0x0126,\n    \"Hbrevebelow\", 0x1e2a,\n    \"Hcedilla\", 0x1e28,\n    \"Hcircle\", 0x24bd,\n    \"Hcircumflex\", 0x0124,\n    \"Hdieresis\", 0x1e26,\n    \"Hdotaccent\", 0x1e22,\n    \"Hdotbelow\", 0x1e24,\n    \"Hmonospace\", 0xff28,\n    \"Hoarmenian\", 0x0540,\n    \"Horicoptic\", 0x03e8,\n    \"Hsmall\", 0xf768,\n    \"Hungarumlaut\", 0xf6cf,\n    \"Hungarumlautsmall\", 0xf6f8,\n    \"Hzsquare\", 0x3390,\n    \"I\", 0x0049,\n    \"IAcyrillic\", 0x042f,\n    \"IJ\", 0x0132,\n    \"IUcyrillic\", 0x042e,\n    \"Iacute\", 0x00cd,\n    \"Iacutesmall\", 0xf7ed,\n    \"Ibreve\", 0x012c,\n    \"Icaron\", 0x01cf,\n    \"Icircle\", 0x24be,\n    \"Icircumflex\", 0x00ce,\n    \"Icircumflexsmall\", 0xf7ee,\n    \"Icyrillic\", 0x0406,\n    \"Idblgrave\", 0x0208,\n    \"Idieresis\", 0x00cf,\n    \"Idieresisacute\", 0x1e2e,\n    \"Idieresiscyrillic\", 0x04e4,\n    \"Idieresissmall\", 0xf7ef,\n    \"Idot\", 0x0130,\n    \"Idotaccent\", 0x0130,\n    \"Idotbelow\", 0x1eca,\n    \"Iebrevecyrillic\", 0x04d6,\n    \"Iecyrillic\", 0x0415,\n    \"Ifraktur\", 0x2111,\n    \"Igrave\", 0x00cc,\n    \"Igravesmall\", 0xf7ec,\n    \"Ihookabove\", 0x1ec8,\n    \"Iicyrillic\", 0x0418,\n    \"Iinvertedbreve\", 0x020a,\n    \"Iishortcyrillic\", 0x0419,\n    \"Imacron\", 0x012a,\n    \"Imacroncyrillic\", 0x04e2,\n    \"Imonospace\", 0xff29,\n    \"Iniarmenian\", 0x053b,\n    \"Iocyrillic\", 0x0401,\n    \"Iogonek\", 0x012e,\n    \"Iota\", 0x0399,\n    \"Iotaafrican\", 0x0196,\n    \"Iotadieresis\", 0x03aa,\n    \"Iotatonos\", 0x038a,\n    \"Ismall\", 0xf769,\n    \"Istroke\", 0x0197,\n    \"Itilde\", 0x0128,\n    \"Itildebelow\", 0x1e2c,\n    \"Izhitsacyrillic\", 0x0474,\n    \"Izhitsadblgravecyrillic\", 0x0476,\n    \"J\", 0x004a,\n    \"Jaarmenian\", 0x0541,\n    \"Jcircle\", 0x24bf,\n    \"Jcircumflex\", 0x0134,\n    \"Jecyrillic\", 0x0408,\n    \"Jheharmenian\", 0x054b,\n    \"Jmonospace\", 0xff2a,\n    \"Jsmall\", 0xf76a,\n    \"K\", 0x004b,\n    \"KBsquare\", 0x3385,\n    \"KKsquare\", 0x33cd,\n    \"Kabashkircyrillic\", 0x04a0,\n    \"Kacute\", 0x1e30,\n    \"Kacyrillic\", 0x041a,\n    \"Kadescendercyrillic\", 0x049a,\n    \"Kahookcyrillic\", 0x04c3,\n    \"Kappa\", 0x039a,\n    \"Kastrokecyrillic\", 0x049e,\n    \"Kaverticalstrokecyrillic\", 0x049c,\n    \"Kcaron\", 0x01e8,\n    \"Kcedilla\", 0x0136,\n    \"Kcircle\", 0x24c0,\n    \"Kcommaaccent\", 0x0136,\n    \"Kdotbelow\", 0x1e32,\n    \"Keharmenian\", 0x0554,\n    \"Kenarmenian\", 0x053f,\n    \"Khacyrillic\", 0x0425,\n    \"Kheicoptic\", 0x03e6,\n    \"Khook\", 0x0198,\n    \"Kjecyrillic\", 0x040c,\n    \"Klinebelow\", 0x1e34,\n    \"Kmonospace\", 0xff2b,\n    \"Koppacyrillic\", 0x0480,\n    \"Koppagreek\", 0x03de,\n    \"Ksicyrillic\", 0x046e,\n    \"Ksmall\", 0xf76b,\n    \"L\", 0x004c,\n    \"LJ\", 0x01c7,\n    \"LL\", 0xf6bf,\n    \"Lacute\", 0x0139,\n    \"Lambda\", 0x039b,\n    \"Lcaron\", 0x013d,\n    \"Lcedilla\", 0x013b,\n    \"Lcircle\", 0x24c1,\n    \"Lcircumflexbelow\", 0x1e3c,\n    \"Lcommaaccent\", 0x013b,\n    \"Ldot\", 0x013f,\n    \"Ldotaccent\", 0x013f,\n    \"Ldotbelow\", 0x1e36,\n    \"Ldotbelowmacron\", 0x1e38,\n    \"Liwnarmenian\", 0x053c,\n    \"Lj\", 0x01c8,\n    \"Ljecyrillic\", 0x0409,\n    \"Llinebelow\", 0x1e3a,\n    \"Lmonospace\", 0xff2c,\n    \"Lslash\", 0x0141,\n    \"Lslashsmall\", 0xf6f9,\n    \"Lsmall\", 0xf76c,\n    \"M\", 0x004d,\n    \"MBsquare\", 0x3386,\n    \"Macron\", 0xf6d0,\n    \"Macronsmall\", 0xf7af,\n    \"Macute\", 0x1e3e,\n    \"Mcircle\", 0x24c2,\n    \"Mdotaccent\", 0x1e40,\n    \"Mdotbelow\", 0x1e42,\n    \"Menarmenian\", 0x0544,\n    \"Mmonospace\", 0xff2d,\n    \"Msmall\", 0xf76d,\n    \"Mturned\", 0x019c,\n    \"Mu\", 0x039c,\n    \"N\", 0x004e,\n    \"NJ\", 0x01ca,\n    \"Nacute\", 0x0143,\n    \"Ncaron\", 0x0147,\n    \"Ncedilla\", 0x0145,\n    \"Ncircle\", 0x24c3,\n    \"Ncircumflexbelow\", 0x1e4a,\n    \"Ncommaaccent\", 0x0145,\n    \"Ndotaccent\", 0x1e44,\n    \"Ndotbelow\", 0x1e46,\n    \"Nhookleft\", 0x019d,\n    \"Nineroman\", 0x2168,\n    \"Nj\", 0x01cb,\n    \"Njecyrillic\", 0x040a,\n    \"Nlinebelow\", 0x1e48,\n    \"Nmonospace\", 0xff2e,\n    \"Nowarmenian\", 0x0546,\n    \"Nsmall\", 0xf76e,\n    \"Ntilde\", 0x00d1,\n    \"Ntildesmall\", 0xf7f1,\n    \"Nu\", 0x039d,\n    \"O\", 0x004f,\n    \"OE\", 0x0152,\n    \"OEsmall\", 0xf6fa,\n    \"Oacute\", 0x00d3,\n    \"Oacutesmall\", 0xf7f3,\n    \"Obarredcyrillic\", 0x04e8,\n    \"Obarreddieresiscyrillic\", 0x04ea,\n    \"Obreve\", 0x014e,\n    \"Ocaron\", 0x01d1,\n    \"Ocenteredtilde\", 0x019f,\n    \"Ocircle\", 0x24c4,\n    \"Ocircumflex\", 0x00d4,\n    \"Ocircumflexacute\", 0x1ed0,\n    \"Ocircumflexdotbelow\", 0x1ed8,\n    \"Ocircumflexgrave\", 0x1ed2,\n    \"Ocircumflexhookabove\", 0x1ed4,\n    \"Ocircumflexsmall\", 0xf7f4,\n    \"Ocircumflextilde\", 0x1ed6,\n    \"Ocyrillic\", 0x041e,\n    \"Odblacute\", 0x0150,\n    \"Odblgrave\", 0x020c,\n    \"Odieresis\", 0x00d6,\n    \"Odieresiscyrillic\", 0x04e6,\n    \"Odieresissmall\", 0xf7f6,\n    \"Odotbelow\", 0x1ecc,\n    \"Ogoneksmall\", 0xf6fb,\n    \"Ograve\", 0x00d2,\n    \"Ogravesmall\", 0xf7f2,\n    \"Oharmenian\", 0x0555,\n    \"Ohm\", 0x2126,\n    \"Ohookabove\", 0x1ece,\n    \"Ohorn\", 0x01a0,\n    \"Ohornacute\", 0x1eda,\n    \"Ohorndotbelow\", 0x1ee2,\n    \"Ohorngrave\", 0x1edc,\n    \"Ohornhookabove\", 0x1ede,\n    \"Ohorntilde\", 0x1ee0,\n    \"Ohungarumlaut\", 0x0150,\n    \"Oi\", 0x01a2,\n    \"Oinvertedbreve\", 0x020e,\n    \"Omacron\", 0x014c,\n    \"Omacronacute\", 0x1e52,\n    \"Omacrongrave\", 0x1e50,\n    \"Omega\", 0x2126,\n    \"Omegacyrillic\", 0x0460,\n    \"Omegagreek\", 0x03a9,\n    \"Omegaroundcyrillic\", 0x047a,\n    \"Omegatitlocyrillic\", 0x047c,\n    \"Omegatonos\", 0x038f,\n    \"Omicron\", 0x039f,\n    \"Omicrontonos\", 0x038c,\n    \"Omonospace\", 0xff2f,\n    \"Oneroman\", 0x2160,\n    \"Oogonek\", 0x01ea,\n    \"Oogonekmacron\", 0x01ec,\n    \"Oopen\", 0x0186,\n    \"Oslash\", 0x00d8,\n    \"Oslashacute\", 0x01fe,\n    \"Oslashsmall\", 0xf7f8,\n    \"Osmall\", 0xf76f,\n    \"Ostrokeacute\", 0x01fe,\n    \"Otcyrillic\", 0x047e,\n    \"Otilde\", 0x00d5,\n    \"Otildeacute\", 0x1e4c,\n    \"Otildedieresis\", 0x1e4e,\n    \"Otildesmall\", 0xf7f5,\n    \"P\", 0x0050,\n    \"Pacute\", 0x1e54,\n    \"Pcircle\", 0x24c5,\n    \"Pdotaccent\", 0x1e56,\n    \"Pecyrillic\", 0x041f,\n    \"Peharmenian\", 0x054a,\n    \"Pemiddlehookcyrillic\", 0x04a6,\n    \"Phi\", 0x03a6,\n    \"Phook\", 0x01a4,\n    \"Pi\", 0x03a0,\n    \"Piwrarmenian\", 0x0553,\n    \"Pmonospace\", 0xff30,\n    \"Psi\", 0x03a8,\n    \"Psicyrillic\", 0x0470,\n    \"Psmall\", 0xf770,\n    \"Q\", 0x0051,\n    \"Qcircle\", 0x24c6,\n    \"Qmonospace\", 0xff31,\n    \"Qsmall\", 0xf771,\n    \"R\", 0x0052,\n    \"Raarmenian\", 0x054c,\n    \"Racute\", 0x0154,\n    \"Rcaron\", 0x0158,\n    \"Rcedilla\", 0x0156,\n    \"Rcircle\", 0x24c7,\n    \"Rcommaaccent\", 0x0156,\n    \"Rdblgrave\", 0x0210,\n    \"Rdotaccent\", 0x1e58,\n    \"Rdotbelow\", 0x1e5a,\n    \"Rdotbelowmacron\", 0x1e5c,\n    \"Reharmenian\", 0x0550,\n    \"Rfraktur\", 0x211c,\n    \"Rho\", 0x03a1,\n    \"Ringsmall\", 0xf6fc,\n    \"Rinvertedbreve\", 0x0212,\n    \"Rlinebelow\", 0x1e5e,\n    \"Rmonospace\", 0xff32,\n    \"Rsmall\", 0xf772,\n    \"Rsmallinverted\", 0x0281,\n    \"Rsmallinvertedsuperior\", 0x02b6,\n    \"S\", 0x0053,\n    \"SF010000\", 0x250c,\n    \"SF020000\", 0x2514,\n    \"SF030000\", 0x2510,\n    \"SF040000\", 0x2518,\n    \"SF050000\", 0x253c,\n    \"SF060000\", 0x252c,\n    \"SF070000\", 0x2534,\n    \"SF080000\", 0x251c,\n    \"SF090000\", 0x2524,\n    \"SF100000\", 0x2500,\n    \"SF110000\", 0x2502,\n    \"SF190000\", 0x2561,\n    \"SF200000\", 0x2562,\n    \"SF210000\", 0x2556,\n    \"SF220000\", 0x2555,\n    \"SF230000\", 0x2563,\n    \"SF240000\", 0x2551,\n    \"SF250000\", 0x2557,\n    \"SF260000\", 0x255d,\n    \"SF270000\", 0x255c,\n    \"SF280000\", 0x255b,\n    \"SF360000\", 0x255e,\n    \"SF370000\", 0x255f,\n    \"SF380000\", 0x255a,\n    \"SF390000\", 0x2554,\n    \"SF400000\", 0x2569,\n    \"SF410000\", 0x2566,\n    \"SF420000\", 0x2560,\n    \"SF430000\", 0x2550,\n    \"SF440000\", 0x256c,\n    \"SF450000\", 0x2567,\n    \"SF460000\", 0x2568,\n    \"SF470000\", 0x2564,\n    \"SF480000\", 0x2565,\n    \"SF490000\", 0x2559,\n    \"SF500000\", 0x2558,\n    \"SF510000\", 0x2552,\n    \"SF520000\", 0x2553,\n    \"SF530000\", 0x256b,\n    \"SF540000\", 0x256a,\n    \"Sacute\", 0x015a,\n    \"Sacutedotaccent\", 0x1e64,\n    \"Sampigreek\", 0x03e0,\n    \"Scaron\", 0x0160,\n    \"Scarondotaccent\", 0x1e66,\n    \"Scaronsmall\", 0xf6fd,\n    \"Scedilla\", 0x015e,\n    \"Schwa\", 0x018f,\n    \"Schwacyrillic\", 0x04d8,\n    \"Schwadieresiscyrillic\", 0x04da,\n    \"Scircle\", 0x24c8,\n    \"Scircumflex\", 0x015c,\n    \"Scommaaccent\", 0x0218,\n    \"Sdotaccent\", 0x1e60,\n    \"Sdotbelow\", 0x1e62,\n    \"Sdotbelowdotaccent\", 0x1e68,\n    \"Seharmenian\", 0x054d,\n    \"Sevenroman\", 0x2166,\n    \"Shaarmenian\", 0x0547,\n    \"Shacyrillic\", 0x0428,\n    \"Shchacyrillic\", 0x0429,\n    \"Sheicoptic\", 0x03e2,\n    \"Shhacyrillic\", 0x04ba,\n    \"Shimacoptic\", 0x03ec,\n    \"Sigma\", 0x03a3,\n    \"Sixroman\", 0x2165,\n    \"Smonospace\", 0xff33,\n    \"Softsigncyrillic\", 0x042c,\n    \"Ssmall\", 0xf773,\n    \"Stigmagreek\", 0x03da,\n    \"T\", 0x0054,\n    \"Tau\", 0x03a4,\n    \"Tbar\", 0x0166,\n    \"Tcaron\", 0x0164,\n    \"Tcedilla\", 0x0162,\n    \"Tcircle\", 0x24c9,\n    \"Tcircumflexbelow\", 0x1e70,\n    \"Tcommaaccent\", 0x0162,\n    \"Tdotaccent\", 0x1e6a,\n    \"Tdotbelow\", 0x1e6c,\n    \"Tecyrillic\", 0x0422,\n    \"Tedescendercyrillic\", 0x04ac,\n    \"Tenroman\", 0x2169,\n    \"Tetsecyrillic\", 0x04b4,\n    \"Theta\", 0x0398,\n    \"Thook\", 0x01ac,\n    \"Thorn\", 0x00de,\n    \"Thornsmall\", 0xf7fe,\n    \"Threeroman\", 0x2162,\n    \"Tildesmall\", 0xf6fe,\n    \"Tiwnarmenian\", 0x054f,\n    \"Tlinebelow\", 0x1e6e,\n    \"Tmonospace\", 0xff34,\n    \"Toarmenian\", 0x0539,\n    \"Tonefive\", 0x01bc,\n    \"Tonesix\", 0x0184,\n    \"Tonetwo\", 0x01a7,\n    \"Tretroflexhook\", 0x01ae,\n    \"Tsecyrillic\", 0x0426,\n    \"Tshecyrillic\", 0x040b,\n    \"Tsmall\", 0xf774,\n    \"Twelveroman\", 0x216b,\n    \"Tworoman\", 0x2161,\n    \"U\", 0x0055,\n    \"Uacute\", 0x00da,\n    \"Uacutesmall\", 0xf7fa,\n    \"Ubreve\", 0x016c,\n    \"Ucaron\", 0x01d3,\n    \"Ucircle\", 0x24ca,\n    \"Ucircumflex\", 0x00db,\n    \"Ucircumflexbelow\", 0x1e76,\n    \"Ucircumflexsmall\", 0xf7fb,\n    \"Ucyrillic\", 0x0423,\n    \"Udblacute\", 0x0170,\n    \"Udblgrave\", 0x0214,\n    \"Udieresis\", 0x00dc,\n    \"Udieresisacute\", 0x01d7,\n    \"Udieresisbelow\", 0x1e72,\n    \"Udieresiscaron\", 0x01d9,\n    \"Udieresiscyrillic\", 0x04f0,\n    \"Udieresisgrave\", 0x01db,\n    \"Udieresismacron\", 0x01d5,\n    \"Udieresissmall\", 0xf7fc,\n    \"Udotbelow\", 0x1ee4,\n    \"Ugrave\", 0x00d9,\n    \"Ugravesmall\", 0xf7f9,\n    \"Uhookabove\", 0x1ee6,\n    \"Uhorn\", 0x01af,\n    \"Uhornacute\", 0x1ee8,\n    \"Uhorndotbelow\", 0x1ef0,\n    \"Uhorngrave\", 0x1eea,\n    \"Uhornhookabove\", 0x1eec,\n    \"Uhorntilde\", 0x1eee,\n    \"Uhungarumlaut\", 0x0170,\n    \"Uhungarumlautcyrillic\", 0x04f2,\n    \"Uinvertedbreve\", 0x0216,\n    \"Ukcyrillic\", 0x0478,\n    \"Umacron\", 0x016a,\n    \"Umacroncyrillic\", 0x04ee,\n    \"Umacrondieresis\", 0x1e7a,\n    \"Umonospace\", 0xff35,\n    \"Uogonek\", 0x0172,\n    \"Upsilon\", 0x03a5,\n    \"Upsilon1\", 0x03d2,\n    \"Upsilonacutehooksymbolgreek\", 0x03d3,\n    \"Upsilonafrican\", 0x01b1,\n    \"Upsilondieresis\", 0x03ab,\n    \"Upsilondieresishooksymbolgreek\", 0x03d4,\n    \"Upsilonhooksymbol\", 0x03d2,\n    \"Upsilontonos\", 0x038e,\n    \"Uring\", 0x016e,\n    \"Ushortcyrillic\", 0x040e,\n    \"Usmall\", 0xf775,\n    \"Ustraightcyrillic\", 0x04ae,\n    \"Ustraightstrokecyrillic\", 0x04b0,\n    \"Utilde\", 0x0168,\n    \"Utildeacute\", 0x1e78,\n    \"Utildebelow\", 0x1e74,\n    \"V\", 0x0056,\n    \"Vcircle\", 0x24cb,\n    \"Vdotbelow\", 0x1e7e,\n    \"Vecyrillic\", 0x0412,\n    \"Vewarmenian\", 0x054e,\n    \"Vhook\", 0x01b2,\n    \"Vmonospace\", 0xff36,\n    \"Voarmenian\", 0x0548,\n    \"Vsmall\", 0xf776,\n    \"Vtilde\", 0x1e7c,\n    \"W\", 0x0057,\n    \"Wacute\", 0x1e82,\n    \"Wcircle\", 0x24cc,\n    \"Wcircumflex\", 0x0174,\n    \"Wdieresis\", 0x1e84,\n    \"Wdotaccent\", 0x1e86,\n    \"Wdotbelow\", 0x1e88,\n    \"Wgrave\", 0x1e80,\n    \"Wmonospace\", 0xff37,\n    \"Wsmall\", 0xf777,\n    \"X\", 0x0058,\n    \"Xcircle\", 0x24cd,\n    \"Xdieresis\", 0x1e8c,\n    \"Xdotaccent\", 0x1e8a,\n    \"Xeharmenian\", 0x053d,\n    \"Xi\", 0x039e,\n    \"Xmonospace\", 0xff38,\n    \"Xsmall\", 0xf778,\n    \"Y\", 0x0059,\n    \"Yacute\", 0x00dd,\n    \"Yacutesmall\", 0xf7fd,\n    \"Yatcyrillic\", 0x0462,\n    \"Ycircle\", 0x24ce,\n    \"Ycircumflex\", 0x0176,\n    \"Ydieresis\", 0x0178,\n    \"Ydieresissmall\", 0xf7ff,\n    \"Ydotaccent\", 0x1e8e,\n    \"Ydotbelow\", 0x1ef4,\n    \"Yericyrillic\", 0x042b,\n    \"Yerudieresiscyrillic\", 0x04f8,\n    \"Ygrave\", 0x1ef2,\n    \"Yhook\", 0x01b3,\n    \"Yhookabove\", 0x1ef6,\n    \"Yiarmenian\", 0x0545,\n    \"Yicyrillic\", 0x0407,\n    \"Yiwnarmenian\", 0x0552,\n    \"Ymonospace\", 0xff39,\n    \"Ysmall\", 0xf779,\n    \"Ytilde\", 0x1ef8,\n    \"Yusbigcyrillic\", 0x046a,\n    \"Yusbigiotifiedcyrillic\", 0x046c,\n    \"Yuslittlecyrillic\", 0x0466,\n    \"Yuslittleiotifiedcyrillic\", 0x0468,\n    \"Z\", 0x005a,\n    \"Zaarmenian\", 0x0536,\n    \"Zacute\", 0x0179,\n    \"Zcaron\", 0x017d,\n    \"Zcaronsmall\", 0xf6ff,\n    \"Zcircle\", 0x24cf,\n    \"Zcircumflex\", 0x1e90,\n    \"Zdot\", 0x017b,\n    \"Zdotaccent\", 0x017b,\n    \"Zdotbelow\", 0x1e92,\n    \"Zecyrillic\", 0x0417,\n    \"Zedescendercyrillic\", 0x0498,\n    \"Zedieresiscyrillic\", 0x04de,\n    \"Zeta\", 0x0396,\n    \"Zhearmenian\", 0x053a,\n    \"Zhebrevecyrillic\", 0x04c1,\n    \"Zhecyrillic\", 0x0416,\n    \"Zhedescendercyrillic\", 0x0496,\n    \"Zhedieresiscyrillic\", 0x04dc,\n    \"Zlinebelow\", 0x1e94,\n    \"Zmonospace\", 0xff3a,\n    \"Zsmall\", 0xf77a,\n    \"Zstroke\", 0x01b5,\n    \"a\", 0x0061,\n    \"aabengali\", 0x0986,\n    \"aacute\", 0x00e1,\n    \"aadeva\", 0x0906,\n    \"aagujarati\", 0x0a86,\n    \"aagurmukhi\", 0x0a06,\n    \"aamatragurmukhi\", 0x0a3e,\n    \"aarusquare\", 0x3303,\n    \"aavowelsignbengali\", 0x09be,\n    \"aavowelsigndeva\", 0x093e,\n    \"aavowelsigngujarati\", 0x0abe,\n    \"abbreviationmarkarmenian\", 0x055f,\n    \"abbreviationsigndeva\", 0x0970,\n    \"abengali\", 0x0985,\n    \"abopomofo\", 0x311a,\n    \"abreve\", 0x0103,\n    \"abreveacute\", 0x1eaf,\n    \"abrevecyrillic\", 0x04d1,\n    \"abrevedotbelow\", 0x1eb7,\n    \"abrevegrave\", 0x1eb1,\n    \"abrevehookabove\", 0x1eb3,\n    \"abrevetilde\", 0x1eb5,\n    \"acaron\", 0x01ce,\n    \"acircle\", 0x24d0,\n    \"acircumflex\", 0x00e2,\n    \"acircumflexacute\", 0x1ea5,\n    \"acircumflexdotbelow\", 0x1ead,\n    \"acircumflexgrave\", 0x1ea7,\n    \"acircumflexhookabove\", 0x1ea9,\n    \"acircumflextilde\", 0x1eab,\n    \"acute\", 0x00b4,\n    \"acutebelowcmb\", 0x0317,\n    \"acutecmb\", 0x0301,\n    \"acutecomb\", 0x0301,\n    \"acutedeva\", 0x0954,\n    \"acutelowmod\", 0x02cf,\n    \"acutetonecmb\", 0x0341,\n    \"acyrillic\", 0x0430,\n    \"adblgrave\", 0x0201,\n    \"addakgurmukhi\", 0x0a71,\n    \"adeva\", 0x0905,\n    \"adieresis\", 0x00e4,\n    \"adieresiscyrillic\", 0x04d3,\n    \"adieresismacron\", 0x01df,\n    \"adotbelow\", 0x1ea1,\n    \"adotmacron\", 0x01e1,\n    \"ae\", 0x00e6,\n    \"aeacute\", 0x01fd,\n    \"aekorean\", 0x3150,\n    \"aemacron\", 0x01e3,\n    \"afii00208\", 0x2015,\n    \"afii08941\", 0x20a4,\n    \"afii10017\", 0x0410,\n    \"afii10018\", 0x0411,\n    \"afii10019\", 0x0412,\n    \"afii10020\", 0x0413,\n    \"afii10021\", 0x0414,\n    \"afii10022\", 0x0415,\n    \"afii10023\", 0x0401,\n    \"afii10024\", 0x0416,\n    \"afii10025\", 0x0417,\n    \"afii10026\", 0x0418,\n    \"afii10027\", 0x0419,\n    \"afii10028\", 0x041a,\n    \"afii10029\", 0x041b,\n    \"afii10030\", 0x041c,\n    \"afii10031\", 0x041d,\n    \"afii10032\", 0x041e,\n    \"afii10033\", 0x041f,\n    \"afii10034\", 0x0420,\n    \"afii10035\", 0x0421,\n    \"afii10036\", 0x0422,\n    \"afii10037\", 0x0423,\n    \"afii10038\", 0x0424,\n    \"afii10039\", 0x0425,\n    \"afii10040\", 0x0426,\n    \"afii10041\", 0x0427,\n    \"afii10042\", 0x0428,\n    \"afii10043\", 0x0429,\n    \"afii10044\", 0x042a,\n    \"afii10045\", 0x042b,\n    \"afii10046\", 0x042c,\n    \"afii10047\", 0x042d,\n    \"afii10048\", 0x042e,\n    \"afii10049\", 0x042f,\n    \"afii10050\", 0x0490,\n    \"afii10051\", 0x0402,\n    \"afii10052\", 0x0403,\n    \"afii10053\", 0x0404,\n    \"afii10054\", 0x0405,\n    \"afii10055\", 0x0406,\n    \"afii10056\", 0x0407,\n    \"afii10057\", 0x0408,\n    \"afii10058\", 0x0409,\n    \"afii10059\", 0x040a,\n    \"afii10060\", 0x040b,\n    \"afii10061\", 0x040c,\n    \"afii10062\", 0x040e,\n    \"afii10063\", 0xf6c4,\n    \"afii10064\", 0xf6c5,\n    \"afii10065\", 0x0430,\n    \"afii10066\", 0x0431,\n    \"afii10067\", 0x0432,\n    \"afii10068\", 0x0433,\n    \"afii10069\", 0x0434,\n    \"afii10070\", 0x0435,\n    \"afii10071\", 0x0451,\n    \"afii10072\", 0x0436,\n    \"afii10073\", 0x0437,\n    \"afii10074\", 0x0438,\n    \"afii10075\", 0x0439,\n    \"afii10076\", 0x043a,\n    \"afii10077\", 0x043b,\n    \"afii10078\", 0x043c,\n    \"afii10079\", 0x043d,\n    \"afii10080\", 0x043e,\n    \"afii10081\", 0x043f,\n    \"afii10082\", 0x0440,\n    \"afii10083\", 0x0441,\n    \"afii10084\", 0x0442,\n    \"afii10085\", 0x0443,\n    \"afii10086\", 0x0444,\n    \"afii10087\", 0x0445,\n    \"afii10088\", 0x0446,\n    \"afii10089\", 0x0447,\n    \"afii10090\", 0x0448,\n    \"afii10091\", 0x0449,\n    \"afii10092\", 0x044a,\n    \"afii10093\", 0x044b,\n    \"afii10094\", 0x044c,\n    \"afii10095\", 0x044d,\n    \"afii10096\", 0x044e,\n    \"afii10097\", 0x044f,\n    \"afii10098\", 0x0491,\n    \"afii10099\", 0x0452,\n    \"afii10100\", 0x0453,\n    \"afii10101\", 0x0454,\n    \"afii10102\", 0x0455,\n    \"afii10103\", 0x0456,\n    \"afii10104\", 0x0457,\n    \"afii10105\", 0x0458,\n    \"afii10106\", 0x0459,\n    \"afii10107\", 0x045a,\n    \"afii10108\", 0x045b,\n    \"afii10109\", 0x045c,\n    \"afii10110\", 0x045e,\n    \"afii10145\", 0x040f,\n    \"afii10146\", 0x0462,\n    \"afii10147\", 0x0472,\n    \"afii10148\", 0x0474,\n    \"afii10192\", 0xf6c6,\n    \"afii10193\", 0x045f,\n    \"afii10194\", 0x0463,\n    \"afii10195\", 0x0473,\n    \"afii10196\", 0x0475,\n    \"afii10831\", 0xf6c7,\n    \"afii10832\", 0xf6c8,\n    \"afii10846\", 0x04d9,\n    \"afii299\", 0x200e,\n    \"afii300\", 0x200f,\n    \"afii301\", 0x200d,\n    \"afii57381\", 0x066a,\n    \"afii57388\", 0x060c,\n    \"afii57392\", 0x0660,\n    \"afii57393\", 0x0661,\n    \"afii57394\", 0x0662,\n    \"afii57395\", 0x0663,\n    \"afii57396\", 0x0664,\n    \"afii57397\", 0x0665,\n    \"afii57398\", 0x0666,\n    \"afii57399\", 0x0667,\n    \"afii57400\", 0x0668,\n    \"afii57401\", 0x0669,\n    \"afii57403\", 0x061b,\n    \"afii57407\", 0x061f,\n    \"afii57409\", 0x0621,\n    \"afii57410\", 0x0622,\n    \"afii57411\", 0x0623,\n    \"afii57412\", 0x0624,\n    \"afii57413\", 0x0625,\n    \"afii57414\", 0x0626,\n    \"afii57415\", 0x0627,\n    \"afii57416\", 0x0628,\n    \"afii57417\", 0x0629,\n    \"afii57418\", 0x062a,\n    \"afii57419\", 0x062b,\n    \"afii57420\", 0x062c,\n    \"afii57421\", 0x062d,\n    \"afii57422\", 0x062e,\n    \"afii57423\", 0x062f,\n    \"afii57424\", 0x0630,\n    \"afii57425\", 0x0631,\n    \"afii57426\", 0x0632,\n    \"afii57427\", 0x0633,\n    \"afii57428\", 0x0634,\n    \"afii57429\", 0x0635,\n    \"afii57430\", 0x0636,\n    \"afii57431\", 0x0637,\n    \"afii57432\", 0x0638,\n    \"afii57433\", 0x0639,\n    \"afii57434\", 0x063a,\n    \"afii57440\", 0x0640,\n    \"afii57441\", 0x0641,\n    \"afii57442\", 0x0642,\n    \"afii57443\", 0x0643,\n    \"afii57444\", 0x0644,\n    \"afii57445\", 0x0645,\n    \"afii57446\", 0x0646,\n    \"afii57448\", 0x0648,\n    \"afii57449\", 0x0649,\n    \"afii57450\", 0x064a,\n    \"afii57451\", 0x064b,\n    \"afii57452\", 0x064c,\n    \"afii57453\", 0x064d,\n    \"afii57454\", 0x064e,\n    \"afii57455\", 0x064f,\n    \"afii57456\", 0x0650,\n    \"afii57457\", 0x0651,\n    \"afii57458\", 0x0652,\n    \"afii57470\", 0x0647,\n    \"afii57505\", 0x06a4,\n    \"afii57506\", 0x067e,\n    \"afii57507\", 0x0686,\n    \"afii57508\", 0x0698,\n    \"afii57509\", 0x06af,\n    \"afii57511\", 0x0679,\n    \"afii57512\", 0x0688,\n    \"afii57513\", 0x0691,\n    \"afii57514\", 0x06ba,\n    \"afii57519\", 0x06d2,\n    \"afii57534\", 0x06d5,\n    \"afii57636\", 0x20aa,\n    \"afii57645\", 0x05be,\n    \"afii57658\", 0x05c3,\n    \"afii57664\", 0x05d0,\n    \"afii57665\", 0x05d1,\n    \"afii57666\", 0x05d2,\n    \"afii57667\", 0x05d3,\n    \"afii57668\", 0x05d4,\n    \"afii57669\", 0x05d5,\n    \"afii57670\", 0x05d6,\n    \"afii57671\", 0x05d7,\n    \"afii57672\", 0x05d8,\n    \"afii57673\", 0x05d9,\n    \"afii57674\", 0x05da,\n    \"afii57675\", 0x05db,\n    \"afii57676\", 0x05dc,\n    \"afii57677\", 0x05dd,\n    \"afii57678\", 0x05de,\n    \"afii57679\", 0x05df,\n    \"afii57680\", 0x05e0,\n    \"afii57681\", 0x05e1,\n    \"afii57682\", 0x05e2,\n    \"afii57683\", 0x05e3,\n    \"afii57684\", 0x05e4,\n    \"afii57685\", 0x05e5,\n    \"afii57686\", 0x05e6,\n    \"afii57687\", 0x05e7,\n    \"afii57688\", 0x05e8,\n    \"afii57689\", 0x05e9,\n    \"afii57690\", 0x05ea,\n    \"afii57694\", 0xfb2a,\n    \"afii57695\", 0xfb2b,\n    \"afii57700\", 0xfb4b,\n    \"afii57705\", 0xfb1f,\n    \"afii57716\", 0x05f0,\n    \"afii57717\", 0x05f1,\n    \"afii57718\", 0x05f2,\n    \"afii57723\", 0xfb35,\n    \"afii57793\", 0x05b4,\n    \"afii57794\", 0x05b5,\n    \"afii57795\", 0x05b6,\n    \"afii57796\", 0x05bb,\n    \"afii57797\", 0x05b8,\n    \"afii57798\", 0x05b7,\n    \"afii57799\", 0x05b0,\n    \"afii57800\", 0x05b2,\n    \"afii57801\", 0x05b1,\n    \"afii57802\", 0x05b3,\n    \"afii57803\", 0x05c2,\n    \"afii57804\", 0x05c1,\n    \"afii57806\", 0x05b9,\n    \"afii57807\", 0x05bc,\n    \"afii57839\", 0x05bd,\n    \"afii57841\", 0x05bf,\n    \"afii57842\", 0x05c0,\n    \"afii57929\", 0x02bc,\n    \"afii61248\", 0x2105,\n    \"afii61289\", 0x2113,\n    \"afii61352\", 0x2116,\n    \"afii61573\", 0x202c,\n    \"afii61574\", 0x202d,\n    \"afii61575\", 0x202e,\n    \"afii61664\", 0x200c,\n    \"afii63167\", 0x066d,\n    \"afii64937\", 0x02bd,\n    \"agrave\", 0x00e0,\n    \"agujarati\", 0x0a85,\n    \"agurmukhi\", 0x0a05,\n    \"ahiragana\", 0x3042,\n    \"ahookabove\", 0x1ea3,\n    \"aibengali\", 0x0990,\n    \"aibopomofo\", 0x311e,\n    \"aideva\", 0x0910,\n    \"aiecyrillic\", 0x04d5,\n    \"aigujarati\", 0x0a90,\n    \"aigurmukhi\", 0x0a10,\n    \"aimatragurmukhi\", 0x0a48,\n    \"ainarabic\", 0x0639,\n    \"ainfinalarabic\", 0xfeca,\n    \"aininitialarabic\", 0xfecb,\n    \"ainmedialarabic\", 0xfecc,\n    \"ainvertedbreve\", 0x0203,\n    \"aivowelsignbengali\", 0x09c8,\n    \"aivowelsigndeva\", 0x0948,\n    \"aivowelsigngujarati\", 0x0ac8,\n    \"akatakana\", 0x30a2,\n    \"akatakanahalfwidth\", 0xff71,\n    \"akorean\", 0x314f,\n    \"alef\", 0x05d0,\n    \"alefarabic\", 0x0627,\n    \"alefdageshhebrew\", 0xfb30,\n    \"aleffinalarabic\", 0xfe8e,\n    \"alefhamzaabovearabic\", 0x0623,\n    \"alefhamzaabovefinalarabic\", 0xfe84,\n    \"alefhamzabelowarabic\", 0x0625,\n    \"alefhamzabelowfinalarabic\", 0xfe88,\n    \"alefhebrew\", 0x05d0,\n    \"aleflamedhebrew\", 0xfb4f,\n    \"alefmaddaabovearabic\", 0x0622,\n    \"alefmaddaabovefinalarabic\", 0xfe82,\n    \"alefmaksuraarabic\", 0x0649,\n    \"alefmaksurafinalarabic\", 0xfef0,\n    \"alefmaksurainitialarabic\", 0xfef3,\n    \"alefmaksuramedialarabic\", 0xfef4,\n    \"alefpatahhebrew\", 0xfb2e,\n    \"alefqamatshebrew\", 0xfb2f,\n    \"aleph\", 0x2135,\n    \"allequal\", 0x224c,\n    \"alpha\", 0x03b1,\n    \"alphatonos\", 0x03ac,\n    \"amacron\", 0x0101,\n    \"amonospace\", 0xff41,\n    \"ampersand\", 0x0026,\n    \"ampersandmonospace\", 0xff06,\n    \"ampersandsmall\", 0xf726,\n    \"amsquare\", 0x33c2,\n    \"anbopomofo\", 0x3122,\n    \"angbopomofo\", 0x3124,\n    \"angbracketleft\", 0x3008, // Glyph is missing from Adobe's original list.\n    \"angbracketright\", 0x3009, // Glyph is missing from Adobe's original list.\n    \"angkhankhuthai\", 0x0e5a,\n    \"angle\", 0x2220,\n    \"anglebracketleft\", 0x3008,\n    \"anglebracketleftvertical\", 0xfe3f,\n    \"anglebracketright\", 0x3009,\n    \"anglebracketrightvertical\", 0xfe40,\n    \"angleleft\", 0x2329,\n    \"angleright\", 0x232a,\n    \"angstrom\", 0x212b,\n    \"anoteleia\", 0x0387,\n    \"anudattadeva\", 0x0952,\n    \"anusvarabengali\", 0x0982,\n    \"anusvaradeva\", 0x0902,\n    \"anusvaragujarati\", 0x0a82,\n    \"aogonek\", 0x0105,\n    \"apaatosquare\", 0x3300,\n    \"aparen\", 0x249c,\n    \"apostrophearmenian\", 0x055a,\n    \"apostrophemod\", 0x02bc,\n    \"apple\", 0xf8ff,\n    \"approaches\", 0x2250,\n    \"approxequal\", 0x2248,\n    \"approxequalorimage\", 0x2252,\n    \"approximatelyequal\", 0x2245,\n    \"araeaekorean\", 0x318e,\n    \"araeakorean\", 0x318d,\n    \"arc\", 0x2312,\n    \"arighthalfring\", 0x1e9a,\n    \"aring\", 0x00e5,\n    \"aringacute\", 0x01fb,\n    \"aringbelow\", 0x1e01,\n    \"arrowboth\", 0x2194,\n    \"arrowdashdown\", 0x21e3,\n    \"arrowdashleft\", 0x21e0,\n    \"arrowdashright\", 0x21e2,\n    \"arrowdashup\", 0x21e1,\n    \"arrowdblboth\", 0x21d4,\n    \"arrowdbldown\", 0x21d3,\n    \"arrowdblleft\", 0x21d0,\n    \"arrowdblright\", 0x21d2,\n    \"arrowdblup\", 0x21d1,\n    \"arrowdown\", 0x2193,\n    \"arrowdownleft\", 0x2199,\n    \"arrowdownright\", 0x2198,\n    \"arrowdownwhite\", 0x21e9,\n    \"arrowheaddownmod\", 0x02c5,\n    \"arrowheadleftmod\", 0x02c2,\n    \"arrowheadrightmod\", 0x02c3,\n    \"arrowheadupmod\", 0x02c4,\n    \"arrowhorizex\", 0xf8e7,\n    \"arrowleft\", 0x2190,\n    \"arrowleftdbl\", 0x21d0,\n    \"arrowleftdblstroke\", 0x21cd,\n    \"arrowleftoverright\", 0x21c6,\n    \"arrowleftwhite\", 0x21e6,\n    \"arrowright\", 0x2192,\n    \"arrowrightdblstroke\", 0x21cf,\n    \"arrowrightheavy\", 0x279e,\n    \"arrowrightoverleft\", 0x21c4,\n    \"arrowrightwhite\", 0x21e8,\n    \"arrowtableft\", 0x21e4,\n    \"arrowtabright\", 0x21e5,\n    \"arrowup\", 0x2191,\n    \"arrowupdn\", 0x2195,\n    \"arrowupdnbse\", 0x21a8,\n    \"arrowupdownbase\", 0x21a8,\n    \"arrowupleft\", 0x2196,\n    \"arrowupleftofdown\", 0x21c5,\n    \"arrowupright\", 0x2197,\n    \"arrowupwhite\", 0x21e7,\n    \"arrowvertex\", 0xf8e6,\n    \"asciicircum\", 0x005e,\n    \"asciicircummonospace\", 0xff3e,\n    \"asciitilde\", 0x007e,\n    \"asciitildemonospace\", 0xff5e,\n    \"ascript\", 0x0251,\n    \"ascriptturned\", 0x0252,\n    \"asmallhiragana\", 0x3041,\n    \"asmallkatakana\", 0x30a1,\n    \"asmallkatakanahalfwidth\", 0xff67,\n    \"asterisk\", 0x002a,\n    \"asteriskaltonearabic\", 0x066d,\n    \"asteriskarabic\", 0x066d,\n    \"asteriskmath\", 0x2217,\n    \"asteriskmonospace\", 0xff0a,\n    \"asterisksmall\", 0xfe61,\n    \"asterism\", 0x2042,\n    \"asuperior\", 0xf6e9,\n    \"asymptoticallyequal\", 0x2243,\n    \"at\", 0x0040,\n    \"atilde\", 0x00e3,\n    \"atmonospace\", 0xff20,\n    \"atsmall\", 0xfe6b,\n    \"aturned\", 0x0250,\n    \"aubengali\", 0x0994,\n    \"aubopomofo\", 0x3120,\n    \"audeva\", 0x0914,\n    \"augujarati\", 0x0a94,\n    \"augurmukhi\", 0x0a14,\n    \"aulengthmarkbengali\", 0x09d7,\n    \"aumatragurmukhi\", 0x0a4c,\n    \"auvowelsignbengali\", 0x09cc,\n    \"auvowelsigndeva\", 0x094c,\n    \"auvowelsigngujarati\", 0x0acc,\n    \"avagrahadeva\", 0x093d,\n    \"aybarmenian\", 0x0561,\n    \"ayin\", 0x05e2,\n    \"ayinaltonehebrew\", 0xfb20,\n    \"ayinhebrew\", 0x05e2,\n    \"b\", 0x0062,\n    \"babengali\", 0x09ac,\n    \"backslash\", 0x005c,\n    \"backslashmonospace\", 0xff3c,\n    \"badeva\", 0x092c,\n    \"bagujarati\", 0x0aac,\n    \"bagurmukhi\", 0x0a2c,\n    \"bahiragana\", 0x3070,\n    \"bahtthai\", 0x0e3f,\n    \"bakatakana\", 0x30d0,\n    \"bar\", 0x007c,\n    \"barmonospace\", 0xff5c,\n    \"bbopomofo\", 0x3105,\n    \"bcircle\", 0x24d1,\n    \"bdotaccent\", 0x1e03,\n    \"bdotbelow\", 0x1e05,\n    \"beamedsixteenthnotes\", 0x266c,\n    \"because\", 0x2235,\n    \"becyrillic\", 0x0431,\n    \"beharabic\", 0x0628,\n    \"behfinalarabic\", 0xfe90,\n    \"behinitialarabic\", 0xfe91,\n    \"behiragana\", 0x3079,\n    \"behmedialarabic\", 0xfe92,\n    \"behmeeminitialarabic\", 0xfc9f,\n    \"behmeemisolatedarabic\", 0xfc08,\n    \"behnoonfinalarabic\", 0xfc6d,\n    \"bekatakana\", 0x30d9,\n    \"benarmenian\", 0x0562,\n    \"bet\", 0x05d1,\n    \"beta\", 0x03b2,\n    \"betasymbolgreek\", 0x03d0,\n    \"betdagesh\", 0xfb31,\n    \"betdageshhebrew\", 0xfb31,\n    \"bethebrew\", 0x05d1,\n    \"betrafehebrew\", 0xfb4c,\n    \"bhabengali\", 0x09ad,\n    \"bhadeva\", 0x092d,\n    \"bhagujarati\", 0x0aad,\n    \"bhagurmukhi\", 0x0a2d,\n    \"bhook\", 0x0253,\n    \"bihiragana\", 0x3073,\n    \"bikatakana\", 0x30d3,\n    \"bilabialclick\", 0x0298,\n    \"bindigurmukhi\", 0x0a02,\n    \"birusquare\", 0x3331,\n    \"blackcircle\", 0x25cf,\n    \"blackdiamond\", 0x25c6,\n    \"blackdownpointingtriangle\", 0x25bc,\n    \"blackleftpointingpointer\", 0x25c4,\n    \"blackleftpointingtriangle\", 0x25c0,\n    \"blacklenticularbracketleft\", 0x3010,\n    \"blacklenticularbracketleftvertical\", 0xfe3b,\n    \"blacklenticularbracketright\", 0x3011,\n    \"blacklenticularbracketrightvertical\", 0xfe3c,\n    \"blacklowerlefttriangle\", 0x25e3,\n    \"blacklowerrighttriangle\", 0x25e2,\n    \"blackrectangle\", 0x25ac,\n    \"blackrightpointingpointer\", 0x25ba,\n    \"blackrightpointingtriangle\", 0x25b6,\n    \"blacksmallsquare\", 0x25aa,\n    \"blacksmilingface\", 0x263b,\n    \"blacksquare\", 0x25a0,\n    \"blackstar\", 0x2605,\n    \"blackupperlefttriangle\", 0x25e4,\n    \"blackupperrighttriangle\", 0x25e5,\n    \"blackuppointingsmalltriangle\", 0x25b4,\n    \"blackuppointingtriangle\", 0x25b2,\n    \"blank\", 0x2423,\n    \"blinebelow\", 0x1e07,\n    \"block\", 0x2588,\n    \"bmonospace\", 0xff42,\n    \"bobaimaithai\", 0x0e1a,\n    \"bohiragana\", 0x307c,\n    \"bokatakana\", 0x30dc,\n    \"bparen\", 0x249d,\n    \"bqsquare\", 0x33c3,\n    \"braceex\", 0xf8f4,\n    \"braceleft\", 0x007b,\n    \"braceleftbt\", 0xf8f3,\n    \"braceleftmid\", 0xf8f2,\n    \"braceleftmonospace\", 0xff5b,\n    \"braceleftsmall\", 0xfe5b,\n    \"bracelefttp\", 0xf8f1,\n    \"braceleftvertical\", 0xfe37,\n    \"braceright\", 0x007d,\n    \"bracerightbt\", 0xf8fe,\n    \"bracerightmid\", 0xf8fd,\n    \"bracerightmonospace\", 0xff5d,\n    \"bracerightsmall\", 0xfe5c,\n    \"bracerighttp\", 0xf8fc,\n    \"bracerightvertical\", 0xfe38,\n    \"bracketleft\", 0x005b,\n    \"bracketleftbt\", 0xf8f0,\n    \"bracketleftex\", 0xf8ef,\n    \"bracketleftmonospace\", 0xff3b,\n    \"bracketlefttp\", 0xf8ee,\n    \"bracketright\", 0x005d,\n    \"bracketrightbt\", 0xf8fb,\n    \"bracketrightex\", 0xf8fa,\n    \"bracketrightmonospace\", 0xff3d,\n    \"bracketrighttp\", 0xf8f9,\n    \"breve\", 0x02d8,\n    \"brevebelowcmb\", 0x032e,\n    \"brevecmb\", 0x0306,\n    \"breveinvertedbelowcmb\", 0x032f,\n    \"breveinvertedcmb\", 0x0311,\n    \"breveinverteddoublecmb\", 0x0361,\n    \"bridgebelowcmb\", 0x032a,\n    \"bridgeinvertedbelowcmb\", 0x033a,\n    \"brokenbar\", 0x00a6,\n    \"bstroke\", 0x0180,\n    \"bsuperior\", 0xf6ea,\n    \"btopbar\", 0x0183,\n    \"buhiragana\", 0x3076,\n    \"bukatakana\", 0x30d6,\n    \"bullet\", 0x2022,\n    \"bulletinverse\", 0x25d8,\n    \"bulletoperator\", 0x2219,\n    \"bullseye\", 0x25ce,\n    \"c\", 0x0063,\n    \"caarmenian\", 0x056e,\n    \"cabengali\", 0x099a,\n    \"cacute\", 0x0107,\n    \"cadeva\", 0x091a,\n    \"cagujarati\", 0x0a9a,\n    \"cagurmukhi\", 0x0a1a,\n    \"calsquare\", 0x3388,\n    \"candrabindubengali\", 0x0981,\n    \"candrabinducmb\", 0x0310,\n    \"candrabindudeva\", 0x0901,\n    \"candrabindugujarati\", 0x0a81,\n    \"capslock\", 0x21ea,\n    \"careof\", 0x2105,\n    \"caron\", 0x02c7,\n    \"caronbelowcmb\", 0x032c,\n    \"caroncmb\", 0x030c,\n    \"carriagereturn\", 0x21b5,\n    \"cbopomofo\", 0x3118,\n    \"ccaron\", 0x010d,\n    \"ccedilla\", 0x00e7,\n    \"ccedillaacute\", 0x1e09,\n    \"ccircle\", 0x24d2,\n    \"ccircumflex\", 0x0109,\n    \"ccurl\", 0x0255,\n    \"cdot\", 0x010b,\n    \"cdotaccent\", 0x010b,\n    \"cdsquare\", 0x33c5,\n    \"cedilla\", 0x00b8,\n    \"cedillacmb\", 0x0327,\n    \"cent\", 0x00a2,\n    \"centigrade\", 0x2103,\n    \"centinferior\", 0xf6df,\n    \"centmonospace\", 0xffe0,\n    \"centoldstyle\", 0xf7a2,\n    \"centsuperior\", 0xf6e0,\n    \"chaarmenian\", 0x0579,\n    \"chabengali\", 0x099b,\n    \"chadeva\", 0x091b,\n    \"chagujarati\", 0x0a9b,\n    \"chagurmukhi\", 0x0a1b,\n    \"chbopomofo\", 0x3114,\n    \"cheabkhasiancyrillic\", 0x04bd,\n    \"checkmark\", 0x2713,\n    \"checyrillic\", 0x0447,\n    \"chedescenderabkhasiancyrillic\", 0x04bf,\n    \"chedescendercyrillic\", 0x04b7,\n    \"chedieresiscyrillic\", 0x04f5,\n    \"cheharmenian\", 0x0573,\n    \"chekhakassiancyrillic\", 0x04cc,\n    \"cheverticalstrokecyrillic\", 0x04b9,\n    \"chi\", 0x03c7,\n    \"chieuchacirclekorean\", 0x3277,\n    \"chieuchaparenkorean\", 0x3217,\n    \"chieuchcirclekorean\", 0x3269,\n    \"chieuchkorean\", 0x314a,\n    \"chieuchparenkorean\", 0x3209,\n    \"chochangthai\", 0x0e0a,\n    \"chochanthai\", 0x0e08,\n    \"chochingthai\", 0x0e09,\n    \"chochoethai\", 0x0e0c,\n    \"chook\", 0x0188,\n    \"cieucacirclekorean\", 0x3276,\n    \"cieucaparenkorean\", 0x3216,\n    \"cieuccirclekorean\", 0x3268,\n    \"cieuckorean\", 0x3148,\n    \"cieucparenkorean\", 0x3208,\n    \"cieucuparenkorean\", 0x321c,\n    \"circle\", 0x25cb,\n    \"circlecopyrt\", 0x00a9, // Glyph is missing from Adobe's original list.\n    \"circlemultiply\", 0x2297,\n    \"circleot\", 0x2299,\n    \"circleplus\", 0x2295,\n    \"circlepostalmark\", 0x3036,\n    \"circlewithlefthalfblack\", 0x25d0,\n    \"circlewithrighthalfblack\", 0x25d1,\n    \"circumflex\", 0x02c6,\n    \"circumflexbelowcmb\", 0x032d,\n    \"circumflexcmb\", 0x0302,\n    \"clear\", 0x2327,\n    \"clickalveolar\", 0x01c2,\n    \"clickdental\", 0x01c0,\n    \"clicklateral\", 0x01c1,\n    \"clickretroflex\", 0x01c3,\n    \"club\", 0x2663,\n    \"clubsuitblack\", 0x2663,\n    \"clubsuitwhite\", 0x2667,\n    \"cmcubedsquare\", 0x33a4,\n    \"cmonospace\", 0xff43,\n    \"cmsquaredsquare\", 0x33a0,\n    \"coarmenian\", 0x0581,\n    \"colon\", 0x003a,\n    \"colonmonetary\", 0x20a1,\n    \"colonmonospace\", 0xff1a,\n    \"colonsign\", 0x20a1,\n    \"colonsmall\", 0xfe55,\n    \"colontriangularhalfmod\", 0x02d1,\n    \"colontriangularmod\", 0x02d0,\n    \"comma\", 0x002c,\n    \"commaabovecmb\", 0x0313,\n    \"commaaboverightcmb\", 0x0315,\n    \"commaaccent\", 0xf6c3,\n    \"commaarabic\", 0x060c,\n    \"commaarmenian\", 0x055d,\n    \"commainferior\", 0xf6e1,\n    \"commamonospace\", 0xff0c,\n    \"commareversedabovecmb\", 0x0314,\n    \"commareversedmod\", 0x02bd,\n    \"commasmall\", 0xfe50,\n    \"commasuperior\", 0xf6e2,\n    \"commaturnedabovecmb\", 0x0312,\n    \"commaturnedmod\", 0x02bb,\n    \"compass\", 0x263c,\n    \"congruent\", 0x2245,\n    \"contourintegral\", 0x222e,\n    \"control\", 0x2303,\n    \"controlACK\", 0x0006,\n    \"controlBEL\", 0x0007,\n    \"controlBS\", 0x0008,\n    \"controlCAN\", 0x0018,\n    \"controlCR\", 0x000d,\n    \"controlDC1\", 0x0011,\n    \"controlDC2\", 0x0012,\n    \"controlDC3\", 0x0013,\n    \"controlDC4\", 0x0014,\n    \"controlDEL\", 0x007f,\n    \"controlDLE\", 0x0010,\n    \"controlEM\", 0x0019,\n    \"controlENQ\", 0x0005,\n    \"controlEOT\", 0x0004,\n    \"controlESC\", 0x001b,\n    \"controlETB\", 0x0017,\n    \"controlETX\", 0x0003,\n    \"controlFF\", 0x000c,\n    \"controlFS\", 0x001c,\n    \"controlGS\", 0x001d,\n    \"controlHT\", 0x0009,\n    \"controlLF\", 0x000a,\n    \"controlNAK\", 0x0015,\n    \"controlNULL\", 0x0000, // Glyph is missing from Adobe's original list.\n    \"controlRS\", 0x001e,\n    \"controlSI\", 0x000f,\n    \"controlSO\", 0x000e,\n    \"controlSOT\", 0x0002,\n    \"controlSTX\", 0x0001,\n    \"controlSUB\", 0x001a,\n    \"controlSYN\", 0x0016,\n    \"controlUS\", 0x001f,\n    \"controlVT\", 0x000b,\n    \"copyright\", 0x00a9,\n    \"copyrightsans\", 0xf8e9,\n    \"copyrightserif\", 0xf6d9,\n    \"cornerbracketleft\", 0x300c,\n    \"cornerbracketlefthalfwidth\", 0xff62,\n    \"cornerbracketleftvertical\", 0xfe41,\n    \"cornerbracketright\", 0x300d,\n    \"cornerbracketrighthalfwidth\", 0xff63,\n    \"cornerbracketrightvertical\", 0xfe42,\n    \"corporationsquare\", 0x337f,\n    \"cosquare\", 0x33c7,\n    \"coverkgsquare\", 0x33c6,\n    \"cparen\", 0x249e,\n    \"cruzeiro\", 0x20a2,\n    \"cstretched\", 0x0297,\n    \"curlyand\", 0x22cf,\n    \"curlyor\", 0x22ce,\n    \"currency\", 0x00a4,\n    \"cyrBreve\", 0xf6d1,\n    \"cyrFlex\", 0xf6d2,\n    \"cyrbreve\", 0xf6d4,\n    \"cyrflex\", 0xf6d5,\n    \"d\", 0x0064,\n    \"daarmenian\", 0x0564,\n    \"dabengali\", 0x09a6,\n    \"dadarabic\", 0x0636,\n    \"dadeva\", 0x0926,\n    \"dadfinalarabic\", 0xfebe,\n    \"dadinitialarabic\", 0xfebf,\n    \"dadmedialarabic\", 0xfec0,\n    \"dagesh\", 0x05bc,\n    \"dageshhebrew\", 0x05bc,\n    \"dagger\", 0x2020,\n    \"daggerdbl\", 0x2021,\n    \"dagujarati\", 0x0aa6,\n    \"dagurmukhi\", 0x0a26,\n    \"dahiragana\", 0x3060,\n    \"dakatakana\", 0x30c0,\n    \"dalarabic\", 0x062f,\n    \"dalet\", 0x05d3,\n    \"daletdagesh\", 0xfb33,\n    \"daletdageshhebrew\", 0xfb33,\n    \"dalethebrew\", 0x05d3,\n    \"dalfinalarabic\", 0xfeaa,\n    \"dammaarabic\", 0x064f,\n    \"dammalowarabic\", 0x064f,\n    \"dammatanaltonearabic\", 0x064c,\n    \"dammatanarabic\", 0x064c,\n    \"danda\", 0x0964,\n    \"dargahebrew\", 0x05a7,\n    \"dargalefthebrew\", 0x05a7,\n    \"dasiapneumatacyrilliccmb\", 0x0485,\n    \"dblGrave\", 0xf6d3,\n    \"dblanglebracketleft\", 0x300a,\n    \"dblanglebracketleftvertical\", 0xfe3d,\n    \"dblanglebracketright\", 0x300b,\n    \"dblanglebracketrightvertical\", 0xfe3e,\n    \"dblarchinvertedbelowcmb\", 0x032b,\n    \"dblarrowleft\", 0x21d4,\n    \"dblarrowright\", 0x21d2,\n    \"dbldanda\", 0x0965,\n    \"dblgrave\", 0xf6d6,\n    \"dblgravecmb\", 0x030f,\n    \"dblintegral\", 0x222c,\n    \"dbllowline\", 0x2017,\n    \"dbllowlinecmb\", 0x0333,\n    \"dbloverlinecmb\", 0x033f,\n    \"dblprimemod\", 0x02ba,\n    \"dblverticalbar\", 0x2016,\n    \"dblverticallineabovecmb\", 0x030e,\n    \"dbopomofo\", 0x3109,\n    \"dbsquare\", 0x33c8,\n    \"dcaron\", 0x010f,\n    \"dcedilla\", 0x1e11,\n    \"dcircle\", 0x24d3,\n    \"dcircumflexbelow\", 0x1e13,\n    \"dcroat\", 0x0111,\n    \"ddabengali\", 0x09a1,\n    \"ddadeva\", 0x0921,\n    \"ddagujarati\", 0x0aa1,\n    \"ddagurmukhi\", 0x0a21,\n    \"ddalarabic\", 0x0688,\n    \"ddalfinalarabic\", 0xfb89,\n    \"dddhadeva\", 0x095c,\n    \"ddhabengali\", 0x09a2,\n    \"ddhadeva\", 0x0922,\n    \"ddhagujarati\", 0x0aa2,\n    \"ddhagurmukhi\", 0x0a22,\n    \"ddotaccent\", 0x1e0b,\n    \"ddotbelow\", 0x1e0d,\n    \"decimalseparatorarabic\", 0x066b,\n    \"decimalseparatorpersian\", 0x066b,\n    \"decyrillic\", 0x0434,\n    \"degree\", 0x00b0,\n    \"dehihebrew\", 0x05ad,\n    \"dehiragana\", 0x3067,\n    \"deicoptic\", 0x03ef,\n    \"dekatakana\", 0x30c7,\n    \"deleteleft\", 0x232b,\n    \"deleteright\", 0x2326,\n    \"delta\", 0x03b4,\n    \"deltaturned\", 0x018d,\n    \"denominatorminusonenumeratorbengali\", 0x09f8,\n    \"dezh\", 0x02a4,\n    \"dhabengali\", 0x09a7,\n    \"dhadeva\", 0x0927,\n    \"dhagujarati\", 0x0aa7,\n    \"dhagurmukhi\", 0x0a27,\n    \"dhook\", 0x0257,\n    \"dialytikatonos\", 0x0385,\n    \"dialytikatonoscmb\", 0x0344,\n    \"diamond\", 0x2666,\n    \"diamondsuitwhite\", 0x2662,\n    \"dieresis\", 0x00a8,\n    \"dieresisacute\", 0xf6d7,\n    \"dieresisbelowcmb\", 0x0324,\n    \"dieresiscmb\", 0x0308,\n    \"dieresisgrave\", 0xf6d8,\n    \"dieresistonos\", 0x0385,\n    \"dihiragana\", 0x3062,\n    \"dikatakana\", 0x30c2,\n    \"dittomark\", 0x3003,\n    \"divide\", 0x00f7,\n    \"divides\", 0x2223,\n    \"divisionslash\", 0x2215,\n    \"djecyrillic\", 0x0452,\n    \"dkshade\", 0x2593,\n    \"dlinebelow\", 0x1e0f,\n    \"dlsquare\", 0x3397,\n    \"dmacron\", 0x0111,\n    \"dmonospace\", 0xff44,\n    \"dnblock\", 0x2584,\n    \"dochadathai\", 0x0e0e,\n    \"dodekthai\", 0x0e14,\n    \"dohiragana\", 0x3069,\n    \"dokatakana\", 0x30c9,\n    \"dollar\", 0x0024,\n    \"dollarinferior\", 0xf6e3,\n    \"dollarmonospace\", 0xff04,\n    \"dollaroldstyle\", 0xf724,\n    \"dollarsmall\", 0xfe69,\n    \"dollarsuperior\", 0xf6e4,\n    \"dong\", 0x20ab,\n    \"dorusquare\", 0x3326,\n    \"dotaccent\", 0x02d9,\n    \"dotaccentcmb\", 0x0307,\n    \"dotbelowcmb\", 0x0323,\n    \"dotbelowcomb\", 0x0323,\n    \"dotkatakana\", 0x30fb,\n    \"dotlessi\", 0x0131,\n    \"dotlessj\", 0xf6be,\n    \"dotlessjstrokehook\", 0x0284,\n    \"dotmath\", 0x22c5,\n    \"dottedcircle\", 0x25cc,\n    \"doubleyodpatah\", 0xfb1f,\n    \"doubleyodpatahhebrew\", 0xfb1f,\n    \"downtackbelowcmb\", 0x031e,\n    \"downtackmod\", 0x02d5,\n    \"dparen\", 0x249f,\n    \"dsuperior\", 0xf6eb,\n    \"dtail\", 0x0256,\n    \"dtopbar\", 0x018c,\n    \"duhiragana\", 0x3065,\n    \"dukatakana\", 0x30c5,\n    \"dz\", 0x01f3,\n    \"dzaltone\", 0x02a3,\n    \"dzcaron\", 0x01c6,\n    \"dzcurl\", 0x02a5,\n    \"dzeabkhasiancyrillic\", 0x04e1,\n    \"dzecyrillic\", 0x0455,\n    \"dzhecyrillic\", 0x045f,\n    \"e\", 0x0065,\n    \"eacute\", 0x00e9,\n    \"earth\", 0x2641,\n    \"ebengali\", 0x098f,\n    \"ebopomofo\", 0x311c,\n    \"ebreve\", 0x0115,\n    \"ecandradeva\", 0x090d,\n    \"ecandragujarati\", 0x0a8d,\n    \"ecandravowelsigndeva\", 0x0945,\n    \"ecandravowelsigngujarati\", 0x0ac5,\n    \"ecaron\", 0x011b,\n    \"ecedillabreve\", 0x1e1d,\n    \"echarmenian\", 0x0565,\n    \"echyiwnarmenian\", 0x0587,\n    \"ecircle\", 0x24d4,\n    \"ecircumflex\", 0x00ea,\n    \"ecircumflexacute\", 0x1ebf,\n    \"ecircumflexbelow\", 0x1e19,\n    \"ecircumflexdotbelow\", 0x1ec7,\n    \"ecircumflexgrave\", 0x1ec1,\n    \"ecircumflexhookabove\", 0x1ec3,\n    \"ecircumflextilde\", 0x1ec5,\n    \"ecyrillic\", 0x0454,\n    \"edblgrave\", 0x0205,\n    \"edeva\", 0x090f,\n    \"edieresis\", 0x00eb,\n    \"edot\", 0x0117,\n    \"edotaccent\", 0x0117,\n    \"edotbelow\", 0x1eb9,\n    \"eegurmukhi\", 0x0a0f,\n    \"eematragurmukhi\", 0x0a47,\n    \"efcyrillic\", 0x0444,\n    \"egrave\", 0x00e8,\n    \"egujarati\", 0x0a8f,\n    \"eharmenian\", 0x0567,\n    \"ehbopomofo\", 0x311d,\n    \"ehiragana\", 0x3048,\n    \"ehookabove\", 0x1ebb,\n    \"eibopomofo\", 0x311f,\n    \"eight\", 0x0038,\n    \"eightarabic\", 0x0668,\n    \"eightbengali\", 0x09ee,\n    \"eightcircle\", 0x2467,\n    \"eightcircleinversesansserif\", 0x2791,\n    \"eightdeva\", 0x096e,\n    \"eighteencircle\", 0x2471,\n    \"eighteenparen\", 0x2485,\n    \"eighteenperiod\", 0x2499,\n    \"eightgujarati\", 0x0aee,\n    \"eightgurmukhi\", 0x0a6e,\n    \"eighthackarabic\", 0x0668,\n    \"eighthangzhou\", 0x3028,\n    \"eighthnotebeamed\", 0x266b,\n    \"eightideographicparen\", 0x3227,\n    \"eightinferior\", 0x2088,\n    \"eightmonospace\", 0xff18,\n    \"eightoldstyle\", 0xf738,\n    \"eightparen\", 0x247b,\n    \"eightperiod\", 0x248f,\n    \"eightpersian\", 0x06f8,\n    \"eightroman\", 0x2177,\n    \"eightsuperior\", 0x2078,\n    \"eightthai\", 0x0e58,\n    \"einvertedbreve\", 0x0207,\n    \"eiotifiedcyrillic\", 0x0465,\n    \"ekatakana\", 0x30a8,\n    \"ekatakanahalfwidth\", 0xff74,\n    \"ekonkargurmukhi\", 0x0a74,\n    \"ekorean\", 0x3154,\n    \"elcyrillic\", 0x043b,\n    \"element\", 0x2208,\n    \"elevencircle\", 0x246a,\n    \"elevenparen\", 0x247e,\n    \"elevenperiod\", 0x2492,\n    \"elevenroman\", 0x217a,\n    \"ellipsis\", 0x2026,\n    \"ellipsisvertical\", 0x22ee,\n    \"emacron\", 0x0113,\n    \"emacronacute\", 0x1e17,\n    \"emacrongrave\", 0x1e15,\n    \"emcyrillic\", 0x043c,\n    \"emdash\", 0x2014,\n    \"emdashvertical\", 0xfe31,\n    \"emonospace\", 0xff45,\n    \"emphasismarkarmenian\", 0x055b,\n    \"emptyset\", 0x2205,\n    \"enbopomofo\", 0x3123,\n    \"encyrillic\", 0x043d,\n    \"endash\", 0x2013,\n    \"endashvertical\", 0xfe32,\n    \"endescendercyrillic\", 0x04a3,\n    \"eng\", 0x014b,\n    \"engbopomofo\", 0x3125,\n    \"enghecyrillic\", 0x04a5,\n    \"enhookcyrillic\", 0x04c8,\n    \"enspace\", 0x2002,\n    \"eogonek\", 0x0119,\n    \"eokorean\", 0x3153,\n    \"eopen\", 0x025b,\n    \"eopenclosed\", 0x029a,\n    \"eopenreversed\", 0x025c,\n    \"eopenreversedclosed\", 0x025e,\n    \"eopenreversedhook\", 0x025d,\n    \"eparen\", 0x24a0,\n    \"epsilon\", 0x03b5,\n    \"epsilontonos\", 0x03ad,\n    \"equal\", 0x003d,\n    \"equalmonospace\", 0xff1d,\n    \"equalsmall\", 0xfe66,\n    \"equalsuperior\", 0x207c,\n    \"equivalence\", 0x2261,\n    \"erbopomofo\", 0x3126,\n    \"ercyrillic\", 0x0440,\n    \"ereversed\", 0x0258,\n    \"ereversedcyrillic\", 0x044d,\n    \"escyrillic\", 0x0441,\n    \"esdescendercyrillic\", 0x04ab,\n    \"esh\", 0x0283,\n    \"eshcurl\", 0x0286,\n    \"eshortdeva\", 0x090e,\n    \"eshortvowelsigndeva\", 0x0946,\n    \"eshreversedloop\", 0x01aa,\n    \"eshsquatreversed\", 0x0285,\n    \"esmallhiragana\", 0x3047,\n    \"esmallkatakana\", 0x30a7,\n    \"esmallkatakanahalfwidth\", 0xff6a,\n    \"estimated\", 0x212e,\n    \"esuperior\", 0xf6ec,\n    \"eta\", 0x03b7,\n    \"etarmenian\", 0x0568,\n    \"etatonos\", 0x03ae,\n    \"eth\", 0x00f0,\n    \"etilde\", 0x1ebd,\n    \"etildebelow\", 0x1e1b,\n    \"etnahtafoukhhebrew\", 0x0591,\n    \"etnahtafoukhlefthebrew\", 0x0591,\n    \"etnahtahebrew\", 0x0591,\n    \"etnahtalefthebrew\", 0x0591,\n    \"eturned\", 0x01dd,\n    \"eukorean\", 0x3161,\n    \"euro\", 0x20ac,\n    \"evowelsignbengali\", 0x09c7,\n    \"evowelsigndeva\", 0x0947,\n    \"evowelsigngujarati\", 0x0ac7,\n    \"exclam\", 0x0021,\n    \"exclamarmenian\", 0x055c,\n    \"exclamdbl\", 0x203c,\n    \"exclamdown\", 0x00a1,\n    \"exclamdownsmall\", 0xf7a1,\n    \"exclammonospace\", 0xff01,\n    \"exclamsmall\", 0xf721,\n    \"existential\", 0x2203,\n    \"ezh\", 0x0292,\n    \"ezhcaron\", 0x01ef,\n    \"ezhcurl\", 0x0293,\n    \"ezhreversed\", 0x01b9,\n    \"ezhtail\", 0x01ba,\n    \"f\", 0x0066,\n    \"fadeva\", 0x095e,\n    \"fagurmukhi\", 0x0a5e,\n    \"fahrenheit\", 0x2109,\n    \"fathaarabic\", 0x064e,\n    \"fathalowarabic\", 0x064e,\n    \"fathatanarabic\", 0x064b,\n    \"fbopomofo\", 0x3108,\n    \"fcircle\", 0x24d5,\n    \"fdotaccent\", 0x1e1f,\n    \"feharabic\", 0x0641,\n    \"feharmenian\", 0x0586,\n    \"fehfinalarabic\", 0xfed2,\n    \"fehinitialarabic\", 0xfed3,\n    \"fehmedialarabic\", 0xfed4,\n    \"feicoptic\", 0x03e5,\n    \"female\", 0x2640,\n    \"ff\", 0xfb00,\n    \"f_f\", 0xfb00, // Fixes issue 11016.\n    \"ffi\", 0xfb03,\n    \"ffl\", 0xfb04,\n    \"fi\", 0xfb01,\n    \"fifteencircle\", 0x246e,\n    \"fifteenparen\", 0x2482,\n    \"fifteenperiod\", 0x2496,\n    \"figuredash\", 0x2012,\n    \"filledbox\", 0x25a0,\n    \"filledrect\", 0x25ac,\n    \"finalkaf\", 0x05da,\n    \"finalkafdagesh\", 0xfb3a,\n    \"finalkafdageshhebrew\", 0xfb3a,\n    \"finalkafhebrew\", 0x05da,\n    \"finalmem\", 0x05dd,\n    \"finalmemhebrew\", 0x05dd,\n    \"finalnun\", 0x05df,\n    \"finalnunhebrew\", 0x05df,\n    \"finalpe\", 0x05e3,\n    \"finalpehebrew\", 0x05e3,\n    \"finaltsadi\", 0x05e5,\n    \"finaltsadihebrew\", 0x05e5,\n    \"firsttonechinese\", 0x02c9,\n    \"fisheye\", 0x25c9,\n    \"fitacyrillic\", 0x0473,\n    \"five\", 0x0035,\n    \"fivearabic\", 0x0665,\n    \"fivebengali\", 0x09eb,\n    \"fivecircle\", 0x2464,\n    \"fivecircleinversesansserif\", 0x278e,\n    \"fivedeva\", 0x096b,\n    \"fiveeighths\", 0x215d,\n    \"fivegujarati\", 0x0aeb,\n    \"fivegurmukhi\", 0x0a6b,\n    \"fivehackarabic\", 0x0665,\n    \"fivehangzhou\", 0x3025,\n    \"fiveideographicparen\", 0x3224,\n    \"fiveinferior\", 0x2085,\n    \"fivemonospace\", 0xff15,\n    \"fiveoldstyle\", 0xf735,\n    \"fiveparen\", 0x2478,\n    \"fiveperiod\", 0x248c,\n    \"fivepersian\", 0x06f5,\n    \"fiveroman\", 0x2174,\n    \"fivesuperior\", 0x2075,\n    \"fivethai\", 0x0e55,\n    \"fl\", 0xfb02,\n    \"florin\", 0x0192,\n    \"fmonospace\", 0xff46,\n    \"fmsquare\", 0x3399,\n    \"fofanthai\", 0x0e1f,\n    \"fofathai\", 0x0e1d,\n    \"fongmanthai\", 0x0e4f,\n    \"forall\", 0x2200,\n    \"four\", 0x0034,\n    \"fourarabic\", 0x0664,\n    \"fourbengali\", 0x09ea,\n    \"fourcircle\", 0x2463,\n    \"fourcircleinversesansserif\", 0x278d,\n    \"fourdeva\", 0x096a,\n    \"fourgujarati\", 0x0aea,\n    \"fourgurmukhi\", 0x0a6a,\n    \"fourhackarabic\", 0x0664,\n    \"fourhangzhou\", 0x3024,\n    \"fourideographicparen\", 0x3223,\n    \"fourinferior\", 0x2084,\n    \"fourmonospace\", 0xff14,\n    \"fournumeratorbengali\", 0x09f7,\n    \"fouroldstyle\", 0xf734,\n    \"fourparen\", 0x2477,\n    \"fourperiod\", 0x248b,\n    \"fourpersian\", 0x06f4,\n    \"fourroman\", 0x2173,\n    \"foursuperior\", 0x2074,\n    \"fourteencircle\", 0x246d,\n    \"fourteenparen\", 0x2481,\n    \"fourteenperiod\", 0x2495,\n    \"fourthai\", 0x0e54,\n    \"fourthtonechinese\", 0x02cb,\n    \"fparen\", 0x24a1,\n    \"fraction\", 0x2044,\n    \"franc\", 0x20a3,\n    \"g\", 0x0067,\n    \"gabengali\", 0x0997,\n    \"gacute\", 0x01f5,\n    \"gadeva\", 0x0917,\n    \"gafarabic\", 0x06af,\n    \"gaffinalarabic\", 0xfb93,\n    \"gafinitialarabic\", 0xfb94,\n    \"gafmedialarabic\", 0xfb95,\n    \"gagujarati\", 0x0a97,\n    \"gagurmukhi\", 0x0a17,\n    \"gahiragana\", 0x304c,\n    \"gakatakana\", 0x30ac,\n    \"gamma\", 0x03b3,\n    \"gammalatinsmall\", 0x0263,\n    \"gammasuperior\", 0x02e0,\n    \"gangiacoptic\", 0x03eb,\n    \"gbopomofo\", 0x310d,\n    \"gbreve\", 0x011f,\n    \"gcaron\", 0x01e7,\n    \"gcedilla\", 0x0123,\n    \"gcircle\", 0x24d6,\n    \"gcircumflex\", 0x011d,\n    \"gcommaaccent\", 0x0123,\n    \"gdot\", 0x0121,\n    \"gdotaccent\", 0x0121,\n    \"gecyrillic\", 0x0433,\n    \"gehiragana\", 0x3052,\n    \"gekatakana\", 0x30b2,\n    \"geometricallyequal\", 0x2251,\n    \"gereshaccenthebrew\", 0x059c,\n    \"gereshhebrew\", 0x05f3,\n    \"gereshmuqdamhebrew\", 0x059d,\n    \"germandbls\", 0x00df,\n    \"gershayimaccenthebrew\", 0x059e,\n    \"gershayimhebrew\", 0x05f4,\n    \"getamark\", 0x3013,\n    \"ghabengali\", 0x0998,\n    \"ghadarmenian\", 0x0572,\n    \"ghadeva\", 0x0918,\n    \"ghagujarati\", 0x0a98,\n    \"ghagurmukhi\", 0x0a18,\n    \"ghainarabic\", 0x063a,\n    \"ghainfinalarabic\", 0xfece,\n    \"ghaininitialarabic\", 0xfecf,\n    \"ghainmedialarabic\", 0xfed0,\n    \"ghemiddlehookcyrillic\", 0x0495,\n    \"ghestrokecyrillic\", 0x0493,\n    \"gheupturncyrillic\", 0x0491,\n    \"ghhadeva\", 0x095a,\n    \"ghhagurmukhi\", 0x0a5a,\n    \"ghook\", 0x0260,\n    \"ghzsquare\", 0x3393,\n    \"gihiragana\", 0x304e,\n    \"gikatakana\", 0x30ae,\n    \"gimarmenian\", 0x0563,\n    \"gimel\", 0x05d2,\n    \"gimeldagesh\", 0xfb32,\n    \"gimeldageshhebrew\", 0xfb32,\n    \"gimelhebrew\", 0x05d2,\n    \"gjecyrillic\", 0x0453,\n    \"glottalinvertedstroke\", 0x01be,\n    \"glottalstop\", 0x0294,\n    \"glottalstopinverted\", 0x0296,\n    \"glottalstopmod\", 0x02c0,\n    \"glottalstopreversed\", 0x0295,\n    \"glottalstopreversedmod\", 0x02c1,\n    \"glottalstopreversedsuperior\", 0x02e4,\n    \"glottalstopstroke\", 0x02a1,\n    \"glottalstopstrokereversed\", 0x02a2,\n    \"gmacron\", 0x1e21,\n    \"gmonospace\", 0xff47,\n    \"gohiragana\", 0x3054,\n    \"gokatakana\", 0x30b4,\n    \"gparen\", 0x24a2,\n    \"gpasquare\", 0x33ac,\n    \"gradient\", 0x2207,\n    \"grave\", 0x0060,\n    \"gravebelowcmb\", 0x0316,\n    \"gravecmb\", 0x0300,\n    \"gravecomb\", 0x0300,\n    \"gravedeva\", 0x0953,\n    \"gravelowmod\", 0x02ce,\n    \"gravemonospace\", 0xff40,\n    \"gravetonecmb\", 0x0340,\n    \"greater\", 0x003e,\n    \"greaterequal\", 0x2265,\n    \"greaterequalorless\", 0x22db,\n    \"greatermonospace\", 0xff1e,\n    \"greaterorequivalent\", 0x2273,\n    \"greaterorless\", 0x2277,\n    \"greateroverequal\", 0x2267,\n    \"greatersmall\", 0xfe65,\n    \"gscript\", 0x0261,\n    \"gstroke\", 0x01e5,\n    \"guhiragana\", 0x3050,\n    \"guillemotleft\", 0x00ab,\n    \"guillemotright\", 0x00bb,\n    \"guilsinglleft\", 0x2039,\n    \"guilsinglright\", 0x203a,\n    \"gukatakana\", 0x30b0,\n    \"guramusquare\", 0x3318,\n    \"gysquare\", 0x33c9,\n    \"h\", 0x0068,\n    \"haabkhasiancyrillic\", 0x04a9,\n    \"haaltonearabic\", 0x06c1,\n    \"habengali\", 0x09b9,\n    \"hadescendercyrillic\", 0x04b3,\n    \"hadeva\", 0x0939,\n    \"hagujarati\", 0x0ab9,\n    \"hagurmukhi\", 0x0a39,\n    \"haharabic\", 0x062d,\n    \"hahfinalarabic\", 0xfea2,\n    \"hahinitialarabic\", 0xfea3,\n    \"hahiragana\", 0x306f,\n    \"hahmedialarabic\", 0xfea4,\n    \"haitusquare\", 0x332a,\n    \"hakatakana\", 0x30cf,\n    \"hakatakanahalfwidth\", 0xff8a,\n    \"halantgurmukhi\", 0x0a4d,\n    \"hamzaarabic\", 0x0621,\n    \"hamzalowarabic\", 0x0621,\n    \"hangulfiller\", 0x3164,\n    \"hardsigncyrillic\", 0x044a,\n    \"harpoonleftbarbup\", 0x21bc,\n    \"harpoonrightbarbup\", 0x21c0,\n    \"hasquare\", 0x33ca,\n    \"hatafpatah\", 0x05b2,\n    \"hatafpatah16\", 0x05b2,\n    \"hatafpatah23\", 0x05b2,\n    \"hatafpatah2f\", 0x05b2,\n    \"hatafpatahhebrew\", 0x05b2,\n    \"hatafpatahnarrowhebrew\", 0x05b2,\n    \"hatafpatahquarterhebrew\", 0x05b2,\n    \"hatafpatahwidehebrew\", 0x05b2,\n    \"hatafqamats\", 0x05b3,\n    \"hatafqamats1b\", 0x05b3,\n    \"hatafqamats28\", 0x05b3,\n    \"hatafqamats34\", 0x05b3,\n    \"hatafqamatshebrew\", 0x05b3,\n    \"hatafqamatsnarrowhebrew\", 0x05b3,\n    \"hatafqamatsquarterhebrew\", 0x05b3,\n    \"hatafqamatswidehebrew\", 0x05b3,\n    \"hatafsegol\", 0x05b1,\n    \"hatafsegol17\", 0x05b1,\n    \"hatafsegol24\", 0x05b1,\n    \"hatafsegol30\", 0x05b1,\n    \"hatafsegolhebrew\", 0x05b1,\n    \"hatafsegolnarrowhebrew\", 0x05b1,\n    \"hatafsegolquarterhebrew\", 0x05b1,\n    \"hatafsegolwidehebrew\", 0x05b1,\n    \"hbar\", 0x0127,\n    \"hbopomofo\", 0x310f,\n    \"hbrevebelow\", 0x1e2b,\n    \"hcedilla\", 0x1e29,\n    \"hcircle\", 0x24d7,\n    \"hcircumflex\", 0x0125,\n    \"hdieresis\", 0x1e27,\n    \"hdotaccent\", 0x1e23,\n    \"hdotbelow\", 0x1e25,\n    \"he\", 0x05d4,\n    \"heart\", 0x2665,\n    \"heartsuitblack\", 0x2665,\n    \"heartsuitwhite\", 0x2661,\n    \"hedagesh\", 0xfb34,\n    \"hedageshhebrew\", 0xfb34,\n    \"hehaltonearabic\", 0x06c1,\n    \"heharabic\", 0x0647,\n    \"hehebrew\", 0x05d4,\n    \"hehfinalaltonearabic\", 0xfba7,\n    \"hehfinalalttwoarabic\", 0xfeea,\n    \"hehfinalarabic\", 0xfeea,\n    \"hehhamzaabovefinalarabic\", 0xfba5,\n    \"hehhamzaaboveisolatedarabic\", 0xfba4,\n    \"hehinitialaltonearabic\", 0xfba8,\n    \"hehinitialarabic\", 0xfeeb,\n    \"hehiragana\", 0x3078,\n    \"hehmedialaltonearabic\", 0xfba9,\n    \"hehmedialarabic\", 0xfeec,\n    \"heiseierasquare\", 0x337b,\n    \"hekatakana\", 0x30d8,\n    \"hekatakanahalfwidth\", 0xff8d,\n    \"hekutaarusquare\", 0x3336,\n    \"henghook\", 0x0267,\n    \"herutusquare\", 0x3339,\n    \"het\", 0x05d7,\n    \"hethebrew\", 0x05d7,\n    \"hhook\", 0x0266,\n    \"hhooksuperior\", 0x02b1,\n    \"hieuhacirclekorean\", 0x327b,\n    \"hieuhaparenkorean\", 0x321b,\n    \"hieuhcirclekorean\", 0x326d,\n    \"hieuhkorean\", 0x314e,\n    \"hieuhparenkorean\", 0x320d,\n    \"hihiragana\", 0x3072,\n    \"hikatakana\", 0x30d2,\n    \"hikatakanahalfwidth\", 0xff8b,\n    \"hiriq\", 0x05b4,\n    \"hiriq14\", 0x05b4,\n    \"hiriq21\", 0x05b4,\n    \"hiriq2d\", 0x05b4,\n    \"hiriqhebrew\", 0x05b4,\n    \"hiriqnarrowhebrew\", 0x05b4,\n    \"hiriqquarterhebrew\", 0x05b4,\n    \"hiriqwidehebrew\", 0x05b4,\n    \"hlinebelow\", 0x1e96,\n    \"hmonospace\", 0xff48,\n    \"hoarmenian\", 0x0570,\n    \"hohipthai\", 0x0e2b,\n    \"hohiragana\", 0x307b,\n    \"hokatakana\", 0x30db,\n    \"hokatakanahalfwidth\", 0xff8e,\n    \"holam\", 0x05b9,\n    \"holam19\", 0x05b9,\n    \"holam26\", 0x05b9,\n    \"holam32\", 0x05b9,\n    \"holamhebrew\", 0x05b9,\n    \"holamnarrowhebrew\", 0x05b9,\n    \"holamquarterhebrew\", 0x05b9,\n    \"holamwidehebrew\", 0x05b9,\n    \"honokhukthai\", 0x0e2e,\n    \"hookabovecomb\", 0x0309,\n    \"hookcmb\", 0x0309,\n    \"hookpalatalizedbelowcmb\", 0x0321,\n    \"hookretroflexbelowcmb\", 0x0322,\n    \"hoonsquare\", 0x3342,\n    \"horicoptic\", 0x03e9,\n    \"horizontalbar\", 0x2015,\n    \"horncmb\", 0x031b,\n    \"hotsprings\", 0x2668,\n    \"house\", 0x2302,\n    \"hparen\", 0x24a3,\n    \"hsuperior\", 0x02b0,\n    \"hturned\", 0x0265,\n    \"huhiragana\", 0x3075,\n    \"huiitosquare\", 0x3333,\n    \"hukatakana\", 0x30d5,\n    \"hukatakanahalfwidth\", 0xff8c,\n    \"hungarumlaut\", 0x02dd,\n    \"hungarumlautcmb\", 0x030b,\n    \"hv\", 0x0195,\n    \"hyphen\", 0x002d,\n    \"hypheninferior\", 0xf6e5,\n    \"hyphenmonospace\", 0xff0d,\n    \"hyphensmall\", 0xfe63,\n    \"hyphensuperior\", 0xf6e6,\n    \"hyphentwo\", 0x2010,\n    \"i\", 0x0069,\n    \"iacute\", 0x00ed,\n    \"iacyrillic\", 0x044f,\n    \"ibengali\", 0x0987,\n    \"ibopomofo\", 0x3127,\n    \"ibreve\", 0x012d,\n    \"icaron\", 0x01d0,\n    \"icircle\", 0x24d8,\n    \"icircumflex\", 0x00ee,\n    \"icyrillic\", 0x0456,\n    \"idblgrave\", 0x0209,\n    \"ideographearthcircle\", 0x328f,\n    \"ideographfirecircle\", 0x328b,\n    \"ideographicallianceparen\", 0x323f,\n    \"ideographiccallparen\", 0x323a,\n    \"ideographiccentrecircle\", 0x32a5,\n    \"ideographicclose\", 0x3006,\n    \"ideographiccomma\", 0x3001,\n    \"ideographiccommaleft\", 0xff64,\n    \"ideographiccongratulationparen\", 0x3237,\n    \"ideographiccorrectcircle\", 0x32a3,\n    \"ideographicearthparen\", 0x322f,\n    \"ideographicenterpriseparen\", 0x323d,\n    \"ideographicexcellentcircle\", 0x329d,\n    \"ideographicfestivalparen\", 0x3240,\n    \"ideographicfinancialcircle\", 0x3296,\n    \"ideographicfinancialparen\", 0x3236,\n    \"ideographicfireparen\", 0x322b,\n    \"ideographichaveparen\", 0x3232,\n    \"ideographichighcircle\", 0x32a4,\n    \"ideographiciterationmark\", 0x3005,\n    \"ideographiclaborcircle\", 0x3298,\n    \"ideographiclaborparen\", 0x3238,\n    \"ideographicleftcircle\", 0x32a7,\n    \"ideographiclowcircle\", 0x32a6,\n    \"ideographicmedicinecircle\", 0x32a9,\n    \"ideographicmetalparen\", 0x322e,\n    \"ideographicmoonparen\", 0x322a,\n    \"ideographicnameparen\", 0x3234,\n    \"ideographicperiod\", 0x3002,\n    \"ideographicprintcircle\", 0x329e,\n    \"ideographicreachparen\", 0x3243,\n    \"ideographicrepresentparen\", 0x3239,\n    \"ideographicresourceparen\", 0x323e,\n    \"ideographicrightcircle\", 0x32a8,\n    \"ideographicsecretcircle\", 0x3299,\n    \"ideographicselfparen\", 0x3242,\n    \"ideographicsocietyparen\", 0x3233,\n    \"ideographicspace\", 0x3000,\n    \"ideographicspecialparen\", 0x3235,\n    \"ideographicstockparen\", 0x3231,\n    \"ideographicstudyparen\", 0x323b,\n    \"ideographicsunparen\", 0x3230,\n    \"ideographicsuperviseparen\", 0x323c,\n    \"ideographicwaterparen\", 0x322c,\n    \"ideographicwoodparen\", 0x322d,\n    \"ideographiczero\", 0x3007,\n    \"ideographmetalcircle\", 0x328e,\n    \"ideographmooncircle\", 0x328a,\n    \"ideographnamecircle\", 0x3294,\n    \"ideographsuncircle\", 0x3290,\n    \"ideographwatercircle\", 0x328c,\n    \"ideographwoodcircle\", 0x328d,\n    \"ideva\", 0x0907,\n    \"idieresis\", 0x00ef,\n    \"idieresisacute\", 0x1e2f,\n    \"idieresiscyrillic\", 0x04e5,\n    \"idotbelow\", 0x1ecb,\n    \"iebrevecyrillic\", 0x04d7,\n    \"iecyrillic\", 0x0435,\n    \"ieungacirclekorean\", 0x3275,\n    \"ieungaparenkorean\", 0x3215,\n    \"ieungcirclekorean\", 0x3267,\n    \"ieungkorean\", 0x3147,\n    \"ieungparenkorean\", 0x3207,\n    \"igrave\", 0x00ec,\n    \"igujarati\", 0x0a87,\n    \"igurmukhi\", 0x0a07,\n    \"ihiragana\", 0x3044,\n    \"ihookabove\", 0x1ec9,\n    \"iibengali\", 0x0988,\n    \"iicyrillic\", 0x0438,\n    \"iideva\", 0x0908,\n    \"iigujarati\", 0x0a88,\n    \"iigurmukhi\", 0x0a08,\n    \"iimatragurmukhi\", 0x0a40,\n    \"iinvertedbreve\", 0x020b,\n    \"iishortcyrillic\", 0x0439,\n    \"iivowelsignbengali\", 0x09c0,\n    \"iivowelsigndeva\", 0x0940,\n    \"iivowelsigngujarati\", 0x0ac0,\n    \"ij\", 0x0133,\n    \"ikatakana\", 0x30a4,\n    \"ikatakanahalfwidth\", 0xff72,\n    \"ikorean\", 0x3163,\n    \"ilde\", 0x02dc,\n    \"iluyhebrew\", 0x05ac,\n    \"imacron\", 0x012b,\n    \"imacroncyrillic\", 0x04e3,\n    \"imageorapproximatelyequal\", 0x2253,\n    \"imatragurmukhi\", 0x0a3f,\n    \"imonospace\", 0xff49,\n    \"increment\", 0x2206,\n    \"infinity\", 0x221e,\n    \"iniarmenian\", 0x056b,\n    \"integral\", 0x222b,\n    \"integralbottom\", 0x2321,\n    \"integralbt\", 0x2321,\n    \"integralex\", 0xf8f5,\n    \"integraltop\", 0x2320,\n    \"integraltp\", 0x2320,\n    \"intersection\", 0x2229,\n    \"intisquare\", 0x3305,\n    \"invbullet\", 0x25d8,\n    \"invcircle\", 0x25d9,\n    \"invsmileface\", 0x263b,\n    \"iocyrillic\", 0x0451,\n    \"iogonek\", 0x012f,\n    \"iota\", 0x03b9,\n    \"iotadieresis\", 0x03ca,\n    \"iotadieresistonos\", 0x0390,\n    \"iotalatin\", 0x0269,\n    \"iotatonos\", 0x03af,\n    \"iparen\", 0x24a4,\n    \"irigurmukhi\", 0x0a72,\n    \"ismallhiragana\", 0x3043,\n    \"ismallkatakana\", 0x30a3,\n    \"ismallkatakanahalfwidth\", 0xff68,\n    \"issharbengali\", 0x09fa,\n    \"istroke\", 0x0268,\n    \"isuperior\", 0xf6ed,\n    \"iterationhiragana\", 0x309d,\n    \"iterationkatakana\", 0x30fd,\n    \"itilde\", 0x0129,\n    \"itildebelow\", 0x1e2d,\n    \"iubopomofo\", 0x3129,\n    \"iucyrillic\", 0x044e,\n    \"ivowelsignbengali\", 0x09bf,\n    \"ivowelsigndeva\", 0x093f,\n    \"ivowelsigngujarati\", 0x0abf,\n    \"izhitsacyrillic\", 0x0475,\n    \"izhitsadblgravecyrillic\", 0x0477,\n    \"j\", 0x006a,\n    \"jaarmenian\", 0x0571,\n    \"jabengali\", 0x099c,\n    \"jadeva\", 0x091c,\n    \"jagujarati\", 0x0a9c,\n    \"jagurmukhi\", 0x0a1c,\n    \"jbopomofo\", 0x3110,\n    \"jcaron\", 0x01f0,\n    \"jcircle\", 0x24d9,\n    \"jcircumflex\", 0x0135,\n    \"jcrossedtail\", 0x029d,\n    \"jdotlessstroke\", 0x025f,\n    \"jecyrillic\", 0x0458,\n    \"jeemarabic\", 0x062c,\n    \"jeemfinalarabic\", 0xfe9e,\n    \"jeeminitialarabic\", 0xfe9f,\n    \"jeemmedialarabic\", 0xfea0,\n    \"jeharabic\", 0x0698,\n    \"jehfinalarabic\", 0xfb8b,\n    \"jhabengali\", 0x099d,\n    \"jhadeva\", 0x091d,\n    \"jhagujarati\", 0x0a9d,\n    \"jhagurmukhi\", 0x0a1d,\n    \"jheharmenian\", 0x057b,\n    \"jis\", 0x3004,\n    \"jmonospace\", 0xff4a,\n    \"jparen\", 0x24a5,\n    \"jsuperior\", 0x02b2,\n    \"k\", 0x006b,\n    \"kabashkircyrillic\", 0x04a1,\n    \"kabengali\", 0x0995,\n    \"kacute\", 0x1e31,\n    \"kacyrillic\", 0x043a,\n    \"kadescendercyrillic\", 0x049b,\n    \"kadeva\", 0x0915,\n    \"kaf\", 0x05db,\n    \"kafarabic\", 0x0643,\n    \"kafdagesh\", 0xfb3b,\n    \"kafdageshhebrew\", 0xfb3b,\n    \"kaffinalarabic\", 0xfeda,\n    \"kafhebrew\", 0x05db,\n    \"kafinitialarabic\", 0xfedb,\n    \"kafmedialarabic\", 0xfedc,\n    \"kafrafehebrew\", 0xfb4d,\n    \"kagujarati\", 0x0a95,\n    \"kagurmukhi\", 0x0a15,\n    \"kahiragana\", 0x304b,\n    \"kahookcyrillic\", 0x04c4,\n    \"kakatakana\", 0x30ab,\n    \"kakatakanahalfwidth\", 0xff76,\n    \"kappa\", 0x03ba,\n    \"kappasymbolgreek\", 0x03f0,\n    \"kapyeounmieumkorean\", 0x3171,\n    \"kapyeounphieuphkorean\", 0x3184,\n    \"kapyeounpieupkorean\", 0x3178,\n    \"kapyeounssangpieupkorean\", 0x3179,\n    \"karoriisquare\", 0x330d,\n    \"kashidaautoarabic\", 0x0640,\n    \"kashidaautonosidebearingarabic\", 0x0640,\n    \"kasmallkatakana\", 0x30f5,\n    \"kasquare\", 0x3384,\n    \"kasraarabic\", 0x0650,\n    \"kasratanarabic\", 0x064d,\n    \"kastrokecyrillic\", 0x049f,\n    \"katahiraprolongmarkhalfwidth\", 0xff70,\n    \"kaverticalstrokecyrillic\", 0x049d,\n    \"kbopomofo\", 0x310e,\n    \"kcalsquare\", 0x3389,\n    \"kcaron\", 0x01e9,\n    \"kcedilla\", 0x0137,\n    \"kcircle\", 0x24da,\n    \"kcommaaccent\", 0x0137,\n    \"kdotbelow\", 0x1e33,\n    \"keharmenian\", 0x0584,\n    \"kehiragana\", 0x3051,\n    \"kekatakana\", 0x30b1,\n    \"kekatakanahalfwidth\", 0xff79,\n    \"kenarmenian\", 0x056f,\n    \"kesmallkatakana\", 0x30f6,\n    \"kgreenlandic\", 0x0138,\n    \"khabengali\", 0x0996,\n    \"khacyrillic\", 0x0445,\n    \"khadeva\", 0x0916,\n    \"khagujarati\", 0x0a96,\n    \"khagurmukhi\", 0x0a16,\n    \"khaharabic\", 0x062e,\n    \"khahfinalarabic\", 0xfea6,\n    \"khahinitialarabic\", 0xfea7,\n    \"khahmedialarabic\", 0xfea8,\n    \"kheicoptic\", 0x03e7,\n    \"khhadeva\", 0x0959,\n    \"khhagurmukhi\", 0x0a59,\n    \"khieukhacirclekorean\", 0x3278,\n    \"khieukhaparenkorean\", 0x3218,\n    \"khieukhcirclekorean\", 0x326a,\n    \"khieukhkorean\", 0x314b,\n    \"khieukhparenkorean\", 0x320a,\n    \"khokhaithai\", 0x0e02,\n    \"khokhonthai\", 0x0e05,\n    \"khokhuatthai\", 0x0e03,\n    \"khokhwaithai\", 0x0e04,\n    \"khomutthai\", 0x0e5b,\n    \"khook\", 0x0199,\n    \"khorakhangthai\", 0x0e06,\n    \"khzsquare\", 0x3391,\n    \"kihiragana\", 0x304d,\n    \"kikatakana\", 0x30ad,\n    \"kikatakanahalfwidth\", 0xff77,\n    \"kiroguramusquare\", 0x3315,\n    \"kiromeetorusquare\", 0x3316,\n    \"kirosquare\", 0x3314,\n    \"kiyeokacirclekorean\", 0x326e,\n    \"kiyeokaparenkorean\", 0x320e,\n    \"kiyeokcirclekorean\", 0x3260,\n    \"kiyeokkorean\", 0x3131,\n    \"kiyeokparenkorean\", 0x3200,\n    \"kiyeoksioskorean\", 0x3133,\n    \"kjecyrillic\", 0x045c,\n    \"klinebelow\", 0x1e35,\n    \"klsquare\", 0x3398,\n    \"kmcubedsquare\", 0x33a6,\n    \"kmonospace\", 0xff4b,\n    \"kmsquaredsquare\", 0x33a2,\n    \"kohiragana\", 0x3053,\n    \"kohmsquare\", 0x33c0,\n    \"kokaithai\", 0x0e01,\n    \"kokatakana\", 0x30b3,\n    \"kokatakanahalfwidth\", 0xff7a,\n    \"kooposquare\", 0x331e,\n    \"koppacyrillic\", 0x0481,\n    \"koreanstandardsymbol\", 0x327f,\n    \"koroniscmb\", 0x0343,\n    \"kparen\", 0x24a6,\n    \"kpasquare\", 0x33aa,\n    \"ksicyrillic\", 0x046f,\n    \"ktsquare\", 0x33cf,\n    \"kturned\", 0x029e,\n    \"kuhiragana\", 0x304f,\n    \"kukatakana\", 0x30af,\n    \"kukatakanahalfwidth\", 0xff78,\n    \"kvsquare\", 0x33b8,\n    \"kwsquare\", 0x33be,\n    \"l\", 0x006c,\n    \"labengali\", 0x09b2,\n    \"lacute\", 0x013a,\n    \"ladeva\", 0x0932,\n    \"lagujarati\", 0x0ab2,\n    \"lagurmukhi\", 0x0a32,\n    \"lakkhangyaothai\", 0x0e45,\n    \"lamaleffinalarabic\", 0xfefc,\n    \"lamalefhamzaabovefinalarabic\", 0xfef8,\n    \"lamalefhamzaaboveisolatedarabic\", 0xfef7,\n    \"lamalefhamzabelowfinalarabic\", 0xfefa,\n    \"lamalefhamzabelowisolatedarabic\", 0xfef9,\n    \"lamalefisolatedarabic\", 0xfefb,\n    \"lamalefmaddaabovefinalarabic\", 0xfef6,\n    \"lamalefmaddaaboveisolatedarabic\", 0xfef5,\n    \"lamarabic\", 0x0644,\n    \"lambda\", 0x03bb,\n    \"lambdastroke\", 0x019b,\n    \"lamed\", 0x05dc,\n    \"lameddagesh\", 0xfb3c,\n    \"lameddageshhebrew\", 0xfb3c,\n    \"lamedhebrew\", 0x05dc,\n    \"lamfinalarabic\", 0xfede,\n    \"lamhahinitialarabic\", 0xfcca,\n    \"laminitialarabic\", 0xfedf,\n    \"lamjeeminitialarabic\", 0xfcc9,\n    \"lamkhahinitialarabic\", 0xfccb,\n    \"lamlamhehisolatedarabic\", 0xfdf2,\n    \"lammedialarabic\", 0xfee0,\n    \"lammeemhahinitialarabic\", 0xfd88,\n    \"lammeeminitialarabic\", 0xfccc,\n    \"largecircle\", 0x25ef,\n    \"lbar\", 0x019a,\n    \"lbelt\", 0x026c,\n    \"lbopomofo\", 0x310c,\n    \"lcaron\", 0x013e,\n    \"lcedilla\", 0x013c,\n    \"lcircle\", 0x24db,\n    \"lcircumflexbelow\", 0x1e3d,\n    \"lcommaaccent\", 0x013c,\n    \"ldot\", 0x0140,\n    \"ldotaccent\", 0x0140,\n    \"ldotbelow\", 0x1e37,\n    \"ldotbelowmacron\", 0x1e39,\n    \"leftangleabovecmb\", 0x031a,\n    \"lefttackbelowcmb\", 0x0318,\n    \"less\", 0x003c,\n    \"lessequal\", 0x2264,\n    \"lessequalorgreater\", 0x22da,\n    \"lessmonospace\", 0xff1c,\n    \"lessorequivalent\", 0x2272,\n    \"lessorgreater\", 0x2276,\n    \"lessoverequal\", 0x2266,\n    \"lesssmall\", 0xfe64,\n    \"lezh\", 0x026e,\n    \"lfblock\", 0x258c,\n    \"lhookretroflex\", 0x026d,\n    \"lira\", 0x20a4,\n    \"liwnarmenian\", 0x056c,\n    \"lj\", 0x01c9,\n    \"ljecyrillic\", 0x0459,\n    \"ll\", 0xf6c0,\n    \"lladeva\", 0x0933,\n    \"llagujarati\", 0x0ab3,\n    \"llinebelow\", 0x1e3b,\n    \"llladeva\", 0x0934,\n    \"llvocalicbengali\", 0x09e1,\n    \"llvocalicdeva\", 0x0961,\n    \"llvocalicvowelsignbengali\", 0x09e3,\n    \"llvocalicvowelsigndeva\", 0x0963,\n    \"lmiddletilde\", 0x026b,\n    \"lmonospace\", 0xff4c,\n    \"lmsquare\", 0x33d0,\n    \"lochulathai\", 0x0e2c,\n    \"logicaland\", 0x2227,\n    \"logicalnot\", 0x00ac,\n    \"logicalnotreversed\", 0x2310,\n    \"logicalor\", 0x2228,\n    \"lolingthai\", 0x0e25,\n    \"longs\", 0x017f,\n    \"lowlinecenterline\", 0xfe4e,\n    \"lowlinecmb\", 0x0332,\n    \"lowlinedashed\", 0xfe4d,\n    \"lozenge\", 0x25ca,\n    \"lparen\", 0x24a7,\n    \"lslash\", 0x0142,\n    \"lsquare\", 0x2113,\n    \"lsuperior\", 0xf6ee,\n    \"ltshade\", 0x2591,\n    \"luthai\", 0x0e26,\n    \"lvocalicbengali\", 0x098c,\n    \"lvocalicdeva\", 0x090c,\n    \"lvocalicvowelsignbengali\", 0x09e2,\n    \"lvocalicvowelsigndeva\", 0x0962,\n    \"lxsquare\", 0x33d3,\n    \"m\", 0x006d,\n    \"mabengali\", 0x09ae,\n    \"macron\", 0x00af,\n    \"macronbelowcmb\", 0x0331,\n    \"macroncmb\", 0x0304,\n    \"macronlowmod\", 0x02cd,\n    \"macronmonospace\", 0xffe3,\n    \"macute\", 0x1e3f,\n    \"madeva\", 0x092e,\n    \"magujarati\", 0x0aae,\n    \"magurmukhi\", 0x0a2e,\n    \"mahapakhhebrew\", 0x05a4,\n    \"mahapakhlefthebrew\", 0x05a4,\n    \"mahiragana\", 0x307e,\n    \"maichattawalowleftthai\", 0xf895,\n    \"maichattawalowrightthai\", 0xf894,\n    \"maichattawathai\", 0x0e4b,\n    \"maichattawaupperleftthai\", 0xf893,\n    \"maieklowleftthai\", 0xf88c,\n    \"maieklowrightthai\", 0xf88b,\n    \"maiekthai\", 0x0e48,\n    \"maiekupperleftthai\", 0xf88a,\n    \"maihanakatleftthai\", 0xf884,\n    \"maihanakatthai\", 0x0e31,\n    \"maitaikhuleftthai\", 0xf889,\n    \"maitaikhuthai\", 0x0e47,\n    \"maitholowleftthai\", 0xf88f,\n    \"maitholowrightthai\", 0xf88e,\n    \"maithothai\", 0x0e49,\n    \"maithoupperleftthai\", 0xf88d,\n    \"maitrilowleftthai\", 0xf892,\n    \"maitrilowrightthai\", 0xf891,\n    \"maitrithai\", 0x0e4a,\n    \"maitriupperleftthai\", 0xf890,\n    \"maiyamokthai\", 0x0e46,\n    \"makatakana\", 0x30de,\n    \"makatakanahalfwidth\", 0xff8f,\n    \"male\", 0x2642,\n    \"mansyonsquare\", 0x3347,\n    \"maqafhebrew\", 0x05be,\n    \"mars\", 0x2642,\n    \"masoracirclehebrew\", 0x05af,\n    \"masquare\", 0x3383,\n    \"mbopomofo\", 0x3107,\n    \"mbsquare\", 0x33d4,\n    \"mcircle\", 0x24dc,\n    \"mcubedsquare\", 0x33a5,\n    \"mdotaccent\", 0x1e41,\n    \"mdotbelow\", 0x1e43,\n    \"meemarabic\", 0x0645,\n    \"meemfinalarabic\", 0xfee2,\n    \"meeminitialarabic\", 0xfee3,\n    \"meemmedialarabic\", 0xfee4,\n    \"meemmeeminitialarabic\", 0xfcd1,\n    \"meemmeemisolatedarabic\", 0xfc48,\n    \"meetorusquare\", 0x334d,\n    \"mehiragana\", 0x3081,\n    \"meizierasquare\", 0x337e,\n    \"mekatakana\", 0x30e1,\n    \"mekatakanahalfwidth\", 0xff92,\n    \"mem\", 0x05de,\n    \"memdagesh\", 0xfb3e,\n    \"memdageshhebrew\", 0xfb3e,\n    \"memhebrew\", 0x05de,\n    \"menarmenian\", 0x0574,\n    \"merkhahebrew\", 0x05a5,\n    \"merkhakefulahebrew\", 0x05a6,\n    \"merkhakefulalefthebrew\", 0x05a6,\n    \"merkhalefthebrew\", 0x05a5,\n    \"mhook\", 0x0271,\n    \"mhzsquare\", 0x3392,\n    \"middledotkatakanahalfwidth\", 0xff65,\n    \"middot\", 0x00b7,\n    \"mieumacirclekorean\", 0x3272,\n    \"mieumaparenkorean\", 0x3212,\n    \"mieumcirclekorean\", 0x3264,\n    \"mieumkorean\", 0x3141,\n    \"mieumpansioskorean\", 0x3170,\n    \"mieumparenkorean\", 0x3204,\n    \"mieumpieupkorean\", 0x316e,\n    \"mieumsioskorean\", 0x316f,\n    \"mihiragana\", 0x307f,\n    \"mikatakana\", 0x30df,\n    \"mikatakanahalfwidth\", 0xff90,\n    \"minus\", 0x2212,\n    \"minusbelowcmb\", 0x0320,\n    \"minuscircle\", 0x2296,\n    \"minusmod\", 0x02d7,\n    \"minusplus\", 0x2213,\n    \"minute\", 0x2032,\n    \"miribaarusquare\", 0x334a,\n    \"mirisquare\", 0x3349,\n    \"mlonglegturned\", 0x0270,\n    \"mlsquare\", 0x3396,\n    \"mmcubedsquare\", 0x33a3,\n    \"mmonospace\", 0xff4d,\n    \"mmsquaredsquare\", 0x339f,\n    \"mohiragana\", 0x3082,\n    \"mohmsquare\", 0x33c1,\n    \"mokatakana\", 0x30e2,\n    \"mokatakanahalfwidth\", 0xff93,\n    \"molsquare\", 0x33d6,\n    \"momathai\", 0x0e21,\n    \"moverssquare\", 0x33a7,\n    \"moverssquaredsquare\", 0x33a8,\n    \"mparen\", 0x24a8,\n    \"mpasquare\", 0x33ab,\n    \"mssquare\", 0x33b3,\n    \"msuperior\", 0xf6ef,\n    \"mturned\", 0x026f,\n    \"mu\", 0x00b5,\n    \"mu1\", 0x00b5,\n    \"muasquare\", 0x3382,\n    \"muchgreater\", 0x226b,\n    \"muchless\", 0x226a,\n    \"mufsquare\", 0x338c,\n    \"mugreek\", 0x03bc,\n    \"mugsquare\", 0x338d,\n    \"muhiragana\", 0x3080,\n    \"mukatakana\", 0x30e0,\n    \"mukatakanahalfwidth\", 0xff91,\n    \"mulsquare\", 0x3395,\n    \"multiply\", 0x00d7,\n    \"mumsquare\", 0x339b,\n    \"munahhebrew\", 0x05a3,\n    \"munahlefthebrew\", 0x05a3,\n    \"musicalnote\", 0x266a,\n    \"musicalnotedbl\", 0x266b,\n    \"musicflatsign\", 0x266d,\n    \"musicsharpsign\", 0x266f,\n    \"mussquare\", 0x33b2,\n    \"muvsquare\", 0x33b6,\n    \"muwsquare\", 0x33bc,\n    \"mvmegasquare\", 0x33b9,\n    \"mvsquare\", 0x33b7,\n    \"mwmegasquare\", 0x33bf,\n    \"mwsquare\", 0x33bd,\n    \"n\", 0x006e,\n    \"nabengali\", 0x09a8,\n    \"nabla\", 0x2207,\n    \"nacute\", 0x0144,\n    \"nadeva\", 0x0928,\n    \"nagujarati\", 0x0aa8,\n    \"nagurmukhi\", 0x0a28,\n    \"nahiragana\", 0x306a,\n    \"nakatakana\", 0x30ca,\n    \"nakatakanahalfwidth\", 0xff85,\n    \"napostrophe\", 0x0149,\n    \"nasquare\", 0x3381,\n    \"nbopomofo\", 0x310b,\n    \"nbspace\", 0x00a0,\n    \"ncaron\", 0x0148,\n    \"ncedilla\", 0x0146,\n    \"ncircle\", 0x24dd,\n    \"ncircumflexbelow\", 0x1e4b,\n    \"ncommaaccent\", 0x0146,\n    \"ndotaccent\", 0x1e45,\n    \"ndotbelow\", 0x1e47,\n    \"nehiragana\", 0x306d,\n    \"nekatakana\", 0x30cd,\n    \"nekatakanahalfwidth\", 0xff88,\n    \"newsheqelsign\", 0x20aa,\n    \"nfsquare\", 0x338b,\n    \"ngabengali\", 0x0999,\n    \"ngadeva\", 0x0919,\n    \"ngagujarati\", 0x0a99,\n    \"ngagurmukhi\", 0x0a19,\n    \"ngonguthai\", 0x0e07,\n    \"nhiragana\", 0x3093,\n    \"nhookleft\", 0x0272,\n    \"nhookretroflex\", 0x0273,\n    \"nieunacirclekorean\", 0x326f,\n    \"nieunaparenkorean\", 0x320f,\n    \"nieuncieuckorean\", 0x3135,\n    \"nieuncirclekorean\", 0x3261,\n    \"nieunhieuhkorean\", 0x3136,\n    \"nieunkorean\", 0x3134,\n    \"nieunpansioskorean\", 0x3168,\n    \"nieunparenkorean\", 0x3201,\n    \"nieunsioskorean\", 0x3167,\n    \"nieuntikeutkorean\", 0x3166,\n    \"nihiragana\", 0x306b,\n    \"nikatakana\", 0x30cb,\n    \"nikatakanahalfwidth\", 0xff86,\n    \"nikhahitleftthai\", 0xf899,\n    \"nikhahitthai\", 0x0e4d,\n    \"nine\", 0x0039,\n    \"ninearabic\", 0x0669,\n    \"ninebengali\", 0x09ef,\n    \"ninecircle\", 0x2468,\n    \"ninecircleinversesansserif\", 0x2792,\n    \"ninedeva\", 0x096f,\n    \"ninegujarati\", 0x0aef,\n    \"ninegurmukhi\", 0x0a6f,\n    \"ninehackarabic\", 0x0669,\n    \"ninehangzhou\", 0x3029,\n    \"nineideographicparen\", 0x3228,\n    \"nineinferior\", 0x2089,\n    \"ninemonospace\", 0xff19,\n    \"nineoldstyle\", 0xf739,\n    \"nineparen\", 0x247c,\n    \"nineperiod\", 0x2490,\n    \"ninepersian\", 0x06f9,\n    \"nineroman\", 0x2178,\n    \"ninesuperior\", 0x2079,\n    \"nineteencircle\", 0x2472,\n    \"nineteenparen\", 0x2486,\n    \"nineteenperiod\", 0x249a,\n    \"ninethai\", 0x0e59,\n    \"nj\", 0x01cc,\n    \"njecyrillic\", 0x045a,\n    \"nkatakana\", 0x30f3,\n    \"nkatakanahalfwidth\", 0xff9d,\n    \"nlegrightlong\", 0x019e,\n    \"nlinebelow\", 0x1e49,\n    \"nmonospace\", 0xff4e,\n    \"nmsquare\", 0x339a,\n    \"nnabengali\", 0x09a3,\n    \"nnadeva\", 0x0923,\n    \"nnagujarati\", 0x0aa3,\n    \"nnagurmukhi\", 0x0a23,\n    \"nnnadeva\", 0x0929,\n    \"nohiragana\", 0x306e,\n    \"nokatakana\", 0x30ce,\n    \"nokatakanahalfwidth\", 0xff89,\n    \"nonbreakingspace\", 0x00a0,\n    \"nonenthai\", 0x0e13,\n    \"nonuthai\", 0x0e19,\n    \"noonarabic\", 0x0646,\n    \"noonfinalarabic\", 0xfee6,\n    \"noonghunnaarabic\", 0x06ba,\n    \"noonghunnafinalarabic\", 0xfb9f,\n    \"nooninitialarabic\", 0xfee7,\n    \"noonjeeminitialarabic\", 0xfcd2,\n    \"noonjeemisolatedarabic\", 0xfc4b,\n    \"noonmedialarabic\", 0xfee8,\n    \"noonmeeminitialarabic\", 0xfcd5,\n    \"noonmeemisolatedarabic\", 0xfc4e,\n    \"noonnoonfinalarabic\", 0xfc8d,\n    \"notcontains\", 0x220c,\n    \"notelement\", 0x2209,\n    \"notelementof\", 0x2209,\n    \"notequal\", 0x2260,\n    \"notgreater\", 0x226f,\n    \"notgreaternorequal\", 0x2271,\n    \"notgreaternorless\", 0x2279,\n    \"notidentical\", 0x2262,\n    \"notless\", 0x226e,\n    \"notlessnorequal\", 0x2270,\n    \"notparallel\", 0x2226,\n    \"notprecedes\", 0x2280,\n    \"notsubset\", 0x2284,\n    \"notsucceeds\", 0x2281,\n    \"notsuperset\", 0x2285,\n    \"nowarmenian\", 0x0576,\n    \"nparen\", 0x24a9,\n    \"nssquare\", 0x33b1,\n    \"nsuperior\", 0x207f,\n    \"ntilde\", 0x00f1,\n    \"nu\", 0x03bd,\n    \"nuhiragana\", 0x306c,\n    \"nukatakana\", 0x30cc,\n    \"nukatakanahalfwidth\", 0xff87,\n    \"nuktabengali\", 0x09bc,\n    \"nuktadeva\", 0x093c,\n    \"nuktagujarati\", 0x0abc,\n    \"nuktagurmukhi\", 0x0a3c,\n    \"numbersign\", 0x0023,\n    \"numbersignmonospace\", 0xff03,\n    \"numbersignsmall\", 0xfe5f,\n    \"numeralsigngreek\", 0x0374,\n    \"numeralsignlowergreek\", 0x0375,\n    \"numero\", 0x2116,\n    \"nun\", 0x05e0,\n    \"nundagesh\", 0xfb40,\n    \"nundageshhebrew\", 0xfb40,\n    \"nunhebrew\", 0x05e0,\n    \"nvsquare\", 0x33b5,\n    \"nwsquare\", 0x33bb,\n    \"nyabengali\", 0x099e,\n    \"nyadeva\", 0x091e,\n    \"nyagujarati\", 0x0a9e,\n    \"nyagurmukhi\", 0x0a1e,\n    \"o\", 0x006f,\n    \"oacute\", 0x00f3,\n    \"oangthai\", 0x0e2d,\n    \"obarred\", 0x0275,\n    \"obarredcyrillic\", 0x04e9,\n    \"obarreddieresiscyrillic\", 0x04eb,\n    \"obengali\", 0x0993,\n    \"obopomofo\", 0x311b,\n    \"obreve\", 0x014f,\n    \"ocandradeva\", 0x0911,\n    \"ocandragujarati\", 0x0a91,\n    \"ocandravowelsigndeva\", 0x0949,\n    \"ocandravowelsigngujarati\", 0x0ac9,\n    \"ocaron\", 0x01d2,\n    \"ocircle\", 0x24de,\n    \"ocircumflex\", 0x00f4,\n    \"ocircumflexacute\", 0x1ed1,\n    \"ocircumflexdotbelow\", 0x1ed9,\n    \"ocircumflexgrave\", 0x1ed3,\n    \"ocircumflexhookabove\", 0x1ed5,\n    \"ocircumflextilde\", 0x1ed7,\n    \"ocyrillic\", 0x043e,\n    \"odblacute\", 0x0151,\n    \"odblgrave\", 0x020d,\n    \"odeva\", 0x0913,\n    \"odieresis\", 0x00f6,\n    \"odieresiscyrillic\", 0x04e7,\n    \"odotbelow\", 0x1ecd,\n    \"oe\", 0x0153,\n    \"oekorean\", 0x315a,\n    \"ogonek\", 0x02db,\n    \"ogonekcmb\", 0x0328,\n    \"ograve\", 0x00f2,\n    \"ogujarati\", 0x0a93,\n    \"oharmenian\", 0x0585,\n    \"ohiragana\", 0x304a,\n    \"ohookabove\", 0x1ecf,\n    \"ohorn\", 0x01a1,\n    \"ohornacute\", 0x1edb,\n    \"ohorndotbelow\", 0x1ee3,\n    \"ohorngrave\", 0x1edd,\n    \"ohornhookabove\", 0x1edf,\n    \"ohorntilde\", 0x1ee1,\n    \"ohungarumlaut\", 0x0151,\n    \"oi\", 0x01a3,\n    \"oinvertedbreve\", 0x020f,\n    \"okatakana\", 0x30aa,\n    \"okatakanahalfwidth\", 0xff75,\n    \"okorean\", 0x3157,\n    \"olehebrew\", 0x05ab,\n    \"omacron\", 0x014d,\n    \"omacronacute\", 0x1e53,\n    \"omacrongrave\", 0x1e51,\n    \"omdeva\", 0x0950,\n    \"omega\", 0x03c9,\n    \"omega1\", 0x03d6,\n    \"omegacyrillic\", 0x0461,\n    \"omegalatinclosed\", 0x0277,\n    \"omegaroundcyrillic\", 0x047b,\n    \"omegatitlocyrillic\", 0x047d,\n    \"omegatonos\", 0x03ce,\n    \"omgujarati\", 0x0ad0,\n    \"omicron\", 0x03bf,\n    \"omicrontonos\", 0x03cc,\n    \"omonospace\", 0xff4f,\n    \"one\", 0x0031,\n    \"onearabic\", 0x0661,\n    \"onebengali\", 0x09e7,\n    \"onecircle\", 0x2460,\n    \"onecircleinversesansserif\", 0x278a,\n    \"onedeva\", 0x0967,\n    \"onedotenleader\", 0x2024,\n    \"oneeighth\", 0x215b,\n    \"onefitted\", 0xf6dc,\n    \"onegujarati\", 0x0ae7,\n    \"onegurmukhi\", 0x0a67,\n    \"onehackarabic\", 0x0661,\n    \"onehalf\", 0x00bd,\n    \"onehangzhou\", 0x3021,\n    \"oneideographicparen\", 0x3220,\n    \"oneinferior\", 0x2081,\n    \"onemonospace\", 0xff11,\n    \"onenumeratorbengali\", 0x09f4,\n    \"oneoldstyle\", 0xf731,\n    \"oneparen\", 0x2474,\n    \"oneperiod\", 0x2488,\n    \"onepersian\", 0x06f1,\n    \"onequarter\", 0x00bc,\n    \"oneroman\", 0x2170,\n    \"onesuperior\", 0x00b9,\n    \"onethai\", 0x0e51,\n    \"onethird\", 0x2153,\n    \"oogonek\", 0x01eb,\n    \"oogonekmacron\", 0x01ed,\n    \"oogurmukhi\", 0x0a13,\n    \"oomatragurmukhi\", 0x0a4b,\n    \"oopen\", 0x0254,\n    \"oparen\", 0x24aa,\n    \"openbullet\", 0x25e6,\n    \"option\", 0x2325,\n    \"ordfeminine\", 0x00aa,\n    \"ordmasculine\", 0x00ba,\n    \"orthogonal\", 0x221f,\n    \"oshortdeva\", 0x0912,\n    \"oshortvowelsigndeva\", 0x094a,\n    \"oslash\", 0x00f8,\n    \"oslashacute\", 0x01ff,\n    \"osmallhiragana\", 0x3049,\n    \"osmallkatakana\", 0x30a9,\n    \"osmallkatakanahalfwidth\", 0xff6b,\n    \"ostrokeacute\", 0x01ff,\n    \"osuperior\", 0xf6f0,\n    \"otcyrillic\", 0x047f,\n    \"otilde\", 0x00f5,\n    \"otildeacute\", 0x1e4d,\n    \"otildedieresis\", 0x1e4f,\n    \"oubopomofo\", 0x3121,\n    \"overline\", 0x203e,\n    \"overlinecenterline\", 0xfe4a,\n    \"overlinecmb\", 0x0305,\n    \"overlinedashed\", 0xfe49,\n    \"overlinedblwavy\", 0xfe4c,\n    \"overlinewavy\", 0xfe4b,\n    \"overscore\", 0x00af,\n    \"ovowelsignbengali\", 0x09cb,\n    \"ovowelsigndeva\", 0x094b,\n    \"ovowelsigngujarati\", 0x0acb,\n    \"p\", 0x0070,\n    \"paampssquare\", 0x3380,\n    \"paasentosquare\", 0x332b,\n    \"pabengali\", 0x09aa,\n    \"pacute\", 0x1e55,\n    \"padeva\", 0x092a,\n    \"pagedown\", 0x21df,\n    \"pageup\", 0x21de,\n    \"pagujarati\", 0x0aaa,\n    \"pagurmukhi\", 0x0a2a,\n    \"pahiragana\", 0x3071,\n    \"paiyannoithai\", 0x0e2f,\n    \"pakatakana\", 0x30d1,\n    \"palatalizationcyrilliccmb\", 0x0484,\n    \"palochkacyrillic\", 0x04c0,\n    \"pansioskorean\", 0x317f,\n    \"paragraph\", 0x00b6,\n    \"parallel\", 0x2225,\n    \"parenleft\", 0x0028,\n    \"parenleftaltonearabic\", 0xfd3e,\n    \"parenleftbt\", 0xf8ed,\n    \"parenleftex\", 0xf8ec,\n    \"parenleftinferior\", 0x208d,\n    \"parenleftmonospace\", 0xff08,\n    \"parenleftsmall\", 0xfe59,\n    \"parenleftsuperior\", 0x207d,\n    \"parenlefttp\", 0xf8eb,\n    \"parenleftvertical\", 0xfe35,\n    \"parenright\", 0x0029,\n    \"parenrightaltonearabic\", 0xfd3f,\n    \"parenrightbt\", 0xf8f8,\n    \"parenrightex\", 0xf8f7,\n    \"parenrightinferior\", 0x208e,\n    \"parenrightmonospace\", 0xff09,\n    \"parenrightsmall\", 0xfe5a,\n    \"parenrightsuperior\", 0x207e,\n    \"parenrighttp\", 0xf8f6,\n    \"parenrightvertical\", 0xfe36,\n    \"partialdiff\", 0x2202,\n    \"paseqhebrew\", 0x05c0,\n    \"pashtahebrew\", 0x0599,\n    \"pasquare\", 0x33a9,\n    \"patah\", 0x05b7,\n    \"patah11\", 0x05b7,\n    \"patah1d\", 0x05b7,\n    \"patah2a\", 0x05b7,\n    \"patahhebrew\", 0x05b7,\n    \"patahnarrowhebrew\", 0x05b7,\n    \"patahquarterhebrew\", 0x05b7,\n    \"patahwidehebrew\", 0x05b7,\n    \"pazerhebrew\", 0x05a1,\n    \"pbopomofo\", 0x3106,\n    \"pcircle\", 0x24df,\n    \"pdotaccent\", 0x1e57,\n    \"pe\", 0x05e4,\n    \"pecyrillic\", 0x043f,\n    \"pedagesh\", 0xfb44,\n    \"pedageshhebrew\", 0xfb44,\n    \"peezisquare\", 0x333b,\n    \"pefinaldageshhebrew\", 0xfb43,\n    \"peharabic\", 0x067e,\n    \"peharmenian\", 0x057a,\n    \"pehebrew\", 0x05e4,\n    \"pehfinalarabic\", 0xfb57,\n    \"pehinitialarabic\", 0xfb58,\n    \"pehiragana\", 0x307a,\n    \"pehmedialarabic\", 0xfb59,\n    \"pekatakana\", 0x30da,\n    \"pemiddlehookcyrillic\", 0x04a7,\n    \"perafehebrew\", 0xfb4e,\n    \"percent\", 0x0025,\n    \"percentarabic\", 0x066a,\n    \"percentmonospace\", 0xff05,\n    \"percentsmall\", 0xfe6a,\n    \"period\", 0x002e,\n    \"periodarmenian\", 0x0589,\n    \"periodcentered\", 0x00b7,\n    \"periodhalfwidth\", 0xff61,\n    \"periodinferior\", 0xf6e7,\n    \"periodmonospace\", 0xff0e,\n    \"periodsmall\", 0xfe52,\n    \"periodsuperior\", 0xf6e8,\n    \"perispomenigreekcmb\", 0x0342,\n    \"perpendicular\", 0x22a5,\n    \"perthousand\", 0x2030,\n    \"peseta\", 0x20a7,\n    \"pfsquare\", 0x338a,\n    \"phabengali\", 0x09ab,\n    \"phadeva\", 0x092b,\n    \"phagujarati\", 0x0aab,\n    \"phagurmukhi\", 0x0a2b,\n    \"phi\", 0x03c6,\n    \"phi1\", 0x03d5,\n    \"phieuphacirclekorean\", 0x327a,\n    \"phieuphaparenkorean\", 0x321a,\n    \"phieuphcirclekorean\", 0x326c,\n    \"phieuphkorean\", 0x314d,\n    \"phieuphparenkorean\", 0x320c,\n    \"philatin\", 0x0278,\n    \"phinthuthai\", 0x0e3a,\n    \"phisymbolgreek\", 0x03d5,\n    \"phook\", 0x01a5,\n    \"phophanthai\", 0x0e1e,\n    \"phophungthai\", 0x0e1c,\n    \"phosamphaothai\", 0x0e20,\n    \"pi\", 0x03c0,\n    \"pieupacirclekorean\", 0x3273,\n    \"pieupaparenkorean\", 0x3213,\n    \"pieupcieuckorean\", 0x3176,\n    \"pieupcirclekorean\", 0x3265,\n    \"pieupkiyeokkorean\", 0x3172,\n    \"pieupkorean\", 0x3142,\n    \"pieupparenkorean\", 0x3205,\n    \"pieupsioskiyeokkorean\", 0x3174,\n    \"pieupsioskorean\", 0x3144,\n    \"pieupsiostikeutkorean\", 0x3175,\n    \"pieupthieuthkorean\", 0x3177,\n    \"pieuptikeutkorean\", 0x3173,\n    \"pihiragana\", 0x3074,\n    \"pikatakana\", 0x30d4,\n    \"pisymbolgreek\", 0x03d6,\n    \"piwrarmenian\", 0x0583,\n    \"plus\", 0x002b,\n    \"plusbelowcmb\", 0x031f,\n    \"pluscircle\", 0x2295,\n    \"plusminus\", 0x00b1,\n    \"plusmod\", 0x02d6,\n    \"plusmonospace\", 0xff0b,\n    \"plussmall\", 0xfe62,\n    \"plussuperior\", 0x207a,\n    \"pmonospace\", 0xff50,\n    \"pmsquare\", 0x33d8,\n    \"pohiragana\", 0x307d,\n    \"pointingindexdownwhite\", 0x261f,\n    \"pointingindexleftwhite\", 0x261c,\n    \"pointingindexrightwhite\", 0x261e,\n    \"pointingindexupwhite\", 0x261d,\n    \"pokatakana\", 0x30dd,\n    \"poplathai\", 0x0e1b,\n    \"postalmark\", 0x3012,\n    \"postalmarkface\", 0x3020,\n    \"pparen\", 0x24ab,\n    \"precedes\", 0x227a,\n    \"prescription\", 0x211e,\n    \"primemod\", 0x02b9,\n    \"primereversed\", 0x2035,\n    \"product\", 0x220f,\n    \"projective\", 0x2305,\n    \"prolongedkana\", 0x30fc,\n    \"propellor\", 0x2318,\n    \"propersubset\", 0x2282,\n    \"propersuperset\", 0x2283,\n    \"proportion\", 0x2237,\n    \"proportional\", 0x221d,\n    \"psi\", 0x03c8,\n    \"psicyrillic\", 0x0471,\n    \"psilipneumatacyrilliccmb\", 0x0486,\n    \"pssquare\", 0x33b0,\n    \"puhiragana\", 0x3077,\n    \"pukatakana\", 0x30d7,\n    \"pvsquare\", 0x33b4,\n    \"pwsquare\", 0x33ba,\n    \"q\", 0x0071,\n    \"qadeva\", 0x0958,\n    \"qadmahebrew\", 0x05a8,\n    \"qafarabic\", 0x0642,\n    \"qaffinalarabic\", 0xfed6,\n    \"qafinitialarabic\", 0xfed7,\n    \"qafmedialarabic\", 0xfed8,\n    \"qamats\", 0x05b8,\n    \"qamats10\", 0x05b8,\n    \"qamats1a\", 0x05b8,\n    \"qamats1c\", 0x05b8,\n    \"qamats27\", 0x05b8,\n    \"qamats29\", 0x05b8,\n    \"qamats33\", 0x05b8,\n    \"qamatsde\", 0x05b8,\n    \"qamatshebrew\", 0x05b8,\n    \"qamatsnarrowhebrew\", 0x05b8,\n    \"qamatsqatanhebrew\", 0x05b8,\n    \"qamatsqatannarrowhebrew\", 0x05b8,\n    \"qamatsqatanquarterhebrew\", 0x05b8,\n    \"qamatsqatanwidehebrew\", 0x05b8,\n    \"qamatsquarterhebrew\", 0x05b8,\n    \"qamatswidehebrew\", 0x05b8,\n    \"qarneyparahebrew\", 0x059f,\n    \"qbopomofo\", 0x3111,\n    \"qcircle\", 0x24e0,\n    \"qhook\", 0x02a0,\n    \"qmonospace\", 0xff51,\n    \"qof\", 0x05e7,\n    \"qofdagesh\", 0xfb47,\n    \"qofdageshhebrew\", 0xfb47,\n    \"qofhebrew\", 0x05e7,\n    \"qparen\", 0x24ac,\n    \"quarternote\", 0x2669,\n    \"qubuts\", 0x05bb,\n    \"qubuts18\", 0x05bb,\n    \"qubuts25\", 0x05bb,\n    \"qubuts31\", 0x05bb,\n    \"qubutshebrew\", 0x05bb,\n    \"qubutsnarrowhebrew\", 0x05bb,\n    \"qubutsquarterhebrew\", 0x05bb,\n    \"qubutswidehebrew\", 0x05bb,\n    \"question\", 0x003f,\n    \"questionarabic\", 0x061f,\n    \"questionarmenian\", 0x055e,\n    \"questiondown\", 0x00bf,\n    \"questiondownsmall\", 0xf7bf,\n    \"questiongreek\", 0x037e,\n    \"questionmonospace\", 0xff1f,\n    \"questionsmall\", 0xf73f,\n    \"quotedbl\", 0x0022,\n    \"quotedblbase\", 0x201e,\n    \"quotedblleft\", 0x201c,\n    \"quotedblmonospace\", 0xff02,\n    \"quotedblprime\", 0x301e,\n    \"quotedblprimereversed\", 0x301d,\n    \"quotedblright\", 0x201d,\n    \"quoteleft\", 0x2018,\n    \"quoteleftreversed\", 0x201b,\n    \"quotereversed\", 0x201b,\n    \"quoteright\", 0x2019,\n    \"quoterightn\", 0x0149,\n    \"quotesinglbase\", 0x201a,\n    \"quotesingle\", 0x0027,\n    \"quotesinglemonospace\", 0xff07,\n    \"r\", 0x0072,\n    \"raarmenian\", 0x057c,\n    \"rabengali\", 0x09b0,\n    \"racute\", 0x0155,\n    \"radeva\", 0x0930,\n    \"radical\", 0x221a,\n    \"radicalex\", 0xf8e5,\n    \"radoverssquare\", 0x33ae,\n    \"radoverssquaredsquare\", 0x33af,\n    \"radsquare\", 0x33ad,\n    \"rafe\", 0x05bf,\n    \"rafehebrew\", 0x05bf,\n    \"ragujarati\", 0x0ab0,\n    \"ragurmukhi\", 0x0a30,\n    \"rahiragana\", 0x3089,\n    \"rakatakana\", 0x30e9,\n    \"rakatakanahalfwidth\", 0xff97,\n    \"ralowerdiagonalbengali\", 0x09f1,\n    \"ramiddlediagonalbengali\", 0x09f0,\n    \"ramshorn\", 0x0264,\n    \"ratio\", 0x2236,\n    \"rbopomofo\", 0x3116,\n    \"rcaron\", 0x0159,\n    \"rcedilla\", 0x0157,\n    \"rcircle\", 0x24e1,\n    \"rcommaaccent\", 0x0157,\n    \"rdblgrave\", 0x0211,\n    \"rdotaccent\", 0x1e59,\n    \"rdotbelow\", 0x1e5b,\n    \"rdotbelowmacron\", 0x1e5d,\n    \"referencemark\", 0x203b,\n    \"reflexsubset\", 0x2286,\n    \"reflexsuperset\", 0x2287,\n    \"registered\", 0x00ae,\n    \"registersans\", 0xf8e8,\n    \"registerserif\", 0xf6da,\n    \"reharabic\", 0x0631,\n    \"reharmenian\", 0x0580,\n    \"rehfinalarabic\", 0xfeae,\n    \"rehiragana\", 0x308c,\n    \"rekatakana\", 0x30ec,\n    \"rekatakanahalfwidth\", 0xff9a,\n    \"resh\", 0x05e8,\n    \"reshdageshhebrew\", 0xfb48,\n    \"reshhebrew\", 0x05e8,\n    \"reversedtilde\", 0x223d,\n    \"reviahebrew\", 0x0597,\n    \"reviamugrashhebrew\", 0x0597,\n    \"revlogicalnot\", 0x2310,\n    \"rfishhook\", 0x027e,\n    \"rfishhookreversed\", 0x027f,\n    \"rhabengali\", 0x09dd,\n    \"rhadeva\", 0x095d,\n    \"rho\", 0x03c1,\n    \"rhook\", 0x027d,\n    \"rhookturned\", 0x027b,\n    \"rhookturnedsuperior\", 0x02b5,\n    \"rhosymbolgreek\", 0x03f1,\n    \"rhotichookmod\", 0x02de,\n    \"rieulacirclekorean\", 0x3271,\n    \"rieulaparenkorean\", 0x3211,\n    \"rieulcirclekorean\", 0x3263,\n    \"rieulhieuhkorean\", 0x3140,\n    \"rieulkiyeokkorean\", 0x313a,\n    \"rieulkiyeoksioskorean\", 0x3169,\n    \"rieulkorean\", 0x3139,\n    \"rieulmieumkorean\", 0x313b,\n    \"rieulpansioskorean\", 0x316c,\n    \"rieulparenkorean\", 0x3203,\n    \"rieulphieuphkorean\", 0x313f,\n    \"rieulpieupkorean\", 0x313c,\n    \"rieulpieupsioskorean\", 0x316b,\n    \"rieulsioskorean\", 0x313d,\n    \"rieulthieuthkorean\", 0x313e,\n    \"rieultikeutkorean\", 0x316a,\n    \"rieulyeorinhieuhkorean\", 0x316d,\n    \"rightangle\", 0x221f,\n    \"righttackbelowcmb\", 0x0319,\n    \"righttriangle\", 0x22bf,\n    \"rihiragana\", 0x308a,\n    \"rikatakana\", 0x30ea,\n    \"rikatakanahalfwidth\", 0xff98,\n    \"ring\", 0x02da,\n    \"ringbelowcmb\", 0x0325,\n    \"ringcmb\", 0x030a,\n    \"ringhalfleft\", 0x02bf,\n    \"ringhalfleftarmenian\", 0x0559,\n    \"ringhalfleftbelowcmb\", 0x031c,\n    \"ringhalfleftcentered\", 0x02d3,\n    \"ringhalfright\", 0x02be,\n    \"ringhalfrightbelowcmb\", 0x0339,\n    \"ringhalfrightcentered\", 0x02d2,\n    \"rinvertedbreve\", 0x0213,\n    \"rittorusquare\", 0x3351,\n    \"rlinebelow\", 0x1e5f,\n    \"rlongleg\", 0x027c,\n    \"rlonglegturned\", 0x027a,\n    \"rmonospace\", 0xff52,\n    \"rohiragana\", 0x308d,\n    \"rokatakana\", 0x30ed,\n    \"rokatakanahalfwidth\", 0xff9b,\n    \"roruathai\", 0x0e23,\n    \"rparen\", 0x24ad,\n    \"rrabengali\", 0x09dc,\n    \"rradeva\", 0x0931,\n    \"rragurmukhi\", 0x0a5c,\n    \"rreharabic\", 0x0691,\n    \"rrehfinalarabic\", 0xfb8d,\n    \"rrvocalicbengali\", 0x09e0,\n    \"rrvocalicdeva\", 0x0960,\n    \"rrvocalicgujarati\", 0x0ae0,\n    \"rrvocalicvowelsignbengali\", 0x09c4,\n    \"rrvocalicvowelsigndeva\", 0x0944,\n    \"rrvocalicvowelsigngujarati\", 0x0ac4,\n    \"rsuperior\", 0xf6f1,\n    \"rtblock\", 0x2590,\n    \"rturned\", 0x0279,\n    \"rturnedsuperior\", 0x02b4,\n    \"ruhiragana\", 0x308b,\n    \"rukatakana\", 0x30eb,\n    \"rukatakanahalfwidth\", 0xff99,\n    \"rupeemarkbengali\", 0x09f2,\n    \"rupeesignbengali\", 0x09f3,\n    \"rupiah\", 0xf6dd,\n    \"ruthai\", 0x0e24,\n    \"rvocalicbengali\", 0x098b,\n    \"rvocalicdeva\", 0x090b,\n    \"rvocalicgujarati\", 0x0a8b,\n    \"rvocalicvowelsignbengali\", 0x09c3,\n    \"rvocalicvowelsigndeva\", 0x0943,\n    \"rvocalicvowelsigngujarati\", 0x0ac3,\n    \"s\", 0x0073,\n    \"sabengali\", 0x09b8,\n    \"sacute\", 0x015b,\n    \"sacutedotaccent\", 0x1e65,\n    \"sadarabic\", 0x0635,\n    \"sadeva\", 0x0938,\n    \"sadfinalarabic\", 0xfeba,\n    \"sadinitialarabic\", 0xfebb,\n    \"sadmedialarabic\", 0xfebc,\n    \"sagujarati\", 0x0ab8,\n    \"sagurmukhi\", 0x0a38,\n    \"sahiragana\", 0x3055,\n    \"sakatakana\", 0x30b5,\n    \"sakatakanahalfwidth\", 0xff7b,\n    \"sallallahoualayhewasallamarabic\", 0xfdfa,\n    \"samekh\", 0x05e1,\n    \"samekhdagesh\", 0xfb41,\n    \"samekhdageshhebrew\", 0xfb41,\n    \"samekhhebrew\", 0x05e1,\n    \"saraaathai\", 0x0e32,\n    \"saraaethai\", 0x0e41,\n    \"saraaimaimalaithai\", 0x0e44,\n    \"saraaimaimuanthai\", 0x0e43,\n    \"saraamthai\", 0x0e33,\n    \"saraathai\", 0x0e30,\n    \"saraethai\", 0x0e40,\n    \"saraiileftthai\", 0xf886,\n    \"saraiithai\", 0x0e35,\n    \"saraileftthai\", 0xf885,\n    \"saraithai\", 0x0e34,\n    \"saraothai\", 0x0e42,\n    \"saraueeleftthai\", 0xf888,\n    \"saraueethai\", 0x0e37,\n    \"saraueleftthai\", 0xf887,\n    \"sarauethai\", 0x0e36,\n    \"sarauthai\", 0x0e38,\n    \"sarauuthai\", 0x0e39,\n    \"sbopomofo\", 0x3119,\n    \"scaron\", 0x0161,\n    \"scarondotaccent\", 0x1e67,\n    \"scedilla\", 0x015f,\n    \"schwa\", 0x0259,\n    \"schwacyrillic\", 0x04d9,\n    \"schwadieresiscyrillic\", 0x04db,\n    \"schwahook\", 0x025a,\n    \"scircle\", 0x24e2,\n    \"scircumflex\", 0x015d,\n    \"scommaaccent\", 0x0219,\n    \"sdotaccent\", 0x1e61,\n    \"sdotbelow\", 0x1e63,\n    \"sdotbelowdotaccent\", 0x1e69,\n    \"seagullbelowcmb\", 0x033c,\n    \"second\", 0x2033,\n    \"secondtonechinese\", 0x02ca,\n    \"section\", 0x00a7,\n    \"seenarabic\", 0x0633,\n    \"seenfinalarabic\", 0xfeb2,\n    \"seeninitialarabic\", 0xfeb3,\n    \"seenmedialarabic\", 0xfeb4,\n    \"segol\", 0x05b6,\n    \"segol13\", 0x05b6,\n    \"segol1f\", 0x05b6,\n    \"segol2c\", 0x05b6,\n    \"segolhebrew\", 0x05b6,\n    \"segolnarrowhebrew\", 0x05b6,\n    \"segolquarterhebrew\", 0x05b6,\n    \"segoltahebrew\", 0x0592,\n    \"segolwidehebrew\", 0x05b6,\n    \"seharmenian\", 0x057d,\n    \"sehiragana\", 0x305b,\n    \"sekatakana\", 0x30bb,\n    \"sekatakanahalfwidth\", 0xff7e,\n    \"semicolon\", 0x003b,\n    \"semicolonarabic\", 0x061b,\n    \"semicolonmonospace\", 0xff1b,\n    \"semicolonsmall\", 0xfe54,\n    \"semivoicedmarkkana\", 0x309c,\n    \"semivoicedmarkkanahalfwidth\", 0xff9f,\n    \"sentisquare\", 0x3322,\n    \"sentosquare\", 0x3323,\n    \"seven\", 0x0037,\n    \"sevenarabic\", 0x0667,\n    \"sevenbengali\", 0x09ed,\n    \"sevencircle\", 0x2466,\n    \"sevencircleinversesansserif\", 0x2790,\n    \"sevendeva\", 0x096d,\n    \"seveneighths\", 0x215e,\n    \"sevengujarati\", 0x0aed,\n    \"sevengurmukhi\", 0x0a6d,\n    \"sevenhackarabic\", 0x0667,\n    \"sevenhangzhou\", 0x3027,\n    \"sevenideographicparen\", 0x3226,\n    \"seveninferior\", 0x2087,\n    \"sevenmonospace\", 0xff17,\n    \"sevenoldstyle\", 0xf737,\n    \"sevenparen\", 0x247a,\n    \"sevenperiod\", 0x248e,\n    \"sevenpersian\", 0x06f7,\n    \"sevenroman\", 0x2176,\n    \"sevensuperior\", 0x2077,\n    \"seventeencircle\", 0x2470,\n    \"seventeenparen\", 0x2484,\n    \"seventeenperiod\", 0x2498,\n    \"seventhai\", 0x0e57,\n    \"sfthyphen\", 0x00ad,\n    \"shaarmenian\", 0x0577,\n    \"shabengali\", 0x09b6,\n    \"shacyrillic\", 0x0448,\n    \"shaddaarabic\", 0x0651,\n    \"shaddadammaarabic\", 0xfc61,\n    \"shaddadammatanarabic\", 0xfc5e,\n    \"shaddafathaarabic\", 0xfc60,\n    \"shaddakasraarabic\", 0xfc62,\n    \"shaddakasratanarabic\", 0xfc5f,\n    \"shade\", 0x2592,\n    \"shadedark\", 0x2593,\n    \"shadelight\", 0x2591,\n    \"shademedium\", 0x2592,\n    \"shadeva\", 0x0936,\n    \"shagujarati\", 0x0ab6,\n    \"shagurmukhi\", 0x0a36,\n    \"shalshelethebrew\", 0x0593,\n    \"shbopomofo\", 0x3115,\n    \"shchacyrillic\", 0x0449,\n    \"sheenarabic\", 0x0634,\n    \"sheenfinalarabic\", 0xfeb6,\n    \"sheeninitialarabic\", 0xfeb7,\n    \"sheenmedialarabic\", 0xfeb8,\n    \"sheicoptic\", 0x03e3,\n    \"sheqel\", 0x20aa,\n    \"sheqelhebrew\", 0x20aa,\n    \"sheva\", 0x05b0,\n    \"sheva115\", 0x05b0,\n    \"sheva15\", 0x05b0,\n    \"sheva22\", 0x05b0,\n    \"sheva2e\", 0x05b0,\n    \"shevahebrew\", 0x05b0,\n    \"shevanarrowhebrew\", 0x05b0,\n    \"shevaquarterhebrew\", 0x05b0,\n    \"shevawidehebrew\", 0x05b0,\n    \"shhacyrillic\", 0x04bb,\n    \"shimacoptic\", 0x03ed,\n    \"shin\", 0x05e9,\n    \"shindagesh\", 0xfb49,\n    \"shindageshhebrew\", 0xfb49,\n    \"shindageshshindot\", 0xfb2c,\n    \"shindageshshindothebrew\", 0xfb2c,\n    \"shindageshsindot\", 0xfb2d,\n    \"shindageshsindothebrew\", 0xfb2d,\n    \"shindothebrew\", 0x05c1,\n    \"shinhebrew\", 0x05e9,\n    \"shinshindot\", 0xfb2a,\n    \"shinshindothebrew\", 0xfb2a,\n    \"shinsindot\", 0xfb2b,\n    \"shinsindothebrew\", 0xfb2b,\n    \"shook\", 0x0282,\n    \"sigma\", 0x03c3,\n    \"sigma1\", 0x03c2,\n    \"sigmafinal\", 0x03c2,\n    \"sigmalunatesymbolgreek\", 0x03f2,\n    \"sihiragana\", 0x3057,\n    \"sikatakana\", 0x30b7,\n    \"sikatakanahalfwidth\", 0xff7c,\n    \"siluqhebrew\", 0x05bd,\n    \"siluqlefthebrew\", 0x05bd,\n    \"similar\", 0x223c,\n    \"sindothebrew\", 0x05c2,\n    \"siosacirclekorean\", 0x3274,\n    \"siosaparenkorean\", 0x3214,\n    \"sioscieuckorean\", 0x317e,\n    \"sioscirclekorean\", 0x3266,\n    \"sioskiyeokkorean\", 0x317a,\n    \"sioskorean\", 0x3145,\n    \"siosnieunkorean\", 0x317b,\n    \"siosparenkorean\", 0x3206,\n    \"siospieupkorean\", 0x317d,\n    \"siostikeutkorean\", 0x317c,\n    \"six\", 0x0036,\n    \"sixarabic\", 0x0666,\n    \"sixbengali\", 0x09ec,\n    \"sixcircle\", 0x2465,\n    \"sixcircleinversesansserif\", 0x278f,\n    \"sixdeva\", 0x096c,\n    \"sixgujarati\", 0x0aec,\n    \"sixgurmukhi\", 0x0a6c,\n    \"sixhackarabic\", 0x0666,\n    \"sixhangzhou\", 0x3026,\n    \"sixideographicparen\", 0x3225,\n    \"sixinferior\", 0x2086,\n    \"sixmonospace\", 0xff16,\n    \"sixoldstyle\", 0xf736,\n    \"sixparen\", 0x2479,\n    \"sixperiod\", 0x248d,\n    \"sixpersian\", 0x06f6,\n    \"sixroman\", 0x2175,\n    \"sixsuperior\", 0x2076,\n    \"sixteencircle\", 0x246f,\n    \"sixteencurrencydenominatorbengali\", 0x09f9,\n    \"sixteenparen\", 0x2483,\n    \"sixteenperiod\", 0x2497,\n    \"sixthai\", 0x0e56,\n    \"slash\", 0x002f,\n    \"slashmonospace\", 0xff0f,\n    \"slong\", 0x017f,\n    \"slongdotaccent\", 0x1e9b,\n    \"smileface\", 0x263a,\n    \"smonospace\", 0xff53,\n    \"sofpasuqhebrew\", 0x05c3,\n    \"softhyphen\", 0x00ad,\n    \"softsigncyrillic\", 0x044c,\n    \"sohiragana\", 0x305d,\n    \"sokatakana\", 0x30bd,\n    \"sokatakanahalfwidth\", 0xff7f,\n    \"soliduslongoverlaycmb\", 0x0338,\n    \"solidusshortoverlaycmb\", 0x0337,\n    \"sorusithai\", 0x0e29,\n    \"sosalathai\", 0x0e28,\n    \"sosothai\", 0x0e0b,\n    \"sosuathai\", 0x0e2a,\n    \"space\", 0x0020,\n    \"spacehackarabic\", 0x0020,\n    \"spade\", 0x2660,\n    \"spadesuitblack\", 0x2660,\n    \"spadesuitwhite\", 0x2664,\n    \"sparen\", 0x24ae,\n    \"squarebelowcmb\", 0x033b,\n    \"squarecc\", 0x33c4,\n    \"squarecm\", 0x339d,\n    \"squarediagonalcrosshatchfill\", 0x25a9,\n    \"squarehorizontalfill\", 0x25a4,\n    \"squarekg\", 0x338f,\n    \"squarekm\", 0x339e,\n    \"squarekmcapital\", 0x33ce,\n    \"squareln\", 0x33d1,\n    \"squarelog\", 0x33d2,\n    \"squaremg\", 0x338e,\n    \"squaremil\", 0x33d5,\n    \"squaremm\", 0x339c,\n    \"squaremsquared\", 0x33a1,\n    \"squareorthogonalcrosshatchfill\", 0x25a6,\n    \"squareupperlefttolowerrightfill\", 0x25a7,\n    \"squareupperrighttolowerleftfill\", 0x25a8,\n    \"squareverticalfill\", 0x25a5,\n    \"squarewhitewithsmallblack\", 0x25a3,\n    \"srsquare\", 0x33db,\n    \"ssabengali\", 0x09b7,\n    \"ssadeva\", 0x0937,\n    \"ssagujarati\", 0x0ab7,\n    \"ssangcieuckorean\", 0x3149,\n    \"ssanghieuhkorean\", 0x3185,\n    \"ssangieungkorean\", 0x3180,\n    \"ssangkiyeokkorean\", 0x3132,\n    \"ssangnieunkorean\", 0x3165,\n    \"ssangpieupkorean\", 0x3143,\n    \"ssangsioskorean\", 0x3146,\n    \"ssangtikeutkorean\", 0x3138,\n    \"ssuperior\", 0xf6f2,\n    \"sterling\", 0x00a3,\n    \"sterlingmonospace\", 0xffe1,\n    \"strokelongoverlaycmb\", 0x0336,\n    \"strokeshortoverlaycmb\", 0x0335,\n    \"subset\", 0x2282,\n    \"subsetnotequal\", 0x228a,\n    \"subsetorequal\", 0x2286,\n    \"succeeds\", 0x227b,\n    \"suchthat\", 0x220b,\n    \"suhiragana\", 0x3059,\n    \"sukatakana\", 0x30b9,\n    \"sukatakanahalfwidth\", 0xff7d,\n    \"sukunarabic\", 0x0652,\n    \"summation\", 0x2211,\n    \"sun\", 0x263c,\n    \"superset\", 0x2283,\n    \"supersetnotequal\", 0x228b,\n    \"supersetorequal\", 0x2287,\n    \"svsquare\", 0x33dc,\n    \"syouwaerasquare\", 0x337c,\n    \"t\", 0x0074,\n    \"tabengali\", 0x09a4,\n    \"tackdown\", 0x22a4,\n    \"tackleft\", 0x22a3,\n    \"tadeva\", 0x0924,\n    \"tagujarati\", 0x0aa4,\n    \"tagurmukhi\", 0x0a24,\n    \"taharabic\", 0x0637,\n    \"tahfinalarabic\", 0xfec2,\n    \"tahinitialarabic\", 0xfec3,\n    \"tahiragana\", 0x305f,\n    \"tahmedialarabic\", 0xfec4,\n    \"taisyouerasquare\", 0x337d,\n    \"takatakana\", 0x30bf,\n    \"takatakanahalfwidth\", 0xff80,\n    \"tatweelarabic\", 0x0640,\n    \"tau\", 0x03c4,\n    \"tav\", 0x05ea,\n    \"tavdages\", 0xfb4a,\n    \"tavdagesh\", 0xfb4a,\n    \"tavdageshhebrew\", 0xfb4a,\n    \"tavhebrew\", 0x05ea,\n    \"tbar\", 0x0167,\n    \"tbopomofo\", 0x310a,\n    \"tcaron\", 0x0165,\n    \"tccurl\", 0x02a8,\n    \"tcedilla\", 0x0163,\n    \"tcheharabic\", 0x0686,\n    \"tchehfinalarabic\", 0xfb7b,\n    \"tchehinitialarabic\", 0xfb7c,\n    \"tchehmedialarabic\", 0xfb7d,\n    \"tcircle\", 0x24e3,\n    \"tcircumflexbelow\", 0x1e71,\n    \"tcommaaccent\", 0x0163,\n    \"tdieresis\", 0x1e97,\n    \"tdotaccent\", 0x1e6b,\n    \"tdotbelow\", 0x1e6d,\n    \"tecyrillic\", 0x0442,\n    \"tedescendercyrillic\", 0x04ad,\n    \"teharabic\", 0x062a,\n    \"tehfinalarabic\", 0xfe96,\n    \"tehhahinitialarabic\", 0xfca2,\n    \"tehhahisolatedarabic\", 0xfc0c,\n    \"tehinitialarabic\", 0xfe97,\n    \"tehiragana\", 0x3066,\n    \"tehjeeminitialarabic\", 0xfca1,\n    \"tehjeemisolatedarabic\", 0xfc0b,\n    \"tehmarbutaarabic\", 0x0629,\n    \"tehmarbutafinalarabic\", 0xfe94,\n    \"tehmedialarabic\", 0xfe98,\n    \"tehmeeminitialarabic\", 0xfca4,\n    \"tehmeemisolatedarabic\", 0xfc0e,\n    \"tehnoonfinalarabic\", 0xfc73,\n    \"tekatakana\", 0x30c6,\n    \"tekatakanahalfwidth\", 0xff83,\n    \"telephone\", 0x2121,\n    \"telephoneblack\", 0x260e,\n    \"telishagedolahebrew\", 0x05a0,\n    \"telishaqetanahebrew\", 0x05a9,\n    \"tencircle\", 0x2469,\n    \"tenideographicparen\", 0x3229,\n    \"tenparen\", 0x247d,\n    \"tenperiod\", 0x2491,\n    \"tenroman\", 0x2179,\n    \"tesh\", 0x02a7,\n    \"tet\", 0x05d8,\n    \"tetdagesh\", 0xfb38,\n    \"tetdageshhebrew\", 0xfb38,\n    \"tethebrew\", 0x05d8,\n    \"tetsecyrillic\", 0x04b5,\n    \"tevirhebrew\", 0x059b,\n    \"tevirlefthebrew\", 0x059b,\n    \"thabengali\", 0x09a5,\n    \"thadeva\", 0x0925,\n    \"thagujarati\", 0x0aa5,\n    \"thagurmukhi\", 0x0a25,\n    \"thalarabic\", 0x0630,\n    \"thalfinalarabic\", 0xfeac,\n    \"thanthakhatlowleftthai\", 0xf898,\n    \"thanthakhatlowrightthai\", 0xf897,\n    \"thanthakhatthai\", 0x0e4c,\n    \"thanthakhatupperleftthai\", 0xf896,\n    \"theharabic\", 0x062b,\n    \"thehfinalarabic\", 0xfe9a,\n    \"thehinitialarabic\", 0xfe9b,\n    \"thehmedialarabic\", 0xfe9c,\n    \"thereexists\", 0x2203,\n    \"therefore\", 0x2234,\n    \"theta\", 0x03b8,\n    \"theta1\", 0x03d1,\n    \"thetasymbolgreek\", 0x03d1,\n    \"thieuthacirclekorean\", 0x3279,\n    \"thieuthaparenkorean\", 0x3219,\n    \"thieuthcirclekorean\", 0x326b,\n    \"thieuthkorean\", 0x314c,\n    \"thieuthparenkorean\", 0x320b,\n    \"thirteencircle\", 0x246c,\n    \"thirteenparen\", 0x2480,\n    \"thirteenperiod\", 0x2494,\n    \"thonangmonthothai\", 0x0e11,\n    \"thook\", 0x01ad,\n    \"thophuthaothai\", 0x0e12,\n    \"thorn\", 0x00fe,\n    \"thothahanthai\", 0x0e17,\n    \"thothanthai\", 0x0e10,\n    \"thothongthai\", 0x0e18,\n    \"thothungthai\", 0x0e16,\n    \"thousandcyrillic\", 0x0482,\n    \"thousandsseparatorarabic\", 0x066c,\n    \"thousandsseparatorpersian\", 0x066c,\n    \"three\", 0x0033,\n    \"threearabic\", 0x0663,\n    \"threebengali\", 0x09e9,\n    \"threecircle\", 0x2462,\n    \"threecircleinversesansserif\", 0x278c,\n    \"threedeva\", 0x0969,\n    \"threeeighths\", 0x215c,\n    \"threegujarati\", 0x0ae9,\n    \"threegurmukhi\", 0x0a69,\n    \"threehackarabic\", 0x0663,\n    \"threehangzhou\", 0x3023,\n    \"threeideographicparen\", 0x3222,\n    \"threeinferior\", 0x2083,\n    \"threemonospace\", 0xff13,\n    \"threenumeratorbengali\", 0x09f6,\n    \"threeoldstyle\", 0xf733,\n    \"threeparen\", 0x2476,\n    \"threeperiod\", 0x248a,\n    \"threepersian\", 0x06f3,\n    \"threequarters\", 0x00be,\n    \"threequartersemdash\", 0xf6de,\n    \"threeroman\", 0x2172,\n    \"threesuperior\", 0x00b3,\n    \"threethai\", 0x0e53,\n    \"thzsquare\", 0x3394,\n    \"tihiragana\", 0x3061,\n    \"tikatakana\", 0x30c1,\n    \"tikatakanahalfwidth\", 0xff81,\n    \"tikeutacirclekorean\", 0x3270,\n    \"tikeutaparenkorean\", 0x3210,\n    \"tikeutcirclekorean\", 0x3262,\n    \"tikeutkorean\", 0x3137,\n    \"tikeutparenkorean\", 0x3202,\n    \"tilde\", 0x02dc,\n    \"tildebelowcmb\", 0x0330,\n    \"tildecmb\", 0x0303,\n    \"tildecomb\", 0x0303,\n    \"tildedoublecmb\", 0x0360,\n    \"tildeoperator\", 0x223c,\n    \"tildeoverlaycmb\", 0x0334,\n    \"tildeverticalcmb\", 0x033e,\n    \"timescircle\", 0x2297,\n    \"tipehahebrew\", 0x0596,\n    \"tipehalefthebrew\", 0x0596,\n    \"tippigurmukhi\", 0x0a70,\n    \"titlocyrilliccmb\", 0x0483,\n    \"tiwnarmenian\", 0x057f,\n    \"tlinebelow\", 0x1e6f,\n    \"tmonospace\", 0xff54,\n    \"toarmenian\", 0x0569,\n    \"tohiragana\", 0x3068,\n    \"tokatakana\", 0x30c8,\n    \"tokatakanahalfwidth\", 0xff84,\n    \"tonebarextrahighmod\", 0x02e5,\n    \"tonebarextralowmod\", 0x02e9,\n    \"tonebarhighmod\", 0x02e6,\n    \"tonebarlowmod\", 0x02e8,\n    \"tonebarmidmod\", 0x02e7,\n    \"tonefive\", 0x01bd,\n    \"tonesix\", 0x0185,\n    \"tonetwo\", 0x01a8,\n    \"tonos\", 0x0384,\n    \"tonsquare\", 0x3327,\n    \"topatakthai\", 0x0e0f,\n    \"tortoiseshellbracketleft\", 0x3014,\n    \"tortoiseshellbracketleftsmall\", 0xfe5d,\n    \"tortoiseshellbracketleftvertical\", 0xfe39,\n    \"tortoiseshellbracketright\", 0x3015,\n    \"tortoiseshellbracketrightsmall\", 0xfe5e,\n    \"tortoiseshellbracketrightvertical\", 0xfe3a,\n    \"totaothai\", 0x0e15,\n    \"tpalatalhook\", 0x01ab,\n    \"tparen\", 0x24af,\n    \"trademark\", 0x2122,\n    \"trademarksans\", 0xf8ea,\n    \"trademarkserif\", 0xf6db,\n    \"tretroflexhook\", 0x0288,\n    \"triagdn\", 0x25bc,\n    \"triaglf\", 0x25c4,\n    \"triagrt\", 0x25ba,\n    \"triagup\", 0x25b2,\n    \"ts\", 0x02a6,\n    \"tsadi\", 0x05e6,\n    \"tsadidagesh\", 0xfb46,\n    \"tsadidageshhebrew\", 0xfb46,\n    \"tsadihebrew\", 0x05e6,\n    \"tsecyrillic\", 0x0446,\n    \"tsere\", 0x05b5,\n    \"tsere12\", 0x05b5,\n    \"tsere1e\", 0x05b5,\n    \"tsere2b\", 0x05b5,\n    \"tserehebrew\", 0x05b5,\n    \"tserenarrowhebrew\", 0x05b5,\n    \"tserequarterhebrew\", 0x05b5,\n    \"tserewidehebrew\", 0x05b5,\n    \"tshecyrillic\", 0x045b,\n    \"tsuperior\", 0xf6f3,\n    \"ttabengali\", 0x099f,\n    \"ttadeva\", 0x091f,\n    \"ttagujarati\", 0x0a9f,\n    \"ttagurmukhi\", 0x0a1f,\n    \"tteharabic\", 0x0679,\n    \"ttehfinalarabic\", 0xfb67,\n    \"ttehinitialarabic\", 0xfb68,\n    \"ttehmedialarabic\", 0xfb69,\n    \"tthabengali\", 0x09a0,\n    \"tthadeva\", 0x0920,\n    \"tthagujarati\", 0x0aa0,\n    \"tthagurmukhi\", 0x0a20,\n    \"tturned\", 0x0287,\n    \"tuhiragana\", 0x3064,\n    \"tukatakana\", 0x30c4,\n    \"tukatakanahalfwidth\", 0xff82,\n    \"tusmallhiragana\", 0x3063,\n    \"tusmallkatakana\", 0x30c3,\n    \"tusmallkatakanahalfwidth\", 0xff6f,\n    \"twelvecircle\", 0x246b,\n    \"twelveparen\", 0x247f,\n    \"twelveperiod\", 0x2493,\n    \"twelveroman\", 0x217b,\n    \"twentycircle\", 0x2473,\n    \"twentyhangzhou\", 0x5344,\n    \"twentyparen\", 0x2487,\n    \"twentyperiod\", 0x249b,\n    \"two\", 0x0032,\n    \"twoarabic\", 0x0662,\n    \"twobengali\", 0x09e8,\n    \"twocircle\", 0x2461,\n    \"twocircleinversesansserif\", 0x278b,\n    \"twodeva\", 0x0968,\n    \"twodotenleader\", 0x2025,\n    \"twodotleader\", 0x2025,\n    \"twodotleadervertical\", 0xfe30,\n    \"twogujarati\", 0x0ae8,\n    \"twogurmukhi\", 0x0a68,\n    \"twohackarabic\", 0x0662,\n    \"twohangzhou\", 0x3022,\n    \"twoideographicparen\", 0x3221,\n    \"twoinferior\", 0x2082,\n    \"twomonospace\", 0xff12,\n    \"twonumeratorbengali\", 0x09f5,\n    \"twooldstyle\", 0xf732,\n    \"twoparen\", 0x2475,\n    \"twoperiod\", 0x2489,\n    \"twopersian\", 0x06f2,\n    \"tworoman\", 0x2171,\n    \"twostroke\", 0x01bb,\n    \"twosuperior\", 0x00b2,\n    \"twothai\", 0x0e52,\n    \"twothirds\", 0x2154,\n    \"u\", 0x0075,\n    \"uacute\", 0x00fa,\n    \"ubar\", 0x0289,\n    \"ubengali\", 0x0989,\n    \"ubopomofo\", 0x3128,\n    \"ubreve\", 0x016d,\n    \"ucaron\", 0x01d4,\n    \"ucircle\", 0x24e4,\n    \"ucircumflex\", 0x00fb,\n    \"ucircumflexbelow\", 0x1e77,\n    \"ucyrillic\", 0x0443,\n    \"udattadeva\", 0x0951,\n    \"udblacute\", 0x0171,\n    \"udblgrave\", 0x0215,\n    \"udeva\", 0x0909,\n    \"udieresis\", 0x00fc,\n    \"udieresisacute\", 0x01d8,\n    \"udieresisbelow\", 0x1e73,\n    \"udieresiscaron\", 0x01da,\n    \"udieresiscyrillic\", 0x04f1,\n    \"udieresisgrave\", 0x01dc,\n    \"udieresismacron\", 0x01d6,\n    \"udotbelow\", 0x1ee5,\n    \"ugrave\", 0x00f9,\n    \"ugujarati\", 0x0a89,\n    \"ugurmukhi\", 0x0a09,\n    \"uhiragana\", 0x3046,\n    \"uhookabove\", 0x1ee7,\n    \"uhorn\", 0x01b0,\n    \"uhornacute\", 0x1ee9,\n    \"uhorndotbelow\", 0x1ef1,\n    \"uhorngrave\", 0x1eeb,\n    \"uhornhookabove\", 0x1eed,\n    \"uhorntilde\", 0x1eef,\n    \"uhungarumlaut\", 0x0171,\n    \"uhungarumlautcyrillic\", 0x04f3,\n    \"uinvertedbreve\", 0x0217,\n    \"ukatakana\", 0x30a6,\n    \"ukatakanahalfwidth\", 0xff73,\n    \"ukcyrillic\", 0x0479,\n    \"ukorean\", 0x315c,\n    \"umacron\", 0x016b,\n    \"umacroncyrillic\", 0x04ef,\n    \"umacrondieresis\", 0x1e7b,\n    \"umatragurmukhi\", 0x0a41,\n    \"umonospace\", 0xff55,\n    \"underscore\", 0x005f,\n    \"underscoredbl\", 0x2017,\n    \"underscoremonospace\", 0xff3f,\n    \"underscorevertical\", 0xfe33,\n    \"underscorewavy\", 0xfe4f,\n    \"union\", 0x222a,\n    \"universal\", 0x2200,\n    \"uogonek\", 0x0173,\n    \"uparen\", 0x24b0,\n    \"upblock\", 0x2580,\n    \"upperdothebrew\", 0x05c4,\n    \"upsilon\", 0x03c5,\n    \"upsilondieresis\", 0x03cb,\n    \"upsilondieresistonos\", 0x03b0,\n    \"upsilonlatin\", 0x028a,\n    \"upsilontonos\", 0x03cd,\n    \"uptackbelowcmb\", 0x031d,\n    \"uptackmod\", 0x02d4,\n    \"uragurmukhi\", 0x0a73,\n    \"uring\", 0x016f,\n    \"ushortcyrillic\", 0x045e,\n    \"usmallhiragana\", 0x3045,\n    \"usmallkatakana\", 0x30a5,\n    \"usmallkatakanahalfwidth\", 0xff69,\n    \"ustraightcyrillic\", 0x04af,\n    \"ustraightstrokecyrillic\", 0x04b1,\n    \"utilde\", 0x0169,\n    \"utildeacute\", 0x1e79,\n    \"utildebelow\", 0x1e75,\n    \"uubengali\", 0x098a,\n    \"uudeva\", 0x090a,\n    \"uugujarati\", 0x0a8a,\n    \"uugurmukhi\", 0x0a0a,\n    \"uumatragurmukhi\", 0x0a42,\n    \"uuvowelsignbengali\", 0x09c2,\n    \"uuvowelsigndeva\", 0x0942,\n    \"uuvowelsigngujarati\", 0x0ac2,\n    \"uvowelsignbengali\", 0x09c1,\n    \"uvowelsigndeva\", 0x0941,\n    \"uvowelsigngujarati\", 0x0ac1,\n    \"v\", 0x0076,\n    \"vadeva\", 0x0935,\n    \"vagujarati\", 0x0ab5,\n    \"vagurmukhi\", 0x0a35,\n    \"vakatakana\", 0x30f7,\n    \"vav\", 0x05d5,\n    \"vavdagesh\", 0xfb35,\n    \"vavdagesh65\", 0xfb35,\n    \"vavdageshhebrew\", 0xfb35,\n    \"vavhebrew\", 0x05d5,\n    \"vavholam\", 0xfb4b,\n    \"vavholamhebrew\", 0xfb4b,\n    \"vavvavhebrew\", 0x05f0,\n    \"vavyodhebrew\", 0x05f1,\n    \"vcircle\", 0x24e5,\n    \"vdotbelow\", 0x1e7f,\n    \"vecyrillic\", 0x0432,\n    \"veharabic\", 0x06a4,\n    \"vehfinalarabic\", 0xfb6b,\n    \"vehinitialarabic\", 0xfb6c,\n    \"vehmedialarabic\", 0xfb6d,\n    \"vekatakana\", 0x30f9,\n    \"venus\", 0x2640,\n    \"verticalbar\", 0x007c,\n    \"verticallineabovecmb\", 0x030d,\n    \"verticallinebelowcmb\", 0x0329,\n    \"verticallinelowmod\", 0x02cc,\n    \"verticallinemod\", 0x02c8,\n    \"vewarmenian\", 0x057e,\n    \"vhook\", 0x028b,\n    \"vikatakana\", 0x30f8,\n    \"viramabengali\", 0x09cd,\n    \"viramadeva\", 0x094d,\n    \"viramagujarati\", 0x0acd,\n    \"visargabengali\", 0x0983,\n    \"visargadeva\", 0x0903,\n    \"visargagujarati\", 0x0a83,\n    \"vmonospace\", 0xff56,\n    \"voarmenian\", 0x0578,\n    \"voicediterationhiragana\", 0x309e,\n    \"voicediterationkatakana\", 0x30fe,\n    \"voicedmarkkana\", 0x309b,\n    \"voicedmarkkanahalfwidth\", 0xff9e,\n    \"vokatakana\", 0x30fa,\n    \"vparen\", 0x24b1,\n    \"vtilde\", 0x1e7d,\n    \"vturned\", 0x028c,\n    \"vuhiragana\", 0x3094,\n    \"vukatakana\", 0x30f4,\n    \"w\", 0x0077,\n    \"wacute\", 0x1e83,\n    \"waekorean\", 0x3159,\n    \"wahiragana\", 0x308f,\n    \"wakatakana\", 0x30ef,\n    \"wakatakanahalfwidth\", 0xff9c,\n    \"wakorean\", 0x3158,\n    \"wasmallhiragana\", 0x308e,\n    \"wasmallkatakana\", 0x30ee,\n    \"wattosquare\", 0x3357,\n    \"wavedash\", 0x301c,\n    \"wavyunderscorevertical\", 0xfe34,\n    \"wawarabic\", 0x0648,\n    \"wawfinalarabic\", 0xfeee,\n    \"wawhamzaabovearabic\", 0x0624,\n    \"wawhamzaabovefinalarabic\", 0xfe86,\n    \"wbsquare\", 0x33dd,\n    \"wcircle\", 0x24e6,\n    \"wcircumflex\", 0x0175,\n    \"wdieresis\", 0x1e85,\n    \"wdotaccent\", 0x1e87,\n    \"wdotbelow\", 0x1e89,\n    \"wehiragana\", 0x3091,\n    \"weierstrass\", 0x2118,\n    \"wekatakana\", 0x30f1,\n    \"wekorean\", 0x315e,\n    \"weokorean\", 0x315d,\n    \"wgrave\", 0x1e81,\n    \"whitebullet\", 0x25e6,\n    \"whitecircle\", 0x25cb,\n    \"whitecircleinverse\", 0x25d9,\n    \"whitecornerbracketleft\", 0x300e,\n    \"whitecornerbracketleftvertical\", 0xfe43,\n    \"whitecornerbracketright\", 0x300f,\n    \"whitecornerbracketrightvertical\", 0xfe44,\n    \"whitediamond\", 0x25c7,\n    \"whitediamondcontainingblacksmalldiamond\", 0x25c8,\n    \"whitedownpointingsmalltriangle\", 0x25bf,\n    \"whitedownpointingtriangle\", 0x25bd,\n    \"whiteleftpointingsmalltriangle\", 0x25c3,\n    \"whiteleftpointingtriangle\", 0x25c1,\n    \"whitelenticularbracketleft\", 0x3016,\n    \"whitelenticularbracketright\", 0x3017,\n    \"whiterightpointingsmalltriangle\", 0x25b9,\n    \"whiterightpointingtriangle\", 0x25b7,\n    \"whitesmallsquare\", 0x25ab,\n    \"whitesmilingface\", 0x263a,\n    \"whitesquare\", 0x25a1,\n    \"whitestar\", 0x2606,\n    \"whitetelephone\", 0x260f,\n    \"whitetortoiseshellbracketleft\", 0x3018,\n    \"whitetortoiseshellbracketright\", 0x3019,\n    \"whiteuppointingsmalltriangle\", 0x25b5,\n    \"whiteuppointingtriangle\", 0x25b3,\n    \"wihiragana\", 0x3090,\n    \"wikatakana\", 0x30f0,\n    \"wikorean\", 0x315f,\n    \"wmonospace\", 0xff57,\n    \"wohiragana\", 0x3092,\n    \"wokatakana\", 0x30f2,\n    \"wokatakanahalfwidth\", 0xff66,\n    \"won\", 0x20a9,\n    \"wonmonospace\", 0xffe6,\n    \"wowaenthai\", 0x0e27,\n    \"wparen\", 0x24b2,\n    \"wring\", 0x1e98,\n    \"wsuperior\", 0x02b7,\n    \"wturned\", 0x028d,\n    \"wynn\", 0x01bf,\n    \"x\", 0x0078,\n    \"xabovecmb\", 0x033d,\n    \"xbopomofo\", 0x3112,\n    \"xcircle\", 0x24e7,\n    \"xdieresis\", 0x1e8d,\n    \"xdotaccent\", 0x1e8b,\n    \"xeharmenian\", 0x056d,\n    \"xi\", 0x03be,\n    \"xmonospace\", 0xff58,\n    \"xparen\", 0x24b3,\n    \"xsuperior\", 0x02e3,\n    \"y\", 0x0079,\n    \"yaadosquare\", 0x334e,\n    \"yabengali\", 0x09af,\n    \"yacute\", 0x00fd,\n    \"yadeva\", 0x092f,\n    \"yaekorean\", 0x3152,\n    \"yagujarati\", 0x0aaf,\n    \"yagurmukhi\", 0x0a2f,\n    \"yahiragana\", 0x3084,\n    \"yakatakana\", 0x30e4,\n    \"yakatakanahalfwidth\", 0xff94,\n    \"yakorean\", 0x3151,\n    \"yamakkanthai\", 0x0e4e,\n    \"yasmallhiragana\", 0x3083,\n    \"yasmallkatakana\", 0x30e3,\n    \"yasmallkatakanahalfwidth\", 0xff6c,\n    \"yatcyrillic\", 0x0463,\n    \"ycircle\", 0x24e8,\n    \"ycircumflex\", 0x0177,\n    \"ydieresis\", 0x00ff,\n    \"ydotaccent\", 0x1e8f,\n    \"ydotbelow\", 0x1ef5,\n    \"yeharabic\", 0x064a,\n    \"yehbarreearabic\", 0x06d2,\n    \"yehbarreefinalarabic\", 0xfbaf,\n    \"yehfinalarabic\", 0xfef2,\n    \"yehhamzaabovearabic\", 0x0626,\n    \"yehhamzaabovefinalarabic\", 0xfe8a,\n    \"yehhamzaaboveinitialarabic\", 0xfe8b,\n    \"yehhamzaabovemedialarabic\", 0xfe8c,\n    \"yehinitialarabic\", 0xfef3,\n    \"yehmedialarabic\", 0xfef4,\n    \"yehmeeminitialarabic\", 0xfcdd,\n    \"yehmeemisolatedarabic\", 0xfc58,\n    \"yehnoonfinalarabic\", 0xfc94,\n    \"yehthreedotsbelowarabic\", 0x06d1,\n    \"yekorean\", 0x3156,\n    \"yen\", 0x00a5,\n    \"yenmonospace\", 0xffe5,\n    \"yeokorean\", 0x3155,\n    \"yeorinhieuhkorean\", 0x3186,\n    \"yerahbenyomohebrew\", 0x05aa,\n    \"yerahbenyomolefthebrew\", 0x05aa,\n    \"yericyrillic\", 0x044b,\n    \"yerudieresiscyrillic\", 0x04f9,\n    \"yesieungkorean\", 0x3181,\n    \"yesieungpansioskorean\", 0x3183,\n    \"yesieungsioskorean\", 0x3182,\n    \"yetivhebrew\", 0x059a,\n    \"ygrave\", 0x1ef3,\n    \"yhook\", 0x01b4,\n    \"yhookabove\", 0x1ef7,\n    \"yiarmenian\", 0x0575,\n    \"yicyrillic\", 0x0457,\n    \"yikorean\", 0x3162,\n    \"yinyang\", 0x262f,\n    \"yiwnarmenian\", 0x0582,\n    \"ymonospace\", 0xff59,\n    \"yod\", 0x05d9,\n    \"yoddagesh\", 0xfb39,\n    \"yoddageshhebrew\", 0xfb39,\n    \"yodhebrew\", 0x05d9,\n    \"yodyodhebrew\", 0x05f2,\n    \"yodyodpatahhebrew\", 0xfb1f,\n    \"yohiragana\", 0x3088,\n    \"yoikorean\", 0x3189,\n    \"yokatakana\", 0x30e8,\n    \"yokatakanahalfwidth\", 0xff96,\n    \"yokorean\", 0x315b,\n    \"yosmallhiragana\", 0x3087,\n    \"yosmallkatakana\", 0x30e7,\n    \"yosmallkatakanahalfwidth\", 0xff6e,\n    \"yotgreek\", 0x03f3,\n    \"yoyaekorean\", 0x3188,\n    \"yoyakorean\", 0x3187,\n    \"yoyakthai\", 0x0e22,\n    \"yoyingthai\", 0x0e0d,\n    \"yparen\", 0x24b4,\n    \"ypogegrammeni\", 0x037a,\n    \"ypogegrammenigreekcmb\", 0x0345,\n    \"yr\", 0x01a6,\n    \"yring\", 0x1e99,\n    \"ysuperior\", 0x02b8,\n    \"ytilde\", 0x1ef9,\n    \"yturned\", 0x028e,\n    \"yuhiragana\", 0x3086,\n    \"yuikorean\", 0x318c,\n    \"yukatakana\", 0x30e6,\n    \"yukatakanahalfwidth\", 0xff95,\n    \"yukorean\", 0x3160,\n    \"yusbigcyrillic\", 0x046b,\n    \"yusbigiotifiedcyrillic\", 0x046d,\n    \"yuslittlecyrillic\", 0x0467,\n    \"yuslittleiotifiedcyrillic\", 0x0469,\n    \"yusmallhiragana\", 0x3085,\n    \"yusmallkatakana\", 0x30e5,\n    \"yusmallkatakanahalfwidth\", 0xff6d,\n    \"yuyekorean\", 0x318b,\n    \"yuyeokorean\", 0x318a,\n    \"yyabengali\", 0x09df,\n    \"yyadeva\", 0x095f,\n    \"z\", 0x007a,\n    \"zaarmenian\", 0x0566,\n    \"zacute\", 0x017a,\n    \"zadeva\", 0x095b,\n    \"zagurmukhi\", 0x0a5b,\n    \"zaharabic\", 0x0638,\n    \"zahfinalarabic\", 0xfec6,\n    \"zahinitialarabic\", 0xfec7,\n    \"zahiragana\", 0x3056,\n    \"zahmedialarabic\", 0xfec8,\n    \"zainarabic\", 0x0632,\n    \"zainfinalarabic\", 0xfeb0,\n    \"zakatakana\", 0x30b6,\n    \"zaqefgadolhebrew\", 0x0595,\n    \"zaqefqatanhebrew\", 0x0594,\n    \"zarqahebrew\", 0x0598,\n    \"zayin\", 0x05d6,\n    \"zayindagesh\", 0xfb36,\n    \"zayindageshhebrew\", 0xfb36,\n    \"zayinhebrew\", 0x05d6,\n    \"zbopomofo\", 0x3117,\n    \"zcaron\", 0x017e,\n    \"zcircle\", 0x24e9,\n    \"zcircumflex\", 0x1e91,\n    \"zcurl\", 0x0291,\n    \"zdot\", 0x017c,\n    \"zdotaccent\", 0x017c,\n    \"zdotbelow\", 0x1e93,\n    \"zecyrillic\", 0x0437,\n    \"zedescendercyrillic\", 0x0499,\n    \"zedieresiscyrillic\", 0x04df,\n    \"zehiragana\", 0x305c,\n    \"zekatakana\", 0x30bc,\n    \"zero\", 0x0030,\n    \"zeroarabic\", 0x0660,\n    \"zerobengali\", 0x09e6,\n    \"zerodeva\", 0x0966,\n    \"zerogujarati\", 0x0ae6,\n    \"zerogurmukhi\", 0x0a66,\n    \"zerohackarabic\", 0x0660,\n    \"zeroinferior\", 0x2080,\n    \"zeromonospace\", 0xff10,\n    \"zerooldstyle\", 0xf730,\n    \"zeropersian\", 0x06f0,\n    \"zerosuperior\", 0x2070,\n    \"zerothai\", 0x0e50,\n    \"zerowidthjoiner\", 0xfeff,\n    \"zerowidthnonjoiner\", 0x200c,\n    \"zerowidthspace\", 0x200b,\n    \"zeta\", 0x03b6,\n    \"zhbopomofo\", 0x3113,\n    \"zhearmenian\", 0x056a,\n    \"zhebrevecyrillic\", 0x04c2,\n    \"zhecyrillic\", 0x0436,\n    \"zhedescendercyrillic\", 0x0497,\n    \"zhedieresiscyrillic\", 0x04dd,\n    \"zihiragana\", 0x3058,\n    \"zikatakana\", 0x30b8,\n    \"zinorhebrew\", 0x05ae,\n    \"zlinebelow\", 0x1e95,\n    \"zmonospace\", 0xff5a,\n    \"zohiragana\", 0x305e,\n    \"zokatakana\", 0x30be,\n    \"zparen\", 0x24b5,\n    \"zretroflexhook\", 0x0290,\n    \"zstroke\", 0x01b6,\n    \"zuhiragana\", 0x305a,\n    \"zukatakana\", 0x30ba,\n    \".notdef\", 0x0000,\n\n    // TeX-specific glyph names.\n    \"angbracketleftbig\", 0x2329,\n    \"angbracketleftBig\", 0x2329,\n    \"angbracketleftbigg\", 0x2329,\n    \"angbracketleftBigg\", 0x2329,\n    \"angbracketrightBig\", 0x232a,\n    \"angbracketrightbig\", 0x232a,\n    \"angbracketrightBigg\", 0x232a,\n    \"angbracketrightbigg\", 0x232a,\n    \"arrowhookleft\", 0x21aa,\n    \"arrowhookright\", 0x21a9,\n    \"arrowlefttophalf\", 0x21bc,\n    \"arrowleftbothalf\", 0x21bd,\n    \"arrownortheast\", 0x2197,\n    \"arrownorthwest\", 0x2196,\n    \"arrowrighttophalf\", 0x21c0,\n    \"arrowrightbothalf\", 0x21c1,\n    \"arrowsoutheast\", 0x2198,\n    \"arrowsouthwest\", 0x2199,\n    \"backslashbig\", 0x2216,\n    \"backslashBig\", 0x2216,\n    \"backslashBigg\", 0x2216,\n    \"backslashbigg\", 0x2216,\n    \"bardbl\", 0x2016,\n    \"bracehtipdownleft\", 0xfe37,\n    \"bracehtipdownright\", 0xfe37,\n    \"bracehtipupleft\", 0xfe38,\n    \"bracehtipupright\", 0xfe38,\n    \"braceleftBig\", 0x007b,\n    \"braceleftbig\", 0x007b,\n    \"braceleftbigg\", 0x007b,\n    \"braceleftBigg\", 0x007b,\n    \"bracerightBig\", 0x007d,\n    \"bracerightbig\", 0x007d,\n    \"bracerightbigg\", 0x007d,\n    \"bracerightBigg\", 0x007d,\n    \"bracketleftbig\", 0x005b,\n    \"bracketleftBig\", 0x005b,\n    \"bracketleftbigg\", 0x005b,\n    \"bracketleftBigg\", 0x005b,\n    \"bracketrightBig\", 0x005d,\n    \"bracketrightbig\", 0x005d,\n    \"bracketrightbigg\", 0x005d,\n    \"bracketrightBigg\", 0x005d,\n    \"ceilingleftbig\", 0x2308,\n    \"ceilingleftBig\", 0x2308,\n    \"ceilingleftBigg\", 0x2308,\n    \"ceilingleftbigg\", 0x2308,\n    \"ceilingrightbig\", 0x2309,\n    \"ceilingrightBig\", 0x2309,\n    \"ceilingrightbigg\", 0x2309,\n    \"ceilingrightBigg\", 0x2309,\n    \"circledotdisplay\", 0x2299,\n    \"circledottext\", 0x2299,\n    \"circlemultiplydisplay\", 0x2297,\n    \"circlemultiplytext\", 0x2297,\n    \"circleplusdisplay\", 0x2295,\n    \"circleplustext\", 0x2295,\n    \"contintegraldisplay\", 0x222e,\n    \"contintegraltext\", 0x222e,\n    \"coproductdisplay\", 0x2210,\n    \"coproducttext\", 0x2210,\n    \"floorleftBig\", 0x230a,\n    \"floorleftbig\", 0x230a,\n    \"floorleftbigg\", 0x230a,\n    \"floorleftBigg\", 0x230a,\n    \"floorrightbig\", 0x230b,\n    \"floorrightBig\", 0x230b,\n    \"floorrightBigg\", 0x230b,\n    \"floorrightbigg\", 0x230b,\n    \"hatwide\", 0x0302,\n    \"hatwider\", 0x0302,\n    \"hatwidest\", 0x0302,\n    \"intercal\", 0x1d40,\n    \"integraldisplay\", 0x222b,\n    \"integraltext\", 0x222b,\n    \"intersectiondisplay\", 0x22c2,\n    \"intersectiontext\", 0x22c2,\n    \"logicalanddisplay\", 0x2227,\n    \"logicalandtext\", 0x2227,\n    \"logicalordisplay\", 0x2228,\n    \"logicalortext\", 0x2228,\n    \"parenleftBig\", 0x0028,\n    \"parenleftbig\", 0x0028,\n    \"parenleftBigg\", 0x0028,\n    \"parenleftbigg\", 0x0028,\n    \"parenrightBig\", 0x0029,\n    \"parenrightbig\", 0x0029,\n    \"parenrightBigg\", 0x0029,\n    \"parenrightbigg\", 0x0029,\n    \"prime\", 0x2032,\n    \"productdisplay\", 0x220f,\n    \"producttext\", 0x220f,\n    \"radicalbig\", 0x221a,\n    \"radicalBig\", 0x221a,\n    \"radicalBigg\", 0x221a,\n    \"radicalbigg\", 0x221a,\n    \"radicalbt\", 0x221a,\n    \"radicaltp\", 0x221a,\n    \"radicalvertex\", 0x221a,\n    \"slashbig\", 0x002f,\n    \"slashBig\", 0x002f,\n    \"slashBigg\", 0x002f,\n    \"slashbigg\", 0x002f,\n    \"summationdisplay\", 0x2211,\n    \"summationtext\", 0x2211,\n    \"tildewide\", 0x02dc,\n    \"tildewider\", 0x02dc,\n    \"tildewidest\", 0x02dc,\n    \"uniondisplay\", 0x22c3,\n    \"unionmultidisplay\", 0x228e,\n    \"unionmultitext\", 0x228e,\n    \"unionsqdisplay\", 0x2294,\n    \"unionsqtext\", 0x2294,\n    \"uniontext\", 0x22c3,\n    \"vextenddouble\", 0x2225,\n    \"vextendsingle\", 0x2223,\n  ];\n});\n\nconst getDingbatsGlyphsUnicode = getArrayLookupTableFactory(function () {\n  // prettier-ignore\n  return [\n    \"space\", 0x0020,\n    \"a1\", 0x2701,\n    \"a2\", 0x2702,\n    \"a202\", 0x2703,\n    \"a3\", 0x2704,\n    \"a4\", 0x260e,\n    \"a5\", 0x2706,\n    \"a119\", 0x2707,\n    \"a118\", 0x2708,\n    \"a117\", 0x2709,\n    \"a11\", 0x261b,\n    \"a12\", 0x261e,\n    \"a13\", 0x270c,\n    \"a14\", 0x270d,\n    \"a15\", 0x270e,\n    \"a16\", 0x270f,\n    \"a105\", 0x2710,\n    \"a17\", 0x2711,\n    \"a18\", 0x2712,\n    \"a19\", 0x2713,\n    \"a20\", 0x2714,\n    \"a21\", 0x2715,\n    \"a22\", 0x2716,\n    \"a23\", 0x2717,\n    \"a24\", 0x2718,\n    \"a25\", 0x2719,\n    \"a26\", 0x271a,\n    \"a27\", 0x271b,\n    \"a28\", 0x271c,\n    \"a6\", 0x271d,\n    \"a7\", 0x271e,\n    \"a8\", 0x271f,\n    \"a9\", 0x2720,\n    \"a10\", 0x2721,\n    \"a29\", 0x2722,\n    \"a30\", 0x2723,\n    \"a31\", 0x2724,\n    \"a32\", 0x2725,\n    \"a33\", 0x2726,\n    \"a34\", 0x2727,\n    \"a35\", 0x2605,\n    \"a36\", 0x2729,\n    \"a37\", 0x272a,\n    \"a38\", 0x272b,\n    \"a39\", 0x272c,\n    \"a40\", 0x272d,\n    \"a41\", 0x272e,\n    \"a42\", 0x272f,\n    \"a43\", 0x2730,\n    \"a44\", 0x2731,\n    \"a45\", 0x2732,\n    \"a46\", 0x2733,\n    \"a47\", 0x2734,\n    \"a48\", 0x2735,\n    \"a49\", 0x2736,\n    \"a50\", 0x2737,\n    \"a51\", 0x2738,\n    \"a52\", 0x2739,\n    \"a53\", 0x273a,\n    \"a54\", 0x273b,\n    \"a55\", 0x273c,\n    \"a56\", 0x273d,\n    \"a57\", 0x273e,\n    \"a58\", 0x273f,\n    \"a59\", 0x2740,\n    \"a60\", 0x2741,\n    \"a61\", 0x2742,\n    \"a62\", 0x2743,\n    \"a63\", 0x2744,\n    \"a64\", 0x2745,\n    \"a65\", 0x2746,\n    \"a66\", 0x2747,\n    \"a67\", 0x2748,\n    \"a68\", 0x2749,\n    \"a69\", 0x274a,\n    \"a70\", 0x274b,\n    \"a71\", 0x25cf,\n    \"a72\", 0x274d,\n    \"a73\", 0x25a0,\n    \"a74\", 0x274f,\n    \"a203\", 0x2750,\n    \"a75\", 0x2751,\n    \"a204\", 0x2752,\n    \"a76\", 0x25b2,\n    \"a77\", 0x25bc,\n    \"a78\", 0x25c6,\n    \"a79\", 0x2756,\n    \"a81\", 0x25d7,\n    \"a82\", 0x2758,\n    \"a83\", 0x2759,\n    \"a84\", 0x275a,\n    \"a97\", 0x275b,\n    \"a98\", 0x275c,\n    \"a99\", 0x275d,\n    \"a100\", 0x275e,\n    \"a101\", 0x2761,\n    \"a102\", 0x2762,\n    \"a103\", 0x2763,\n    \"a104\", 0x2764,\n    \"a106\", 0x2765,\n    \"a107\", 0x2766,\n    \"a108\", 0x2767,\n    \"a112\", 0x2663,\n    \"a111\", 0x2666,\n    \"a110\", 0x2665,\n    \"a109\", 0x2660,\n    \"a120\", 0x2460,\n    \"a121\", 0x2461,\n    \"a122\", 0x2462,\n    \"a123\", 0x2463,\n    \"a124\", 0x2464,\n    \"a125\", 0x2465,\n    \"a126\", 0x2466,\n    \"a127\", 0x2467,\n    \"a128\", 0x2468,\n    \"a129\", 0x2469,\n    \"a130\", 0x2776,\n    \"a131\", 0x2777,\n    \"a132\", 0x2778,\n    \"a133\", 0x2779,\n    \"a134\", 0x277a,\n    \"a135\", 0x277b,\n    \"a136\", 0x277c,\n    \"a137\", 0x277d,\n    \"a138\", 0x277e,\n    \"a139\", 0x277f,\n    \"a140\", 0x2780,\n    \"a141\", 0x2781,\n    \"a142\", 0x2782,\n    \"a143\", 0x2783,\n    \"a144\", 0x2784,\n    \"a145\", 0x2785,\n    \"a146\", 0x2786,\n    \"a147\", 0x2787,\n    \"a148\", 0x2788,\n    \"a149\", 0x2789,\n    \"a150\", 0x278a,\n    \"a151\", 0x278b,\n    \"a152\", 0x278c,\n    \"a153\", 0x278d,\n    \"a154\", 0x278e,\n    \"a155\", 0x278f,\n    \"a156\", 0x2790,\n    \"a157\", 0x2791,\n    \"a158\", 0x2792,\n    \"a159\", 0x2793,\n    \"a160\", 0x2794,\n    \"a161\", 0x2192,\n    \"a163\", 0x2194,\n    \"a164\", 0x2195,\n    \"a196\", 0x2798,\n    \"a165\", 0x2799,\n    \"a192\", 0x279a,\n    \"a166\", 0x279b,\n    \"a167\", 0x279c,\n    \"a168\", 0x279d,\n    \"a169\", 0x279e,\n    \"a170\", 0x279f,\n    \"a171\", 0x27a0,\n    \"a172\", 0x27a1,\n    \"a173\", 0x27a2,\n    \"a162\", 0x27a3,\n    \"a174\", 0x27a4,\n    \"a175\", 0x27a5,\n    \"a176\", 0x27a6,\n    \"a177\", 0x27a7,\n    \"a178\", 0x27a8,\n    \"a179\", 0x27a9,\n    \"a193\", 0x27aa,\n    \"a180\", 0x27ab,\n    \"a199\", 0x27ac,\n    \"a181\", 0x27ad,\n    \"a200\", 0x27ae,\n    \"a182\", 0x27af,\n    \"a201\", 0x27b1,\n    \"a183\", 0x27b2,\n    \"a184\", 0x27b3,\n    \"a197\", 0x27b4,\n    \"a185\", 0x27b5,\n    \"a194\", 0x27b6,\n    \"a198\", 0x27b7,\n    \"a186\", 0x27b8,\n    \"a195\", 0x27b9,\n    \"a187\", 0x27ba,\n    \"a188\", 0x27bb,\n    \"a189\", 0x27bc,\n    \"a190\", 0x27bd,\n    \"a191\", 0x27be,\n    \"a89\", 0x2768, // 0xF8D7\n    \"a90\", 0x2769, // 0xF8D8\n    \"a93\", 0x276a, // 0xF8D9\n    \"a94\", 0x276b, // 0xF8DA\n    \"a91\", 0x276c, // 0xF8DB\n    \"a92\", 0x276d, // 0xF8DC\n    \"a205\", 0x276e, // 0xF8DD\n    \"a85\", 0x276f, // 0xF8DE\n    \"a206\", 0x2770, // 0xF8DF\n    \"a86\", 0x2771, // 0xF8E0\n    \"a87\", 0x2772, // 0xF8E1\n    \"a88\", 0x2773, // 0xF8E2\n    \"a95\", 0x2774, // 0xF8E3\n    \"a96\", 0x2775, // 0xF8E4\n    \".notdef\", 0x0000,\n  ];\n});\n\nexport { getDingbatsGlyphsUnicode, getGlyphsUnicode };\n","/* Copyright 2016 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* no-babel-preset */\n\nimport {\n  getArrayLookupTableFactory,\n  getLookupTableFactory,\n} from \"./core_utils.js\";\n\n// Some characters, e.g. copyrightserif, are mapped to the private use area\n// and might not be displayed using standard fonts. Mapping/hacking well-known\n// chars to the similar equivalents in the normal characters range.\nconst getSpecialPUASymbols = getLookupTableFactory(function (t) {\n  t[63721] = 0x00a9; // copyrightsans (0xF8E9) => copyright\n  t[63193] = 0x00a9; // copyrightserif (0xF6D9) => copyright\n  t[63720] = 0x00ae; // registersans (0xF8E8) => registered\n  t[63194] = 0x00ae; // registerserif (0xF6DA) => registered\n  t[63722] = 0x2122; // trademarksans (0xF8EA) => trademark\n  t[63195] = 0x2122; // trademarkserif (0xF6DB) => trademark\n  t[63729] = 0x23a7; // bracelefttp (0xF8F1)\n  t[63730] = 0x23a8; // braceleftmid (0xF8F2)\n  t[63731] = 0x23a9; // braceleftbt (0xF8F3)\n  t[63740] = 0x23ab; // bracerighttp (0xF8FC)\n  t[63741] = 0x23ac; // bracerightmid (0xF8FD)\n  t[63742] = 0x23ad; // bracerightbt (0xF8FE)\n  t[63726] = 0x23a1; // bracketlefttp (0xF8EE)\n  t[63727] = 0x23a2; // bracketleftex (0xF8EF)\n  t[63728] = 0x23a3; // bracketleftbt (0xF8F0)\n  t[63737] = 0x23a4; // bracketrighttp (0xF8F9)\n  t[63738] = 0x23a5; // bracketrightex (0xF8FA)\n  t[63739] = 0x23a6; // bracketrightbt (0xF8FB)\n  t[63723] = 0x239b; // parenlefttp (0xF8EB)\n  t[63724] = 0x239c; // parenleftex (0xF8EC)\n  t[63725] = 0x239d; // parenleftbt (0xF8ED)\n  t[63734] = 0x239e; // parenrighttp (0xF8F6)\n  t[63735] = 0x239f; // parenrightex (0xF8F7)\n  t[63736] = 0x23a0; // parenrightbt (0xF8F8)\n});\n\nfunction mapSpecialUnicodeValues(code) {\n  if (code >= 0xfff0 && code <= 0xffff) {\n    // Specials unicode block.\n    return 0;\n  } else if (code >= 0xf600 && code <= 0xf8ff) {\n    return getSpecialPUASymbols()[code] || code;\n  } else if (code === /* softhyphen = */ 0x00ad) {\n    return 0x002d; // hyphen\n  }\n  return code;\n}\n\nfunction getUnicodeForGlyph(name, glyphsUnicodeMap) {\n  let unicode = glyphsUnicodeMap[name];\n  if (unicode !== undefined) {\n    return unicode;\n  }\n  if (!name) {\n    return -1;\n  }\n  // Try to recover valid Unicode values from 'uniXXXX'/'uXXXX{XX}' glyphs.\n  if (name[0] === \"u\") {\n    const nameLen = name.length;\n    let hexStr;\n\n    if (nameLen === 7 && name[1] === \"n\" && name[2] === \"i\") {\n      // 'uniXXXX'\n      hexStr = name.substring(3);\n    } else if (nameLen >= 5 && nameLen <= 7) {\n      // 'uXXXX{XX}'\n      hexStr = name.substring(1);\n    } else {\n      return -1;\n    }\n    // Check for upper-case hexadecimal characters, to avoid false positives.\n    if (hexStr === hexStr.toUpperCase()) {\n      unicode = parseInt(hexStr, 16);\n      if (unicode >= 0) {\n        return unicode;\n      }\n    }\n  }\n  return -1;\n}\n\nconst UnicodeRanges = [\n  { begin: 0x0000, end: 0x007f }, // Basic Latin\n  { begin: 0x0080, end: 0x00ff }, // Latin-1 Supplement\n  { begin: 0x0100, end: 0x017f }, // Latin Extended-A\n  { begin: 0x0180, end: 0x024f }, // Latin Extended-B\n  { begin: 0x0250, end: 0x02af }, // IPA Extensions\n  { begin: 0x02b0, end: 0x02ff }, // Spacing Modifier Letters\n  { begin: 0x0300, end: 0x036f }, // Combining Diacritical Marks\n  { begin: 0x0370, end: 0x03ff }, // Greek and Coptic\n  { begin: 0x2c80, end: 0x2cff }, // Coptic\n  { begin: 0x0400, end: 0x04ff }, // Cyrillic\n  { begin: 0x0530, end: 0x058f }, // Armenian\n  { begin: 0x0590, end: 0x05ff }, // Hebrew\n  { begin: 0xa500, end: 0xa63f }, // Vai\n  { begin: 0x0600, end: 0x06ff }, // Arabic\n  { begin: 0x07c0, end: 0x07ff }, // NKo\n  { begin: 0x0900, end: 0x097f }, // Devanagari\n  { begin: 0x0980, end: 0x09ff }, // Bengali\n  { begin: 0x0a00, end: 0x0a7f }, // Gurmukhi\n  { begin: 0x0a80, end: 0x0aff }, // Gujarati\n  { begin: 0x0b00, end: 0x0b7f }, // Oriya\n  { begin: 0x0b80, end: 0x0bff }, // Tamil\n  { begin: 0x0c00, end: 0x0c7f }, // Telugu\n  { begin: 0x0c80, end: 0x0cff }, // Kannada\n  { begin: 0x0d00, end: 0x0d7f }, // Malayalam\n  { begin: 0x0e00, end: 0x0e7f }, // Thai\n  { begin: 0x0e80, end: 0x0eff }, // Lao\n  { begin: 0x10a0, end: 0x10ff }, // Georgian\n  { begin: 0x1b00, end: 0x1b7f }, // Balinese\n  { begin: 0x1100, end: 0x11ff }, // Hangul Jamo\n  { begin: 0x1e00, end: 0x1eff }, // Latin Extended Additional\n  { begin: 0x1f00, end: 0x1fff }, // Greek Extended\n  { begin: 0x2000, end: 0x206f }, // General Punctuation\n  { begin: 0x2070, end: 0x209f }, // Superscripts And Subscripts\n  { begin: 0x20a0, end: 0x20cf }, // Currency Symbol\n  { begin: 0x20d0, end: 0x20ff }, // Combining Diacritical Marks\n  { begin: 0x2100, end: 0x214f }, // Letterlike Symbols\n  { begin: 0x2150, end: 0x218f }, // Number Forms\n  { begin: 0x2190, end: 0x21ff }, // Arrows\n  { begin: 0x2200, end: 0x22ff }, // Mathematical Operators\n  { begin: 0x2300, end: 0x23ff }, // Miscellaneous Technical\n  { begin: 0x2400, end: 0x243f }, // Control Pictures\n  { begin: 0x2440, end: 0x245f }, // Optical Character Recognition\n  { begin: 0x2460, end: 0x24ff }, // Enclosed Alphanumerics\n  { begin: 0x2500, end: 0x257f }, // Box Drawing\n  { begin: 0x2580, end: 0x259f }, // Block Elements\n  { begin: 0x25a0, end: 0x25ff }, // Geometric Shapes\n  { begin: 0x2600, end: 0x26ff }, // Miscellaneous Symbols\n  { begin: 0x2700, end: 0x27bf }, // Dingbats\n  { begin: 0x3000, end: 0x303f }, // CJK Symbols And Punctuation\n  { begin: 0x3040, end: 0x309f }, // Hiragana\n  { begin: 0x30a0, end: 0x30ff }, // Katakana\n  { begin: 0x3100, end: 0x312f }, // Bopomofo\n  { begin: 0x3130, end: 0x318f }, // Hangul Compatibility Jamo\n  { begin: 0xa840, end: 0xa87f }, // Phags-pa\n  { begin: 0x3200, end: 0x32ff }, // Enclosed CJK Letters And Months\n  { begin: 0x3300, end: 0x33ff }, // CJK Compatibility\n  { begin: 0xac00, end: 0xd7af }, // Hangul Syllables\n  { begin: 0xd800, end: 0xdfff }, // Non-Plane 0 *\n  { begin: 0x10900, end: 0x1091f }, // Phoenicia\n  { begin: 0x4e00, end: 0x9fff }, // CJK Unified Ideographs\n  { begin: 0xe000, end: 0xf8ff }, // Private Use Area (plane 0)\n  { begin: 0x31c0, end: 0x31ef }, // CJK Strokes\n  { begin: 0xfb00, end: 0xfb4f }, // Alphabetic Presentation Forms\n  { begin: 0xfb50, end: 0xfdff }, // Arabic Presentation Forms-A\n  { begin: 0xfe20, end: 0xfe2f }, // Combining Half Marks\n  { begin: 0xfe10, end: 0xfe1f }, // Vertical Forms\n  { begin: 0xfe50, end: 0xfe6f }, // Small Form Variants\n  { begin: 0xfe70, end: 0xfeff }, // Arabic Presentation Forms-B\n  { begin: 0xff00, end: 0xffef }, // Halfwidth And Fullwidth Forms\n  { begin: 0xfff0, end: 0xffff }, // Specials\n  { begin: 0x0f00, end: 0x0fff }, // Tibetan\n  { begin: 0x0700, end: 0x074f }, // Syriac\n  { begin: 0x0780, end: 0x07bf }, // Thaana\n  { begin: 0x0d80, end: 0x0dff }, // Sinhala\n  { begin: 0x1000, end: 0x109f }, // Myanmar\n  { begin: 0x1200, end: 0x137f }, // Ethiopic\n  { begin: 0x13a0, end: 0x13ff }, // Cherokee\n  { begin: 0x1400, end: 0x167f }, // Unified Canadian Aboriginal Syllabics\n  { begin: 0x1680, end: 0x169f }, // Ogham\n  { begin: 0x16a0, end: 0x16ff }, // Runic\n  { begin: 0x1780, end: 0x17ff }, // Khmer\n  { begin: 0x1800, end: 0x18af }, // Mongolian\n  { begin: 0x2800, end: 0x28ff }, // Braille Patterns\n  { begin: 0xa000, end: 0xa48f }, // Yi Syllables\n  { begin: 0x1700, end: 0x171f }, // Tagalog\n  { begin: 0x10300, end: 0x1032f }, // Old Italic\n  { begin: 0x10330, end: 0x1034f }, // Gothic\n  { begin: 0x10400, end: 0x1044f }, // Deseret\n  { begin: 0x1d000, end: 0x1d0ff }, // Byzantine Musical Symbols\n  { begin: 0x1d400, end: 0x1d7ff }, // Mathematical Alphanumeric Symbols\n  { begin: 0xff000, end: 0xffffd }, // Private Use (plane 15)\n  { begin: 0xfe00, end: 0xfe0f }, // Variation Selectors\n  { begin: 0xe0000, end: 0xe007f }, // Tags\n  { begin: 0x1900, end: 0x194f }, // Limbu\n  { begin: 0x1950, end: 0x197f }, // Tai Le\n  { begin: 0x1980, end: 0x19df }, // New Tai Lue\n  { begin: 0x1a00, end: 0x1a1f }, // Buginese\n  { begin: 0x2c00, end: 0x2c5f }, // Glagolitic\n  { begin: 0x2d30, end: 0x2d7f }, // Tifinagh\n  { begin: 0x4dc0, end: 0x4dff }, // Yijing Hexagram Symbols\n  { begin: 0xa800, end: 0xa82f }, // Syloti Nagri\n  { begin: 0x10000, end: 0x1007f }, // Linear B Syllabary\n  { begin: 0x10140, end: 0x1018f }, // Ancient Greek Numbers\n  { begin: 0x10380, end: 0x1039f }, // Ugaritic\n  { begin: 0x103a0, end: 0x103df }, // Old Persian\n  { begin: 0x10450, end: 0x1047f }, // Shavian\n  { begin: 0x10480, end: 0x104af }, // Osmanya\n  { begin: 0x10800, end: 0x1083f }, // Cypriot Syllabary\n  { begin: 0x10a00, end: 0x10a5f }, // Kharoshthi\n  { begin: 0x1d300, end: 0x1d35f }, // Tai Xuan Jing Symbols\n  { begin: 0x12000, end: 0x123ff }, // Cuneiform\n  { begin: 0x1d360, end: 0x1d37f }, // Counting Rod Numerals\n  { begin: 0x1b80, end: 0x1bbf }, // Sundanese\n  { begin: 0x1c00, end: 0x1c4f }, // Lepcha\n  { begin: 0x1c50, end: 0x1c7f }, // Ol Chiki\n  { begin: 0xa880, end: 0xa8df }, // Saurashtra\n  { begin: 0xa900, end: 0xa92f }, // Kayah Li\n  { begin: 0xa930, end: 0xa95f }, // Rejang\n  { begin: 0xaa00, end: 0xaa5f }, // Cham\n  { begin: 0x10190, end: 0x101cf }, // Ancient Symbols\n  { begin: 0x101d0, end: 0x101ff }, // Phaistos Disc\n  { begin: 0x102a0, end: 0x102df }, // Carian\n  { begin: 0x1f030, end: 0x1f09f }, // Domino Tiles\n];\n\nfunction getUnicodeRangeFor(value) {\n  for (let i = 0, ii = UnicodeRanges.length; i < ii; i++) {\n    const range = UnicodeRanges[i];\n    if (value >= range.begin && value < range.end) {\n      return i;\n    }\n  }\n  return -1;\n}\n\nfunction isRTLRangeFor(value) {\n  let range = UnicodeRanges[13];\n  if (value >= range.begin && value < range.end) {\n    return true;\n  }\n  range = UnicodeRanges[11];\n  if (value >= range.begin && value < range.end) {\n    return true;\n  }\n  return false;\n}\n\n// The normalization table is obtained by filtering the Unicode characters\n// database with <compat> entries.\nconst getNormalizedUnicodes = getArrayLookupTableFactory(function () {\n  // prettier-ignore\n  return [\n    \"\\u00A8\", \"\\u0020\\u0308\",\n    \"\\u00AF\", \"\\u0020\\u0304\",\n    \"\\u00B4\", \"\\u0020\\u0301\",\n    \"\\u00B5\", \"\\u03BC\",\n    \"\\u00B8\", \"\\u0020\\u0327\",\n    \"\\u0132\", \"\\u0049\\u004A\",\n    \"\\u0133\", \"\\u0069\\u006A\",\n    \"\\u013F\", \"\\u004C\\u00B7\",\n    \"\\u0140\", \"\\u006C\\u00B7\",\n    \"\\u0149\", \"\\u02BC\\u006E\",\n    \"\\u017F\", \"\\u0073\",\n    \"\\u01C4\", \"\\u0044\\u017D\",\n    \"\\u01C5\", \"\\u0044\\u017E\",\n    \"\\u01C6\", \"\\u0064\\u017E\",\n    \"\\u01C7\", \"\\u004C\\u004A\",\n    \"\\u01C8\", \"\\u004C\\u006A\",\n    \"\\u01C9\", \"\\u006C\\u006A\",\n    \"\\u01CA\", \"\\u004E\\u004A\",\n    \"\\u01CB\", \"\\u004E\\u006A\",\n    \"\\u01CC\", \"\\u006E\\u006A\",\n    \"\\u01F1\", \"\\u0044\\u005A\",\n    \"\\u01F2\", \"\\u0044\\u007A\",\n    \"\\u01F3\", \"\\u0064\\u007A\",\n    \"\\u02D8\", \"\\u0020\\u0306\",\n    \"\\u02D9\", \"\\u0020\\u0307\",\n    \"\\u02DA\", \"\\u0020\\u030A\",\n    \"\\u02DB\", \"\\u0020\\u0328\",\n    \"\\u02DC\", \"\\u0020\\u0303\",\n    \"\\u02DD\", \"\\u0020\\u030B\",\n    \"\\u037A\", \"\\u0020\\u0345\",\n    \"\\u0384\", \"\\u0020\\u0301\",\n    \"\\u03D0\", \"\\u03B2\",\n    \"\\u03D1\", \"\\u03B8\",\n    \"\\u03D2\", \"\\u03A5\",\n    \"\\u03D5\", \"\\u03C6\",\n    \"\\u03D6\", \"\\u03C0\",\n    \"\\u03F0\", \"\\u03BA\",\n    \"\\u03F1\", \"\\u03C1\",\n    \"\\u03F2\", \"\\u03C2\",\n    \"\\u03F4\", \"\\u0398\",\n    \"\\u03F5\", \"\\u03B5\",\n    \"\\u03F9\", \"\\u03A3\",\n    \"\\u0587\", \"\\u0565\\u0582\",\n    \"\\u0675\", \"\\u0627\\u0674\",\n    \"\\u0676\", \"\\u0648\\u0674\",\n    \"\\u0677\", \"\\u06C7\\u0674\",\n    \"\\u0678\", \"\\u064A\\u0674\",\n    \"\\u0E33\", \"\\u0E4D\\u0E32\",\n    \"\\u0EB3\", \"\\u0ECD\\u0EB2\",\n    \"\\u0EDC\", \"\\u0EAB\\u0E99\",\n    \"\\u0EDD\", \"\\u0EAB\\u0EA1\",\n    \"\\u0F77\", \"\\u0FB2\\u0F81\",\n    \"\\u0F79\", \"\\u0FB3\\u0F81\",\n    \"\\u1E9A\", \"\\u0061\\u02BE\",\n    \"\\u1FBD\", \"\\u0020\\u0313\",\n    \"\\u1FBF\", \"\\u0020\\u0313\",\n    \"\\u1FC0\", \"\\u0020\\u0342\",\n    \"\\u1FFE\", \"\\u0020\\u0314\",\n    \"\\u2002\", \"\\u0020\",\n    \"\\u2003\", \"\\u0020\",\n    \"\\u2004\", \"\\u0020\",\n    \"\\u2005\", \"\\u0020\",\n    \"\\u2006\", \"\\u0020\",\n    \"\\u2008\", \"\\u0020\",\n    \"\\u2009\", \"\\u0020\",\n    \"\\u200A\", \"\\u0020\",\n    \"\\u2017\", \"\\u0020\\u0333\",\n    \"\\u2024\", \"\\u002E\",\n    \"\\u2025\", \"\\u002E\\u002E\",\n    \"\\u2026\", \"\\u002E\\u002E\\u002E\",\n    \"\\u2033\", \"\\u2032\\u2032\",\n    \"\\u2034\", \"\\u2032\\u2032\\u2032\",\n    \"\\u2036\", \"\\u2035\\u2035\",\n    \"\\u2037\", \"\\u2035\\u2035\\u2035\",\n    \"\\u203C\", \"\\u0021\\u0021\",\n    \"\\u203E\", \"\\u0020\\u0305\",\n    \"\\u2047\", \"\\u003F\\u003F\",\n    \"\\u2048\", \"\\u003F\\u0021\",\n    \"\\u2049\", \"\\u0021\\u003F\",\n    \"\\u2057\", \"\\u2032\\u2032\\u2032\\u2032\",\n    \"\\u205F\", \"\\u0020\",\n    \"\\u20A8\", \"\\u0052\\u0073\",\n    \"\\u2100\", \"\\u0061\\u002F\\u0063\",\n    \"\\u2101\", \"\\u0061\\u002F\\u0073\",\n    \"\\u2103\", \"\\u00B0\\u0043\",\n    \"\\u2105\", \"\\u0063\\u002F\\u006F\",\n    \"\\u2106\", \"\\u0063\\u002F\\u0075\",\n    \"\\u2107\", \"\\u0190\",\n    \"\\u2109\", \"\\u00B0\\u0046\",\n    \"\\u2116\", \"\\u004E\\u006F\",\n    \"\\u2121\", \"\\u0054\\u0045\\u004C\",\n    \"\\u2135\", \"\\u05D0\",\n    \"\\u2136\", \"\\u05D1\",\n    \"\\u2137\", \"\\u05D2\",\n    \"\\u2138\", \"\\u05D3\",\n    \"\\u213B\", \"\\u0046\\u0041\\u0058\",\n    \"\\u2160\", \"\\u0049\",\n    \"\\u2161\", \"\\u0049\\u0049\",\n    \"\\u2162\", \"\\u0049\\u0049\\u0049\",\n    \"\\u2163\", \"\\u0049\\u0056\",\n    \"\\u2164\", \"\\u0056\",\n    \"\\u2165\", \"\\u0056\\u0049\",\n    \"\\u2166\", \"\\u0056\\u0049\\u0049\",\n    \"\\u2167\", \"\\u0056\\u0049\\u0049\\u0049\",\n    \"\\u2168\", \"\\u0049\\u0058\",\n    \"\\u2169\", \"\\u0058\",\n    \"\\u216A\", \"\\u0058\\u0049\",\n    \"\\u216B\", \"\\u0058\\u0049\\u0049\",\n    \"\\u216C\", \"\\u004C\",\n    \"\\u216D\", \"\\u0043\",\n    \"\\u216E\", \"\\u0044\",\n    \"\\u216F\", \"\\u004D\",\n    \"\\u2170\", \"\\u0069\",\n    \"\\u2171\", \"\\u0069\\u0069\",\n    \"\\u2172\", \"\\u0069\\u0069\\u0069\",\n    \"\\u2173\", \"\\u0069\\u0076\",\n    \"\\u2174\", \"\\u0076\",\n    \"\\u2175\", \"\\u0076\\u0069\",\n    \"\\u2176\", \"\\u0076\\u0069\\u0069\",\n    \"\\u2177\", \"\\u0076\\u0069\\u0069\\u0069\",\n    \"\\u2178\", \"\\u0069\\u0078\",\n    \"\\u2179\", \"\\u0078\",\n    \"\\u217A\", \"\\u0078\\u0069\",\n    \"\\u217B\", \"\\u0078\\u0069\\u0069\",\n    \"\\u217C\", \"\\u006C\",\n    \"\\u217D\", \"\\u0063\",\n    \"\\u217E\", \"\\u0064\",\n    \"\\u217F\", \"\\u006D\",\n    \"\\u222C\", \"\\u222B\\u222B\",\n    \"\\u222D\", \"\\u222B\\u222B\\u222B\",\n    \"\\u222F\", \"\\u222E\\u222E\",\n    \"\\u2230\", \"\\u222E\\u222E\\u222E\",\n    \"\\u2474\", \"\\u0028\\u0031\\u0029\",\n    \"\\u2475\", \"\\u0028\\u0032\\u0029\",\n    \"\\u2476\", \"\\u0028\\u0033\\u0029\",\n    \"\\u2477\", \"\\u0028\\u0034\\u0029\",\n    \"\\u2478\", \"\\u0028\\u0035\\u0029\",\n    \"\\u2479\", \"\\u0028\\u0036\\u0029\",\n    \"\\u247A\", \"\\u0028\\u0037\\u0029\",\n    \"\\u247B\", \"\\u0028\\u0038\\u0029\",\n    \"\\u247C\", \"\\u0028\\u0039\\u0029\",\n    \"\\u247D\", \"\\u0028\\u0031\\u0030\\u0029\",\n    \"\\u247E\", \"\\u0028\\u0031\\u0031\\u0029\",\n    \"\\u247F\", \"\\u0028\\u0031\\u0032\\u0029\",\n    \"\\u2480\", \"\\u0028\\u0031\\u0033\\u0029\",\n    \"\\u2481\", \"\\u0028\\u0031\\u0034\\u0029\",\n    \"\\u2482\", \"\\u0028\\u0031\\u0035\\u0029\",\n    \"\\u2483\", \"\\u0028\\u0031\\u0036\\u0029\",\n    \"\\u2484\", \"\\u0028\\u0031\\u0037\\u0029\",\n    \"\\u2485\", \"\\u0028\\u0031\\u0038\\u0029\",\n    \"\\u2486\", \"\\u0028\\u0031\\u0039\\u0029\",\n    \"\\u2487\", \"\\u0028\\u0032\\u0030\\u0029\",\n    \"\\u2488\", \"\\u0031\\u002E\",\n    \"\\u2489\", \"\\u0032\\u002E\",\n    \"\\u248A\", \"\\u0033\\u002E\",\n    \"\\u248B\", \"\\u0034\\u002E\",\n    \"\\u248C\", \"\\u0035\\u002E\",\n    \"\\u248D\", \"\\u0036\\u002E\",\n    \"\\u248E\", \"\\u0037\\u002E\",\n    \"\\u248F\", \"\\u0038\\u002E\",\n    \"\\u2490\", \"\\u0039\\u002E\",\n    \"\\u2491\", \"\\u0031\\u0030\\u002E\",\n    \"\\u2492\", \"\\u0031\\u0031\\u002E\",\n    \"\\u2493\", \"\\u0031\\u0032\\u002E\",\n    \"\\u2494\", \"\\u0031\\u0033\\u002E\",\n    \"\\u2495\", \"\\u0031\\u0034\\u002E\",\n    \"\\u2496\", \"\\u0031\\u0035\\u002E\",\n    \"\\u2497\", \"\\u0031\\u0036\\u002E\",\n    \"\\u2498\", \"\\u0031\\u0037\\u002E\",\n    \"\\u2499\", \"\\u0031\\u0038\\u002E\",\n    \"\\u249A\", \"\\u0031\\u0039\\u002E\",\n    \"\\u249B\", \"\\u0032\\u0030\\u002E\",\n    \"\\u249C\", \"\\u0028\\u0061\\u0029\",\n    \"\\u249D\", \"\\u0028\\u0062\\u0029\",\n    \"\\u249E\", \"\\u0028\\u0063\\u0029\",\n    \"\\u249F\", \"\\u0028\\u0064\\u0029\",\n    \"\\u24A0\", \"\\u0028\\u0065\\u0029\",\n    \"\\u24A1\", \"\\u0028\\u0066\\u0029\",\n    \"\\u24A2\", \"\\u0028\\u0067\\u0029\",\n    \"\\u24A3\", \"\\u0028\\u0068\\u0029\",\n    \"\\u24A4\", \"\\u0028\\u0069\\u0029\",\n    \"\\u24A5\", \"\\u0028\\u006A\\u0029\",\n    \"\\u24A6\", \"\\u0028\\u006B\\u0029\",\n    \"\\u24A7\", \"\\u0028\\u006C\\u0029\",\n    \"\\u24A8\", \"\\u0028\\u006D\\u0029\",\n    \"\\u24A9\", \"\\u0028\\u006E\\u0029\",\n    \"\\u24AA\", \"\\u0028\\u006F\\u0029\",\n    \"\\u24AB\", \"\\u0028\\u0070\\u0029\",\n    \"\\u24AC\", \"\\u0028\\u0071\\u0029\",\n    \"\\u24AD\", \"\\u0028\\u0072\\u0029\",\n    \"\\u24AE\", \"\\u0028\\u0073\\u0029\",\n    \"\\u24AF\", \"\\u0028\\u0074\\u0029\",\n    \"\\u24B0\", \"\\u0028\\u0075\\u0029\",\n    \"\\u24B1\", \"\\u0028\\u0076\\u0029\",\n    \"\\u24B2\", \"\\u0028\\u0077\\u0029\",\n    \"\\u24B3\", \"\\u0028\\u0078\\u0029\",\n    \"\\u24B4\", \"\\u0028\\u0079\\u0029\",\n    \"\\u24B5\", \"\\u0028\\u007A\\u0029\",\n    \"\\u2A0C\", \"\\u222B\\u222B\\u222B\\u222B\",\n    \"\\u2A74\", \"\\u003A\\u003A\\u003D\",\n    \"\\u2A75\", \"\\u003D\\u003D\",\n    \"\\u2A76\", \"\\u003D\\u003D\\u003D\",\n    \"\\u2E9F\", \"\\u6BCD\",\n    \"\\u2EF3\", \"\\u9F9F\",\n    \"\\u2F00\", \"\\u4E00\",\n    \"\\u2F01\", \"\\u4E28\",\n    \"\\u2F02\", \"\\u4E36\",\n    \"\\u2F03\", \"\\u4E3F\",\n    \"\\u2F04\", \"\\u4E59\",\n    \"\\u2F05\", \"\\u4E85\",\n    \"\\u2F06\", \"\\u4E8C\",\n    \"\\u2F07\", \"\\u4EA0\",\n    \"\\u2F08\", \"\\u4EBA\",\n    \"\\u2F09\", \"\\u513F\",\n    \"\\u2F0A\", \"\\u5165\",\n    \"\\u2F0B\", \"\\u516B\",\n    \"\\u2F0C\", \"\\u5182\",\n    \"\\u2F0D\", \"\\u5196\",\n    \"\\u2F0E\", \"\\u51AB\",\n    \"\\u2F0F\", \"\\u51E0\",\n    \"\\u2F10\", \"\\u51F5\",\n    \"\\u2F11\", \"\\u5200\",\n    \"\\u2F12\", \"\\u529B\",\n    \"\\u2F13\", \"\\u52F9\",\n    \"\\u2F14\", \"\\u5315\",\n    \"\\u2F15\", \"\\u531A\",\n    \"\\u2F16\", \"\\u5338\",\n    \"\\u2F17\", \"\\u5341\",\n    \"\\u2F18\", \"\\u535C\",\n    \"\\u2F19\", \"\\u5369\",\n    \"\\u2F1A\", \"\\u5382\",\n    \"\\u2F1B\", \"\\u53B6\",\n    \"\\u2F1C\", \"\\u53C8\",\n    \"\\u2F1D\", \"\\u53E3\",\n    \"\\u2F1E\", \"\\u56D7\",\n    \"\\u2F1F\", \"\\u571F\",\n    \"\\u2F20\", \"\\u58EB\",\n    \"\\u2F21\", \"\\u5902\",\n    \"\\u2F22\", \"\\u590A\",\n    \"\\u2F23\", \"\\u5915\",\n    \"\\u2F24\", \"\\u5927\",\n    \"\\u2F25\", \"\\u5973\",\n    \"\\u2F26\", \"\\u5B50\",\n    \"\\u2F27\", \"\\u5B80\",\n    \"\\u2F28\", \"\\u5BF8\",\n    \"\\u2F29\", \"\\u5C0F\",\n    \"\\u2F2A\", \"\\u5C22\",\n    \"\\u2F2B\", \"\\u5C38\",\n    \"\\u2F2C\", \"\\u5C6E\",\n    \"\\u2F2D\", \"\\u5C71\",\n    \"\\u2F2E\", \"\\u5DDB\",\n    \"\\u2F2F\", \"\\u5DE5\",\n    \"\\u2F30\", \"\\u5DF1\",\n    \"\\u2F31\", \"\\u5DFE\",\n    \"\\u2F32\", \"\\u5E72\",\n    \"\\u2F33\", \"\\u5E7A\",\n    \"\\u2F34\", \"\\u5E7F\",\n    \"\\u2F35\", \"\\u5EF4\",\n    \"\\u2F36\", \"\\u5EFE\",\n    \"\\u2F37\", \"\\u5F0B\",\n    \"\\u2F38\", \"\\u5F13\",\n    \"\\u2F39\", \"\\u5F50\",\n    \"\\u2F3A\", \"\\u5F61\",\n    \"\\u2F3B\", \"\\u5F73\",\n    \"\\u2F3C\", \"\\u5FC3\",\n    \"\\u2F3D\", \"\\u6208\",\n    \"\\u2F3E\", \"\\u6236\",\n    \"\\u2F3F\", \"\\u624B\",\n    \"\\u2F40\", \"\\u652F\",\n    \"\\u2F41\", \"\\u6534\",\n    \"\\u2F42\", \"\\u6587\",\n    \"\\u2F43\", \"\\u6597\",\n    \"\\u2F44\", \"\\u65A4\",\n    \"\\u2F45\", \"\\u65B9\",\n    \"\\u2F46\", \"\\u65E0\",\n    \"\\u2F47\", \"\\u65E5\",\n    \"\\u2F48\", \"\\u66F0\",\n    \"\\u2F49\", \"\\u6708\",\n    \"\\u2F4A\", \"\\u6728\",\n    \"\\u2F4B\", \"\\u6B20\",\n    \"\\u2F4C\", \"\\u6B62\",\n    \"\\u2F4D\", \"\\u6B79\",\n    \"\\u2F4E\", \"\\u6BB3\",\n    \"\\u2F4F\", \"\\u6BCB\",\n    \"\\u2F50\", \"\\u6BD4\",\n    \"\\u2F51\", \"\\u6BDB\",\n    \"\\u2F52\", \"\\u6C0F\",\n    \"\\u2F53\", \"\\u6C14\",\n    \"\\u2F54\", \"\\u6C34\",\n    \"\\u2F55\", \"\\u706B\",\n    \"\\u2F56\", \"\\u722A\",\n    \"\\u2F57\", \"\\u7236\",\n    \"\\u2F58\", \"\\u723B\",\n    \"\\u2F59\", \"\\u723F\",\n    \"\\u2F5A\", \"\\u7247\",\n    \"\\u2F5B\", \"\\u7259\",\n    \"\\u2F5C\", \"\\u725B\",\n    \"\\u2F5D\", \"\\u72AC\",\n    \"\\u2F5E\", \"\\u7384\",\n    \"\\u2F5F\", \"\\u7389\",\n    \"\\u2F60\", \"\\u74DC\",\n    \"\\u2F61\", \"\\u74E6\",\n    \"\\u2F62\", \"\\u7518\",\n    \"\\u2F63\", \"\\u751F\",\n    \"\\u2F64\", \"\\u7528\",\n    \"\\u2F65\", \"\\u7530\",\n    \"\\u2F66\", \"\\u758B\",\n    \"\\u2F67\", \"\\u7592\",\n    \"\\u2F68\", \"\\u7676\",\n    \"\\u2F69\", \"\\u767D\",\n    \"\\u2F6A\", \"\\u76AE\",\n    \"\\u2F6B\", \"\\u76BF\",\n    \"\\u2F6C\", \"\\u76EE\",\n    \"\\u2F6D\", \"\\u77DB\",\n    \"\\u2F6E\", \"\\u77E2\",\n    \"\\u2F6F\", \"\\u77F3\",\n    \"\\u2F70\", \"\\u793A\",\n    \"\\u2F71\", \"\\u79B8\",\n    \"\\u2F72\", \"\\u79BE\",\n    \"\\u2F73\", \"\\u7A74\",\n    \"\\u2F74\", \"\\u7ACB\",\n    \"\\u2F75\", \"\\u7AF9\",\n    \"\\u2F76\", \"\\u7C73\",\n    \"\\u2F77\", \"\\u7CF8\",\n    \"\\u2F78\", \"\\u7F36\",\n    \"\\u2F79\", \"\\u7F51\",\n    \"\\u2F7A\", \"\\u7F8A\",\n    \"\\u2F7B\", \"\\u7FBD\",\n    \"\\u2F7C\", \"\\u8001\",\n    \"\\u2F7D\", \"\\u800C\",\n    \"\\u2F7E\", \"\\u8012\",\n    \"\\u2F7F\", \"\\u8033\",\n    \"\\u2F80\", \"\\u807F\",\n    \"\\u2F81\", \"\\u8089\",\n    \"\\u2F82\", \"\\u81E3\",\n    \"\\u2F83\", \"\\u81EA\",\n    \"\\u2F84\", \"\\u81F3\",\n    \"\\u2F85\", \"\\u81FC\",\n    \"\\u2F86\", \"\\u820C\",\n    \"\\u2F87\", \"\\u821B\",\n    \"\\u2F88\", \"\\u821F\",\n    \"\\u2F89\", \"\\u826E\",\n    \"\\u2F8A\", \"\\u8272\",\n    \"\\u2F8B\", \"\\u8278\",\n    \"\\u2F8C\", \"\\u864D\",\n    \"\\u2F8D\", \"\\u866B\",\n    \"\\u2F8E\", \"\\u8840\",\n    \"\\u2F8F\", \"\\u884C\",\n    \"\\u2F90\", \"\\u8863\",\n    \"\\u2F91\", \"\\u897E\",\n    \"\\u2F92\", \"\\u898B\",\n    \"\\u2F93\", \"\\u89D2\",\n    \"\\u2F94\", \"\\u8A00\",\n    \"\\u2F95\", \"\\u8C37\",\n    \"\\u2F96\", \"\\u8C46\",\n    \"\\u2F97\", \"\\u8C55\",\n    \"\\u2F98\", \"\\u8C78\",\n    \"\\u2F99\", \"\\u8C9D\",\n    \"\\u2F9A\", \"\\u8D64\",\n    \"\\u2F9B\", \"\\u8D70\",\n    \"\\u2F9C\", \"\\u8DB3\",\n    \"\\u2F9D\", \"\\u8EAB\",\n    \"\\u2F9E\", \"\\u8ECA\",\n    \"\\u2F9F\", \"\\u8F9B\",\n    \"\\u2FA0\", \"\\u8FB0\",\n    \"\\u2FA1\", \"\\u8FB5\",\n    \"\\u2FA2\", \"\\u9091\",\n    \"\\u2FA3\", \"\\u9149\",\n    \"\\u2FA4\", \"\\u91C6\",\n    \"\\u2FA5\", \"\\u91CC\",\n    \"\\u2FA6\", \"\\u91D1\",\n    \"\\u2FA7\", \"\\u9577\",\n    \"\\u2FA8\", \"\\u9580\",\n    \"\\u2FA9\", \"\\u961C\",\n    \"\\u2FAA\", \"\\u96B6\",\n    \"\\u2FAB\", \"\\u96B9\",\n    \"\\u2FAC\", \"\\u96E8\",\n    \"\\u2FAD\", \"\\u9751\",\n    \"\\u2FAE\", \"\\u975E\",\n    \"\\u2FAF\", \"\\u9762\",\n    \"\\u2FB0\", \"\\u9769\",\n    \"\\u2FB1\", \"\\u97CB\",\n    \"\\u2FB2\", \"\\u97ED\",\n    \"\\u2FB3\", \"\\u97F3\",\n    \"\\u2FB4\", \"\\u9801\",\n    \"\\u2FB5\", \"\\u98A8\",\n    \"\\u2FB6\", \"\\u98DB\",\n    \"\\u2FB7\", \"\\u98DF\",\n    \"\\u2FB8\", \"\\u9996\",\n    \"\\u2FB9\", \"\\u9999\",\n    \"\\u2FBA\", \"\\u99AC\",\n    \"\\u2FBB\", \"\\u9AA8\",\n    \"\\u2FBC\", \"\\u9AD8\",\n    \"\\u2FBD\", \"\\u9ADF\",\n    \"\\u2FBE\", \"\\u9B25\",\n    \"\\u2FBF\", \"\\u9B2F\",\n    \"\\u2FC0\", \"\\u9B32\",\n    \"\\u2FC1\", \"\\u9B3C\",\n    \"\\u2FC2\", \"\\u9B5A\",\n    \"\\u2FC3\", \"\\u9CE5\",\n    \"\\u2FC4\", \"\\u9E75\",\n    \"\\u2FC5\", \"\\u9E7F\",\n    \"\\u2FC6\", \"\\u9EA5\",\n    \"\\u2FC7\", \"\\u9EBB\",\n    \"\\u2FC8\", \"\\u9EC3\",\n    \"\\u2FC9\", \"\\u9ECD\",\n    \"\\u2FCA\", \"\\u9ED1\",\n    \"\\u2FCB\", \"\\u9EF9\",\n    \"\\u2FCC\", \"\\u9EFD\",\n    \"\\u2FCD\", \"\\u9F0E\",\n    \"\\u2FCE\", \"\\u9F13\",\n    \"\\u2FCF\", \"\\u9F20\",\n    \"\\u2FD0\", \"\\u9F3B\",\n    \"\\u2FD1\", \"\\u9F4A\",\n    \"\\u2FD2\", \"\\u9F52\",\n    \"\\u2FD3\", \"\\u9F8D\",\n    \"\\u2FD4\", \"\\u9F9C\",\n    \"\\u2FD5\", \"\\u9FA0\",\n    \"\\u3036\", \"\\u3012\",\n    \"\\u3038\", \"\\u5341\",\n    \"\\u3039\", \"\\u5344\",\n    \"\\u303A\", \"\\u5345\",\n    \"\\u309B\", \"\\u0020\\u3099\",\n    \"\\u309C\", \"\\u0020\\u309A\",\n    \"\\u3131\", \"\\u1100\",\n    \"\\u3132\", \"\\u1101\",\n    \"\\u3133\", \"\\u11AA\",\n    \"\\u3134\", \"\\u1102\",\n    \"\\u3135\", \"\\u11AC\",\n    \"\\u3136\", \"\\u11AD\",\n    \"\\u3137\", \"\\u1103\",\n    \"\\u3138\", \"\\u1104\",\n    \"\\u3139\", \"\\u1105\",\n    \"\\u313A\", \"\\u11B0\",\n    \"\\u313B\", \"\\u11B1\",\n    \"\\u313C\", \"\\u11B2\",\n    \"\\u313D\", \"\\u11B3\",\n    \"\\u313E\", \"\\u11B4\",\n    \"\\u313F\", \"\\u11B5\",\n    \"\\u3140\", \"\\u111A\",\n    \"\\u3141\", \"\\u1106\",\n    \"\\u3142\", \"\\u1107\",\n    \"\\u3143\", \"\\u1108\",\n    \"\\u3144\", \"\\u1121\",\n    \"\\u3145\", \"\\u1109\",\n    \"\\u3146\", \"\\u110A\",\n    \"\\u3147\", \"\\u110B\",\n    \"\\u3148\", \"\\u110C\",\n    \"\\u3149\", \"\\u110D\",\n    \"\\u314A\", \"\\u110E\",\n    \"\\u314B\", \"\\u110F\",\n    \"\\u314C\", \"\\u1110\",\n    \"\\u314D\", \"\\u1111\",\n    \"\\u314E\", \"\\u1112\",\n    \"\\u314F\", \"\\u1161\",\n    \"\\u3150\", \"\\u1162\",\n    \"\\u3151\", \"\\u1163\",\n    \"\\u3152\", \"\\u1164\",\n    \"\\u3153\", \"\\u1165\",\n    \"\\u3154\", \"\\u1166\",\n    \"\\u3155\", \"\\u1167\",\n    \"\\u3156\", \"\\u1168\",\n    \"\\u3157\", \"\\u1169\",\n    \"\\u3158\", \"\\u116A\",\n    \"\\u3159\", \"\\u116B\",\n    \"\\u315A\", \"\\u116C\",\n    \"\\u315B\", \"\\u116D\",\n    \"\\u315C\", \"\\u116E\",\n    \"\\u315D\", \"\\u116F\",\n    \"\\u315E\", \"\\u1170\",\n    \"\\u315F\", \"\\u1171\",\n    \"\\u3160\", \"\\u1172\",\n    \"\\u3161\", \"\\u1173\",\n    \"\\u3162\", \"\\u1174\",\n    \"\\u3163\", \"\\u1175\",\n    \"\\u3164\", \"\\u1160\",\n    \"\\u3165\", \"\\u1114\",\n    \"\\u3166\", \"\\u1115\",\n    \"\\u3167\", \"\\u11C7\",\n    \"\\u3168\", \"\\u11C8\",\n    \"\\u3169\", \"\\u11CC\",\n    \"\\u316A\", \"\\u11CE\",\n    \"\\u316B\", \"\\u11D3\",\n    \"\\u316C\", \"\\u11D7\",\n    \"\\u316D\", \"\\u11D9\",\n    \"\\u316E\", \"\\u111C\",\n    \"\\u316F\", \"\\u11DD\",\n    \"\\u3170\", \"\\u11DF\",\n    \"\\u3171\", \"\\u111D\",\n    \"\\u3172\", \"\\u111E\",\n    \"\\u3173\", \"\\u1120\",\n    \"\\u3174\", \"\\u1122\",\n    \"\\u3175\", \"\\u1123\",\n    \"\\u3176\", \"\\u1127\",\n    \"\\u3177\", \"\\u1129\",\n    \"\\u3178\", \"\\u112B\",\n    \"\\u3179\", \"\\u112C\",\n    \"\\u317A\", \"\\u112D\",\n    \"\\u317B\", \"\\u112E\",\n    \"\\u317C\", \"\\u112F\",\n    \"\\u317D\", \"\\u1132\",\n    \"\\u317E\", \"\\u1136\",\n    \"\\u317F\", \"\\u1140\",\n    \"\\u3180\", \"\\u1147\",\n    \"\\u3181\", \"\\u114C\",\n    \"\\u3182\", \"\\u11F1\",\n    \"\\u3183\", \"\\u11F2\",\n    \"\\u3184\", \"\\u1157\",\n    \"\\u3185\", \"\\u1158\",\n    \"\\u3186\", \"\\u1159\",\n    \"\\u3187\", \"\\u1184\",\n    \"\\u3188\", \"\\u1185\",\n    \"\\u3189\", \"\\u1188\",\n    \"\\u318A\", \"\\u1191\",\n    \"\\u318B\", \"\\u1192\",\n    \"\\u318C\", \"\\u1194\",\n    \"\\u318D\", \"\\u119E\",\n    \"\\u318E\", \"\\u11A1\",\n    \"\\u3200\", \"\\u0028\\u1100\\u0029\",\n    \"\\u3201\", \"\\u0028\\u1102\\u0029\",\n    \"\\u3202\", \"\\u0028\\u1103\\u0029\",\n    \"\\u3203\", \"\\u0028\\u1105\\u0029\",\n    \"\\u3204\", \"\\u0028\\u1106\\u0029\",\n    \"\\u3205\", \"\\u0028\\u1107\\u0029\",\n    \"\\u3206\", \"\\u0028\\u1109\\u0029\",\n    \"\\u3207\", \"\\u0028\\u110B\\u0029\",\n    \"\\u3208\", \"\\u0028\\u110C\\u0029\",\n    \"\\u3209\", \"\\u0028\\u110E\\u0029\",\n    \"\\u320A\", \"\\u0028\\u110F\\u0029\",\n    \"\\u320B\", \"\\u0028\\u1110\\u0029\",\n    \"\\u320C\", \"\\u0028\\u1111\\u0029\",\n    \"\\u320D\", \"\\u0028\\u1112\\u0029\",\n    \"\\u320E\", \"\\u0028\\u1100\\u1161\\u0029\",\n    \"\\u320F\", \"\\u0028\\u1102\\u1161\\u0029\",\n    \"\\u3210\", \"\\u0028\\u1103\\u1161\\u0029\",\n    \"\\u3211\", \"\\u0028\\u1105\\u1161\\u0029\",\n    \"\\u3212\", \"\\u0028\\u1106\\u1161\\u0029\",\n    \"\\u3213\", \"\\u0028\\u1107\\u1161\\u0029\",\n    \"\\u3214\", \"\\u0028\\u1109\\u1161\\u0029\",\n    \"\\u3215\", \"\\u0028\\u110B\\u1161\\u0029\",\n    \"\\u3216\", \"\\u0028\\u110C\\u1161\\u0029\",\n    \"\\u3217\", \"\\u0028\\u110E\\u1161\\u0029\",\n    \"\\u3218\", \"\\u0028\\u110F\\u1161\\u0029\",\n    \"\\u3219\", \"\\u0028\\u1110\\u1161\\u0029\",\n    \"\\u321A\", \"\\u0028\\u1111\\u1161\\u0029\",\n    \"\\u321B\", \"\\u0028\\u1112\\u1161\\u0029\",\n    \"\\u321C\", \"\\u0028\\u110C\\u116E\\u0029\",\n    \"\\u321D\", \"\\u0028\\u110B\\u1169\\u110C\\u1165\\u11AB\\u0029\",\n    \"\\u321E\", \"\\u0028\\u110B\\u1169\\u1112\\u116E\\u0029\",\n    \"\\u3220\", \"\\u0028\\u4E00\\u0029\",\n    \"\\u3221\", \"\\u0028\\u4E8C\\u0029\",\n    \"\\u3222\", \"\\u0028\\u4E09\\u0029\",\n    \"\\u3223\", \"\\u0028\\u56DB\\u0029\",\n    \"\\u3224\", \"\\u0028\\u4E94\\u0029\",\n    \"\\u3225\", \"\\u0028\\u516D\\u0029\",\n    \"\\u3226\", \"\\u0028\\u4E03\\u0029\",\n    \"\\u3227\", \"\\u0028\\u516B\\u0029\",\n    \"\\u3228\", \"\\u0028\\u4E5D\\u0029\",\n    \"\\u3229\", \"\\u0028\\u5341\\u0029\",\n    \"\\u322A\", \"\\u0028\\u6708\\u0029\",\n    \"\\u322B\", \"\\u0028\\u706B\\u0029\",\n    \"\\u322C\", \"\\u0028\\u6C34\\u0029\",\n    \"\\u322D\", \"\\u0028\\u6728\\u0029\",\n    \"\\u322E\", \"\\u0028\\u91D1\\u0029\",\n    \"\\u322F\", \"\\u0028\\u571F\\u0029\",\n    \"\\u3230\", \"\\u0028\\u65E5\\u0029\",\n    \"\\u3231\", \"\\u0028\\u682A\\u0029\",\n    \"\\u3232\", \"\\u0028\\u6709\\u0029\",\n    \"\\u3233\", \"\\u0028\\u793E\\u0029\",\n    \"\\u3234\", \"\\u0028\\u540D\\u0029\",\n    \"\\u3235\", \"\\u0028\\u7279\\u0029\",\n    \"\\u3236\", \"\\u0028\\u8CA1\\u0029\",\n    \"\\u3237\", \"\\u0028\\u795D\\u0029\",\n    \"\\u3238\", \"\\u0028\\u52B4\\u0029\",\n    \"\\u3239\", \"\\u0028\\u4EE3\\u0029\",\n    \"\\u323A\", \"\\u0028\\u547C\\u0029\",\n    \"\\u323B\", \"\\u0028\\u5B66\\u0029\",\n    \"\\u323C\", \"\\u0028\\u76E3\\u0029\",\n    \"\\u323D\", \"\\u0028\\u4F01\\u0029\",\n    \"\\u323E\", \"\\u0028\\u8CC7\\u0029\",\n    \"\\u323F\", \"\\u0028\\u5354\\u0029\",\n    \"\\u3240\", \"\\u0028\\u796D\\u0029\",\n    \"\\u3241\", \"\\u0028\\u4F11\\u0029\",\n    \"\\u3242\", \"\\u0028\\u81EA\\u0029\",\n    \"\\u3243\", \"\\u0028\\u81F3\\u0029\",\n    \"\\u32C0\", \"\\u0031\\u6708\",\n    \"\\u32C1\", \"\\u0032\\u6708\",\n    \"\\u32C2\", \"\\u0033\\u6708\",\n    \"\\u32C3\", \"\\u0034\\u6708\",\n    \"\\u32C4\", \"\\u0035\\u6708\",\n    \"\\u32C5\", \"\\u0036\\u6708\",\n    \"\\u32C6\", \"\\u0037\\u6708\",\n    \"\\u32C7\", \"\\u0038\\u6708\",\n    \"\\u32C8\", \"\\u0039\\u6708\",\n    \"\\u32C9\", \"\\u0031\\u0030\\u6708\",\n    \"\\u32CA\", \"\\u0031\\u0031\\u6708\",\n    \"\\u32CB\", \"\\u0031\\u0032\\u6708\",\n    \"\\u3358\", \"\\u0030\\u70B9\",\n    \"\\u3359\", \"\\u0031\\u70B9\",\n    \"\\u335A\", \"\\u0032\\u70B9\",\n    \"\\u335B\", \"\\u0033\\u70B9\",\n    \"\\u335C\", \"\\u0034\\u70B9\",\n    \"\\u335D\", \"\\u0035\\u70B9\",\n    \"\\u335E\", \"\\u0036\\u70B9\",\n    \"\\u335F\", \"\\u0037\\u70B9\",\n    \"\\u3360\", \"\\u0038\\u70B9\",\n    \"\\u3361\", \"\\u0039\\u70B9\",\n    \"\\u3362\", \"\\u0031\\u0030\\u70B9\",\n    \"\\u3363\", \"\\u0031\\u0031\\u70B9\",\n    \"\\u3364\", \"\\u0031\\u0032\\u70B9\",\n    \"\\u3365\", \"\\u0031\\u0033\\u70B9\",\n    \"\\u3366\", \"\\u0031\\u0034\\u70B9\",\n    \"\\u3367\", \"\\u0031\\u0035\\u70B9\",\n    \"\\u3368\", \"\\u0031\\u0036\\u70B9\",\n    \"\\u3369\", \"\\u0031\\u0037\\u70B9\",\n    \"\\u336A\", \"\\u0031\\u0038\\u70B9\",\n    \"\\u336B\", \"\\u0031\\u0039\\u70B9\",\n    \"\\u336C\", \"\\u0032\\u0030\\u70B9\",\n    \"\\u336D\", \"\\u0032\\u0031\\u70B9\",\n    \"\\u336E\", \"\\u0032\\u0032\\u70B9\",\n    \"\\u336F\", \"\\u0032\\u0033\\u70B9\",\n    \"\\u3370\", \"\\u0032\\u0034\\u70B9\",\n    \"\\u33E0\", \"\\u0031\\u65E5\",\n    \"\\u33E1\", \"\\u0032\\u65E5\",\n    \"\\u33E2\", \"\\u0033\\u65E5\",\n    \"\\u33E3\", \"\\u0034\\u65E5\",\n    \"\\u33E4\", \"\\u0035\\u65E5\",\n    \"\\u33E5\", \"\\u0036\\u65E5\",\n    \"\\u33E6\", \"\\u0037\\u65E5\",\n    \"\\u33E7\", \"\\u0038\\u65E5\",\n    \"\\u33E8\", \"\\u0039\\u65E5\",\n    \"\\u33E9\", \"\\u0031\\u0030\\u65E5\",\n    \"\\u33EA\", \"\\u0031\\u0031\\u65E5\",\n    \"\\u33EB\", \"\\u0031\\u0032\\u65E5\",\n    \"\\u33EC\", \"\\u0031\\u0033\\u65E5\",\n    \"\\u33ED\", \"\\u0031\\u0034\\u65E5\",\n    \"\\u33EE\", \"\\u0031\\u0035\\u65E5\",\n    \"\\u33EF\", \"\\u0031\\u0036\\u65E5\",\n    \"\\u33F0\", \"\\u0031\\u0037\\u65E5\",\n    \"\\u33F1\", \"\\u0031\\u0038\\u65E5\",\n    \"\\u33F2\", \"\\u0031\\u0039\\u65E5\",\n    \"\\u33F3\", \"\\u0032\\u0030\\u65E5\",\n    \"\\u33F4\", \"\\u0032\\u0031\\u65E5\",\n    \"\\u33F5\", \"\\u0032\\u0032\\u65E5\",\n    \"\\u33F6\", \"\\u0032\\u0033\\u65E5\",\n    \"\\u33F7\", \"\\u0032\\u0034\\u65E5\",\n    \"\\u33F8\", \"\\u0032\\u0035\\u65E5\",\n    \"\\u33F9\", \"\\u0032\\u0036\\u65E5\",\n    \"\\u33FA\", \"\\u0032\\u0037\\u65E5\",\n    \"\\u33FB\", \"\\u0032\\u0038\\u65E5\",\n    \"\\u33FC\", \"\\u0032\\u0039\\u65E5\",\n    \"\\u33FD\", \"\\u0033\\u0030\\u65E5\",\n    \"\\u33FE\", \"\\u0033\\u0031\\u65E5\",\n    \"\\uFB00\", \"\\u0066\\u0066\",\n    \"\\uFB01\", \"\\u0066\\u0069\",\n    \"\\uFB02\", \"\\u0066\\u006C\",\n    \"\\uFB03\", \"\\u0066\\u0066\\u0069\",\n    \"\\uFB04\", \"\\u0066\\u0066\\u006C\",\n    \"\\uFB05\", \"\\u017F\\u0074\",\n    \"\\uFB06\", \"\\u0073\\u0074\",\n    \"\\uFB13\", \"\\u0574\\u0576\",\n    \"\\uFB14\", \"\\u0574\\u0565\",\n    \"\\uFB15\", \"\\u0574\\u056B\",\n    \"\\uFB16\", \"\\u057E\\u0576\",\n    \"\\uFB17\", \"\\u0574\\u056D\",\n    \"\\uFB4F\", \"\\u05D0\\u05DC\",\n    \"\\uFB50\", \"\\u0671\",\n    \"\\uFB51\", \"\\u0671\",\n    \"\\uFB52\", \"\\u067B\",\n    \"\\uFB53\", \"\\u067B\",\n    \"\\uFB54\", \"\\u067B\",\n    \"\\uFB55\", \"\\u067B\",\n    \"\\uFB56\", \"\\u067E\",\n    \"\\uFB57\", \"\\u067E\",\n    \"\\uFB58\", \"\\u067E\",\n    \"\\uFB59\", \"\\u067E\",\n    \"\\uFB5A\", \"\\u0680\",\n    \"\\uFB5B\", \"\\u0680\",\n    \"\\uFB5C\", \"\\u0680\",\n    \"\\uFB5D\", \"\\u0680\",\n    \"\\uFB5E\", \"\\u067A\",\n    \"\\uFB5F\", \"\\u067A\",\n    \"\\uFB60\", \"\\u067A\",\n    \"\\uFB61\", \"\\u067A\",\n    \"\\uFB62\", \"\\u067F\",\n    \"\\uFB63\", \"\\u067F\",\n    \"\\uFB64\", \"\\u067F\",\n    \"\\uFB65\", \"\\u067F\",\n    \"\\uFB66\", \"\\u0679\",\n    \"\\uFB67\", \"\\u0679\",\n    \"\\uFB68\", \"\\u0679\",\n    \"\\uFB69\", \"\\u0679\",\n    \"\\uFB6A\", \"\\u06A4\",\n    \"\\uFB6B\", \"\\u06A4\",\n    \"\\uFB6C\", \"\\u06A4\",\n    \"\\uFB6D\", \"\\u06A4\",\n    \"\\uFB6E\", \"\\u06A6\",\n    \"\\uFB6F\", \"\\u06A6\",\n    \"\\uFB70\", \"\\u06A6\",\n    \"\\uFB71\", \"\\u06A6\",\n    \"\\uFB72\", \"\\u0684\",\n    \"\\uFB73\", \"\\u0684\",\n    \"\\uFB74\", \"\\u0684\",\n    \"\\uFB75\", \"\\u0684\",\n    \"\\uFB76\", \"\\u0683\",\n    \"\\uFB77\", \"\\u0683\",\n    \"\\uFB78\", \"\\u0683\",\n    \"\\uFB79\", \"\\u0683\",\n    \"\\uFB7A\", \"\\u0686\",\n    \"\\uFB7B\", \"\\u0686\",\n    \"\\uFB7C\", \"\\u0686\",\n    \"\\uFB7D\", \"\\u0686\",\n    \"\\uFB7E\", \"\\u0687\",\n    \"\\uFB7F\", \"\\u0687\",\n    \"\\uFB80\", \"\\u0687\",\n    \"\\uFB81\", \"\\u0687\",\n    \"\\uFB82\", \"\\u068D\",\n    \"\\uFB83\", \"\\u068D\",\n    \"\\uFB84\", \"\\u068C\",\n    \"\\uFB85\", \"\\u068C\",\n    \"\\uFB86\", \"\\u068E\",\n    \"\\uFB87\", \"\\u068E\",\n    \"\\uFB88\", \"\\u0688\",\n    \"\\uFB89\", \"\\u0688\",\n    \"\\uFB8A\", \"\\u0698\",\n    \"\\uFB8B\", \"\\u0698\",\n    \"\\uFB8C\", \"\\u0691\",\n    \"\\uFB8D\", \"\\u0691\",\n    \"\\uFB8E\", \"\\u06A9\",\n    \"\\uFB8F\", \"\\u06A9\",\n    \"\\uFB90\", \"\\u06A9\",\n    \"\\uFB91\", \"\\u06A9\",\n    \"\\uFB92\", \"\\u06AF\",\n    \"\\uFB93\", \"\\u06AF\",\n    \"\\uFB94\", \"\\u06AF\",\n    \"\\uFB95\", \"\\u06AF\",\n    \"\\uFB96\", \"\\u06B3\",\n    \"\\uFB97\", \"\\u06B3\",\n    \"\\uFB98\", \"\\u06B3\",\n    \"\\uFB99\", \"\\u06B3\",\n    \"\\uFB9A\", \"\\u06B1\",\n    \"\\uFB9B\", \"\\u06B1\",\n    \"\\uFB9C\", \"\\u06B1\",\n    \"\\uFB9D\", \"\\u06B1\",\n    \"\\uFB9E\", \"\\u06BA\",\n    \"\\uFB9F\", \"\\u06BA\",\n    \"\\uFBA0\", \"\\u06BB\",\n    \"\\uFBA1\", \"\\u06BB\",\n    \"\\uFBA2\", \"\\u06BB\",\n    \"\\uFBA3\", \"\\u06BB\",\n    \"\\uFBA4\", \"\\u06C0\",\n    \"\\uFBA5\", \"\\u06C0\",\n    \"\\uFBA6\", \"\\u06C1\",\n    \"\\uFBA7\", \"\\u06C1\",\n    \"\\uFBA8\", \"\\u06C1\",\n    \"\\uFBA9\", \"\\u06C1\",\n    \"\\uFBAA\", \"\\u06BE\",\n    \"\\uFBAB\", \"\\u06BE\",\n    \"\\uFBAC\", \"\\u06BE\",\n    \"\\uFBAD\", \"\\u06BE\",\n    \"\\uFBAE\", \"\\u06D2\",\n    \"\\uFBAF\", \"\\u06D2\",\n    \"\\uFBB0\", \"\\u06D3\",\n    \"\\uFBB1\", \"\\u06D3\",\n    \"\\uFBD3\", \"\\u06AD\",\n    \"\\uFBD4\", \"\\u06AD\",\n    \"\\uFBD5\", \"\\u06AD\",\n    \"\\uFBD6\", \"\\u06AD\",\n    \"\\uFBD7\", \"\\u06C7\",\n    \"\\uFBD8\", \"\\u06C7\",\n    \"\\uFBD9\", \"\\u06C6\",\n    \"\\uFBDA\", \"\\u06C6\",\n    \"\\uFBDB\", \"\\u06C8\",\n    \"\\uFBDC\", \"\\u06C8\",\n    \"\\uFBDD\", \"\\u0677\",\n    \"\\uFBDE\", \"\\u06CB\",\n    \"\\uFBDF\", \"\\u06CB\",\n    \"\\uFBE0\", \"\\u06C5\",\n    \"\\uFBE1\", \"\\u06C5\",\n    \"\\uFBE2\", \"\\u06C9\",\n    \"\\uFBE3\", \"\\u06C9\",\n    \"\\uFBE4\", \"\\u06D0\",\n    \"\\uFBE5\", \"\\u06D0\",\n    \"\\uFBE6\", \"\\u06D0\",\n    \"\\uFBE7\", \"\\u06D0\",\n    \"\\uFBE8\", \"\\u0649\",\n    \"\\uFBE9\", \"\\u0649\",\n    \"\\uFBEA\", \"\\u0626\\u0627\",\n    \"\\uFBEB\", \"\\u0626\\u0627\",\n    \"\\uFBEC\", \"\\u0626\\u06D5\",\n    \"\\uFBED\", \"\\u0626\\u06D5\",\n    \"\\uFBEE\", \"\\u0626\\u0648\",\n    \"\\uFBEF\", \"\\u0626\\u0648\",\n    \"\\uFBF0\", \"\\u0626\\u06C7\",\n    \"\\uFBF1\", \"\\u0626\\u06C7\",\n    \"\\uFBF2\", \"\\u0626\\u06C6\",\n    \"\\uFBF3\", \"\\u0626\\u06C6\",\n    \"\\uFBF4\", \"\\u0626\\u06C8\",\n    \"\\uFBF5\", \"\\u0626\\u06C8\",\n    \"\\uFBF6\", \"\\u0626\\u06D0\",\n    \"\\uFBF7\", \"\\u0626\\u06D0\",\n    \"\\uFBF8\", \"\\u0626\\u06D0\",\n    \"\\uFBF9\", \"\\u0626\\u0649\",\n    \"\\uFBFA\", \"\\u0626\\u0649\",\n    \"\\uFBFB\", \"\\u0626\\u0649\",\n    \"\\uFBFC\", \"\\u06CC\",\n    \"\\uFBFD\", \"\\u06CC\",\n    \"\\uFBFE\", \"\\u06CC\",\n    \"\\uFBFF\", \"\\u06CC\",\n    \"\\uFC00\", \"\\u0626\\u062C\",\n    \"\\uFC01\", \"\\u0626\\u062D\",\n    \"\\uFC02\", \"\\u0626\\u0645\",\n    \"\\uFC03\", \"\\u0626\\u0649\",\n    \"\\uFC04\", \"\\u0626\\u064A\",\n    \"\\uFC05\", \"\\u0628\\u062C\",\n    \"\\uFC06\", \"\\u0628\\u062D\",\n    \"\\uFC07\", \"\\u0628\\u062E\",\n    \"\\uFC08\", \"\\u0628\\u0645\",\n    \"\\uFC09\", \"\\u0628\\u0649\",\n    \"\\uFC0A\", \"\\u0628\\u064A\",\n    \"\\uFC0B\", \"\\u062A\\u062C\",\n    \"\\uFC0C\", \"\\u062A\\u062D\",\n    \"\\uFC0D\", \"\\u062A\\u062E\",\n    \"\\uFC0E\", \"\\u062A\\u0645\",\n    \"\\uFC0F\", \"\\u062A\\u0649\",\n    \"\\uFC10\", \"\\u062A\\u064A\",\n    \"\\uFC11\", \"\\u062B\\u062C\",\n    \"\\uFC12\", \"\\u062B\\u0645\",\n    \"\\uFC13\", \"\\u062B\\u0649\",\n    \"\\uFC14\", \"\\u062B\\u064A\",\n    \"\\uFC15\", \"\\u062C\\u062D\",\n    \"\\uFC16\", \"\\u062C\\u0645\",\n    \"\\uFC17\", \"\\u062D\\u062C\",\n    \"\\uFC18\", \"\\u062D\\u0645\",\n    \"\\uFC19\", \"\\u062E\\u062C\",\n    \"\\uFC1A\", \"\\u062E\\u062D\",\n    \"\\uFC1B\", \"\\u062E\\u0645\",\n    \"\\uFC1C\", \"\\u0633\\u062C\",\n    \"\\uFC1D\", \"\\u0633\\u062D\",\n    \"\\uFC1E\", \"\\u0633\\u062E\",\n    \"\\uFC1F\", \"\\u0633\\u0645\",\n    \"\\uFC20\", \"\\u0635\\u062D\",\n    \"\\uFC21\", \"\\u0635\\u0645\",\n    \"\\uFC22\", \"\\u0636\\u062C\",\n    \"\\uFC23\", \"\\u0636\\u062D\",\n    \"\\uFC24\", \"\\u0636\\u062E\",\n    \"\\uFC25\", \"\\u0636\\u0645\",\n    \"\\uFC26\", \"\\u0637\\u062D\",\n    \"\\uFC27\", \"\\u0637\\u0645\",\n    \"\\uFC28\", \"\\u0638\\u0645\",\n    \"\\uFC29\", \"\\u0639\\u062C\",\n    \"\\uFC2A\", \"\\u0639\\u0645\",\n    \"\\uFC2B\", \"\\u063A\\u062C\",\n    \"\\uFC2C\", \"\\u063A\\u0645\",\n    \"\\uFC2D\", \"\\u0641\\u062C\",\n    \"\\uFC2E\", \"\\u0641\\u062D\",\n    \"\\uFC2F\", \"\\u0641\\u062E\",\n    \"\\uFC30\", \"\\u0641\\u0645\",\n    \"\\uFC31\", \"\\u0641\\u0649\",\n    \"\\uFC32\", \"\\u0641\\u064A\",\n    \"\\uFC33\", \"\\u0642\\u062D\",\n    \"\\uFC34\", \"\\u0642\\u0645\",\n    \"\\uFC35\", \"\\u0642\\u0649\",\n    \"\\uFC36\", \"\\u0642\\u064A\",\n    \"\\uFC37\", \"\\u0643\\u0627\",\n    \"\\uFC38\", \"\\u0643\\u062C\",\n    \"\\uFC39\", \"\\u0643\\u062D\",\n    \"\\uFC3A\", \"\\u0643\\u062E\",\n    \"\\uFC3B\", \"\\u0643\\u0644\",\n    \"\\uFC3C\", \"\\u0643\\u0645\",\n    \"\\uFC3D\", \"\\u0643\\u0649\",\n    \"\\uFC3E\", \"\\u0643\\u064A\",\n    \"\\uFC3F\", \"\\u0644\\u062C\",\n    \"\\uFC40\", \"\\u0644\\u062D\",\n    \"\\uFC41\", \"\\u0644\\u062E\",\n    \"\\uFC42\", \"\\u0644\\u0645\",\n    \"\\uFC43\", \"\\u0644\\u0649\",\n    \"\\uFC44\", \"\\u0644\\u064A\",\n    \"\\uFC45\", \"\\u0645\\u062C\",\n    \"\\uFC46\", \"\\u0645\\u062D\",\n    \"\\uFC47\", \"\\u0645\\u062E\",\n    \"\\uFC48\", \"\\u0645\\u0645\",\n    \"\\uFC49\", \"\\u0645\\u0649\",\n    \"\\uFC4A\", \"\\u0645\\u064A\",\n    \"\\uFC4B\", \"\\u0646\\u062C\",\n    \"\\uFC4C\", \"\\u0646\\u062D\",\n    \"\\uFC4D\", \"\\u0646\\u062E\",\n    \"\\uFC4E\", \"\\u0646\\u0645\",\n    \"\\uFC4F\", \"\\u0646\\u0649\",\n    \"\\uFC50\", \"\\u0646\\u064A\",\n    \"\\uFC51\", \"\\u0647\\u062C\",\n    \"\\uFC52\", \"\\u0647\\u0645\",\n    \"\\uFC53\", \"\\u0647\\u0649\",\n    \"\\uFC54\", \"\\u0647\\u064A\",\n    \"\\uFC55\", \"\\u064A\\u062C\",\n    \"\\uFC56\", \"\\u064A\\u062D\",\n    \"\\uFC57\", \"\\u064A\\u062E\",\n    \"\\uFC58\", \"\\u064A\\u0645\",\n    \"\\uFC59\", \"\\u064A\\u0649\",\n    \"\\uFC5A\", \"\\u064A\\u064A\",\n    \"\\uFC5B\", \"\\u0630\\u0670\",\n    \"\\uFC5C\", \"\\u0631\\u0670\",\n    \"\\uFC5D\", \"\\u0649\\u0670\",\n    \"\\uFC5E\", \"\\u0020\\u064C\\u0651\",\n    \"\\uFC5F\", \"\\u0020\\u064D\\u0651\",\n    \"\\uFC60\", \"\\u0020\\u064E\\u0651\",\n    \"\\uFC61\", \"\\u0020\\u064F\\u0651\",\n    \"\\uFC62\", \"\\u0020\\u0650\\u0651\",\n    \"\\uFC63\", \"\\u0020\\u0651\\u0670\",\n    \"\\uFC64\", \"\\u0626\\u0631\",\n    \"\\uFC65\", \"\\u0626\\u0632\",\n    \"\\uFC66\", \"\\u0626\\u0645\",\n    \"\\uFC67\", \"\\u0626\\u0646\",\n    \"\\uFC68\", \"\\u0626\\u0649\",\n    \"\\uFC69\", \"\\u0626\\u064A\",\n    \"\\uFC6A\", \"\\u0628\\u0631\",\n    \"\\uFC6B\", \"\\u0628\\u0632\",\n    \"\\uFC6C\", \"\\u0628\\u0645\",\n    \"\\uFC6D\", \"\\u0628\\u0646\",\n    \"\\uFC6E\", \"\\u0628\\u0649\",\n    \"\\uFC6F\", \"\\u0628\\u064A\",\n    \"\\uFC70\", \"\\u062A\\u0631\",\n    \"\\uFC71\", \"\\u062A\\u0632\",\n    \"\\uFC72\", \"\\u062A\\u0645\",\n    \"\\uFC73\", \"\\u062A\\u0646\",\n    \"\\uFC74\", \"\\u062A\\u0649\",\n    \"\\uFC75\", \"\\u062A\\u064A\",\n    \"\\uFC76\", \"\\u062B\\u0631\",\n    \"\\uFC77\", \"\\u062B\\u0632\",\n    \"\\uFC78\", \"\\u062B\\u0645\",\n    \"\\uFC79\", \"\\u062B\\u0646\",\n    \"\\uFC7A\", \"\\u062B\\u0649\",\n    \"\\uFC7B\", \"\\u062B\\u064A\",\n    \"\\uFC7C\", \"\\u0641\\u0649\",\n    \"\\uFC7D\", \"\\u0641\\u064A\",\n    \"\\uFC7E\", \"\\u0642\\u0649\",\n    \"\\uFC7F\", \"\\u0642\\u064A\",\n    \"\\uFC80\", \"\\u0643\\u0627\",\n    \"\\uFC81\", \"\\u0643\\u0644\",\n    \"\\uFC82\", \"\\u0643\\u0645\",\n    \"\\uFC83\", \"\\u0643\\u0649\",\n    \"\\uFC84\", \"\\u0643\\u064A\",\n    \"\\uFC85\", \"\\u0644\\u0645\",\n    \"\\uFC86\", \"\\u0644\\u0649\",\n    \"\\uFC87\", \"\\u0644\\u064A\",\n    \"\\uFC88\", \"\\u0645\\u0627\",\n    \"\\uFC89\", \"\\u0645\\u0645\",\n    \"\\uFC8A\", \"\\u0646\\u0631\",\n    \"\\uFC8B\", \"\\u0646\\u0632\",\n    \"\\uFC8C\", \"\\u0646\\u0645\",\n    \"\\uFC8D\", \"\\u0646\\u0646\",\n    \"\\uFC8E\", \"\\u0646\\u0649\",\n    \"\\uFC8F\", \"\\u0646\\u064A\",\n    \"\\uFC90\", \"\\u0649\\u0670\",\n    \"\\uFC91\", \"\\u064A\\u0631\",\n    \"\\uFC92\", \"\\u064A\\u0632\",\n    \"\\uFC93\", \"\\u064A\\u0645\",\n    \"\\uFC94\", \"\\u064A\\u0646\",\n    \"\\uFC95\", \"\\u064A\\u0649\",\n    \"\\uFC96\", \"\\u064A\\u064A\",\n    \"\\uFC97\", \"\\u0626\\u062C\",\n    \"\\uFC98\", \"\\u0626\\u062D\",\n    \"\\uFC99\", \"\\u0626\\u062E\",\n    \"\\uFC9A\", \"\\u0626\\u0645\",\n    \"\\uFC9B\", \"\\u0626\\u0647\",\n    \"\\uFC9C\", \"\\u0628\\u062C\",\n    \"\\uFC9D\", \"\\u0628\\u062D\",\n    \"\\uFC9E\", \"\\u0628\\u062E\",\n    \"\\uFC9F\", \"\\u0628\\u0645\",\n    \"\\uFCA0\", \"\\u0628\\u0647\",\n    \"\\uFCA1\", \"\\u062A\\u062C\",\n    \"\\uFCA2\", \"\\u062A\\u062D\",\n    \"\\uFCA3\", \"\\u062A\\u062E\",\n    \"\\uFCA4\", \"\\u062A\\u0645\",\n    \"\\uFCA5\", \"\\u062A\\u0647\",\n    \"\\uFCA6\", \"\\u062B\\u0645\",\n    \"\\uFCA7\", \"\\u062C\\u062D\",\n    \"\\uFCA8\", \"\\u062C\\u0645\",\n    \"\\uFCA9\", \"\\u062D\\u062C\",\n    \"\\uFCAA\", \"\\u062D\\u0645\",\n    \"\\uFCAB\", \"\\u062E\\u062C\",\n    \"\\uFCAC\", \"\\u062E\\u0645\",\n    \"\\uFCAD\", \"\\u0633\\u062C\",\n    \"\\uFCAE\", \"\\u0633\\u062D\",\n    \"\\uFCAF\", \"\\u0633\\u062E\",\n    \"\\uFCB0\", \"\\u0633\\u0645\",\n    \"\\uFCB1\", \"\\u0635\\u062D\",\n    \"\\uFCB2\", \"\\u0635\\u062E\",\n    \"\\uFCB3\", \"\\u0635\\u0645\",\n    \"\\uFCB4\", \"\\u0636\\u062C\",\n    \"\\uFCB5\", \"\\u0636\\u062D\",\n    \"\\uFCB6\", \"\\u0636\\u062E\",\n    \"\\uFCB7\", \"\\u0636\\u0645\",\n    \"\\uFCB8\", \"\\u0637\\u062D\",\n    \"\\uFCB9\", \"\\u0638\\u0645\",\n    \"\\uFCBA\", \"\\u0639\\u062C\",\n    \"\\uFCBB\", \"\\u0639\\u0645\",\n    \"\\uFCBC\", \"\\u063A\\u062C\",\n    \"\\uFCBD\", \"\\u063A\\u0645\",\n    \"\\uFCBE\", \"\\u0641\\u062C\",\n    \"\\uFCBF\", \"\\u0641\\u062D\",\n    \"\\uFCC0\", \"\\u0641\\u062E\",\n    \"\\uFCC1\", \"\\u0641\\u0645\",\n    \"\\uFCC2\", \"\\u0642\\u062D\",\n    \"\\uFCC3\", \"\\u0642\\u0645\",\n    \"\\uFCC4\", \"\\u0643\\u062C\",\n    \"\\uFCC5\", \"\\u0643\\u062D\",\n    \"\\uFCC6\", \"\\u0643\\u062E\",\n    \"\\uFCC7\", \"\\u0643\\u0644\",\n    \"\\uFCC8\", \"\\u0643\\u0645\",\n    \"\\uFCC9\", \"\\u0644\\u062C\",\n    \"\\uFCCA\", \"\\u0644\\u062D\",\n    \"\\uFCCB\", \"\\u0644\\u062E\",\n    \"\\uFCCC\", \"\\u0644\\u0645\",\n    \"\\uFCCD\", \"\\u0644\\u0647\",\n    \"\\uFCCE\", \"\\u0645\\u062C\",\n    \"\\uFCCF\", \"\\u0645\\u062D\",\n    \"\\uFCD0\", \"\\u0645\\u062E\",\n    \"\\uFCD1\", \"\\u0645\\u0645\",\n    \"\\uFCD2\", \"\\u0646\\u062C\",\n    \"\\uFCD3\", \"\\u0646\\u062D\",\n    \"\\uFCD4\", \"\\u0646\\u062E\",\n    \"\\uFCD5\", \"\\u0646\\u0645\",\n    \"\\uFCD6\", \"\\u0646\\u0647\",\n    \"\\uFCD7\", \"\\u0647\\u062C\",\n    \"\\uFCD8\", \"\\u0647\\u0645\",\n    \"\\uFCD9\", \"\\u0647\\u0670\",\n    \"\\uFCDA\", \"\\u064A\\u062C\",\n    \"\\uFCDB\", \"\\u064A\\u062D\",\n    \"\\uFCDC\", \"\\u064A\\u062E\",\n    \"\\uFCDD\", \"\\u064A\\u0645\",\n    \"\\uFCDE\", \"\\u064A\\u0647\",\n    \"\\uFCDF\", \"\\u0626\\u0645\",\n    \"\\uFCE0\", \"\\u0626\\u0647\",\n    \"\\uFCE1\", \"\\u0628\\u0645\",\n    \"\\uFCE2\", \"\\u0628\\u0647\",\n    \"\\uFCE3\", \"\\u062A\\u0645\",\n    \"\\uFCE4\", \"\\u062A\\u0647\",\n    \"\\uFCE5\", \"\\u062B\\u0645\",\n    \"\\uFCE6\", \"\\u062B\\u0647\",\n    \"\\uFCE7\", \"\\u0633\\u0645\",\n    \"\\uFCE8\", \"\\u0633\\u0647\",\n    \"\\uFCE9\", \"\\u0634\\u0645\",\n    \"\\uFCEA\", \"\\u0634\\u0647\",\n    \"\\uFCEB\", \"\\u0643\\u0644\",\n    \"\\uFCEC\", \"\\u0643\\u0645\",\n    \"\\uFCED\", \"\\u0644\\u0645\",\n    \"\\uFCEE\", \"\\u0646\\u0645\",\n    \"\\uFCEF\", \"\\u0646\\u0647\",\n    \"\\uFCF0\", \"\\u064A\\u0645\",\n    \"\\uFCF1\", \"\\u064A\\u0647\",\n    \"\\uFCF2\", \"\\u0640\\u064E\\u0651\",\n    \"\\uFCF3\", \"\\u0640\\u064F\\u0651\",\n    \"\\uFCF4\", \"\\u0640\\u0650\\u0651\",\n    \"\\uFCF5\", \"\\u0637\\u0649\",\n    \"\\uFCF6\", \"\\u0637\\u064A\",\n    \"\\uFCF7\", \"\\u0639\\u0649\",\n    \"\\uFCF8\", \"\\u0639\\u064A\",\n    \"\\uFCF9\", \"\\u063A\\u0649\",\n    \"\\uFCFA\", \"\\u063A\\u064A\",\n    \"\\uFCFB\", \"\\u0633\\u0649\",\n    \"\\uFCFC\", \"\\u0633\\u064A\",\n    \"\\uFCFD\", \"\\u0634\\u0649\",\n    \"\\uFCFE\", \"\\u0634\\u064A\",\n    \"\\uFCFF\", \"\\u062D\\u0649\",\n    \"\\uFD00\", \"\\u062D\\u064A\",\n    \"\\uFD01\", \"\\u062C\\u0649\",\n    \"\\uFD02\", \"\\u062C\\u064A\",\n    \"\\uFD03\", \"\\u062E\\u0649\",\n    \"\\uFD04\", \"\\u062E\\u064A\",\n    \"\\uFD05\", \"\\u0635\\u0649\",\n    \"\\uFD06\", \"\\u0635\\u064A\",\n    \"\\uFD07\", \"\\u0636\\u0649\",\n    \"\\uFD08\", \"\\u0636\\u064A\",\n    \"\\uFD09\", \"\\u0634\\u062C\",\n    \"\\uFD0A\", \"\\u0634\\u062D\",\n    \"\\uFD0B\", \"\\u0634\\u062E\",\n    \"\\uFD0C\", \"\\u0634\\u0645\",\n    \"\\uFD0D\", \"\\u0634\\u0631\",\n    \"\\uFD0E\", \"\\u0633\\u0631\",\n    \"\\uFD0F\", \"\\u0635\\u0631\",\n    \"\\uFD10\", \"\\u0636\\u0631\",\n    \"\\uFD11\", \"\\u0637\\u0649\",\n    \"\\uFD12\", \"\\u0637\\u064A\",\n    \"\\uFD13\", \"\\u0639\\u0649\",\n    \"\\uFD14\", \"\\u0639\\u064A\",\n    \"\\uFD15\", \"\\u063A\\u0649\",\n    \"\\uFD16\", \"\\u063A\\u064A\",\n    \"\\uFD17\", \"\\u0633\\u0649\",\n    \"\\uFD18\", \"\\u0633\\u064A\",\n    \"\\uFD19\", \"\\u0634\\u0649\",\n    \"\\uFD1A\", \"\\u0634\\u064A\",\n    \"\\uFD1B\", \"\\u062D\\u0649\",\n    \"\\uFD1C\", \"\\u062D\\u064A\",\n    \"\\uFD1D\", \"\\u062C\\u0649\",\n    \"\\uFD1E\", \"\\u062C\\u064A\",\n    \"\\uFD1F\", \"\\u062E\\u0649\",\n    \"\\uFD20\", \"\\u062E\\u064A\",\n    \"\\uFD21\", \"\\u0635\\u0649\",\n    \"\\uFD22\", \"\\u0635\\u064A\",\n    \"\\uFD23\", \"\\u0636\\u0649\",\n    \"\\uFD24\", \"\\u0636\\u064A\",\n    \"\\uFD25\", \"\\u0634\\u062C\",\n    \"\\uFD26\", \"\\u0634\\u062D\",\n    \"\\uFD27\", \"\\u0634\\u062E\",\n    \"\\uFD28\", \"\\u0634\\u0645\",\n    \"\\uFD29\", \"\\u0634\\u0631\",\n    \"\\uFD2A\", \"\\u0633\\u0631\",\n    \"\\uFD2B\", \"\\u0635\\u0631\",\n    \"\\uFD2C\", \"\\u0636\\u0631\",\n    \"\\uFD2D\", \"\\u0634\\u062C\",\n    \"\\uFD2E\", \"\\u0634\\u062D\",\n    \"\\uFD2F\", \"\\u0634\\u062E\",\n    \"\\uFD30\", \"\\u0634\\u0645\",\n    \"\\uFD31\", \"\\u0633\\u0647\",\n    \"\\uFD32\", \"\\u0634\\u0647\",\n    \"\\uFD33\", \"\\u0637\\u0645\",\n    \"\\uFD34\", \"\\u0633\\u062C\",\n    \"\\uFD35\", \"\\u0633\\u062D\",\n    \"\\uFD36\", \"\\u0633\\u062E\",\n    \"\\uFD37\", \"\\u0634\\u062C\",\n    \"\\uFD38\", \"\\u0634\\u062D\",\n    \"\\uFD39\", \"\\u0634\\u062E\",\n    \"\\uFD3A\", \"\\u0637\\u0645\",\n    \"\\uFD3B\", \"\\u0638\\u0645\",\n    \"\\uFD3C\", \"\\u0627\\u064B\",\n    \"\\uFD3D\", \"\\u0627\\u064B\",\n    \"\\uFD50\", \"\\u062A\\u062C\\u0645\",\n    \"\\uFD51\", \"\\u062A\\u062D\\u062C\",\n    \"\\uFD52\", \"\\u062A\\u062D\\u062C\",\n    \"\\uFD53\", \"\\u062A\\u062D\\u0645\",\n    \"\\uFD54\", \"\\u062A\\u062E\\u0645\",\n    \"\\uFD55\", \"\\u062A\\u0645\\u062C\",\n    \"\\uFD56\", \"\\u062A\\u0645\\u062D\",\n    \"\\uFD57\", \"\\u062A\\u0645\\u062E\",\n    \"\\uFD58\", \"\\u062C\\u0645\\u062D\",\n    \"\\uFD59\", \"\\u062C\\u0645\\u062D\",\n    \"\\uFD5A\", \"\\u062D\\u0645\\u064A\",\n    \"\\uFD5B\", \"\\u062D\\u0645\\u0649\",\n    \"\\uFD5C\", \"\\u0633\\u062D\\u062C\",\n    \"\\uFD5D\", \"\\u0633\\u062C\\u062D\",\n    \"\\uFD5E\", \"\\u0633\\u062C\\u0649\",\n    \"\\uFD5F\", \"\\u0633\\u0645\\u062D\",\n    \"\\uFD60\", \"\\u0633\\u0645\\u062D\",\n    \"\\uFD61\", \"\\u0633\\u0645\\u062C\",\n    \"\\uFD62\", \"\\u0633\\u0645\\u0645\",\n    \"\\uFD63\", \"\\u0633\\u0645\\u0645\",\n    \"\\uFD64\", \"\\u0635\\u062D\\u062D\",\n    \"\\uFD65\", \"\\u0635\\u062D\\u062D\",\n    \"\\uFD66\", \"\\u0635\\u0645\\u0645\",\n    \"\\uFD67\", \"\\u0634\\u062D\\u0645\",\n    \"\\uFD68\", \"\\u0634\\u062D\\u0645\",\n    \"\\uFD69\", \"\\u0634\\u062C\\u064A\",\n    \"\\uFD6A\", \"\\u0634\\u0645\\u062E\",\n    \"\\uFD6B\", \"\\u0634\\u0645\\u062E\",\n    \"\\uFD6C\", \"\\u0634\\u0645\\u0645\",\n    \"\\uFD6D\", \"\\u0634\\u0645\\u0645\",\n    \"\\uFD6E\", \"\\u0636\\u062D\\u0649\",\n    \"\\uFD6F\", \"\\u0636\\u062E\\u0645\",\n    \"\\uFD70\", \"\\u0636\\u062E\\u0645\",\n    \"\\uFD71\", \"\\u0637\\u0645\\u062D\",\n    \"\\uFD72\", \"\\u0637\\u0645\\u062D\",\n    \"\\uFD73\", \"\\u0637\\u0645\\u0645\",\n    \"\\uFD74\", \"\\u0637\\u0645\\u064A\",\n    \"\\uFD75\", \"\\u0639\\u062C\\u0645\",\n    \"\\uFD76\", \"\\u0639\\u0645\\u0645\",\n    \"\\uFD77\", \"\\u0639\\u0645\\u0645\",\n    \"\\uFD78\", \"\\u0639\\u0645\\u0649\",\n    \"\\uFD79\", \"\\u063A\\u0645\\u0645\",\n    \"\\uFD7A\", \"\\u063A\\u0645\\u064A\",\n    \"\\uFD7B\", \"\\u063A\\u0645\\u0649\",\n    \"\\uFD7C\", \"\\u0641\\u062E\\u0645\",\n    \"\\uFD7D\", \"\\u0641\\u062E\\u0645\",\n    \"\\uFD7E\", \"\\u0642\\u0645\\u062D\",\n    \"\\uFD7F\", \"\\u0642\\u0645\\u0645\",\n    \"\\uFD80\", \"\\u0644\\u062D\\u0645\",\n    \"\\uFD81\", \"\\u0644\\u062D\\u064A\",\n    \"\\uFD82\", \"\\u0644\\u062D\\u0649\",\n    \"\\uFD83\", \"\\u0644\\u062C\\u062C\",\n    \"\\uFD84\", \"\\u0644\\u062C\\u062C\",\n    \"\\uFD85\", \"\\u0644\\u062E\\u0645\",\n    \"\\uFD86\", \"\\u0644\\u062E\\u0645\",\n    \"\\uFD87\", \"\\u0644\\u0645\\u062D\",\n    \"\\uFD88\", \"\\u0644\\u0645\\u062D\",\n    \"\\uFD89\", \"\\u0645\\u062D\\u062C\",\n    \"\\uFD8A\", \"\\u0645\\u062D\\u0645\",\n    \"\\uFD8B\", \"\\u0645\\u062D\\u064A\",\n    \"\\uFD8C\", \"\\u0645\\u062C\\u062D\",\n    \"\\uFD8D\", \"\\u0645\\u062C\\u0645\",\n    \"\\uFD8E\", \"\\u0645\\u062E\\u062C\",\n    \"\\uFD8F\", \"\\u0645\\u062E\\u0645\",\n    \"\\uFD92\", \"\\u0645\\u062C\\u062E\",\n    \"\\uFD93\", \"\\u0647\\u0645\\u062C\",\n    \"\\uFD94\", \"\\u0647\\u0645\\u0645\",\n    \"\\uFD95\", \"\\u0646\\u062D\\u0645\",\n    \"\\uFD96\", \"\\u0646\\u062D\\u0649\",\n    \"\\uFD97\", \"\\u0646\\u062C\\u0645\",\n    \"\\uFD98\", \"\\u0646\\u062C\\u0645\",\n    \"\\uFD99\", \"\\u0646\\u062C\\u0649\",\n    \"\\uFD9A\", \"\\u0646\\u0645\\u064A\",\n    \"\\uFD9B\", \"\\u0646\\u0645\\u0649\",\n    \"\\uFD9C\", \"\\u064A\\u0645\\u0645\",\n    \"\\uFD9D\", \"\\u064A\\u0645\\u0645\",\n    \"\\uFD9E\", \"\\u0628\\u062E\\u064A\",\n    \"\\uFD9F\", \"\\u062A\\u062C\\u064A\",\n    \"\\uFDA0\", \"\\u062A\\u062C\\u0649\",\n    \"\\uFDA1\", \"\\u062A\\u062E\\u064A\",\n    \"\\uFDA2\", \"\\u062A\\u062E\\u0649\",\n    \"\\uFDA3\", \"\\u062A\\u0645\\u064A\",\n    \"\\uFDA4\", \"\\u062A\\u0645\\u0649\",\n    \"\\uFDA5\", \"\\u062C\\u0645\\u064A\",\n    \"\\uFDA6\", \"\\u062C\\u062D\\u0649\",\n    \"\\uFDA7\", \"\\u062C\\u0645\\u0649\",\n    \"\\uFDA8\", \"\\u0633\\u062E\\u0649\",\n    \"\\uFDA9\", \"\\u0635\\u062D\\u064A\",\n    \"\\uFDAA\", \"\\u0634\\u062D\\u064A\",\n    \"\\uFDAB\", \"\\u0636\\u062D\\u064A\",\n    \"\\uFDAC\", \"\\u0644\\u062C\\u064A\",\n    \"\\uFDAD\", \"\\u0644\\u0645\\u064A\",\n    \"\\uFDAE\", \"\\u064A\\u062D\\u064A\",\n    \"\\uFDAF\", \"\\u064A\\u062C\\u064A\",\n    \"\\uFDB0\", \"\\u064A\\u0645\\u064A\",\n    \"\\uFDB1\", \"\\u0645\\u0645\\u064A\",\n    \"\\uFDB2\", \"\\u0642\\u0645\\u064A\",\n    \"\\uFDB3\", \"\\u0646\\u062D\\u064A\",\n    \"\\uFDB4\", \"\\u0642\\u0645\\u062D\",\n    \"\\uFDB5\", \"\\u0644\\u062D\\u0645\",\n    \"\\uFDB6\", \"\\u0639\\u0645\\u064A\",\n    \"\\uFDB7\", \"\\u0643\\u0645\\u064A\",\n    \"\\uFDB8\", \"\\u0646\\u062C\\u062D\",\n    \"\\uFDB9\", \"\\u0645\\u062E\\u064A\",\n    \"\\uFDBA\", \"\\u0644\\u062C\\u0645\",\n    \"\\uFDBB\", \"\\u0643\\u0645\\u0645\",\n    \"\\uFDBC\", \"\\u0644\\u062C\\u0645\",\n    \"\\uFDBD\", \"\\u0646\\u062C\\u062D\",\n    \"\\uFDBE\", \"\\u062C\\u062D\\u064A\",\n    \"\\uFDBF\", \"\\u062D\\u062C\\u064A\",\n    \"\\uFDC0\", \"\\u0645\\u062C\\u064A\",\n    \"\\uFDC1\", \"\\u0641\\u0645\\u064A\",\n    \"\\uFDC2\", \"\\u0628\\u062D\\u064A\",\n    \"\\uFDC3\", \"\\u0643\\u0645\\u0645\",\n    \"\\uFDC4\", \"\\u0639\\u062C\\u0645\",\n    \"\\uFDC5\", \"\\u0635\\u0645\\u0645\",\n    \"\\uFDC6\", \"\\u0633\\u062E\\u064A\",\n    \"\\uFDC7\", \"\\u0646\\u062C\\u064A\",\n    \"\\uFE49\", \"\\u203E\",\n    \"\\uFE4A\", \"\\u203E\",\n    \"\\uFE4B\", \"\\u203E\",\n    \"\\uFE4C\", \"\\u203E\",\n    \"\\uFE4D\", \"\\u005F\",\n    \"\\uFE4E\", \"\\u005F\",\n    \"\\uFE4F\", \"\\u005F\",\n    \"\\uFE80\", \"\\u0621\",\n    \"\\uFE81\", \"\\u0622\",\n    \"\\uFE82\", \"\\u0622\",\n    \"\\uFE83\", \"\\u0623\",\n    \"\\uFE84\", \"\\u0623\",\n    \"\\uFE85\", \"\\u0624\",\n    \"\\uFE86\", \"\\u0624\",\n    \"\\uFE87\", \"\\u0625\",\n    \"\\uFE88\", \"\\u0625\",\n    \"\\uFE89\", \"\\u0626\",\n    \"\\uFE8A\", \"\\u0626\",\n    \"\\uFE8B\", \"\\u0626\",\n    \"\\uFE8C\", \"\\u0626\",\n    \"\\uFE8D\", \"\\u0627\",\n    \"\\uFE8E\", \"\\u0627\",\n    \"\\uFE8F\", \"\\u0628\",\n    \"\\uFE90\", \"\\u0628\",\n    \"\\uFE91\", \"\\u0628\",\n    \"\\uFE92\", \"\\u0628\",\n    \"\\uFE93\", \"\\u0629\",\n    \"\\uFE94\", \"\\u0629\",\n    \"\\uFE95\", \"\\u062A\",\n    \"\\uFE96\", \"\\u062A\",\n    \"\\uFE97\", \"\\u062A\",\n    \"\\uFE98\", \"\\u062A\",\n    \"\\uFE99\", \"\\u062B\",\n    \"\\uFE9A\", \"\\u062B\",\n    \"\\uFE9B\", \"\\u062B\",\n    \"\\uFE9C\", \"\\u062B\",\n    \"\\uFE9D\", \"\\u062C\",\n    \"\\uFE9E\", \"\\u062C\",\n    \"\\uFE9F\", \"\\u062C\",\n    \"\\uFEA0\", \"\\u062C\",\n    \"\\uFEA1\", \"\\u062D\",\n    \"\\uFEA2\", \"\\u062D\",\n    \"\\uFEA3\", \"\\u062D\",\n    \"\\uFEA4\", \"\\u062D\",\n    \"\\uFEA5\", \"\\u062E\",\n    \"\\uFEA6\", \"\\u062E\",\n    \"\\uFEA7\", \"\\u062E\",\n    \"\\uFEA8\", \"\\u062E\",\n    \"\\uFEA9\", \"\\u062F\",\n    \"\\uFEAA\", \"\\u062F\",\n    \"\\uFEAB\", \"\\u0630\",\n    \"\\uFEAC\", \"\\u0630\",\n    \"\\uFEAD\", \"\\u0631\",\n    \"\\uFEAE\", \"\\u0631\",\n    \"\\uFEAF\", \"\\u0632\",\n    \"\\uFEB0\", \"\\u0632\",\n    \"\\uFEB1\", \"\\u0633\",\n    \"\\uFEB2\", \"\\u0633\",\n    \"\\uFEB3\", \"\\u0633\",\n    \"\\uFEB4\", \"\\u0633\",\n    \"\\uFEB5\", \"\\u0634\",\n    \"\\uFEB6\", \"\\u0634\",\n    \"\\uFEB7\", \"\\u0634\",\n    \"\\uFEB8\", \"\\u0634\",\n    \"\\uFEB9\", \"\\u0635\",\n    \"\\uFEBA\", \"\\u0635\",\n    \"\\uFEBB\", \"\\u0635\",\n    \"\\uFEBC\", \"\\u0635\",\n    \"\\uFEBD\", \"\\u0636\",\n    \"\\uFEBE\", \"\\u0636\",\n    \"\\uFEBF\", \"\\u0636\",\n    \"\\uFEC0\", \"\\u0636\",\n    \"\\uFEC1\", \"\\u0637\",\n    \"\\uFEC2\", \"\\u0637\",\n    \"\\uFEC3\", \"\\u0637\",\n    \"\\uFEC4\", \"\\u0637\",\n    \"\\uFEC5\", \"\\u0638\",\n    \"\\uFEC6\", \"\\u0638\",\n    \"\\uFEC7\", \"\\u0638\",\n    \"\\uFEC8\", \"\\u0638\",\n    \"\\uFEC9\", \"\\u0639\",\n    \"\\uFECA\", \"\\u0639\",\n    \"\\uFECB\", \"\\u0639\",\n    \"\\uFECC\", \"\\u0639\",\n    \"\\uFECD\", \"\\u063A\",\n    \"\\uFECE\", \"\\u063A\",\n    \"\\uFECF\", \"\\u063A\",\n    \"\\uFED0\", \"\\u063A\",\n    \"\\uFED1\", \"\\u0641\",\n    \"\\uFED2\", \"\\u0641\",\n    \"\\uFED3\", \"\\u0641\",\n    \"\\uFED4\", \"\\u0641\",\n    \"\\uFED5\", \"\\u0642\",\n    \"\\uFED6\", \"\\u0642\",\n    \"\\uFED7\", \"\\u0642\",\n    \"\\uFED8\", \"\\u0642\",\n    \"\\uFED9\", \"\\u0643\",\n    \"\\uFEDA\", \"\\u0643\",\n    \"\\uFEDB\", \"\\u0643\",\n    \"\\uFEDC\", \"\\u0643\",\n    \"\\uFEDD\", \"\\u0644\",\n    \"\\uFEDE\", \"\\u0644\",\n    \"\\uFEDF\", \"\\u0644\",\n    \"\\uFEE0\", \"\\u0644\",\n    \"\\uFEE1\", \"\\u0645\",\n    \"\\uFEE2\", \"\\u0645\",\n    \"\\uFEE3\", \"\\u0645\",\n    \"\\uFEE4\", \"\\u0645\",\n    \"\\uFEE5\", \"\\u0646\",\n    \"\\uFEE6\", \"\\u0646\",\n    \"\\uFEE7\", \"\\u0646\",\n    \"\\uFEE8\", \"\\u0646\",\n    \"\\uFEE9\", \"\\u0647\",\n    \"\\uFEEA\", \"\\u0647\",\n    \"\\uFEEB\", \"\\u0647\",\n    \"\\uFEEC\", \"\\u0647\",\n    \"\\uFEED\", \"\\u0648\",\n    \"\\uFEEE\", \"\\u0648\",\n    \"\\uFEEF\", \"\\u0649\",\n    \"\\uFEF0\", \"\\u0649\",\n    \"\\uFEF1\", \"\\u064A\",\n    \"\\uFEF2\", \"\\u064A\",\n    \"\\uFEF3\", \"\\u064A\",\n    \"\\uFEF4\", \"\\u064A\",\n    \"\\uFEF5\", \"\\u0644\\u0622\",\n    \"\\uFEF6\", \"\\u0644\\u0622\",\n    \"\\uFEF7\", \"\\u0644\\u0623\",\n    \"\\uFEF8\", \"\\u0644\\u0623\",\n    \"\\uFEF9\", \"\\u0644\\u0625\",\n    \"\\uFEFA\", \"\\u0644\\u0625\",\n    \"\\uFEFB\", \"\\u0644\\u0627\",\n    \"\\uFEFC\", \"\\u0644\\u0627\",\n  ];\n});\n\nfunction reverseIfRtl(chars) {\n  const charsLength = chars.length;\n  // Reverse an arabic ligature.\n  if (charsLength <= 1 || !isRTLRangeFor(chars.charCodeAt(0))) {\n    return chars;\n  }\n  const buf = [];\n  for (let ii = charsLength - 1; ii >= 0; ii--) {\n    buf.push(chars[ii]);\n  }\n  return buf.join(\"\");\n}\n\nexport {\n  getNormalizedUnicodes,\n  getUnicodeForGlyph,\n  getUnicodeRangeFor,\n  mapSpecialUnicodeValues,\n  reverseIfRtl,\n};\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n  AnnotationActionEventType,\n  AnnotationBorderStyleType,\n  AnnotationFieldFlag,\n  AnnotationFlag,\n  AnnotationReplyType,\n  AnnotationType,\n  assert,\n  escapeString,\n  getModificationDate,\n  isAscii,\n  isString,\n  OPS,\n  RenderingIntentFlag,\n  shadow,\n  stringToPDFString,\n  stringToUTF16BEString,\n  unreachable,\n  Util,\n  warn,\n} from \"../shared/util.js\";\nimport { collectActions, getInheritableProperty } from \"./core_utils.js\";\nimport {\n  createDefaultAppearance,\n  parseDefaultAppearance,\n} from \"./default_appearance.js\";\nimport {\n  Dict,\n  isDict,\n  isName,\n  isRef,\n  isStream,\n  Name,\n  RefSet,\n} from \"./primitives.js\";\nimport { bidi } from \"./bidi.js\";\nimport { Catalog } from \"./catalog.js\";\nimport { ColorSpace } from \"./colorspace.js\";\nimport { FileSpec } from \"./file_spec.js\";\nimport { ObjectLoader } from \"./object_loader.js\";\nimport { OperatorList } from \"./operator_list.js\";\nimport { StringStream } from \"./stream.js\";\nimport { writeDict } from \"./writer.js\";\nimport { XFAFactory } from \"./xfa/factory.js\";\n\nclass AnnotationFactory {\n  /**\n   * Create an `Annotation` object of the correct type for the given reference\n   * to an annotation dictionary. This yields a promise that is resolved when\n   * the `Annotation` object is constructed.\n   *\n   * @param {XRef} xref\n   * @param {Object} ref\n   * @param {PDFManager} pdfManager\n   * @param {Object} idFactory\n   * @param {boolean} collectFields\n   * @returns {Promise} A promise that is resolved with an {Annotation}\n   *   instance.\n   */\n  static create(xref, ref, pdfManager, idFactory, collectFields) {\n    return Promise.all([\n      pdfManager.ensureCatalog(\"acroForm\"),\n      collectFields ? this._getPageIndex(xref, ref, pdfManager) : -1,\n    ]).then(([acroForm, pageIndex]) =>\n      pdfManager.ensure(this, \"_create\", [\n        xref,\n        ref,\n        pdfManager,\n        idFactory,\n        acroForm,\n        collectFields,\n        pageIndex,\n      ])\n    );\n  }\n\n  /**\n   * @private\n   */\n  static _create(\n    xref,\n    ref,\n    pdfManager,\n    idFactory,\n    acroForm,\n    collectFields,\n    pageIndex = -1\n  ) {\n    const dict = xref.fetchIfRef(ref);\n    if (!isDict(dict)) {\n      return undefined;\n    }\n\n    const id = isRef(ref) ? ref.toString() : `annot_${idFactory.createObjId()}`;\n\n    // Determine the annotation's subtype.\n    let subtype = dict.get(\"Subtype\");\n    subtype = isName(subtype) ? subtype.name : null;\n\n    // Return the right annotation object based on the subtype and field type.\n    const parameters = {\n      xref,\n      ref,\n      dict,\n      subtype,\n      id,\n      pdfManager,\n      acroForm: acroForm instanceof Dict ? acroForm : Dict.empty,\n      collectFields,\n      pageIndex,\n    };\n\n    switch (subtype) {\n      case \"Link\":\n        return new LinkAnnotation(parameters);\n\n      case \"Text\":\n        return new TextAnnotation(parameters);\n\n      case \"Widget\":\n        let fieldType = getInheritableProperty({ dict, key: \"FT\" });\n        fieldType = isName(fieldType) ? fieldType.name : null;\n\n        switch (fieldType) {\n          case \"Tx\":\n            return new TextWidgetAnnotation(parameters);\n          case \"Btn\":\n            return new ButtonWidgetAnnotation(parameters);\n          case \"Ch\":\n            return new ChoiceWidgetAnnotation(parameters);\n          case \"Sig\":\n            return new SignatureWidgetAnnotation(parameters);\n        }\n        warn(\n          `Unimplemented widget field type \"${fieldType}\", ` +\n            \"falling back to base field type.\"\n        );\n        return new WidgetAnnotation(parameters);\n\n      case \"Popup\":\n        return new PopupAnnotation(parameters);\n\n      case \"FreeText\":\n        return new FreeTextAnnotation(parameters);\n\n      case \"Line\":\n        return new LineAnnotation(parameters);\n\n      case \"Square\":\n        return new SquareAnnotation(parameters);\n\n      case \"Circle\":\n        return new CircleAnnotation(parameters);\n\n      case \"PolyLine\":\n        return new PolylineAnnotation(parameters);\n\n      case \"Polygon\":\n        return new PolygonAnnotation(parameters);\n\n      case \"Caret\":\n        return new CaretAnnotation(parameters);\n\n      case \"Ink\":\n        return new InkAnnotation(parameters);\n\n      case \"Highlight\":\n        return new HighlightAnnotation(parameters);\n\n      case \"Underline\":\n        return new UnderlineAnnotation(parameters);\n\n      case \"Squiggly\":\n        return new SquigglyAnnotation(parameters);\n\n      case \"StrikeOut\":\n        return new StrikeOutAnnotation(parameters);\n\n      case \"Stamp\":\n        return new StampAnnotation(parameters);\n\n      case \"FileAttachment\":\n        return new FileAttachmentAnnotation(parameters);\n\n      default:\n        if (!collectFields) {\n          if (!subtype) {\n            warn(\"Annotation is missing the required /Subtype.\");\n          } else {\n            warn(\n              `Unimplemented annotation type \"${subtype}\", ` +\n                \"falling back to base annotation.\"\n            );\n          }\n        }\n        return new Annotation(parameters);\n    }\n  }\n\n  static async _getPageIndex(xref, ref, pdfManager) {\n    try {\n      const annotDict = await xref.fetchIfRefAsync(ref);\n      if (!isDict(annotDict)) {\n        return -1;\n      }\n      const pageRef = annotDict.getRaw(\"P\");\n      if (!isRef(pageRef)) {\n        return -1;\n      }\n      const pageIndex = await pdfManager.ensureCatalog(\"getPageIndex\", [\n        pageRef,\n      ]);\n      return pageIndex;\n    } catch (ex) {\n      warn(`_getPageIndex: \"${ex}\".`);\n      return -1;\n    }\n  }\n}\n\nfunction getRgbColor(color, defaultColor = new Uint8ClampedArray(3)) {\n  if (!Array.isArray(color)) {\n    return defaultColor;\n  }\n\n  const rgbColor = defaultColor || new Uint8ClampedArray(3);\n  switch (color.length) {\n    case 0: // Transparent, which we indicate with a null value\n      return null;\n\n    case 1: // Convert grayscale to RGB\n      ColorSpace.singletons.gray.getRgbItem(color, 0, rgbColor, 0);\n      return rgbColor;\n\n    case 3: // Convert RGB percentages to RGB\n      ColorSpace.singletons.rgb.getRgbItem(color, 0, rgbColor, 0);\n      return rgbColor;\n\n    case 4: // Convert CMYK to RGB\n      ColorSpace.singletons.cmyk.getRgbItem(color, 0, rgbColor, 0);\n      return rgbColor;\n\n    default:\n      return defaultColor;\n  }\n}\n\nfunction getQuadPoints(dict, rect) {\n  if (!dict.has(\"QuadPoints\")) {\n    return null;\n  }\n\n  // The region is described as a number of quadrilaterals.\n  // Each quadrilateral must consist of eight coordinates.\n  const quadPoints = dict.getArray(\"QuadPoints\");\n  if (\n    !Array.isArray(quadPoints) ||\n    quadPoints.length === 0 ||\n    quadPoints.length % 8 > 0\n  ) {\n    return null;\n  }\n\n  const quadPointsLists = [];\n  for (let i = 0, ii = quadPoints.length / 8; i < ii; i++) {\n    // Each series of eight numbers represents the coordinates for one\n    // quadrilateral in the order [x1, y1, x2, y2, x3, y3, x4, y4].\n    // Convert this to an array of objects with x and y coordinates.\n    quadPointsLists.push([]);\n    for (let j = i * 8, jj = i * 8 + 8; j < jj; j += 2) {\n      const x = quadPoints[j];\n      const y = quadPoints[j + 1];\n\n      // The quadpoints should be ignored if any coordinate in the array\n      // lies outside the region specified by the rectangle. The rectangle\n      // can be `null` for markup annotations since their rectangle may be\n      // incorrect (fixes bug 1538111).\n      if (\n        rect !== null &&\n        (x < rect[0] || x > rect[2] || y < rect[1] || y > rect[3])\n      ) {\n        return null;\n      }\n      quadPointsLists[i].push({ x, y });\n    }\n  }\n\n  // The PDF specification states in section 12.5.6.10 (figure 64) that the\n  // order of the quadpoints should be bottom left, bottom right, top right\n  // and top left. However, in practice PDF files use a different order,\n  // namely bottom left, bottom right, top left and top right (this is also\n  // mentioned on https://github.com/highkite/pdfAnnotate#QuadPoints), so\n  // this is the actual order we should work with. However, the situation is\n  // even worse since Adobe's own applications and other applications violate\n  // the specification and create annotations with other orders, namely top\n  // left, top right, bottom left and bottom right or even top left, top right,\n  // bottom right and bottom left. To avoid inconsistency and broken rendering,\n  // we normalize all lists to put the quadpoints in the same standard order\n  // (see https://stackoverflow.com/a/10729881).\n  return quadPointsLists.map(quadPointsList => {\n    const [minX, maxX, minY, maxY] = quadPointsList.reduce(\n      ([mX, MX, mY, MY], quadPoint) => [\n        Math.min(mX, quadPoint.x),\n        Math.max(MX, quadPoint.x),\n        Math.min(mY, quadPoint.y),\n        Math.max(MY, quadPoint.y),\n      ],\n      [Number.MAX_VALUE, Number.MIN_VALUE, Number.MAX_VALUE, Number.MIN_VALUE]\n    );\n    return [\n      { x: minX, y: maxY },\n      { x: maxX, y: maxY },\n      { x: minX, y: minY },\n      { x: maxX, y: minY },\n    ];\n  });\n}\n\nfunction getTransformMatrix(rect, bbox, matrix) {\n  // 12.5.5: Algorithm: Appearance streams\n  const [minX, minY, maxX, maxY] = Util.getAxialAlignedBoundingBox(\n    bbox,\n    matrix\n  );\n  if (minX === maxX || minY === maxY) {\n    // From real-life file, bbox was [0, 0, 0, 0]. In this case,\n    // just apply the transform for rect\n    return [1, 0, 0, 1, rect[0], rect[1]];\n  }\n\n  const xRatio = (rect[2] - rect[0]) / (maxX - minX);\n  const yRatio = (rect[3] - rect[1]) / (maxY - minY);\n  return [\n    xRatio,\n    0,\n    0,\n    yRatio,\n    rect[0] - minX * xRatio,\n    rect[1] - minY * yRatio,\n  ];\n}\n\nclass Annotation {\n  constructor(params) {\n    const dict = params.dict;\n\n    this.setTitle(dict.get(\"T\"));\n    this.setContents(dict.get(\"Contents\"));\n    this.setModificationDate(dict.get(\"M\"));\n    this.setFlags(dict.get(\"F\"));\n    this.setRectangle(dict.getArray(\"Rect\"));\n    this.setColor(dict.getArray(\"C\"));\n    this.setBorderStyle(dict);\n    this.setAppearance(dict);\n    this.setBorderAndBackgroundColors(dict.get(\"MK\"));\n\n    this._streams = [];\n    if (this.appearance) {\n      this._streams.push(this.appearance);\n    }\n\n    // Expose public properties using a data object.\n    this.data = {\n      annotationFlags: this.flags,\n      borderStyle: this.borderStyle,\n      color: this.color,\n      backgroundColor: this.backgroundColor,\n      borderColor: this.borderColor,\n      contentsObj: this._contents,\n      hasAppearance: !!this.appearance,\n      id: params.id,\n      modificationDate: this.modificationDate,\n      rect: this.rectangle,\n      subtype: params.subtype,\n      hasOwnCanvas: false,\n    };\n\n    if (params.collectFields) {\n      // Fields can act as container for other fields and have\n      // some actions even if no Annotation inherit from them.\n      // Those fields can be referenced by CO (calculation order).\n      const kids = dict.get(\"Kids\");\n      if (Array.isArray(kids)) {\n        const kidIds = [];\n        for (const kid of kids) {\n          if (isRef(kid)) {\n            kidIds.push(kid.toString());\n          }\n        }\n        if (kidIds.length !== 0) {\n          this.data.kidIds = kidIds;\n        }\n      }\n\n      this.data.actions = collectActions(\n        params.xref,\n        dict,\n        AnnotationActionEventType\n      );\n      this.data.fieldName = this._constructFieldName(dict);\n      this.data.pageIndex = params.pageIndex;\n    }\n\n    this._fallbackFontDict = null;\n  }\n\n  /**\n   * @private\n   */\n  _hasFlag(flags, flag) {\n    return !!(flags & flag);\n  }\n\n  /**\n   * @private\n   */\n  _isViewable(flags) {\n    return (\n      !this._hasFlag(flags, AnnotationFlag.INVISIBLE) &&\n      !this._hasFlag(flags, AnnotationFlag.NOVIEW)\n    );\n  }\n\n  /**\n   * @private\n   */\n  _isPrintable(flags) {\n    return (\n      this._hasFlag(flags, AnnotationFlag.PRINT) &&\n      !this._hasFlag(flags, AnnotationFlag.INVISIBLE)\n    );\n  }\n\n  /**\n   * Check if the annotation must be displayed by taking into account\n   * the value found in the annotationStorage which may have been set\n   * through JS.\n   *\n   * @public\n   * @memberof Annotation\n   * @param {AnnotationStorage} [annotationStorage] - Storage for annotation\n   */\n  mustBeViewed(annotationStorage) {\n    const storageEntry =\n      annotationStorage && annotationStorage.get(this.data.id);\n    if (storageEntry && storageEntry.hidden !== undefined) {\n      return !storageEntry.hidden;\n    }\n    return this.viewable && !this._hasFlag(this.flags, AnnotationFlag.HIDDEN);\n  }\n\n  /**\n   * Check if the annotation must be printed by taking into account\n   * the value found in the annotationStorage which may have been set\n   * through JS.\n   *\n   * @public\n   * @memberof Annotation\n   * @param {AnnotationStorage} [annotationStorage] - Storage for annotation\n   */\n  mustBePrinted(annotationStorage) {\n    const storageEntry =\n      annotationStorage && annotationStorage.get(this.data.id);\n    if (storageEntry && storageEntry.print !== undefined) {\n      return storageEntry.print;\n    }\n    return this.printable;\n  }\n\n  /**\n   * @type {boolean}\n   */\n  get viewable() {\n    if (this.data.quadPoints === null) {\n      return false;\n    }\n    if (this.flags === 0) {\n      return true;\n    }\n    return this._isViewable(this.flags);\n  }\n\n  /**\n   * @type {boolean}\n   */\n  get printable() {\n    if (this.data.quadPoints === null) {\n      return false;\n    }\n    if (this.flags === 0) {\n      return false;\n    }\n    return this._isPrintable(this.flags);\n  }\n\n  /**\n   * @private\n   */\n  _parseStringHelper(data) {\n    const str = typeof data === \"string\" ? stringToPDFString(data) : \"\";\n    const dir = str && bidi(str).dir === \"rtl\" ? \"rtl\" : \"ltr\";\n\n    return { str, dir };\n  }\n\n  /**\n   * Set the title.\n   *\n   * @param {string} title - The title of the annotation, used e.g. with\n   *   PopupAnnotations.\n   */\n  setTitle(title) {\n    this._title = this._parseStringHelper(title);\n  }\n\n  /**\n   * Set the contents.\n   *\n   * @param {string} contents - Text to display for the annotation or, if the\n   *                            type of annotation does not display text, a\n   *                            description of the annotation's contents\n   */\n  setContents(contents) {\n    this._contents = this._parseStringHelper(contents);\n  }\n\n  /**\n   * Set the modification date.\n   *\n   * @public\n   * @memberof Annotation\n   * @param {string} modificationDate - PDF date string that indicates when the\n   *                                    annotation was last modified\n   */\n  setModificationDate(modificationDate) {\n    this.modificationDate = isString(modificationDate)\n      ? modificationDate\n      : null;\n  }\n\n  /**\n   * Set the flags.\n   *\n   * @public\n   * @memberof Annotation\n   * @param {number} flags - Unsigned 32-bit integer specifying annotation\n   *                         characteristics\n   * @see {@link shared/util.js}\n   */\n  setFlags(flags) {\n    this.flags = Number.isInteger(flags) && flags > 0 ? flags : 0;\n  }\n\n  /**\n   * Check if a provided flag is set.\n   *\n   * @public\n   * @memberof Annotation\n   * @param {number} flag - Hexadecimal representation for an annotation\n   *                        characteristic\n   * @returns {boolean}\n   * @see {@link shared/util.js}\n   */\n  hasFlag(flag) {\n    return this._hasFlag(this.flags, flag);\n  }\n\n  /**\n   * Set the rectangle.\n   *\n   * @public\n   * @memberof Annotation\n   * @param {Array} rectangle - The rectangle array with exactly four entries\n   */\n  setRectangle(rectangle) {\n    if (Array.isArray(rectangle) && rectangle.length === 4) {\n      this.rectangle = Util.normalizeRect(rectangle);\n    } else {\n      this.rectangle = [0, 0, 0, 0];\n    }\n  }\n\n  /**\n   * Set the color and take care of color space conversion.\n   * The default value is black, in RGB color space.\n   *\n   * @public\n   * @memberof Annotation\n   * @param {Array} color - The color array containing either 0\n   *                        (transparent), 1 (grayscale), 3 (RGB) or\n   *                        4 (CMYK) elements\n   */\n  setColor(color) {\n    this.color = getRgbColor(color);\n  }\n\n  /**\n   * Set the color for background and border if any.\n   * The default values are transparent.\n   *\n   * @public\n   * @memberof Annotation\n   * @param {Dict} mk - The MK dictionary\n   */\n  setBorderAndBackgroundColors(mk) {\n    if (mk instanceof Dict) {\n      this.borderColor = getRgbColor(mk.getArray(\"BC\"), null);\n      this.backgroundColor = getRgbColor(mk.getArray(\"BG\"), null);\n    } else {\n      this.borderColor = this.backgroundColor = null;\n    }\n  }\n\n  /**\n   * Set the border style (as AnnotationBorderStyle object).\n   *\n   * @public\n   * @memberof Annotation\n   * @param {Dict} borderStyle - The border style dictionary\n   */\n  setBorderStyle(borderStyle) {\n    if (\n      typeof PDFJSDev === \"undefined\" ||\n      PDFJSDev.test(\"!PRODUCTION || TESTING\")\n    ) {\n      assert(this.rectangle, \"setRectangle must have been called previously.\");\n    }\n\n    this.borderStyle = new AnnotationBorderStyle();\n    if (!isDict(borderStyle)) {\n      return;\n    }\n    if (borderStyle.has(\"BS\")) {\n      const dict = borderStyle.get(\"BS\");\n      const dictType = dict.get(\"Type\");\n\n      if (!dictType || isName(dictType, \"Border\")) {\n        this.borderStyle.setWidth(dict.get(\"W\"), this.rectangle);\n        this.borderStyle.setStyle(dict.get(\"S\"));\n        this.borderStyle.setDashArray(dict.getArray(\"D\"));\n      }\n    } else if (borderStyle.has(\"Border\")) {\n      const array = borderStyle.getArray(\"Border\");\n      if (Array.isArray(array) && array.length >= 3) {\n        this.borderStyle.setHorizontalCornerRadius(array[0]);\n        this.borderStyle.setVerticalCornerRadius(array[1]);\n        this.borderStyle.setWidth(array[2], this.rectangle);\n\n        if (array.length === 4) {\n          // Dash array available\n          this.borderStyle.setDashArray(array[3], /* forceStyle = */ true);\n        }\n      }\n    } else {\n      // There are no border entries in the dictionary. According to the\n      // specification, we should draw a solid border of width 1 in that\n      // case, but Adobe Reader did not implement that part of the\n      // specification and instead draws no border at all, so we do the same.\n      // See also https://github.com/mozilla/pdf.js/issues/6179.\n      this.borderStyle.setWidth(0);\n    }\n  }\n\n  /**\n   * Set the (normal) appearance.\n   *\n   * @public\n   * @memberof Annotation\n   * @param {Dict} dict - The annotation's data dictionary\n   */\n  setAppearance(dict) {\n    this.appearance = null;\n\n    const appearanceStates = dict.get(\"AP\");\n    if (!isDict(appearanceStates)) {\n      return;\n    }\n\n    // In case the normal appearance is a stream, then it is used directly.\n    const normalAppearanceState = appearanceStates.get(\"N\");\n    if (isStream(normalAppearanceState)) {\n      this.appearance = normalAppearanceState;\n      return;\n    }\n    if (!isDict(normalAppearanceState)) {\n      return;\n    }\n\n    // In case the normal appearance is a dictionary, the `AS` entry provides\n    // the key of the stream in this dictionary.\n    const as = dict.get(\"AS\");\n    if (!isName(as) || !normalAppearanceState.has(as.name)) {\n      return;\n    }\n    this.appearance = normalAppearanceState.get(as.name);\n  }\n\n  loadResources(keys, appearance) {\n    return appearance.dict.getAsync(\"Resources\").then(resources => {\n      if (!resources) {\n        return undefined;\n      }\n\n      const objectLoader = new ObjectLoader(resources, keys, resources.xref);\n      return objectLoader.load().then(function () {\n        return resources;\n      });\n    });\n  }\n\n  getOperatorList(evaluator, task, intent, renderForms, annotationStorage) {\n    const data = this.data;\n    let appearance = this.appearance;\n    const isUsingOwnCanvas =\n      data.hasOwnCanvas && intent & RenderingIntentFlag.DISPLAY;\n    if (!appearance) {\n      if (!isUsingOwnCanvas) {\n        return Promise.resolve(new OperatorList());\n      }\n      appearance = new StringStream(\"\");\n      appearance.dict = new Dict();\n    }\n\n    const appearanceDict = appearance.dict;\n    const resourcesPromise = this.loadResources(\n      [\"ExtGState\", \"ColorSpace\", \"Pattern\", \"Shading\", \"XObject\", \"Font\"],\n      appearance\n    );\n    const bbox = appearanceDict.getArray(\"BBox\") || [0, 0, 1, 1];\n    const matrix = appearanceDict.getArray(\"Matrix\") || [1, 0, 0, 1, 0, 0];\n    const transform = getTransformMatrix(data.rect, bbox, matrix);\n\n    return resourcesPromise.then(resources => {\n      const opList = new OperatorList();\n      opList.addOp(OPS.beginAnnotation, [\n        data.id,\n        data.rect,\n        transform,\n        matrix,\n        isUsingOwnCanvas,\n      ]);\n\n      return evaluator\n        .getOperatorList({\n          stream: appearance,\n          task,\n          resources,\n          operatorList: opList,\n          fallbackFontDict: this._fallbackFontDict,\n        })\n        .then(() => {\n          opList.addOp(OPS.endAnnotation, []);\n          this.reset();\n          return opList;\n        });\n    });\n  }\n\n  async save(evaluator, task, annotationStorage) {\n    return null;\n  }\n\n  /**\n   * Get field data for usage in JS sandbox.\n   *\n   * Field object is defined here:\n   * https://www.adobe.com/content/dam/acom/en/devnet/acrobat/pdfs/js_api_reference.pdf#page=16\n   *\n   * @public\n   * @memberof Annotation\n   * @returns {Object | null}\n   */\n  getFieldObject() {\n    if (this.data.kidIds) {\n      return {\n        id: this.data.id,\n        actions: this.data.actions,\n        name: this.data.fieldName,\n        strokeColor: this.data.borderColor,\n        fillColor: this.data.backgroundColor,\n        type: \"\",\n        kidIds: this.data.kidIds,\n        page: this.data.pageIndex,\n      };\n    }\n    return null;\n  }\n\n  /**\n   * Reset the annotation.\n   *\n   * This involves resetting the various streams that are either cached on the\n   * annotation instance or created during its construction.\n   *\n   * @public\n   * @memberof Annotation\n   */\n  reset() {\n    if (\n      (typeof PDFJSDev === \"undefined\" ||\n        PDFJSDev.test(\"!PRODUCTION || TESTING\")) &&\n      this.appearance &&\n      !this._streams.includes(this.appearance)\n    ) {\n      unreachable(\"The appearance stream should always be reset.\");\n    }\n\n    for (const stream of this._streams) {\n      stream.reset();\n    }\n  }\n\n  /**\n   * Construct the (fully qualified) field name from the (partial) field\n   * names of the field and its ancestors.\n   *\n   * @private\n   * @memberof Annotation\n   * @param {Dict} dict - Complete widget annotation dictionary\n   * @returns {string}\n   */\n  _constructFieldName(dict) {\n    // Both the `Parent` and `T` fields are optional. While at least one of\n    // them should be provided, bad PDF generators may fail to do so.\n    if (!dict.has(\"T\") && !dict.has(\"Parent\")) {\n      warn(\"Unknown field name, falling back to empty field name.\");\n      return \"\";\n    }\n\n    // If no parent exists, the partial and fully qualified names are equal.\n    if (!dict.has(\"Parent\")) {\n      return stringToPDFString(dict.get(\"T\"));\n    }\n\n    // Form the fully qualified field name by appending the partial name to\n    // the parent's fully qualified name, separated by a period.\n    const fieldName = [];\n    if (dict.has(\"T\")) {\n      fieldName.unshift(stringToPDFString(dict.get(\"T\")));\n    }\n\n    let loopDict = dict;\n    const visited = new RefSet();\n    if (dict.objId) {\n      visited.put(dict.objId);\n    }\n    while (loopDict.has(\"Parent\")) {\n      loopDict = loopDict.get(\"Parent\");\n      if (\n        !(loopDict instanceof Dict) ||\n        (loopDict.objId && visited.has(loopDict.objId))\n      ) {\n        // Even though it is not allowed according to the PDF specification,\n        // bad PDF generators may provide a `Parent` entry that is not a\n        // dictionary, but `null` for example (issue 8143).\n        //\n        // If parent has been already visited, it means that we're\n        // in an infinite loop.\n        break;\n      }\n      if (loopDict.objId) {\n        visited.put(loopDict.objId);\n      }\n\n      if (loopDict.has(\"T\")) {\n        fieldName.unshift(stringToPDFString(loopDict.get(\"T\")));\n      }\n    }\n    return fieldName.join(\".\");\n  }\n}\n\n/**\n * Contains all data regarding an annotation's border style.\n */\nclass AnnotationBorderStyle {\n  constructor() {\n    this.width = 1;\n    this.style = AnnotationBorderStyleType.SOLID;\n    this.dashArray = [3];\n    this.horizontalCornerRadius = 0;\n    this.verticalCornerRadius = 0;\n  }\n\n  /**\n   * Set the width.\n   *\n   * @public\n   * @memberof AnnotationBorderStyle\n   * @param {number} width - The width.\n   * @param {Array} rect - The annotation `Rect` entry.\n   */\n  setWidth(width, rect = [0, 0, 0, 0]) {\n    if (\n      typeof PDFJSDev === \"undefined\" ||\n      PDFJSDev.test(\"!PRODUCTION || TESTING\")\n    ) {\n      assert(\n        Array.isArray(rect) && rect.length === 4,\n        \"A valid `rect` parameter must be provided.\"\n      );\n    }\n\n    // Some corrupt PDF generators may provide the width as a `Name`,\n    // rather than as a number (fixes issue 10385).\n    if (isName(width)) {\n      this.width = 0; // This is consistent with the behaviour in Adobe Reader.\n      return;\n    }\n    if (Number.isInteger(width)) {\n      if (width > 0) {\n        const maxWidth = (rect[2] - rect[0]) / 2;\n        const maxHeight = (rect[3] - rect[1]) / 2;\n\n        // Ignore large `width`s, since they lead to the Annotation overflowing\n        // the size set by the `Rect` entry thus causing the `annotationLayer`\n        // to render it over the surrounding document (fixes bug1552113.pdf).\n        if (\n          maxWidth > 0 &&\n          maxHeight > 0 &&\n          (width > maxWidth || width > maxHeight)\n        ) {\n          warn(`AnnotationBorderStyle.setWidth - ignoring width: ${width}`);\n          width = 1;\n        }\n      }\n      this.width = width;\n    }\n  }\n\n  /**\n   * Set the style.\n   *\n   * @public\n   * @memberof AnnotationBorderStyle\n   * @param {Name} style - The annotation style.\n   * @see {@link shared/util.js}\n   */\n  setStyle(style) {\n    if (!isName(style)) {\n      return;\n    }\n    switch (style.name) {\n      case \"S\":\n        this.style = AnnotationBorderStyleType.SOLID;\n        break;\n\n      case \"D\":\n        this.style = AnnotationBorderStyleType.DASHED;\n        break;\n\n      case \"B\":\n        this.style = AnnotationBorderStyleType.BEVELED;\n        break;\n\n      case \"I\":\n        this.style = AnnotationBorderStyleType.INSET;\n        break;\n\n      case \"U\":\n        this.style = AnnotationBorderStyleType.UNDERLINE;\n        break;\n\n      default:\n        break;\n    }\n  }\n\n  /**\n   * Set the dash array.\n   *\n   * @public\n   * @memberof AnnotationBorderStyle\n   * @param {Array} dashArray - The dash array with at least one element\n   * @param {boolean} [forceStyle]\n   */\n  setDashArray(dashArray, forceStyle = false) {\n    // We validate the dash array, but we do not use it because CSS does not\n    // allow us to change spacing of dashes. For more information, visit\n    // http://www.w3.org/TR/css3-background/#the-border-style.\n    if (Array.isArray(dashArray) && dashArray.length > 0) {\n      // According to the PDF specification: the elements in `dashArray`\n      // shall be numbers that are nonnegative and not all equal to zero.\n      let isValid = true;\n      let allZeros = true;\n      for (const element of dashArray) {\n        const validNumber = +element >= 0;\n        if (!validNumber) {\n          isValid = false;\n          break;\n        } else if (element > 0) {\n          allZeros = false;\n        }\n      }\n      if (isValid && !allZeros) {\n        this.dashArray = dashArray;\n\n        if (forceStyle) {\n          // Even though we cannot use the dash array in the display layer,\n          // at least ensure that we use the correct border-style.\n          this.setStyle(Name.get(\"D\"));\n        }\n      } else {\n        this.width = 0; // Adobe behavior when the array is invalid.\n      }\n    } else if (dashArray) {\n      this.width = 0; // Adobe behavior when the array is invalid.\n    }\n  }\n\n  /**\n   * Set the horizontal corner radius (from a Border dictionary).\n   *\n   * @public\n   * @memberof AnnotationBorderStyle\n   * @param {number} radius - The horizontal corner radius.\n   */\n  setHorizontalCornerRadius(radius) {\n    if (Number.isInteger(radius)) {\n      this.horizontalCornerRadius = radius;\n    }\n  }\n\n  /**\n   * Set the vertical corner radius (from a Border dictionary).\n   *\n   * @public\n   * @memberof AnnotationBorderStyle\n   * @param {number} radius - The vertical corner radius.\n   */\n  setVerticalCornerRadius(radius) {\n    if (Number.isInteger(radius)) {\n      this.verticalCornerRadius = radius;\n    }\n  }\n}\n\nclass MarkupAnnotation extends Annotation {\n  constructor(parameters) {\n    super(parameters);\n\n    const dict = parameters.dict;\n\n    if (dict.has(\"IRT\")) {\n      const rawIRT = dict.getRaw(\"IRT\");\n      this.data.inReplyTo = isRef(rawIRT) ? rawIRT.toString() : null;\n\n      const rt = dict.get(\"RT\");\n      this.data.replyType = isName(rt) ? rt.name : AnnotationReplyType.REPLY;\n    }\n\n    if (this.data.replyType === AnnotationReplyType.GROUP) {\n      // Subordinate annotations in a group should inherit\n      // the group attributes from the primary annotation.\n      const parent = dict.get(\"IRT\");\n\n      this.setTitle(parent.get(\"T\"));\n      this.data.titleObj = this._title;\n\n      this.setContents(parent.get(\"Contents\"));\n      this.data.contentsObj = this._contents;\n\n      if (!parent.has(\"CreationDate\")) {\n        this.data.creationDate = null;\n      } else {\n        this.setCreationDate(parent.get(\"CreationDate\"));\n        this.data.creationDate = this.creationDate;\n      }\n\n      if (!parent.has(\"M\")) {\n        this.data.modificationDate = null;\n      } else {\n        this.setModificationDate(parent.get(\"M\"));\n        this.data.modificationDate = this.modificationDate;\n      }\n\n      this.data.hasPopup = parent.has(\"Popup\");\n\n      if (!parent.has(\"C\")) {\n        // Fall back to the default background color.\n        this.data.color = null;\n      } else {\n        this.setColor(parent.getArray(\"C\"));\n        this.data.color = this.color;\n      }\n    } else {\n      this.data.titleObj = this._title;\n\n      this.setCreationDate(dict.get(\"CreationDate\"));\n      this.data.creationDate = this.creationDate;\n\n      this.data.hasPopup = dict.has(\"Popup\");\n\n      if (!dict.has(\"C\")) {\n        // Fall back to the default background color.\n        this.data.color = null;\n      }\n    }\n\n    if (dict.has(\"RC\")) {\n      this.data.richText = XFAFactory.getRichTextAsHtml(dict.get(\"RC\"));\n    }\n  }\n\n  /**\n   * Set the creation date.\n   *\n   * @public\n   * @memberof MarkupAnnotation\n   * @param {string} creationDate - PDF date string that indicates when the\n   *                                annotation was originally created\n   */\n  setCreationDate(creationDate) {\n    this.creationDate = isString(creationDate) ? creationDate : null;\n  }\n\n  _setDefaultAppearance({\n    xref,\n    extra,\n    strokeColor,\n    fillColor,\n    blendMode,\n    strokeAlpha,\n    fillAlpha,\n    pointsCallback,\n  }) {\n    let minX = Number.MAX_VALUE;\n    let minY = Number.MAX_VALUE;\n    let maxX = Number.MIN_VALUE;\n    let maxY = Number.MIN_VALUE;\n\n    const buffer = [\"q\"];\n    if (extra) {\n      buffer.push(extra);\n    }\n    if (strokeColor) {\n      buffer.push(`${strokeColor[0]} ${strokeColor[1]} ${strokeColor[2]} RG`);\n    }\n    if (fillColor) {\n      buffer.push(`${fillColor[0]} ${fillColor[1]} ${fillColor[2]} rg`);\n    }\n\n    let pointsArray = this.data.quadPoints;\n    if (!pointsArray) {\n      // If there are no quadpoints, the rectangle should be used instead.\n      // Convert the rectangle definition to a points array similar to how the\n      // quadpoints are defined.\n      pointsArray = [\n        [\n          { x: this.rectangle[0], y: this.rectangle[3] },\n          { x: this.rectangle[2], y: this.rectangle[3] },\n          { x: this.rectangle[0], y: this.rectangle[1] },\n          { x: this.rectangle[2], y: this.rectangle[1] },\n        ],\n      ];\n    }\n\n    for (const points of pointsArray) {\n      const [mX, MX, mY, MY] = pointsCallback(buffer, points);\n      minX = Math.min(minX, mX);\n      maxX = Math.max(maxX, MX);\n      minY = Math.min(minY, mY);\n      maxY = Math.max(maxY, MY);\n    }\n    buffer.push(\"Q\");\n\n    const formDict = new Dict(xref);\n    const appearanceStreamDict = new Dict(xref);\n    appearanceStreamDict.set(\"Subtype\", Name.get(\"Form\"));\n\n    const appearanceStream = new StringStream(buffer.join(\" \"));\n    appearanceStream.dict = appearanceStreamDict;\n    formDict.set(\"Fm0\", appearanceStream);\n\n    const gsDict = new Dict(xref);\n    if (blendMode) {\n      gsDict.set(\"BM\", Name.get(blendMode));\n    }\n    if (typeof strokeAlpha === \"number\") {\n      gsDict.set(\"CA\", strokeAlpha);\n    }\n    if (typeof fillAlpha === \"number\") {\n      gsDict.set(\"ca\", fillAlpha);\n    }\n\n    const stateDict = new Dict(xref);\n    stateDict.set(\"GS0\", gsDict);\n\n    const resources = new Dict(xref);\n    resources.set(\"ExtGState\", stateDict);\n    resources.set(\"XObject\", formDict);\n\n    const appearanceDict = new Dict(xref);\n    appearanceDict.set(\"Resources\", resources);\n    const bbox = (this.data.rect = [minX, minY, maxX, maxY]);\n    appearanceDict.set(\"BBox\", bbox);\n\n    this.appearance = new StringStream(\"/GS0 gs /Fm0 Do\");\n    this.appearance.dict = appearanceDict;\n\n    // This method is only called if there is no appearance for the annotation,\n    // so `this.appearance` is not pushed yet in the `Annotation` constructor.\n    this._streams.push(this.appearance, appearanceStream);\n  }\n}\n\nclass WidgetAnnotation extends Annotation {\n  constructor(params) {\n    super(params);\n\n    const dict = params.dict;\n    const data = this.data;\n    this.ref = params.ref;\n\n    data.annotationType = AnnotationType.WIDGET;\n    if (data.fieldName === undefined) {\n      data.fieldName = this._constructFieldName(dict);\n    }\n    if (data.actions === undefined) {\n      data.actions = collectActions(\n        params.xref,\n        dict,\n        AnnotationActionEventType\n      );\n    }\n\n    const fieldValue = getInheritableProperty({\n      dict,\n      key: \"V\",\n      getArray: true,\n    });\n    data.fieldValue = this._decodeFormValue(fieldValue);\n\n    const defaultFieldValue = getInheritableProperty({\n      dict,\n      key: \"DV\",\n      getArray: true,\n    });\n    data.defaultFieldValue = this._decodeFormValue(defaultFieldValue);\n\n    // When no \"V\" entry exists, let the fieldValue fallback to the \"DV\" entry\n    // (fixes issue13823.pdf).\n    if (fieldValue === undefined && data.defaultFieldValue !== null) {\n      data.fieldValue = data.defaultFieldValue;\n    }\n\n    data.alternativeText = stringToPDFString(dict.get(\"TU\") || \"\");\n\n    const defaultAppearance =\n      getInheritableProperty({ dict, key: \"DA\" }) || params.acroForm.get(\"DA\");\n    this._defaultAppearance = isString(defaultAppearance)\n      ? defaultAppearance\n      : \"\";\n    data.defaultAppearanceData = parseDefaultAppearance(\n      this._defaultAppearance\n    );\n\n    const fieldType = getInheritableProperty({ dict, key: \"FT\" });\n    data.fieldType = isName(fieldType) ? fieldType.name : null;\n\n    const localResources = getInheritableProperty({ dict, key: \"DR\" });\n    const acroFormResources = params.acroForm.get(\"DR\");\n    const appearanceResources =\n      this.appearance && this.appearance.dict.get(\"Resources\");\n\n    this._fieldResources = {\n      localResources,\n      acroFormResources,\n      appearanceResources,\n      mergedResources: Dict.merge({\n        xref: params.xref,\n        dictArray: [localResources, appearanceResources, acroFormResources],\n        mergeSubDicts: true,\n      }),\n    };\n\n    data.fieldFlags = getInheritableProperty({ dict, key: \"Ff\" });\n    if (!Number.isInteger(data.fieldFlags) || data.fieldFlags < 0) {\n      data.fieldFlags = 0;\n    }\n\n    data.readOnly = this.hasFieldFlag(AnnotationFieldFlag.READONLY);\n    data.hidden = this._hasFlag(data.annotationFlags, AnnotationFlag.HIDDEN);\n  }\n\n  /**\n   * Decode the given form value.\n   *\n   * @private\n   * @memberof WidgetAnnotation\n   * @param {Array<string>|Name|string} formValue - The (possibly encoded)\n   *   form value.\n   * @returns {Array<string>|string|null}\n   */\n  _decodeFormValue(formValue) {\n    if (Array.isArray(formValue)) {\n      return formValue\n        .filter(item => isString(item))\n        .map(item => stringToPDFString(item));\n    } else if (isName(formValue)) {\n      return stringToPDFString(formValue.name);\n    } else if (isString(formValue)) {\n      return stringToPDFString(formValue);\n    }\n    return null;\n  }\n\n  /**\n   * Check if a provided field flag is set.\n   *\n   * @public\n   * @memberof WidgetAnnotation\n   * @param {number} flag - Hexadecimal representation for an annotation\n   *                        field characteristic\n   * @returns {boolean}\n   * @see {@link shared/util.js}\n   */\n  hasFieldFlag(flag) {\n    return !!(this.data.fieldFlags & flag);\n  }\n\n  getOperatorList(evaluator, task, intent, renderForms, annotationStorage) {\n    // Do not render form elements on the canvas when interactive forms are\n    // enabled. The display layer is responsible for rendering them instead.\n    if (renderForms && !(this instanceof SignatureWidgetAnnotation)) {\n      return Promise.resolve(new OperatorList());\n    }\n\n    if (!this._hasText) {\n      return super.getOperatorList(\n        evaluator,\n        task,\n        intent,\n        renderForms,\n        annotationStorage\n      );\n    }\n\n    return this._getAppearance(evaluator, task, annotationStorage).then(\n      content => {\n        if (this.appearance && content === null) {\n          return super.getOperatorList(\n            evaluator,\n            task,\n            intent,\n            renderForms,\n            annotationStorage\n          );\n        }\n\n        const operatorList = new OperatorList();\n\n        // Even if there is an appearance stream, ignore it. This is the\n        // behaviour used by Adobe Reader.\n        if (!this._defaultAppearance || content === null) {\n          return operatorList;\n        }\n\n        const matrix = [1, 0, 0, 1, 0, 0];\n        const bbox = [\n          0,\n          0,\n          this.data.rect[2] - this.data.rect[0],\n          this.data.rect[3] - this.data.rect[1],\n        ];\n\n        const transform = getTransformMatrix(this.data.rect, bbox, matrix);\n        operatorList.addOp(OPS.beginAnnotation, [\n          this.data.id,\n          this.data.rect,\n          transform,\n          matrix,\n        ]);\n\n        const stream = new StringStream(content);\n        return evaluator\n          .getOperatorList({\n            stream,\n            task,\n            resources: this._fieldResources.mergedResources,\n            operatorList,\n          })\n          .then(function () {\n            operatorList.addOp(OPS.endAnnotation, []);\n            return operatorList;\n          });\n      }\n    );\n  }\n\n  async save(evaluator, task, annotationStorage) {\n    if (!annotationStorage) {\n      return null;\n    }\n    const storageEntry = annotationStorage.get(this.data.id);\n    const value = storageEntry && storageEntry.value;\n    if (value === this.data.fieldValue || value === undefined) {\n      return null;\n    }\n\n    let appearance = await this._getAppearance(\n      evaluator,\n      task,\n      annotationStorage\n    );\n    if (appearance === null) {\n      return null;\n    }\n    const { xref } = evaluator;\n\n    const dict = xref.fetchIfRef(this.ref);\n    if (!isDict(dict)) {\n      return null;\n    }\n\n    const bbox = [\n      0,\n      0,\n      this.data.rect[2] - this.data.rect[0],\n      this.data.rect[3] - this.data.rect[1],\n    ];\n\n    const xfa = {\n      path: stringToPDFString(dict.get(\"T\") || \"\"),\n      value,\n    };\n\n    const newRef = xref.getNewRef();\n    const AP = new Dict(xref);\n    AP.set(\"N\", newRef);\n\n    const encrypt = xref.encrypt;\n    let originalTransform = null;\n    let newTransform = null;\n    if (encrypt) {\n      originalTransform = encrypt.createCipherTransform(\n        this.ref.num,\n        this.ref.gen\n      );\n      newTransform = encrypt.createCipherTransform(newRef.num, newRef.gen);\n      appearance = newTransform.encryptString(appearance);\n    }\n\n    dict.set(\"V\", isAscii(value) ? value : stringToUTF16BEString(value));\n    dict.set(\"AP\", AP);\n    dict.set(\"M\", `D:${getModificationDate()}`);\n\n    const appearanceDict = new Dict(xref);\n    appearanceDict.set(\"Length\", appearance.length);\n    appearanceDict.set(\"Subtype\", Name.get(\"Form\"));\n    appearanceDict.set(\"Resources\", this._getSaveFieldResources(xref));\n    appearanceDict.set(\"BBox\", bbox);\n\n    const bufferOriginal = [`${this.ref.num} ${this.ref.gen} obj\\n`];\n    writeDict(dict, bufferOriginal, originalTransform);\n    bufferOriginal.push(\"\\nendobj\\n\");\n\n    const bufferNew = [`${newRef.num} ${newRef.gen} obj\\n`];\n    writeDict(appearanceDict, bufferNew, newTransform);\n    bufferNew.push(\" stream\\n\", appearance, \"\\nendstream\\nendobj\\n\");\n\n    return [\n      // data for the original object\n      // V field changed + reference for new AP\n      { ref: this.ref, data: bufferOriginal.join(\"\"), xfa },\n      // data for the new AP\n      { ref: newRef, data: bufferNew.join(\"\"), xfa: null },\n    ];\n  }\n\n  async _getAppearance(evaluator, task, annotationStorage) {\n    const isPassword = this.hasFieldFlag(AnnotationFieldFlag.PASSWORD);\n    if (!annotationStorage || isPassword) {\n      return null;\n    }\n    const storageEntry = annotationStorage.get(this.data.id);\n    let value = storageEntry && storageEntry.value;\n    if (value === undefined) {\n      // The annotation hasn't been rendered so use the appearance\n      return null;\n    }\n\n    value = value.trim();\n\n    if (value === \"\") {\n      // the field is empty: nothing to render\n      return \"\";\n    }\n\n    let lineCount = -1;\n    if (this.data.multiLine) {\n      lineCount = value.split(/\\r\\n|\\r|\\n/).length;\n    }\n\n    const defaultPadding = 2;\n    const hPadding = defaultPadding;\n    const totalHeight = this.data.rect[3] - this.data.rect[1];\n    const totalWidth = this.data.rect[2] - this.data.rect[0];\n\n    if (!this._defaultAppearance) {\n      // The DA is required and must be a string.\n      // If there is no font named Helvetica in the resource dictionary,\n      // the evaluator will fall back to a default font.\n      // Doing so prevents exceptions and allows saving/printing\n      // the file as expected.\n      this.data.defaultAppearanceData = parseDefaultAppearance(\n        (this._defaultAppearance = \"/Helvetica 0 Tf 0 g\")\n      );\n    }\n\n    const [defaultAppearance, fontSize] = this._computeFontSize(\n      totalHeight,\n      lineCount\n    );\n\n    const font = await this._getFontData(evaluator, task);\n\n    let descent = font.descent;\n    if (isNaN(descent)) {\n      descent = 0;\n    }\n\n    const vPadding = defaultPadding + Math.abs(descent) * fontSize;\n    const alignment = this.data.textAlignment;\n\n    if (this.data.multiLine) {\n      return this._getMultilineAppearance(\n        defaultAppearance,\n        value,\n        font,\n        fontSize,\n        totalWidth,\n        totalHeight,\n        alignment,\n        hPadding,\n        vPadding\n      );\n    }\n\n    // TODO: need to handle chars which are not in the font.\n    const encodedString = font.encodeString(value).join(\"\");\n\n    if (this.data.comb) {\n      return this._getCombAppearance(\n        defaultAppearance,\n        font,\n        encodedString,\n        totalWidth,\n        hPadding,\n        vPadding\n      );\n    }\n\n    if (alignment === 0 || alignment > 2) {\n      // Left alignment: nothing to do\n      return (\n        \"/Tx BMC q BT \" +\n        defaultAppearance +\n        ` 1 0 0 1 ${hPadding} ${vPadding} Tm (${escapeString(\n          encodedString\n        )}) Tj` +\n        \" ET Q EMC\"\n      );\n    }\n\n    const renderedText = this._renderText(\n      encodedString,\n      font,\n      fontSize,\n      totalWidth,\n      alignment,\n      hPadding,\n      vPadding\n    );\n    return (\n      \"/Tx BMC q BT \" +\n      defaultAppearance +\n      ` 1 0 0 1 0 0 Tm ${renderedText}` +\n      \" ET Q EMC\"\n    );\n  }\n\n  async _getFontData(evaluator, task) {\n    const operatorList = new OperatorList();\n    const initialState = {\n      font: null,\n      clone() {\n        return this;\n      },\n    };\n\n    const { fontName, fontSize } = this.data.defaultAppearanceData;\n    await evaluator.handleSetFont(\n      this._fieldResources.mergedResources,\n      [fontName && Name.get(fontName), fontSize],\n      /* fontRef = */ null,\n      operatorList,\n      task,\n      initialState,\n      /* fallbackFontDict = */ null\n    );\n\n    return initialState.font;\n  }\n\n  _computeFontSize(height, lineCount) {\n    let { fontSize } = this.data.defaultAppearanceData;\n    if (!fontSize) {\n      // A zero value for size means that the font shall be auto-sized:\n      // its size shall be computed as a function of the height of the\n      // annotation rectangle (see 12.7.3.3).\n\n      const roundWithOneDigit = x => Math.round(x * 10) / 10;\n\n      // Represent the percentage of the font size over the height\n      // of a single-line field.\n      const FONT_FACTOR = 0.8;\n      if (lineCount === -1) {\n        fontSize = roundWithOneDigit(FONT_FACTOR * height);\n      } else {\n        // Hard to guess how many lines there are.\n        // The field may have been sized to have 10 lines\n        // and the user entered only 1 so if we get font size from\n        // height and number of lines then we'll get something too big.\n        // So we compute a fake number of lines based on height and\n        // a font size equal to 10.\n        // Then we'll adjust font size to what we have really.\n        fontSize = 10;\n        let lineHeight = fontSize / FONT_FACTOR;\n        let numberOfLines = Math.round(height / lineHeight);\n        numberOfLines = Math.max(numberOfLines, lineCount);\n        lineHeight = height / numberOfLines;\n        fontSize = roundWithOneDigit(FONT_FACTOR * lineHeight);\n      }\n\n      const { fontName, fontColor } = this.data.defaultAppearanceData;\n      this._defaultAppearance = createDefaultAppearance({\n        fontSize,\n        fontName,\n        fontColor,\n      });\n    }\n    return [this._defaultAppearance, fontSize];\n  }\n\n  _renderText(text, font, fontSize, totalWidth, alignment, hPadding, vPadding) {\n    // We need to get the width of the text in order to align it correctly\n    const glyphs = font.charsToGlyphs(text);\n    const scale = fontSize / 1000;\n    let width = 0;\n    for (const glyph of glyphs) {\n      width += glyph.width * scale;\n    }\n\n    let shift;\n    if (alignment === 1) {\n      // Center\n      shift = (totalWidth - width) / 2;\n    } else if (alignment === 2) {\n      // Right\n      shift = totalWidth - width - hPadding;\n    } else {\n      shift = hPadding;\n    }\n    shift = shift.toFixed(2);\n    vPadding = vPadding.toFixed(2);\n\n    return `${shift} ${vPadding} Td (${escapeString(text)}) Tj`;\n  }\n\n  /**\n   * @private\n   */\n  _getSaveFieldResources(xref) {\n    if (\n      typeof PDFJSDev === \"undefined\" ||\n      PDFJSDev.test(\"!PRODUCTION || TESTING\")\n    ) {\n      assert(\n        this.data.defaultAppearanceData,\n        \"Expected `_defaultAppearanceData` to have been set.\"\n      );\n    }\n    const { localResources, appearanceResources, acroFormResources } =\n      this._fieldResources;\n\n    const fontName =\n      this.data.defaultAppearanceData &&\n      this.data.defaultAppearanceData.fontName;\n    if (!fontName) {\n      return localResources || Dict.empty;\n    }\n\n    for (const resources of [localResources, appearanceResources]) {\n      if (resources instanceof Dict) {\n        const localFont = resources.get(\"Font\");\n        if (localFont instanceof Dict && localFont.has(fontName)) {\n          return resources;\n        }\n      }\n    }\n    if (acroFormResources instanceof Dict) {\n      const acroFormFont = acroFormResources.get(\"Font\");\n      if (acroFormFont instanceof Dict && acroFormFont.has(fontName)) {\n        const subFontDict = new Dict(xref);\n        subFontDict.set(fontName, acroFormFont.getRaw(fontName));\n\n        const subResourcesDict = new Dict(xref);\n        subResourcesDict.set(\"Font\", subFontDict);\n\n        return Dict.merge({\n          xref,\n          dictArray: [subResourcesDict, localResources],\n          mergeSubDicts: true,\n        });\n      }\n    }\n    return localResources || Dict.empty;\n  }\n\n  getFieldObject() {\n    return null;\n  }\n}\n\nclass TextWidgetAnnotation extends WidgetAnnotation {\n  constructor(params) {\n    super(params);\n\n    this._hasText = true;\n\n    const dict = params.dict;\n\n    // The field value is always a string.\n    if (!isString(this.data.fieldValue)) {\n      this.data.fieldValue = \"\";\n    }\n\n    // Determine the alignment of text in the field.\n    let alignment = getInheritableProperty({ dict, key: \"Q\" });\n    if (!Number.isInteger(alignment) || alignment < 0 || alignment > 2) {\n      alignment = null;\n    }\n    this.data.textAlignment = alignment;\n\n    // Determine the maximum length of text in the field.\n    let maximumLength = getInheritableProperty({ dict, key: \"MaxLen\" });\n    if (!Number.isInteger(maximumLength) || maximumLength < 0) {\n      maximumLength = null;\n    }\n    this.data.maxLen = maximumLength;\n\n    // Process field flags for the display layer.\n    this.data.multiLine = this.hasFieldFlag(AnnotationFieldFlag.MULTILINE);\n    this.data.comb =\n      this.hasFieldFlag(AnnotationFieldFlag.COMB) &&\n      !this.hasFieldFlag(AnnotationFieldFlag.MULTILINE) &&\n      !this.hasFieldFlag(AnnotationFieldFlag.PASSWORD) &&\n      !this.hasFieldFlag(AnnotationFieldFlag.FILESELECT) &&\n      this.data.maxLen !== null;\n  }\n\n  _getCombAppearance(defaultAppearance, font, text, width, hPadding, vPadding) {\n    const combWidth = (width / this.data.maxLen).toFixed(2);\n    const buf = [];\n    const positions = font.getCharPositions(text);\n    for (const [start, end] of positions) {\n      buf.push(`(${escapeString(text.substring(start, end))}) Tj`);\n    }\n\n    const renderedComb = buf.join(` ${combWidth} 0 Td `);\n    return (\n      \"/Tx BMC q BT \" +\n      defaultAppearance +\n      ` 1 0 0 1 ${hPadding} ${vPadding} Tm ${renderedComb}` +\n      \" ET Q EMC\"\n    );\n  }\n\n  _getMultilineAppearance(\n    defaultAppearance,\n    text,\n    font,\n    fontSize,\n    width,\n    height,\n    alignment,\n    hPadding,\n    vPadding\n  ) {\n    const lines = text.split(/\\r\\n|\\r|\\n/);\n    const buf = [];\n    const totalWidth = width - 2 * hPadding;\n    for (const line of lines) {\n      const chunks = this._splitLine(line, font, fontSize, totalWidth);\n      for (const chunk of chunks) {\n        const padding = buf.length === 0 ? hPadding : 0;\n        buf.push(\n          this._renderText(\n            chunk,\n            font,\n            fontSize,\n            width,\n            alignment,\n            padding,\n            -fontSize // <0 because a line is below the previous one\n          )\n        );\n      }\n    }\n\n    const renderedText = buf.join(\"\\n\");\n    return (\n      \"/Tx BMC q BT \" +\n      defaultAppearance +\n      ` 1 0 0 1 0 ${height} Tm ${renderedText}` +\n      \" ET Q EMC\"\n    );\n  }\n\n  _splitLine(line, font, fontSize, width) {\n    // TODO: need to handle chars which are not in the font.\n    line = font.encodeString(line).join(\"\");\n\n    const glyphs = font.charsToGlyphs(line);\n\n    if (glyphs.length <= 1) {\n      // Nothing to split\n      return [line];\n    }\n\n    const positions = font.getCharPositions(line);\n    const scale = fontSize / 1000;\n    const chunks = [];\n\n    let lastSpacePosInStringStart = -1,\n      lastSpacePosInStringEnd = -1,\n      lastSpacePos = -1,\n      startChunk = 0,\n      currentWidth = 0;\n\n    for (let i = 0, ii = glyphs.length; i < ii; i++) {\n      const [start, end] = positions[i];\n      const glyph = glyphs[i];\n      const glyphWidth = glyph.width * scale;\n      if (glyph.unicode === \" \") {\n        if (currentWidth + glyphWidth > width) {\n          // We can break here\n          chunks.push(line.substring(startChunk, start));\n          startChunk = start;\n          currentWidth = glyphWidth;\n          lastSpacePosInStringStart = -1;\n          lastSpacePos = -1;\n        } else {\n          currentWidth += glyphWidth;\n          lastSpacePosInStringStart = start;\n          lastSpacePosInStringEnd = end;\n          lastSpacePos = i;\n        }\n      } else {\n        if (currentWidth + glyphWidth > width) {\n          // We must break to the last white position (if available)\n          if (lastSpacePosInStringStart !== -1) {\n            chunks.push(line.substring(startChunk, lastSpacePosInStringEnd));\n            startChunk = lastSpacePosInStringEnd;\n            i = lastSpacePos + 1;\n            lastSpacePosInStringStart = -1;\n            currentWidth = 0;\n          } else {\n            // Just break in the middle of the word\n            chunks.push(line.substring(startChunk, start));\n            startChunk = start;\n            currentWidth = glyphWidth;\n          }\n        } else {\n          currentWidth += glyphWidth;\n        }\n      }\n    }\n\n    if (startChunk < line.length) {\n      chunks.push(line.substring(startChunk, line.length));\n    }\n\n    return chunks;\n  }\n\n  getFieldObject() {\n    return {\n      id: this.data.id,\n      value: this.data.fieldValue,\n      defaultValue: this.data.defaultFieldValue,\n      multiline: this.data.multiLine,\n      password: this.hasFieldFlag(AnnotationFieldFlag.PASSWORD),\n      charLimit: this.data.maxLen,\n      comb: this.data.comb,\n      editable: !this.data.readOnly,\n      hidden: this.data.hidden,\n      name: this.data.fieldName,\n      rect: this.data.rect,\n      actions: this.data.actions,\n      page: this.data.pageIndex,\n      strokeColor: this.data.borderColor,\n      fillColor: this.data.backgroundColor,\n      type: \"text\",\n    };\n  }\n}\n\nclass ButtonWidgetAnnotation extends WidgetAnnotation {\n  constructor(params) {\n    super(params);\n\n    this.checkedAppearance = null;\n    this.uncheckedAppearance = null;\n\n    this.data.checkBox =\n      !this.hasFieldFlag(AnnotationFieldFlag.RADIO) &&\n      !this.hasFieldFlag(AnnotationFieldFlag.PUSHBUTTON);\n    this.data.radioButton =\n      this.hasFieldFlag(AnnotationFieldFlag.RADIO) &&\n      !this.hasFieldFlag(AnnotationFieldFlag.PUSHBUTTON);\n    this.data.pushButton = this.hasFieldFlag(AnnotationFieldFlag.PUSHBUTTON);\n    this.data.isTooltipOnly = false;\n\n    if (this.data.checkBox) {\n      this._processCheckBox(params);\n    } else if (this.data.radioButton) {\n      this._processRadioButton(params);\n    } else if (this.data.pushButton) {\n      this.data.hasOwnCanvas = true;\n      this._processPushButton(params);\n    } else {\n      warn(\"Invalid field flags for button widget annotation\");\n    }\n  }\n\n  async getOperatorList(\n    evaluator,\n    task,\n    intent,\n    renderForms,\n    annotationStorage\n  ) {\n    if (this.data.pushButton) {\n      return super.getOperatorList(\n        evaluator,\n        task,\n        intent,\n        false, // we use normalAppearance to render the button\n        annotationStorage\n      );\n    }\n\n    let value = null;\n    if (annotationStorage) {\n      const storageEntry = annotationStorage.get(this.data.id);\n      value = storageEntry ? storageEntry.value : null;\n    }\n\n    if (value === null) {\n      // Nothing in the annotationStorage.\n      if (this.appearance) {\n        // But we've a default appearance so use it.\n        return super.getOperatorList(\n          evaluator,\n          task,\n          intent,\n          renderForms,\n          annotationStorage\n        );\n      }\n\n      // There is no default appearance so use the one derived\n      // from the field value.\n      if (this.data.checkBox) {\n        value = this.data.fieldValue === this.data.exportValue;\n      } else {\n        value = this.data.fieldValue === this.data.buttonValue;\n      }\n    }\n\n    const appearance = value\n      ? this.checkedAppearance\n      : this.uncheckedAppearance;\n    if (appearance) {\n      const savedAppearance = this.appearance;\n      this.appearance = appearance;\n      const operatorList = super.getOperatorList(\n        evaluator,\n        task,\n        intent,\n        renderForms,\n        annotationStorage\n      );\n      this.appearance = savedAppearance;\n      return operatorList;\n    }\n\n    // No appearance\n    return new OperatorList();\n  }\n\n  async save(evaluator, task, annotationStorage) {\n    if (this.data.checkBox) {\n      return this._saveCheckbox(evaluator, task, annotationStorage);\n    }\n\n    if (this.data.radioButton) {\n      return this._saveRadioButton(evaluator, task, annotationStorage);\n    }\n\n    // Nothing to save\n    return null;\n  }\n\n  async _saveCheckbox(evaluator, task, annotationStorage) {\n    if (!annotationStorage) {\n      return null;\n    }\n    const storageEntry = annotationStorage.get(this.data.id);\n    const value = storageEntry && storageEntry.value;\n    if (value === undefined) {\n      return null;\n    }\n\n    const defaultValue = this.data.fieldValue === this.data.exportValue;\n    if (defaultValue === value) {\n      return null;\n    }\n\n    const dict = evaluator.xref.fetchIfRef(this.ref);\n    if (!isDict(dict)) {\n      return null;\n    }\n\n    const xfa = {\n      path: stringToPDFString(dict.get(\"T\") || \"\"),\n      value: value ? this.data.exportValue : \"\",\n    };\n\n    const name = Name.get(value ? this.data.exportValue : \"Off\");\n    dict.set(\"V\", name);\n    dict.set(\"AS\", name);\n    dict.set(\"M\", `D:${getModificationDate()}`);\n\n    const encrypt = evaluator.xref.encrypt;\n    let originalTransform = null;\n    if (encrypt) {\n      originalTransform = encrypt.createCipherTransform(\n        this.ref.num,\n        this.ref.gen\n      );\n    }\n\n    const buffer = [`${this.ref.num} ${this.ref.gen} obj\\n`];\n    writeDict(dict, buffer, originalTransform);\n    buffer.push(\"\\nendobj\\n\");\n\n    return [{ ref: this.ref, data: buffer.join(\"\"), xfa }];\n  }\n\n  async _saveRadioButton(evaluator, task, annotationStorage) {\n    if (!annotationStorage) {\n      return null;\n    }\n    const storageEntry = annotationStorage.get(this.data.id);\n    const value = storageEntry && storageEntry.value;\n    if (value === undefined) {\n      return null;\n    }\n\n    const defaultValue = this.data.fieldValue === this.data.buttonValue;\n    if (defaultValue === value) {\n      return null;\n    }\n\n    const dict = evaluator.xref.fetchIfRef(this.ref);\n    if (!isDict(dict)) {\n      return null;\n    }\n\n    const xfa = {\n      path: stringToPDFString(dict.get(\"T\") || \"\"),\n      value: value ? this.data.buttonValue : \"\",\n    };\n\n    const name = Name.get(value ? this.data.buttonValue : \"Off\");\n    let parentBuffer = null;\n    const encrypt = evaluator.xref.encrypt;\n\n    if (value) {\n      if (isRef(this.parent)) {\n        const parent = evaluator.xref.fetch(this.parent);\n        let parentTransform = null;\n        if (encrypt) {\n          parentTransform = encrypt.createCipherTransform(\n            this.parent.num,\n            this.parent.gen\n          );\n        }\n        parent.set(\"V\", name);\n        parentBuffer = [`${this.parent.num} ${this.parent.gen} obj\\n`];\n        writeDict(parent, parentBuffer, parentTransform);\n        parentBuffer.push(\"\\nendobj\\n\");\n      } else if (isDict(this.parent)) {\n        this.parent.set(\"V\", name);\n      }\n    }\n\n    dict.set(\"AS\", name);\n    dict.set(\"M\", `D:${getModificationDate()}`);\n\n    let originalTransform = null;\n    if (encrypt) {\n      originalTransform = encrypt.createCipherTransform(\n        this.ref.num,\n        this.ref.gen\n      );\n    }\n\n    const buffer = [`${this.ref.num} ${this.ref.gen} obj\\n`];\n    writeDict(dict, buffer, originalTransform);\n    buffer.push(\"\\nendobj\\n\");\n\n    const newRefs = [{ ref: this.ref, data: buffer.join(\"\"), xfa }];\n    if (parentBuffer !== null) {\n      newRefs.push({\n        ref: this.parent,\n        data: parentBuffer.join(\"\"),\n        xfa: null,\n      });\n    }\n\n    return newRefs;\n  }\n\n  _getDefaultCheckedAppearance(params, type) {\n    const width = this.data.rect[2] - this.data.rect[0];\n    const height = this.data.rect[3] - this.data.rect[1];\n    const bbox = [0, 0, width, height];\n\n    // Ratio used to have a mark slightly smaller than the bbox.\n    const FONT_RATIO = 0.8;\n    const fontSize = Math.min(width, height) * FONT_RATIO;\n\n    // Char Metrics\n    // Widths came from widths for ZapfDingbats.\n    // Heights are guessed with Fontforge and FoxitDingbats.pfb.\n    let metrics, char;\n    if (type === \"check\") {\n      // Char 33 (2713 in unicode)\n      metrics = {\n        width: 0.755 * fontSize,\n        height: 0.705 * fontSize,\n      };\n      char = \"\\x33\";\n    } else if (type === \"disc\") {\n      // Char 6C (25CF in unicode)\n      metrics = {\n        width: 0.791 * fontSize,\n        height: 0.705 * fontSize,\n      };\n      char = \"\\x6C\";\n    } else {\n      unreachable(`_getDefaultCheckedAppearance - unsupported type: ${type}`);\n    }\n\n    // Values to center the glyph in the bbox.\n    const xShift = (width - metrics.width) / 2;\n    const yShift = (height - metrics.height) / 2;\n\n    const appearance = `q BT /PdfJsZaDb ${fontSize} Tf 0 g ${xShift} ${yShift} Td (${char}) Tj ET Q`;\n\n    const appearanceStreamDict = new Dict(params.xref);\n    appearanceStreamDict.set(\"FormType\", 1);\n    appearanceStreamDict.set(\"Subtype\", Name.get(\"Form\"));\n    appearanceStreamDict.set(\"Type\", Name.get(\"XObject\"));\n    appearanceStreamDict.set(\"BBox\", bbox);\n    appearanceStreamDict.set(\"Matrix\", [1, 0, 0, 1, 0, 0]);\n    appearanceStreamDict.set(\"Length\", appearance.length);\n\n    const resources = new Dict(params.xref);\n    const font = new Dict(params.xref);\n    font.set(\"PdfJsZaDb\", this.fallbackFontDict);\n    resources.set(\"Font\", font);\n\n    appearanceStreamDict.set(\"Resources\", resources);\n\n    this.checkedAppearance = new StringStream(appearance);\n    this.checkedAppearance.dict = appearanceStreamDict;\n\n    this._streams.push(this.checkedAppearance);\n  }\n\n  _processCheckBox(params) {\n    const customAppearance = params.dict.get(\"AP\");\n    if (!isDict(customAppearance)) {\n      return;\n    }\n\n    const normalAppearance = customAppearance.get(\"N\");\n    if (!isDict(normalAppearance)) {\n      return;\n    }\n\n    // See https://bugzilla.mozilla.org/show_bug.cgi?id=1722036.\n    // If we've an AS and a V then take AS.\n    const asValue = this._decodeFormValue(params.dict.get(\"AS\"));\n    if (typeof asValue === \"string\") {\n      this.data.fieldValue = asValue;\n    }\n\n    const yes =\n      this.data.fieldValue !== null && this.data.fieldValue !== \"Off\"\n        ? this.data.fieldValue\n        : \"Yes\";\n\n    const exportValues = normalAppearance.getKeys();\n    if (exportValues.length === 0) {\n      exportValues.push(\"Off\", yes);\n    } else if (exportValues.length === 1) {\n      if (exportValues[0] === \"Off\") {\n        exportValues.push(yes);\n      } else {\n        exportValues.unshift(\"Off\");\n      }\n    } else if (exportValues.includes(yes)) {\n      exportValues.length = 0;\n      exportValues.push(\"Off\", yes);\n    } else {\n      const otherYes = exportValues.find(v => v !== \"Off\");\n      exportValues.length = 0;\n      exportValues.push(\"Off\", otherYes);\n    }\n\n    // Don't use a \"V\" entry pointing to a non-existent appearance state,\n    // see e.g. bug1720411.pdf where it's an *empty* Name-instance.\n    if (!exportValues.includes(this.data.fieldValue)) {\n      this.data.fieldValue = \"Off\";\n    }\n\n    this.data.exportValue = exportValues[1];\n\n    this.checkedAppearance =\n      normalAppearance.get(this.data.exportValue) || null;\n    this.uncheckedAppearance = normalAppearance.get(\"Off\") || null;\n\n    if (this.checkedAppearance) {\n      this._streams.push(this.checkedAppearance);\n    } else {\n      this._getDefaultCheckedAppearance(params, \"check\");\n    }\n    if (this.uncheckedAppearance) {\n      this._streams.push(this.uncheckedAppearance);\n    }\n    this._fallbackFontDict = this.fallbackFontDict;\n  }\n\n  _processRadioButton(params) {\n    this.data.fieldValue = this.data.buttonValue = null;\n\n    // The parent field's `V` entry holds a `Name` object with the appearance\n    // state of whichever child field is currently in the \"on\" state.\n    const fieldParent = params.dict.get(\"Parent\");\n    if (isDict(fieldParent)) {\n      this.parent = params.dict.getRaw(\"Parent\");\n      const fieldParentValue = fieldParent.get(\"V\");\n      if (isName(fieldParentValue)) {\n        this.data.fieldValue = this._decodeFormValue(fieldParentValue);\n      }\n    }\n\n    // The button's value corresponds to its appearance state.\n    const appearanceStates = params.dict.get(\"AP\");\n    if (!isDict(appearanceStates)) {\n      return;\n    }\n    const normalAppearance = appearanceStates.get(\"N\");\n    if (!isDict(normalAppearance)) {\n      return;\n    }\n    for (const key of normalAppearance.getKeys()) {\n      if (key !== \"Off\") {\n        this.data.buttonValue = this._decodeFormValue(key);\n        break;\n      }\n    }\n\n    this.checkedAppearance =\n      normalAppearance.get(this.data.buttonValue) || null;\n    this.uncheckedAppearance = normalAppearance.get(\"Off\") || null;\n\n    if (this.checkedAppearance) {\n      this._streams.push(this.checkedAppearance);\n    } else {\n      this._getDefaultCheckedAppearance(params, \"disc\");\n    }\n    if (this.uncheckedAppearance) {\n      this._streams.push(this.uncheckedAppearance);\n    }\n    this._fallbackFontDict = this.fallbackFontDict;\n  }\n\n  _processPushButton(params) {\n    if (\n      !params.dict.has(\"A\") &&\n      !params.dict.has(\"AA\") &&\n      !this.data.alternativeText\n    ) {\n      warn(\"Push buttons without action dictionaries are not supported\");\n      return;\n    }\n\n    this.data.isTooltipOnly = !params.dict.has(\"A\") && !params.dict.has(\"AA\");\n\n    Catalog.parseDestDictionary({\n      destDict: params.dict,\n      resultObj: this.data,\n      docBaseUrl: params.pdfManager.docBaseUrl,\n    });\n  }\n\n  getFieldObject() {\n    let type = \"button\";\n    let exportValues;\n    if (this.data.checkBox) {\n      type = \"checkbox\";\n      exportValues = this.data.exportValue;\n    } else if (this.data.radioButton) {\n      type = \"radiobutton\";\n      exportValues = this.data.buttonValue;\n    }\n    return {\n      id: this.data.id,\n      value: this.data.fieldValue || \"Off\",\n      defaultValue: this.data.defaultFieldValue,\n      exportValues,\n      editable: !this.data.readOnly,\n      name: this.data.fieldName,\n      rect: this.data.rect,\n      hidden: this.data.hidden,\n      actions: this.data.actions,\n      page: this.data.pageIndex,\n      strokeColor: this.data.borderColor,\n      fillColor: this.data.backgroundColor,\n      type,\n    };\n  }\n\n  get fallbackFontDict() {\n    const dict = new Dict();\n    dict.set(\"BaseFont\", Name.get(\"ZapfDingbats\"));\n    dict.set(\"Type\", Name.get(\"FallbackType\"));\n    dict.set(\"Subtype\", Name.get(\"FallbackType\"));\n    dict.set(\"Encoding\", Name.get(\"ZapfDingbatsEncoding\"));\n\n    return shadow(this, \"fallbackFontDict\", dict);\n  }\n}\n\nclass ChoiceWidgetAnnotation extends WidgetAnnotation {\n  constructor(params) {\n    super(params);\n\n    // Determine the options. The options array may consist of strings or\n    // arrays. If the array consists of arrays, then the first element of\n    // each array is the export value and the second element of each array is\n    // the display value. If the array consists of strings, then these\n    // represent both the export and display value. In this case, we convert\n    // it to an array of arrays as well for convenience in the display layer.\n    // Note that the specification does not state that the `Opt` field is\n    // inheritable, but in practice PDF generators do make annotations\n    // inherit the options from a parent annotation (issue 8094).\n    this.data.options = [];\n\n    const options = getInheritableProperty({ dict: params.dict, key: \"Opt\" });\n    if (Array.isArray(options)) {\n      const xref = params.xref;\n      for (let i = 0, ii = options.length; i < ii; i++) {\n        const option = xref.fetchIfRef(options[i]);\n        const isOptionArray = Array.isArray(option);\n\n        this.data.options[i] = {\n          exportValue: this._decodeFormValue(\n            isOptionArray ? xref.fetchIfRef(option[0]) : option\n          ),\n          displayValue: this._decodeFormValue(\n            isOptionArray ? xref.fetchIfRef(option[1]) : option\n          ),\n        };\n      }\n    }\n\n    // The field value can be `null` if no item is selected, a string if one\n    // item is selected or an array of strings if multiple items are selected.\n    // For consistency in the API and convenience in the display layer, we\n    // always make the field value an array with zero, one or multiple items.\n    if (isString(this.data.fieldValue)) {\n      this.data.fieldValue = [this.data.fieldValue];\n    } else if (!this.data.fieldValue) {\n      this.data.fieldValue = [];\n    }\n\n    // Process field flags for the display layer.\n    this.data.combo = this.hasFieldFlag(AnnotationFieldFlag.COMBO);\n    this.data.multiSelect = this.hasFieldFlag(AnnotationFieldFlag.MULTISELECT);\n    this._hasText = true;\n  }\n\n  getFieldObject() {\n    const type = this.data.combo ? \"combobox\" : \"listbox\";\n    const value =\n      this.data.fieldValue.length > 0 ? this.data.fieldValue[0] : null;\n    return {\n      id: this.data.id,\n      value,\n      defaultValue: this.data.defaultFieldValue,\n      editable: !this.data.readOnly,\n      name: this.data.fieldName,\n      rect: this.data.rect,\n      numItems: this.data.fieldValue.length,\n      multipleSelection: this.data.multiSelect,\n      hidden: this.data.hidden,\n      actions: this.data.actions,\n      items: this.data.options,\n      page: this.data.pageIndex,\n      strokeColor: this.data.borderColor,\n      fillColor: this.data.backgroundColor,\n      type,\n    };\n  }\n}\n\nclass SignatureWidgetAnnotation extends WidgetAnnotation {\n  constructor(params) {\n    super(params);\n\n    // Unset the fieldValue since it's (most likely) a `Dict` which is\n    // non-serializable and will thus cause errors when sending annotations\n    // to the main-thread (issue 10347).\n    this.data.fieldValue = null;\n  }\n\n  getFieldObject() {\n    return {\n      id: this.data.id,\n      value: null,\n      page: this.data.pageIndex,\n      type: \"signature\",\n    };\n  }\n}\n\nclass TextAnnotation extends MarkupAnnotation {\n  constructor(parameters) {\n    const DEFAULT_ICON_SIZE = 22; // px\n\n    super(parameters);\n\n    const dict = parameters.dict;\n    this.data.annotationType = AnnotationType.TEXT;\n\n    if (this.data.hasAppearance) {\n      this.data.name = \"NoIcon\";\n    } else {\n      this.data.rect[1] = this.data.rect[3] - DEFAULT_ICON_SIZE;\n      this.data.rect[2] = this.data.rect[0] + DEFAULT_ICON_SIZE;\n      this.data.name = dict.has(\"Name\") ? dict.get(\"Name\").name : \"Note\";\n    }\n\n    if (dict.has(\"State\")) {\n      this.data.state = dict.get(\"State\") || null;\n      this.data.stateModel = dict.get(\"StateModel\") || null;\n    } else {\n      this.data.state = null;\n      this.data.stateModel = null;\n    }\n  }\n}\n\nclass LinkAnnotation extends Annotation {\n  constructor(params) {\n    super(params);\n\n    this.data.annotationType = AnnotationType.LINK;\n\n    const quadPoints = getQuadPoints(params.dict, this.rectangle);\n    if (quadPoints) {\n      this.data.quadPoints = quadPoints;\n    }\n\n    Catalog.parseDestDictionary({\n      destDict: params.dict,\n      resultObj: this.data,\n      docBaseUrl: params.pdfManager.docBaseUrl,\n    });\n  }\n}\n\nclass PopupAnnotation extends Annotation {\n  constructor(parameters) {\n    super(parameters);\n\n    this.data.annotationType = AnnotationType.POPUP;\n\n    let parentItem = parameters.dict.get(\"Parent\");\n    if (!parentItem) {\n      warn(\"Popup annotation has a missing or invalid parent annotation.\");\n      return;\n    }\n\n    const parentSubtype = parentItem.get(\"Subtype\");\n    this.data.parentType = isName(parentSubtype) ? parentSubtype.name : null;\n    const rawParent = parameters.dict.getRaw(\"Parent\");\n    this.data.parentId = isRef(rawParent) ? rawParent.toString() : null;\n\n    const parentRect = parentItem.getArray(\"Rect\");\n    if (Array.isArray(parentRect) && parentRect.length === 4) {\n      this.data.parentRect = Util.normalizeRect(parentRect);\n    } else {\n      this.data.parentRect = [0, 0, 0, 0];\n    }\n\n    const rt = parentItem.get(\"RT\");\n    if (isName(rt, AnnotationReplyType.GROUP)) {\n      // Subordinate annotations in a group should inherit\n      // the group attributes from the primary annotation.\n      parentItem = parentItem.get(\"IRT\");\n    }\n\n    if (!parentItem.has(\"M\")) {\n      this.data.modificationDate = null;\n    } else {\n      this.setModificationDate(parentItem.get(\"M\"));\n      this.data.modificationDate = this.modificationDate;\n    }\n\n    if (!parentItem.has(\"C\")) {\n      // Fall back to the default background color.\n      this.data.color = null;\n    } else {\n      this.setColor(parentItem.getArray(\"C\"));\n      this.data.color = this.color;\n    }\n\n    // If the Popup annotation is not viewable, but the parent annotation is,\n    // that is most likely a bug. Fallback to inherit the flags from the parent\n    // annotation (this is consistent with the behaviour in Adobe Reader).\n    if (!this.viewable) {\n      const parentFlags = parentItem.get(\"F\");\n      if (this._isViewable(parentFlags)) {\n        this.setFlags(parentFlags);\n      }\n    }\n\n    this.setTitle(parentItem.get(\"T\"));\n    this.data.titleObj = this._title;\n\n    this.setContents(parentItem.get(\"Contents\"));\n    this.data.contentsObj = this._contents;\n\n    if (parentItem.has(\"RC\")) {\n      this.data.richText = XFAFactory.getRichTextAsHtml(parentItem.get(\"RC\"));\n    }\n  }\n}\n\nclass FreeTextAnnotation extends MarkupAnnotation {\n  constructor(parameters) {\n    super(parameters);\n\n    this.data.annotationType = AnnotationType.FREETEXT;\n  }\n}\n\nclass LineAnnotation extends MarkupAnnotation {\n  constructor(parameters) {\n    super(parameters);\n\n    this.data.annotationType = AnnotationType.LINE;\n\n    const lineCoordinates = parameters.dict.getArray(\"L\");\n    this.data.lineCoordinates = Util.normalizeRect(lineCoordinates);\n\n    if (!this.appearance) {\n      // The default stroke color is black.\n      const strokeColor = this.color\n        ? Array.from(this.color).map(c => c / 255)\n        : [0, 0, 0];\n      const strokeAlpha = parameters.dict.get(\"CA\");\n\n      // The default fill color is transparent. Setting the fill colour is\n      // necessary if/when we want to add support for non-default line endings.\n      let fillColor = null,\n        interiorColor = parameters.dict.getArray(\"IC\");\n      if (interiorColor) {\n        interiorColor = getRgbColor(interiorColor, null);\n        fillColor = interiorColor\n          ? Array.from(interiorColor).map(c => c / 255)\n          : null;\n      }\n      const fillAlpha = fillColor ? strokeAlpha : null;\n\n      const borderWidth = this.borderStyle.width || 1,\n        borderAdjust = 2 * borderWidth;\n\n      // If the /Rect-entry is empty/wrong, create a fallback rectangle so that\n      // we get similar rendering/highlighting behaviour as in Adobe Reader.\n      const bbox = [\n        this.data.lineCoordinates[0] - borderAdjust,\n        this.data.lineCoordinates[1] - borderAdjust,\n        this.data.lineCoordinates[2] + borderAdjust,\n        this.data.lineCoordinates[3] + borderAdjust,\n      ];\n      if (!Util.intersect(this.rectangle, bbox)) {\n        this.rectangle = bbox;\n      }\n\n      this._setDefaultAppearance({\n        xref: parameters.xref,\n        extra: `${borderWidth} w`,\n        strokeColor,\n        fillColor,\n        strokeAlpha,\n        fillAlpha,\n        pointsCallback: (buffer, points) => {\n          buffer.push(\n            `${lineCoordinates[0]} ${lineCoordinates[1]} m`,\n            `${lineCoordinates[2]} ${lineCoordinates[3]} l`,\n            \"S\"\n          );\n          return [\n            points[0].x - borderWidth,\n            points[1].x + borderWidth,\n            points[3].y - borderWidth,\n            points[1].y + borderWidth,\n          ];\n        },\n      });\n    }\n  }\n}\n\nclass SquareAnnotation extends MarkupAnnotation {\n  constructor(parameters) {\n    super(parameters);\n\n    this.data.annotationType = AnnotationType.SQUARE;\n\n    if (!this.appearance) {\n      // The default stroke color is black.\n      const strokeColor = this.color\n        ? Array.from(this.color).map(c => c / 255)\n        : [0, 0, 0];\n      const strokeAlpha = parameters.dict.get(\"CA\");\n\n      // The default fill color is transparent.\n      let fillColor = null,\n        interiorColor = parameters.dict.getArray(\"IC\");\n      if (interiorColor) {\n        interiorColor = getRgbColor(interiorColor, null);\n        fillColor = interiorColor\n          ? Array.from(interiorColor).map(c => c / 255)\n          : null;\n      }\n      const fillAlpha = fillColor ? strokeAlpha : null;\n\n      if (this.borderStyle.width === 0 && !fillColor) {\n        // Prevent rendering a \"hairline\" border (fixes issue14164.pdf).\n        return;\n      }\n\n      this._setDefaultAppearance({\n        xref: parameters.xref,\n        extra: `${this.borderStyle.width} w`,\n        strokeColor,\n        fillColor,\n        strokeAlpha,\n        fillAlpha,\n        pointsCallback: (buffer, points) => {\n          const x = points[2].x + this.borderStyle.width / 2;\n          const y = points[2].y + this.borderStyle.width / 2;\n          const width = points[3].x - points[2].x - this.borderStyle.width;\n          const height = points[1].y - points[3].y - this.borderStyle.width;\n          buffer.push(`${x} ${y} ${width} ${height} re`);\n          if (fillColor) {\n            buffer.push(\"B\");\n          } else {\n            buffer.push(\"S\");\n          }\n          return [points[0].x, points[1].x, points[3].y, points[1].y];\n        },\n      });\n    }\n  }\n}\n\nclass CircleAnnotation extends MarkupAnnotation {\n  constructor(parameters) {\n    super(parameters);\n\n    this.data.annotationType = AnnotationType.CIRCLE;\n\n    if (!this.appearance) {\n      // The default stroke color is black.\n      const strokeColor = this.color\n        ? Array.from(this.color).map(c => c / 255)\n        : [0, 0, 0];\n      const strokeAlpha = parameters.dict.get(\"CA\");\n\n      // The default fill color is transparent.\n      let fillColor = null;\n      let interiorColor = parameters.dict.getArray(\"IC\");\n      if (interiorColor) {\n        interiorColor = getRgbColor(interiorColor, null);\n        fillColor = interiorColor\n          ? Array.from(interiorColor).map(c => c / 255)\n          : null;\n      }\n      const fillAlpha = fillColor ? strokeAlpha : null;\n\n      if (this.borderStyle.width === 0 && !fillColor) {\n        // Prevent rendering a \"hairline\" border (fixes issue14164.pdf).\n        return;\n      }\n\n      // Circles are approximated by Bézier curves with four segments since\n      // there is no circle primitive in the PDF specification. For the control\n      // points distance, see https://stackoverflow.com/a/27863181.\n      const controlPointsDistance = (4 / 3) * Math.tan(Math.PI / (2 * 4));\n\n      this._setDefaultAppearance({\n        xref: parameters.xref,\n        extra: `${this.borderStyle.width} w`,\n        strokeColor,\n        fillColor,\n        strokeAlpha,\n        fillAlpha,\n        pointsCallback: (buffer, points) => {\n          const x0 = points[0].x + this.borderStyle.width / 2;\n          const y0 = points[0].y - this.borderStyle.width / 2;\n          const x1 = points[3].x - this.borderStyle.width / 2;\n          const y1 = points[3].y + this.borderStyle.width / 2;\n          const xMid = x0 + (x1 - x0) / 2;\n          const yMid = y0 + (y1 - y0) / 2;\n          const xOffset = ((x1 - x0) / 2) * controlPointsDistance;\n          const yOffset = ((y1 - y0) / 2) * controlPointsDistance;\n\n          buffer.push(\n            `${xMid} ${y1} m`,\n            `${xMid + xOffset} ${y1} ${x1} ${yMid + yOffset} ${x1} ${yMid} c`,\n            `${x1} ${yMid - yOffset} ${xMid + xOffset} ${y0} ${xMid} ${y0} c`,\n            `${xMid - xOffset} ${y0} ${x0} ${yMid - yOffset} ${x0} ${yMid} c`,\n            `${x0} ${yMid + yOffset} ${xMid - xOffset} ${y1} ${xMid} ${y1} c`,\n            \"h\"\n          );\n          if (fillColor) {\n            buffer.push(\"B\");\n          } else {\n            buffer.push(\"S\");\n          }\n          return [points[0].x, points[1].x, points[3].y, points[1].y];\n        },\n      });\n    }\n  }\n}\n\nclass PolylineAnnotation extends MarkupAnnotation {\n  constructor(parameters) {\n    super(parameters);\n\n    this.data.annotationType = AnnotationType.POLYLINE;\n    this.data.vertices = [];\n\n    // The vertices array is an array of numbers representing the alternating\n    // horizontal and vertical coordinates, respectively, of each vertex.\n    // Convert this to an array of objects with x and y coordinates.\n    const rawVertices = parameters.dict.getArray(\"Vertices\");\n    if (!Array.isArray(rawVertices)) {\n      return;\n    }\n    for (let i = 0, ii = rawVertices.length; i < ii; i += 2) {\n      this.data.vertices.push({\n        x: rawVertices[i],\n        y: rawVertices[i + 1],\n      });\n    }\n\n    if (!this.appearance) {\n      // The default stroke color is black.\n      const strokeColor = this.color\n        ? Array.from(this.color).map(c => c / 255)\n        : [0, 0, 0];\n      const strokeAlpha = parameters.dict.get(\"CA\");\n\n      const borderWidth = this.borderStyle.width || 1,\n        borderAdjust = 2 * borderWidth;\n\n      // If the /Rect-entry is empty/wrong, create a fallback rectangle so that\n      // we get similar rendering/highlighting behaviour as in Adobe Reader.\n      const bbox = [Infinity, Infinity, -Infinity, -Infinity];\n      for (const vertex of this.data.vertices) {\n        bbox[0] = Math.min(bbox[0], vertex.x - borderAdjust);\n        bbox[1] = Math.min(bbox[1], vertex.y - borderAdjust);\n        bbox[2] = Math.max(bbox[2], vertex.x + borderAdjust);\n        bbox[3] = Math.max(bbox[3], vertex.y + borderAdjust);\n      }\n      if (!Util.intersect(this.rectangle, bbox)) {\n        this.rectangle = bbox;\n      }\n\n      this._setDefaultAppearance({\n        xref: parameters.xref,\n        extra: `${borderWidth} w`,\n        strokeColor,\n        strokeAlpha,\n        pointsCallback: (buffer, points) => {\n          const vertices = this.data.vertices;\n          for (let i = 0, ii = vertices.length; i < ii; i++) {\n            buffer.push(\n              `${vertices[i].x} ${vertices[i].y} ${i === 0 ? \"m\" : \"l\"}`\n            );\n          }\n          buffer.push(\"S\");\n          return [points[0].x, points[1].x, points[3].y, points[1].y];\n        },\n      });\n    }\n  }\n}\n\nclass PolygonAnnotation extends PolylineAnnotation {\n  constructor(parameters) {\n    // Polygons are specific forms of polylines, so reuse their logic.\n    super(parameters);\n\n    this.data.annotationType = AnnotationType.POLYGON;\n  }\n}\n\nclass CaretAnnotation extends MarkupAnnotation {\n  constructor(parameters) {\n    super(parameters);\n\n    this.data.annotationType = AnnotationType.CARET;\n  }\n}\n\nclass InkAnnotation extends MarkupAnnotation {\n  constructor(parameters) {\n    super(parameters);\n\n    this.data.annotationType = AnnotationType.INK;\n    this.data.inkLists = [];\n\n    const rawInkLists = parameters.dict.getArray(\"InkList\");\n    if (!Array.isArray(rawInkLists)) {\n      return;\n    }\n    const xref = parameters.xref;\n    for (let i = 0, ii = rawInkLists.length; i < ii; ++i) {\n      // The raw ink lists array contains arrays of numbers representing\n      // the alternating horizontal and vertical coordinates, respectively,\n      // of each vertex. Convert this to an array of objects with x and y\n      // coordinates.\n      this.data.inkLists.push([]);\n      for (let j = 0, jj = rawInkLists[i].length; j < jj; j += 2) {\n        this.data.inkLists[i].push({\n          x: xref.fetchIfRef(rawInkLists[i][j]),\n          y: xref.fetchIfRef(rawInkLists[i][j + 1]),\n        });\n      }\n    }\n\n    if (!this.appearance) {\n      // The default stroke color is black.\n      const strokeColor = this.color\n        ? Array.from(this.color).map(c => c / 255)\n        : [0, 0, 0];\n      const strokeAlpha = parameters.dict.get(\"CA\");\n\n      const borderWidth = this.borderStyle.width || 1,\n        borderAdjust = 2 * borderWidth;\n\n      // If the /Rect-entry is empty/wrong, create a fallback rectangle so that\n      // we get similar rendering/highlighting behaviour as in Adobe Reader.\n      const bbox = [Infinity, Infinity, -Infinity, -Infinity];\n      for (const inkLists of this.data.inkLists) {\n        for (const vertex of inkLists) {\n          bbox[0] = Math.min(bbox[0], vertex.x - borderAdjust);\n          bbox[1] = Math.min(bbox[1], vertex.y - borderAdjust);\n          bbox[2] = Math.max(bbox[2], vertex.x + borderAdjust);\n          bbox[3] = Math.max(bbox[3], vertex.y + borderAdjust);\n        }\n      }\n      if (!Util.intersect(this.rectangle, bbox)) {\n        this.rectangle = bbox;\n      }\n\n      this._setDefaultAppearance({\n        xref: parameters.xref,\n        extra: `${borderWidth} w`,\n        strokeColor,\n        strokeAlpha,\n        pointsCallback: (buffer, points) => {\n          // According to the specification, see \"12.5.6.13 Ink Annotations\":\n          //   When drawn, the points shall be connected by straight lines or\n          //   curves in an implementation-dependent way.\n          // In order to simplify things, we utilize straight lines for now.\n          for (const inkList of this.data.inkLists) {\n            for (let i = 0, ii = inkList.length; i < ii; i++) {\n              buffer.push(\n                `${inkList[i].x} ${inkList[i].y} ${i === 0 ? \"m\" : \"l\"}`\n              );\n            }\n            buffer.push(\"S\");\n          }\n          return [points[0].x, points[1].x, points[3].y, points[1].y];\n        },\n      });\n    }\n  }\n}\n\nclass HighlightAnnotation extends MarkupAnnotation {\n  constructor(parameters) {\n    super(parameters);\n\n    this.data.annotationType = AnnotationType.HIGHLIGHT;\n    const quadPoints = (this.data.quadPoints = getQuadPoints(\n      parameters.dict,\n      null\n    ));\n    if (quadPoints) {\n      const resources =\n        this.appearance && this.appearance.dict.get(\"Resources\");\n\n      if (!this.appearance || !(resources && resources.has(\"ExtGState\"))) {\n        if (this.appearance) {\n          // Workaround for cases where there's no /ExtGState-entry directly\n          // available, e.g. when the appearance stream contains a /XObject of\n          // the /Form-type, since that causes the highlighting to completely\n          // obsure the PDF content below it (fixes issue13242.pdf).\n          warn(\"HighlightAnnotation - ignoring built-in appearance stream.\");\n        }\n        // Default color is yellow in Acrobat Reader\n        const fillColor = this.color\n          ? Array.from(this.color).map(c => c / 255)\n          : [1, 1, 0];\n        const fillAlpha = parameters.dict.get(\"CA\");\n\n        this._setDefaultAppearance({\n          xref: parameters.xref,\n          fillColor,\n          blendMode: \"Multiply\",\n          fillAlpha,\n          pointsCallback: (buffer, points) => {\n            buffer.push(\n              `${points[0].x} ${points[0].y} m`,\n              `${points[1].x} ${points[1].y} l`,\n              `${points[3].x} ${points[3].y} l`,\n              `${points[2].x} ${points[2].y} l`,\n              \"f\"\n            );\n            return [points[0].x, points[1].x, points[3].y, points[1].y];\n          },\n        });\n      }\n    } else {\n      this.data.hasPopup = false;\n    }\n  }\n}\n\nclass UnderlineAnnotation extends MarkupAnnotation {\n  constructor(parameters) {\n    super(parameters);\n\n    this.data.annotationType = AnnotationType.UNDERLINE;\n    const quadPoints = (this.data.quadPoints = getQuadPoints(\n      parameters.dict,\n      null\n    ));\n    if (quadPoints) {\n      if (!this.appearance) {\n        // Default color is black\n        const strokeColor = this.color\n          ? Array.from(this.color).map(c => c / 255)\n          : [0, 0, 0];\n        const strokeAlpha = parameters.dict.get(\"CA\");\n\n        this._setDefaultAppearance({\n          xref: parameters.xref,\n          extra: \"[] 0 d 1 w\",\n          strokeColor,\n          strokeAlpha,\n          pointsCallback: (buffer, points) => {\n            buffer.push(\n              `${points[2].x} ${points[2].y} m`,\n              `${points[3].x} ${points[3].y} l`,\n              \"S\"\n            );\n            return [points[0].x, points[1].x, points[3].y, points[1].y];\n          },\n        });\n      }\n    } else {\n      this.data.hasPopup = false;\n    }\n  }\n}\n\nclass SquigglyAnnotation extends MarkupAnnotation {\n  constructor(parameters) {\n    super(parameters);\n\n    this.data.annotationType = AnnotationType.SQUIGGLY;\n\n    const quadPoints = (this.data.quadPoints = getQuadPoints(\n      parameters.dict,\n      null\n    ));\n    if (quadPoints) {\n      if (!this.appearance) {\n        // Default color is black\n        const strokeColor = this.color\n          ? Array.from(this.color).map(c => c / 255)\n          : [0, 0, 0];\n        const strokeAlpha = parameters.dict.get(\"CA\");\n\n        this._setDefaultAppearance({\n          xref: parameters.xref,\n          extra: \"[] 0 d 1 w\",\n          strokeColor,\n          strokeAlpha,\n          pointsCallback: (buffer, points) => {\n            const dy = (points[0].y - points[2].y) / 6;\n            let shift = dy;\n            let x = points[2].x;\n            const y = points[2].y;\n            const xEnd = points[3].x;\n            buffer.push(`${x} ${y + shift} m`);\n            do {\n              x += 2;\n              shift = shift === 0 ? dy : 0;\n              buffer.push(`${x} ${y + shift} l`);\n            } while (x < xEnd);\n            buffer.push(\"S\");\n            return [points[2].x, xEnd, y - 2 * dy, y + 2 * dy];\n          },\n        });\n      }\n    } else {\n      this.data.hasPopup = false;\n    }\n  }\n}\n\nclass StrikeOutAnnotation extends MarkupAnnotation {\n  constructor(parameters) {\n    super(parameters);\n\n    this.data.annotationType = AnnotationType.STRIKEOUT;\n\n    const quadPoints = (this.data.quadPoints = getQuadPoints(\n      parameters.dict,\n      null\n    ));\n    if (quadPoints) {\n      if (!this.appearance) {\n        // Default color is black\n        const strokeColor = this.color\n          ? Array.from(this.color).map(c => c / 255)\n          : [0, 0, 0];\n        const strokeAlpha = parameters.dict.get(\"CA\");\n\n        this._setDefaultAppearance({\n          xref: parameters.xref,\n          extra: \"[] 0 d 1 w\",\n          strokeColor,\n          strokeAlpha,\n          pointsCallback: (buffer, points) => {\n            buffer.push(\n              `${(points[0].x + points[2].x) / 2} ` +\n                `${(points[0].y + points[2].y) / 2} m`,\n              `${(points[1].x + points[3].x) / 2} ` +\n                `${(points[1].y + points[3].y) / 2} l`,\n              \"S\"\n            );\n            return [points[0].x, points[1].x, points[3].y, points[1].y];\n          },\n        });\n      }\n    } else {\n      this.data.hasPopup = false;\n    }\n  }\n}\n\nclass StampAnnotation extends MarkupAnnotation {\n  constructor(parameters) {\n    super(parameters);\n\n    this.data.annotationType = AnnotationType.STAMP;\n  }\n}\n\nclass FileAttachmentAnnotation extends MarkupAnnotation {\n  constructor(parameters) {\n    super(parameters);\n\n    const file = new FileSpec(parameters.dict.get(\"FS\"), parameters.xref);\n\n    this.data.annotationType = AnnotationType.FILEATTACHMENT;\n    this.data.file = file.serializable;\n  }\n}\n\nexport {\n  Annotation,\n  AnnotationBorderStyle,\n  AnnotationFactory,\n  getQuadPoints,\n  MarkupAnnotation,\n};\n","/* Copyright 2020 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { OPS, warn } from \"../shared/util.js\";\nimport { ColorSpace } from \"./colorspace.js\";\nimport { escapePDFName } from \"./core_utils.js\";\nimport { EvaluatorPreprocessor } from \"./evaluator.js\";\nimport { Name } from \"./primitives.js\";\nimport { StringStream } from \"./stream.js\";\n\nclass DefaultAppearanceEvaluator extends EvaluatorPreprocessor {\n  constructor(str) {\n    super(new StringStream(str));\n  }\n\n  parse() {\n    const operation = {\n      fn: 0,\n      args: [],\n    };\n    const result = {\n      fontSize: 0,\n      fontName: \"\",\n      fontColor: /* black = */ new Uint8ClampedArray(3),\n    };\n\n    try {\n      while (true) {\n        operation.args.length = 0; // Ensure that `args` it's always reset.\n\n        if (!this.read(operation)) {\n          break;\n        }\n        if (this.savedStatesDepth !== 0) {\n          continue; // Don't get info in save/restore sections.\n        }\n        const { fn, args } = operation;\n\n        switch (fn | 0) {\n          case OPS.setFont:\n            const [fontName, fontSize] = args;\n            if (fontName instanceof Name) {\n              result.fontName = fontName.name;\n            }\n            if (typeof fontSize === \"number\" && fontSize > 0) {\n              result.fontSize = fontSize;\n            }\n            break;\n          case OPS.setFillRGBColor:\n            ColorSpace.singletons.rgb.getRgbItem(args, 0, result.fontColor, 0);\n            break;\n          case OPS.setFillGray:\n            ColorSpace.singletons.gray.getRgbItem(args, 0, result.fontColor, 0);\n            break;\n          case OPS.setFillColorSpace:\n            ColorSpace.singletons.cmyk.getRgbItem(args, 0, result.fontColor, 0);\n            break;\n        }\n      }\n    } catch (reason) {\n      warn(`parseDefaultAppearance - ignoring errors: \"${reason}\".`);\n    }\n\n    return result;\n  }\n}\n\n// Parse DA to extract font and color information.\nfunction parseDefaultAppearance(str) {\n  return new DefaultAppearanceEvaluator(str).parse();\n}\n\n// Create default appearance string from some information.\nfunction createDefaultAppearance({ fontSize, fontName, fontColor }) {\n  let colorCmd;\n  if (fontColor.every(c => c === 0)) {\n    colorCmd = \"0 g\";\n  } else {\n    colorCmd =\n      Array.from(fontColor)\n        .map(c => (c / 255).toFixed(2))\n        .join(\" \") + \" rg\";\n  }\n  return `/${escapePDFName(fontName)} ${fontSize} Tf ${colorCmd}`;\n}\n\nexport { createDefaultAppearance, parseDefaultAppearance };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n  assert,\n  FormatError,\n  info,\n  shadow,\n  unreachable,\n  warn,\n} from \"../shared/util.js\";\nimport { isDict, isName, isStream, Name, Ref } from \"./primitives.js\";\nimport { MissingDataException } from \"./core_utils.js\";\n\n/**\n * Resizes an RGB image with 3 components.\n * @param {TypedArray} src - The source buffer.\n * @param {TypedArray} dest - The destination buffer.\n * @param {number} w1 - Original width.\n * @param {number} h1 - Original height.\n * @param {number} w2 - New width.\n * @param {number} h2 - New height.\n * @param {number} alpha01 - Size reserved for the alpha channel.\n */\nfunction resizeRgbImage(src, dest, w1, h1, w2, h2, alpha01) {\n  const COMPONENTS = 3;\n  alpha01 = alpha01 !== 1 ? 0 : alpha01;\n  const xRatio = w1 / w2;\n  const yRatio = h1 / h2;\n  let newIndex = 0,\n    oldIndex;\n  const xScaled = new Uint16Array(w2);\n  const w1Scanline = w1 * COMPONENTS;\n\n  for (let i = 0; i < w2; i++) {\n    xScaled[i] = Math.floor(i * xRatio) * COMPONENTS;\n  }\n  for (let i = 0; i < h2; i++) {\n    const py = Math.floor(i * yRatio) * w1Scanline;\n    for (let j = 0; j < w2; j++) {\n      oldIndex = py + xScaled[j];\n      dest[newIndex++] = src[oldIndex++];\n      dest[newIndex++] = src[oldIndex++];\n      dest[newIndex++] = src[oldIndex++];\n      newIndex += alpha01;\n    }\n  }\n}\n\nclass ColorSpace {\n  constructor(name, numComps) {\n    if (this.constructor === ColorSpace) {\n      unreachable(\"Cannot initialize ColorSpace.\");\n    }\n    this.name = name;\n    this.numComps = numComps;\n  }\n\n  /**\n   * Converts the color value to the RGB color. The color components are\n   * located in the src array starting from the srcOffset. Returns the array\n   * of the rgb components, each value ranging from [0,255].\n   */\n  getRgb(src, srcOffset) {\n    const rgb = new Uint8ClampedArray(3);\n    this.getRgbItem(src, srcOffset, rgb, 0);\n    return rgb;\n  }\n\n  /**\n   * Converts the color value to the RGB color, similar to the getRgb method.\n   * The result placed into the dest array starting from the destOffset.\n   */\n  getRgbItem(src, srcOffset, dest, destOffset) {\n    unreachable(\"Should not call ColorSpace.getRgbItem\");\n  }\n\n  /**\n   * Converts the specified number of the color values to the RGB colors.\n   * The colors are located in the src array starting from the srcOffset.\n   * The result is placed into the dest array starting from the destOffset.\n   * The src array items shall be in [0,2^bits) range, the dest array items\n   * will be in [0,255] range. alpha01 indicates how many alpha components\n   * there are in the dest array; it will be either 0 (RGB array) or 1 (RGBA\n   * array).\n   */\n  getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n    unreachable(\"Should not call ColorSpace.getRgbBuffer\");\n  }\n\n  /**\n   * Determines the number of bytes required to store the result of the\n   * conversion done by the getRgbBuffer method. As in getRgbBuffer,\n   * |alpha01| is either 0 (RGB output) or 1 (RGBA output).\n   */\n  getOutputLength(inputLength, alpha01) {\n    unreachable(\"Should not call ColorSpace.getOutputLength\");\n  }\n\n  /**\n   * Returns true if source data will be equal the result/output data.\n   */\n  isPassthrough(bits) {\n    return false;\n  }\n\n  /**\n   * Refer to the static `ColorSpace.isDefaultDecode` method below.\n   */\n  isDefaultDecode(decodeMap, bpc) {\n    return ColorSpace.isDefaultDecode(decodeMap, this.numComps);\n  }\n\n  /**\n   * Fills in the RGB colors in the destination buffer.  alpha01 indicates\n   * how many alpha components there are in the dest array; it will be either\n   * 0 (RGB array) or 1 (RGBA array).\n   */\n  fillRgb(\n    dest,\n    originalWidth,\n    originalHeight,\n    width,\n    height,\n    actualHeight,\n    bpc,\n    comps,\n    alpha01\n  ) {\n    if (\n      typeof PDFJSDev === \"undefined\" ||\n      PDFJSDev.test(\"!PRODUCTION || TESTING\")\n    ) {\n      assert(\n        dest instanceof Uint8ClampedArray,\n        'ColorSpace.fillRgb: Unsupported \"dest\" type.'\n      );\n    }\n    const count = originalWidth * originalHeight;\n    let rgbBuf = null;\n    const numComponentColors = 1 << bpc;\n    const needsResizing = originalHeight !== height || originalWidth !== width;\n\n    if (this.isPassthrough(bpc)) {\n      rgbBuf = comps;\n    } else if (\n      this.numComps === 1 &&\n      count > numComponentColors &&\n      this.name !== \"DeviceGray\" &&\n      this.name !== \"DeviceRGB\"\n    ) {\n      // Optimization: create a color map when there is just one component and\n      // we are converting more colors than the size of the color map. We\n      // don't build the map if the colorspace is gray or rgb since those\n      // methods are faster than building a map. This mainly offers big speed\n      // ups for indexed and alternate colorspaces.\n      //\n      // TODO it may be worth while to cache the color map. While running\n      // testing I never hit a cache so I will leave that out for now (perhaps\n      // we are reparsing colorspaces too much?).\n      const allColors =\n        bpc <= 8\n          ? new Uint8Array(numComponentColors)\n          : new Uint16Array(numComponentColors);\n      for (let i = 0; i < numComponentColors; i++) {\n        allColors[i] = i;\n      }\n      const colorMap = new Uint8ClampedArray(numComponentColors * 3);\n      this.getRgbBuffer(\n        allColors,\n        0,\n        numComponentColors,\n        colorMap,\n        0,\n        bpc,\n        /* alpha01 = */ 0\n      );\n\n      if (!needsResizing) {\n        // Fill in the RGB values directly into |dest|.\n        let destPos = 0;\n        for (let i = 0; i < count; ++i) {\n          const key = comps[i] * 3;\n          dest[destPos++] = colorMap[key];\n          dest[destPos++] = colorMap[key + 1];\n          dest[destPos++] = colorMap[key + 2];\n          destPos += alpha01;\n        }\n      } else {\n        rgbBuf = new Uint8Array(count * 3);\n        let rgbPos = 0;\n        for (let i = 0; i < count; ++i) {\n          const key = comps[i] * 3;\n          rgbBuf[rgbPos++] = colorMap[key];\n          rgbBuf[rgbPos++] = colorMap[key + 1];\n          rgbBuf[rgbPos++] = colorMap[key + 2];\n        }\n      }\n    } else {\n      if (!needsResizing) {\n        // Fill in the RGB values directly into |dest|.\n        this.getRgbBuffer(\n          comps,\n          0,\n          width * actualHeight,\n          dest,\n          0,\n          bpc,\n          alpha01\n        );\n      } else {\n        rgbBuf = new Uint8ClampedArray(count * 3);\n        this.getRgbBuffer(comps, 0, count, rgbBuf, 0, bpc, /* alpha01 = */ 0);\n      }\n    }\n\n    if (rgbBuf) {\n      if (needsResizing) {\n        resizeRgbImage(\n          rgbBuf,\n          dest,\n          originalWidth,\n          originalHeight,\n          width,\n          height,\n          alpha01\n        );\n      } else {\n        let destPos = 0,\n          rgbPos = 0;\n        for (let i = 0, ii = width * actualHeight; i < ii; i++) {\n          dest[destPos++] = rgbBuf[rgbPos++];\n          dest[destPos++] = rgbBuf[rgbPos++];\n          dest[destPos++] = rgbBuf[rgbPos++];\n          destPos += alpha01;\n        }\n      }\n    }\n  }\n\n  /**\n   * True if the colorspace has components in the default range of [0, 1].\n   * This should be true for all colorspaces except for lab color spaces\n   * which are [0,100], [-128, 127], [-128, 127].\n   */\n  get usesZeroToOneRange() {\n    return shadow(this, \"usesZeroToOneRange\", true);\n  }\n\n  /**\n   * @private\n   */\n  static _cache(cacheKey, xref, localColorSpaceCache, parsedColorSpace) {\n    if (!localColorSpaceCache) {\n      throw new Error(\n        'ColorSpace._cache - expected \"localColorSpaceCache\" argument.'\n      );\n    }\n    if (!parsedColorSpace) {\n      throw new Error(\n        'ColorSpace._cache - expected \"parsedColorSpace\" argument.'\n      );\n    }\n    let csName, csRef;\n    if (cacheKey instanceof Ref) {\n      csRef = cacheKey;\n\n      // If parsing succeeded, we know that this call cannot throw.\n      cacheKey = xref.fetch(cacheKey);\n    }\n    if (cacheKey instanceof Name) {\n      csName = cacheKey.name;\n    }\n    if (csName || csRef) {\n      localColorSpaceCache.set(csName, csRef, parsedColorSpace);\n    }\n  }\n\n  static getCached(cacheKey, xref, localColorSpaceCache) {\n    if (!localColorSpaceCache) {\n      throw new Error(\n        'ColorSpace.getCached - expected \"localColorSpaceCache\" argument.'\n      );\n    }\n    if (cacheKey instanceof Ref) {\n      const localColorSpace = localColorSpaceCache.getByRef(cacheKey);\n      if (localColorSpace) {\n        return localColorSpace;\n      }\n\n      try {\n        cacheKey = xref.fetch(cacheKey);\n      } catch (ex) {\n        if (ex instanceof MissingDataException) {\n          throw ex;\n        }\n        // Any errors should be handled during parsing, rather than here.\n      }\n    }\n    if (cacheKey instanceof Name) {\n      const localColorSpace = localColorSpaceCache.getByName(cacheKey.name);\n      if (localColorSpace) {\n        return localColorSpace;\n      }\n    }\n    return null;\n  }\n\n  static async parseAsync({\n    cs,\n    xref,\n    resources = null,\n    pdfFunctionFactory,\n    localColorSpaceCache,\n  }) {\n    if (\n      typeof PDFJSDev === \"undefined\" ||\n      PDFJSDev.test(\"!PRODUCTION || TESTING\")\n    ) {\n      assert(\n        !this.getCached(cs, xref, localColorSpaceCache),\n        \"Expected `ColorSpace.getCached` to have been manually checked \" +\n          \"before calling `ColorSpace.parseAsync`.\"\n      );\n    }\n    const parsedColorSpace = this._parse(\n      cs,\n      xref,\n      resources,\n      pdfFunctionFactory\n    );\n\n    // Attempt to cache the parsed ColorSpace, by name and/or reference.\n    this._cache(cs, xref, localColorSpaceCache, parsedColorSpace);\n\n    return parsedColorSpace;\n  }\n\n  static parse({\n    cs,\n    xref,\n    resources = null,\n    pdfFunctionFactory,\n    localColorSpaceCache,\n  }) {\n    const cachedColorSpace = this.getCached(cs, xref, localColorSpaceCache);\n    if (cachedColorSpace) {\n      return cachedColorSpace;\n    }\n    const parsedColorSpace = this._parse(\n      cs,\n      xref,\n      resources,\n      pdfFunctionFactory\n    );\n\n    // Attempt to cache the parsed ColorSpace, by name and/or reference.\n    this._cache(cs, xref, localColorSpaceCache, parsedColorSpace);\n\n    return parsedColorSpace;\n  }\n\n  /**\n   * @private\n   */\n  static _parse(cs, xref, resources = null, pdfFunctionFactory) {\n    cs = xref.fetchIfRef(cs);\n    if (isName(cs)) {\n      switch (cs.name) {\n        case \"G\":\n        case \"DeviceGray\":\n          return this.singletons.gray;\n        case \"RGB\":\n        case \"DeviceRGB\":\n          return this.singletons.rgb;\n        case \"CMYK\":\n        case \"DeviceCMYK\":\n          return this.singletons.cmyk;\n        case \"Pattern\":\n          return new PatternCS(/* baseCS = */ null);\n        default:\n          if (isDict(resources)) {\n            const colorSpaces = resources.get(\"ColorSpace\");\n            if (isDict(colorSpaces)) {\n              const resourcesCS = colorSpaces.get(cs.name);\n              if (resourcesCS) {\n                if (isName(resourcesCS)) {\n                  return this._parse(\n                    resourcesCS,\n                    xref,\n                    resources,\n                    pdfFunctionFactory\n                  );\n                }\n                cs = resourcesCS;\n                break;\n              }\n            }\n          }\n          throw new FormatError(`Unrecognized ColorSpace: ${cs.name}`);\n      }\n    }\n    if (Array.isArray(cs)) {\n      const mode = xref.fetchIfRef(cs[0]).name;\n      let params, numComps, baseCS, whitePoint, blackPoint, gamma;\n\n      switch (mode) {\n        case \"G\":\n        case \"DeviceGray\":\n          return this.singletons.gray;\n        case \"RGB\":\n        case \"DeviceRGB\":\n          return this.singletons.rgb;\n        case \"CMYK\":\n        case \"DeviceCMYK\":\n          return this.singletons.cmyk;\n        case \"CalGray\":\n          params = xref.fetchIfRef(cs[1]);\n          whitePoint = params.getArray(\"WhitePoint\");\n          blackPoint = params.getArray(\"BlackPoint\");\n          gamma = params.get(\"Gamma\");\n          return new CalGrayCS(whitePoint, blackPoint, gamma);\n        case \"CalRGB\":\n          params = xref.fetchIfRef(cs[1]);\n          whitePoint = params.getArray(\"WhitePoint\");\n          blackPoint = params.getArray(\"BlackPoint\");\n          gamma = params.getArray(\"Gamma\");\n          const matrix = params.getArray(\"Matrix\");\n          return new CalRGBCS(whitePoint, blackPoint, gamma, matrix);\n        case \"ICCBased\":\n          const stream = xref.fetchIfRef(cs[1]);\n          const dict = stream.dict;\n          numComps = dict.get(\"N\");\n          const alt = dict.get(\"Alternate\");\n          if (alt) {\n            const altCS = this._parse(alt, xref, resources, pdfFunctionFactory);\n            // Ensure that the number of components are correct,\n            // and also (indirectly) that it is not a PatternCS.\n            if (altCS.numComps === numComps) {\n              return altCS;\n            }\n            warn(\"ICCBased color space: Ignoring incorrect /Alternate entry.\");\n          }\n          if (numComps === 1) {\n            return this.singletons.gray;\n          } else if (numComps === 3) {\n            return this.singletons.rgb;\n          } else if (numComps === 4) {\n            return this.singletons.cmyk;\n          }\n          break;\n        case \"Pattern\":\n          baseCS = cs[1] || null;\n          if (baseCS) {\n            baseCS = this._parse(baseCS, xref, resources, pdfFunctionFactory);\n          }\n          return new PatternCS(baseCS);\n        case \"I\":\n        case \"Indexed\":\n          baseCS = this._parse(cs[1], xref, resources, pdfFunctionFactory);\n          const hiVal = xref.fetchIfRef(cs[2]) + 1;\n          const lookup = xref.fetchIfRef(cs[3]);\n          return new IndexedCS(baseCS, hiVal, lookup);\n        case \"Separation\":\n        case \"DeviceN\":\n          const name = xref.fetchIfRef(cs[1]);\n          numComps = Array.isArray(name) ? name.length : 1;\n          baseCS = this._parse(cs[2], xref, resources, pdfFunctionFactory);\n          const tintFn = pdfFunctionFactory.create(cs[3]);\n          return new AlternateCS(numComps, baseCS, tintFn);\n        case \"Lab\":\n          params = xref.fetchIfRef(cs[1]);\n          whitePoint = params.getArray(\"WhitePoint\");\n          blackPoint = params.getArray(\"BlackPoint\");\n          const range = params.getArray(\"Range\");\n          return new LabCS(whitePoint, blackPoint, range);\n        default:\n          throw new FormatError(`Unimplemented ColorSpace object: ${mode}`);\n      }\n    }\n    throw new FormatError(`Unrecognized ColorSpace object: ${cs}`);\n  }\n\n  /**\n   * Checks if a decode map matches the default decode map for a color space.\n   * This handles the general decode maps where there are two values per\n   * component, e.g. [0, 1, 0, 1, 0, 1] for a RGB color.\n   * This does not handle Lab, Indexed, or Pattern decode maps since they are\n   * slightly different.\n   * @param {Array} decode - Decode map (usually from an image).\n   * @param {number} numComps - Number of components the color space has.\n   */\n  static isDefaultDecode(decode, numComps) {\n    if (!Array.isArray(decode)) {\n      return true;\n    }\n    if (numComps * 2 !== decode.length) {\n      warn(\"The decode map is not the correct length\");\n      return true;\n    }\n    for (let i = 0, ii = decode.length; i < ii; i += 2) {\n      if (decode[i] !== 0 || decode[i + 1] !== 1) {\n        return false;\n      }\n    }\n    return true;\n  }\n\n  static get singletons() {\n    return shadow(this, \"singletons\", {\n      get gray() {\n        return shadow(this, \"gray\", new DeviceGrayCS());\n      },\n      get rgb() {\n        return shadow(this, \"rgb\", new DeviceRgbCS());\n      },\n      get cmyk() {\n        return shadow(this, \"cmyk\", new DeviceCmykCS());\n      },\n    });\n  }\n}\n\n/**\n * Alternate color space handles both Separation and DeviceN color spaces.  A\n * Separation color space is actually just a DeviceN with one color component.\n * Both color spaces use a tinting function to convert colors to a base color\n * space.\n *\n * The default color is `new Float32Array(new Array(numComps).fill(1))`.\n */\nclass AlternateCS extends ColorSpace {\n  constructor(numComps, base, tintFn) {\n    super(\"Alternate\", numComps);\n    this.base = base;\n    this.tintFn = tintFn;\n    this.tmpBuf = new Float32Array(base.numComps);\n  }\n\n  getRgbItem(src, srcOffset, dest, destOffset) {\n    if (\n      typeof PDFJSDev === \"undefined\" ||\n      PDFJSDev.test(\"!PRODUCTION || TESTING\")\n    ) {\n      assert(\n        dest instanceof Uint8ClampedArray,\n        'AlternateCS.getRgbItem: Unsupported \"dest\" type.'\n      );\n    }\n    const tmpBuf = this.tmpBuf;\n    this.tintFn(src, srcOffset, tmpBuf, 0);\n    this.base.getRgbItem(tmpBuf, 0, dest, destOffset);\n  }\n\n  getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n    if (\n      typeof PDFJSDev === \"undefined\" ||\n      PDFJSDev.test(\"!PRODUCTION || TESTING\")\n    ) {\n      assert(\n        dest instanceof Uint8ClampedArray,\n        'AlternateCS.getRgbBuffer: Unsupported \"dest\" type.'\n      );\n    }\n    const tintFn = this.tintFn;\n    const base = this.base;\n    const scale = 1 / ((1 << bits) - 1);\n    const baseNumComps = base.numComps;\n    const usesZeroToOneRange = base.usesZeroToOneRange;\n    const isPassthrough =\n      (base.isPassthrough(8) || !usesZeroToOneRange) && alpha01 === 0;\n    let pos = isPassthrough ? destOffset : 0;\n    const baseBuf = isPassthrough\n      ? dest\n      : new Uint8ClampedArray(baseNumComps * count);\n    const numComps = this.numComps;\n\n    const scaled = new Float32Array(numComps);\n    const tinted = new Float32Array(baseNumComps);\n    let i, j;\n\n    for (i = 0; i < count; i++) {\n      for (j = 0; j < numComps; j++) {\n        scaled[j] = src[srcOffset++] * scale;\n      }\n      tintFn(scaled, 0, tinted, 0);\n      if (usesZeroToOneRange) {\n        for (j = 0; j < baseNumComps; j++) {\n          baseBuf[pos++] = tinted[j] * 255;\n        }\n      } else {\n        base.getRgbItem(tinted, 0, baseBuf, pos);\n        pos += baseNumComps;\n      }\n    }\n\n    if (!isPassthrough) {\n      base.getRgbBuffer(baseBuf, 0, count, dest, destOffset, 8, alpha01);\n    }\n  }\n\n  getOutputLength(inputLength, alpha01) {\n    return this.base.getOutputLength(\n      (inputLength * this.base.numComps) / this.numComps,\n      alpha01\n    );\n  }\n}\n\nclass PatternCS extends ColorSpace {\n  constructor(baseCS) {\n    super(\"Pattern\", null);\n    this.base = baseCS;\n  }\n\n  isDefaultDecode(decodeMap, bpc) {\n    unreachable(\"Should not call PatternCS.isDefaultDecode\");\n  }\n}\n\n/**\n * The default color is `new Uint8Array([0])`.\n */\nclass IndexedCS extends ColorSpace {\n  constructor(base, highVal, lookup) {\n    super(\"Indexed\", 1);\n    this.base = base;\n    this.highVal = highVal;\n\n    const length = base.numComps * highVal;\n    this.lookup = new Uint8Array(length);\n\n    if (isStream(lookup)) {\n      const bytes = lookup.getBytes(length);\n      this.lookup.set(bytes);\n    } else if (typeof lookup === \"string\") {\n      for (let i = 0; i < length; ++i) {\n        this.lookup[i] = lookup.charCodeAt(i) & 0xff;\n      }\n    } else {\n      throw new FormatError(`IndexedCS - unrecognized lookup table: ${lookup}`);\n    }\n  }\n\n  getRgbItem(src, srcOffset, dest, destOffset) {\n    if (\n      typeof PDFJSDev === \"undefined\" ||\n      PDFJSDev.test(\"!PRODUCTION || TESTING\")\n    ) {\n      assert(\n        dest instanceof Uint8ClampedArray,\n        'IndexedCS.getRgbItem: Unsupported \"dest\" type.'\n      );\n    }\n    const numComps = this.base.numComps;\n    const start = src[srcOffset] * numComps;\n    this.base.getRgbBuffer(this.lookup, start, 1, dest, destOffset, 8, 0);\n  }\n\n  getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n    if (\n      typeof PDFJSDev === \"undefined\" ||\n      PDFJSDev.test(\"!PRODUCTION || TESTING\")\n    ) {\n      assert(\n        dest instanceof Uint8ClampedArray,\n        'IndexedCS.getRgbBuffer: Unsupported \"dest\" type.'\n      );\n    }\n    const base = this.base;\n    const numComps = base.numComps;\n    const outputDelta = base.getOutputLength(numComps, alpha01);\n    const lookup = this.lookup;\n\n    for (let i = 0; i < count; ++i) {\n      const lookupPos = src[srcOffset++] * numComps;\n      base.getRgbBuffer(lookup, lookupPos, 1, dest, destOffset, 8, alpha01);\n      destOffset += outputDelta;\n    }\n  }\n\n  getOutputLength(inputLength, alpha01) {\n    return this.base.getOutputLength(inputLength * this.base.numComps, alpha01);\n  }\n\n  isDefaultDecode(decodeMap, bpc) {\n    if (!Array.isArray(decodeMap)) {\n      return true;\n    }\n    if (decodeMap.length !== 2) {\n      warn(\"Decode map length is not correct\");\n      return true;\n    }\n    if (!Number.isInteger(bpc) || bpc < 1) {\n      warn(\"Bits per component is not correct\");\n      return true;\n    }\n    return decodeMap[0] === 0 && decodeMap[1] === (1 << bpc) - 1;\n  }\n}\n\n/**\n * The default color is `new Float32Array([0])`.\n */\nclass DeviceGrayCS extends ColorSpace {\n  constructor() {\n    super(\"DeviceGray\", 1);\n  }\n\n  getRgbItem(src, srcOffset, dest, destOffset) {\n    if (\n      typeof PDFJSDev === \"undefined\" ||\n      PDFJSDev.test(\"!PRODUCTION || TESTING\")\n    ) {\n      assert(\n        dest instanceof Uint8ClampedArray,\n        'DeviceGrayCS.getRgbItem: Unsupported \"dest\" type.'\n      );\n    }\n    const c = src[srcOffset] * 255;\n    dest[destOffset] = dest[destOffset + 1] = dest[destOffset + 2] = c;\n  }\n\n  getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n    if (\n      typeof PDFJSDev === \"undefined\" ||\n      PDFJSDev.test(\"!PRODUCTION || TESTING\")\n    ) {\n      assert(\n        dest instanceof Uint8ClampedArray,\n        'DeviceGrayCS.getRgbBuffer: Unsupported \"dest\" type.'\n      );\n    }\n    const scale = 255 / ((1 << bits) - 1);\n    let j = srcOffset,\n      q = destOffset;\n    for (let i = 0; i < count; ++i) {\n      const c = scale * src[j++];\n      dest[q++] = c;\n      dest[q++] = c;\n      dest[q++] = c;\n      q += alpha01;\n    }\n  }\n\n  getOutputLength(inputLength, alpha01) {\n    return inputLength * (3 + alpha01);\n  }\n}\n\n/**\n * The default color is `new Float32Array([0, 0, 0])`.\n */\nclass DeviceRgbCS extends ColorSpace {\n  constructor() {\n    super(\"DeviceRGB\", 3);\n  }\n\n  getRgbItem(src, srcOffset, dest, destOffset) {\n    if (\n      typeof PDFJSDev === \"undefined\" ||\n      PDFJSDev.test(\"!PRODUCTION || TESTING\")\n    ) {\n      assert(\n        dest instanceof Uint8ClampedArray,\n        'DeviceRgbCS.getRgbItem: Unsupported \"dest\" type.'\n      );\n    }\n    dest[destOffset] = src[srcOffset] * 255;\n    dest[destOffset + 1] = src[srcOffset + 1] * 255;\n    dest[destOffset + 2] = src[srcOffset + 2] * 255;\n  }\n\n  getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n    if (\n      typeof PDFJSDev === \"undefined\" ||\n      PDFJSDev.test(\"!PRODUCTION || TESTING\")\n    ) {\n      assert(\n        dest instanceof Uint8ClampedArray,\n        'DeviceRgbCS.getRgbBuffer: Unsupported \"dest\" type.'\n      );\n    }\n    if (bits === 8 && alpha01 === 0) {\n      dest.set(src.subarray(srcOffset, srcOffset + count * 3), destOffset);\n      return;\n    }\n    const scale = 255 / ((1 << bits) - 1);\n    let j = srcOffset,\n      q = destOffset;\n    for (let i = 0; i < count; ++i) {\n      dest[q++] = scale * src[j++];\n      dest[q++] = scale * src[j++];\n      dest[q++] = scale * src[j++];\n      q += alpha01;\n    }\n  }\n\n  getOutputLength(inputLength, alpha01) {\n    return ((inputLength * (3 + alpha01)) / 3) | 0;\n  }\n\n  isPassthrough(bits) {\n    return bits === 8;\n  }\n}\n\n/**\n * The default color is `new Float32Array([0, 0, 0, 1])`.\n */\nconst DeviceCmykCS = (function DeviceCmykCSClosure() {\n  // The coefficients below was found using numerical analysis: the method of\n  // steepest descent for the sum((f_i - color_value_i)^2) for r/g/b colors,\n  // where color_value is the tabular value from the table of sampled RGB colors\n  // from CMYK US Web Coated (SWOP) colorspace, and f_i is the corresponding\n  // CMYK color conversion using the estimation below:\n  //   f(A, B,.. N) = Acc+Bcm+Ccy+Dck+c+Fmm+Gmy+Hmk+Im+Jyy+Kyk+Ly+Mkk+Nk+255\n  function convertToRgb(src, srcOffset, srcScale, dest, destOffset) {\n    const c = src[srcOffset] * srcScale;\n    const m = src[srcOffset + 1] * srcScale;\n    const y = src[srcOffset + 2] * srcScale;\n    const k = src[srcOffset + 3] * srcScale;\n\n    dest[destOffset] =\n      255 +\n      c *\n        (-4.387332384609988 * c +\n          54.48615194189176 * m +\n          18.82290502165302 * y +\n          212.25662451639585 * k +\n          -285.2331026137004) +\n      m *\n        (1.7149763477362134 * m -\n          5.6096736904047315 * y +\n          -17.873870861415444 * k -\n          5.497006427196366) +\n      y *\n        (-2.5217340131683033 * y - 21.248923337353073 * k + 17.5119270841813) +\n      k * (-21.86122147463605 * k - 189.48180835922747);\n\n    dest[destOffset + 1] =\n      255 +\n      c *\n        (8.841041422036149 * c +\n          60.118027045597366 * m +\n          6.871425592049007 * y +\n          31.159100130055922 * k +\n          -79.2970844816548) +\n      m *\n        (-15.310361306967817 * m +\n          17.575251261109482 * y +\n          131.35250912493976 * k -\n          190.9453302588951) +\n      y * (4.444339102852739 * y + 9.8632861493405 * k - 24.86741582555878) +\n      k * (-20.737325471181034 * k - 187.80453709719578);\n\n    dest[destOffset + 2] =\n      255 +\n      c *\n        (0.8842522430003296 * c +\n          8.078677503112928 * m +\n          30.89978309703729 * y -\n          0.23883238689178934 * k +\n          -14.183576799673286) +\n      m *\n        (10.49593273432072 * m +\n          63.02378494754052 * y +\n          50.606957656360734 * k -\n          112.23884253719248) +\n      y *\n        (0.03296041114873217 * y +\n          115.60384449646641 * k +\n          -193.58209356861505) +\n      k * (-22.33816807309886 * k - 180.12613974708367);\n  }\n\n  // eslint-disable-next-line no-shadow\n  class DeviceCmykCS extends ColorSpace {\n    constructor() {\n      super(\"DeviceCMYK\", 4);\n    }\n\n    getRgbItem(src, srcOffset, dest, destOffset) {\n      if (\n        typeof PDFJSDev === \"undefined\" ||\n        PDFJSDev.test(\"!PRODUCTION || TESTING\")\n      ) {\n        assert(\n          dest instanceof Uint8ClampedArray,\n          'DeviceCmykCS.getRgbItem: Unsupported \"dest\" type.'\n        );\n      }\n      convertToRgb(src, srcOffset, 1, dest, destOffset);\n    }\n\n    getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n      if (\n        typeof PDFJSDev === \"undefined\" ||\n        PDFJSDev.test(\"!PRODUCTION || TESTING\")\n      ) {\n        assert(\n          dest instanceof Uint8ClampedArray,\n          'DeviceCmykCS.getRgbBuffer: Unsupported \"dest\" type.'\n        );\n      }\n      const scale = 1 / ((1 << bits) - 1);\n      for (let i = 0; i < count; i++) {\n        convertToRgb(src, srcOffset, scale, dest, destOffset);\n        srcOffset += 4;\n        destOffset += 3 + alpha01;\n      }\n    }\n\n    getOutputLength(inputLength, alpha01) {\n      return ((inputLength / 4) * (3 + alpha01)) | 0;\n    }\n  }\n  return DeviceCmykCS;\n})();\n\n/**\n * CalGrayCS: Based on \"PDF Reference, Sixth Ed\", p.245\n *\n * The default color is `new Float32Array([0])`.\n */\nconst CalGrayCS = (function CalGrayCSClosure() {\n  function convertToRgb(cs, src, srcOffset, dest, destOffset, scale) {\n    // A represents a gray component of a calibrated gray space.\n    // A <---> AG in the spec\n    const A = src[srcOffset] * scale;\n    const AG = A ** cs.G;\n\n    // Computes L as per spec. ( = cs.YW * AG )\n    // Except if other than default BlackPoint values are used.\n    const L = cs.YW * AG;\n    // http://www.poynton.com/notes/colour_and_gamma/ColorFAQ.html, Ch 4.\n    // Convert values to rgb range [0, 255].\n    const val = Math.max(295.8 * L ** 0.3333333333333333 - 40.8, 0);\n    dest[destOffset] = val;\n    dest[destOffset + 1] = val;\n    dest[destOffset + 2] = val;\n  }\n\n  // eslint-disable-next-line no-shadow\n  class CalGrayCS extends ColorSpace {\n    constructor(whitePoint, blackPoint, gamma) {\n      super(\"CalGray\", 1);\n\n      if (!whitePoint) {\n        throw new FormatError(\n          \"WhitePoint missing - required for color space CalGray\"\n        );\n      }\n      blackPoint = blackPoint || [0, 0, 0];\n      gamma = gamma || 1;\n\n      // Translate arguments to spec variables.\n      this.XW = whitePoint[0];\n      this.YW = whitePoint[1];\n      this.ZW = whitePoint[2];\n\n      this.XB = blackPoint[0];\n      this.YB = blackPoint[1];\n      this.ZB = blackPoint[2];\n\n      this.G = gamma;\n\n      // Validate variables as per spec.\n      if (this.XW < 0 || this.ZW < 0 || this.YW !== 1) {\n        throw new FormatError(\n          `Invalid WhitePoint components for ${this.name}` +\n            \", no fallback available\"\n        );\n      }\n\n      if (this.XB < 0 || this.YB < 0 || this.ZB < 0) {\n        info(`Invalid BlackPoint for ${this.name}, falling back to default.`);\n        this.XB = this.YB = this.ZB = 0;\n      }\n\n      if (this.XB !== 0 || this.YB !== 0 || this.ZB !== 0) {\n        warn(\n          `${this.name}, BlackPoint: XB: ${this.XB}, YB: ${this.YB}, ` +\n            `ZB: ${this.ZB}, only default values are supported.`\n        );\n      }\n\n      if (this.G < 1) {\n        info(\n          `Invalid Gamma: ${this.G} for ${this.name}, ` +\n            \"falling back to default.\"\n        );\n        this.G = 1;\n      }\n    }\n\n    getRgbItem(src, srcOffset, dest, destOffset) {\n      if (\n        typeof PDFJSDev === \"undefined\" ||\n        PDFJSDev.test(\"!PRODUCTION || TESTING\")\n      ) {\n        assert(\n          dest instanceof Uint8ClampedArray,\n          'CalGrayCS.getRgbItem: Unsupported \"dest\" type.'\n        );\n      }\n      convertToRgb(this, src, srcOffset, dest, destOffset, 1);\n    }\n\n    getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n      if (\n        typeof PDFJSDev === \"undefined\" ||\n        PDFJSDev.test(\"!PRODUCTION || TESTING\")\n      ) {\n        assert(\n          dest instanceof Uint8ClampedArray,\n          'CalGrayCS.getRgbBuffer: Unsupported \"dest\" type.'\n        );\n      }\n      const scale = 1 / ((1 << bits) - 1);\n\n      for (let i = 0; i < count; ++i) {\n        convertToRgb(this, src, srcOffset, dest, destOffset, scale);\n        srcOffset += 1;\n        destOffset += 3 + alpha01;\n      }\n    }\n\n    getOutputLength(inputLength, alpha01) {\n      return inputLength * (3 + alpha01);\n    }\n  }\n  return CalGrayCS;\n})();\n\n/**\n * CalRGBCS: Based on \"PDF Reference, Sixth Ed\", p.247\n *\n * The default color is `new Float32Array([0, 0, 0])`.\n */\nconst CalRGBCS = (function CalRGBCSClosure() {\n  // See http://www.brucelindbloom.com/index.html?Eqn_ChromAdapt.html for these\n  // matrices.\n  // prettier-ignore\n  const BRADFORD_SCALE_MATRIX = new Float32Array([\n    0.8951, 0.2664, -0.1614,\n    -0.7502, 1.7135, 0.0367,\n    0.0389, -0.0685, 1.0296]);\n\n  // prettier-ignore\n  const BRADFORD_SCALE_INVERSE_MATRIX = new Float32Array([\n    0.9869929, -0.1470543, 0.1599627,\n    0.4323053, 0.5183603, 0.0492912,\n    -0.0085287, 0.0400428, 0.9684867]);\n\n  // See http://www.brucelindbloom.com/index.html?Eqn_RGB_XYZ_Matrix.html.\n  // prettier-ignore\n  const SRGB_D65_XYZ_TO_RGB_MATRIX = new Float32Array([\n    3.2404542, -1.5371385, -0.4985314,\n    -0.9692660, 1.8760108, 0.0415560,\n    0.0556434, -0.2040259, 1.0572252]);\n\n  const FLAT_WHITEPOINT_MATRIX = new Float32Array([1, 1, 1]);\n\n  const tempNormalizeMatrix = new Float32Array(3);\n  const tempConvertMatrix1 = new Float32Array(3);\n  const tempConvertMatrix2 = new Float32Array(3);\n\n  const DECODE_L_CONSTANT = ((8 + 16) / 116) ** 3 / 8.0;\n\n  function matrixProduct(a, b, result) {\n    result[0] = a[0] * b[0] + a[1] * b[1] + a[2] * b[2];\n    result[1] = a[3] * b[0] + a[4] * b[1] + a[5] * b[2];\n    result[2] = a[6] * b[0] + a[7] * b[1] + a[8] * b[2];\n  }\n\n  function convertToFlat(sourceWhitePoint, LMS, result) {\n    result[0] = (LMS[0] * 1) / sourceWhitePoint[0];\n    result[1] = (LMS[1] * 1) / sourceWhitePoint[1];\n    result[2] = (LMS[2] * 1) / sourceWhitePoint[2];\n  }\n\n  function convertToD65(sourceWhitePoint, LMS, result) {\n    const D65X = 0.95047;\n    const D65Y = 1;\n    const D65Z = 1.08883;\n\n    result[0] = (LMS[0] * D65X) / sourceWhitePoint[0];\n    result[1] = (LMS[1] * D65Y) / sourceWhitePoint[1];\n    result[2] = (LMS[2] * D65Z) / sourceWhitePoint[2];\n  }\n\n  function sRGBTransferFunction(color) {\n    // See http://en.wikipedia.org/wiki/SRGB.\n    if (color <= 0.0031308) {\n      return adjustToRange(0, 1, 12.92 * color);\n    }\n    // Optimization:\n    // If color is close enough to 1, skip calling the following transform\n    // since calling Math.pow is expensive. If color is larger than\n    // the threshold, the final result is larger than 254.5 since\n    // ((1 + 0.055) * 0.99554525 ** (1 / 2.4) - 0.055) * 255 ===\n    // 254.50000003134699\n    if (color >= 0.99554525) {\n      return 1;\n    }\n    return adjustToRange(0, 1, (1 + 0.055) * color ** (1 / 2.4) - 0.055);\n  }\n\n  function adjustToRange(min, max, value) {\n    return Math.max(min, Math.min(max, value));\n  }\n\n  function decodeL(L) {\n    if (L < 0) {\n      return -decodeL(-L);\n    }\n    if (L > 8.0) {\n      return ((L + 16) / 116) ** 3;\n    }\n    return L * DECODE_L_CONSTANT;\n  }\n\n  function compensateBlackPoint(sourceBlackPoint, XYZ_Flat, result) {\n    // In case the blackPoint is already the default blackPoint then there is\n    // no need to do compensation.\n    if (\n      sourceBlackPoint[0] === 0 &&\n      sourceBlackPoint[1] === 0 &&\n      sourceBlackPoint[2] === 0\n    ) {\n      result[0] = XYZ_Flat[0];\n      result[1] = XYZ_Flat[1];\n      result[2] = XYZ_Flat[2];\n      return;\n    }\n\n    // For the blackPoint calculation details, please see\n    // http://www.adobe.com/content/dam/Adobe/en/devnet/photoshop/sdk/\n    // AdobeBPC.pdf.\n    // The destination blackPoint is the default blackPoint [0, 0, 0].\n    const zeroDecodeL = decodeL(0);\n\n    const X_DST = zeroDecodeL;\n    const X_SRC = decodeL(sourceBlackPoint[0]);\n\n    const Y_DST = zeroDecodeL;\n    const Y_SRC = decodeL(sourceBlackPoint[1]);\n\n    const Z_DST = zeroDecodeL;\n    const Z_SRC = decodeL(sourceBlackPoint[2]);\n\n    const X_Scale = (1 - X_DST) / (1 - X_SRC);\n    const X_Offset = 1 - X_Scale;\n\n    const Y_Scale = (1 - Y_DST) / (1 - Y_SRC);\n    const Y_Offset = 1 - Y_Scale;\n\n    const Z_Scale = (1 - Z_DST) / (1 - Z_SRC);\n    const Z_Offset = 1 - Z_Scale;\n\n    result[0] = XYZ_Flat[0] * X_Scale + X_Offset;\n    result[1] = XYZ_Flat[1] * Y_Scale + Y_Offset;\n    result[2] = XYZ_Flat[2] * Z_Scale + Z_Offset;\n  }\n\n  function normalizeWhitePointToFlat(sourceWhitePoint, XYZ_In, result) {\n    // In case the whitePoint is already flat then there is no need to do\n    // normalization.\n    if (sourceWhitePoint[0] === 1 && sourceWhitePoint[2] === 1) {\n      result[0] = XYZ_In[0];\n      result[1] = XYZ_In[1];\n      result[2] = XYZ_In[2];\n      return;\n    }\n\n    const LMS = result;\n    matrixProduct(BRADFORD_SCALE_MATRIX, XYZ_In, LMS);\n\n    const LMS_Flat = tempNormalizeMatrix;\n    convertToFlat(sourceWhitePoint, LMS, LMS_Flat);\n\n    matrixProduct(BRADFORD_SCALE_INVERSE_MATRIX, LMS_Flat, result);\n  }\n\n  function normalizeWhitePointToD65(sourceWhitePoint, XYZ_In, result) {\n    const LMS = result;\n    matrixProduct(BRADFORD_SCALE_MATRIX, XYZ_In, LMS);\n\n    const LMS_D65 = tempNormalizeMatrix;\n    convertToD65(sourceWhitePoint, LMS, LMS_D65);\n\n    matrixProduct(BRADFORD_SCALE_INVERSE_MATRIX, LMS_D65, result);\n  }\n\n  function convertToRgb(cs, src, srcOffset, dest, destOffset, scale) {\n    // A, B and C represent a red, green and blue components of a calibrated\n    // rgb space.\n    const A = adjustToRange(0, 1, src[srcOffset] * scale);\n    const B = adjustToRange(0, 1, src[srcOffset + 1] * scale);\n    const C = adjustToRange(0, 1, src[srcOffset + 2] * scale);\n\n    // A <---> AGR in the spec\n    // B <---> BGG in the spec\n    // C <---> CGB in the spec\n    const AGR = A === 1 ? 1 : A ** cs.GR;\n    const BGG = B === 1 ? 1 : B ** cs.GG;\n    const CGB = C === 1 ? 1 : C ** cs.GB;\n\n    // Computes intermediate variables L, M, N as per spec.\n    // To decode X, Y, Z values map L, M, N directly to them.\n    const X = cs.MXA * AGR + cs.MXB * BGG + cs.MXC * CGB;\n    const Y = cs.MYA * AGR + cs.MYB * BGG + cs.MYC * CGB;\n    const Z = cs.MZA * AGR + cs.MZB * BGG + cs.MZC * CGB;\n\n    // The following calculations are based on this document:\n    // http://www.adobe.com/content/dam/Adobe/en/devnet/photoshop/sdk/\n    // AdobeBPC.pdf.\n    const XYZ = tempConvertMatrix1;\n    XYZ[0] = X;\n    XYZ[1] = Y;\n    XYZ[2] = Z;\n    const XYZ_Flat = tempConvertMatrix2;\n\n    normalizeWhitePointToFlat(cs.whitePoint, XYZ, XYZ_Flat);\n\n    const XYZ_Black = tempConvertMatrix1;\n    compensateBlackPoint(cs.blackPoint, XYZ_Flat, XYZ_Black);\n\n    const XYZ_D65 = tempConvertMatrix2;\n    normalizeWhitePointToD65(FLAT_WHITEPOINT_MATRIX, XYZ_Black, XYZ_D65);\n\n    const SRGB = tempConvertMatrix1;\n    matrixProduct(SRGB_D65_XYZ_TO_RGB_MATRIX, XYZ_D65, SRGB);\n\n    // Convert the values to rgb range [0, 255].\n    dest[destOffset] = sRGBTransferFunction(SRGB[0]) * 255;\n    dest[destOffset + 1] = sRGBTransferFunction(SRGB[1]) * 255;\n    dest[destOffset + 2] = sRGBTransferFunction(SRGB[2]) * 255;\n  }\n\n  // eslint-disable-next-line no-shadow\n  class CalRGBCS extends ColorSpace {\n    constructor(whitePoint, blackPoint, gamma, matrix) {\n      super(\"CalRGB\", 3);\n\n      if (!whitePoint) {\n        throw new FormatError(\n          \"WhitePoint missing - required for color space CalRGB\"\n        );\n      }\n      blackPoint = blackPoint || new Float32Array(3);\n      gamma = gamma || new Float32Array([1, 1, 1]);\n      matrix = matrix || new Float32Array([1, 0, 0, 0, 1, 0, 0, 0, 1]);\n\n      // Translate arguments to spec variables.\n      const XW = whitePoint[0];\n      const YW = whitePoint[1];\n      const ZW = whitePoint[2];\n      this.whitePoint = whitePoint;\n\n      const XB = blackPoint[0];\n      const YB = blackPoint[1];\n      const ZB = blackPoint[2];\n      this.blackPoint = blackPoint;\n\n      this.GR = gamma[0];\n      this.GG = gamma[1];\n      this.GB = gamma[2];\n\n      this.MXA = matrix[0];\n      this.MYA = matrix[1];\n      this.MZA = matrix[2];\n      this.MXB = matrix[3];\n      this.MYB = matrix[4];\n      this.MZB = matrix[5];\n      this.MXC = matrix[6];\n      this.MYC = matrix[7];\n      this.MZC = matrix[8];\n\n      // Validate variables as per spec.\n      if (XW < 0 || ZW < 0 || YW !== 1) {\n        throw new FormatError(\n          `Invalid WhitePoint components for ${this.name}` +\n            \", no fallback available\"\n        );\n      }\n\n      if (XB < 0 || YB < 0 || ZB < 0) {\n        info(\n          `Invalid BlackPoint for ${this.name} [${XB}, ${YB}, ${ZB}], ` +\n            \"falling back to default.\"\n        );\n        this.blackPoint = new Float32Array(3);\n      }\n\n      if (this.GR < 0 || this.GG < 0 || this.GB < 0) {\n        info(\n          `Invalid Gamma [${this.GR}, ${this.GG}, ${this.GB}] for ` +\n            `${this.name}, falling back to default.`\n        );\n        this.GR = this.GG = this.GB = 1;\n      }\n    }\n\n    getRgbItem(src, srcOffset, dest, destOffset) {\n      if (\n        typeof PDFJSDev === \"undefined\" ||\n        PDFJSDev.test(\"!PRODUCTION || TESTING\")\n      ) {\n        assert(\n          dest instanceof Uint8ClampedArray,\n          'CalRGBCS.getRgbItem: Unsupported \"dest\" type.'\n        );\n      }\n      convertToRgb(this, src, srcOffset, dest, destOffset, 1);\n    }\n\n    getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n      if (\n        typeof PDFJSDev === \"undefined\" ||\n        PDFJSDev.test(\"!PRODUCTION || TESTING\")\n      ) {\n        assert(\n          dest instanceof Uint8ClampedArray,\n          'CalRGBCS.getRgbBuffer: Unsupported \"dest\" type.'\n        );\n      }\n      const scale = 1 / ((1 << bits) - 1);\n\n      for (let i = 0; i < count; ++i) {\n        convertToRgb(this, src, srcOffset, dest, destOffset, scale);\n        srcOffset += 3;\n        destOffset += 3 + alpha01;\n      }\n    }\n\n    getOutputLength(inputLength, alpha01) {\n      return ((inputLength * (3 + alpha01)) / 3) | 0;\n    }\n  }\n  return CalRGBCS;\n})();\n\n/**\n * LabCS: Based on \"PDF Reference, Sixth Ed\", p.250\n *\n * The default color is `new Float32Array([0, 0, 0])`.\n */\nconst LabCS = (function LabCSClosure() {\n  // Function g(x) from spec\n  function fn_g(x) {\n    let result;\n    if (x >= 6 / 29) {\n      result = x ** 3;\n    } else {\n      result = (108 / 841) * (x - 4 / 29);\n    }\n    return result;\n  }\n\n  function decode(value, high1, low2, high2) {\n    return low2 + (value * (high2 - low2)) / high1;\n  }\n\n  // If decoding is needed maxVal should be 2^bits per component - 1.\n  function convertToRgb(cs, src, srcOffset, maxVal, dest, destOffset) {\n    // XXX: Lab input is in the range of [0, 100], [amin, amax], [bmin, bmax]\n    // not the usual [0, 1]. If a command like setFillColor is used the src\n    // values will already be within the correct range. However, if we are\n    // converting an image we have to map the values to the correct range given\n    // above.\n    // Ls,as,bs <---> L*,a*,b* in the spec\n    let Ls = src[srcOffset];\n    let as = src[srcOffset + 1];\n    let bs = src[srcOffset + 2];\n    if (maxVal !== false) {\n      Ls = decode(Ls, maxVal, 0, 100);\n      as = decode(as, maxVal, cs.amin, cs.amax);\n      bs = decode(bs, maxVal, cs.bmin, cs.bmax);\n    }\n\n    // Adjust limits of 'as' and 'bs'\n    if (as > cs.amax) {\n      as = cs.amax;\n    } else if (as < cs.amin) {\n      as = cs.amin;\n    }\n    if (bs > cs.bmax) {\n      bs = cs.bmax;\n    } else if (bs < cs.bmin) {\n      bs = cs.bmin;\n    }\n\n    // Computes intermediate variables X,Y,Z as per spec\n    const M = (Ls + 16) / 116;\n    const L = M + as / 500;\n    const N = M - bs / 200;\n\n    const X = cs.XW * fn_g(L);\n    const Y = cs.YW * fn_g(M);\n    const Z = cs.ZW * fn_g(N);\n\n    let r, g, b;\n    // Using different conversions for D50 and D65 white points,\n    // per http://www.color.org/srgb.pdf\n    if (cs.ZW < 1) {\n      // Assuming D50 (X=0.9642, Y=1.00, Z=0.8249)\n      r = X * 3.1339 + Y * -1.617 + Z * -0.4906;\n      g = X * -0.9785 + Y * 1.916 + Z * 0.0333;\n      b = X * 0.072 + Y * -0.229 + Z * 1.4057;\n    } else {\n      // Assuming D65 (X=0.9505, Y=1.00, Z=1.0888)\n      r = X * 3.2406 + Y * -1.5372 + Z * -0.4986;\n      g = X * -0.9689 + Y * 1.8758 + Z * 0.0415;\n      b = X * 0.0557 + Y * -0.204 + Z * 1.057;\n    }\n    // Convert the color values to the [0,255] range (clamping is automatic).\n    dest[destOffset] = Math.sqrt(r) * 255;\n    dest[destOffset + 1] = Math.sqrt(g) * 255;\n    dest[destOffset + 2] = Math.sqrt(b) * 255;\n  }\n\n  // eslint-disable-next-line no-shadow\n  class LabCS extends ColorSpace {\n    constructor(whitePoint, blackPoint, range) {\n      super(\"Lab\", 3);\n\n      if (!whitePoint) {\n        throw new FormatError(\n          \"WhitePoint missing - required for color space Lab\"\n        );\n      }\n      blackPoint = blackPoint || [0, 0, 0];\n      range = range || [-100, 100, -100, 100];\n\n      // Translate args to spec variables\n      this.XW = whitePoint[0];\n      this.YW = whitePoint[1];\n      this.ZW = whitePoint[2];\n      this.amin = range[0];\n      this.amax = range[1];\n      this.bmin = range[2];\n      this.bmax = range[3];\n\n      // These are here just for completeness - the spec doesn't offer any\n      // formulas that use BlackPoint in Lab\n      this.XB = blackPoint[0];\n      this.YB = blackPoint[1];\n      this.ZB = blackPoint[2];\n\n      // Validate vars as per spec\n      if (this.XW < 0 || this.ZW < 0 || this.YW !== 1) {\n        throw new FormatError(\n          \"Invalid WhitePoint components, no fallback available\"\n        );\n      }\n\n      if (this.XB < 0 || this.YB < 0 || this.ZB < 0) {\n        info(\"Invalid BlackPoint, falling back to default\");\n        this.XB = this.YB = this.ZB = 0;\n      }\n\n      if (this.amin > this.amax || this.bmin > this.bmax) {\n        info(\"Invalid Range, falling back to defaults\");\n        this.amin = -100;\n        this.amax = 100;\n        this.bmin = -100;\n        this.bmax = 100;\n      }\n    }\n\n    getRgbItem(src, srcOffset, dest, destOffset) {\n      if (\n        typeof PDFJSDev === \"undefined\" ||\n        PDFJSDev.test(\"!PRODUCTION || TESTING\")\n      ) {\n        assert(\n          dest instanceof Uint8ClampedArray,\n          'LabCS.getRgbItem: Unsupported \"dest\" type.'\n        );\n      }\n      convertToRgb(this, src, srcOffset, false, dest, destOffset);\n    }\n\n    getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n      if (\n        typeof PDFJSDev === \"undefined\" ||\n        PDFJSDev.test(\"!PRODUCTION || TESTING\")\n      ) {\n        assert(\n          dest instanceof Uint8ClampedArray,\n          'LabCS.getRgbBuffer: Unsupported \"dest\" type.'\n        );\n      }\n      const maxVal = (1 << bits) - 1;\n      for (let i = 0; i < count; i++) {\n        convertToRgb(this, src, srcOffset, maxVal, dest, destOffset);\n        srcOffset += 3;\n        destOffset += 3 + alpha01;\n      }\n    }\n\n    getOutputLength(inputLength, alpha01) {\n      return ((inputLength * (3 + alpha01)) / 3) | 0;\n    }\n\n    isDefaultDecode(decodeMap, bpc) {\n      // XXX: Decoding is handled with the lab conversion because of the strange\n      // ranges that are used.\n      return true;\n    }\n\n    get usesZeroToOneRange() {\n      return shadow(this, \"usesZeroToOneRange\", false);\n    }\n  }\n  return LabCS;\n})();\n\nexport { ColorSpace };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* eslint-disable no-var */\n\nimport {\n  AbortException,\n  assert,\n  CMapCompressionType,\n  createPromiseCapability,\n  FONT_IDENTITY_MATRIX,\n  FormatError,\n  IDENTITY_MATRIX,\n  info,\n  isArrayEqual,\n  isNum,\n  isString,\n  OPS,\n  shadow,\n  stringToPDFString,\n  TextRenderingMode,\n  UNSUPPORTED_FEATURES,\n  Util,\n  warn,\n} from \"../shared/util.js\";\nimport { CMapFactory, IdentityCMap } from \"./cmap.js\";\nimport {\n  Cmd,\n  Dict,\n  EOF,\n  isDict,\n  isName,\n  isRef,\n  isStream,\n  Name,\n  Ref,\n  RefSet,\n} from \"./primitives.js\";\nimport { ErrorFont, Font } from \"./fonts.js\";\nimport { FontFlags, getFontType } from \"./fonts_utils.js\";\nimport {\n  getEncoding,\n  MacRomanEncoding,\n  StandardEncoding,\n  SymbolSetEncoding,\n  WinAnsiEncoding,\n  ZapfDingbatsEncoding,\n} from \"./encodings.js\";\nimport {\n  getFontNameToFileMap,\n  getSerifFonts,\n  getStandardFontName,\n  getStdFontMap,\n  getSymbolsFonts,\n} from \"./standard_fonts.js\";\nimport {\n  getNormalizedUnicodes,\n  getUnicodeForGlyph,\n  reverseIfRtl,\n} from \"./unicode.js\";\nimport { getTilingPatternIR, Pattern } from \"./pattern.js\";\nimport { getXfaFontDict, getXfaFontName } from \"./xfa_fonts.js\";\nimport { IdentityToUnicodeMap, ToUnicodeMap } from \"./to_unicode_map.js\";\nimport { isPDFFunction, PDFFunctionFactory } from \"./function.js\";\nimport { Lexer, Parser } from \"./parser.js\";\nimport {\n  LocalColorSpaceCache,\n  LocalGStateCache,\n  LocalImageCache,\n  LocalTilingPatternCache,\n} from \"./image_utils.js\";\nimport { NullStream, Stream } from \"./stream.js\";\nimport { BaseStream } from \"./base_stream.js\";\nimport { bidi } from \"./bidi.js\";\nimport { ColorSpace } from \"./colorspace.js\";\nimport { DecodeStream } from \"./decode_stream.js\";\nimport { getGlyphsUnicode } from \"./glyphlist.js\";\nimport { getLookupTableFactory } from \"./core_utils.js\";\nimport { getMetrics } from \"./metrics.js\";\nimport { MurmurHash3_64 } from \"./murmurhash3.js\";\nimport { OperatorList } from \"./operator_list.js\";\nimport { PDFImage } from \"./image.js\";\n\nconst DefaultPartialEvaluatorOptions = Object.freeze({\n  maxImageSize: -1,\n  disableFontFace: false,\n  ignoreErrors: false,\n  isEvalSupported: true,\n  fontExtraProperties: false,\n  useSystemFonts: true,\n  cMapUrl: null,\n  standardFontDataUrl: null,\n});\n\nconst PatternType = {\n  TILING: 1,\n  SHADING: 2,\n};\n\n// Optionally avoid sending individual, or very few, text chunks to reduce\n// `postMessage` overhead with ReadableStream (see issue 13962).\n//\n// PLEASE NOTE: This value should *not* be too large (it's used as a lower limit\n// in `enqueueChunk`), since that would cause streaming of textContent to become\n// essentially useless in practice by sending all (or most) chunks at once.\n// Also, a too large value would (indirectly) affect the main-thread `textLayer`\n// building negatively by forcing all textContent to be handled at once, which\n// could easily end up hurting *overall* performance (e.g. rendering as well).\nconst TEXT_CHUNK_BATCH_SIZE = 10;\n\nconst deferred = Promise.resolve();\n\n// Convert PDF blend mode names to HTML5 blend mode names.\nfunction normalizeBlendMode(value, parsingArray = false) {\n  if (Array.isArray(value)) {\n    // Use the first *supported* BM value in the Array (fixes issue11279.pdf).\n    for (let i = 0, ii = value.length; i < ii; i++) {\n      const maybeBM = normalizeBlendMode(value[i], /* parsingArray = */ true);\n      if (maybeBM) {\n        return maybeBM;\n      }\n    }\n    warn(`Unsupported blend mode Array: ${value}`);\n    return \"source-over\";\n  }\n\n  if (!isName(value)) {\n    if (parsingArray) {\n      return null;\n    }\n    return \"source-over\";\n  }\n  switch (value.name) {\n    case \"Normal\":\n    case \"Compatible\":\n      return \"source-over\";\n    case \"Multiply\":\n      return \"multiply\";\n    case \"Screen\":\n      return \"screen\";\n    case \"Overlay\":\n      return \"overlay\";\n    case \"Darken\":\n      return \"darken\";\n    case \"Lighten\":\n      return \"lighten\";\n    case \"ColorDodge\":\n      return \"color-dodge\";\n    case \"ColorBurn\":\n      return \"color-burn\";\n    case \"HardLight\":\n      return \"hard-light\";\n    case \"SoftLight\":\n      return \"soft-light\";\n    case \"Difference\":\n      return \"difference\";\n    case \"Exclusion\":\n      return \"exclusion\";\n    case \"Hue\":\n      return \"hue\";\n    case \"Saturation\":\n      return \"saturation\";\n    case \"Color\":\n      return \"color\";\n    case \"Luminosity\":\n      return \"luminosity\";\n  }\n  if (parsingArray) {\n    return null;\n  }\n  warn(`Unsupported blend mode: ${value.name}`);\n  return \"source-over\";\n}\n\n// Trying to minimize Date.now() usage and check every 100 time.\nclass TimeSlotManager {\n  static get TIME_SLOT_DURATION_MS() {\n    return shadow(this, \"TIME_SLOT_DURATION_MS\", 20);\n  }\n\n  static get CHECK_TIME_EVERY() {\n    return shadow(this, \"CHECK_TIME_EVERY\", 100);\n  }\n\n  constructor() {\n    this.reset();\n  }\n\n  check() {\n    if (++this.checked < TimeSlotManager.CHECK_TIME_EVERY) {\n      return false;\n    }\n    this.checked = 0;\n    return this.endTime <= Date.now();\n  }\n\n  reset() {\n    this.endTime = Date.now() + TimeSlotManager.TIME_SLOT_DURATION_MS;\n    this.checked = 0;\n  }\n}\n\nclass PartialEvaluator {\n  constructor({\n    xref,\n    handler,\n    pageIndex,\n    idFactory,\n    fontCache,\n    builtInCMapCache,\n    standardFontDataCache,\n    globalImageCache,\n    options = null,\n  }) {\n    this.xref = xref;\n    this.handler = handler;\n    this.pageIndex = pageIndex;\n    this.idFactory = idFactory;\n    this.fontCache = fontCache;\n    this.builtInCMapCache = builtInCMapCache;\n    this.standardFontDataCache = standardFontDataCache;\n    this.globalImageCache = globalImageCache;\n    this.options = options || DefaultPartialEvaluatorOptions;\n    this.parsingType3Font = false;\n\n    this._fetchBuiltInCMapBound = this.fetchBuiltInCMap.bind(this);\n  }\n\n  /**\n   * Since Functions are only cached (locally) by reference, we can share one\n   * `PDFFunctionFactory` instance within this `PartialEvaluator` instance.\n   */\n  get _pdfFunctionFactory() {\n    const pdfFunctionFactory = new PDFFunctionFactory({\n      xref: this.xref,\n      isEvalSupported: this.options.isEvalSupported,\n    });\n    return shadow(this, \"_pdfFunctionFactory\", pdfFunctionFactory);\n  }\n\n  clone(newOptions = null) {\n    const newEvaluator = Object.create(this);\n    newEvaluator.options = Object.assign(\n      Object.create(null),\n      this.options,\n      newOptions\n    );\n    return newEvaluator;\n  }\n\n  hasBlendModes(resources, nonBlendModesSet) {\n    if (!(resources instanceof Dict)) {\n      return false;\n    }\n    if (resources.objId && nonBlendModesSet.has(resources.objId)) {\n      return false;\n    }\n\n    const processed = new RefSet(nonBlendModesSet);\n    if (resources.objId) {\n      processed.put(resources.objId);\n    }\n\n    const nodes = [resources],\n      xref = this.xref;\n    while (nodes.length) {\n      const node = nodes.shift();\n      // First check the current resources for blend modes.\n      const graphicStates = node.get(\"ExtGState\");\n      if (graphicStates instanceof Dict) {\n        for (let graphicState of graphicStates.getRawValues()) {\n          if (graphicState instanceof Ref) {\n            if (processed.has(graphicState)) {\n              continue; // The ExtGState has already been processed.\n            }\n            try {\n              graphicState = xref.fetch(graphicState);\n            } catch (ex) {\n              // Avoid parsing a corrupt ExtGState more than once.\n              processed.put(graphicState);\n\n              info(`hasBlendModes - ignoring ExtGState: \"${ex}\".`);\n              continue;\n            }\n          }\n          if (!(graphicState instanceof Dict)) {\n            continue;\n          }\n          if (graphicState.objId) {\n            processed.put(graphicState.objId);\n          }\n\n          const bm = graphicState.get(\"BM\");\n          if (bm instanceof Name) {\n            if (bm.name !== \"Normal\") {\n              return true;\n            }\n            continue;\n          }\n          if (bm !== undefined && Array.isArray(bm)) {\n            for (const element of bm) {\n              if (element instanceof Name && element.name !== \"Normal\") {\n                return true;\n              }\n            }\n          }\n        }\n      }\n      // Descend into the XObjects to look for more resources and blend modes.\n      const xObjects = node.get(\"XObject\");\n      if (!(xObjects instanceof Dict)) {\n        continue;\n      }\n      for (let xObject of xObjects.getRawValues()) {\n        if (xObject instanceof Ref) {\n          if (processed.has(xObject)) {\n            // The XObject has already been processed, and by avoiding a\n            // redundant `xref.fetch` we can *significantly* reduce the load\n            // time for badly generated PDF files (fixes issue6961.pdf).\n            continue;\n          }\n          try {\n            xObject = xref.fetch(xObject);\n          } catch (ex) {\n            // Avoid parsing a corrupt XObject more than once.\n            processed.put(xObject);\n\n            info(`hasBlendModes - ignoring XObject: \"${ex}\".`);\n            continue;\n          }\n        }\n        if (!isStream(xObject)) {\n          continue;\n        }\n        if (xObject.dict.objId) {\n          processed.put(xObject.dict.objId);\n        }\n        const xResources = xObject.dict.get(\"Resources\");\n        if (!(xResources instanceof Dict)) {\n          continue;\n        }\n        // Checking objId to detect an infinite loop.\n        if (xResources.objId && processed.has(xResources.objId)) {\n          continue;\n        }\n\n        nodes.push(xResources);\n        if (xResources.objId) {\n          processed.put(xResources.objId);\n        }\n      }\n    }\n\n    // When no blend modes exist, there's no need re-fetch/re-parse any of the\n    // processed `Ref`s again for subsequent pages. This helps reduce redundant\n    // `XRef.fetch` calls for some documents (e.g. issue6961.pdf).\n    processed.forEach(ref => {\n      nonBlendModesSet.put(ref);\n    });\n    return false;\n  }\n\n  async fetchBuiltInCMap(name) {\n    const cachedData = this.builtInCMapCache.get(name);\n    if (cachedData) {\n      return cachedData;\n    }\n    let data;\n\n    if (this.options.cMapUrl !== null) {\n      // Only compressed CMaps are (currently) supported here.\n      const url = `${this.options.cMapUrl}${name}.bcmap`;\n      const response = await fetch(url);\n      if (!response.ok) {\n        throw new Error(\n          `fetchBuiltInCMap: failed to fetch file \"${url}\" with \"${response.statusText}\".`\n        );\n      }\n      data = {\n        cMapData: new Uint8Array(await response.arrayBuffer()),\n        compressionType: CMapCompressionType.BINARY,\n      };\n    } else {\n      // Get the data on the main-thread instead.\n      data = await this.handler.sendWithPromise(\"FetchBuiltInCMap\", { name });\n    }\n\n    if (data.compressionType !== CMapCompressionType.NONE) {\n      // Given the size of uncompressed CMaps, only cache compressed ones.\n      this.builtInCMapCache.set(name, data);\n    }\n    return data;\n  }\n\n  async fetchStandardFontData(name) {\n    const cachedData = this.standardFontDataCache.get(name);\n    if (cachedData) {\n      return new Stream(cachedData);\n    }\n\n    // The symbol fonts are not consistent across platforms, always load the\n    // standard font data for them.\n    if (\n      this.options.useSystemFonts &&\n      name !== \"Symbol\" &&\n      name !== \"ZapfDingbats\"\n    ) {\n      return null;\n    }\n\n    const standardFontNameToFileName = getFontNameToFileMap(),\n      filename = standardFontNameToFileName[name];\n    let data;\n\n    if (this.options.standardFontDataUrl !== null) {\n      const url = `${this.options.standardFontDataUrl}${filename}`;\n      const response = await fetch(url);\n      if (!response.ok) {\n        warn(\n          `fetchStandardFontData: failed to fetch file \"${url}\" with \"${response.statusText}\".`\n        );\n      } else {\n        data = await response.arrayBuffer();\n      }\n    } else {\n      // Get the data on the main-thread instead.\n      try {\n        data = await this.handler.sendWithPromise(\"FetchStandardFontData\", {\n          filename,\n        });\n      } catch (e) {\n        warn(\n          `fetchStandardFontData: failed to fetch file \"${filename}\" with \"${e}\".`\n        );\n      }\n    }\n\n    if (!data) {\n      return null;\n    }\n    // Cache the \"raw\" standard font data, to avoid fetching it repeateadly\n    // (see e.g. issue 11399).\n    this.standardFontDataCache.set(name, data);\n\n    return new Stream(data);\n  }\n\n  async buildFormXObject(\n    resources,\n    xobj,\n    smask,\n    operatorList,\n    task,\n    initialState,\n    localColorSpaceCache\n  ) {\n    const dict = xobj.dict;\n    const matrix = dict.getArray(\"Matrix\");\n    let bbox = dict.getArray(\"BBox\");\n    if (Array.isArray(bbox) && bbox.length === 4) {\n      bbox = Util.normalizeRect(bbox);\n    } else {\n      bbox = null;\n    }\n\n    let optionalContent, groupOptions;\n    if (dict.has(\"OC\")) {\n      optionalContent = await this.parseMarkedContentProps(\n        dict.get(\"OC\"),\n        resources\n      );\n    }\n    if (optionalContent !== undefined) {\n      operatorList.addOp(OPS.beginMarkedContentProps, [\"OC\", optionalContent]);\n    }\n    const group = dict.get(\"Group\");\n    if (group) {\n      groupOptions = {\n        matrix,\n        bbox,\n        smask,\n        isolated: false,\n        knockout: false,\n      };\n\n      const groupSubtype = group.get(\"S\");\n      let colorSpace = null;\n      if (isName(groupSubtype, \"Transparency\")) {\n        groupOptions.isolated = group.get(\"I\") || false;\n        groupOptions.knockout = group.get(\"K\") || false;\n        if (group.has(\"CS\")) {\n          const cs = group.getRaw(\"CS\");\n\n          const cachedColorSpace = ColorSpace.getCached(\n            cs,\n            this.xref,\n            localColorSpaceCache\n          );\n          if (cachedColorSpace) {\n            colorSpace = cachedColorSpace;\n          } else {\n            colorSpace = await this.parseColorSpace({\n              cs,\n              resources,\n              localColorSpaceCache,\n            });\n          }\n        }\n      }\n\n      if (smask && smask.backdrop) {\n        colorSpace = colorSpace || ColorSpace.singletons.rgb;\n        smask.backdrop = colorSpace.getRgb(smask.backdrop, 0);\n      }\n\n      operatorList.addOp(OPS.beginGroup, [groupOptions]);\n    }\n\n    // If it's a group, a new canvas will be created that is the size of the\n    // bounding box and translated to the correct position so we don't need to\n    // apply the bounding box to it.\n    const args = group ? [matrix, null] : [matrix, bbox];\n    operatorList.addOp(OPS.paintFormXObjectBegin, args);\n\n    return this.getOperatorList({\n      stream: xobj,\n      task,\n      resources: dict.get(\"Resources\") || resources,\n      operatorList,\n      initialState,\n    }).then(function () {\n      operatorList.addOp(OPS.paintFormXObjectEnd, []);\n\n      if (group) {\n        operatorList.addOp(OPS.endGroup, [groupOptions]);\n      }\n\n      if (optionalContent !== undefined) {\n        operatorList.addOp(OPS.endMarkedContent, []);\n      }\n    });\n  }\n\n  _sendImgData(objId, imgData, cacheGlobally = false) {\n    const transfers = imgData ? [imgData.data.buffer] : null;\n\n    if (this.parsingType3Font || cacheGlobally) {\n      return this.handler.send(\n        \"commonobj\",\n        [objId, \"Image\", imgData],\n        transfers\n      );\n    }\n    return this.handler.send(\n      \"obj\",\n      [objId, this.pageIndex, \"Image\", imgData],\n      transfers\n    );\n  }\n\n  async buildPaintImageXObject({\n    resources,\n    image,\n    isInline = false,\n    operatorList,\n    cacheKey,\n    localImageCache,\n    localColorSpaceCache,\n  }) {\n    const dict = image.dict;\n    const imageRef = dict.objId;\n    const w = dict.get(\"W\", \"Width\");\n    const h = dict.get(\"H\", \"Height\");\n\n    if (!(w && isNum(w)) || !(h && isNum(h))) {\n      warn(\"Image dimensions are missing, or not numbers.\");\n      return;\n    }\n    const maxImageSize = this.options.maxImageSize;\n    if (maxImageSize !== -1 && w * h > maxImageSize) {\n      warn(\"Image exceeded maximum allowed size and was removed.\");\n      return;\n    }\n\n    let optionalContent;\n    if (dict.has(\"OC\")) {\n      optionalContent = await this.parseMarkedContentProps(\n        dict.get(\"OC\"),\n        resources\n      );\n    }\n    if (optionalContent !== undefined) {\n      operatorList.addOp(OPS.beginMarkedContentProps, [\"OC\", optionalContent]);\n    }\n\n    const imageMask = dict.get(\"IM\", \"ImageMask\") || false;\n    const interpolate = dict.get(\"I\", \"Interpolate\");\n    let imgData, args;\n    if (imageMask) {\n      // This depends on a tmpCanvas being filled with the\n      // current fillStyle, such that processing the pixel\n      // data can't be done here. Instead of creating a\n      // complete PDFImage, only read the information needed\n      // for later.\n      const bitStrideLength = (w + 7) >> 3;\n      const imgArray = image.getBytes(\n        bitStrideLength * h,\n        /* forceClamped = */ true\n      );\n      const decode = dict.getArray(\"D\", \"Decode\");\n\n      imgData = PDFImage.createMask({\n        imgArray,\n        width: w,\n        height: h,\n        imageIsFromDecodeStream: image instanceof DecodeStream,\n        inverseDecode: !!decode && decode[0] > 0,\n        interpolate,\n      });\n      imgData.cached = !!cacheKey;\n      args = [imgData];\n\n      operatorList.addOp(OPS.paintImageMaskXObject, args);\n      if (cacheKey) {\n        localImageCache.set(cacheKey, imageRef, {\n          fn: OPS.paintImageMaskXObject,\n          args,\n        });\n      }\n\n      if (optionalContent !== undefined) {\n        operatorList.addOp(OPS.endMarkedContent, []);\n      }\n      return;\n    }\n\n    const softMask = dict.get(\"SM\", \"SMask\") || false;\n    const mask = dict.get(\"Mask\") || false;\n\n    const SMALL_IMAGE_DIMENSIONS = 200;\n    // Inlining small images into the queue as RGB data\n    if (isInline && !softMask && !mask && w + h < SMALL_IMAGE_DIMENSIONS) {\n      const imageObj = new PDFImage({\n        xref: this.xref,\n        res: resources,\n        image,\n        isInline,\n        pdfFunctionFactory: this._pdfFunctionFactory,\n        localColorSpaceCache,\n      });\n      // We force the use of RGBA_32BPP images here, because we can't handle\n      // any other kind.\n      imgData = imageObj.createImageData(/* forceRGBA = */ true);\n      operatorList.addOp(OPS.paintInlineImageXObject, [imgData]);\n\n      if (optionalContent !== undefined) {\n        operatorList.addOp(OPS.endMarkedContent, []);\n      }\n      return;\n    }\n\n    // If there is no imageMask, create the PDFImage and a lot\n    // of image processing can be done here.\n    let objId = `img_${this.idFactory.createObjId()}`,\n      cacheGlobally = false;\n\n    if (this.parsingType3Font) {\n      objId = `${this.idFactory.getDocId()}_type3_${objId}`;\n    } else if (imageRef) {\n      cacheGlobally = this.globalImageCache.shouldCache(\n        imageRef,\n        this.pageIndex\n      );\n\n      if (cacheGlobally) {\n        objId = `${this.idFactory.getDocId()}_${objId}`;\n      }\n    }\n\n    // Ensure that the dependency is added before the image is decoded.\n    operatorList.addDependency(objId);\n    args = [objId, w, h];\n\n    PDFImage.buildImage({\n      xref: this.xref,\n      res: resources,\n      image,\n      isInline,\n      pdfFunctionFactory: this._pdfFunctionFactory,\n      localColorSpaceCache,\n    })\n      .then(imageObj => {\n        imgData = imageObj.createImageData(/* forceRGBA = */ false);\n\n        if (cacheKey && imageRef && cacheGlobally) {\n          this.globalImageCache.addByteSize(imageRef, imgData.data.length);\n        }\n        return this._sendImgData(objId, imgData, cacheGlobally);\n      })\n      .catch(reason => {\n        warn(`Unable to decode image \"${objId}\": \"${reason}\".`);\n\n        return this._sendImgData(objId, /* imgData = */ null, cacheGlobally);\n      });\n\n    operatorList.addOp(OPS.paintImageXObject, args);\n    if (cacheKey) {\n      localImageCache.set(cacheKey, imageRef, {\n        fn: OPS.paintImageXObject,\n        args,\n      });\n\n      if (imageRef) {\n        assert(!isInline, \"Cannot cache an inline image globally.\");\n        this.globalImageCache.addPageIndex(imageRef, this.pageIndex);\n\n        if (cacheGlobally) {\n          this.globalImageCache.setData(imageRef, {\n            objId,\n            fn: OPS.paintImageXObject,\n            args,\n            byteSize: 0, // Temporary entry, note `addByteSize` above.\n          });\n        }\n      }\n    }\n\n    if (optionalContent !== undefined) {\n      operatorList.addOp(OPS.endMarkedContent, []);\n    }\n  }\n\n  handleSMask(\n    smask,\n    resources,\n    operatorList,\n    task,\n    stateManager,\n    localColorSpaceCache\n  ) {\n    const smaskContent = smask.get(\"G\");\n    const smaskOptions = {\n      subtype: smask.get(\"S\").name,\n      backdrop: smask.get(\"BC\"),\n    };\n\n    // The SMask might have a alpha/luminosity value transfer function --\n    // we will build a map of integer values in range 0..255 to be fast.\n    const transferObj = smask.get(\"TR\");\n    if (isPDFFunction(transferObj)) {\n      const transferFn = this._pdfFunctionFactory.create(transferObj);\n      const transferMap = new Uint8Array(256);\n      const tmp = new Float32Array(1);\n      for (let i = 0; i < 256; i++) {\n        tmp[0] = i / 255;\n        transferFn(tmp, 0, tmp, 0);\n        transferMap[i] = (tmp[0] * 255) | 0;\n      }\n      smaskOptions.transferMap = transferMap;\n    }\n\n    return this.buildFormXObject(\n      resources,\n      smaskContent,\n      smaskOptions,\n      operatorList,\n      task,\n      stateManager.state.clone(),\n      localColorSpaceCache\n    );\n  }\n\n  handleTransferFunction(tr) {\n    let transferArray;\n    if (Array.isArray(tr)) {\n      transferArray = tr;\n    } else if (isPDFFunction(tr)) {\n      transferArray = [tr];\n    } else {\n      return null; // Not a valid transfer function entry.\n    }\n\n    const transferMaps = [];\n    let numFns = 0,\n      numEffectfulFns = 0;\n    for (const entry of transferArray) {\n      const transferObj = this.xref.fetchIfRef(entry);\n      numFns++;\n\n      if (isName(transferObj, \"Identity\")) {\n        transferMaps.push(null);\n        continue;\n      } else if (!isPDFFunction(transferObj)) {\n        return null; // Not a valid transfer function object.\n      }\n\n      const transferFn = this._pdfFunctionFactory.create(transferObj);\n      const transferMap = new Uint8Array(256),\n        tmp = new Float32Array(1);\n      for (let j = 0; j < 256; j++) {\n        tmp[0] = j / 255;\n        transferFn(tmp, 0, tmp, 0);\n        transferMap[j] = (tmp[0] * 255) | 0;\n      }\n      transferMaps.push(transferMap);\n      numEffectfulFns++;\n    }\n\n    if (!(numFns === 1 || numFns === 4)) {\n      return null; // Only 1 or 4 functions are supported, by the specification.\n    }\n    if (numEffectfulFns === 0) {\n      return null; // Only /Identity transfer functions found, which are no-ops.\n    }\n    return transferMaps;\n  }\n\n  handleTilingType(\n    fn,\n    color,\n    resources,\n    pattern,\n    patternDict,\n    operatorList,\n    task,\n    localTilingPatternCache\n  ) {\n    // Create an IR of the pattern code.\n    const tilingOpList = new OperatorList();\n    // Merge the available resources, to prevent issues when the patternDict\n    // is missing some /Resources entries (fixes issue6541.pdf).\n    const patternResources = Dict.merge({\n      xref: this.xref,\n      dictArray: [patternDict.get(\"Resources\"), resources],\n    });\n\n    return this.getOperatorList({\n      stream: pattern,\n      task,\n      resources: patternResources,\n      operatorList: tilingOpList,\n    })\n      .then(function () {\n        const operatorListIR = tilingOpList.getIR();\n        const tilingPatternIR = getTilingPatternIR(\n          operatorListIR,\n          patternDict,\n          color\n        );\n        // Add the dependencies to the parent operator list so they are\n        // resolved before the sub operator list is executed synchronously.\n        operatorList.addDependencies(tilingOpList.dependencies);\n        operatorList.addOp(fn, tilingPatternIR);\n\n        if (patternDict.objId) {\n          localTilingPatternCache.set(/* name = */ null, patternDict.objId, {\n            operatorListIR,\n            dict: patternDict,\n          });\n        }\n      })\n      .catch(reason => {\n        if (reason instanceof AbortException) {\n          return;\n        }\n        if (this.options.ignoreErrors) {\n          // Error(s) in the TilingPattern -- sending unsupported feature\n          // notification and allow rendering to continue.\n          this.handler.send(\"UnsupportedFeature\", {\n            featureId: UNSUPPORTED_FEATURES.errorTilingPattern,\n          });\n          warn(`handleTilingType - ignoring pattern: \"${reason}\".`);\n          return;\n        }\n        throw reason;\n      });\n  }\n\n  handleSetFont(\n    resources,\n    fontArgs,\n    fontRef,\n    operatorList,\n    task,\n    state,\n    fallbackFontDict = null,\n    cssFontInfo = null\n  ) {\n    const fontName =\n      fontArgs && fontArgs[0] instanceof Name ? fontArgs[0].name : null;\n\n    return this.loadFont(\n      fontName,\n      fontRef,\n      resources,\n      fallbackFontDict,\n      cssFontInfo\n    )\n      .then(translated => {\n        if (!translated.font.isType3Font) {\n          return translated;\n        }\n        return translated\n          .loadType3Data(this, resources, task)\n          .then(function () {\n            // Add the dependencies to the parent operatorList so they are\n            // resolved before Type3 operatorLists are executed synchronously.\n            operatorList.addDependencies(translated.type3Dependencies);\n\n            return translated;\n          })\n          .catch(reason => {\n            // Error in the font data -- sending unsupported feature\n            // notification.\n            this.handler.send(\"UnsupportedFeature\", {\n              featureId: UNSUPPORTED_FEATURES.errorFontLoadType3,\n            });\n            return new TranslatedFont({\n              loadedName: \"g_font_error\",\n              font: new ErrorFont(`Type3 font load error: ${reason}`),\n              dict: translated.font,\n              evaluatorOptions: this.options,\n            });\n          });\n      })\n      .then(translated => {\n        state.font = translated.font;\n        translated.send(this.handler);\n        return translated.loadedName;\n      });\n  }\n\n  handleText(chars, state) {\n    const font = state.font;\n    const glyphs = font.charsToGlyphs(chars);\n\n    if (font.data) {\n      const isAddToPathSet = !!(\n        state.textRenderingMode & TextRenderingMode.ADD_TO_PATH_FLAG\n      );\n      if (\n        isAddToPathSet ||\n        state.fillColorSpace.name === \"Pattern\" ||\n        font.disableFontFace ||\n        this.options.disableFontFace\n      ) {\n        PartialEvaluator.buildFontPaths(\n          font,\n          glyphs,\n          this.handler,\n          this.options\n        );\n      }\n    }\n    return glyphs;\n  }\n\n  ensureStateFont(state) {\n    if (state.font) {\n      return;\n    }\n    const reason = new FormatError(\n      \"Missing setFont (Tf) operator before text rendering operator.\"\n    );\n\n    if (this.options.ignoreErrors) {\n      // Missing setFont operator before text rendering operator -- sending\n      // unsupported feature notification and allow rendering to continue.\n      this.handler.send(\"UnsupportedFeature\", {\n        featureId: UNSUPPORTED_FEATURES.errorFontState,\n      });\n      warn(`ensureStateFont: \"${reason}\".`);\n      return;\n    }\n    throw reason;\n  }\n\n  async setGState({\n    resources,\n    gState,\n    operatorList,\n    cacheKey,\n    task,\n    stateManager,\n    localGStateCache,\n    localColorSpaceCache,\n  }) {\n    const gStateRef = gState.objId;\n    let isSimpleGState = true;\n    // This array holds the converted/processed state data.\n    const gStateObj = [];\n    const gStateKeys = gState.getKeys();\n    let promise = Promise.resolve();\n    for (let i = 0, ii = gStateKeys.length; i < ii; i++) {\n      const key = gStateKeys[i];\n      const value = gState.get(key);\n      switch (key) {\n        case \"Type\":\n          break;\n        case \"LW\":\n        case \"LC\":\n        case \"LJ\":\n        case \"ML\":\n        case \"D\":\n        case \"RI\":\n        case \"FL\":\n        case \"CA\":\n        case \"ca\":\n          gStateObj.push([key, value]);\n          break;\n        case \"Font\":\n          isSimpleGState = false;\n\n          promise = promise.then(() => {\n            return this.handleSetFont(\n              resources,\n              null,\n              value[0],\n              operatorList,\n              task,\n              stateManager.state\n            ).then(function (loadedName) {\n              operatorList.addDependency(loadedName);\n              gStateObj.push([key, [loadedName, value[1]]]);\n            });\n          });\n          break;\n        case \"BM\":\n          gStateObj.push([key, normalizeBlendMode(value)]);\n          break;\n        case \"SMask\":\n          if (isName(value, \"None\")) {\n            gStateObj.push([key, false]);\n            break;\n          }\n          if (isDict(value)) {\n            isSimpleGState = false;\n\n            promise = promise.then(() => {\n              return this.handleSMask(\n                value,\n                resources,\n                operatorList,\n                task,\n                stateManager,\n                localColorSpaceCache\n              );\n            });\n            gStateObj.push([key, true]);\n          } else {\n            warn(\"Unsupported SMask type\");\n          }\n          break;\n        case \"TR\":\n          const transferMaps = this.handleTransferFunction(value);\n          gStateObj.push([key, transferMaps]);\n          break;\n        // Only generate info log messages for the following since\n        // they are unlikely to have a big impact on the rendering.\n        case \"OP\":\n        case \"op\":\n        case \"OPM\":\n        case \"BG\":\n        case \"BG2\":\n        case \"UCR\":\n        case \"UCR2\":\n        case \"TR2\":\n        case \"HT\":\n        case \"SM\":\n        case \"SA\":\n        case \"AIS\":\n        case \"TK\":\n          // TODO implement these operators.\n          info(\"graphic state operator \" + key);\n          break;\n        default:\n          info(\"Unknown graphic state operator \" + key);\n          break;\n      }\n    }\n    return promise.then(function () {\n      if (gStateObj.length > 0) {\n        operatorList.addOp(OPS.setGState, [gStateObj]);\n      }\n\n      if (isSimpleGState) {\n        localGStateCache.set(cacheKey, gStateRef, gStateObj);\n      }\n    });\n  }\n\n  loadFont(\n    fontName,\n    font,\n    resources,\n    fallbackFontDict = null,\n    cssFontInfo = null\n  ) {\n    const errorFont = async () => {\n      return new TranslatedFont({\n        loadedName: \"g_font_error\",\n        font: new ErrorFont(`Font \"${fontName}\" is not available.`),\n        dict: font,\n        evaluatorOptions: this.options,\n      });\n    };\n\n    const xref = this.xref;\n    let fontRef;\n    if (font) {\n      // Loading by ref.\n      if (!isRef(font)) {\n        throw new FormatError('The \"font\" object should be a reference.');\n      }\n      fontRef = font;\n    } else {\n      // Loading by name.\n      const fontRes = resources.get(\"Font\");\n      if (fontRes) {\n        fontRef = fontRes.getRaw(fontName);\n      }\n    }\n    if (!fontRef) {\n      const partialMsg = `Font \"${\n        fontName || (font && font.toString())\n      }\" is not available`;\n\n      if (!this.options.ignoreErrors && !this.parsingType3Font) {\n        warn(`${partialMsg}.`);\n        return errorFont();\n      }\n      // Font not found -- sending unsupported feature notification.\n      this.handler.send(\"UnsupportedFeature\", {\n        featureId: UNSUPPORTED_FEATURES.errorFontMissing,\n      });\n      warn(`${partialMsg} -- attempting to fallback to a default font.`);\n\n      // Falling back to a default font to avoid completely broken rendering,\n      // but note that there're no guarantees that things will look \"correct\".\n      if (fallbackFontDict) {\n        fontRef = fallbackFontDict;\n      } else {\n        fontRef = PartialEvaluator.fallbackFontDict;\n      }\n    }\n\n    if (this.fontCache.has(fontRef)) {\n      return this.fontCache.get(fontRef);\n    }\n\n    font = xref.fetchIfRef(fontRef);\n    if (!isDict(font)) {\n      return errorFont();\n    }\n\n    // We are holding `font.cacheKey` references only for `fontRef`s that\n    // are not actually `Ref`s, but rather `Dict`s. See explanation below.\n    if (font.cacheKey && this.fontCache.has(font.cacheKey)) {\n      return this.fontCache.get(font.cacheKey);\n    }\n\n    const fontCapability = createPromiseCapability();\n\n    let preEvaluatedFont;\n    try {\n      preEvaluatedFont = this.preEvaluateFont(font);\n      preEvaluatedFont.cssFontInfo = cssFontInfo;\n    } catch (reason) {\n      warn(`loadFont - preEvaluateFont failed: \"${reason}\".`);\n      return errorFont();\n    }\n    const { descriptor, hash } = preEvaluatedFont;\n\n    const fontRefIsRef = isRef(fontRef);\n    let fontID;\n    if (fontRefIsRef) {\n      fontID = `f${fontRef.toString()}`;\n    }\n\n    if (hash && isDict(descriptor)) {\n      if (!descriptor.fontAliases) {\n        descriptor.fontAliases = Object.create(null);\n      }\n      const fontAliases = descriptor.fontAliases;\n\n      if (fontAliases[hash]) {\n        const aliasFontRef = fontAliases[hash].aliasRef;\n        if (fontRefIsRef && aliasFontRef && this.fontCache.has(aliasFontRef)) {\n          this.fontCache.putAlias(fontRef, aliasFontRef);\n          return this.fontCache.get(fontRef);\n        }\n      } else {\n        fontAliases[hash] = {\n          fontID: this.idFactory.createFontId(),\n        };\n      }\n\n      if (fontRefIsRef) {\n        fontAliases[hash].aliasRef = fontRef;\n      }\n      fontID = fontAliases[hash].fontID;\n    }\n\n    // Workaround for bad PDF generators that reference fonts incorrectly,\n    // where `fontRef` is a `Dict` rather than a `Ref` (fixes bug946506.pdf).\n    // In this case we cannot put the font into `this.fontCache` (which is\n    // a `RefSetCache`), since it's not possible to use a `Dict` as a key.\n    //\n    // However, if we don't cache the font it's not possible to remove it\n    // when `cleanup` is triggered from the API, which causes issues on\n    // subsequent rendering operations (see issue7403.pdf) and would force us\n    // to unnecessarily load the same fonts over and over.\n    //\n    // Instead, we cheat a bit by using a modified `fontID` as a key in\n    // `this.fontCache`, to allow the font to be cached.\n    // NOTE: This works because `RefSetCache` calls `toString()` on provided\n    //       keys. Also, since `fontRef` is used when getting cached fonts,\n    //       we'll not accidentally match fonts cached with the `fontID`.\n    if (fontRefIsRef) {\n      this.fontCache.put(fontRef, fontCapability.promise);\n    } else {\n      if (!fontID) {\n        fontID = this.idFactory.createFontId();\n      }\n      font.cacheKey = `cacheKey_${fontID}`;\n      this.fontCache.put(font.cacheKey, fontCapability.promise);\n    }\n    assert(\n      fontID && fontID.startsWith(\"f\"),\n      'The \"fontID\" must be (correctly) defined.'\n    );\n\n    // Keep track of each font we translated so the caller can\n    // load them asynchronously before calling display on a page.\n    font.loadedName = `${this.idFactory.getDocId()}_${fontID}`;\n\n    this.translateFont(preEvaluatedFont)\n      .then(translatedFont => {\n        if (translatedFont.fontType !== undefined) {\n          xref.stats.addFontType(translatedFont.fontType);\n        }\n\n        fontCapability.resolve(\n          new TranslatedFont({\n            loadedName: font.loadedName,\n            font: translatedFont,\n            dict: font,\n            evaluatorOptions: this.options,\n          })\n        );\n      })\n      .catch(reason => {\n        // TODO fontCapability.reject?\n        // Error in the font data -- sending unsupported feature notification.\n        this.handler.send(\"UnsupportedFeature\", {\n          featureId: UNSUPPORTED_FEATURES.errorFontTranslate,\n        });\n        warn(`loadFont - translateFont failed: \"${reason}\".`);\n\n        try {\n          // error, but it's still nice to have font type reported\n          const fontFile3 = descriptor && descriptor.get(\"FontFile3\");\n          const subtype = fontFile3 && fontFile3.get(\"Subtype\");\n          const fontType = getFontType(\n            preEvaluatedFont.type,\n            subtype && subtype.name\n          );\n          if (fontType !== undefined) {\n            xref.stats.addFontType(fontType);\n          }\n        } catch (ex) {}\n\n        fontCapability.resolve(\n          new TranslatedFont({\n            loadedName: font.loadedName,\n            font: new ErrorFont(\n              reason instanceof Error ? reason.message : reason\n            ),\n            dict: font,\n            evaluatorOptions: this.options,\n          })\n        );\n      });\n    return fontCapability.promise;\n  }\n\n  buildPath(operatorList, fn, args, parsingText = false) {\n    const lastIndex = operatorList.length - 1;\n    if (!args) {\n      args = [];\n    }\n    if (\n      lastIndex < 0 ||\n      operatorList.fnArray[lastIndex] !== OPS.constructPath\n    ) {\n      // Handle corrupt PDF documents that contains path operators inside of\n      // text objects, which may shift subsequent text, by enclosing the path\n      // operator in save/restore operators (fixes issue10542_reduced.pdf).\n      //\n      // Note that this will effectively disable the optimization in the\n      // `else` branch below, but given that this type of corruption is\n      // *extremely* rare that shouldn't really matter much in practice.\n      if (parsingText) {\n        warn(`Encountered path operator \"${fn}\" inside of a text object.`);\n        operatorList.addOp(OPS.save, null);\n      }\n\n      operatorList.addOp(OPS.constructPath, [[fn], args]);\n\n      if (parsingText) {\n        operatorList.addOp(OPS.restore, null);\n      }\n    } else {\n      const opArgs = operatorList.argsArray[lastIndex];\n      opArgs[0].push(fn);\n      Array.prototype.push.apply(opArgs[1], args);\n    }\n  }\n\n  parseColorSpace({ cs, resources, localColorSpaceCache }) {\n    return ColorSpace.parseAsync({\n      cs,\n      xref: this.xref,\n      resources,\n      pdfFunctionFactory: this._pdfFunctionFactory,\n      localColorSpaceCache,\n    }).catch(reason => {\n      if (reason instanceof AbortException) {\n        return null;\n      }\n      if (this.options.ignoreErrors) {\n        // Error(s) in the ColorSpace -- sending unsupported feature\n        // notification and allow rendering to continue.\n        this.handler.send(\"UnsupportedFeature\", {\n          featureId: UNSUPPORTED_FEATURES.errorColorSpace,\n        });\n        warn(`parseColorSpace - ignoring ColorSpace: \"${reason}\".`);\n        return null;\n      }\n      throw reason;\n    });\n  }\n\n  parseShading({\n    shading,\n    resources,\n    localColorSpaceCache,\n    localShadingPatternCache,\n  }) {\n    // Shadings and patterns may be referenced by the same name but the resource\n    // dictionary could be different so we can't use the name for the cache key.\n    let id = localShadingPatternCache.get(shading);\n    if (!id) {\n      var shadingFill = Pattern.parseShading(\n        shading,\n        this.xref,\n        resources,\n        this.handler,\n        this._pdfFunctionFactory,\n        localColorSpaceCache\n      );\n      const patternIR = shadingFill.getIR();\n      id = `pattern_${this.idFactory.createObjId()}`;\n      localShadingPatternCache.set(shading, id);\n      this.handler.send(\"obj\", [id, this.pageIndex, \"Pattern\", patternIR]);\n    }\n    return id;\n  }\n\n  handleColorN(\n    operatorList,\n    fn,\n    args,\n    cs,\n    patterns,\n    resources,\n    task,\n    localColorSpaceCache,\n    localTilingPatternCache,\n    localShadingPatternCache\n  ) {\n    // compile tiling patterns\n    const patternName = args.pop();\n    // SCN/scn applies patterns along with normal colors\n    if (patternName instanceof Name) {\n      const rawPattern = patterns.getRaw(patternName.name);\n\n      const localTilingPattern =\n        rawPattern instanceof Ref &&\n        localTilingPatternCache.getByRef(rawPattern);\n      if (localTilingPattern) {\n        try {\n          const color = cs.base ? cs.base.getRgb(args, 0) : null;\n          const tilingPatternIR = getTilingPatternIR(\n            localTilingPattern.operatorListIR,\n            localTilingPattern.dict,\n            color\n          );\n          operatorList.addOp(fn, tilingPatternIR);\n          return undefined;\n        } catch (ex) {\n          // Handle any errors during normal TilingPattern parsing.\n        }\n      }\n\n      const pattern = this.xref.fetchIfRef(rawPattern);\n      if (pattern) {\n        const dict = isStream(pattern) ? pattern.dict : pattern;\n        const typeNum = dict.get(\"PatternType\");\n\n        if (typeNum === PatternType.TILING) {\n          const color = cs.base ? cs.base.getRgb(args, 0) : null;\n          return this.handleTilingType(\n            fn,\n            color,\n            resources,\n            pattern,\n            dict,\n            operatorList,\n            task,\n            localTilingPatternCache\n          );\n        } else if (typeNum === PatternType.SHADING) {\n          const shading = dict.get(\"Shading\");\n          const matrix = dict.getArray(\"Matrix\");\n          const objId = this.parseShading({\n            shading,\n            resources,\n            localColorSpaceCache,\n            localShadingPatternCache,\n          });\n          operatorList.addOp(fn, [\"Shading\", objId, matrix]);\n          return undefined;\n        }\n        throw new FormatError(`Unknown PatternType: ${typeNum}`);\n      }\n    }\n    throw new FormatError(`Unknown PatternName: ${patternName}`);\n  }\n\n  _parseVisibilityExpression(array, nestingCounter, currentResult) {\n    const MAX_NESTING = 10;\n    if (++nestingCounter > MAX_NESTING) {\n      warn(\"Visibility expression is too deeply nested\");\n      return;\n    }\n    const length = array.length;\n    const operator = this.xref.fetchIfRef(array[0]);\n    if (length < 2 || !isName(operator)) {\n      warn(\"Invalid visibility expression\");\n      return;\n    }\n    switch (operator.name) {\n      case \"And\":\n      case \"Or\":\n      case \"Not\":\n        currentResult.push(operator.name);\n        break;\n      default:\n        warn(`Invalid operator ${operator.name} in visibility expression`);\n        return;\n    }\n    for (let i = 1; i < length; i++) {\n      const raw = array[i];\n      const object = this.xref.fetchIfRef(raw);\n      if (Array.isArray(object)) {\n        const nestedResult = [];\n        currentResult.push(nestedResult);\n        // Recursively parse a subarray.\n        this._parseVisibilityExpression(object, nestingCounter, nestedResult);\n      } else if (isRef(raw)) {\n        // Reference to an OCG dictionary.\n        currentResult.push(raw.toString());\n      }\n    }\n  }\n\n  async parseMarkedContentProps(contentProperties, resources) {\n    let optionalContent;\n    if (isName(contentProperties)) {\n      const properties = resources.get(\"Properties\");\n      optionalContent = properties.get(contentProperties.name);\n    } else if (isDict(contentProperties)) {\n      optionalContent = contentProperties;\n    } else {\n      throw new FormatError(\"Optional content properties malformed.\");\n    }\n\n    const optionalContentType = optionalContent.get(\"Type\").name;\n    if (optionalContentType === \"OCG\") {\n      return {\n        type: optionalContentType,\n        id: optionalContent.objId,\n      };\n    } else if (optionalContentType === \"OCMD\") {\n      const expression = optionalContent.get(\"VE\");\n      if (Array.isArray(expression)) {\n        const result = [];\n        this._parseVisibilityExpression(expression, 0, result);\n        if (result.length > 0) {\n          return {\n            type: \"OCMD\",\n            expression: result,\n          };\n        }\n      }\n\n      const optionalContentGroups = optionalContent.get(\"OCGs\");\n      if (\n        Array.isArray(optionalContentGroups) ||\n        isDict(optionalContentGroups)\n      ) {\n        const groupIds = [];\n        if (Array.isArray(optionalContentGroups)) {\n          for (const ocg of optionalContentGroups) {\n            groupIds.push(ocg.toString());\n          }\n        } else {\n          // Dictionary, just use the obj id.\n          groupIds.push(optionalContentGroups.objId);\n        }\n\n        return {\n          type: optionalContentType,\n          ids: groupIds,\n          policy: isName(optionalContent.get(\"P\"))\n            ? optionalContent.get(\"P\").name\n            : null,\n          expression: null,\n        };\n      } else if (isRef(optionalContentGroups)) {\n        return {\n          type: optionalContentType,\n          id: optionalContentGroups.toString(),\n        };\n      }\n    }\n    return null;\n  }\n\n  getOperatorList({\n    stream,\n    task,\n    resources,\n    operatorList,\n    initialState = null,\n    fallbackFontDict = null,\n  }) {\n    // Ensure that `resources`/`initialState` is correctly initialized,\n    // even if the provided parameter is e.g. `null`.\n    resources = resources || Dict.empty;\n    initialState = initialState || new EvalState();\n\n    if (!operatorList) {\n      throw new Error('getOperatorList: missing \"operatorList\" parameter');\n    }\n\n    const self = this;\n    const xref = this.xref;\n    let parsingText = false;\n    const localImageCache = new LocalImageCache();\n    const localColorSpaceCache = new LocalColorSpaceCache();\n    const localGStateCache = new LocalGStateCache();\n    const localTilingPatternCache = new LocalTilingPatternCache();\n    const localShadingPatternCache = new Map();\n\n    const xobjs = resources.get(\"XObject\") || Dict.empty;\n    const patterns = resources.get(\"Pattern\") || Dict.empty;\n    const stateManager = new StateManager(initialState);\n    const preprocessor = new EvaluatorPreprocessor(stream, xref, stateManager);\n    const timeSlotManager = new TimeSlotManager();\n\n    function closePendingRestoreOPS(argument) {\n      for (let i = 0, ii = preprocessor.savedStatesDepth; i < ii; i++) {\n        operatorList.addOp(OPS.restore, []);\n      }\n    }\n\n    return new Promise(function promiseBody(resolve, reject) {\n      const next = function (promise) {\n        Promise.all([promise, operatorList.ready]).then(function () {\n          try {\n            promiseBody(resolve, reject);\n          } catch (ex) {\n            reject(ex);\n          }\n        }, reject);\n      };\n      task.ensureNotTerminated();\n      timeSlotManager.reset();\n\n      const operation = {};\n      let stop, i, ii, cs, name, isValidName;\n      while (!(stop = timeSlotManager.check())) {\n        // The arguments parsed by read() are used beyond this loop, so we\n        // cannot reuse the same array on each iteration. Therefore we pass\n        // in |null| as the initial value (see the comment on\n        // EvaluatorPreprocessor_read() for why).\n        operation.args = null;\n        if (!preprocessor.read(operation)) {\n          break;\n        }\n        let args = operation.args;\n        let fn = operation.fn;\n\n        switch (fn | 0) {\n          case OPS.paintXObject:\n            // eagerly compile XForm objects\n            isValidName = args[0] instanceof Name;\n            name = args[0].name;\n\n            if (isValidName) {\n              const localImage = localImageCache.getByName(name);\n              if (localImage) {\n                operatorList.addOp(localImage.fn, localImage.args);\n                args = null;\n                continue;\n              }\n            }\n\n            next(\n              new Promise(function (resolveXObject, rejectXObject) {\n                if (!isValidName) {\n                  throw new FormatError(\"XObject must be referred to by name.\");\n                }\n\n                let xobj = xobjs.getRaw(name);\n                if (xobj instanceof Ref) {\n                  const localImage = localImageCache.getByRef(xobj);\n                  if (localImage) {\n                    operatorList.addOp(localImage.fn, localImage.args);\n\n                    resolveXObject();\n                    return;\n                  }\n\n                  const globalImage = self.globalImageCache.getData(\n                    xobj,\n                    self.pageIndex\n                  );\n                  if (globalImage) {\n                    operatorList.addDependency(globalImage.objId);\n                    operatorList.addOp(globalImage.fn, globalImage.args);\n\n                    resolveXObject();\n                    return;\n                  }\n\n                  xobj = xref.fetch(xobj);\n                }\n\n                if (!isStream(xobj)) {\n                  throw new FormatError(\"XObject should be a stream\");\n                }\n\n                const type = xobj.dict.get(\"Subtype\");\n                if (!isName(type)) {\n                  throw new FormatError(\"XObject should have a Name subtype\");\n                }\n\n                if (type.name === \"Form\") {\n                  stateManager.save();\n                  self\n                    .buildFormXObject(\n                      resources,\n                      xobj,\n                      null,\n                      operatorList,\n                      task,\n                      stateManager.state.clone(),\n                      localColorSpaceCache\n                    )\n                    .then(function () {\n                      stateManager.restore();\n                      resolveXObject();\n                    }, rejectXObject);\n                  return;\n                } else if (type.name === \"Image\") {\n                  self\n                    .buildPaintImageXObject({\n                      resources,\n                      image: xobj,\n                      operatorList,\n                      cacheKey: name,\n                      localImageCache,\n                      localColorSpaceCache,\n                    })\n                    .then(resolveXObject, rejectXObject);\n                  return;\n                } else if (type.name === \"PS\") {\n                  // PostScript XObjects are unused when viewing documents.\n                  // See section 4.7.1 of Adobe's PDF reference.\n                  info(\"Ignored XObject subtype PS\");\n                } else {\n                  throw new FormatError(\n                    `Unhandled XObject subtype ${type.name}`\n                  );\n                }\n                resolveXObject();\n              }).catch(function (reason) {\n                if (reason instanceof AbortException) {\n                  return;\n                }\n                if (self.options.ignoreErrors) {\n                  // Error(s) in the XObject -- sending unsupported feature\n                  // notification and allow rendering to continue.\n                  self.handler.send(\"UnsupportedFeature\", {\n                    featureId: UNSUPPORTED_FEATURES.errorXObject,\n                  });\n                  warn(`getOperatorList - ignoring XObject: \"${reason}\".`);\n                  return;\n                }\n                throw reason;\n              })\n            );\n            return;\n          case OPS.setFont:\n            var fontSize = args[1];\n            // eagerly collect all fonts\n            next(\n              self\n                .handleSetFont(\n                  resources,\n                  args,\n                  null,\n                  operatorList,\n                  task,\n                  stateManager.state,\n                  fallbackFontDict\n                )\n                .then(function (loadedName) {\n                  operatorList.addDependency(loadedName);\n                  operatorList.addOp(OPS.setFont, [loadedName, fontSize]);\n                })\n            );\n            return;\n          case OPS.beginText:\n            parsingText = true;\n            break;\n          case OPS.endText:\n            parsingText = false;\n            break;\n          case OPS.endInlineImage:\n            var cacheKey = args[0].cacheKey;\n            if (cacheKey) {\n              const localImage = localImageCache.getByName(cacheKey);\n              if (localImage) {\n                operatorList.addOp(localImage.fn, localImage.args);\n                args = null;\n                continue;\n              }\n            }\n            next(\n              self.buildPaintImageXObject({\n                resources,\n                image: args[0],\n                isInline: true,\n                operatorList,\n                cacheKey,\n                localImageCache,\n                localColorSpaceCache,\n              })\n            );\n            return;\n          case OPS.showText:\n            if (!stateManager.state.font) {\n              self.ensureStateFont(stateManager.state);\n              continue;\n            }\n            args[0] = self.handleText(args[0], stateManager.state);\n            break;\n          case OPS.showSpacedText:\n            if (!stateManager.state.font) {\n              self.ensureStateFont(stateManager.state);\n              continue;\n            }\n            var arr = args[0];\n            var combinedGlyphs = [];\n            var arrLength = arr.length;\n            var state = stateManager.state;\n            for (i = 0; i < arrLength; ++i) {\n              const arrItem = arr[i];\n              if (isString(arrItem)) {\n                Array.prototype.push.apply(\n                  combinedGlyphs,\n                  self.handleText(arrItem, state)\n                );\n              } else if (isNum(arrItem)) {\n                combinedGlyphs.push(arrItem);\n              }\n            }\n            args[0] = combinedGlyphs;\n            fn = OPS.showText;\n            break;\n          case OPS.nextLineShowText:\n            if (!stateManager.state.font) {\n              self.ensureStateFont(stateManager.state);\n              continue;\n            }\n            operatorList.addOp(OPS.nextLine);\n            args[0] = self.handleText(args[0], stateManager.state);\n            fn = OPS.showText;\n            break;\n          case OPS.nextLineSetSpacingShowText:\n            if (!stateManager.state.font) {\n              self.ensureStateFont(stateManager.state);\n              continue;\n            }\n            operatorList.addOp(OPS.nextLine);\n            operatorList.addOp(OPS.setWordSpacing, [args.shift()]);\n            operatorList.addOp(OPS.setCharSpacing, [args.shift()]);\n            args[0] = self.handleText(args[0], stateManager.state);\n            fn = OPS.showText;\n            break;\n          case OPS.setTextRenderingMode:\n            stateManager.state.textRenderingMode = args[0];\n            break;\n\n          case OPS.setFillColorSpace: {\n            const cachedColorSpace = ColorSpace.getCached(\n              args[0],\n              xref,\n              localColorSpaceCache\n            );\n            if (cachedColorSpace) {\n              stateManager.state.fillColorSpace = cachedColorSpace;\n              continue;\n            }\n\n            next(\n              self\n                .parseColorSpace({\n                  cs: args[0],\n                  resources,\n                  localColorSpaceCache,\n                })\n                .then(function (colorSpace) {\n                  if (colorSpace) {\n                    stateManager.state.fillColorSpace = colorSpace;\n                  }\n                })\n            );\n            return;\n          }\n          case OPS.setStrokeColorSpace: {\n            const cachedColorSpace = ColorSpace.getCached(\n              args[0],\n              xref,\n              localColorSpaceCache\n            );\n            if (cachedColorSpace) {\n              stateManager.state.strokeColorSpace = cachedColorSpace;\n              continue;\n            }\n\n            next(\n              self\n                .parseColorSpace({\n                  cs: args[0],\n                  resources,\n                  localColorSpaceCache,\n                })\n                .then(function (colorSpace) {\n                  if (colorSpace) {\n                    stateManager.state.strokeColorSpace = colorSpace;\n                  }\n                })\n            );\n            return;\n          }\n          case OPS.setFillColor:\n            cs = stateManager.state.fillColorSpace;\n            args = cs.getRgb(args, 0);\n            fn = OPS.setFillRGBColor;\n            break;\n          case OPS.setStrokeColor:\n            cs = stateManager.state.strokeColorSpace;\n            args = cs.getRgb(args, 0);\n            fn = OPS.setStrokeRGBColor;\n            break;\n          case OPS.setFillGray:\n            stateManager.state.fillColorSpace = ColorSpace.singletons.gray;\n            args = ColorSpace.singletons.gray.getRgb(args, 0);\n            fn = OPS.setFillRGBColor;\n            break;\n          case OPS.setStrokeGray:\n            stateManager.state.strokeColorSpace = ColorSpace.singletons.gray;\n            args = ColorSpace.singletons.gray.getRgb(args, 0);\n            fn = OPS.setStrokeRGBColor;\n            break;\n          case OPS.setFillCMYKColor:\n            stateManager.state.fillColorSpace = ColorSpace.singletons.cmyk;\n            args = ColorSpace.singletons.cmyk.getRgb(args, 0);\n            fn = OPS.setFillRGBColor;\n            break;\n          case OPS.setStrokeCMYKColor:\n            stateManager.state.strokeColorSpace = ColorSpace.singletons.cmyk;\n            args = ColorSpace.singletons.cmyk.getRgb(args, 0);\n            fn = OPS.setStrokeRGBColor;\n            break;\n          case OPS.setFillRGBColor:\n            stateManager.state.fillColorSpace = ColorSpace.singletons.rgb;\n            args = ColorSpace.singletons.rgb.getRgb(args, 0);\n            break;\n          case OPS.setStrokeRGBColor:\n            stateManager.state.strokeColorSpace = ColorSpace.singletons.rgb;\n            args = ColorSpace.singletons.rgb.getRgb(args, 0);\n            break;\n          case OPS.setFillColorN:\n            cs = stateManager.state.fillColorSpace;\n            if (cs.name === \"Pattern\") {\n              next(\n                self.handleColorN(\n                  operatorList,\n                  OPS.setFillColorN,\n                  args,\n                  cs,\n                  patterns,\n                  resources,\n                  task,\n                  localColorSpaceCache,\n                  localTilingPatternCache,\n                  localShadingPatternCache\n                )\n              );\n              return;\n            }\n            args = cs.getRgb(args, 0);\n            fn = OPS.setFillRGBColor;\n            break;\n          case OPS.setStrokeColorN:\n            cs = stateManager.state.strokeColorSpace;\n            if (cs.name === \"Pattern\") {\n              next(\n                self.handleColorN(\n                  operatorList,\n                  OPS.setStrokeColorN,\n                  args,\n                  cs,\n                  patterns,\n                  resources,\n                  task,\n                  localColorSpaceCache,\n                  localTilingPatternCache,\n                  localShadingPatternCache\n                )\n              );\n              return;\n            }\n            args = cs.getRgb(args, 0);\n            fn = OPS.setStrokeRGBColor;\n            break;\n\n          case OPS.shadingFill:\n            var shadingRes = resources.get(\"Shading\");\n            if (!shadingRes) {\n              throw new FormatError(\"No shading resource found\");\n            }\n\n            var shading = shadingRes.get(args[0].name);\n            if (!shading) {\n              throw new FormatError(\"No shading object found\");\n            }\n            const patternId = self.parseShading({\n              shading,\n              resources,\n              localColorSpaceCache,\n              localShadingPatternCache,\n            });\n            args = [patternId];\n            fn = OPS.shadingFill;\n            break;\n          case OPS.setGState:\n            isValidName = args[0] instanceof Name;\n            name = args[0].name;\n\n            if (isValidName) {\n              const localGStateObj = localGStateCache.getByName(name);\n              if (localGStateObj) {\n                if (localGStateObj.length > 0) {\n                  operatorList.addOp(OPS.setGState, [localGStateObj]);\n                }\n                args = null;\n                continue;\n              }\n            }\n\n            next(\n              new Promise(function (resolveGState, rejectGState) {\n                if (!isValidName) {\n                  throw new FormatError(\"GState must be referred to by name.\");\n                }\n\n                const extGState = resources.get(\"ExtGState\");\n                if (!(extGState instanceof Dict)) {\n                  throw new FormatError(\"ExtGState should be a dictionary.\");\n                }\n\n                const gState = extGState.get(name);\n                // TODO: Attempt to lookup cached GStates by reference as well,\n                //       if and only if there are PDF documents where doing so\n                //       would significantly improve performance.\n                if (!(gState instanceof Dict)) {\n                  throw new FormatError(\"GState should be a dictionary.\");\n                }\n\n                self\n                  .setGState({\n                    resources,\n                    gState,\n                    operatorList,\n                    cacheKey: name,\n                    task,\n                    stateManager,\n                    localGStateCache,\n                    localColorSpaceCache,\n                  })\n                  .then(resolveGState, rejectGState);\n              }).catch(function (reason) {\n                if (reason instanceof AbortException) {\n                  return;\n                }\n                if (self.options.ignoreErrors) {\n                  // Error(s) in the ExtGState -- sending unsupported feature\n                  // notification and allow parsing/rendering to continue.\n                  self.handler.send(\"UnsupportedFeature\", {\n                    featureId: UNSUPPORTED_FEATURES.errorExtGState,\n                  });\n                  warn(`getOperatorList - ignoring ExtGState: \"${reason}\".`);\n                  return;\n                }\n                throw reason;\n              })\n            );\n            return;\n          case OPS.moveTo:\n          case OPS.lineTo:\n          case OPS.curveTo:\n          case OPS.curveTo2:\n          case OPS.curveTo3:\n          case OPS.closePath:\n          case OPS.rectangle:\n            self.buildPath(operatorList, fn, args, parsingText);\n            continue;\n          case OPS.markPoint:\n          case OPS.markPointProps:\n          case OPS.beginCompat:\n          case OPS.endCompat:\n            // Ignore operators where the corresponding handlers are known to\n            // be no-op in CanvasGraphics (display/canvas.js). This prevents\n            // serialization errors and is also a bit more efficient.\n            // We could also try to serialize all objects in a general way,\n            // e.g. as done in https://github.com/mozilla/pdf.js/pull/6266,\n            // but doing so is meaningless without knowing the semantics.\n            continue;\n          case OPS.beginMarkedContentProps:\n            if (!isName(args[0])) {\n              warn(`Expected name for beginMarkedContentProps arg0=${args[0]}`);\n              continue;\n            }\n            if (args[0].name === \"OC\") {\n              next(\n                self\n                  .parseMarkedContentProps(args[1], resources)\n                  .then(data => {\n                    operatorList.addOp(OPS.beginMarkedContentProps, [\n                      \"OC\",\n                      data,\n                    ]);\n                  })\n                  .catch(reason => {\n                    if (reason instanceof AbortException) {\n                      return;\n                    }\n                    if (self.options.ignoreErrors) {\n                      self.handler.send(\"UnsupportedFeature\", {\n                        featureId: UNSUPPORTED_FEATURES.errorMarkedContent,\n                      });\n                      warn(\n                        `getOperatorList - ignoring beginMarkedContentProps: \"${reason}\".`\n                      );\n                      return;\n                    }\n                    throw reason;\n                  })\n              );\n              return;\n            }\n            // Other marked content types aren't supported yet.\n            args = [\n              args[0].name,\n              args[1] instanceof Dict ? args[1].get(\"MCID\") : null,\n            ];\n\n            break;\n          case OPS.beginMarkedContent:\n          case OPS.endMarkedContent:\n          default:\n            // Note: Ignore the operator if it has `Dict` arguments, since\n            // those are non-serializable, otherwise postMessage will throw\n            // \"An object could not be cloned.\".\n            if (args !== null) {\n              for (i = 0, ii = args.length; i < ii; i++) {\n                if (args[i] instanceof Dict) {\n                  break;\n                }\n              }\n              if (i < ii) {\n                warn(\"getOperatorList - ignoring operator: \" + fn);\n                continue;\n              }\n            }\n        }\n        operatorList.addOp(fn, args);\n      }\n      if (stop) {\n        next(deferred);\n        return;\n      }\n      // Some PDFs don't close all restores inside object/form.\n      // Closing those for them.\n      closePendingRestoreOPS();\n      resolve();\n    }).catch(reason => {\n      if (reason instanceof AbortException) {\n        return;\n      }\n      if (this.options.ignoreErrors) {\n        // Error(s) in the OperatorList -- sending unsupported feature\n        // notification and allow rendering to continue.\n        this.handler.send(\"UnsupportedFeature\", {\n          featureId: UNSUPPORTED_FEATURES.errorOperatorList,\n        });\n        warn(\n          `getOperatorList - ignoring errors during \"${task.name}\" ` +\n            `task: \"${reason}\".`\n        );\n\n        closePendingRestoreOPS();\n        return;\n      }\n      throw reason;\n    });\n  }\n\n  getTextContent({\n    stream,\n    task,\n    resources,\n    stateManager = null,\n    normalizeWhitespace = false,\n    combineTextItems = false,\n    includeMarkedContent = false,\n    sink,\n    seenStyles = new Set(),\n  }) {\n    // Ensure that `resources`/`stateManager` is correctly initialized,\n    // even if the provided parameter is e.g. `null`.\n    resources = resources || Dict.empty;\n    stateManager = stateManager || new StateManager(new TextState());\n\n    const WhitespaceRegexp = /\\s/g;\n    const DiacriticRegExp = new RegExp(\"^\\\\p{Mn}$\", \"u\");\n    const NormalizedUnicodes = getNormalizedUnicodes();\n\n    const textContent = {\n      items: [],\n      styles: Object.create(null),\n    };\n    const textContentItem = {\n      initialized: false,\n      str: [],\n      totalWidth: 0,\n      totalHeight: 0,\n      width: 0,\n      height: 0,\n      vertical: false,\n      prevTransform: null,\n      textAdvanceScale: 0,\n      spaceInFlowMin: 0,\n      spaceInFlowMax: 0,\n      trackingSpaceMin: Infinity,\n      negativeSpaceMax: -Infinity,\n      transform: null,\n      fontName: null,\n      hasEOL: false,\n    };\n\n    // Used in addFakeSpaces.\n\n    // A white <= fontSize * TRACKING_SPACE_FACTOR is a tracking space\n    // so it doesn't count as a space.\n    const TRACKING_SPACE_FACTOR = 0.1;\n\n    // A negative white < fontSize * NEGATIVE_SPACE_FACTOR induces\n    // a break (a new chunk of text is created).\n    // It doesn't change anything when the text is copied but\n    // it improves potential mismatch between text layer and canvas.\n    const NEGATIVE_SPACE_FACTOR = -0.2;\n\n    // A white with a width in [fontSize * MIN_FACTOR; fontSize * MAX_FACTOR]\n    // is a space which will be inserted in the current flow of words.\n    // If the width is outside of this range then the flow is broken\n    // (which means a new span in the text layer).\n    // It's useful to adjust the best as possible the span in the layer\n    // to what is displayed in the canvas.\n    const SPACE_IN_FLOW_MIN_FACTOR = 0.1;\n    const SPACE_IN_FLOW_MAX_FACTOR = 0.6;\n\n    const self = this;\n    const xref = this.xref;\n    const showSpacedTextBuffer = [];\n\n    // The xobj is parsed iff it's needed, e.g. if there is a `DO` cmd.\n    let xobjs = null;\n    const emptyXObjectCache = new LocalImageCache();\n    const emptyGStateCache = new LocalGStateCache();\n\n    const preprocessor = new EvaluatorPreprocessor(stream, xref, stateManager);\n\n    let textState;\n\n    function getCurrentTextTransform() {\n      // 9.4.4 Text Space Details\n      const font = textState.font;\n      const tsm = [\n        textState.fontSize * textState.textHScale,\n        0,\n        0,\n        textState.fontSize,\n        0,\n        textState.textRise,\n      ];\n\n      if (\n        font.isType3Font &&\n        (textState.fontSize <= 1 || font.isCharBBox) &&\n        !isArrayEqual(textState.fontMatrix, FONT_IDENTITY_MATRIX)\n      ) {\n        const glyphHeight = font.bbox[3] - font.bbox[1];\n        if (glyphHeight > 0) {\n          tsm[3] *= glyphHeight * textState.fontMatrix[3];\n        }\n      }\n\n      return Util.transform(\n        textState.ctm,\n        Util.transform(textState.textMatrix, tsm)\n      );\n    }\n\n    function ensureTextContentItem() {\n      if (textContentItem.initialized) {\n        return textContentItem;\n      }\n      const font = textState.font,\n        loadedName = font.loadedName;\n      if (!seenStyles.has(loadedName)) {\n        seenStyles.add(loadedName);\n\n        textContent.styles[loadedName] = {\n          fontFamily: font.fallbackName,\n          ascent: font.ascent,\n          descent: font.descent,\n          vertical: font.vertical,\n        };\n      }\n      textContentItem.fontName = loadedName;\n\n      const trm = (textContentItem.transform = getCurrentTextTransform());\n      if (!font.vertical) {\n        textContentItem.width = textContentItem.totalWidth = 0;\n        textContentItem.height = textContentItem.totalHeight = Math.hypot(\n          trm[2],\n          trm[3]\n        );\n        textContentItem.vertical = false;\n      } else {\n        textContentItem.width = textContentItem.totalWidth = Math.hypot(\n          trm[0],\n          trm[1]\n        );\n        textContentItem.height = textContentItem.totalHeight = 0;\n        textContentItem.vertical = true;\n      }\n\n      const scaleLineX = Math.hypot(\n        textState.textLineMatrix[0],\n        textState.textLineMatrix[1]\n      );\n      const scaleCtmX = Math.hypot(textState.ctm[0], textState.ctm[1]);\n      textContentItem.textAdvanceScale = scaleCtmX * scaleLineX;\n\n      textContentItem.trackingSpaceMin =\n        textState.fontSize * TRACKING_SPACE_FACTOR;\n      textContentItem.negativeSpaceMax =\n        textState.fontSize * NEGATIVE_SPACE_FACTOR;\n      textContentItem.spaceInFlowMin =\n        textState.fontSize * SPACE_IN_FLOW_MIN_FACTOR;\n      textContentItem.spaceInFlowMax =\n        textState.fontSize * SPACE_IN_FLOW_MAX_FACTOR;\n\n      textContentItem.hasEOL = false;\n\n      textContentItem.initialized = true;\n      return textContentItem;\n    }\n\n    function updateAdvanceScale() {\n      if (!textContentItem.initialized) {\n        return;\n      }\n\n      const scaleLineX = Math.hypot(\n        textState.textLineMatrix[0],\n        textState.textLineMatrix[1]\n      );\n      const scaleCtmX = Math.hypot(textState.ctm[0], textState.ctm[1]);\n      const scaleFactor = scaleCtmX * scaleLineX;\n      if (scaleFactor === textContentItem.textAdvanceScale) {\n        return;\n      }\n\n      if (!textContentItem.vertical) {\n        textContentItem.totalWidth +=\n          textContentItem.width * textContentItem.textAdvanceScale;\n        textContentItem.width = 0;\n      } else {\n        textContentItem.totalHeight +=\n          textContentItem.height * textContentItem.textAdvanceScale;\n        textContentItem.height = 0;\n      }\n\n      textContentItem.textAdvanceScale = scaleFactor;\n    }\n\n    function replaceWhitespace(str) {\n      // Replaces all whitespaces with standard spaces (0x20), to avoid\n      // alignment issues between the textLayer and the canvas if the text\n      // contains e.g. tabs (fixes issue6612.pdf).\n      const ii = str.length;\n      let i = 0,\n        code;\n      while (i < ii && (code = str.charCodeAt(i)) >= 0x20 && code <= 0x7f) {\n        i++;\n      }\n      return i < ii ? str.replace(WhitespaceRegexp, \" \") : str;\n    }\n\n    function runBidiTransform(textChunk) {\n      const text = textChunk.str.join(\"\");\n      const bidiResult = bidi(text, -1, textChunk.vertical);\n      const str = normalizeWhitespace\n        ? replaceWhitespace(bidiResult.str)\n        : bidiResult.str;\n      return {\n        str,\n        dir: bidiResult.dir,\n        width: textChunk.totalWidth,\n        height: textChunk.totalHeight,\n        transform: textChunk.transform,\n        fontName: textChunk.fontName,\n        hasEOL: textChunk.hasEOL,\n      };\n    }\n\n    function handleSetFont(fontName, fontRef) {\n      return self\n        .loadFont(fontName, fontRef, resources)\n        .then(function (translated) {\n          if (!translated.font.isType3Font) {\n            return translated;\n          }\n          return translated\n            .loadType3Data(self, resources, task)\n            .catch(function () {\n              // Ignore Type3-parsing errors, since we only use `loadType3Data`\n              // here to ensure that we'll always obtain a useful /FontBBox.\n            })\n            .then(function () {\n              return translated;\n            });\n        })\n        .then(function (translated) {\n          textState.font = translated.font;\n          textState.fontMatrix =\n            translated.font.fontMatrix || FONT_IDENTITY_MATRIX;\n        });\n    }\n\n    function compareWithLastPosition() {\n      if (\n        !combineTextItems ||\n        !textState.font ||\n        !textContentItem.prevTransform\n      ) {\n        return;\n      }\n\n      const currentTransform = getCurrentTextTransform();\n      let posX = currentTransform[4];\n      let posY = currentTransform[5];\n      let lastPosX = textContentItem.prevTransform[4];\n      let lastPosY = textContentItem.prevTransform[5];\n\n      if (lastPosX === posX && lastPosY === posY) {\n        return;\n      }\n\n      let rotate = 0;\n      // Take into account the rotation is the current transform.\n      // Only rotations with an angle of 0, 90, 180 or 270 are considered.\n      if (\n        currentTransform[0] &&\n        currentTransform[1] === 0 &&\n        currentTransform[2] === 0\n      ) {\n        rotate = currentTransform[0] > 0 ? 0 : 180;\n      } else if (\n        currentTransform[1] &&\n        currentTransform[0] === 0 &&\n        currentTransform[3] === 0\n      ) {\n        rotate += currentTransform[1] > 0 ? 90 : 270;\n      }\n\n      if (rotate !== 0) {\n        switch (rotate) {\n          case 90:\n            [posX, posY] = [posY, posX];\n            [lastPosX, lastPosY] = [lastPosY, lastPosX];\n            break;\n          case 180:\n            [posX, posY, lastPosX, lastPosY] = [\n              -posX,\n              -posY,\n              -lastPosX,\n              -lastPosY,\n            ];\n            break;\n          case 270:\n            [posX, posY] = [-posY, -posX];\n            [lastPosX, lastPosY] = [-lastPosY, -lastPosX];\n            break;\n        }\n      }\n\n      if (textState.font.vertical) {\n        const advanceY = (lastPosY - posY) / textContentItem.textAdvanceScale;\n        const advanceX = posX - lastPosX;\n        if (advanceY < textContentItem.negativeSpaceMax) {\n          if (\n            Math.abs(advanceX) >\n            0.5 * textContentItem.width /* not the same column */\n          ) {\n            appendEOL();\n            return;\n          }\n\n          flushTextContentItem();\n          return;\n        }\n\n        if (Math.abs(advanceX) > textContentItem.height) {\n          appendEOL();\n          return;\n        }\n        if (advanceY <= textContentItem.trackingSpaceMin) {\n          textContentItem.height += advanceY;\n        } else if (!addFakeSpaces(advanceY, textContentItem.prevTransform)) {\n          if (textContentItem.str.length === 0) {\n            textContent.items.push({\n              str: \" \",\n              dir: \"ltr\",\n              width: 0,\n              height: advanceY,\n              transform: textContentItem.prevTransform,\n              fontName: textContentItem.fontName,\n              hasEOL: false,\n            });\n          } else {\n            textContentItem.height += advanceY;\n          }\n        }\n\n        return;\n      }\n\n      const advanceX = (posX - lastPosX) / textContentItem.textAdvanceScale;\n      const advanceY = posY - lastPosY;\n      if (advanceX < textContentItem.negativeSpaceMax) {\n        if (\n          Math.abs(advanceY) >\n          0.5 * textContentItem.height /* not the same line */\n        ) {\n          appendEOL();\n          return;\n        }\n        flushTextContentItem();\n        return;\n      }\n\n      if (Math.abs(advanceY) > textContentItem.height) {\n        appendEOL();\n        return;\n      }\n\n      if (advanceX <= textContentItem.trackingSpaceMin) {\n        textContentItem.width += advanceX;\n      } else if (!addFakeSpaces(advanceX, textContentItem.prevTransform)) {\n        if (textContentItem.str.length === 0) {\n          textContent.items.push({\n            str: \" \",\n            dir: \"ltr\",\n            width: advanceX,\n            height: 0,\n            transform: textContentItem.prevTransform,\n            fontName: textContentItem.fontName,\n            hasEOL: false,\n          });\n        } else {\n          textContentItem.width += advanceX;\n        }\n      }\n    }\n\n    function buildTextContentItem({ chars, extraSpacing }) {\n      const font = textState.font;\n      if (!chars) {\n        // Just move according to the space we have.\n        const charSpacing = textState.charSpacing + extraSpacing;\n        if (charSpacing) {\n          if (!font.vertical) {\n            textState.translateTextMatrix(\n              charSpacing * textState.textHScale,\n              0\n            );\n          } else {\n            textState.translateTextMatrix(0, -charSpacing);\n          }\n        }\n\n        return;\n      }\n\n      const glyphs = font.charsToGlyphs(chars);\n      const scale = textState.fontMatrix[0] * textState.fontSize;\n      for (let i = 0, ii = glyphs.length; i < ii; i++) {\n        const glyph = glyphs[i];\n        let charSpacing =\n          textState.charSpacing + (i + 1 === ii ? extraSpacing : 0);\n\n        let glyphWidth = glyph.width;\n        if (font.vertical) {\n          glyphWidth = glyph.vmetric ? glyph.vmetric[0] : -glyphWidth;\n        }\n        let scaledDim = glyphWidth * scale;\n\n        let glyphUnicode = glyph.unicode;\n        if (\n          glyphUnicode === \" \" &&\n          (i === 0 ||\n            i + 1 === ii ||\n            glyphs[i - 1].unicode === \" \" ||\n            glyphs[i + 1].unicode === \" \" ||\n            extraSpacing)\n        ) {\n          // Don't push a \" \" in the textContentItem\n          // (except when it's between two non-spaces chars),\n          // it will be done (if required) in next call to\n          // compareWithLastPosition.\n          // This way we can merge real spaces and spaces due to cursor moves.\n          if (!font.vertical) {\n            charSpacing += scaledDim + textState.wordSpacing;\n            textState.translateTextMatrix(\n              charSpacing * textState.textHScale,\n              0\n            );\n          } else {\n            charSpacing += -scaledDim + textState.wordSpacing;\n            textState.translateTextMatrix(0, -charSpacing);\n          }\n          continue;\n        }\n\n        compareWithLastPosition();\n\n        // Must be called after compareWithLastPosition because\n        // the textContentItem could have been flushed.\n        const textChunk = ensureTextContentItem();\n        if (DiacriticRegExp.test(glyph.unicode)) {\n          scaledDim = 0;\n        }\n\n        if (!font.vertical) {\n          scaledDim *= textState.textHScale;\n          textState.translateTextMatrix(scaledDim, 0);\n          textChunk.width += scaledDim;\n        } else {\n          textState.translateTextMatrix(0, scaledDim);\n          scaledDim = Math.abs(scaledDim);\n          textChunk.height += scaledDim;\n        }\n\n        if (scaledDim) {\n          // Save the position of the last visible character.\n          textChunk.prevTransform = getCurrentTextTransform();\n        }\n\n        glyphUnicode = NormalizedUnicodes[glyphUnicode] || glyphUnicode;\n        glyphUnicode = reverseIfRtl(glyphUnicode);\n        textChunk.str.push(glyphUnicode);\n\n        if (charSpacing) {\n          if (!font.vertical) {\n            textState.translateTextMatrix(\n              charSpacing * textState.textHScale,\n              0\n            );\n          } else {\n            textState.translateTextMatrix(0, -charSpacing);\n          }\n        }\n      }\n    }\n\n    function appendEOL() {\n      if (textContentItem.initialized) {\n        textContentItem.hasEOL = true;\n        flushTextContentItem();\n      } else {\n        textContent.items.push({\n          str: \"\",\n          dir: \"ltr\",\n          width: 0,\n          height: 0,\n          transform: getCurrentTextTransform(),\n          fontName: textState.font.loadedName,\n          hasEOL: true,\n        });\n      }\n    }\n\n    function addFakeSpaces(width, transf) {\n      if (\n        textContentItem.spaceInFlowMin <= width &&\n        width <= textContentItem.spaceInFlowMax\n      ) {\n        if (textContentItem.initialized) {\n          textContentItem.str.push(\" \");\n        }\n        return false;\n      }\n\n      const fontName = textContentItem.fontName;\n\n      let height = 0;\n      if (textContentItem.vertical) {\n        height = width;\n        width = 0;\n      }\n\n      flushTextContentItem();\n      textContent.items.push({\n        str: \" \",\n        // TODO: check if using the orientation from last chunk is\n        // better or not.\n        dir: \"ltr\",\n        width,\n        height,\n        transform: transf || getCurrentTextTransform(),\n        fontName,\n        hasEOL: false,\n      });\n\n      return true;\n    }\n\n    function flushTextContentItem() {\n      if (!textContentItem.initialized || !textContentItem.str) {\n        return;\n      }\n\n      // Do final text scaling.\n      if (!textContentItem.vertical) {\n        textContentItem.totalWidth +=\n          textContentItem.width * textContentItem.textAdvanceScale;\n      } else {\n        textContentItem.totalHeight +=\n          textContentItem.height * textContentItem.textAdvanceScale;\n      }\n\n      textContent.items.push(runBidiTransform(textContentItem));\n      textContentItem.initialized = false;\n      textContentItem.str.length = 0;\n    }\n\n    function enqueueChunk(batch = false) {\n      const length = textContent.items.length;\n      if (length === 0) {\n        return;\n      }\n      if (batch && length < TEXT_CHUNK_BATCH_SIZE) {\n        return;\n      }\n      sink.enqueue(textContent, length);\n      textContent.items = [];\n      textContent.styles = Object.create(null);\n    }\n\n    const timeSlotManager = new TimeSlotManager();\n\n    return new Promise(function promiseBody(resolve, reject) {\n      const next = function (promise) {\n        enqueueChunk(/* batch = */ true);\n        Promise.all([promise, sink.ready]).then(function () {\n          try {\n            promiseBody(resolve, reject);\n          } catch (ex) {\n            reject(ex);\n          }\n        }, reject);\n      };\n      task.ensureNotTerminated();\n      timeSlotManager.reset();\n\n      const operation = {};\n      let stop,\n        args = [];\n      while (!(stop = timeSlotManager.check())) {\n        // The arguments parsed by read() are not used beyond this loop, so\n        // we can reuse the same array on every iteration, thus avoiding\n        // unnecessary allocations.\n        args.length = 0;\n        operation.args = args;\n        if (!preprocessor.read(operation)) {\n          break;\n        }\n        textState = stateManager.state;\n        const fn = operation.fn;\n        args = operation.args;\n\n        switch (fn | 0) {\n          case OPS.setFont:\n            // Optimization to ignore multiple identical Tf commands.\n            var fontNameArg = args[0].name,\n              fontSizeArg = args[1];\n            if (\n              textState.font &&\n              fontNameArg === textState.fontName &&\n              fontSizeArg === textState.fontSize\n            ) {\n              break;\n            }\n\n            flushTextContentItem();\n            textState.fontName = fontNameArg;\n            textState.fontSize = fontSizeArg;\n            next(handleSetFont(fontNameArg, null));\n            return;\n          case OPS.setTextRise:\n            textState.textRise = args[0];\n            break;\n          case OPS.setHScale:\n            textState.textHScale = args[0] / 100;\n            break;\n          case OPS.setLeading:\n            textState.leading = args[0];\n            break;\n          case OPS.moveText:\n            textState.translateTextLineMatrix(args[0], args[1]);\n            textState.textMatrix = textState.textLineMatrix.slice();\n            break;\n          case OPS.setLeadingMoveText:\n            textState.leading = -args[1];\n            textState.translateTextLineMatrix(args[0], args[1]);\n            textState.textMatrix = textState.textLineMatrix.slice();\n            break;\n          case OPS.nextLine:\n            textState.carriageReturn();\n            break;\n          case OPS.setTextMatrix:\n            textState.setTextMatrix(\n              args[0],\n              args[1],\n              args[2],\n              args[3],\n              args[4],\n              args[5]\n            );\n            textState.setTextLineMatrix(\n              args[0],\n              args[1],\n              args[2],\n              args[3],\n              args[4],\n              args[5]\n            );\n            updateAdvanceScale();\n            break;\n          case OPS.setCharSpacing:\n            textState.charSpacing = args[0];\n            break;\n          case OPS.setWordSpacing:\n            textState.wordSpacing = args[0];\n            break;\n          case OPS.beginText:\n            textState.textMatrix = IDENTITY_MATRIX.slice();\n            textState.textLineMatrix = IDENTITY_MATRIX.slice();\n            break;\n          case OPS.showSpacedText:\n            if (!stateManager.state.font) {\n              self.ensureStateFont(stateManager.state);\n              continue;\n            }\n\n            const spaceFactor =\n              ((textState.font.vertical ? 1 : -1) * textState.fontSize) / 1000;\n            const elements = args[0];\n            for (let i = 0, ii = elements.length; i < ii - 1; i++) {\n              const item = elements[i];\n              if (typeof item === \"string\") {\n                showSpacedTextBuffer.push(item);\n              } else if (typeof item === \"number\" && item !== 0) {\n                // PDF Specification 5.3.2 states:\n                // The number is expressed in thousandths of a unit of text\n                // space.\n                // This amount is subtracted from the current horizontal or\n                // vertical coordinate, depending on the writing mode.\n                // In the default coordinate system, a positive adjustment\n                // has the effect of moving the next glyph painted either to\n                // the left or down by the given amount.\n                const str = showSpacedTextBuffer.join(\"\");\n                showSpacedTextBuffer.length = 0;\n                buildTextContentItem({\n                  chars: str,\n                  extraSpacing: item * spaceFactor,\n                });\n              }\n            }\n\n            const item = elements[elements.length - 1];\n            if (typeof item === \"string\") {\n              showSpacedTextBuffer.push(item);\n            }\n\n            if (showSpacedTextBuffer.length > 0) {\n              const str = showSpacedTextBuffer.join(\"\");\n              showSpacedTextBuffer.length = 0;\n              buildTextContentItem({\n                chars: str,\n                extraSpacing: 0,\n              });\n            }\n            break;\n          case OPS.showText:\n            if (!stateManager.state.font) {\n              self.ensureStateFont(stateManager.state);\n              continue;\n            }\n            buildTextContentItem({\n              chars: args[0],\n              extraSpacing: 0,\n            });\n            break;\n          case OPS.nextLineShowText:\n            if (!stateManager.state.font) {\n              self.ensureStateFont(stateManager.state);\n              continue;\n            }\n            textState.carriageReturn();\n            buildTextContentItem({\n              chars: args[0],\n              extraSpacing: 0,\n            });\n            break;\n          case OPS.nextLineSetSpacingShowText:\n            if (!stateManager.state.font) {\n              self.ensureStateFont(stateManager.state);\n              continue;\n            }\n            textState.wordSpacing = args[0];\n            textState.charSpacing = args[1];\n            textState.carriageReturn();\n            buildTextContentItem({\n              chars: args[2],\n              extraSpacing: 0,\n            });\n            break;\n          case OPS.paintXObject:\n            flushTextContentItem();\n            if (!xobjs) {\n              xobjs = resources.get(\"XObject\") || Dict.empty;\n            }\n\n            var isValidName = args[0] instanceof Name;\n            var name = args[0].name;\n\n            if (isValidName && emptyXObjectCache.getByName(name)) {\n              break;\n            }\n\n            next(\n              new Promise(function (resolveXObject, rejectXObject) {\n                if (!isValidName) {\n                  throw new FormatError(\"XObject must be referred to by name.\");\n                }\n\n                let xobj = xobjs.getRaw(name);\n                if (xobj instanceof Ref) {\n                  if (emptyXObjectCache.getByRef(xobj)) {\n                    resolveXObject();\n                    return;\n                  }\n\n                  const globalImage = self.globalImageCache.getData(\n                    xobj,\n                    self.pageIndex\n                  );\n                  if (globalImage) {\n                    resolveXObject();\n                    return;\n                  }\n\n                  xobj = xref.fetch(xobj);\n                }\n\n                if (!isStream(xobj)) {\n                  throw new FormatError(\"XObject should be a stream\");\n                }\n\n                const type = xobj.dict.get(\"Subtype\");\n                if (!isName(type)) {\n                  throw new FormatError(\"XObject should have a Name subtype\");\n                }\n\n                if (type.name !== \"Form\") {\n                  emptyXObjectCache.set(name, xobj.dict.objId, true);\n\n                  resolveXObject();\n                  return;\n                }\n\n                // Use a new `StateManager` to prevent incorrect positioning\n                // of textItems *after* the Form XObject, since errors in the\n                // data can otherwise prevent `restore` operators from\n                // executing.\n                // NOTE: Only an issue when `options.ignoreErrors === true`.\n                const currentState = stateManager.state.clone();\n                const xObjStateManager = new StateManager(currentState);\n\n                const matrix = xobj.dict.getArray(\"Matrix\");\n                if (Array.isArray(matrix) && matrix.length === 6) {\n                  xObjStateManager.transform(matrix);\n                }\n\n                // Enqueue the `textContent` chunk before parsing the /Form\n                // XObject.\n                enqueueChunk();\n                const sinkWrapper = {\n                  enqueueInvoked: false,\n\n                  enqueue(chunk, size) {\n                    this.enqueueInvoked = true;\n                    sink.enqueue(chunk, size);\n                  },\n\n                  get desiredSize() {\n                    return sink.desiredSize;\n                  },\n\n                  get ready() {\n                    return sink.ready;\n                  },\n                };\n\n                self\n                  .getTextContent({\n                    stream: xobj,\n                    task,\n                    resources: xobj.dict.get(\"Resources\") || resources,\n                    stateManager: xObjStateManager,\n                    normalizeWhitespace,\n                    combineTextItems,\n                    includeMarkedContent,\n                    sink: sinkWrapper,\n                    seenStyles,\n                  })\n                  .then(function () {\n                    if (!sinkWrapper.enqueueInvoked) {\n                      emptyXObjectCache.set(name, xobj.dict.objId, true);\n                    }\n                    resolveXObject();\n                  }, rejectXObject);\n              }).catch(function (reason) {\n                if (reason instanceof AbortException) {\n                  return;\n                }\n                if (self.options.ignoreErrors) {\n                  // Error(s) in the XObject -- allow text-extraction to\n                  // continue.\n                  warn(`getTextContent - ignoring XObject: \"${reason}\".`);\n                  return;\n                }\n                throw reason;\n              })\n            );\n            return;\n          case OPS.setGState:\n            isValidName = args[0] instanceof Name;\n            name = args[0].name;\n\n            if (isValidName && emptyGStateCache.getByName(name)) {\n              break;\n            }\n\n            next(\n              new Promise(function (resolveGState, rejectGState) {\n                if (!isValidName) {\n                  throw new FormatError(\"GState must be referred to by name.\");\n                }\n\n                const extGState = resources.get(\"ExtGState\");\n                if (!(extGState instanceof Dict)) {\n                  throw new FormatError(\"ExtGState should be a dictionary.\");\n                }\n\n                const gState = extGState.get(name);\n                // TODO: Attempt to lookup cached GStates by reference as well,\n                //       if and only if there are PDF documents where doing so\n                //       would significantly improve performance.\n                if (!(gState instanceof Dict)) {\n                  throw new FormatError(\"GState should be a dictionary.\");\n                }\n\n                const gStateFont = gState.get(\"Font\");\n                if (!gStateFont) {\n                  emptyGStateCache.set(name, gState.objId, true);\n\n                  resolveGState();\n                  return;\n                }\n                flushTextContentItem();\n\n                textState.fontName = null;\n                textState.fontSize = gStateFont[1];\n                handleSetFont(null, gStateFont[0]).then(\n                  resolveGState,\n                  rejectGState\n                );\n              }).catch(function (reason) {\n                if (reason instanceof AbortException) {\n                  return;\n                }\n                if (self.options.ignoreErrors) {\n                  // Error(s) in the ExtGState -- allow text-extraction to\n                  // continue.\n                  warn(`getTextContent - ignoring ExtGState: \"${reason}\".`);\n                  return;\n                }\n                throw reason;\n              })\n            );\n            return;\n          case OPS.beginMarkedContent:\n            if (includeMarkedContent) {\n              textContent.items.push({\n                type: \"beginMarkedContent\",\n                tag: isName(args[0]) ? args[0].name : null,\n              });\n            }\n            break;\n          case OPS.beginMarkedContentProps:\n            if (includeMarkedContent) {\n              flushTextContentItem();\n              let mcid = null;\n              if (isDict(args[1])) {\n                mcid = args[1].get(\"MCID\");\n              }\n              textContent.items.push({\n                type: \"beginMarkedContentProps\",\n                id: Number.isInteger(mcid)\n                  ? `${self.idFactory.getPageObjId()}_mcid${mcid}`\n                  : null,\n                tag: isName(args[0]) ? args[0].name : null,\n              });\n            }\n            break;\n          case OPS.endMarkedContent:\n            if (includeMarkedContent) {\n              flushTextContentItem();\n              textContent.items.push({\n                type: \"endMarkedContent\",\n              });\n            }\n            break;\n        } // switch\n        if (textContent.items.length >= sink.desiredSize) {\n          // Wait for ready, if we reach highWaterMark.\n          stop = true;\n          break;\n        }\n      } // while\n      if (stop) {\n        next(deferred);\n        return;\n      }\n      flushTextContentItem();\n      enqueueChunk();\n      resolve();\n    }).catch(reason => {\n      if (reason instanceof AbortException) {\n        return;\n      }\n      if (this.options.ignoreErrors) {\n        // Error(s) in the TextContent -- allow text-extraction to continue.\n        warn(\n          `getTextContent - ignoring errors during \"${task.name}\" ` +\n            `task: \"${reason}\".`\n        );\n\n        flushTextContentItem();\n        enqueueChunk();\n        return;\n      }\n      throw reason;\n    });\n  }\n\n  extractDataStructures(dict, baseDict, properties) {\n    const xref = this.xref;\n    let cidToGidBytes;\n    // 9.10.2\n    const toUnicodePromise = this.readToUnicode(\n      properties.toUnicode || dict.get(\"ToUnicode\") || baseDict.get(\"ToUnicode\")\n    );\n\n    if (properties.composite) {\n      // CIDSystemInfo helps to match CID to glyphs\n      const cidSystemInfo = dict.get(\"CIDSystemInfo\");\n      if (isDict(cidSystemInfo)) {\n        properties.cidSystemInfo = {\n          registry: stringToPDFString(cidSystemInfo.get(\"Registry\")),\n          ordering: stringToPDFString(cidSystemInfo.get(\"Ordering\")),\n          supplement: cidSystemInfo.get(\"Supplement\"),\n        };\n      }\n\n      const cidToGidMap = dict.get(\"CIDToGIDMap\");\n      if (cidToGidMap instanceof BaseStream) {\n        cidToGidBytes = cidToGidMap.getBytes();\n      }\n    }\n\n    // Based on 9.6.6 of the spec the encoding can come from multiple places\n    // and depends on the font type. The base encoding and differences are\n    // read here, but the encoding that is actually used is chosen during\n    // glyph mapping in the font.\n    // TODO: Loading the built in encoding in the font would allow the\n    // differences to be merged in here not require us to hold on to it.\n    const differences = [];\n    let baseEncodingName = null;\n    let encoding;\n    if (dict.has(\"Encoding\")) {\n      encoding = dict.get(\"Encoding\");\n      if (isDict(encoding)) {\n        baseEncodingName = encoding.get(\"BaseEncoding\");\n        baseEncodingName = isName(baseEncodingName)\n          ? baseEncodingName.name\n          : null;\n        // Load the differences between the base and original\n        if (encoding.has(\"Differences\")) {\n          const diffEncoding = encoding.get(\"Differences\");\n          let index = 0;\n          for (let j = 0, jj = diffEncoding.length; j < jj; j++) {\n            const data = xref.fetchIfRef(diffEncoding[j]);\n            if (isNum(data)) {\n              index = data;\n            } else if (isName(data)) {\n              differences[index++] = data.name;\n            } else {\n              throw new FormatError(\n                `Invalid entry in 'Differences' array: ${data}`\n              );\n            }\n          }\n        }\n      } else if (isName(encoding)) {\n        baseEncodingName = encoding.name;\n      } else {\n        throw new FormatError(\"Encoding is not a Name nor a Dict\");\n      }\n      // According to table 114 if the encoding is a named encoding it must be\n      // one of these predefined encodings.\n      if (\n        baseEncodingName !== \"MacRomanEncoding\" &&\n        baseEncodingName !== \"MacExpertEncoding\" &&\n        baseEncodingName !== \"WinAnsiEncoding\"\n      ) {\n        baseEncodingName = null;\n      }\n    }\n\n    if (baseEncodingName) {\n      properties.defaultEncoding = getEncoding(baseEncodingName);\n    } else {\n      const isSymbolicFont = !!(properties.flags & FontFlags.Symbolic);\n      const isNonsymbolicFont = !!(properties.flags & FontFlags.Nonsymbolic);\n      // According to \"Table 114\" in section \"9.6.6.1 General\" (under\n      // \"9.6.6 Character Encoding\") of the PDF specification, a Nonsymbolic\n      // font should use the `StandardEncoding` if no encoding is specified.\n      encoding = StandardEncoding;\n      if (properties.type === \"TrueType\" && !isNonsymbolicFont) {\n        encoding = WinAnsiEncoding;\n      }\n      // The Symbolic attribute can be misused for regular fonts\n      // Heuristic: we have to check if the font is a standard one also\n      if (isSymbolicFont) {\n        encoding = MacRomanEncoding;\n        if (!properties.file || properties.isInternalFont) {\n          if (/Symbol/i.test(properties.name)) {\n            encoding = SymbolSetEncoding;\n          } else if (/Dingbats|Wingdings/i.test(properties.name)) {\n            encoding = ZapfDingbatsEncoding;\n          }\n        }\n      }\n      properties.defaultEncoding = encoding;\n    }\n\n    properties.differences = differences;\n    properties.baseEncodingName = baseEncodingName;\n    properties.hasEncoding = !!baseEncodingName || differences.length > 0;\n    properties.dict = dict;\n    return toUnicodePromise\n      .then(readToUnicode => {\n        properties.toUnicode = readToUnicode;\n        return this.buildToUnicode(properties);\n      })\n      .then(builtToUnicode => {\n        properties.toUnicode = builtToUnicode;\n        if (cidToGidBytes) {\n          properties.cidToGidMap = this.readCidToGidMap(\n            cidToGidBytes,\n            builtToUnicode\n          );\n        }\n        return properties;\n      });\n  }\n\n  /**\n   * @returns {Array}\n   * @private\n   */\n  _simpleFontToUnicode(properties, forceGlyphs = false) {\n    assert(!properties.composite, \"Must be a simple font.\");\n\n    const toUnicode = [];\n    const encoding = properties.defaultEncoding.slice();\n    const baseEncodingName = properties.baseEncodingName;\n    // Merge in the differences array.\n    const differences = properties.differences;\n    for (const charcode in differences) {\n      const glyphName = differences[charcode];\n      if (glyphName === \".notdef\") {\n        // Skip .notdef to prevent rendering errors, e.g. boxes appearing\n        // where there should be spaces (fixes issue5256.pdf).\n        continue;\n      }\n      encoding[charcode] = glyphName;\n    }\n    const glyphsUnicodeMap = getGlyphsUnicode();\n    for (const charcode in encoding) {\n      // a) Map the character code to a character name.\n      let glyphName = encoding[charcode];\n      // b) Look up the character name in the Adobe Glyph List (see the\n      //    Bibliography) to obtain the corresponding Unicode value.\n      if (glyphName === \"\") {\n        continue;\n      } else if (glyphsUnicodeMap[glyphName] === undefined) {\n        // (undocumented) c) Few heuristics to recognize unknown glyphs\n        // NOTE: Adobe Reader does not do this step, but OSX Preview does\n        let code = 0;\n        switch (glyphName[0]) {\n          case \"G\": // Gxx glyph\n            if (glyphName.length === 3) {\n              code = parseInt(glyphName.substring(1), 16);\n            }\n            break;\n          case \"g\": // g00xx glyph\n            if (glyphName.length === 5) {\n              code = parseInt(glyphName.substring(1), 16);\n            }\n            break;\n          case \"C\": // Cdd{d} glyph\n          case \"c\": // cdd{d} glyph\n            if (glyphName.length >= 3 && glyphName.length <= 4) {\n              const codeStr = glyphName.substring(1);\n\n              if (forceGlyphs) {\n                code = parseInt(codeStr, 16);\n                break;\n              }\n              // Normally the Cdd{d}/cdd{d} glyphName format will contain\n              // regular, i.e. base 10, charCodes (see issue4550.pdf)...\n              code = +codeStr;\n\n              // ... however some PDF generators violate that assumption by\n              // containing glyph, i.e. base 16, codes instead.\n              // In that case we need to re-parse the *entire* encoding to\n              // prevent broken text-selection (fixes issue9655_reduced.pdf).\n              if (\n                Number.isNaN(code) &&\n                Number.isInteger(parseInt(codeStr, 16))\n              ) {\n                return this._simpleFontToUnicode(\n                  properties,\n                  /* forceGlyphs */ true\n                );\n              }\n            }\n            break;\n          default:\n            // 'uniXXXX'/'uXXXX{XX}' glyphs\n            const unicode = getUnicodeForGlyph(glyphName, glyphsUnicodeMap);\n            if (unicode !== -1) {\n              code = unicode;\n            }\n        }\n        if (code > 0 && code <= 0x10ffff && Number.isInteger(code)) {\n          // If `baseEncodingName` is one the predefined encodings, and `code`\n          // equals `charcode`, using the glyph defined in the baseEncoding\n          // seems to yield a better `toUnicode` mapping (fixes issue 5070).\n          if (baseEncodingName && code === +charcode) {\n            const baseEncoding = getEncoding(baseEncodingName);\n            if (baseEncoding && (glyphName = baseEncoding[charcode])) {\n              toUnicode[charcode] = String.fromCharCode(\n                glyphsUnicodeMap[glyphName]\n              );\n              continue;\n            }\n          }\n          toUnicode[charcode] = String.fromCodePoint(code);\n        }\n        continue;\n      }\n      toUnicode[charcode] = String.fromCharCode(glyphsUnicodeMap[glyphName]);\n    }\n    return toUnicode;\n  }\n\n  /**\n   * Builds a char code to unicode map based on section 9.10 of the spec.\n   * @param {Object} properties Font properties object.\n   * @returns {Promise} A Promise that is resolved with a\n   *   {ToUnicodeMap|IdentityToUnicodeMap} object.\n   */\n  async buildToUnicode(properties) {\n    properties.hasIncludedToUnicodeMap =\n      !!properties.toUnicode && properties.toUnicode.length > 0;\n\n    // Section 9.10.2 Mapping Character Codes to Unicode Values\n    if (properties.hasIncludedToUnicodeMap) {\n      // Some fonts contain incomplete ToUnicode data, causing issues with\n      // text-extraction. For simple fonts, containing encoding information,\n      // use a fallback ToUnicode map to improve this (fixes issue8229.pdf).\n      if (!properties.composite && properties.hasEncoding) {\n        properties.fallbackToUnicode = this._simpleFontToUnicode(properties);\n      }\n      return properties.toUnicode;\n    }\n\n    // According to the spec if the font is a simple font we should only map\n    // to unicode if the base encoding is MacRoman, MacExpert, or WinAnsi or\n    // the differences array only contains adobe standard or symbol set names,\n    // in pratice it seems better to always try to create a toUnicode map\n    // based of the default encoding.\n    if (!properties.composite /* is simple font */) {\n      return new ToUnicodeMap(this._simpleFontToUnicode(properties));\n    }\n\n    // If the font is a composite font that uses one of the predefined CMaps\n    // listed in Table 118 (except Identity–H and Identity–V) or whose\n    // descendant CIDFont uses the Adobe-GB1, Adobe-CNS1, Adobe-Japan1, or\n    // Adobe-Korea1 character collection:\n    if (\n      properties.composite &&\n      ((properties.cMap.builtInCMap &&\n        !(properties.cMap instanceof IdentityCMap)) ||\n        (properties.cidSystemInfo.registry === \"Adobe\" &&\n          (properties.cidSystemInfo.ordering === \"GB1\" ||\n            properties.cidSystemInfo.ordering === \"CNS1\" ||\n            properties.cidSystemInfo.ordering === \"Japan1\" ||\n            properties.cidSystemInfo.ordering === \"Korea1\")))\n    ) {\n      // Then:\n      // a) Map the character code to a character identifier (CID) according\n      // to the font’s CMap.\n      // b) Obtain the registry and ordering of the character collection used\n      // by the font’s CMap (for example, Adobe and Japan1) from its\n      // CIDSystemInfo dictionary.\n      const { registry, ordering } = properties.cidSystemInfo;\n      // c) Construct a second CMap name by concatenating the registry and\n      // ordering obtained in step (b) in the format registry–ordering–UCS2\n      // (for example, Adobe–Japan1–UCS2).\n      const ucs2CMapName = Name.get(`${registry}-${ordering}-UCS2`);\n      // d) Obtain the CMap with the name constructed in step (c) (available\n      // from the ASN Web site; see the Bibliography).\n      const ucs2CMap = await CMapFactory.create({\n        encoding: ucs2CMapName,\n        fetchBuiltInCMap: this._fetchBuiltInCMapBound,\n        useCMap: null,\n      });\n      const toUnicode = [];\n      properties.cMap.forEach(function (charcode, cid) {\n        if (cid > 0xffff) {\n          throw new FormatError(\"Max size of CID is 65,535\");\n        }\n        // e) Map the CID obtained in step (a) according to the CMap\n        // obtained in step (d), producing a Unicode value.\n        const ucs2 = ucs2CMap.lookup(cid);\n        if (ucs2) {\n          toUnicode[charcode] = String.fromCharCode(\n            (ucs2.charCodeAt(0) << 8) + ucs2.charCodeAt(1)\n          );\n        }\n      });\n      return new ToUnicodeMap(toUnicode);\n    }\n\n    // The viewer's choice, just use an identity map.\n    return new IdentityToUnicodeMap(properties.firstChar, properties.lastChar);\n  }\n\n  readToUnicode(cmapObj) {\n    if (!cmapObj) {\n      return Promise.resolve(null);\n    }\n    if (isName(cmapObj)) {\n      return CMapFactory.create({\n        encoding: cmapObj,\n        fetchBuiltInCMap: this._fetchBuiltInCMapBound,\n        useCMap: null,\n      }).then(function (cmap) {\n        if (cmap instanceof IdentityCMap) {\n          return new IdentityToUnicodeMap(0, 0xffff);\n        }\n        return new ToUnicodeMap(cmap.getMap());\n      });\n    } else if (isStream(cmapObj)) {\n      return CMapFactory.create({\n        encoding: cmapObj,\n        fetchBuiltInCMap: this._fetchBuiltInCMapBound,\n        useCMap: null,\n      }).then(\n        function (cmap) {\n          if (cmap instanceof IdentityCMap) {\n            return new IdentityToUnicodeMap(0, 0xffff);\n          }\n          const map = new Array(cmap.length);\n          // Convert UTF-16BE\n          // NOTE: cmap can be a sparse array, so use forEach instead of\n          // `for(;;)` to iterate over all keys.\n          cmap.forEach(function (charCode, token) {\n            // Some cmaps contain *only* CID characters (fixes issue9367.pdf).\n            if (typeof token === \"number\") {\n              map[charCode] = String.fromCodePoint(token);\n              return;\n            }\n            const str = [];\n            for (let k = 0; k < token.length; k += 2) {\n              const w1 = (token.charCodeAt(k) << 8) | token.charCodeAt(k + 1);\n              if ((w1 & 0xf800) !== 0xd800) {\n                // w1 < 0xD800 || w1 > 0xDFFF\n                str.push(w1);\n                continue;\n              }\n              k += 2;\n              const w2 = (token.charCodeAt(k) << 8) | token.charCodeAt(k + 1);\n              str.push(((w1 & 0x3ff) << 10) + (w2 & 0x3ff) + 0x10000);\n            }\n            map[charCode] = String.fromCodePoint.apply(String, str);\n          });\n          return new ToUnicodeMap(map);\n        },\n        reason => {\n          if (reason instanceof AbortException) {\n            return null;\n          }\n          if (this.options.ignoreErrors) {\n            // Error in the ToUnicode data -- sending unsupported feature\n            // notification and allow font parsing to continue.\n            this.handler.send(\"UnsupportedFeature\", {\n              featureId: UNSUPPORTED_FEATURES.errorFontToUnicode,\n            });\n            warn(`readToUnicode - ignoring ToUnicode data: \"${reason}\".`);\n            return null;\n          }\n          throw reason;\n        }\n      );\n    }\n    return Promise.resolve(null);\n  }\n\n  readCidToGidMap(glyphsData, toUnicode) {\n    // Extract the encoding from the CIDToGIDMap\n\n    // Set encoding 0 to later verify the font has an encoding\n    const result = [];\n    for (let j = 0, jj = glyphsData.length; j < jj; j++) {\n      const glyphID = (glyphsData[j++] << 8) | glyphsData[j];\n      const code = j >> 1;\n      if (glyphID === 0 && !toUnicode.has(code)) {\n        continue;\n      }\n      result[code] = glyphID;\n    }\n    return result;\n  }\n\n  extractWidths(dict, descriptor, properties) {\n    const xref = this.xref;\n    let glyphsWidths = [];\n    let defaultWidth = 0;\n    const glyphsVMetrics = [];\n    let defaultVMetrics;\n    let i, ii, j, jj, start, code, widths;\n    if (properties.composite) {\n      defaultWidth = dict.has(\"DW\") ? dict.get(\"DW\") : 1000;\n\n      widths = dict.get(\"W\");\n      if (widths) {\n        for (i = 0, ii = widths.length; i < ii; i++) {\n          start = xref.fetchIfRef(widths[i++]);\n          code = xref.fetchIfRef(widths[i]);\n          if (Array.isArray(code)) {\n            for (j = 0, jj = code.length; j < jj; j++) {\n              glyphsWidths[start++] = xref.fetchIfRef(code[j]);\n            }\n          } else {\n            const width = xref.fetchIfRef(widths[++i]);\n            for (j = start; j <= code; j++) {\n              glyphsWidths[j] = width;\n            }\n          }\n        }\n      }\n\n      if (properties.vertical) {\n        let vmetrics = dict.getArray(\"DW2\") || [880, -1000];\n        defaultVMetrics = [vmetrics[1], defaultWidth * 0.5, vmetrics[0]];\n        vmetrics = dict.get(\"W2\");\n        if (vmetrics) {\n          for (i = 0, ii = vmetrics.length; i < ii; i++) {\n            start = xref.fetchIfRef(vmetrics[i++]);\n            code = xref.fetchIfRef(vmetrics[i]);\n            if (Array.isArray(code)) {\n              for (j = 0, jj = code.length; j < jj; j++) {\n                glyphsVMetrics[start++] = [\n                  xref.fetchIfRef(code[j++]),\n                  xref.fetchIfRef(code[j++]),\n                  xref.fetchIfRef(code[j]),\n                ];\n              }\n            } else {\n              const vmetric = [\n                xref.fetchIfRef(vmetrics[++i]),\n                xref.fetchIfRef(vmetrics[++i]),\n                xref.fetchIfRef(vmetrics[++i]),\n              ];\n              for (j = start; j <= code; j++) {\n                glyphsVMetrics[j] = vmetric;\n              }\n            }\n          }\n        }\n      }\n    } else {\n      const firstChar = properties.firstChar;\n      widths = dict.get(\"Widths\");\n      if (widths) {\n        j = firstChar;\n        for (i = 0, ii = widths.length; i < ii; i++) {\n          glyphsWidths[j++] = xref.fetchIfRef(widths[i]);\n        }\n        defaultWidth = parseFloat(descriptor.get(\"MissingWidth\")) || 0;\n      } else {\n        // Trying get the BaseFont metrics (see comment above).\n        const baseFontName = dict.get(\"BaseFont\");\n        if (isName(baseFontName)) {\n          const metrics = this.getBaseFontMetrics(baseFontName.name);\n\n          glyphsWidths = this.buildCharCodeToWidth(metrics.widths, properties);\n          defaultWidth = metrics.defaultWidth;\n        }\n      }\n    }\n\n    // Heuristic: detection of monospace font by checking all non-zero widths\n    let isMonospace = true;\n    let firstWidth = defaultWidth;\n    for (const glyph in glyphsWidths) {\n      const glyphWidth = glyphsWidths[glyph];\n      if (!glyphWidth) {\n        continue;\n      }\n      if (!firstWidth) {\n        firstWidth = glyphWidth;\n        continue;\n      }\n      if (firstWidth !== glyphWidth) {\n        isMonospace = false;\n        break;\n      }\n    }\n    if (isMonospace) {\n      properties.flags |= FontFlags.FixedPitch;\n    }\n\n    properties.defaultWidth = defaultWidth;\n    properties.widths = glyphsWidths;\n    properties.defaultVMetrics = defaultVMetrics;\n    properties.vmetrics = glyphsVMetrics;\n  }\n\n  isSerifFont(baseFontName) {\n    // Simulating descriptor flags attribute\n    const fontNameWoStyle = baseFontName.split(\"-\")[0];\n    return (\n      fontNameWoStyle in getSerifFonts() ||\n      fontNameWoStyle.search(/serif/gi) !== -1\n    );\n  }\n\n  getBaseFontMetrics(name) {\n    let defaultWidth = 0;\n    let widths = Object.create(null);\n    let monospace = false;\n    const stdFontMap = getStdFontMap();\n    let lookupName = stdFontMap[name] || name;\n    const Metrics = getMetrics();\n\n    if (!(lookupName in Metrics)) {\n      // Use default fonts for looking up font metrics if the passed\n      // font is not a base font\n      if (this.isSerifFont(name)) {\n        lookupName = \"Times-Roman\";\n      } else {\n        lookupName = \"Helvetica\";\n      }\n    }\n    const glyphWidths = Metrics[lookupName];\n\n    if (isNum(glyphWidths)) {\n      defaultWidth = glyphWidths;\n      monospace = true;\n    } else {\n      widths = glyphWidths(); // expand lazy widths array\n    }\n\n    return {\n      defaultWidth,\n      monospace,\n      widths,\n    };\n  }\n\n  buildCharCodeToWidth(widthsByGlyphName, properties) {\n    const widths = Object.create(null);\n    const differences = properties.differences;\n    const encoding = properties.defaultEncoding;\n    for (let charCode = 0; charCode < 256; charCode++) {\n      if (charCode in differences && widthsByGlyphName[differences[charCode]]) {\n        widths[charCode] = widthsByGlyphName[differences[charCode]];\n        continue;\n      }\n      if (charCode in encoding && widthsByGlyphName[encoding[charCode]]) {\n        widths[charCode] = widthsByGlyphName[encoding[charCode]];\n        continue;\n      }\n    }\n    return widths;\n  }\n\n  preEvaluateFont(dict) {\n    const baseDict = dict;\n    let type = dict.get(\"Subtype\");\n    if (!isName(type)) {\n      throw new FormatError(\"invalid font Subtype\");\n    }\n\n    let composite = false;\n    let hash, toUnicode;\n    if (type.name === \"Type0\") {\n      // If font is a composite\n      //  - get the descendant font\n      //  - set the type according to the descendant font\n      //  - get the FontDescriptor from the descendant font\n      const df = dict.get(\"DescendantFonts\");\n      if (!df) {\n        throw new FormatError(\"Descendant fonts are not specified\");\n      }\n      dict = Array.isArray(df) ? this.xref.fetchIfRef(df[0]) : df;\n\n      if (!(dict instanceof Dict)) {\n        throw new FormatError(\"Descendant font is not a dictionary.\");\n      }\n      type = dict.get(\"Subtype\");\n      if (!isName(type)) {\n        throw new FormatError(\"invalid font Subtype\");\n      }\n      composite = true;\n    }\n\n    const firstChar = dict.get(\"FirstChar\") || 0,\n      lastChar = dict.get(\"LastChar\") || (composite ? 0xffff : 0xff);\n    const descriptor = dict.get(\"FontDescriptor\");\n    if (descriptor) {\n      hash = new MurmurHash3_64();\n\n      const encoding = baseDict.getRaw(\"Encoding\");\n      if (isName(encoding)) {\n        hash.update(encoding.name);\n      } else if (isRef(encoding)) {\n        hash.update(encoding.toString());\n      } else if (isDict(encoding)) {\n        for (const entry of encoding.getRawValues()) {\n          if (isName(entry)) {\n            hash.update(entry.name);\n          } else if (isRef(entry)) {\n            hash.update(entry.toString());\n          } else if (Array.isArray(entry)) {\n            // 'Differences' array (fixes bug1157493.pdf).\n            const diffLength = entry.length,\n              diffBuf = new Array(diffLength);\n\n            for (let j = 0; j < diffLength; j++) {\n              const diffEntry = entry[j];\n              if (isName(diffEntry)) {\n                diffBuf[j] = diffEntry.name;\n              } else if (isNum(diffEntry) || isRef(diffEntry)) {\n                diffBuf[j] = diffEntry.toString();\n              }\n            }\n            hash.update(diffBuf.join());\n          }\n        }\n      }\n\n      hash.update(`${firstChar}-${lastChar}`); // Fixes issue10665_reduced.pdf\n\n      toUnicode = dict.get(\"ToUnicode\") || baseDict.get(\"ToUnicode\");\n      if (isStream(toUnicode)) {\n        const stream = toUnicode.str || toUnicode;\n        const uint8array = stream.buffer\n          ? new Uint8Array(stream.buffer.buffer, 0, stream.bufferLength)\n          : new Uint8Array(\n              stream.bytes.buffer,\n              stream.start,\n              stream.end - stream.start\n            );\n        hash.update(uint8array);\n      } else if (isName(toUnicode)) {\n        hash.update(toUnicode.name);\n      }\n\n      const widths = dict.get(\"Widths\") || baseDict.get(\"Widths\");\n      if (Array.isArray(widths)) {\n        const widthsBuf = [];\n        for (const entry of widths) {\n          if (isNum(entry) || isRef(entry)) {\n            widthsBuf.push(entry.toString());\n          }\n        }\n        hash.update(widthsBuf.join());\n      }\n\n      if (composite) {\n        hash.update(\"compositeFont\");\n\n        const compositeWidths = dict.get(\"W\") || baseDict.get(\"W\");\n        if (Array.isArray(compositeWidths)) {\n          const widthsBuf = [];\n          for (const entry of compositeWidths) {\n            if (isNum(entry) || isRef(entry)) {\n              widthsBuf.push(entry.toString());\n            } else if (Array.isArray(entry)) {\n              const subWidthsBuf = [];\n              for (const element of entry) {\n                if (isNum(element) || isRef(element)) {\n                  subWidthsBuf.push(element.toString());\n                }\n              }\n              widthsBuf.push(`[${subWidthsBuf.join()}]`);\n            }\n          }\n          hash.update(widthsBuf.join());\n        }\n\n        const cidToGidMap =\n          dict.getRaw(\"CIDToGIDMap\") || baseDict.getRaw(\"CIDToGIDMap\");\n        if (cidToGidMap instanceof Name) {\n          hash.update(cidToGidMap.name);\n        } else if (cidToGidMap instanceof Ref) {\n          hash.update(cidToGidMap.toString());\n        } else if (cidToGidMap instanceof BaseStream) {\n          hash.update(cidToGidMap.peekBytes());\n        }\n      }\n    }\n\n    return {\n      descriptor,\n      dict,\n      baseDict,\n      composite,\n      type: type.name,\n      firstChar,\n      lastChar,\n      toUnicode,\n      hash: hash ? hash.hexdigest() : \"\",\n    };\n  }\n\n  async translateFont({\n    descriptor,\n    dict,\n    baseDict,\n    composite,\n    type,\n    firstChar,\n    lastChar,\n    toUnicode,\n    cssFontInfo,\n  }) {\n    const isType3Font = type === \"Type3\";\n    let properties;\n\n    if (!descriptor) {\n      if (isType3Font) {\n        // FontDescriptor is only required for Type3 fonts when the document\n        // is a tagged pdf. Create a barbebones one to get by.\n        descriptor = new Dict(null);\n        descriptor.set(\"FontName\", Name.get(type));\n        descriptor.set(\"FontBBox\", dict.getArray(\"FontBBox\") || [0, 0, 0, 0]);\n      } else {\n        // Before PDF 1.5 if the font was one of the base 14 fonts, having a\n        // FontDescriptor was not required.\n        // This case is here for compatibility.\n        let baseFontName = dict.get(\"BaseFont\");\n        if (!isName(baseFontName)) {\n          throw new FormatError(\"Base font is not specified\");\n        }\n\n        // Using base font name as a font name.\n        baseFontName = baseFontName.name.replace(/[,_]/g, \"-\");\n        const metrics = this.getBaseFontMetrics(baseFontName);\n\n        // Simulating descriptor flags attribute\n        const fontNameWoStyle = baseFontName.split(\"-\")[0];\n        const flags =\n          (this.isSerifFont(fontNameWoStyle) ? FontFlags.Serif : 0) |\n          (metrics.monospace ? FontFlags.FixedPitch : 0) |\n          (getSymbolsFonts()[fontNameWoStyle]\n            ? FontFlags.Symbolic\n            : FontFlags.Nonsymbolic);\n\n        properties = {\n          type,\n          name: baseFontName,\n          loadedName: baseDict.loadedName,\n          widths: metrics.widths,\n          defaultWidth: metrics.defaultWidth,\n          isSimulatedFlags: true,\n          flags,\n          firstChar,\n          lastChar,\n          toUnicode,\n          xHeight: 0,\n          capHeight: 0,\n          italicAngle: 0,\n          isType3Font,\n        };\n        const widths = dict.get(\"Widths\");\n\n        const standardFontName = getStandardFontName(baseFontName);\n        let file = null;\n        if (standardFontName) {\n          properties.isStandardFont = true;\n          file = await this.fetchStandardFontData(standardFontName);\n          properties.isInternalFont = !!file;\n        }\n        return this.extractDataStructures(dict, dict, properties).then(\n          newProperties => {\n            if (widths) {\n              const glyphWidths = [];\n              let j = firstChar;\n              for (let i = 0, ii = widths.length; i < ii; i++) {\n                glyphWidths[j++] = this.xref.fetchIfRef(widths[i]);\n              }\n              newProperties.widths = glyphWidths;\n            } else {\n              newProperties.widths = this.buildCharCodeToWidth(\n                metrics.widths,\n                newProperties\n              );\n            }\n            return new Font(baseFontName, file, newProperties);\n          }\n        );\n      }\n    }\n\n    // According to the spec if 'FontDescriptor' is declared, 'FirstChar',\n    // 'LastChar' and 'Widths' should exist too, but some PDF encoders seem\n    // to ignore this rule when a variant of a standard font is used.\n    // TODO Fill the width array depending on which of the base font this is\n    // a variant.\n\n    let fontName = descriptor.get(\"FontName\");\n    let baseFont = dict.get(\"BaseFont\");\n    // Some bad PDFs have a string as the font name.\n    if (isString(fontName)) {\n      fontName = Name.get(fontName);\n    }\n    if (isString(baseFont)) {\n      baseFont = Name.get(baseFont);\n    }\n\n    if (!isType3Font) {\n      const fontNameStr = fontName && fontName.name;\n      const baseFontStr = baseFont && baseFont.name;\n      if (fontNameStr !== baseFontStr) {\n        info(\n          `The FontDescriptor's FontName is \"${fontNameStr}\" but ` +\n            `should be the same as the Font's BaseFont \"${baseFontStr}\".`\n        );\n        // Workaround for cases where e.g. fontNameStr = 'Arial' and\n        // baseFontStr = 'Arial,Bold' (needed when no font file is embedded).\n        if (fontNameStr && baseFontStr && baseFontStr.startsWith(fontNameStr)) {\n          fontName = baseFont;\n        }\n      }\n    }\n    fontName = fontName || baseFont;\n\n    if (!isName(fontName)) {\n      throw new FormatError(\"invalid font name\");\n    }\n\n    let fontFile, subtype, length1, length2, length3;\n    try {\n      fontFile = descriptor.get(\"FontFile\", \"FontFile2\", \"FontFile3\");\n    } catch (ex) {\n      if (!this.options.ignoreErrors) {\n        throw ex;\n      }\n      warn(`translateFont - fetching \"${fontName.name}\" font file: \"${ex}\".`);\n      fontFile = new NullStream();\n    }\n    let isStandardFont = false;\n    let isInternalFont = false;\n    let glyphScaleFactors = null;\n    if (fontFile) {\n      if (fontFile.dict) {\n        const subtypeEntry = fontFile.dict.get(\"Subtype\");\n        if (subtypeEntry instanceof Name) {\n          subtype = subtypeEntry.name;\n        }\n        length1 = fontFile.dict.get(\"Length1\");\n        length2 = fontFile.dict.get(\"Length2\");\n        length3 = fontFile.dict.get(\"Length3\");\n      }\n    } else if (cssFontInfo) {\n      // We've a missing XFA font.\n      const standardFontName = getXfaFontName(fontName.name);\n      if (standardFontName) {\n        cssFontInfo.fontFamily = `${cssFontInfo.fontFamily}-PdfJS-XFA`;\n        cssFontInfo.metrics = standardFontName.metrics || null;\n        glyphScaleFactors = standardFontName.factors || null;\n        fontFile = await this.fetchStandardFontData(standardFontName.name);\n        isInternalFont = !!fontFile;\n\n        // We're using a substitution font but for example widths (if any)\n        // are related to the glyph positions in the font.\n        // So we overwrite everything here to be sure that widths are\n        // correct.\n        baseDict = dict = getXfaFontDict(fontName.name);\n        composite = true;\n      }\n    } else if (!isType3Font) {\n      const standardFontName = getStandardFontName(fontName.name);\n      if (standardFontName) {\n        isStandardFont = true;\n        fontFile = await this.fetchStandardFontData(standardFontName);\n        isInternalFont = !!fontFile;\n      }\n    }\n\n    properties = {\n      type,\n      name: fontName.name,\n      subtype,\n      file: fontFile,\n      length1,\n      length2,\n      length3,\n      isStandardFont,\n      isInternalFont,\n      loadedName: baseDict.loadedName,\n      composite,\n      fixedPitch: false,\n      fontMatrix: dict.getArray(\"FontMatrix\") || FONT_IDENTITY_MATRIX,\n      firstChar,\n      lastChar,\n      toUnicode,\n      bbox: descriptor.getArray(\"FontBBox\") || dict.getArray(\"FontBBox\"),\n      ascent: descriptor.get(\"Ascent\"),\n      descent: descriptor.get(\"Descent\"),\n      xHeight: descriptor.get(\"XHeight\") || 0,\n      capHeight: descriptor.get(\"CapHeight\") || 0,\n      flags: descriptor.get(\"Flags\"),\n      italicAngle: descriptor.get(\"ItalicAngle\") || 0,\n      isType3Font,\n      cssFontInfo,\n      scaleFactors: glyphScaleFactors,\n    };\n\n    if (composite) {\n      const cidEncoding = baseDict.get(\"Encoding\");\n      if (isName(cidEncoding)) {\n        properties.cidEncoding = cidEncoding.name;\n      }\n      const cMap = await CMapFactory.create({\n        encoding: cidEncoding,\n        fetchBuiltInCMap: this._fetchBuiltInCMapBound,\n        useCMap: null,\n      });\n      properties.cMap = cMap;\n      properties.vertical = properties.cMap.vertical;\n    }\n\n    return this.extractDataStructures(dict, baseDict, properties).then(\n      newProperties => {\n        this.extractWidths(dict, descriptor, newProperties);\n\n        return new Font(fontName.name, fontFile, newProperties);\n      }\n    );\n  }\n\n  static buildFontPaths(font, glyphs, handler, evaluatorOptions) {\n    function buildPath(fontChar) {\n      const glyphName = `${font.loadedName}_path_${fontChar}`;\n      try {\n        if (font.renderer.hasBuiltPath(fontChar)) {\n          return;\n        }\n        handler.send(\"commonobj\", [\n          glyphName,\n          \"FontPath\",\n          font.renderer.getPathJs(fontChar),\n        ]);\n      } catch (reason) {\n        if (evaluatorOptions.ignoreErrors) {\n          // Error in the font data -- sending unsupported feature notification\n          // and allow glyph path building to continue.\n          handler.send(\"UnsupportedFeature\", {\n            featureId: UNSUPPORTED_FEATURES.errorFontBuildPath,\n          });\n          warn(`buildFontPaths - ignoring ${glyphName} glyph: \"${reason}\".`);\n          return;\n        }\n        throw reason;\n      }\n    }\n\n    for (const glyph of glyphs) {\n      buildPath(glyph.fontChar);\n\n      // If the glyph has an accent we need to build a path for its\n      // fontChar too, otherwise CanvasGraphics_paintChar will fail.\n      const accent = glyph.accent;\n      if (accent && accent.fontChar) {\n        buildPath(accent.fontChar);\n      }\n    }\n  }\n\n  static get fallbackFontDict() {\n    const dict = new Dict();\n    dict.set(\"BaseFont\", Name.get(\"PDFJS-FallbackFont\"));\n    dict.set(\"Type\", Name.get(\"FallbackType\"));\n    dict.set(\"Subtype\", Name.get(\"FallbackType\"));\n    dict.set(\"Encoding\", Name.get(\"WinAnsiEncoding\"));\n\n    return shadow(this, \"fallbackFontDict\", dict);\n  }\n}\n\nclass TranslatedFont {\n  constructor({ loadedName, font, dict, evaluatorOptions }) {\n    this.loadedName = loadedName;\n    this.font = font;\n    this.dict = dict;\n    this._evaluatorOptions = evaluatorOptions || DefaultPartialEvaluatorOptions;\n    this.type3Loaded = null;\n    this.type3Dependencies = font.isType3Font ? new Set() : null;\n    this.sent = false;\n  }\n\n  send(handler) {\n    if (this.sent) {\n      return;\n    }\n    this.sent = true;\n\n    handler.send(\"commonobj\", [\n      this.loadedName,\n      \"Font\",\n      this.font.exportData(this._evaluatorOptions.fontExtraProperties),\n    ]);\n  }\n\n  fallback(handler) {\n    if (!this.font.data) {\n      return;\n    }\n    // When font loading failed, fall back to the built-in font renderer.\n    this.font.disableFontFace = true;\n    // An arbitrary number of text rendering operators could have been\n    // encountered between the point in time when the 'Font' message was sent\n    // to the main-thread, and the point in time when the 'FontFallback'\n    // message was received on the worker-thread.\n    // To ensure that all 'FontPath's are available on the main-thread, when\n    // font loading failed, attempt to resend *all* previously parsed glyphs.\n    PartialEvaluator.buildFontPaths(\n      this.font,\n      /* glyphs = */ this.font.glyphCacheValues,\n      handler,\n      this._evaluatorOptions\n    );\n  }\n\n  loadType3Data(evaluator, resources, task) {\n    if (this.type3Loaded) {\n      return this.type3Loaded;\n    }\n    if (!this.font.isType3Font) {\n      throw new Error(\"Must be a Type3 font.\");\n    }\n    // When parsing Type3 glyphs, always ignore them if there are errors.\n    // Compared to the parsing of e.g. an entire page, it doesn't really\n    // make sense to only be able to render a Type3 glyph partially.\n    const type3Evaluator = evaluator.clone({ ignoreErrors: false });\n    type3Evaluator.parsingType3Font = true;\n\n    const translatedFont = this.font,\n      type3Dependencies = this.type3Dependencies;\n    let loadCharProcsPromise = Promise.resolve();\n    const charProcs = this.dict.get(\"CharProcs\");\n    const fontResources = this.dict.get(\"Resources\") || resources;\n    const charProcOperatorList = Object.create(null);\n\n    const isEmptyBBox =\n      !translatedFont.bbox || isArrayEqual(translatedFont.bbox, [0, 0, 0, 0]);\n\n    for (const key of charProcs.getKeys()) {\n      loadCharProcsPromise = loadCharProcsPromise.then(() => {\n        const glyphStream = charProcs.get(key);\n        const operatorList = new OperatorList();\n        return type3Evaluator\n          .getOperatorList({\n            stream: glyphStream,\n            task,\n            resources: fontResources,\n            operatorList,\n          })\n          .then(() => {\n            // According to the PDF specification, section \"9.6.5 Type 3 Fonts\"\n            // and \"Table 113\":\n            //  \"A glyph description that begins with the d1 operator should\n            //   not execute any operators that set the colour (or other\n            //   colour-related parameters) in the graphics state;\n            //   any use of such operators shall be ignored.\"\n            if (operatorList.fnArray[0] === OPS.setCharWidthAndBounds) {\n              this._removeType3ColorOperators(operatorList, isEmptyBBox);\n            }\n            charProcOperatorList[key] = operatorList.getIR();\n\n            for (const dependency of operatorList.dependencies) {\n              type3Dependencies.add(dependency);\n            }\n          })\n          .catch(function (reason) {\n            warn(`Type3 font resource \"${key}\" is not available.`);\n            const dummyOperatorList = new OperatorList();\n            charProcOperatorList[key] = dummyOperatorList.getIR();\n          });\n      });\n    }\n    this.type3Loaded = loadCharProcsPromise.then(() => {\n      translatedFont.charProcOperatorList = charProcOperatorList;\n      if (this._bbox) {\n        translatedFont.isCharBBox = true;\n        translatedFont.bbox = this._bbox;\n      }\n    });\n    return this.type3Loaded;\n  }\n\n  /**\n   * @private\n   */\n  _removeType3ColorOperators(operatorList, isEmptyBBox = false) {\n    if (\n      typeof PDFJSDev === \"undefined\" ||\n      PDFJSDev.test(\"!PRODUCTION || TESTING\")\n    ) {\n      assert(\n        operatorList.fnArray[0] === OPS.setCharWidthAndBounds,\n        \"Type3 glyph shall start with the d1 operator.\"\n      );\n    }\n    if (isEmptyBBox) {\n      if (!this._bbox) {\n        this._bbox = [Infinity, Infinity, -Infinity, -Infinity];\n      }\n      const charBBox = Util.normalizeRect(operatorList.argsArray[0].slice(2));\n\n      this._bbox[0] = Math.min(this._bbox[0], charBBox[0]);\n      this._bbox[1] = Math.min(this._bbox[1], charBBox[1]);\n      this._bbox[2] = Math.max(this._bbox[2], charBBox[2]);\n      this._bbox[3] = Math.max(this._bbox[3], charBBox[3]);\n    }\n    let i = 1,\n      ii = operatorList.length;\n    while (i < ii) {\n      switch (operatorList.fnArray[i]) {\n        case OPS.setStrokeColorSpace:\n        case OPS.setFillColorSpace:\n        case OPS.setStrokeColor:\n        case OPS.setStrokeColorN:\n        case OPS.setFillColor:\n        case OPS.setFillColorN:\n        case OPS.setStrokeGray:\n        case OPS.setFillGray:\n        case OPS.setStrokeRGBColor:\n        case OPS.setFillRGBColor:\n        case OPS.setStrokeCMYKColor:\n        case OPS.setFillCMYKColor:\n        case OPS.shadingFill:\n        case OPS.setRenderingIntent:\n          operatorList.fnArray.splice(i, 1);\n          operatorList.argsArray.splice(i, 1);\n          ii--;\n          continue;\n\n        case OPS.setGState:\n          const [gStateObj] = operatorList.argsArray[i];\n          let j = 0,\n            jj = gStateObj.length;\n          while (j < jj) {\n            const [gStateKey] = gStateObj[j];\n            switch (gStateKey) {\n              case \"TR\":\n              case \"TR2\":\n              case \"HT\":\n              case \"BG\":\n              case \"BG2\":\n              case \"UCR\":\n              case \"UCR2\":\n                gStateObj.splice(j, 1);\n                jj--;\n                continue;\n            }\n            j++;\n          }\n          break;\n      }\n      i++;\n    }\n  }\n}\n\nclass StateManager {\n  constructor(initialState = new EvalState()) {\n    this.state = initialState;\n    this.stateStack = [];\n  }\n\n  save() {\n    const old = this.state;\n    this.stateStack.push(this.state);\n    this.state = old.clone();\n  }\n\n  restore() {\n    const prev = this.stateStack.pop();\n    if (prev) {\n      this.state = prev;\n    }\n  }\n\n  transform(args) {\n    this.state.ctm = Util.transform(this.state.ctm, args);\n  }\n}\n\nclass TextState {\n  constructor() {\n    this.ctm = new Float32Array(IDENTITY_MATRIX);\n    this.fontName = null;\n    this.fontSize = 0;\n    this.font = null;\n    this.fontMatrix = FONT_IDENTITY_MATRIX;\n    this.textMatrix = IDENTITY_MATRIX.slice();\n    this.textLineMatrix = IDENTITY_MATRIX.slice();\n    this.charSpacing = 0;\n    this.wordSpacing = 0;\n    this.leading = 0;\n    this.textHScale = 1;\n    this.textRise = 0;\n  }\n\n  setTextMatrix(a, b, c, d, e, f) {\n    const m = this.textMatrix;\n    m[0] = a;\n    m[1] = b;\n    m[2] = c;\n    m[3] = d;\n    m[4] = e;\n    m[5] = f;\n  }\n\n  setTextLineMatrix(a, b, c, d, e, f) {\n    const m = this.textLineMatrix;\n    m[0] = a;\n    m[1] = b;\n    m[2] = c;\n    m[3] = d;\n    m[4] = e;\n    m[5] = f;\n  }\n\n  translateTextMatrix(x, y) {\n    const m = this.textMatrix;\n    m[4] = m[0] * x + m[2] * y + m[4];\n    m[5] = m[1] * x + m[3] * y + m[5];\n  }\n\n  translateTextLineMatrix(x, y) {\n    const m = this.textLineMatrix;\n    m[4] = m[0] * x + m[2] * y + m[4];\n    m[5] = m[1] * x + m[3] * y + m[5];\n  }\n\n  carriageReturn() {\n    this.translateTextLineMatrix(0, -this.leading);\n    this.textMatrix = this.textLineMatrix.slice();\n  }\n\n  clone() {\n    const clone = Object.create(this);\n    clone.textMatrix = this.textMatrix.slice();\n    clone.textLineMatrix = this.textLineMatrix.slice();\n    clone.fontMatrix = this.fontMatrix.slice();\n    return clone;\n  }\n}\n\nclass EvalState {\n  constructor() {\n    this.ctm = new Float32Array(IDENTITY_MATRIX);\n    this.font = null;\n    this.textRenderingMode = TextRenderingMode.FILL;\n    this.fillColorSpace = ColorSpace.singletons.gray;\n    this.strokeColorSpace = ColorSpace.singletons.gray;\n  }\n\n  clone() {\n    return Object.create(this);\n  }\n}\n\nclass EvaluatorPreprocessor {\n  static get opMap() {\n    // Specifies properties for each command\n    //\n    // If variableArgs === true: [0, `numArgs`] expected\n    // If variableArgs === false: exactly `numArgs` expected\n    const getOPMap = getLookupTableFactory(function (t) {\n      // Graphic state\n      t.w = { id: OPS.setLineWidth, numArgs: 1, variableArgs: false };\n      t.J = { id: OPS.setLineCap, numArgs: 1, variableArgs: false };\n      t.j = { id: OPS.setLineJoin, numArgs: 1, variableArgs: false };\n      t.M = { id: OPS.setMiterLimit, numArgs: 1, variableArgs: false };\n      t.d = { id: OPS.setDash, numArgs: 2, variableArgs: false };\n      t.ri = { id: OPS.setRenderingIntent, numArgs: 1, variableArgs: false };\n      t.i = { id: OPS.setFlatness, numArgs: 1, variableArgs: false };\n      t.gs = { id: OPS.setGState, numArgs: 1, variableArgs: false };\n      t.q = { id: OPS.save, numArgs: 0, variableArgs: false };\n      t.Q = { id: OPS.restore, numArgs: 0, variableArgs: false };\n      t.cm = { id: OPS.transform, numArgs: 6, variableArgs: false };\n\n      // Path\n      t.m = { id: OPS.moveTo, numArgs: 2, variableArgs: false };\n      t.l = { id: OPS.lineTo, numArgs: 2, variableArgs: false };\n      t.c = { id: OPS.curveTo, numArgs: 6, variableArgs: false };\n      t.v = { id: OPS.curveTo2, numArgs: 4, variableArgs: false };\n      t.y = { id: OPS.curveTo3, numArgs: 4, variableArgs: false };\n      t.h = { id: OPS.closePath, numArgs: 0, variableArgs: false };\n      t.re = { id: OPS.rectangle, numArgs: 4, variableArgs: false };\n      t.S = { id: OPS.stroke, numArgs: 0, variableArgs: false };\n      t.s = { id: OPS.closeStroke, numArgs: 0, variableArgs: false };\n      t.f = { id: OPS.fill, numArgs: 0, variableArgs: false };\n      t.F = { id: OPS.fill, numArgs: 0, variableArgs: false };\n      t[\"f*\"] = { id: OPS.eoFill, numArgs: 0, variableArgs: false };\n      t.B = { id: OPS.fillStroke, numArgs: 0, variableArgs: false };\n      t[\"B*\"] = { id: OPS.eoFillStroke, numArgs: 0, variableArgs: false };\n      t.b = { id: OPS.closeFillStroke, numArgs: 0, variableArgs: false };\n      t[\"b*\"] = { id: OPS.closeEOFillStroke, numArgs: 0, variableArgs: false };\n      t.n = { id: OPS.endPath, numArgs: 0, variableArgs: false };\n\n      // Clipping\n      t.W = { id: OPS.clip, numArgs: 0, variableArgs: false };\n      t[\"W*\"] = { id: OPS.eoClip, numArgs: 0, variableArgs: false };\n\n      // Text\n      t.BT = { id: OPS.beginText, numArgs: 0, variableArgs: false };\n      t.ET = { id: OPS.endText, numArgs: 0, variableArgs: false };\n      t.Tc = { id: OPS.setCharSpacing, numArgs: 1, variableArgs: false };\n      t.Tw = { id: OPS.setWordSpacing, numArgs: 1, variableArgs: false };\n      t.Tz = { id: OPS.setHScale, numArgs: 1, variableArgs: false };\n      t.TL = { id: OPS.setLeading, numArgs: 1, variableArgs: false };\n      t.Tf = { id: OPS.setFont, numArgs: 2, variableArgs: false };\n      t.Tr = { id: OPS.setTextRenderingMode, numArgs: 1, variableArgs: false };\n      t.Ts = { id: OPS.setTextRise, numArgs: 1, variableArgs: false };\n      t.Td = { id: OPS.moveText, numArgs: 2, variableArgs: false };\n      t.TD = { id: OPS.setLeadingMoveText, numArgs: 2, variableArgs: false };\n      t.Tm = { id: OPS.setTextMatrix, numArgs: 6, variableArgs: false };\n      t[\"T*\"] = { id: OPS.nextLine, numArgs: 0, variableArgs: false };\n      t.Tj = { id: OPS.showText, numArgs: 1, variableArgs: false };\n      t.TJ = { id: OPS.showSpacedText, numArgs: 1, variableArgs: false };\n      t[\"'\"] = { id: OPS.nextLineShowText, numArgs: 1, variableArgs: false };\n      t['\"'] = {\n        id: OPS.nextLineSetSpacingShowText,\n        numArgs: 3,\n        variableArgs: false,\n      };\n\n      // Type3 fonts\n      t.d0 = { id: OPS.setCharWidth, numArgs: 2, variableArgs: false };\n      t.d1 = {\n        id: OPS.setCharWidthAndBounds,\n        numArgs: 6,\n        variableArgs: false,\n      };\n\n      // Color\n      t.CS = { id: OPS.setStrokeColorSpace, numArgs: 1, variableArgs: false };\n      t.cs = { id: OPS.setFillColorSpace, numArgs: 1, variableArgs: false };\n      t.SC = { id: OPS.setStrokeColor, numArgs: 4, variableArgs: true };\n      t.SCN = { id: OPS.setStrokeColorN, numArgs: 33, variableArgs: true };\n      t.sc = { id: OPS.setFillColor, numArgs: 4, variableArgs: true };\n      t.scn = { id: OPS.setFillColorN, numArgs: 33, variableArgs: true };\n      t.G = { id: OPS.setStrokeGray, numArgs: 1, variableArgs: false };\n      t.g = { id: OPS.setFillGray, numArgs: 1, variableArgs: false };\n      t.RG = { id: OPS.setStrokeRGBColor, numArgs: 3, variableArgs: false };\n      t.rg = { id: OPS.setFillRGBColor, numArgs: 3, variableArgs: false };\n      t.K = { id: OPS.setStrokeCMYKColor, numArgs: 4, variableArgs: false };\n      t.k = { id: OPS.setFillCMYKColor, numArgs: 4, variableArgs: false };\n\n      // Shading\n      t.sh = { id: OPS.shadingFill, numArgs: 1, variableArgs: false };\n\n      // Images\n      t.BI = { id: OPS.beginInlineImage, numArgs: 0, variableArgs: false };\n      t.ID = { id: OPS.beginImageData, numArgs: 0, variableArgs: false };\n      t.EI = { id: OPS.endInlineImage, numArgs: 1, variableArgs: false };\n\n      // XObjects\n      t.Do = { id: OPS.paintXObject, numArgs: 1, variableArgs: false };\n      t.MP = { id: OPS.markPoint, numArgs: 1, variableArgs: false };\n      t.DP = { id: OPS.markPointProps, numArgs: 2, variableArgs: false };\n      t.BMC = { id: OPS.beginMarkedContent, numArgs: 1, variableArgs: false };\n      t.BDC = {\n        id: OPS.beginMarkedContentProps,\n        numArgs: 2,\n        variableArgs: false,\n      };\n      t.EMC = { id: OPS.endMarkedContent, numArgs: 0, variableArgs: false };\n\n      // Compatibility\n      t.BX = { id: OPS.beginCompat, numArgs: 0, variableArgs: false };\n      t.EX = { id: OPS.endCompat, numArgs: 0, variableArgs: false };\n\n      // (reserved partial commands for the lexer)\n      t.BM = null;\n      t.BD = null;\n      t.true = null;\n      t.fa = null;\n      t.fal = null;\n      t.fals = null;\n      t.false = null;\n      t.nu = null;\n      t.nul = null;\n      t.null = null;\n    });\n\n    return shadow(this, \"opMap\", getOPMap());\n  }\n\n  static get MAX_INVALID_PATH_OPS() {\n    return shadow(this, \"MAX_INVALID_PATH_OPS\", 20);\n  }\n\n  constructor(stream, xref, stateManager = new StateManager()) {\n    // TODO(mduan): pass array of knownCommands rather than this.opMap\n    // dictionary\n    this.parser = new Parser({\n      lexer: new Lexer(stream, EvaluatorPreprocessor.opMap),\n      xref,\n    });\n    this.stateManager = stateManager;\n    this.nonProcessedArgs = [];\n    this._numInvalidPathOPS = 0;\n  }\n\n  get savedStatesDepth() {\n    return this.stateManager.stateStack.length;\n  }\n\n  // |operation| is an object with two fields:\n  //\n  // - |fn| is an out param.\n  //\n  // - |args| is an inout param. On entry, it should have one of two values.\n  //\n  //   - An empty array. This indicates that the caller is providing the\n  //     array in which the args will be stored in. The caller should use\n  //     this value if it can reuse a single array for each call to read().\n  //\n  //   - |null|. This indicates that the caller needs this function to create\n  //     the array in which any args are stored in. If there are zero args,\n  //     this function will leave |operation.args| as |null| (thus avoiding\n  //     allocations that would occur if we used an empty array to represent\n  //     zero arguments). Otherwise, it will replace |null| with a new array\n  //     containing the arguments. The caller should use this value if it\n  //     cannot reuse an array for each call to read().\n  //\n  // These two modes are present because this function is very hot and so\n  // avoiding allocations where possible is worthwhile.\n  //\n  read(operation) {\n    let args = operation.args;\n    while (true) {\n      const obj = this.parser.getObj();\n      if (obj instanceof Cmd) {\n        const cmd = obj.cmd;\n        // Check that the command is valid\n        const opSpec = EvaluatorPreprocessor.opMap[cmd];\n        if (!opSpec) {\n          warn(`Unknown command \"${cmd}\".`);\n          continue;\n        }\n\n        const fn = opSpec.id;\n        const numArgs = opSpec.numArgs;\n        let argsLength = args !== null ? args.length : 0;\n\n        if (!opSpec.variableArgs) {\n          // Postscript commands can be nested, e.g. /F2 /GS2 gs 5.711 Tf\n          if (argsLength !== numArgs) {\n            const nonProcessedArgs = this.nonProcessedArgs;\n            while (argsLength > numArgs) {\n              nonProcessedArgs.push(args.shift());\n              argsLength--;\n            }\n            while (argsLength < numArgs && nonProcessedArgs.length !== 0) {\n              if (args === null) {\n                args = [];\n              }\n              args.unshift(nonProcessedArgs.pop());\n              argsLength++;\n            }\n          }\n\n          if (argsLength < numArgs) {\n            const partialMsg =\n              `command ${cmd}: expected ${numArgs} args, ` +\n              `but received ${argsLength} args.`;\n\n            // Incomplete path operators, in particular, can result in fairly\n            // chaotic rendering artifacts. Hence the following heuristics is\n            // used to error, rather than just warn, once a number of invalid\n            // path operators have been encountered (fixes bug1443140.pdf).\n            if (\n              fn >= OPS.moveTo &&\n              fn <= OPS.endPath && // Path operator\n              ++this._numInvalidPathOPS >\n                EvaluatorPreprocessor.MAX_INVALID_PATH_OPS\n            ) {\n              throw new FormatError(`Invalid ${partialMsg}`);\n            }\n            // If we receive too few arguments, it's not possible to execute\n            // the command, hence we skip the command.\n            warn(`Skipping ${partialMsg}`);\n            if (args !== null) {\n              args.length = 0;\n            }\n            continue;\n          }\n        } else if (argsLength > numArgs) {\n          info(\n            `Command ${cmd}: expected [0, ${numArgs}] args, ` +\n              `but received ${argsLength} args.`\n          );\n        }\n\n        // TODO figure out how to type-check vararg functions\n        this.preprocessCommand(fn, args);\n\n        operation.fn = fn;\n        operation.args = args;\n        return true;\n      }\n      if (obj === EOF) {\n        return false; // no more commands\n      }\n      // argument\n      if (obj !== null) {\n        if (args === null) {\n          args = [];\n        }\n        args.push(obj);\n        if (args.length > 33) {\n          throw new FormatError(\"Too many arguments\");\n        }\n      }\n    }\n  }\n\n  preprocessCommand(fn, args) {\n    switch (fn | 0) {\n      case OPS.save:\n        this.stateManager.save();\n        break;\n      case OPS.restore:\n        this.stateManager.restore();\n        break;\n      case OPS.transform:\n        this.stateManager.transform(args);\n        break;\n    }\n  }\n}\n\nexport { EvaluatorPreprocessor, PartialEvaluator };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n  CMapCompressionType,\n  FormatError,\n  isString,\n  unreachable,\n  warn,\n} from \"../shared/util.js\";\nimport { EOF, isCmd, isName, isStream } from \"./primitives.js\";\nimport { Lexer } from \"./parser.js\";\nimport { MissingDataException } from \"./core_utils.js\";\nimport { Stream } from \"./stream.js\";\n\nconst BUILT_IN_CMAPS = [\n  // << Start unicode maps.\n  \"Adobe-GB1-UCS2\",\n  \"Adobe-CNS1-UCS2\",\n  \"Adobe-Japan1-UCS2\",\n  \"Adobe-Korea1-UCS2\",\n  // >> End unicode maps.\n  \"78-EUC-H\",\n  \"78-EUC-V\",\n  \"78-H\",\n  \"78-RKSJ-H\",\n  \"78-RKSJ-V\",\n  \"78-V\",\n  \"78ms-RKSJ-H\",\n  \"78ms-RKSJ-V\",\n  \"83pv-RKSJ-H\",\n  \"90ms-RKSJ-H\",\n  \"90ms-RKSJ-V\",\n  \"90msp-RKSJ-H\",\n  \"90msp-RKSJ-V\",\n  \"90pv-RKSJ-H\",\n  \"90pv-RKSJ-V\",\n  \"Add-H\",\n  \"Add-RKSJ-H\",\n  \"Add-RKSJ-V\",\n  \"Add-V\",\n  \"Adobe-CNS1-0\",\n  \"Adobe-CNS1-1\",\n  \"Adobe-CNS1-2\",\n  \"Adobe-CNS1-3\",\n  \"Adobe-CNS1-4\",\n  \"Adobe-CNS1-5\",\n  \"Adobe-CNS1-6\",\n  \"Adobe-GB1-0\",\n  \"Adobe-GB1-1\",\n  \"Adobe-GB1-2\",\n  \"Adobe-GB1-3\",\n  \"Adobe-GB1-4\",\n  \"Adobe-GB1-5\",\n  \"Adobe-Japan1-0\",\n  \"Adobe-Japan1-1\",\n  \"Adobe-Japan1-2\",\n  \"Adobe-Japan1-3\",\n  \"Adobe-Japan1-4\",\n  \"Adobe-Japan1-5\",\n  \"Adobe-Japan1-6\",\n  \"Adobe-Korea1-0\",\n  \"Adobe-Korea1-1\",\n  \"Adobe-Korea1-2\",\n  \"B5-H\",\n  \"B5-V\",\n  \"B5pc-H\",\n  \"B5pc-V\",\n  \"CNS-EUC-H\",\n  \"CNS-EUC-V\",\n  \"CNS1-H\",\n  \"CNS1-V\",\n  \"CNS2-H\",\n  \"CNS2-V\",\n  \"ETHK-B5-H\",\n  \"ETHK-B5-V\",\n  \"ETen-B5-H\",\n  \"ETen-B5-V\",\n  \"ETenms-B5-H\",\n  \"ETenms-B5-V\",\n  \"EUC-H\",\n  \"EUC-V\",\n  \"Ext-H\",\n  \"Ext-RKSJ-H\",\n  \"Ext-RKSJ-V\",\n  \"Ext-V\",\n  \"GB-EUC-H\",\n  \"GB-EUC-V\",\n  \"GB-H\",\n  \"GB-V\",\n  \"GBK-EUC-H\",\n  \"GBK-EUC-V\",\n  \"GBK2K-H\",\n  \"GBK2K-V\",\n  \"GBKp-EUC-H\",\n  \"GBKp-EUC-V\",\n  \"GBT-EUC-H\",\n  \"GBT-EUC-V\",\n  \"GBT-H\",\n  \"GBT-V\",\n  \"GBTpc-EUC-H\",\n  \"GBTpc-EUC-V\",\n  \"GBpc-EUC-H\",\n  \"GBpc-EUC-V\",\n  \"H\",\n  \"HKdla-B5-H\",\n  \"HKdla-B5-V\",\n  \"HKdlb-B5-H\",\n  \"HKdlb-B5-V\",\n  \"HKgccs-B5-H\",\n  \"HKgccs-B5-V\",\n  \"HKm314-B5-H\",\n  \"HKm314-B5-V\",\n  \"HKm471-B5-H\",\n  \"HKm471-B5-V\",\n  \"HKscs-B5-H\",\n  \"HKscs-B5-V\",\n  \"Hankaku\",\n  \"Hiragana\",\n  \"KSC-EUC-H\",\n  \"KSC-EUC-V\",\n  \"KSC-H\",\n  \"KSC-Johab-H\",\n  \"KSC-Johab-V\",\n  \"KSC-V\",\n  \"KSCms-UHC-H\",\n  \"KSCms-UHC-HW-H\",\n  \"KSCms-UHC-HW-V\",\n  \"KSCms-UHC-V\",\n  \"KSCpc-EUC-H\",\n  \"KSCpc-EUC-V\",\n  \"Katakana\",\n  \"NWP-H\",\n  \"NWP-V\",\n  \"RKSJ-H\",\n  \"RKSJ-V\",\n  \"Roman\",\n  \"UniCNS-UCS2-H\",\n  \"UniCNS-UCS2-V\",\n  \"UniCNS-UTF16-H\",\n  \"UniCNS-UTF16-V\",\n  \"UniCNS-UTF32-H\",\n  \"UniCNS-UTF32-V\",\n  \"UniCNS-UTF8-H\",\n  \"UniCNS-UTF8-V\",\n  \"UniGB-UCS2-H\",\n  \"UniGB-UCS2-V\",\n  \"UniGB-UTF16-H\",\n  \"UniGB-UTF16-V\",\n  \"UniGB-UTF32-H\",\n  \"UniGB-UTF32-V\",\n  \"UniGB-UTF8-H\",\n  \"UniGB-UTF8-V\",\n  \"UniJIS-UCS2-H\",\n  \"UniJIS-UCS2-HW-H\",\n  \"UniJIS-UCS2-HW-V\",\n  \"UniJIS-UCS2-V\",\n  \"UniJIS-UTF16-H\",\n  \"UniJIS-UTF16-V\",\n  \"UniJIS-UTF32-H\",\n  \"UniJIS-UTF32-V\",\n  \"UniJIS-UTF8-H\",\n  \"UniJIS-UTF8-V\",\n  \"UniJIS2004-UTF16-H\",\n  \"UniJIS2004-UTF16-V\",\n  \"UniJIS2004-UTF32-H\",\n  \"UniJIS2004-UTF32-V\",\n  \"UniJIS2004-UTF8-H\",\n  \"UniJIS2004-UTF8-V\",\n  \"UniJISPro-UCS2-HW-V\",\n  \"UniJISPro-UCS2-V\",\n  \"UniJISPro-UTF8-V\",\n  \"UniJISX0213-UTF32-H\",\n  \"UniJISX0213-UTF32-V\",\n  \"UniJISX02132004-UTF32-H\",\n  \"UniJISX02132004-UTF32-V\",\n  \"UniKS-UCS2-H\",\n  \"UniKS-UCS2-V\",\n  \"UniKS-UTF16-H\",\n  \"UniKS-UTF16-V\",\n  \"UniKS-UTF32-H\",\n  \"UniKS-UTF32-V\",\n  \"UniKS-UTF8-H\",\n  \"UniKS-UTF8-V\",\n  \"V\",\n  \"WP-Symbol\",\n];\n\n// Heuristic to avoid hanging the worker-thread for CMap data with ridiculously\n// large ranges, such as e.g. 0xFFFFFFFF (fixes issue11922_reduced.pdf).\nconst MAX_MAP_RANGE = 2 ** 24 - 1; // = 0xFFFFFF\n\n// CMap, not to be confused with TrueType's cmap.\nclass CMap {\n  constructor(builtInCMap = false) {\n    // Codespace ranges are stored as follows:\n    // [[1BytePairs], [2BytePairs], [3BytePairs], [4BytePairs]]\n    // where nBytePairs are ranges e.g. [low1, high1, low2, high2, ...]\n    this.codespaceRanges = [[], [], [], []];\n    this.numCodespaceRanges = 0;\n    // Map entries have one of two forms.\n    // - cid chars are 16-bit unsigned integers, stored as integers.\n    // - bf chars are variable-length byte sequences, stored as strings, with\n    //   one byte per character.\n    this._map = [];\n    this.name = \"\";\n    this.vertical = false;\n    this.useCMap = null;\n    this.builtInCMap = builtInCMap;\n  }\n\n  addCodespaceRange(n, low, high) {\n    this.codespaceRanges[n - 1].push(low, high);\n    this.numCodespaceRanges++;\n  }\n\n  mapCidRange(low, high, dstLow) {\n    if (high - low > MAX_MAP_RANGE) {\n      throw new Error(\"mapCidRange - ignoring data above MAX_MAP_RANGE.\");\n    }\n    while (low <= high) {\n      this._map[low++] = dstLow++;\n    }\n  }\n\n  mapBfRange(low, high, dstLow) {\n    if (high - low > MAX_MAP_RANGE) {\n      throw new Error(\"mapBfRange - ignoring data above MAX_MAP_RANGE.\");\n    }\n    const lastByte = dstLow.length - 1;\n    while (low <= high) {\n      this._map[low++] = dstLow;\n      // Only the last byte has to be incremented (in the normal case).\n      const nextCharCode = dstLow.charCodeAt(lastByte) + 1;\n      if (nextCharCode > 0xff) {\n        dstLow =\n          dstLow.substring(0, lastByte - 1) +\n          String.fromCharCode(dstLow.charCodeAt(lastByte - 1) + 1) +\n          \"\\x00\";\n        continue;\n      }\n      dstLow =\n        dstLow.substring(0, lastByte) + String.fromCharCode(nextCharCode);\n    }\n  }\n\n  mapBfRangeToArray(low, high, array) {\n    if (high - low > MAX_MAP_RANGE) {\n      throw new Error(\"mapBfRangeToArray - ignoring data above MAX_MAP_RANGE.\");\n    }\n    const ii = array.length;\n    let i = 0;\n    while (low <= high && i < ii) {\n      this._map[low] = array[i++];\n      ++low;\n    }\n  }\n\n  // This is used for both bf and cid chars.\n  mapOne(src, dst) {\n    this._map[src] = dst;\n  }\n\n  lookup(code) {\n    return this._map[code];\n  }\n\n  contains(code) {\n    return this._map[code] !== undefined;\n  }\n\n  forEach(callback) {\n    // Most maps have fewer than 65536 entries, and for those we use normal\n    // array iteration. But really sparse tables are possible -- e.g. with\n    // indices in the *billions*. For such tables we use for..in, which isn't\n    // ideal because it stringifies the indices for all present elements, but\n    // it does avoid iterating over every undefined entry.\n    const map = this._map;\n    const length = map.length;\n    if (length <= 0x10000) {\n      for (let i = 0; i < length; i++) {\n        if (map[i] !== undefined) {\n          callback(i, map[i]);\n        }\n      }\n    } else {\n      for (const i in map) {\n        callback(i, map[i]);\n      }\n    }\n  }\n\n  charCodeOf(value) {\n    // `Array.prototype.indexOf` is *extremely* inefficient for arrays which\n    // are both very sparse and very large (see issue8372.pdf).\n    const map = this._map;\n    if (map.length <= 0x10000) {\n      return map.indexOf(value);\n    }\n    for (const charCode in map) {\n      if (map[charCode] === value) {\n        return charCode | 0;\n      }\n    }\n    return -1;\n  }\n\n  getMap() {\n    return this._map;\n  }\n\n  readCharCode(str, offset, out) {\n    let c = 0;\n    const codespaceRanges = this.codespaceRanges;\n    // 9.7.6.2 CMap Mapping\n    // The code length is at most 4.\n    for (let n = 0, nn = codespaceRanges.length; n < nn; n++) {\n      c = ((c << 8) | str.charCodeAt(offset + n)) >>> 0;\n      // Check each codespace range to see if it falls within.\n      const codespaceRange = codespaceRanges[n];\n      for (let k = 0, kk = codespaceRange.length; k < kk; ) {\n        const low = codespaceRange[k++];\n        const high = codespaceRange[k++];\n        if (c >= low && c <= high) {\n          out.charcode = c;\n          out.length = n + 1;\n          return;\n        }\n      }\n    }\n    out.charcode = 0;\n    out.length = 1;\n  }\n\n  getCharCodeLength(charCode) {\n    const codespaceRanges = this.codespaceRanges;\n    for (let n = 0, nn = codespaceRanges.length; n < nn; n++) {\n      // Check each codespace range to see if it falls within.\n      const codespaceRange = codespaceRanges[n];\n      for (let k = 0, kk = codespaceRange.length; k < kk; ) {\n        const low = codespaceRange[k++];\n        const high = codespaceRange[k++];\n        if (charCode >= low && charCode <= high) {\n          return n + 1;\n        }\n      }\n    }\n    return 1;\n  }\n\n  get length() {\n    return this._map.length;\n  }\n\n  get isIdentityCMap() {\n    if (!(this.name === \"Identity-H\" || this.name === \"Identity-V\")) {\n      return false;\n    }\n    if (this._map.length !== 0x10000) {\n      return false;\n    }\n    for (let i = 0; i < 0x10000; i++) {\n      if (this._map[i] !== i) {\n        return false;\n      }\n    }\n    return true;\n  }\n}\n\n// A special case of CMap, where the _map array implicitly has a length of\n// 65536 and each element is equal to its index.\nclass IdentityCMap extends CMap {\n  constructor(vertical, n) {\n    super();\n\n    this.vertical = vertical;\n    this.addCodespaceRange(n, 0, 0xffff);\n  }\n\n  mapCidRange(low, high, dstLow) {\n    unreachable(\"should not call mapCidRange\");\n  }\n\n  mapBfRange(low, high, dstLow) {\n    unreachable(\"should not call mapBfRange\");\n  }\n\n  mapBfRangeToArray(low, high, array) {\n    unreachable(\"should not call mapBfRangeToArray\");\n  }\n\n  mapOne(src, dst) {\n    unreachable(\"should not call mapCidOne\");\n  }\n\n  lookup(code) {\n    return Number.isInteger(code) && code <= 0xffff ? code : undefined;\n  }\n\n  contains(code) {\n    return Number.isInteger(code) && code <= 0xffff;\n  }\n\n  forEach(callback) {\n    for (let i = 0; i <= 0xffff; i++) {\n      callback(i, i);\n    }\n  }\n\n  charCodeOf(value) {\n    return Number.isInteger(value) && value <= 0xffff ? value : -1;\n  }\n\n  getMap() {\n    // Sometimes identity maps must be instantiated, but it's rare.\n    const map = new Array(0x10000);\n    for (let i = 0; i <= 0xffff; i++) {\n      map[i] = i;\n    }\n    return map;\n  }\n\n  get length() {\n    return 0x10000;\n  }\n\n  // eslint-disable-next-line getter-return\n  get isIdentityCMap() {\n    unreachable(\"should not access .isIdentityCMap\");\n  }\n}\n\nconst BinaryCMapReader = (function BinaryCMapReaderClosure() {\n  function hexToInt(a, size) {\n    let n = 0;\n    for (let i = 0; i <= size; i++) {\n      n = (n << 8) | a[i];\n    }\n    return n >>> 0;\n  }\n\n  function hexToStr(a, size) {\n    // This code is hot. Special-case some common values to avoid creating an\n    // object with subarray().\n    if (size === 1) {\n      return String.fromCharCode(a[0], a[1]);\n    }\n    if (size === 3) {\n      return String.fromCharCode(a[0], a[1], a[2], a[3]);\n    }\n    return String.fromCharCode.apply(null, a.subarray(0, size + 1));\n  }\n\n  function addHex(a, b, size) {\n    let c = 0;\n    for (let i = size; i >= 0; i--) {\n      c += a[i] + b[i];\n      a[i] = c & 255;\n      c >>= 8;\n    }\n  }\n\n  function incHex(a, size) {\n    let c = 1;\n    for (let i = size; i >= 0 && c > 0; i--) {\n      c += a[i];\n      a[i] = c & 255;\n      c >>= 8;\n    }\n  }\n\n  const MAX_NUM_SIZE = 16;\n  const MAX_ENCODED_NUM_SIZE = 19; // ceil(MAX_NUM_SIZE * 7 / 8)\n\n  class BinaryCMapStream {\n    constructor(data) {\n      this.buffer = data;\n      this.pos = 0;\n      this.end = data.length;\n      this.tmpBuf = new Uint8Array(MAX_ENCODED_NUM_SIZE);\n    }\n\n    readByte() {\n      if (this.pos >= this.end) {\n        return -1;\n      }\n      return this.buffer[this.pos++];\n    }\n\n    readNumber() {\n      let n = 0;\n      let last;\n      do {\n        const b = this.readByte();\n        if (b < 0) {\n          throw new FormatError(\"unexpected EOF in bcmap\");\n        }\n        last = !(b & 0x80);\n        n = (n << 7) | (b & 0x7f);\n      } while (!last);\n      return n;\n    }\n\n    readSigned() {\n      const n = this.readNumber();\n      return n & 1 ? ~(n >>> 1) : n >>> 1;\n    }\n\n    readHex(num, size) {\n      num.set(this.buffer.subarray(this.pos, this.pos + size + 1));\n      this.pos += size + 1;\n    }\n\n    readHexNumber(num, size) {\n      let last;\n      const stack = this.tmpBuf;\n      let sp = 0;\n      do {\n        const b = this.readByte();\n        if (b < 0) {\n          throw new FormatError(\"unexpected EOF in bcmap\");\n        }\n        last = !(b & 0x80);\n        stack[sp++] = b & 0x7f;\n      } while (!last);\n      let i = size,\n        buffer = 0,\n        bufferSize = 0;\n      while (i >= 0) {\n        while (bufferSize < 8 && stack.length > 0) {\n          buffer |= stack[--sp] << bufferSize;\n          bufferSize += 7;\n        }\n        num[i] = buffer & 255;\n        i--;\n        buffer >>= 8;\n        bufferSize -= 8;\n      }\n    }\n\n    readHexSigned(num, size) {\n      this.readHexNumber(num, size);\n      const sign = num[size] & 1 ? 255 : 0;\n      let c = 0;\n      for (let i = 0; i <= size; i++) {\n        c = ((c & 1) << 8) | num[i];\n        num[i] = (c >> 1) ^ sign;\n      }\n    }\n\n    readString() {\n      const len = this.readNumber();\n      let s = \"\";\n      for (let i = 0; i < len; i++) {\n        s += String.fromCharCode(this.readNumber());\n      }\n      return s;\n    }\n  }\n\n  // eslint-disable-next-line no-shadow\n  class BinaryCMapReader {\n    async process(data, cMap, extend) {\n      const stream = new BinaryCMapStream(data);\n      const header = stream.readByte();\n      cMap.vertical = !!(header & 1);\n\n      let useCMap = null;\n      const start = new Uint8Array(MAX_NUM_SIZE);\n      const end = new Uint8Array(MAX_NUM_SIZE);\n      const char = new Uint8Array(MAX_NUM_SIZE);\n      const charCode = new Uint8Array(MAX_NUM_SIZE);\n      const tmp = new Uint8Array(MAX_NUM_SIZE);\n      let code;\n\n      let b;\n      while ((b = stream.readByte()) >= 0) {\n        const type = b >> 5;\n        if (type === 7) {\n          // metadata, e.g. comment or usecmap\n          switch (b & 0x1f) {\n            case 0:\n              stream.readString(); // skipping comment\n              break;\n            case 1:\n              useCMap = stream.readString();\n              break;\n          }\n          continue;\n        }\n        const sequence = !!(b & 0x10);\n        const dataSize = b & 15;\n\n        if (dataSize + 1 > MAX_NUM_SIZE) {\n          throw new Error(\"BinaryCMapReader.process: Invalid dataSize.\");\n        }\n\n        const ucs2DataSize = 1;\n        const subitemsCount = stream.readNumber();\n        switch (type) {\n          case 0: // codespacerange\n            stream.readHex(start, dataSize);\n            stream.readHexNumber(end, dataSize);\n            addHex(end, start, dataSize);\n            cMap.addCodespaceRange(\n              dataSize + 1,\n              hexToInt(start, dataSize),\n              hexToInt(end, dataSize)\n            );\n            for (let i = 1; i < subitemsCount; i++) {\n              incHex(end, dataSize);\n              stream.readHexNumber(start, dataSize);\n              addHex(start, end, dataSize);\n              stream.readHexNumber(end, dataSize);\n              addHex(end, start, dataSize);\n              cMap.addCodespaceRange(\n                dataSize + 1,\n                hexToInt(start, dataSize),\n                hexToInt(end, dataSize)\n              );\n            }\n            break;\n          case 1: // notdefrange\n            stream.readHex(start, dataSize);\n            stream.readHexNumber(end, dataSize);\n            addHex(end, start, dataSize);\n            stream.readNumber(); // code\n            // undefined range, skipping\n            for (let i = 1; i < subitemsCount; i++) {\n              incHex(end, dataSize);\n              stream.readHexNumber(start, dataSize);\n              addHex(start, end, dataSize);\n              stream.readHexNumber(end, dataSize);\n              addHex(end, start, dataSize);\n              stream.readNumber(); // code\n              // nop\n            }\n            break;\n          case 2: // cidchar\n            stream.readHex(char, dataSize);\n            code = stream.readNumber();\n            cMap.mapOne(hexToInt(char, dataSize), code);\n            for (let i = 1; i < subitemsCount; i++) {\n              incHex(char, dataSize);\n              if (!sequence) {\n                stream.readHexNumber(tmp, dataSize);\n                addHex(char, tmp, dataSize);\n              }\n              code = stream.readSigned() + (code + 1);\n              cMap.mapOne(hexToInt(char, dataSize), code);\n            }\n            break;\n          case 3: // cidrange\n            stream.readHex(start, dataSize);\n            stream.readHexNumber(end, dataSize);\n            addHex(end, start, dataSize);\n            code = stream.readNumber();\n            cMap.mapCidRange(\n              hexToInt(start, dataSize),\n              hexToInt(end, dataSize),\n              code\n            );\n            for (let i = 1; i < subitemsCount; i++) {\n              incHex(end, dataSize);\n              if (!sequence) {\n                stream.readHexNumber(start, dataSize);\n                addHex(start, end, dataSize);\n              } else {\n                start.set(end);\n              }\n              stream.readHexNumber(end, dataSize);\n              addHex(end, start, dataSize);\n              code = stream.readNumber();\n              cMap.mapCidRange(\n                hexToInt(start, dataSize),\n                hexToInt(end, dataSize),\n                code\n              );\n            }\n            break;\n          case 4: // bfchar\n            stream.readHex(char, ucs2DataSize);\n            stream.readHex(charCode, dataSize);\n            cMap.mapOne(\n              hexToInt(char, ucs2DataSize),\n              hexToStr(charCode, dataSize)\n            );\n            for (let i = 1; i < subitemsCount; i++) {\n              incHex(char, ucs2DataSize);\n              if (!sequence) {\n                stream.readHexNumber(tmp, ucs2DataSize);\n                addHex(char, tmp, ucs2DataSize);\n              }\n              incHex(charCode, dataSize);\n              stream.readHexSigned(tmp, dataSize);\n              addHex(charCode, tmp, dataSize);\n              cMap.mapOne(\n                hexToInt(char, ucs2DataSize),\n                hexToStr(charCode, dataSize)\n              );\n            }\n            break;\n          case 5: // bfrange\n            stream.readHex(start, ucs2DataSize);\n            stream.readHexNumber(end, ucs2DataSize);\n            addHex(end, start, ucs2DataSize);\n            stream.readHex(charCode, dataSize);\n            cMap.mapBfRange(\n              hexToInt(start, ucs2DataSize),\n              hexToInt(end, ucs2DataSize),\n              hexToStr(charCode, dataSize)\n            );\n            for (let i = 1; i < subitemsCount; i++) {\n              incHex(end, ucs2DataSize);\n              if (!sequence) {\n                stream.readHexNumber(start, ucs2DataSize);\n                addHex(start, end, ucs2DataSize);\n              } else {\n                start.set(end);\n              }\n              stream.readHexNumber(end, ucs2DataSize);\n              addHex(end, start, ucs2DataSize);\n              stream.readHex(charCode, dataSize);\n              cMap.mapBfRange(\n                hexToInt(start, ucs2DataSize),\n                hexToInt(end, ucs2DataSize),\n                hexToStr(charCode, dataSize)\n              );\n            }\n            break;\n          default:\n            throw new Error(`BinaryCMapReader.process - unknown type: ${type}`);\n        }\n      }\n\n      if (useCMap) {\n        return extend(useCMap);\n      }\n      return cMap;\n    }\n  }\n\n  return BinaryCMapReader;\n})();\n\nconst CMapFactory = (function CMapFactoryClosure() {\n  function strToInt(str) {\n    let a = 0;\n    for (let i = 0; i < str.length; i++) {\n      a = (a << 8) | str.charCodeAt(i);\n    }\n    return a >>> 0;\n  }\n\n  function expectString(obj) {\n    if (!isString(obj)) {\n      throw new FormatError(\"Malformed CMap: expected string.\");\n    }\n  }\n\n  function expectInt(obj) {\n    if (!Number.isInteger(obj)) {\n      throw new FormatError(\"Malformed CMap: expected int.\");\n    }\n  }\n\n  function parseBfChar(cMap, lexer) {\n    while (true) {\n      let obj = lexer.getObj();\n      if (obj === EOF) {\n        break;\n      }\n      if (isCmd(obj, \"endbfchar\")) {\n        return;\n      }\n      expectString(obj);\n      const src = strToInt(obj);\n      obj = lexer.getObj();\n      // TODO are /dstName used?\n      expectString(obj);\n      const dst = obj;\n      cMap.mapOne(src, dst);\n    }\n  }\n\n  function parseBfRange(cMap, lexer) {\n    while (true) {\n      let obj = lexer.getObj();\n      if (obj === EOF) {\n        break;\n      }\n      if (isCmd(obj, \"endbfrange\")) {\n        return;\n      }\n      expectString(obj);\n      const low = strToInt(obj);\n      obj = lexer.getObj();\n      expectString(obj);\n      const high = strToInt(obj);\n      obj = lexer.getObj();\n      if (Number.isInteger(obj) || isString(obj)) {\n        const dstLow = Number.isInteger(obj) ? String.fromCharCode(obj) : obj;\n        cMap.mapBfRange(low, high, dstLow);\n      } else if (isCmd(obj, \"[\")) {\n        obj = lexer.getObj();\n        const array = [];\n        while (!isCmd(obj, \"]\") && obj !== EOF) {\n          array.push(obj);\n          obj = lexer.getObj();\n        }\n        cMap.mapBfRangeToArray(low, high, array);\n      } else {\n        break;\n      }\n    }\n    throw new FormatError(\"Invalid bf range.\");\n  }\n\n  function parseCidChar(cMap, lexer) {\n    while (true) {\n      let obj = lexer.getObj();\n      if (obj === EOF) {\n        break;\n      }\n      if (isCmd(obj, \"endcidchar\")) {\n        return;\n      }\n      expectString(obj);\n      const src = strToInt(obj);\n      obj = lexer.getObj();\n      expectInt(obj);\n      const dst = obj;\n      cMap.mapOne(src, dst);\n    }\n  }\n\n  function parseCidRange(cMap, lexer) {\n    while (true) {\n      let obj = lexer.getObj();\n      if (obj === EOF) {\n        break;\n      }\n      if (isCmd(obj, \"endcidrange\")) {\n        return;\n      }\n      expectString(obj);\n      const low = strToInt(obj);\n      obj = lexer.getObj();\n      expectString(obj);\n      const high = strToInt(obj);\n      obj = lexer.getObj();\n      expectInt(obj);\n      const dstLow = obj;\n      cMap.mapCidRange(low, high, dstLow);\n    }\n  }\n\n  function parseCodespaceRange(cMap, lexer) {\n    while (true) {\n      let obj = lexer.getObj();\n      if (obj === EOF) {\n        break;\n      }\n      if (isCmd(obj, \"endcodespacerange\")) {\n        return;\n      }\n      if (!isString(obj)) {\n        break;\n      }\n      const low = strToInt(obj);\n      obj = lexer.getObj();\n      if (!isString(obj)) {\n        break;\n      }\n      const high = strToInt(obj);\n      cMap.addCodespaceRange(obj.length, low, high);\n    }\n    throw new FormatError(\"Invalid codespace range.\");\n  }\n\n  function parseWMode(cMap, lexer) {\n    const obj = lexer.getObj();\n    if (Number.isInteger(obj)) {\n      cMap.vertical = !!obj;\n    }\n  }\n\n  function parseCMapName(cMap, lexer) {\n    const obj = lexer.getObj();\n    if (isName(obj) && isString(obj.name)) {\n      cMap.name = obj.name;\n    }\n  }\n\n  async function parseCMap(cMap, lexer, fetchBuiltInCMap, useCMap) {\n    let previous, embeddedUseCMap;\n    objLoop: while (true) {\n      try {\n        const obj = lexer.getObj();\n        if (obj === EOF) {\n          break;\n        } else if (isName(obj)) {\n          if (obj.name === \"WMode\") {\n            parseWMode(cMap, lexer);\n          } else if (obj.name === \"CMapName\") {\n            parseCMapName(cMap, lexer);\n          }\n          previous = obj;\n        } else if (isCmd(obj)) {\n          switch (obj.cmd) {\n            case \"endcmap\":\n              break objLoop;\n            case \"usecmap\":\n              if (isName(previous)) {\n                embeddedUseCMap = previous.name;\n              }\n              break;\n            case \"begincodespacerange\":\n              parseCodespaceRange(cMap, lexer);\n              break;\n            case \"beginbfchar\":\n              parseBfChar(cMap, lexer);\n              break;\n            case \"begincidchar\":\n              parseCidChar(cMap, lexer);\n              break;\n            case \"beginbfrange\":\n              parseBfRange(cMap, lexer);\n              break;\n            case \"begincidrange\":\n              parseCidRange(cMap, lexer);\n              break;\n          }\n        }\n      } catch (ex) {\n        if (ex instanceof MissingDataException) {\n          throw ex;\n        }\n        warn(\"Invalid cMap data: \" + ex);\n        continue;\n      }\n    }\n\n    if (!useCMap && embeddedUseCMap) {\n      // Load the useCMap definition from the file only if there wasn't one\n      // specified.\n      useCMap = embeddedUseCMap;\n    }\n    if (useCMap) {\n      return extendCMap(cMap, fetchBuiltInCMap, useCMap);\n    }\n    return cMap;\n  }\n\n  async function extendCMap(cMap, fetchBuiltInCMap, useCMap) {\n    cMap.useCMap = await createBuiltInCMap(useCMap, fetchBuiltInCMap);\n    // If there aren't any code space ranges defined clone all the parent ones\n    // into this cMap.\n    if (cMap.numCodespaceRanges === 0) {\n      const useCodespaceRanges = cMap.useCMap.codespaceRanges;\n      for (let i = 0; i < useCodespaceRanges.length; i++) {\n        cMap.codespaceRanges[i] = useCodespaceRanges[i].slice();\n      }\n      cMap.numCodespaceRanges = cMap.useCMap.numCodespaceRanges;\n    }\n    // Merge the map into the current one, making sure not to override\n    // any previously defined entries.\n    cMap.useCMap.forEach(function (key, value) {\n      if (!cMap.contains(key)) {\n        cMap.mapOne(key, cMap.useCMap.lookup(key));\n      }\n    });\n\n    return cMap;\n  }\n\n  async function createBuiltInCMap(name, fetchBuiltInCMap) {\n    if (name === \"Identity-H\") {\n      return new IdentityCMap(false, 2);\n    } else if (name === \"Identity-V\") {\n      return new IdentityCMap(true, 2);\n    }\n    if (!BUILT_IN_CMAPS.includes(name)) {\n      throw new Error(\"Unknown CMap name: \" + name);\n    }\n    if (!fetchBuiltInCMap) {\n      throw new Error(\"Built-in CMap parameters are not provided.\");\n    }\n\n    const { cMapData, compressionType } = await fetchBuiltInCMap(name);\n    const cMap = new CMap(true);\n\n    if (compressionType === CMapCompressionType.BINARY) {\n      return new BinaryCMapReader().process(cMapData, cMap, useCMap => {\n        return extendCMap(cMap, fetchBuiltInCMap, useCMap);\n      });\n    }\n    if (compressionType === CMapCompressionType.NONE) {\n      const lexer = new Lexer(new Stream(cMapData));\n      return parseCMap(cMap, lexer, fetchBuiltInCMap, null);\n    }\n    throw new Error(\n      \"TODO: Only BINARY/NONE CMap compression is currently supported.\"\n    );\n  }\n\n  return {\n    async create(params) {\n      const encoding = params.encoding;\n      const fetchBuiltInCMap = params.fetchBuiltInCMap;\n      const useCMap = params.useCMap;\n\n      if (isName(encoding)) {\n        return createBuiltInCMap(encoding.name, fetchBuiltInCMap);\n      } else if (isStream(encoding)) {\n        const parsedCMap = await parseCMap(\n          /* cMap = */ new CMap(),\n          /* lexer = */ new Lexer(encoding),\n          fetchBuiltInCMap,\n          useCMap\n        );\n\n        if (parsedCMap.isIdentityCMap) {\n          return createBuiltInCMap(parsedCMap.name, fetchBuiltInCMap);\n        }\n        return parsedCMap;\n      }\n      throw new Error(\"Encoding required.\");\n    },\n  };\n})();\n\nexport { CMap, CMapFactory, IdentityCMap };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n  assert,\n  bytesToString,\n  FormatError,\n  info,\n  isNum,\n  StreamType,\n  warn,\n} from \"../shared/util.js\";\nimport {\n  Cmd,\n  Dict,\n  EOF,\n  isCmd,\n  isDict,\n  isName,\n  Name,\n  Ref,\n} from \"./primitives.js\";\nimport {\n  isWhiteSpace,\n  MissingDataException,\n  ParserEOFException,\n} from \"./core_utils.js\";\nimport { Ascii85Stream } from \"./ascii_85_stream.js\";\nimport { AsciiHexStream } from \"./ascii_hex_stream.js\";\nimport { CCITTFaxStream } from \"./ccitt_stream.js\";\nimport { FlateStream } from \"./flate_stream.js\";\nimport { Jbig2Stream } from \"./jbig2_stream.js\";\nimport { JpegStream } from \"./jpeg_stream.js\";\nimport { JpxStream } from \"./jpx_stream.js\";\nimport { LZWStream } from \"./lzw_stream.js\";\nimport { NullStream } from \"./stream.js\";\nimport { PredictorStream } from \"./predictor_stream.js\";\nimport { RunLengthStream } from \"./run_length_stream.js\";\n\nconst MAX_LENGTH_TO_CACHE = 1000;\nconst MAX_ADLER32_LENGTH = 5552;\n\nfunction computeAdler32(bytes) {\n  const bytesLength = bytes.length;\n  if (\n    typeof PDFJSDev === \"undefined\" ||\n    PDFJSDev.test(\"!PRODUCTION || TESTING\")\n  ) {\n    assert(\n      bytesLength < MAX_ADLER32_LENGTH,\n      'computeAdler32: Unsupported \"bytes\" length.'\n    );\n  }\n  let a = 1,\n    b = 0;\n  for (let i = 0; i < bytesLength; ++i) {\n    // No modulo required in the loop if `bytesLength < 5552`.\n    a += bytes[i] & 0xff;\n    b += a;\n  }\n  return (b % 65521 << 16) | a % 65521;\n}\n\nclass Parser {\n  constructor({ lexer, xref, allowStreams = false, recoveryMode = false }) {\n    this.lexer = lexer;\n    this.xref = xref;\n    this.allowStreams = allowStreams;\n    this.recoveryMode = recoveryMode;\n\n    this.imageCache = Object.create(null);\n    this.refill();\n  }\n\n  refill() {\n    this.buf1 = this.lexer.getObj();\n    this.buf2 = this.lexer.getObj();\n  }\n\n  shift() {\n    if (this.buf2 instanceof Cmd && this.buf2.cmd === \"ID\") {\n      this.buf1 = this.buf2;\n      this.buf2 = null;\n    } else {\n      this.buf1 = this.buf2;\n      this.buf2 = this.lexer.getObj();\n    }\n  }\n\n  tryShift() {\n    try {\n      this.shift();\n      return true;\n    } catch (e) {\n      if (e instanceof MissingDataException) {\n        throw e;\n      }\n      // Upon failure, the caller should reset this.lexer.pos to a known good\n      // state and call this.shift() twice to reset the buffers.\n      return false;\n    }\n  }\n\n  getObj(cipherTransform = null) {\n    const buf1 = this.buf1;\n    this.shift();\n\n    if (buf1 instanceof Cmd) {\n      switch (buf1.cmd) {\n        case \"BI\": // inline image\n          return this.makeInlineImage(cipherTransform);\n        case \"[\": // array\n          const array = [];\n          while (!isCmd(this.buf1, \"]\") && this.buf1 !== EOF) {\n            array.push(this.getObj(cipherTransform));\n          }\n          if (this.buf1 === EOF) {\n            if (this.recoveryMode) {\n              return array;\n            }\n            throw new ParserEOFException(\"End of file inside array.\");\n          }\n          this.shift();\n          return array;\n        case \"<<\": // dictionary or stream\n          const dict = new Dict(this.xref);\n          while (!isCmd(this.buf1, \">>\") && this.buf1 !== EOF) {\n            if (!isName(this.buf1)) {\n              info(\"Malformed dictionary: key must be a name object\");\n              this.shift();\n              continue;\n            }\n\n            const key = this.buf1.name;\n            this.shift();\n            if (this.buf1 === EOF) {\n              break;\n            }\n            dict.set(key, this.getObj(cipherTransform));\n          }\n          if (this.buf1 === EOF) {\n            if (this.recoveryMode) {\n              return dict;\n            }\n            throw new ParserEOFException(\"End of file inside dictionary.\");\n          }\n\n          // Stream objects are not allowed inside content streams or\n          // object streams.\n          if (isCmd(this.buf2, \"stream\")) {\n            return this.allowStreams\n              ? this.makeStream(dict, cipherTransform)\n              : dict;\n          }\n          this.shift();\n          return dict;\n        default:\n          // simple object\n          return buf1;\n      }\n    }\n\n    if (Number.isInteger(buf1)) {\n      // indirect reference or integer\n      if (Number.isInteger(this.buf1) && isCmd(this.buf2, \"R\")) {\n        const ref = Ref.get(buf1, this.buf1);\n        this.shift();\n        this.shift();\n        return ref;\n      }\n      return buf1;\n    }\n\n    if (typeof buf1 === \"string\") {\n      if (cipherTransform) {\n        return cipherTransform.decryptString(buf1);\n      }\n      return buf1;\n    }\n\n    // simple object\n    return buf1;\n  }\n\n  /**\n   * Find the end of the stream by searching for the /EI\\s/.\n   * @returns {number} The inline stream length.\n   */\n  findDefaultInlineStreamEnd(stream) {\n    const E = 0x45,\n      I = 0x49,\n      SPACE = 0x20,\n      LF = 0xa,\n      CR = 0xd,\n      NUL = 0x0;\n    const lexer = this.lexer,\n      startPos = stream.pos,\n      n = 10;\n    let state = 0,\n      ch,\n      maybeEIPos;\n    while ((ch = stream.getByte()) !== -1) {\n      if (state === 0) {\n        state = ch === E ? 1 : 0;\n      } else if (state === 1) {\n        state = ch === I ? 2 : 0;\n      } else {\n        assert(state === 2, \"findDefaultInlineStreamEnd - invalid state.\");\n        if (ch === SPACE || ch === LF || ch === CR) {\n          maybeEIPos = stream.pos;\n          // Let's check that the next `n` bytes are ASCII... just to be sure.\n          const followingBytes = stream.peekBytes(n);\n          for (let i = 0, ii = followingBytes.length; i < ii; i++) {\n            ch = followingBytes[i];\n            if (ch === NUL && followingBytes[i + 1] !== NUL) {\n              // NUL bytes are not supposed to occur *outside* of inline\n              // images, but some PDF generators violate that assumption,\n              // thus breaking the EI detection heuristics used below.\n              //\n              // However, we can't unconditionally treat NUL bytes as \"ASCII\",\n              // since that *could* result in inline images being truncated.\n              //\n              // To attempt to address this, we'll still treat any *sequence*\n              // of NUL bytes as non-ASCII, but for a *single* NUL byte we'll\n              // continue checking the `followingBytes` (fixes issue8823.pdf).\n              continue;\n            }\n            if (ch !== LF && ch !== CR && (ch < SPACE || ch > 0x7f)) {\n              // Not a LF, CR, SPACE or any visible ASCII character, i.e.\n              // it's binary stuff. Resetting the state.\n              state = 0;\n              break;\n            }\n          }\n\n          if (state !== 2) {\n            continue;\n          }\n          // Check that the \"EI\" sequence isn't part of the image data, since\n          // that would cause the image to be truncated (fixes issue11124.pdf).\n          if (lexer.knownCommands) {\n            const nextObj = lexer.peekObj();\n            if (nextObj instanceof Cmd && !lexer.knownCommands[nextObj.cmd]) {\n              // Not a valid command, i.e. the inline image data *itself*\n              // contains an \"EI\" sequence. Resetting the state.\n              state = 0;\n            }\n          } else {\n            warn(\n              \"findDefaultInlineStreamEnd - `lexer.knownCommands` is undefined.\"\n            );\n          }\n\n          if (state === 2) {\n            break; // Finished!\n          }\n        } else {\n          state = 0;\n        }\n      }\n    }\n\n    if (ch === -1) {\n      warn(\n        \"findDefaultInlineStreamEnd: \" +\n          \"Reached the end of the stream without finding a valid EI marker\"\n      );\n      if (maybeEIPos) {\n        warn('... trying to recover by using the last \"EI\" occurrence.');\n        stream.skip(-(stream.pos - maybeEIPos)); // Reset the stream position.\n      }\n    }\n\n    let endOffset = 4;\n    stream.skip(-endOffset); // Set the stream position to just before \"EI\".\n    ch = stream.peekByte();\n    stream.skip(endOffset); // ... and remember to reset the stream position.\n\n    // Ensure that we don't accidentally truncate the inline image, when the\n    // data is immediately followed by the \"EI\" marker (fixes issue10388.pdf).\n    if (!isWhiteSpace(ch)) {\n      endOffset--;\n    }\n    return stream.pos - endOffset - startPos;\n  }\n\n  /**\n   * Find the EOI (end-of-image) marker 0xFFD9 of the stream.\n   * @returns {number} The inline stream length.\n   */\n  findDCTDecodeInlineStreamEnd(stream) {\n    const startPos = stream.pos;\n    let foundEOI = false,\n      b,\n      markerLength;\n    while ((b = stream.getByte()) !== -1) {\n      if (b !== 0xff) {\n        // Not a valid marker.\n        continue;\n      }\n      switch (stream.getByte()) {\n        case 0x00: // Byte stuffing.\n          // 0xFF00 appears to be a very common byte sequence in JPEG images.\n          break;\n\n        case 0xff: // Fill byte.\n          // Avoid skipping a valid marker, resetting the stream position.\n          stream.skip(-1);\n          break;\n\n        case 0xd9: // EOI\n          foundEOI = true;\n          break;\n\n        case 0xc0: // SOF0\n        case 0xc1: // SOF1\n        case 0xc2: // SOF2\n        case 0xc3: // SOF3\n        /* falls through */\n        case 0xc5: // SOF5\n        case 0xc6: // SOF6\n        case 0xc7: // SOF7\n        /* falls through */\n        case 0xc9: // SOF9\n        case 0xca: // SOF10\n        case 0xcb: // SOF11\n        /* falls through */\n        case 0xcd: // SOF13\n        case 0xce: // SOF14\n        case 0xcf: // SOF15\n        /* falls through */\n        case 0xc4: // DHT\n        case 0xcc: // DAC\n        /* falls through */\n        case 0xda: // SOS\n        case 0xdb: // DQT\n        case 0xdc: // DNL\n        case 0xdd: // DRI\n        case 0xde: // DHP\n        case 0xdf: // EXP\n        /* falls through */\n        case 0xe0: // APP0\n        case 0xe1: // APP1\n        case 0xe2: // APP2\n        case 0xe3: // APP3\n        case 0xe4: // APP4\n        case 0xe5: // APP5\n        case 0xe6: // APP6\n        case 0xe7: // APP7\n        case 0xe8: // APP8\n        case 0xe9: // APP9\n        case 0xea: // APP10\n        case 0xeb: // APP11\n        case 0xec: // APP12\n        case 0xed: // APP13\n        case 0xee: // APP14\n        case 0xef: // APP15\n        /* falls through */\n        case 0xfe: // COM\n          // The marker should be followed by the length of the segment.\n          markerLength = stream.getUint16();\n          if (markerLength > 2) {\n            // |markerLength| contains the byte length of the marker segment,\n            // including its own length (2 bytes) and excluding the marker.\n            stream.skip(markerLength - 2); // Jump to the next marker.\n          } else {\n            // The marker length is invalid, resetting the stream position.\n            stream.skip(-2);\n          }\n          break;\n      }\n      if (foundEOI) {\n        break;\n      }\n    }\n    const length = stream.pos - startPos;\n    if (b === -1) {\n      warn(\n        \"Inline DCTDecode image stream: \" +\n          \"EOI marker not found, searching for /EI/ instead.\"\n      );\n      stream.skip(-length); // Reset the stream position.\n      return this.findDefaultInlineStreamEnd(stream);\n    }\n    this.inlineStreamSkipEI(stream);\n    return length;\n  }\n\n  /**\n   * Find the EOD (end-of-data) marker '~>' (i.e. TILDE + GT) of the stream.\n   * @returns {number} The inline stream length.\n   */\n  findASCII85DecodeInlineStreamEnd(stream) {\n    const TILDE = 0x7e,\n      GT = 0x3e;\n    const startPos = stream.pos;\n    let ch;\n    while ((ch = stream.getByte()) !== -1) {\n      if (ch === TILDE) {\n        const tildePos = stream.pos;\n\n        ch = stream.peekByte();\n        // Handle corrupt PDF documents which contains whitespace \"inside\" of\n        // the EOD marker (fixes issue10614.pdf).\n        while (isWhiteSpace(ch)) {\n          stream.skip();\n          ch = stream.peekByte();\n        }\n        if (ch === GT) {\n          stream.skip();\n          break;\n        }\n        // Handle corrupt PDF documents which contains truncated EOD markers,\n        // where the '>' character is missing (fixes issue11385.pdf).\n        if (stream.pos > tildePos) {\n          const maybeEI = stream.peekBytes(2);\n          if (maybeEI[0] === /* E = */ 0x45 && maybeEI[1] === /* I = */ 0x49) {\n            break;\n          }\n        }\n      }\n    }\n    const length = stream.pos - startPos;\n    if (ch === -1) {\n      warn(\n        \"Inline ASCII85Decode image stream: \" +\n          \"EOD marker not found, searching for /EI/ instead.\"\n      );\n      stream.skip(-length); // Reset the stream position.\n      return this.findDefaultInlineStreamEnd(stream);\n    }\n    this.inlineStreamSkipEI(stream);\n    return length;\n  }\n\n  /**\n   * Find the EOD (end-of-data) marker '>' (i.e. GT) of the stream.\n   * @returns {number} The inline stream length.\n   */\n  findASCIIHexDecodeInlineStreamEnd(stream) {\n    const GT = 0x3e;\n    const startPos = stream.pos;\n    let ch;\n    while ((ch = stream.getByte()) !== -1) {\n      if (ch === GT) {\n        break;\n      }\n    }\n    const length = stream.pos - startPos;\n    if (ch === -1) {\n      warn(\n        \"Inline ASCIIHexDecode image stream: \" +\n          \"EOD marker not found, searching for /EI/ instead.\"\n      );\n      stream.skip(-length); // Reset the stream position.\n      return this.findDefaultInlineStreamEnd(stream);\n    }\n    this.inlineStreamSkipEI(stream);\n    return length;\n  }\n\n  /**\n   * Skip over the /EI/ for streams where we search for an EOD marker.\n   */\n  inlineStreamSkipEI(stream) {\n    const E = 0x45,\n      I = 0x49;\n    let state = 0,\n      ch;\n    while ((ch = stream.getByte()) !== -1) {\n      if (state === 0) {\n        state = ch === E ? 1 : 0;\n      } else if (state === 1) {\n        state = ch === I ? 2 : 0;\n      } else if (state === 2) {\n        break;\n      }\n    }\n  }\n\n  makeInlineImage(cipherTransform) {\n    const lexer = this.lexer;\n    const stream = lexer.stream;\n\n    // Parse dictionary.\n    const dict = new Dict(this.xref);\n    let dictLength;\n    while (!isCmd(this.buf1, \"ID\") && this.buf1 !== EOF) {\n      if (!isName(this.buf1)) {\n        throw new FormatError(\"Dictionary key must be a name object\");\n      }\n      const key = this.buf1.name;\n      this.shift();\n      if (this.buf1 === EOF) {\n        break;\n      }\n      dict.set(key, this.getObj(cipherTransform));\n    }\n    if (lexer.beginInlineImagePos !== -1) {\n      dictLength = stream.pos - lexer.beginInlineImagePos;\n    }\n\n    // Extract the name of the first (i.e. the current) image filter.\n    const filter = dict.get(\"F\", \"Filter\");\n    let filterName;\n    if (isName(filter)) {\n      filterName = filter.name;\n    } else if (Array.isArray(filter)) {\n      const filterZero = this.xref.fetchIfRef(filter[0]);\n      if (isName(filterZero)) {\n        filterName = filterZero.name;\n      }\n    }\n\n    // Parse image stream.\n    const startPos = stream.pos;\n    let length;\n    switch (filterName) {\n      case \"DCT\":\n      case \"DCTDecode\":\n        length = this.findDCTDecodeInlineStreamEnd(stream);\n        break;\n      case \"A85\":\n      case \"ASCII85Decode\":\n        length = this.findASCII85DecodeInlineStreamEnd(stream);\n        break;\n      case \"AHx\":\n      case \"ASCIIHexDecode\":\n        length = this.findASCIIHexDecodeInlineStreamEnd(stream);\n        break;\n      default:\n        length = this.findDefaultInlineStreamEnd(stream);\n    }\n    let imageStream = stream.makeSubStream(startPos, length, dict);\n\n    // Cache all images below the MAX_LENGTH_TO_CACHE threshold by their\n    // adler32 checksum.\n    let cacheKey;\n    if (length < MAX_LENGTH_TO_CACHE && dictLength < MAX_ADLER32_LENGTH) {\n      const imageBytes = imageStream.getBytes();\n      imageStream.reset();\n\n      const initialStreamPos = stream.pos;\n      // Set the stream position to the beginning of the dictionary data...\n      stream.pos = lexer.beginInlineImagePos;\n      // ... and fetch the bytes of the *entire* dictionary.\n      const dictBytes = stream.getBytes(dictLength);\n      // Finally, don't forget to reset the stream position.\n      stream.pos = initialStreamPos;\n\n      cacheKey = computeAdler32(imageBytes) + \"_\" + computeAdler32(dictBytes);\n\n      const cacheEntry = this.imageCache[cacheKey];\n      if (cacheEntry !== undefined) {\n        this.buf2 = Cmd.get(\"EI\");\n        this.shift();\n\n        cacheEntry.reset();\n        return cacheEntry;\n      }\n    }\n\n    if (cipherTransform) {\n      imageStream = cipherTransform.createStream(imageStream, length);\n    }\n\n    imageStream = this.filter(imageStream, dict, length);\n    imageStream.dict = dict;\n    if (cacheKey !== undefined) {\n      imageStream.cacheKey = `inline_${length}_${cacheKey}`;\n      this.imageCache[cacheKey] = imageStream;\n    }\n\n    this.buf2 = Cmd.get(\"EI\");\n    this.shift();\n\n    return imageStream;\n  }\n\n  _findStreamLength(startPos, signature) {\n    const { stream } = this.lexer;\n    stream.pos = startPos;\n\n    const SCAN_BLOCK_LENGTH = 2048;\n    const signatureLength = signature.length;\n\n    while (stream.pos < stream.end) {\n      const scanBytes = stream.peekBytes(SCAN_BLOCK_LENGTH);\n      const scanLength = scanBytes.length - signatureLength;\n\n      if (scanLength <= 0) {\n        break;\n      }\n      let pos = 0;\n      while (pos < scanLength) {\n        let j = 0;\n        while (j < signatureLength && scanBytes[pos + j] === signature[j]) {\n          j++;\n        }\n        if (j >= signatureLength) {\n          // `signature` found.\n          stream.pos += pos;\n          return stream.pos - startPos;\n        }\n        pos++;\n      }\n      stream.pos += scanLength;\n    }\n    return -1;\n  }\n\n  makeStream(dict, cipherTransform) {\n    const lexer = this.lexer;\n    let stream = lexer.stream;\n\n    // Get the stream's start position.\n    lexer.skipToNextLine();\n    const startPos = stream.pos - 1;\n\n    // Get the length.\n    let length = dict.get(\"Length\");\n    if (!Number.isInteger(length)) {\n      info(`Bad length \"${length && length.toString()}\" in stream.`);\n      length = 0;\n    }\n\n    // Skip over the stream data.\n    stream.pos = startPos + length;\n    lexer.nextChar();\n\n    // Shift '>>' and check whether the new object marks the end of the stream.\n    if (this.tryShift() && isCmd(this.buf2, \"endstream\")) {\n      this.shift(); // 'stream'\n    } else {\n      // Bad stream length, scanning for endstream command.\n      const ENDSTREAM_SIGNATURE = new Uint8Array([\n        0x65, 0x6e, 0x64, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d,\n      ]);\n      let actualLength = this._findStreamLength(startPos, ENDSTREAM_SIGNATURE);\n      if (actualLength < 0) {\n        // Only allow limited truncation of the endstream signature,\n        // to prevent false positives.\n        const MAX_TRUNCATION = 1;\n        // Check if the PDF generator included truncated endstream commands,\n        // such as e.g. \"endstrea\" (fixes issue10004.pdf).\n        for (let i = 1; i <= MAX_TRUNCATION; i++) {\n          const end = ENDSTREAM_SIGNATURE.length - i;\n          const TRUNCATED_SIGNATURE = ENDSTREAM_SIGNATURE.slice(0, end);\n\n          const maybeLength = this._findStreamLength(\n            startPos,\n            TRUNCATED_SIGNATURE\n          );\n          if (maybeLength >= 0) {\n            // Ensure that the byte immediately following the truncated\n            // endstream command is a space, to prevent false positives.\n            const lastByte = stream.peekBytes(end + 1)[end];\n            if (!isWhiteSpace(lastByte)) {\n              break;\n            }\n            info(\n              `Found \"${bytesToString(TRUNCATED_SIGNATURE)}\" when ` +\n                \"searching for endstream command.\"\n            );\n            actualLength = maybeLength;\n            break;\n          }\n        }\n\n        if (actualLength < 0) {\n          throw new FormatError(\"Missing endstream command.\");\n        }\n      }\n      length = actualLength;\n\n      lexer.nextChar();\n      this.shift();\n      this.shift();\n    }\n    this.shift(); // 'endstream'\n\n    stream = stream.makeSubStream(startPos, length, dict);\n    if (cipherTransform) {\n      stream = cipherTransform.createStream(stream, length);\n    }\n    stream = this.filter(stream, dict, length);\n    stream.dict = dict;\n    return stream;\n  }\n\n  filter(stream, dict, length) {\n    let filter = dict.get(\"F\", \"Filter\");\n    let params = dict.get(\"DP\", \"DecodeParms\");\n\n    if (isName(filter)) {\n      if (Array.isArray(params)) {\n        warn(\"/DecodeParms should not be an Array, when /Filter is a Name.\");\n      }\n      return this.makeFilter(stream, filter.name, length, params);\n    }\n\n    let maybeLength = length;\n    if (Array.isArray(filter)) {\n      const filterArray = filter;\n      const paramsArray = params;\n      for (let i = 0, ii = filterArray.length; i < ii; ++i) {\n        filter = this.xref.fetchIfRef(filterArray[i]);\n        if (!isName(filter)) {\n          throw new FormatError(`Bad filter name \"${filter}\"`);\n        }\n\n        params = null;\n        if (Array.isArray(paramsArray) && i in paramsArray) {\n          params = this.xref.fetchIfRef(paramsArray[i]);\n        }\n        stream = this.makeFilter(stream, filter.name, maybeLength, params);\n        // After the first stream the `length` variable is invalid.\n        maybeLength = null;\n      }\n    }\n    return stream;\n  }\n\n  makeFilter(stream, name, maybeLength, params) {\n    // Since the 'Length' entry in the stream dictionary can be completely\n    // wrong, e.g. zero for non-empty streams, only skip parsing the stream\n    // when we can be absolutely certain that it actually is empty.\n    if (maybeLength === 0) {\n      warn(`Empty \"${name}\" stream.`);\n      return new NullStream();\n    }\n    const xrefStats = this.xref.stats;\n\n    try {\n      switch (name) {\n        case \"Fl\":\n        case \"FlateDecode\":\n          xrefStats.addStreamType(StreamType.FLATE);\n          if (params) {\n            return new PredictorStream(\n              new FlateStream(stream, maybeLength),\n              maybeLength,\n              params\n            );\n          }\n          return new FlateStream(stream, maybeLength);\n        case \"LZW\":\n        case \"LZWDecode\":\n          xrefStats.addStreamType(StreamType.LZW);\n          let earlyChange = 1;\n          if (params) {\n            if (params.has(\"EarlyChange\")) {\n              earlyChange = params.get(\"EarlyChange\");\n            }\n            return new PredictorStream(\n              new LZWStream(stream, maybeLength, earlyChange),\n              maybeLength,\n              params\n            );\n          }\n          return new LZWStream(stream, maybeLength, earlyChange);\n        case \"DCT\":\n        case \"DCTDecode\":\n          xrefStats.addStreamType(StreamType.DCT);\n          return new JpegStream(stream, maybeLength, params);\n        case \"JPX\":\n        case \"JPXDecode\":\n          xrefStats.addStreamType(StreamType.JPX);\n          return new JpxStream(stream, maybeLength, params);\n        case \"A85\":\n        case \"ASCII85Decode\":\n          xrefStats.addStreamType(StreamType.A85);\n          return new Ascii85Stream(stream, maybeLength);\n        case \"AHx\":\n        case \"ASCIIHexDecode\":\n          xrefStats.addStreamType(StreamType.AHX);\n          return new AsciiHexStream(stream, maybeLength);\n        case \"CCF\":\n        case \"CCITTFaxDecode\":\n          xrefStats.addStreamType(StreamType.CCF);\n          return new CCITTFaxStream(stream, maybeLength, params);\n        case \"RL\":\n        case \"RunLengthDecode\":\n          xrefStats.addStreamType(StreamType.RLX);\n          return new RunLengthStream(stream, maybeLength);\n        case \"JBIG2Decode\":\n          xrefStats.addStreamType(StreamType.JBIG);\n          return new Jbig2Stream(stream, maybeLength, params);\n      }\n      warn(`Filter \"${name}\" is not supported.`);\n      return stream;\n    } catch (ex) {\n      if (ex instanceof MissingDataException) {\n        throw ex;\n      }\n      warn(`Invalid stream: \"${ex}\"`);\n      return new NullStream();\n    }\n  }\n}\n\n// A '1' in this array means the character is white space. A '1' or\n// '2' means the character ends a name or command.\n// prettier-ignore\nconst specialChars = [\n  1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, // 0x\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 1x\n  1, 0, 0, 0, 0, 2, 0, 0, 2, 2, 0, 0, 0, 0, 0, 2, // 2x\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, // 3x\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 4x\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 0, // 5x\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 6x\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 0, // 7x\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 8x\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 9x\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // ax\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // bx\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // cx\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // dx\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // ex\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0  // fx\n];\n\nfunction toHexDigit(ch) {\n  if (ch >= /* '0' = */ 0x30 && ch /* '9' = */ <= 0x39) {\n    return ch & 0x0f;\n  }\n  if (\n    (ch >= /* 'A' = */ 0x41 && ch <= /* 'F' = */ 0x46) ||\n    (ch >= /* 'a' = */ 0x61 && ch <= /* 'f' = */ 0x66)\n  ) {\n    return (ch & 0x0f) + 9;\n  }\n  return -1;\n}\n\nclass Lexer {\n  constructor(stream, knownCommands = null) {\n    this.stream = stream;\n    this.nextChar();\n\n    // While lexing, we build up many strings one char at a time. Using += for\n    // this can result in lots of garbage strings. It's better to build an\n    // array of single-char strings and then join() them together at the end.\n    // And reusing a single array (i.e. |this.strBuf|) over and over for this\n    // purpose uses less memory than using a new array for each string.\n    this.strBuf = [];\n\n    // The PDFs might have \"glued\" commands with other commands, operands or\n    // literals, e.g. \"q1\". The knownCommands is a dictionary of the valid\n    // commands and their prefixes. The prefixes are built the following way:\n    // if there a command that is a prefix of the other valid command or\n    // literal (e.g. 'f' and 'false') the following prefixes must be included,\n    // 'fa', 'fal', 'fals'. The prefixes are not needed, if the command has no\n    // other commands or literals as a prefix. The knowCommands is optional.\n    this.knownCommands = knownCommands;\n\n    this._hexStringNumWarn = 0;\n    this.beginInlineImagePos = -1;\n  }\n\n  nextChar() {\n    return (this.currentChar = this.stream.getByte());\n  }\n\n  peekChar() {\n    return this.stream.peekByte();\n  }\n\n  getNumber() {\n    let ch = this.currentChar;\n    let eNotation = false;\n    let divideBy = 0; // Different from 0 if it's a floating point value.\n    let sign = 0;\n\n    if (ch === /* '-' = */ 0x2d) {\n      sign = -1;\n      ch = this.nextChar();\n\n      if (ch === /* '-' = */ 0x2d) {\n        // Ignore double negative (this is consistent with Adobe Reader).\n        ch = this.nextChar();\n      }\n    } else if (ch === /* '+' = */ 0x2b) {\n      sign = 1;\n      ch = this.nextChar();\n    }\n    if (ch === /* LF = */ 0x0a || ch === /* CR = */ 0x0d) {\n      // Ignore line-breaks (this is consistent with Adobe Reader).\n      do {\n        ch = this.nextChar();\n      } while (ch === 0x0a || ch === 0x0d);\n    }\n    if (ch === /* '.' = */ 0x2e) {\n      divideBy = 10;\n      ch = this.nextChar();\n    }\n    if (ch < /* '0' = */ 0x30 || ch > /* '9' = */ 0x39) {\n      if (\n        divideBy === 10 &&\n        sign === 0 &&\n        (isWhiteSpace(ch) || ch === /* EOF = */ -1)\n      ) {\n        // This is consistent with Adobe Reader (fixes issue9252.pdf).\n        warn(\"Lexer.getNumber - treating a single decimal point as zero.\");\n        return 0;\n      }\n      throw new FormatError(\n        `Invalid number: ${String.fromCharCode(ch)} (charCode ${ch})`\n      );\n    }\n\n    sign = sign || 1;\n    let baseValue = ch - 0x30; // '0'\n    let powerValue = 0;\n    let powerValueSign = 1;\n\n    while ((ch = this.nextChar()) >= 0) {\n      if (ch >= /* '0' = */ 0x30 && ch <= /* '9' = */ 0x39) {\n        const currentDigit = ch - 0x30; // '0'\n        if (eNotation) {\n          // We are after an 'e' or 'E'.\n          powerValue = powerValue * 10 + currentDigit;\n        } else {\n          if (divideBy !== 0) {\n            // We are after a point.\n            divideBy *= 10;\n          }\n          baseValue = baseValue * 10 + currentDigit;\n        }\n      } else if (ch === /* '.' = */ 0x2e) {\n        if (divideBy === 0) {\n          divideBy = 1;\n        } else {\n          // A number can have only one dot.\n          break;\n        }\n      } else if (ch === /* '-' = */ 0x2d) {\n        // Ignore minus signs in the middle of numbers to match\n        // Adobe's behavior.\n        warn(\"Badly formatted number: minus sign in the middle\");\n      } else if (ch === /* 'E' = */ 0x45 || ch === /* 'e' = */ 0x65) {\n        // 'E' can be either a scientific notation or the beginning of a new\n        // operator.\n        ch = this.peekChar();\n        if (ch === /* '+' = */ 0x2b || ch === /* '-' = */ 0x2d) {\n          powerValueSign = ch === 0x2d ? -1 : 1;\n          this.nextChar(); // Consume the sign character.\n        } else if (ch < /* '0' = */ 0x30 || ch > /* '9' = */ 0x39) {\n          // The 'E' must be the beginning of a new operator.\n          break;\n        }\n        eNotation = true;\n      } else {\n        // The last character doesn't belong to us.\n        break;\n      }\n    }\n\n    if (divideBy !== 0) {\n      baseValue /= divideBy;\n    }\n    if (eNotation) {\n      baseValue *= 10 ** (powerValueSign * powerValue);\n    }\n    return sign * baseValue;\n  }\n\n  getString() {\n    let numParen = 1;\n    let done = false;\n    const strBuf = this.strBuf;\n    strBuf.length = 0;\n\n    let ch = this.nextChar();\n    while (true) {\n      let charBuffered = false;\n      switch (ch | 0) {\n        case -1:\n          warn(\"Unterminated string\");\n          done = true;\n          break;\n        case 0x28: // '('\n          ++numParen;\n          strBuf.push(\"(\");\n          break;\n        case 0x29: // ')'\n          if (--numParen === 0) {\n            this.nextChar(); // consume strings ')'\n            done = true;\n          } else {\n            strBuf.push(\")\");\n          }\n          break;\n        case 0x5c: // '\\\\'\n          ch = this.nextChar();\n          switch (ch) {\n            case -1:\n              warn(\"Unterminated string\");\n              done = true;\n              break;\n            case 0x6e: // 'n'\n              strBuf.push(\"\\n\");\n              break;\n            case 0x72: // 'r'\n              strBuf.push(\"\\r\");\n              break;\n            case 0x74: // 't'\n              strBuf.push(\"\\t\");\n              break;\n            case 0x62: // 'b'\n              strBuf.push(\"\\b\");\n              break;\n            case 0x66: // 'f'\n              strBuf.push(\"\\f\");\n              break;\n            case 0x5c: // '\\'\n            case 0x28: // '('\n            case 0x29: // ')'\n              strBuf.push(String.fromCharCode(ch));\n              break;\n            case 0x30: // '0'\n            case 0x31: // '1'\n            case 0x32: // '2'\n            case 0x33: // '3'\n            case 0x34: // '4'\n            case 0x35: // '5'\n            case 0x36: // '6'\n            case 0x37: // '7'\n              let x = ch & 0x0f;\n              ch = this.nextChar();\n              charBuffered = true;\n              if (ch >= /* '0' = */ 0x30 && ch <= /* '7' = */ 0x37) {\n                x = (x << 3) + (ch & 0x0f);\n                ch = this.nextChar();\n                if (ch >= /* '0' = */ 0x30 && ch /* '7' = */ <= 0x37) {\n                  charBuffered = false;\n                  x = (x << 3) + (ch & 0x0f);\n                }\n              }\n              strBuf.push(String.fromCharCode(x));\n              break;\n            case 0x0d: // CR\n              if (this.peekChar() === /* LF = */ 0x0a) {\n                this.nextChar();\n              }\n              break;\n            case 0x0a: // LF\n              break;\n            default:\n              strBuf.push(String.fromCharCode(ch));\n              break;\n          }\n          break;\n        default:\n          strBuf.push(String.fromCharCode(ch));\n          break;\n      }\n      if (done) {\n        break;\n      }\n      if (!charBuffered) {\n        ch = this.nextChar();\n      }\n    }\n    return strBuf.join(\"\");\n  }\n\n  getName() {\n    let ch, previousCh;\n    const strBuf = this.strBuf;\n    strBuf.length = 0;\n\n    while ((ch = this.nextChar()) >= 0 && !specialChars[ch]) {\n      if (ch === /* '#' = */ 0x23) {\n        ch = this.nextChar();\n        if (specialChars[ch]) {\n          warn(\n            \"Lexer_getName: \" +\n              \"NUMBER SIGN (#) should be followed by a hexadecimal number.\"\n          );\n          strBuf.push(\"#\");\n          break;\n        }\n        const x = toHexDigit(ch);\n        if (x !== -1) {\n          previousCh = ch;\n          ch = this.nextChar();\n          const x2 = toHexDigit(ch);\n          if (x2 === -1) {\n            warn(\n              `Lexer_getName: Illegal digit (${String.fromCharCode(ch)}) ` +\n                \"in hexadecimal number.\"\n            );\n            strBuf.push(\"#\", String.fromCharCode(previousCh));\n            if (specialChars[ch]) {\n              break;\n            }\n            strBuf.push(String.fromCharCode(ch));\n            continue;\n          }\n          strBuf.push(String.fromCharCode((x << 4) | x2));\n        } else {\n          strBuf.push(\"#\", String.fromCharCode(ch));\n        }\n      } else {\n        strBuf.push(String.fromCharCode(ch));\n      }\n    }\n    if (strBuf.length > 127) {\n      warn(`Name token is longer than allowed by the spec: ${strBuf.length}`);\n    }\n    return Name.get(strBuf.join(\"\"));\n  }\n\n  /**\n   * @private\n   */\n  _hexStringWarn(ch) {\n    const MAX_HEX_STRING_NUM_WARN = 5;\n\n    if (this._hexStringNumWarn++ === MAX_HEX_STRING_NUM_WARN) {\n      warn(\"getHexString - ignoring additional invalid characters.\");\n      return;\n    }\n    if (this._hexStringNumWarn > MAX_HEX_STRING_NUM_WARN) {\n      // Limit the number of warning messages printed for a `this.getHexString`\n      // invocation, since corrupt PDF documents may otherwise spam the console\n      // enough to affect general performance negatively.\n      return;\n    }\n    warn(`getHexString - ignoring invalid character: ${ch}`);\n  }\n\n  getHexString() {\n    const strBuf = this.strBuf;\n    strBuf.length = 0;\n    let ch = this.currentChar;\n    let isFirstHex = true;\n    let firstDigit, secondDigit;\n    this._hexStringNumWarn = 0;\n\n    while (true) {\n      if (ch < 0) {\n        warn(\"Unterminated hex string\");\n        break;\n      } else if (ch === /* '>' = */ 0x3e) {\n        this.nextChar();\n        break;\n      } else if (specialChars[ch] === 1) {\n        ch = this.nextChar();\n        continue;\n      } else {\n        if (isFirstHex) {\n          firstDigit = toHexDigit(ch);\n          if (firstDigit === -1) {\n            this._hexStringWarn(ch);\n            ch = this.nextChar();\n            continue;\n          }\n        } else {\n          secondDigit = toHexDigit(ch);\n          if (secondDigit === -1) {\n            this._hexStringWarn(ch);\n            ch = this.nextChar();\n            continue;\n          }\n          strBuf.push(String.fromCharCode((firstDigit << 4) | secondDigit));\n        }\n        isFirstHex = !isFirstHex;\n        ch = this.nextChar();\n      }\n    }\n    return strBuf.join(\"\");\n  }\n\n  getObj() {\n    // Skip whitespace and comments.\n    let comment = false;\n    let ch = this.currentChar;\n    while (true) {\n      if (ch < 0) {\n        return EOF;\n      }\n      if (comment) {\n        if (ch === /* LF = */ 0x0a || ch === /* CR = */ 0x0d) {\n          comment = false;\n        }\n      } else if (ch === /* '%' = */ 0x25) {\n        comment = true;\n      } else if (specialChars[ch] !== 1) {\n        break;\n      }\n      ch = this.nextChar();\n    }\n\n    // Start reading a token.\n    switch (ch | 0) {\n      case 0x30: // '0'\n      case 0x31: // '1'\n      case 0x32: // '2'\n      case 0x33: // '3'\n      case 0x34: // '4'\n      case 0x35: // '5'\n      case 0x36: // '6'\n      case 0x37: // '7'\n      case 0x38: // '8'\n      case 0x39: // '9'\n      case 0x2b: // '+'\n      case 0x2d: // '-'\n      case 0x2e: // '.'\n        return this.getNumber();\n      case 0x28: // '('\n        return this.getString();\n      case 0x2f: // '/'\n        return this.getName();\n      // array punctuation\n      case 0x5b: // '['\n        this.nextChar();\n        return Cmd.get(\"[\");\n      case 0x5d: // ']'\n        this.nextChar();\n        return Cmd.get(\"]\");\n      // hex string or dict punctuation\n      case 0x3c: // '<'\n        ch = this.nextChar();\n        if (ch === 0x3c) {\n          // dict punctuation\n          this.nextChar();\n          return Cmd.get(\"<<\");\n        }\n        return this.getHexString();\n      // dict punctuation\n      case 0x3e: // '>'\n        ch = this.nextChar();\n        if (ch === 0x3e) {\n          this.nextChar();\n          return Cmd.get(\">>\");\n        }\n        return Cmd.get(\">\");\n      case 0x7b: // '{'\n        this.nextChar();\n        return Cmd.get(\"{\");\n      case 0x7d: // '}'\n        this.nextChar();\n        return Cmd.get(\"}\");\n      case 0x29: // ')'\n        // Consume the current character in order to avoid permanently hanging\n        // the worker thread if `Lexer.getObj` is called from within a loop\n        // containing try-catch statements, since we would otherwise attempt\n        // to parse the *same* character over and over (fixes issue8061.pdf).\n        this.nextChar();\n        throw new FormatError(`Illegal character: ${ch}`);\n    }\n\n    // Start reading a command.\n    let str = String.fromCharCode(ch);\n    // A valid command cannot start with a non-visible ASCII character,\n    // and the next character may be (the start of) a valid command.\n    if (ch < 0x20 || ch > 0x7f) {\n      const nextCh = this.peekChar();\n      if (nextCh >= 0x20 && nextCh <= 0x7f) {\n        this.nextChar();\n        return Cmd.get(str);\n      }\n    }\n    const knownCommands = this.knownCommands;\n    let knownCommandFound = knownCommands && knownCommands[str] !== undefined;\n    while ((ch = this.nextChar()) >= 0 && !specialChars[ch]) {\n      // Stop if a known command is found and next character does not make\n      // the string a command.\n      const possibleCommand = str + String.fromCharCode(ch);\n      if (knownCommandFound && knownCommands[possibleCommand] === undefined) {\n        break;\n      }\n      if (str.length === 128) {\n        throw new FormatError(`Command token too long: ${str.length}`);\n      }\n      str = possibleCommand;\n      knownCommandFound = knownCommands && knownCommands[str] !== undefined;\n    }\n    if (str === \"true\") {\n      return true;\n    }\n    if (str === \"false\") {\n      return false;\n    }\n    if (str === \"null\") {\n      return null;\n    }\n\n    if (str === \"BI\") {\n      // Keep track of the current stream position, since it's needed in order\n      // to correctly cache inline images; see `Parser.makeInlineImage`.\n      this.beginInlineImagePos = this.stream.pos;\n    }\n\n    return Cmd.get(str);\n  }\n\n  peekObj() {\n    const streamPos = this.stream.pos,\n      currentChar = this.currentChar,\n      beginInlineImagePos = this.beginInlineImagePos;\n\n    let nextObj;\n    try {\n      nextObj = this.getObj();\n    } catch (ex) {\n      if (ex instanceof MissingDataException) {\n        throw ex;\n      }\n      warn(`peekObj: ${ex}`);\n    }\n    // Ensure that we reset *all* relevant `Lexer`-instance state.\n    this.stream.pos = streamPos;\n    this.currentChar = currentChar;\n    this.beginInlineImagePos = beginInlineImagePos;\n\n    return nextObj;\n  }\n\n  skipToNextLine() {\n    let ch = this.currentChar;\n    while (ch >= 0) {\n      if (ch === /* CR = */ 0x0d) {\n        ch = this.nextChar();\n        if (ch === /* LF = */ 0x0a) {\n          this.nextChar();\n        }\n        break;\n      } else if (ch === /* LF = */ 0x0a) {\n        this.nextChar();\n        break;\n      }\n      ch = this.nextChar();\n    }\n  }\n}\n\nclass Linearization {\n  static create(stream) {\n    function getInt(linDict, name, allowZeroValue = false) {\n      const obj = linDict.get(name);\n      if (Number.isInteger(obj) && (allowZeroValue ? obj >= 0 : obj > 0)) {\n        return obj;\n      }\n      throw new Error(\n        `The \"${name}\" parameter in the linearization ` +\n          \"dictionary is invalid.\"\n      );\n    }\n\n    function getHints(linDict) {\n      const hints = linDict.get(\"H\");\n      let hintsLength;\n\n      if (\n        Array.isArray(hints) &&\n        ((hintsLength = hints.length) === 2 || hintsLength === 4)\n      ) {\n        for (let index = 0; index < hintsLength; index++) {\n          const hint = hints[index];\n          if (!(Number.isInteger(hint) && hint > 0)) {\n            throw new Error(\n              `Hint (${index}) in the linearization dictionary is invalid.`\n            );\n          }\n        }\n        return hints;\n      }\n      throw new Error(\"Hint array in the linearization dictionary is invalid.\");\n    }\n\n    const parser = new Parser({\n      lexer: new Lexer(stream),\n      xref: null,\n    });\n    const obj1 = parser.getObj();\n    const obj2 = parser.getObj();\n    const obj3 = parser.getObj();\n    const linDict = parser.getObj();\n    let obj, length;\n    if (\n      !(\n        Number.isInteger(obj1) &&\n        Number.isInteger(obj2) &&\n        isCmd(obj3, \"obj\") &&\n        isDict(linDict) &&\n        isNum((obj = linDict.get(\"Linearized\"))) &&\n        obj > 0\n      )\n    ) {\n      return null; // No valid linearization dictionary found.\n    } else if ((length = getInt(linDict, \"L\")) !== stream.length) {\n      throw new Error(\n        'The \"L\" parameter in the linearization dictionary ' +\n          \"does not equal the stream length.\"\n      );\n    }\n    return {\n      length,\n      hints: getHints(linDict),\n      objectNumberFirst: getInt(linDict, \"O\"),\n      endFirst: getInt(linDict, \"E\"),\n      numPages: getInt(linDict, \"N\"),\n      mainXRefEntriesOffset: getInt(linDict, \"T\"),\n      pageFirst: linDict.has(\"P\")\n        ? getInt(linDict, \"P\", /* allowZeroValue = */ true)\n        : 0,\n    };\n  }\n}\n\nexport { Lexer, Linearization, Parser };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { DecodeStream } from \"./decode_stream.js\";\nimport { isWhiteSpace } from \"./core_utils.js\";\n\nclass Ascii85Stream extends DecodeStream {\n  constructor(str, maybeLength) {\n    // Most streams increase in size when decoded, but Ascii85 streams\n    // typically shrink by ~20%.\n    if (maybeLength) {\n      maybeLength *= 0.8;\n    }\n    super(maybeLength);\n\n    this.str = str;\n    this.dict = str.dict;\n    this.input = new Uint8Array(5);\n  }\n\n  readBlock() {\n    const TILDA_CHAR = 0x7e; // '~'\n    const Z_LOWER_CHAR = 0x7a; // 'z'\n    const EOF = -1;\n\n    const str = this.str;\n\n    let c = str.getByte();\n    while (isWhiteSpace(c)) {\n      c = str.getByte();\n    }\n\n    if (c === EOF || c === TILDA_CHAR) {\n      this.eof = true;\n      return;\n    }\n\n    const bufferLength = this.bufferLength;\n    let buffer, i;\n\n    // special code for z\n    if (c === Z_LOWER_CHAR) {\n      buffer = this.ensureBuffer(bufferLength + 4);\n      for (i = 0; i < 4; ++i) {\n        buffer[bufferLength + i] = 0;\n      }\n      this.bufferLength += 4;\n    } else {\n      const input = this.input;\n      input[0] = c;\n      for (i = 1; i < 5; ++i) {\n        c = str.getByte();\n        while (isWhiteSpace(c)) {\n          c = str.getByte();\n        }\n\n        input[i] = c;\n\n        if (c === EOF || c === TILDA_CHAR) {\n          break;\n        }\n      }\n      buffer = this.ensureBuffer(bufferLength + i - 1);\n      this.bufferLength += i - 1;\n\n      // partial ending;\n      if (i < 5) {\n        for (; i < 5; ++i) {\n          input[i] = 0x21 + 84;\n        }\n        this.eof = true;\n      }\n      let t = 0;\n      for (i = 0; i < 5; ++i) {\n        t = t * 85 + (input[i] - 0x21);\n      }\n\n      for (i = 3; i >= 0; --i) {\n        buffer[bufferLength + i] = t & 0xff;\n        t >>= 8;\n      }\n    }\n  }\n}\n\nexport { Ascii85Stream };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { BaseStream } from \"./base_stream.js\";\nimport { Stream } from \"./stream.js\";\n\n// Lots of DecodeStreams are created whose buffers are never used.  For these\n// we share a single empty buffer. This is (a) space-efficient and (b) avoids\n// having special cases that would be required if we used |null| for an empty\n// buffer.\nconst emptyBuffer = new Uint8Array(0);\n\n// Super class for the decoding streams.\nclass DecodeStream extends BaseStream {\n  constructor(maybeMinBufferLength) {\n    super();\n    this._rawMinBufferLength = maybeMinBufferLength || 0;\n\n    this.pos = 0;\n    this.bufferLength = 0;\n    this.eof = false;\n    this.buffer = emptyBuffer;\n    this.minBufferLength = 512;\n    if (maybeMinBufferLength) {\n      // Compute the first power of two that is as big as maybeMinBufferLength.\n      while (this.minBufferLength < maybeMinBufferLength) {\n        this.minBufferLength *= 2;\n      }\n    }\n  }\n\n  get isEmpty() {\n    while (!this.eof && this.bufferLength === 0) {\n      this.readBlock();\n    }\n    return this.bufferLength === 0;\n  }\n\n  ensureBuffer(requested) {\n    const buffer = this.buffer;\n    if (requested <= buffer.byteLength) {\n      return buffer;\n    }\n    let size = this.minBufferLength;\n    while (size < requested) {\n      size *= 2;\n    }\n    const buffer2 = new Uint8Array(size);\n    buffer2.set(buffer);\n    return (this.buffer = buffer2);\n  }\n\n  getByte() {\n    const pos = this.pos;\n    while (this.bufferLength <= pos) {\n      if (this.eof) {\n        return -1;\n      }\n      this.readBlock();\n    }\n    return this.buffer[this.pos++];\n  }\n\n  getBytes(length, forceClamped = false) {\n    const pos = this.pos;\n    let end;\n\n    if (length) {\n      this.ensureBuffer(pos + length);\n      end = pos + length;\n\n      while (!this.eof && this.bufferLength < end) {\n        this.readBlock();\n      }\n      const bufEnd = this.bufferLength;\n      if (end > bufEnd) {\n        end = bufEnd;\n      }\n    } else {\n      while (!this.eof) {\n        this.readBlock();\n      }\n      end = this.bufferLength;\n    }\n\n    this.pos = end;\n    const subarray = this.buffer.subarray(pos, end);\n    // `this.buffer` is either a `Uint8Array` or `Uint8ClampedArray` here.\n    return forceClamped && !(subarray instanceof Uint8ClampedArray)\n      ? new Uint8ClampedArray(subarray)\n      : subarray;\n  }\n\n  reset() {\n    this.pos = 0;\n  }\n\n  makeSubStream(start, length, dict = null) {\n    if (length === undefined) {\n      while (!this.eof) {\n        this.readBlock();\n      }\n    } else {\n      const end = start + length;\n      while (this.bufferLength <= end && !this.eof) {\n        this.readBlock();\n      }\n    }\n    return new Stream(this.buffer, start, length, dict);\n  }\n\n  getBaseStreams() {\n    return this.str ? this.str.getBaseStreams() : null;\n  }\n}\n\nclass StreamsSequenceStream extends DecodeStream {\n  constructor(streams, onError = null) {\n    let maybeLength = 0;\n    for (const stream of streams) {\n      maybeLength +=\n        stream instanceof DecodeStream\n          ? stream._rawMinBufferLength\n          : stream.length;\n    }\n    super(maybeLength);\n\n    this.streams = streams;\n    this._onError = onError;\n  }\n\n  readBlock() {\n    const streams = this.streams;\n    if (streams.length === 0) {\n      this.eof = true;\n      return;\n    }\n    const stream = streams.shift();\n    let chunk;\n    try {\n      chunk = stream.getBytes();\n    } catch (reason) {\n      if (this._onError) {\n        this._onError(reason, stream.dict && stream.dict.objId);\n        return;\n      }\n      throw reason;\n    }\n    const bufferLength = this.bufferLength;\n    const newLength = bufferLength + chunk.length;\n    const buffer = this.ensureBuffer(newLength);\n    buffer.set(chunk, bufferLength);\n    this.bufferLength = newLength;\n  }\n\n  getBaseStreams() {\n    const baseStreamsBuf = [];\n    for (const stream of this.streams) {\n      const baseStreams = stream.getBaseStreams();\n      if (baseStreams) {\n        baseStreamsBuf.push(...baseStreams);\n      }\n    }\n    return baseStreamsBuf.length > 0 ? baseStreamsBuf : null;\n  }\n}\n\nexport { DecodeStream, StreamsSequenceStream };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { DecodeStream } from \"./decode_stream.js\";\n\nclass AsciiHexStream extends DecodeStream {\n  constructor(str, maybeLength) {\n    // Most streams increase in size when decoded, but AsciiHex streams shrink\n    // by 50%.\n    if (maybeLength) {\n      maybeLength *= 0.5;\n    }\n    super(maybeLength);\n\n    this.str = str;\n    this.dict = str.dict;\n\n    this.firstDigit = -1;\n  }\n\n  readBlock() {\n    const UPSTREAM_BLOCK_SIZE = 8000;\n    const bytes = this.str.getBytes(UPSTREAM_BLOCK_SIZE);\n    if (!bytes.length) {\n      this.eof = true;\n      return;\n    }\n\n    const maxDecodeLength = (bytes.length + 1) >> 1;\n    const buffer = this.ensureBuffer(this.bufferLength + maxDecodeLength);\n    let bufferLength = this.bufferLength;\n\n    let firstDigit = this.firstDigit;\n    for (const ch of bytes) {\n      let digit;\n      if (ch >= /* '0' = */ 0x30 && ch <= /* '9' = */ 0x39) {\n        digit = ch & 0x0f;\n      } else if (\n        (ch >= /* 'A' = */ 0x41 && ch <= /* 'Z' = */ 0x46) ||\n        (ch >= /* 'a' = */ 0x61 && ch <= /* 'z' = */ 0x66)\n      ) {\n        digit = (ch & 0x0f) + 9;\n      } else if (ch === /* '>' = */ 0x3e) {\n        this.eof = true;\n        break;\n      } else {\n        // Probably whitespace, ignoring.\n        continue;\n      }\n      if (firstDigit < 0) {\n        firstDigit = digit;\n      } else {\n        buffer[bufferLength++] = (firstDigit << 4) | digit;\n        firstDigit = -1;\n      }\n    }\n    if (firstDigit >= 0 && this.eof) {\n      // incomplete byte\n      buffer[bufferLength++] = firstDigit << 4;\n      firstDigit = -1;\n    }\n    this.firstDigit = firstDigit;\n    this.bufferLength = bufferLength;\n  }\n}\n\nexport { AsciiHexStream };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Dict, isDict } from \"./primitives.js\";\nimport { CCITTFaxDecoder } from \"./ccitt.js\";\nimport { DecodeStream } from \"./decode_stream.js\";\n\nclass CCITTFaxStream extends DecodeStream {\n  constructor(str, maybeLength, params) {\n    super(maybeLength);\n\n    this.str = str;\n    this.dict = str.dict;\n\n    if (!isDict(params)) {\n      params = Dict.empty;\n    }\n\n    const source = {\n      next() {\n        return str.getByte();\n      },\n    };\n    this.ccittFaxDecoder = new CCITTFaxDecoder(source, {\n      K: params.get(\"K\"),\n      EndOfLine: params.get(\"EndOfLine\"),\n      EncodedByteAlign: params.get(\"EncodedByteAlign\"),\n      Columns: params.get(\"Columns\"),\n      Rows: params.get(\"Rows\"),\n      EndOfBlock: params.get(\"EndOfBlock\"),\n      BlackIs1: params.get(\"BlackIs1\"),\n    });\n  }\n\n  readBlock() {\n    while (!this.eof) {\n      const c = this.ccittFaxDecoder.readNextChar();\n      if (c === -1) {\n        this.eof = true;\n        return;\n      }\n      this.ensureBuffer(this.bufferLength + 1);\n      this.buffer[this.bufferLength++] = c;\n    }\n  }\n}\n\nexport { CCITTFaxStream };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* Copyright 1996-2003 Glyph & Cog, LLC\n *\n * The CCITT stream implementation contained in this file is a JavaScript port\n * of XPDF's implementation, made available under the Apache 2.0 open source\n * license.\n */\n\nimport { FormatError, info } from \"../shared/util.js\";\n\n/**\n * @typedef {Object} CCITTFaxDecoderSource\n * @property {function} next - Method that return one byte of data for decoding,\n *   or -1 when EOF is reached.\n */\n\nconst ccittEOL = -2;\nconst ccittEOF = -1;\nconst twoDimPass = 0;\nconst twoDimHoriz = 1;\nconst twoDimVert0 = 2;\nconst twoDimVertR1 = 3;\nconst twoDimVertL1 = 4;\nconst twoDimVertR2 = 5;\nconst twoDimVertL2 = 6;\nconst twoDimVertR3 = 7;\nconst twoDimVertL3 = 8;\n\n// prettier-ignore\nconst twoDimTable = [\n  [-1, -1], [-1, -1],                   // 000000x\n  [7, twoDimVertL3],                    // 0000010\n  [7, twoDimVertR3],                    // 0000011\n  [6, twoDimVertL2], [6, twoDimVertL2], // 000010x\n  [6, twoDimVertR2], [6, twoDimVertR2], // 000011x\n  [4, twoDimPass], [4, twoDimPass],     // 0001xxx\n  [4, twoDimPass], [4, twoDimPass],\n  [4, twoDimPass], [4, twoDimPass],\n  [4, twoDimPass], [4, twoDimPass],\n  [3, twoDimHoriz], [3, twoDimHoriz],   // 001xxxx\n  [3, twoDimHoriz], [3, twoDimHoriz],\n  [3, twoDimHoriz], [3, twoDimHoriz],\n  [3, twoDimHoriz], [3, twoDimHoriz],\n  [3, twoDimHoriz], [3, twoDimHoriz],\n  [3, twoDimHoriz], [3, twoDimHoriz],\n  [3, twoDimHoriz], [3, twoDimHoriz],\n  [3, twoDimHoriz], [3, twoDimHoriz],\n  [3, twoDimVertL1], [3, twoDimVertL1], // 010xxxx\n  [3, twoDimVertL1], [3, twoDimVertL1],\n  [3, twoDimVertL1], [3, twoDimVertL1],\n  [3, twoDimVertL1], [3, twoDimVertL1],\n  [3, twoDimVertL1], [3, twoDimVertL1],\n  [3, twoDimVertL1], [3, twoDimVertL1],\n  [3, twoDimVertL1], [3, twoDimVertL1],\n  [3, twoDimVertL1], [3, twoDimVertL1],\n  [3, twoDimVertR1], [3, twoDimVertR1], // 011xxxx\n  [3, twoDimVertR1], [3, twoDimVertR1],\n  [3, twoDimVertR1], [3, twoDimVertR1],\n  [3, twoDimVertR1], [3, twoDimVertR1],\n  [3, twoDimVertR1], [3, twoDimVertR1],\n  [3, twoDimVertR1], [3, twoDimVertR1],\n  [3, twoDimVertR1], [3, twoDimVertR1],\n  [3, twoDimVertR1], [3, twoDimVertR1],\n  [1, twoDimVert0], [1, twoDimVert0],   // 1xxxxxx\n  [1, twoDimVert0], [1, twoDimVert0],\n  [1, twoDimVert0], [1, twoDimVert0],\n  [1, twoDimVert0], [1, twoDimVert0],\n  [1, twoDimVert0], [1, twoDimVert0],\n  [1, twoDimVert0], [1, twoDimVert0],\n  [1, twoDimVert0], [1, twoDimVert0],\n  [1, twoDimVert0], [1, twoDimVert0],\n  [1, twoDimVert0], [1, twoDimVert0],\n  [1, twoDimVert0], [1, twoDimVert0],\n  [1, twoDimVert0], [1, twoDimVert0],\n  [1, twoDimVert0], [1, twoDimVert0],\n  [1, twoDimVert0], [1, twoDimVert0],\n  [1, twoDimVert0], [1, twoDimVert0],\n  [1, twoDimVert0], [1, twoDimVert0],\n  [1, twoDimVert0], [1, twoDimVert0],\n  [1, twoDimVert0], [1, twoDimVert0],\n  [1, twoDimVert0], [1, twoDimVert0],\n  [1, twoDimVert0], [1, twoDimVert0],\n  [1, twoDimVert0], [1, twoDimVert0],\n  [1, twoDimVert0], [1, twoDimVert0],\n  [1, twoDimVert0], [1, twoDimVert0],\n  [1, twoDimVert0], [1, twoDimVert0],\n  [1, twoDimVert0], [1, twoDimVert0],\n  [1, twoDimVert0], [1, twoDimVert0],\n  [1, twoDimVert0], [1, twoDimVert0],\n  [1, twoDimVert0], [1, twoDimVert0],\n  [1, twoDimVert0], [1, twoDimVert0],\n  [1, twoDimVert0], [1, twoDimVert0],\n  [1, twoDimVert0], [1, twoDimVert0],\n  [1, twoDimVert0], [1, twoDimVert0],\n  [1, twoDimVert0], [1, twoDimVert0]\n];\n\n// prettier-ignore\nconst whiteTable1 = [\n  [-1, -1],                               // 00000\n  [12, ccittEOL],                         // 00001\n  [-1, -1], [-1, -1],                     // 0001x\n  [-1, -1], [-1, -1], [-1, -1], [-1, -1], // 001xx\n  [-1, -1], [-1, -1], [-1, -1], [-1, -1], // 010xx\n  [-1, -1], [-1, -1], [-1, -1], [-1, -1], // 011xx\n  [11, 1792], [11, 1792],                 // 1000x\n  [12, 1984],                             // 10010\n  [12, 2048],                             // 10011\n  [12, 2112],                             // 10100\n  [12, 2176],                             // 10101\n  [12, 2240],                             // 10110\n  [12, 2304],                             // 10111\n  [11, 1856], [11, 1856],                 // 1100x\n  [11, 1920], [11, 1920],                 // 1101x\n  [12, 2368],                             // 11100\n  [12, 2432],                             // 11101\n  [12, 2496],                             // 11110\n  [12, 2560]                              // 11111\n];\n\n// prettier-ignore\nconst whiteTable2 = [\n  [-1, -1], [-1, -1], [-1, -1], [-1, -1],     // 0000000xx\n  [8, 29], [8, 29],                           // 00000010x\n  [8, 30], [8, 30],                           // 00000011x\n  [8, 45], [8, 45],                           // 00000100x\n  [8, 46], [8, 46],                           // 00000101x\n  [7, 22], [7, 22], [7, 22], [7, 22],         // 0000011xx\n  [7, 23], [7, 23], [7, 23], [7, 23],         // 0000100xx\n  [8, 47], [8, 47],                           // 00001010x\n  [8, 48], [8, 48],                           // 00001011x\n  [6, 13], [6, 13], [6, 13], [6, 13],         // 000011xxx\n  [6, 13], [6, 13], [6, 13], [6, 13],\n  [7, 20], [7, 20], [7, 20], [7, 20],         // 0001000xx\n  [8, 33], [8, 33],                           // 00010010x\n  [8, 34], [8, 34],                           // 00010011x\n  [8, 35], [8, 35],                           // 00010100x\n  [8, 36], [8, 36],                           // 00010101x\n  [8, 37], [8, 37],                           // 00010110x\n  [8, 38], [8, 38],                           // 00010111x\n  [7, 19], [7, 19], [7, 19], [7, 19],         // 0001100xx\n  [8, 31], [8, 31],                           // 00011010x\n  [8, 32], [8, 32],                           // 00011011x\n  [6, 1], [6, 1], [6, 1], [6, 1],             // 000111xxx\n  [6, 1], [6, 1], [6, 1], [6, 1],\n  [6, 12], [6, 12], [6, 12], [6, 12],         // 001000xxx\n  [6, 12], [6, 12], [6, 12], [6, 12],\n  [8, 53], [8, 53],                           // 00100100x\n  [8, 54], [8, 54],                           // 00100101x\n  [7, 26], [7, 26], [7, 26], [7, 26],         // 0010011xx\n  [8, 39], [8, 39],                           // 00101000x\n  [8, 40], [8, 40],                           // 00101001x\n  [8, 41], [8, 41],                           // 00101010x\n  [8, 42], [8, 42],                           // 00101011x\n  [8, 43], [8, 43],                           // 00101100x\n  [8, 44], [8, 44],                           // 00101101x\n  [7, 21], [7, 21], [7, 21], [7, 21],         // 0010111xx\n  [7, 28], [7, 28], [7, 28], [7, 28],         // 0011000xx\n  [8, 61], [8, 61],                           // 00110010x\n  [8, 62], [8, 62],                           // 00110011x\n  [8, 63], [8, 63],                           // 00110100x\n  [8, 0], [8, 0],                             // 00110101x\n  [8, 320], [8, 320],                         // 00110110x\n  [8, 384], [8, 384],                         // 00110111x\n  [5, 10], [5, 10], [5, 10], [5, 10],         // 00111xxxx\n  [5, 10], [5, 10], [5, 10], [5, 10],\n  [5, 10], [5, 10], [5, 10], [5, 10],\n  [5, 10], [5, 10], [5, 10], [5, 10],\n  [5, 11], [5, 11], [5, 11], [5, 11],         // 01000xxxx\n  [5, 11], [5, 11], [5, 11], [5, 11],\n  [5, 11], [5, 11], [5, 11], [5, 11],\n  [5, 11], [5, 11], [5, 11], [5, 11],\n  [7, 27], [7, 27], [7, 27], [7, 27],         // 0100100xx\n  [8, 59], [8, 59],                           // 01001010x\n  [8, 60], [8, 60],                           // 01001011x\n  [9, 1472],                                  // 010011000\n  [9, 1536],                                  // 010011001\n  [9, 1600],                                  // 010011010\n  [9, 1728],                                  // 010011011\n  [7, 18], [7, 18], [7, 18], [7, 18],         // 0100111xx\n  [7, 24], [7, 24], [7, 24], [7, 24],         // 0101000xx\n  [8, 49], [8, 49],                           // 01010010x\n  [8, 50], [8, 50],                           // 01010011x\n  [8, 51], [8, 51],                           // 01010100x\n  [8, 52], [8, 52],                           // 01010101x\n  [7, 25], [7, 25], [7, 25], [7, 25],         // 0101011xx\n  [8, 55], [8, 55],                           // 01011000x\n  [8, 56], [8, 56],                           // 01011001x\n  [8, 57], [8, 57],                           // 01011010x\n  [8, 58], [8, 58],                           // 01011011x\n  [6, 192], [6, 192], [6, 192], [6, 192],     // 010111xxx\n  [6, 192], [6, 192], [6, 192], [6, 192],\n  [6, 1664], [6, 1664], [6, 1664], [6, 1664], // 011000xxx\n  [6, 1664], [6, 1664], [6, 1664], [6, 1664],\n  [8, 448], [8, 448],                         // 01100100x\n  [8, 512], [8, 512],                         // 01100101x\n  [9, 704],                                   // 011001100\n  [9, 768],                                   // 011001101\n  [8, 640], [8, 640],                         // 01100111x\n  [8, 576], [8, 576],                         // 01101000x\n  [9, 832],                                   // 011010010\n  [9, 896],                                   // 011010011\n  [9, 960],                                   // 011010100\n  [9, 1024],                                  // 011010101\n  [9, 1088],                                  // 011010110\n  [9, 1152],                                  // 011010111\n  [9, 1216],                                  // 011011000\n  [9, 1280],                                  // 011011001\n  [9, 1344],                                  // 011011010\n  [9, 1408],                                  // 011011011\n  [7, 256], [7, 256], [7, 256], [7, 256],     // 0110111xx\n  [4, 2], [4, 2], [4, 2], [4, 2],             // 0111xxxxx\n  [4, 2], [4, 2], [4, 2], [4, 2],\n  [4, 2], [4, 2], [4, 2], [4, 2],\n  [4, 2], [4, 2], [4, 2], [4, 2],\n  [4, 2], [4, 2], [4, 2], [4, 2],\n  [4, 2], [4, 2], [4, 2], [4, 2],\n  [4, 2], [4, 2], [4, 2], [4, 2],\n  [4, 2], [4, 2], [4, 2], [4, 2],\n  [4, 3], [4, 3], [4, 3], [4, 3],             // 1000xxxxx\n  [4, 3], [4, 3], [4, 3], [4, 3],\n  [4, 3], [4, 3], [4, 3], [4, 3],\n  [4, 3], [4, 3], [4, 3], [4, 3],\n  [4, 3], [4, 3], [4, 3], [4, 3],\n  [4, 3], [4, 3], [4, 3], [4, 3],\n  [4, 3], [4, 3], [4, 3], [4, 3],\n  [4, 3], [4, 3], [4, 3], [4, 3],\n  [5, 128], [5, 128], [5, 128], [5, 128],     // 10010xxxx\n  [5, 128], [5, 128], [5, 128], [5, 128],\n  [5, 128], [5, 128], [5, 128], [5, 128],\n  [5, 128], [5, 128], [5, 128], [5, 128],\n  [5, 8], [5, 8], [5, 8], [5, 8],             // 10011xxxx\n  [5, 8], [5, 8], [5, 8], [5, 8],\n  [5, 8], [5, 8], [5, 8], [5, 8],\n  [5, 8], [5, 8], [5, 8], [5, 8],\n  [5, 9], [5, 9], [5, 9], [5, 9],             // 10100xxxx\n  [5, 9], [5, 9], [5, 9], [5, 9],\n  [5, 9], [5, 9], [5, 9], [5, 9],\n  [5, 9], [5, 9], [5, 9], [5, 9],\n  [6, 16], [6, 16], [6, 16], [6, 16],         // 101010xxx\n  [6, 16], [6, 16], [6, 16], [6, 16],\n  [6, 17], [6, 17], [6, 17], [6, 17],         // 101011xxx\n  [6, 17], [6, 17], [6, 17], [6, 17],\n  [4, 4], [4, 4], [4, 4], [4, 4],             // 1011xxxxx\n  [4, 4], [4, 4], [4, 4], [4, 4],\n  [4, 4], [4, 4], [4, 4], [4, 4],\n  [4, 4], [4, 4], [4, 4], [4, 4],\n  [4, 4], [4, 4], [4, 4], [4, 4],\n  [4, 4], [4, 4], [4, 4], [4, 4],\n  [4, 4], [4, 4], [4, 4], [4, 4],\n  [4, 4], [4, 4], [4, 4], [4, 4],\n  [4, 5], [4, 5], [4, 5], [4, 5],             // 1100xxxxx\n  [4, 5], [4, 5], [4, 5], [4, 5],\n  [4, 5], [4, 5], [4, 5], [4, 5],\n  [4, 5], [4, 5], [4, 5], [4, 5],\n  [4, 5], [4, 5], [4, 5], [4, 5],\n  [4, 5], [4, 5], [4, 5], [4, 5],\n  [4, 5], [4, 5], [4, 5], [4, 5],\n  [4, 5], [4, 5], [4, 5], [4, 5],\n  [6, 14], [6, 14], [6, 14], [6, 14],         // 110100xxx\n  [6, 14], [6, 14], [6, 14], [6, 14],\n  [6, 15], [6, 15], [6, 15], [6, 15],         // 110101xxx\n  [6, 15], [6, 15], [6, 15], [6, 15],\n  [5, 64], [5, 64], [5, 64], [5, 64],         // 11011xxxx\n  [5, 64], [5, 64], [5, 64], [5, 64],\n  [5, 64], [5, 64], [5, 64], [5, 64],\n  [5, 64], [5, 64], [5, 64], [5, 64],\n  [4, 6], [4, 6], [4, 6], [4, 6],             // 1110xxxxx\n  [4, 6], [4, 6], [4, 6], [4, 6],\n  [4, 6], [4, 6], [4, 6], [4, 6],\n  [4, 6], [4, 6], [4, 6], [4, 6],\n  [4, 6], [4, 6], [4, 6], [4, 6],\n  [4, 6], [4, 6], [4, 6], [4, 6],\n  [4, 6], [4, 6], [4, 6], [4, 6],\n  [4, 6], [4, 6], [4, 6], [4, 6],\n  [4, 7], [4, 7], [4, 7], [4, 7],             // 1111xxxxx\n  [4, 7], [4, 7], [4, 7], [4, 7],\n  [4, 7], [4, 7], [4, 7], [4, 7],\n  [4, 7], [4, 7], [4, 7], [4, 7],\n  [4, 7], [4, 7], [4, 7], [4, 7],\n  [4, 7], [4, 7], [4, 7], [4, 7],\n  [4, 7], [4, 7], [4, 7], [4, 7],\n  [4, 7], [4, 7], [4, 7], [4, 7]\n];\n\n// prettier-ignore\nconst blackTable1 = [\n  [-1, -1], [-1, -1],                             // 000000000000x\n  [12, ccittEOL], [12, ccittEOL],                 // 000000000001x\n  [-1, -1], [-1, -1], [-1, -1], [-1, -1],         // 00000000001xx\n  [-1, -1], [-1, -1], [-1, -1], [-1, -1],         // 00000000010xx\n  [-1, -1], [-1, -1], [-1, -1], [-1, -1],         // 00000000011xx\n  [-1, -1], [-1, -1], [-1, -1], [-1, -1],         // 00000000100xx\n  [-1, -1], [-1, -1], [-1, -1], [-1, -1],         // 00000000101xx\n  [-1, -1], [-1, -1], [-1, -1], [-1, -1],         // 00000000110xx\n  [-1, -1], [-1, -1], [-1, -1], [-1, -1],         // 00000000111xx\n  [11, 1792], [11, 1792], [11, 1792], [11, 1792], // 00000001000xx\n  [12, 1984], [12, 1984],                         // 000000010010x\n  [12, 2048], [12, 2048],                         // 000000010011x\n  [12, 2112], [12, 2112],                         // 000000010100x\n  [12, 2176], [12, 2176],                         // 000000010101x\n  [12, 2240], [12, 2240],                         // 000000010110x\n  [12, 2304], [12, 2304],                         // 000000010111x\n  [11, 1856], [11, 1856], [11, 1856], [11, 1856], // 00000001100xx\n  [11, 1920], [11, 1920], [11, 1920], [11, 1920], // 00000001101xx\n  [12, 2368], [12, 2368],                         // 000000011100x\n  [12, 2432], [12, 2432],                         // 000000011101x\n  [12, 2496], [12, 2496],                         // 000000011110x\n  [12, 2560], [12, 2560],                         // 000000011111x\n  [10, 18], [10, 18], [10, 18], [10, 18],         // 0000001000xxx\n  [10, 18], [10, 18], [10, 18], [10, 18],\n  [12, 52], [12, 52],                             // 000000100100x\n  [13, 640],                                      // 0000001001010\n  [13, 704],                                      // 0000001001011\n  [13, 768],                                      // 0000001001100\n  [13, 832],                                      // 0000001001101\n  [12, 55], [12, 55],                             // 000000100111x\n  [12, 56], [12, 56],                             // 000000101000x\n  [13, 1280],                                     // 0000001010010\n  [13, 1344],                                     // 0000001010011\n  [13, 1408],                                     // 0000001010100\n  [13, 1472],                                     // 0000001010101\n  [12, 59], [12, 59],                             // 000000101011x\n  [12, 60], [12, 60],                             // 000000101100x\n  [13, 1536],                                     // 0000001011010\n  [13, 1600],                                     // 0000001011011\n  [11, 24], [11, 24], [11, 24], [11, 24],         // 00000010111xx\n  [11, 25], [11, 25], [11, 25], [11, 25],         // 00000011000xx\n  [13, 1664],                                     // 0000001100100\n  [13, 1728],                                     // 0000001100101\n  [12, 320], [12, 320],                           // 000000110011x\n  [12, 384], [12, 384],                           // 000000110100x\n  [12, 448], [12, 448],                           // 000000110101x\n  [13, 512],                                      // 0000001101100\n  [13, 576],                                      // 0000001101101\n  [12, 53], [12, 53],                             // 000000110111x\n  [12, 54], [12, 54],                             // 000000111000x\n  [13, 896],                                      // 0000001110010\n  [13, 960],                                      // 0000001110011\n  [13, 1024],                                     // 0000001110100\n  [13, 1088],                                     // 0000001110101\n  [13, 1152],                                     // 0000001110110\n  [13, 1216],                                     // 0000001110111\n  [10, 64], [10, 64], [10, 64], [10, 64],         // 0000001111xxx\n  [10, 64], [10, 64], [10, 64], [10, 64]\n];\n\n// prettier-ignore\nconst blackTable2 = [\n  [8, 13], [8, 13], [8, 13], [8, 13],     // 00000100xxxx\n  [8, 13], [8, 13], [8, 13], [8, 13],\n  [8, 13], [8, 13], [8, 13], [8, 13],\n  [8, 13], [8, 13], [8, 13], [8, 13],\n  [11, 23], [11, 23],                     // 00000101000x\n  [12, 50],                               // 000001010010\n  [12, 51],                               // 000001010011\n  [12, 44],                               // 000001010100\n  [12, 45],                               // 000001010101\n  [12, 46],                               // 000001010110\n  [12, 47],                               // 000001010111\n  [12, 57],                               // 000001011000\n  [12, 58],                               // 000001011001\n  [12, 61],                               // 000001011010\n  [12, 256],                              // 000001011011\n  [10, 16], [10, 16], [10, 16], [10, 16], // 0000010111xx\n  [10, 17], [10, 17], [10, 17], [10, 17], // 0000011000xx\n  [12, 48],                               // 000001100100\n  [12, 49],                               // 000001100101\n  [12, 62],                               // 000001100110\n  [12, 63],                               // 000001100111\n  [12, 30],                               // 000001101000\n  [12, 31],                               // 000001101001\n  [12, 32],                               // 000001101010\n  [12, 33],                               // 000001101011\n  [12, 40],                               // 000001101100\n  [12, 41],                               // 000001101101\n  [11, 22], [11, 22],                     // 00000110111x\n  [8, 14], [8, 14], [8, 14], [8, 14],     // 00000111xxxx\n  [8, 14], [8, 14], [8, 14], [8, 14],\n  [8, 14], [8, 14], [8, 14], [8, 14],\n  [8, 14], [8, 14], [8, 14], [8, 14],\n  [7, 10], [7, 10], [7, 10], [7, 10],     // 0000100xxxxx\n  [7, 10], [7, 10], [7, 10], [7, 10],\n  [7, 10], [7, 10], [7, 10], [7, 10],\n  [7, 10], [7, 10], [7, 10], [7, 10],\n  [7, 10], [7, 10], [7, 10], [7, 10],\n  [7, 10], [7, 10], [7, 10], [7, 10],\n  [7, 10], [7, 10], [7, 10], [7, 10],\n  [7, 10], [7, 10], [7, 10], [7, 10],\n  [7, 11], [7, 11], [7, 11], [7, 11],     // 0000101xxxxx\n  [7, 11], [7, 11], [7, 11], [7, 11],\n  [7, 11], [7, 11], [7, 11], [7, 11],\n  [7, 11], [7, 11], [7, 11], [7, 11],\n  [7, 11], [7, 11], [7, 11], [7, 11],\n  [7, 11], [7, 11], [7, 11], [7, 11],\n  [7, 11], [7, 11], [7, 11], [7, 11],\n  [7, 11], [7, 11], [7, 11], [7, 11],\n  [9, 15], [9, 15], [9, 15], [9, 15],     // 000011000xxx\n  [9, 15], [9, 15], [9, 15], [9, 15],\n  [12, 128],                              // 000011001000\n  [12, 192],                              // 000011001001\n  [12, 26],                               // 000011001010\n  [12, 27],                               // 000011001011\n  [12, 28],                               // 000011001100\n  [12, 29],                               // 000011001101\n  [11, 19], [11, 19],                     // 00001100111x\n  [11, 20], [11, 20],                     // 00001101000x\n  [12, 34],                               // 000011010010\n  [12, 35],                               // 000011010011\n  [12, 36],                               // 000011010100\n  [12, 37],                               // 000011010101\n  [12, 38],                               // 000011010110\n  [12, 39],                               // 000011010111\n  [11, 21], [11, 21],                     // 00001101100x\n  [12, 42],                               // 000011011010\n  [12, 43],                               // 000011011011\n  [10, 0], [10, 0], [10, 0], [10, 0],     // 0000110111xx\n  [7, 12], [7, 12], [7, 12], [7, 12],     // 0000111xxxxx\n  [7, 12], [7, 12], [7, 12], [7, 12],\n  [7, 12], [7, 12], [7, 12], [7, 12],\n  [7, 12], [7, 12], [7, 12], [7, 12],\n  [7, 12], [7, 12], [7, 12], [7, 12],\n  [7, 12], [7, 12], [7, 12], [7, 12],\n  [7, 12], [7, 12], [7, 12], [7, 12],\n  [7, 12], [7, 12], [7, 12], [7, 12]\n];\n\n// prettier-ignore\nconst blackTable3 = [\n  [-1, -1], [-1, -1], [-1, -1], [-1, -1], // 0000xx\n  [6, 9],                                 // 000100\n  [6, 8],                                 // 000101\n  [5, 7], [5, 7],                         // 00011x\n  [4, 6], [4, 6], [4, 6], [4, 6],         // 0010xx\n  [4, 5], [4, 5], [4, 5], [4, 5],         // 0011xx\n  [3, 1], [3, 1], [3, 1], [3, 1],         // 010xxx\n  [3, 1], [3, 1], [3, 1], [3, 1],\n  [3, 4], [3, 4], [3, 4], [3, 4],         // 011xxx\n  [3, 4], [3, 4], [3, 4], [3, 4],\n  [2, 3], [2, 3], [2, 3], [2, 3],         // 10xxxx\n  [2, 3], [2, 3], [2, 3], [2, 3],\n  [2, 3], [2, 3], [2, 3], [2, 3],\n  [2, 3], [2, 3], [2, 3], [2, 3],\n  [2, 2], [2, 2], [2, 2], [2, 2],         // 11xxxx\n  [2, 2], [2, 2], [2, 2], [2, 2],\n  [2, 2], [2, 2], [2, 2], [2, 2],\n  [2, 2], [2, 2], [2, 2], [2, 2]\n];\n\n/**\n * @param {CCITTFaxDecoderSource} source - The data which should be decoded.\n * @param {Object} [options] - Decoding options.\n */\nclass CCITTFaxDecoder {\n  constructor(source, options = {}) {\n    if (!source || typeof source.next !== \"function\") {\n      throw new Error('CCITTFaxDecoder - invalid \"source\" parameter.');\n    }\n    this.source = source;\n    this.eof = false;\n\n    this.encoding = options.K || 0;\n    this.eoline = options.EndOfLine || false;\n    this.byteAlign = options.EncodedByteAlign || false;\n    this.columns = options.Columns || 1728;\n    this.rows = options.Rows || 0;\n    let eoblock = options.EndOfBlock;\n    if (eoblock === null || eoblock === undefined) {\n      eoblock = true;\n    }\n    this.eoblock = eoblock;\n    this.black = options.BlackIs1 || false;\n\n    this.codingLine = new Uint32Array(this.columns + 1);\n    this.refLine = new Uint32Array(this.columns + 2);\n\n    this.codingLine[0] = this.columns;\n    this.codingPos = 0;\n\n    this.row = 0;\n    this.nextLine2D = this.encoding < 0;\n    this.inputBits = 0;\n    this.inputBuf = 0;\n    this.outputBits = 0;\n    this.rowsDone = false;\n\n    let code1;\n    while ((code1 = this._lookBits(12)) === 0) {\n      this._eatBits(1);\n    }\n    if (code1 === 1) {\n      this._eatBits(12);\n    }\n    if (this.encoding > 0) {\n      this.nextLine2D = !this._lookBits(1);\n      this._eatBits(1);\n    }\n  }\n\n  readNextChar() {\n    if (this.eof) {\n      return -1;\n    }\n    const refLine = this.refLine;\n    const codingLine = this.codingLine;\n    const columns = this.columns;\n\n    let refPos, blackPixels, bits, i;\n\n    if (this.outputBits === 0) {\n      if (this.rowsDone) {\n        this.eof = true;\n      }\n      if (this.eof) {\n        return -1;\n      }\n      this.err = false;\n\n      let code1, code2, code3;\n      if (this.nextLine2D) {\n        for (i = 0; codingLine[i] < columns; ++i) {\n          refLine[i] = codingLine[i];\n        }\n        refLine[i++] = columns;\n        refLine[i] = columns;\n        codingLine[0] = 0;\n        this.codingPos = 0;\n        refPos = 0;\n        blackPixels = 0;\n\n        while (codingLine[this.codingPos] < columns) {\n          code1 = this._getTwoDimCode();\n          switch (code1) {\n            case twoDimPass:\n              this._addPixels(refLine[refPos + 1], blackPixels);\n              if (refLine[refPos + 1] < columns) {\n                refPos += 2;\n              }\n              break;\n            case twoDimHoriz:\n              code1 = code2 = 0;\n              if (blackPixels) {\n                do {\n                  code1 += code3 = this._getBlackCode();\n                } while (code3 >= 64);\n                do {\n                  code2 += code3 = this._getWhiteCode();\n                } while (code3 >= 64);\n              } else {\n                do {\n                  code1 += code3 = this._getWhiteCode();\n                } while (code3 >= 64);\n                do {\n                  code2 += code3 = this._getBlackCode();\n                } while (code3 >= 64);\n              }\n              this._addPixels(codingLine[this.codingPos] + code1, blackPixels);\n              if (codingLine[this.codingPos] < columns) {\n                this._addPixels(\n                  codingLine[this.codingPos] + code2,\n                  blackPixels ^ 1\n                );\n              }\n              while (\n                refLine[refPos] <= codingLine[this.codingPos] &&\n                refLine[refPos] < columns\n              ) {\n                refPos += 2;\n              }\n              break;\n            case twoDimVertR3:\n              this._addPixels(refLine[refPos] + 3, blackPixels);\n              blackPixels ^= 1;\n              if (codingLine[this.codingPos] < columns) {\n                ++refPos;\n                while (\n                  refLine[refPos] <= codingLine[this.codingPos] &&\n                  refLine[refPos] < columns\n                ) {\n                  refPos += 2;\n                }\n              }\n              break;\n            case twoDimVertR2:\n              this._addPixels(refLine[refPos] + 2, blackPixels);\n              blackPixels ^= 1;\n              if (codingLine[this.codingPos] < columns) {\n                ++refPos;\n                while (\n                  refLine[refPos] <= codingLine[this.codingPos] &&\n                  refLine[refPos] < columns\n                ) {\n                  refPos += 2;\n                }\n              }\n              break;\n            case twoDimVertR1:\n              this._addPixels(refLine[refPos] + 1, blackPixels);\n              blackPixels ^= 1;\n              if (codingLine[this.codingPos] < columns) {\n                ++refPos;\n                while (\n                  refLine[refPos] <= codingLine[this.codingPos] &&\n                  refLine[refPos] < columns\n                ) {\n                  refPos += 2;\n                }\n              }\n              break;\n            case twoDimVert0:\n              this._addPixels(refLine[refPos], blackPixels);\n              blackPixels ^= 1;\n              if (codingLine[this.codingPos] < columns) {\n                ++refPos;\n                while (\n                  refLine[refPos] <= codingLine[this.codingPos] &&\n                  refLine[refPos] < columns\n                ) {\n                  refPos += 2;\n                }\n              }\n              break;\n            case twoDimVertL3:\n              this._addPixelsNeg(refLine[refPos] - 3, blackPixels);\n              blackPixels ^= 1;\n              if (codingLine[this.codingPos] < columns) {\n                if (refPos > 0) {\n                  --refPos;\n                } else {\n                  ++refPos;\n                }\n                while (\n                  refLine[refPos] <= codingLine[this.codingPos] &&\n                  refLine[refPos] < columns\n                ) {\n                  refPos += 2;\n                }\n              }\n              break;\n            case twoDimVertL2:\n              this._addPixelsNeg(refLine[refPos] - 2, blackPixels);\n              blackPixels ^= 1;\n              if (codingLine[this.codingPos] < columns) {\n                if (refPos > 0) {\n                  --refPos;\n                } else {\n                  ++refPos;\n                }\n                while (\n                  refLine[refPos] <= codingLine[this.codingPos] &&\n                  refLine[refPos] < columns\n                ) {\n                  refPos += 2;\n                }\n              }\n              break;\n            case twoDimVertL1:\n              this._addPixelsNeg(refLine[refPos] - 1, blackPixels);\n              blackPixels ^= 1;\n              if (codingLine[this.codingPos] < columns) {\n                if (refPos > 0) {\n                  --refPos;\n                } else {\n                  ++refPos;\n                }\n                while (\n                  refLine[refPos] <= codingLine[this.codingPos] &&\n                  refLine[refPos] < columns\n                ) {\n                  refPos += 2;\n                }\n              }\n              break;\n            case ccittEOF:\n              this._addPixels(columns, 0);\n              this.eof = true;\n              break;\n            default:\n              info(\"bad 2d code\");\n              this._addPixels(columns, 0);\n              this.err = true;\n          }\n        }\n      } else {\n        codingLine[0] = 0;\n        this.codingPos = 0;\n        blackPixels = 0;\n        while (codingLine[this.codingPos] < columns) {\n          code1 = 0;\n          if (blackPixels) {\n            do {\n              code1 += code3 = this._getBlackCode();\n            } while (code3 >= 64);\n          } else {\n            do {\n              code1 += code3 = this._getWhiteCode();\n            } while (code3 >= 64);\n          }\n          this._addPixels(codingLine[this.codingPos] + code1, blackPixels);\n          blackPixels ^= 1;\n        }\n      }\n\n      let gotEOL = false;\n\n      if (this.byteAlign) {\n        this.inputBits &= ~7;\n      }\n\n      if (!this.eoblock && this.row === this.rows - 1) {\n        this.rowsDone = true;\n      } else {\n        code1 = this._lookBits(12);\n        if (this.eoline) {\n          while (code1 !== ccittEOF && code1 !== 1) {\n            this._eatBits(1);\n            code1 = this._lookBits(12);\n          }\n        } else {\n          while (code1 === 0) {\n            this._eatBits(1);\n            code1 = this._lookBits(12);\n          }\n        }\n        if (code1 === 1) {\n          this._eatBits(12);\n          gotEOL = true;\n        } else if (code1 === ccittEOF) {\n          this.eof = true;\n        }\n      }\n\n      if (!this.eof && this.encoding > 0 && !this.rowsDone) {\n        this.nextLine2D = !this._lookBits(1);\n        this._eatBits(1);\n      }\n\n      if (this.eoblock && gotEOL && this.byteAlign) {\n        code1 = this._lookBits(12);\n        if (code1 === 1) {\n          this._eatBits(12);\n          if (this.encoding > 0) {\n            this._lookBits(1);\n            this._eatBits(1);\n          }\n          if (this.encoding >= 0) {\n            for (i = 0; i < 4; ++i) {\n              code1 = this._lookBits(12);\n              if (code1 !== 1) {\n                info(\"bad rtc code: \" + code1);\n              }\n              this._eatBits(12);\n              if (this.encoding > 0) {\n                this._lookBits(1);\n                this._eatBits(1);\n              }\n            }\n          }\n          this.eof = true;\n        }\n      } else if (this.err && this.eoline) {\n        while (true) {\n          code1 = this._lookBits(13);\n          if (code1 === ccittEOF) {\n            this.eof = true;\n            return -1;\n          }\n          if (code1 >> 1 === 1) {\n            break;\n          }\n          this._eatBits(1);\n        }\n        this._eatBits(12);\n        if (this.encoding > 0) {\n          this._eatBits(1);\n          this.nextLine2D = !(code1 & 1);\n        }\n      }\n\n      if (codingLine[0] > 0) {\n        this.outputBits = codingLine[(this.codingPos = 0)];\n      } else {\n        this.outputBits = codingLine[(this.codingPos = 1)];\n      }\n      this.row++;\n    }\n\n    let c;\n    if (this.outputBits >= 8) {\n      c = this.codingPos & 1 ? 0 : 0xff;\n      this.outputBits -= 8;\n      if (this.outputBits === 0 && codingLine[this.codingPos] < columns) {\n        this.codingPos++;\n        this.outputBits =\n          codingLine[this.codingPos] - codingLine[this.codingPos - 1];\n      }\n    } else {\n      bits = 8;\n      c = 0;\n      do {\n        if (typeof this.outputBits !== \"number\") {\n          throw new FormatError(\n            'Invalid /CCITTFaxDecode data, \"outputBits\" must be a number.'\n          );\n        }\n\n        if (this.outputBits > bits) {\n          c <<= bits;\n          if (!(this.codingPos & 1)) {\n            c |= 0xff >> (8 - bits);\n          }\n          this.outputBits -= bits;\n          bits = 0;\n        } else {\n          c <<= this.outputBits;\n          if (!(this.codingPos & 1)) {\n            c |= 0xff >> (8 - this.outputBits);\n          }\n          bits -= this.outputBits;\n          this.outputBits = 0;\n          if (codingLine[this.codingPos] < columns) {\n            this.codingPos++;\n            this.outputBits =\n              codingLine[this.codingPos] - codingLine[this.codingPos - 1];\n          } else if (bits > 0) {\n            c <<= bits;\n            bits = 0;\n          }\n        }\n      } while (bits);\n    }\n    if (this.black) {\n      c ^= 0xff;\n    }\n    return c;\n  }\n\n  /**\n   * @private\n   */\n  _addPixels(a1, blackPixels) {\n    const codingLine = this.codingLine;\n    let codingPos = this.codingPos;\n\n    if (a1 > codingLine[codingPos]) {\n      if (a1 > this.columns) {\n        info(\"row is wrong length\");\n        this.err = true;\n        a1 = this.columns;\n      }\n      if ((codingPos & 1) ^ blackPixels) {\n        ++codingPos;\n      }\n\n      codingLine[codingPos] = a1;\n    }\n    this.codingPos = codingPos;\n  }\n\n  /**\n   * @private\n   */\n  _addPixelsNeg(a1, blackPixels) {\n    const codingLine = this.codingLine;\n    let codingPos = this.codingPos;\n\n    if (a1 > codingLine[codingPos]) {\n      if (a1 > this.columns) {\n        info(\"row is wrong length\");\n        this.err = true;\n        a1 = this.columns;\n      }\n      if ((codingPos & 1) ^ blackPixels) {\n        ++codingPos;\n      }\n\n      codingLine[codingPos] = a1;\n    } else if (a1 < codingLine[codingPos]) {\n      if (a1 < 0) {\n        info(\"invalid code\");\n        this.err = true;\n        a1 = 0;\n      }\n      while (codingPos > 0 && a1 < codingLine[codingPos - 1]) {\n        --codingPos;\n      }\n      codingLine[codingPos] = a1;\n    }\n\n    this.codingPos = codingPos;\n  }\n\n  /**\n   * This function returns the code found from the table.\n   * The start and end parameters set the boundaries for searching the table.\n   * The limit parameter is optional. Function returns an array with three\n   * values. The first array element indicates whether a valid code is being\n   * returned. The second array element is the actual code. The third array\n   * element indicates whether EOF was reached.\n   * @private\n   */\n  _findTableCode(start, end, table, limit) {\n    const limitValue = limit || 0;\n    for (let i = start; i <= end; ++i) {\n      let code = this._lookBits(i);\n      if (code === ccittEOF) {\n        return [true, 1, false];\n      }\n      if (i < end) {\n        code <<= end - i;\n      }\n      if (!limitValue || code >= limitValue) {\n        const p = table[code - limitValue];\n        if (p[0] === i) {\n          this._eatBits(i);\n          return [true, p[1], true];\n        }\n      }\n    }\n    return [false, 0, false];\n  }\n\n  /**\n   * @private\n   */\n  _getTwoDimCode() {\n    let code = 0;\n    let p;\n    if (this.eoblock) {\n      code = this._lookBits(7);\n      p = twoDimTable[code];\n      if (p && p[0] > 0) {\n        this._eatBits(p[0]);\n        return p[1];\n      }\n    } else {\n      const result = this._findTableCode(1, 7, twoDimTable);\n      if (result[0] && result[2]) {\n        return result[1];\n      }\n    }\n    info(\"Bad two dim code\");\n    return ccittEOF;\n  }\n\n  /**\n   * @private\n   */\n  _getWhiteCode() {\n    let code = 0;\n    let p;\n    if (this.eoblock) {\n      code = this._lookBits(12);\n      if (code === ccittEOF) {\n        return 1;\n      }\n\n      if (code >> 5 === 0) {\n        p = whiteTable1[code];\n      } else {\n        p = whiteTable2[code >> 3];\n      }\n\n      if (p[0] > 0) {\n        this._eatBits(p[0]);\n        return p[1];\n      }\n    } else {\n      let result = this._findTableCode(1, 9, whiteTable2);\n      if (result[0]) {\n        return result[1];\n      }\n\n      result = this._findTableCode(11, 12, whiteTable1);\n      if (result[0]) {\n        return result[1];\n      }\n    }\n    info(\"bad white code\");\n    this._eatBits(1);\n    return 1;\n  }\n\n  /**\n   * @private\n   */\n  _getBlackCode() {\n    let code, p;\n    if (this.eoblock) {\n      code = this._lookBits(13);\n      if (code === ccittEOF) {\n        return 1;\n      }\n      if (code >> 7 === 0) {\n        p = blackTable1[code];\n      } else if (code >> 9 === 0 && code >> 7 !== 0) {\n        p = blackTable2[(code >> 1) - 64];\n      } else {\n        p = blackTable3[code >> 7];\n      }\n\n      if (p[0] > 0) {\n        this._eatBits(p[0]);\n        return p[1];\n      }\n    } else {\n      let result = this._findTableCode(2, 6, blackTable3);\n      if (result[0]) {\n        return result[1];\n      }\n\n      result = this._findTableCode(7, 12, blackTable2, 64);\n      if (result[0]) {\n        return result[1];\n      }\n\n      result = this._findTableCode(10, 13, blackTable1);\n      if (result[0]) {\n        return result[1];\n      }\n    }\n    info(\"bad black code\");\n    this._eatBits(1);\n    return 1;\n  }\n\n  /**\n   * @private\n   */\n  _lookBits(n) {\n    let c;\n    while (this.inputBits < n) {\n      if ((c = this.source.next()) === -1) {\n        if (this.inputBits === 0) {\n          return ccittEOF;\n        }\n        return (this.inputBuf << (n - this.inputBits)) & (0xffff >> (16 - n));\n      }\n      this.inputBuf = (this.inputBuf << 8) | c;\n      this.inputBits += 8;\n    }\n    return (this.inputBuf >> (this.inputBits - n)) & (0xffff >> (16 - n));\n  }\n\n  /**\n   * @private\n   */\n  _eatBits(n) {\n    if ((this.inputBits -= n) < 0) {\n      this.inputBits = 0;\n    }\n  }\n}\n\nexport { CCITTFaxDecoder };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* Copyright 1996-2003 Glyph & Cog, LLC\n *\n * The flate stream implementation contained in this file is a JavaScript port\n * of XPDF's implementation, made available under the Apache 2.0 open source\n * license.\n */\n\nimport { DecodeStream } from \"./decode_stream.js\";\nimport { FormatError } from \"../shared/util.js\";\n\nconst codeLenCodeMap = new Int32Array([\n  16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15,\n]);\n\nconst lengthDecode = new Int32Array([\n  0x00003, 0x00004, 0x00005, 0x00006, 0x00007, 0x00008, 0x00009, 0x0000a,\n  0x1000b, 0x1000d, 0x1000f, 0x10011, 0x20013, 0x20017, 0x2001b, 0x2001f,\n  0x30023, 0x3002b, 0x30033, 0x3003b, 0x40043, 0x40053, 0x40063, 0x40073,\n  0x50083, 0x500a3, 0x500c3, 0x500e3, 0x00102, 0x00102, 0x00102,\n]);\n\nconst distDecode = new Int32Array([\n  0x00001, 0x00002, 0x00003, 0x00004, 0x10005, 0x10007, 0x20009, 0x2000d,\n  0x30011, 0x30019, 0x40021, 0x40031, 0x50041, 0x50061, 0x60081, 0x600c1,\n  0x70101, 0x70181, 0x80201, 0x80301, 0x90401, 0x90601, 0xa0801, 0xa0c01,\n  0xb1001, 0xb1801, 0xc2001, 0xc3001, 0xd4001, 0xd6001,\n]);\n\nconst fixedLitCodeTab = [\n  new Int32Array([\n    0x70100, 0x80050, 0x80010, 0x80118, 0x70110, 0x80070, 0x80030, 0x900c0,\n    0x70108, 0x80060, 0x80020, 0x900a0, 0x80000, 0x80080, 0x80040, 0x900e0,\n    0x70104, 0x80058, 0x80018, 0x90090, 0x70114, 0x80078, 0x80038, 0x900d0,\n    0x7010c, 0x80068, 0x80028, 0x900b0, 0x80008, 0x80088, 0x80048, 0x900f0,\n    0x70102, 0x80054, 0x80014, 0x8011c, 0x70112, 0x80074, 0x80034, 0x900c8,\n    0x7010a, 0x80064, 0x80024, 0x900a8, 0x80004, 0x80084, 0x80044, 0x900e8,\n    0x70106, 0x8005c, 0x8001c, 0x90098, 0x70116, 0x8007c, 0x8003c, 0x900d8,\n    0x7010e, 0x8006c, 0x8002c, 0x900b8, 0x8000c, 0x8008c, 0x8004c, 0x900f8,\n    0x70101, 0x80052, 0x80012, 0x8011a, 0x70111, 0x80072, 0x80032, 0x900c4,\n    0x70109, 0x80062, 0x80022, 0x900a4, 0x80002, 0x80082, 0x80042, 0x900e4,\n    0x70105, 0x8005a, 0x8001a, 0x90094, 0x70115, 0x8007a, 0x8003a, 0x900d4,\n    0x7010d, 0x8006a, 0x8002a, 0x900b4, 0x8000a, 0x8008a, 0x8004a, 0x900f4,\n    0x70103, 0x80056, 0x80016, 0x8011e, 0x70113, 0x80076, 0x80036, 0x900cc,\n    0x7010b, 0x80066, 0x80026, 0x900ac, 0x80006, 0x80086, 0x80046, 0x900ec,\n    0x70107, 0x8005e, 0x8001e, 0x9009c, 0x70117, 0x8007e, 0x8003e, 0x900dc,\n    0x7010f, 0x8006e, 0x8002e, 0x900bc, 0x8000e, 0x8008e, 0x8004e, 0x900fc,\n    0x70100, 0x80051, 0x80011, 0x80119, 0x70110, 0x80071, 0x80031, 0x900c2,\n    0x70108, 0x80061, 0x80021, 0x900a2, 0x80001, 0x80081, 0x80041, 0x900e2,\n    0x70104, 0x80059, 0x80019, 0x90092, 0x70114, 0x80079, 0x80039, 0x900d2,\n    0x7010c, 0x80069, 0x80029, 0x900b2, 0x80009, 0x80089, 0x80049, 0x900f2,\n    0x70102, 0x80055, 0x80015, 0x8011d, 0x70112, 0x80075, 0x80035, 0x900ca,\n    0x7010a, 0x80065, 0x80025, 0x900aa, 0x80005, 0x80085, 0x80045, 0x900ea,\n    0x70106, 0x8005d, 0x8001d, 0x9009a, 0x70116, 0x8007d, 0x8003d, 0x900da,\n    0x7010e, 0x8006d, 0x8002d, 0x900ba, 0x8000d, 0x8008d, 0x8004d, 0x900fa,\n    0x70101, 0x80053, 0x80013, 0x8011b, 0x70111, 0x80073, 0x80033, 0x900c6,\n    0x70109, 0x80063, 0x80023, 0x900a6, 0x80003, 0x80083, 0x80043, 0x900e6,\n    0x70105, 0x8005b, 0x8001b, 0x90096, 0x70115, 0x8007b, 0x8003b, 0x900d6,\n    0x7010d, 0x8006b, 0x8002b, 0x900b6, 0x8000b, 0x8008b, 0x8004b, 0x900f6,\n    0x70103, 0x80057, 0x80017, 0x8011f, 0x70113, 0x80077, 0x80037, 0x900ce,\n    0x7010b, 0x80067, 0x80027, 0x900ae, 0x80007, 0x80087, 0x80047, 0x900ee,\n    0x70107, 0x8005f, 0x8001f, 0x9009e, 0x70117, 0x8007f, 0x8003f, 0x900de,\n    0x7010f, 0x8006f, 0x8002f, 0x900be, 0x8000f, 0x8008f, 0x8004f, 0x900fe,\n    0x70100, 0x80050, 0x80010, 0x80118, 0x70110, 0x80070, 0x80030, 0x900c1,\n    0x70108, 0x80060, 0x80020, 0x900a1, 0x80000, 0x80080, 0x80040, 0x900e1,\n    0x70104, 0x80058, 0x80018, 0x90091, 0x70114, 0x80078, 0x80038, 0x900d1,\n    0x7010c, 0x80068, 0x80028, 0x900b1, 0x80008, 0x80088, 0x80048, 0x900f1,\n    0x70102, 0x80054, 0x80014, 0x8011c, 0x70112, 0x80074, 0x80034, 0x900c9,\n    0x7010a, 0x80064, 0x80024, 0x900a9, 0x80004, 0x80084, 0x80044, 0x900e9,\n    0x70106, 0x8005c, 0x8001c, 0x90099, 0x70116, 0x8007c, 0x8003c, 0x900d9,\n    0x7010e, 0x8006c, 0x8002c, 0x900b9, 0x8000c, 0x8008c, 0x8004c, 0x900f9,\n    0x70101, 0x80052, 0x80012, 0x8011a, 0x70111, 0x80072, 0x80032, 0x900c5,\n    0x70109, 0x80062, 0x80022, 0x900a5, 0x80002, 0x80082, 0x80042, 0x900e5,\n    0x70105, 0x8005a, 0x8001a, 0x90095, 0x70115, 0x8007a, 0x8003a, 0x900d5,\n    0x7010d, 0x8006a, 0x8002a, 0x900b5, 0x8000a, 0x8008a, 0x8004a, 0x900f5,\n    0x70103, 0x80056, 0x80016, 0x8011e, 0x70113, 0x80076, 0x80036, 0x900cd,\n    0x7010b, 0x80066, 0x80026, 0x900ad, 0x80006, 0x80086, 0x80046, 0x900ed,\n    0x70107, 0x8005e, 0x8001e, 0x9009d, 0x70117, 0x8007e, 0x8003e, 0x900dd,\n    0x7010f, 0x8006e, 0x8002e, 0x900bd, 0x8000e, 0x8008e, 0x8004e, 0x900fd,\n    0x70100, 0x80051, 0x80011, 0x80119, 0x70110, 0x80071, 0x80031, 0x900c3,\n    0x70108, 0x80061, 0x80021, 0x900a3, 0x80001, 0x80081, 0x80041, 0x900e3,\n    0x70104, 0x80059, 0x80019, 0x90093, 0x70114, 0x80079, 0x80039, 0x900d3,\n    0x7010c, 0x80069, 0x80029, 0x900b3, 0x80009, 0x80089, 0x80049, 0x900f3,\n    0x70102, 0x80055, 0x80015, 0x8011d, 0x70112, 0x80075, 0x80035, 0x900cb,\n    0x7010a, 0x80065, 0x80025, 0x900ab, 0x80005, 0x80085, 0x80045, 0x900eb,\n    0x70106, 0x8005d, 0x8001d, 0x9009b, 0x70116, 0x8007d, 0x8003d, 0x900db,\n    0x7010e, 0x8006d, 0x8002d, 0x900bb, 0x8000d, 0x8008d, 0x8004d, 0x900fb,\n    0x70101, 0x80053, 0x80013, 0x8011b, 0x70111, 0x80073, 0x80033, 0x900c7,\n    0x70109, 0x80063, 0x80023, 0x900a7, 0x80003, 0x80083, 0x80043, 0x900e7,\n    0x70105, 0x8005b, 0x8001b, 0x90097, 0x70115, 0x8007b, 0x8003b, 0x900d7,\n    0x7010d, 0x8006b, 0x8002b, 0x900b7, 0x8000b, 0x8008b, 0x8004b, 0x900f7,\n    0x70103, 0x80057, 0x80017, 0x8011f, 0x70113, 0x80077, 0x80037, 0x900cf,\n    0x7010b, 0x80067, 0x80027, 0x900af, 0x80007, 0x80087, 0x80047, 0x900ef,\n    0x70107, 0x8005f, 0x8001f, 0x9009f, 0x70117, 0x8007f, 0x8003f, 0x900df,\n    0x7010f, 0x8006f, 0x8002f, 0x900bf, 0x8000f, 0x8008f, 0x8004f, 0x900ff,\n  ]),\n  9,\n];\n\nconst fixedDistCodeTab = [\n  new Int32Array([\n    0x50000, 0x50010, 0x50008, 0x50018, 0x50004, 0x50014, 0x5000c, 0x5001c,\n    0x50002, 0x50012, 0x5000a, 0x5001a, 0x50006, 0x50016, 0x5000e, 0x00000,\n    0x50001, 0x50011, 0x50009, 0x50019, 0x50005, 0x50015, 0x5000d, 0x5001d,\n    0x50003, 0x50013, 0x5000b, 0x5001b, 0x50007, 0x50017, 0x5000f, 0x00000,\n  ]),\n  5,\n];\n\nclass FlateStream extends DecodeStream {\n  constructor(str, maybeLength) {\n    super(maybeLength);\n\n    this.str = str;\n    this.dict = str.dict;\n\n    const cmf = str.getByte();\n    const flg = str.getByte();\n    if (cmf === -1 || flg === -1) {\n      throw new FormatError(`Invalid header in flate stream: ${cmf}, ${flg}`);\n    }\n    if ((cmf & 0x0f) !== 0x08) {\n      throw new FormatError(\n        `Unknown compression method in flate stream: ${cmf}, ${flg}`\n      );\n    }\n    if (((cmf << 8) + flg) % 31 !== 0) {\n      throw new FormatError(`Bad FCHECK in flate stream: ${cmf}, ${flg}`);\n    }\n    if (flg & 0x20) {\n      throw new FormatError(`FDICT bit set in flate stream: ${cmf}, ${flg}`);\n    }\n\n    this.codeSize = 0;\n    this.codeBuf = 0;\n  }\n\n  getBits(bits) {\n    const str = this.str;\n    let codeSize = this.codeSize;\n    let codeBuf = this.codeBuf;\n\n    let b;\n    while (codeSize < bits) {\n      if ((b = str.getByte()) === -1) {\n        throw new FormatError(\"Bad encoding in flate stream\");\n      }\n      codeBuf |= b << codeSize;\n      codeSize += 8;\n    }\n    b = codeBuf & ((1 << bits) - 1);\n    this.codeBuf = codeBuf >> bits;\n    this.codeSize = codeSize -= bits;\n\n    return b;\n  }\n\n  getCode(table) {\n    const str = this.str;\n    const codes = table[0];\n    const maxLen = table[1];\n    let codeSize = this.codeSize;\n    let codeBuf = this.codeBuf;\n\n    let b;\n    while (codeSize < maxLen) {\n      if ((b = str.getByte()) === -1) {\n        // premature end of stream. code might however still be valid.\n        // codeSize < codeLen check below guards against incomplete codeVal.\n        break;\n      }\n      codeBuf |= b << codeSize;\n      codeSize += 8;\n    }\n    const code = codes[codeBuf & ((1 << maxLen) - 1)];\n    const codeLen = code >> 16;\n    const codeVal = code & 0xffff;\n    if (codeLen < 1 || codeSize < codeLen) {\n      throw new FormatError(\"Bad encoding in flate stream\");\n    }\n    this.codeBuf = codeBuf >> codeLen;\n    this.codeSize = codeSize - codeLen;\n    return codeVal;\n  }\n\n  generateHuffmanTable(lengths) {\n    const n = lengths.length;\n\n    // find max code length\n    let maxLen = 0;\n    let i;\n    for (i = 0; i < n; ++i) {\n      if (lengths[i] > maxLen) {\n        maxLen = lengths[i];\n      }\n    }\n\n    // build the table\n    const size = 1 << maxLen;\n    const codes = new Int32Array(size);\n    for (\n      let len = 1, code = 0, skip = 2;\n      len <= maxLen;\n      ++len, code <<= 1, skip <<= 1\n    ) {\n      for (let val = 0; val < n; ++val) {\n        if (lengths[val] === len) {\n          // bit-reverse the code\n          let code2 = 0;\n          let t = code;\n          for (i = 0; i < len; ++i) {\n            code2 = (code2 << 1) | (t & 1);\n            t >>= 1;\n          }\n\n          // fill the table entries\n          for (i = code2; i < size; i += skip) {\n            codes[i] = (len << 16) | val;\n          }\n          ++code;\n        }\n      }\n    }\n\n    return [codes, maxLen];\n  }\n\n  readBlock() {\n    let buffer, len;\n    const str = this.str;\n    // read block header\n    let hdr = this.getBits(3);\n    if (hdr & 1) {\n      this.eof = true;\n    }\n    hdr >>= 1;\n\n    if (hdr === 0) {\n      // uncompressed block\n      let b;\n\n      if ((b = str.getByte()) === -1) {\n        throw new FormatError(\"Bad block header in flate stream\");\n      }\n      let blockLen = b;\n      if ((b = str.getByte()) === -1) {\n        throw new FormatError(\"Bad block header in flate stream\");\n      }\n      blockLen |= b << 8;\n      if ((b = str.getByte()) === -1) {\n        throw new FormatError(\"Bad block header in flate stream\");\n      }\n      let check = b;\n      if ((b = str.getByte()) === -1) {\n        throw new FormatError(\"Bad block header in flate stream\");\n      }\n      check |= b << 8;\n      if (check !== (~blockLen & 0xffff) && (blockLen !== 0 || check !== 0)) {\n        // Ignoring error for bad \"empty\" block (see issue 1277)\n        throw new FormatError(\"Bad uncompressed block length in flate stream\");\n      }\n\n      this.codeBuf = 0;\n      this.codeSize = 0;\n\n      const bufferLength = this.bufferLength,\n        end = bufferLength + blockLen;\n      buffer = this.ensureBuffer(end);\n      this.bufferLength = end;\n\n      if (blockLen === 0) {\n        if (str.peekByte() === -1) {\n          this.eof = true;\n        }\n      } else {\n        const block = str.getBytes(blockLen);\n        buffer.set(block, bufferLength);\n        if (block.length < blockLen) {\n          this.eof = true;\n        }\n      }\n      return;\n    }\n\n    let litCodeTable;\n    let distCodeTable;\n    if (hdr === 1) {\n      // compressed block, fixed codes\n      litCodeTable = fixedLitCodeTab;\n      distCodeTable = fixedDistCodeTab;\n    } else if (hdr === 2) {\n      // compressed block, dynamic codes\n      const numLitCodes = this.getBits(5) + 257;\n      const numDistCodes = this.getBits(5) + 1;\n      const numCodeLenCodes = this.getBits(4) + 4;\n\n      // build the code lengths code table\n      const codeLenCodeLengths = new Uint8Array(codeLenCodeMap.length);\n\n      let i;\n      for (i = 0; i < numCodeLenCodes; ++i) {\n        codeLenCodeLengths[codeLenCodeMap[i]] = this.getBits(3);\n      }\n      const codeLenCodeTab = this.generateHuffmanTable(codeLenCodeLengths);\n\n      // build the literal and distance code tables\n      len = 0;\n      i = 0;\n      const codes = numLitCodes + numDistCodes;\n      const codeLengths = new Uint8Array(codes);\n      let bitsLength, bitsOffset, what;\n      while (i < codes) {\n        const code = this.getCode(codeLenCodeTab);\n        if (code === 16) {\n          bitsLength = 2;\n          bitsOffset = 3;\n          what = len;\n        } else if (code === 17) {\n          bitsLength = 3;\n          bitsOffset = 3;\n          what = len = 0;\n        } else if (code === 18) {\n          bitsLength = 7;\n          bitsOffset = 11;\n          what = len = 0;\n        } else {\n          codeLengths[i++] = len = code;\n          continue;\n        }\n\n        let repeatLength = this.getBits(bitsLength) + bitsOffset;\n        while (repeatLength-- > 0) {\n          codeLengths[i++] = what;\n        }\n      }\n\n      litCodeTable = this.generateHuffmanTable(\n        codeLengths.subarray(0, numLitCodes)\n      );\n      distCodeTable = this.generateHuffmanTable(\n        codeLengths.subarray(numLitCodes, codes)\n      );\n    } else {\n      throw new FormatError(\"Unknown block type in flate stream\");\n    }\n\n    buffer = this.buffer;\n    let limit = buffer ? buffer.length : 0;\n    let pos = this.bufferLength;\n    while (true) {\n      let code1 = this.getCode(litCodeTable);\n      if (code1 < 256) {\n        if (pos + 1 >= limit) {\n          buffer = this.ensureBuffer(pos + 1);\n          limit = buffer.length;\n        }\n        buffer[pos++] = code1;\n        continue;\n      }\n      if (code1 === 256) {\n        this.bufferLength = pos;\n        return;\n      }\n      code1 -= 257;\n      code1 = lengthDecode[code1];\n      let code2 = code1 >> 16;\n      if (code2 > 0) {\n        code2 = this.getBits(code2);\n      }\n      len = (code1 & 0xffff) + code2;\n      code1 = this.getCode(distCodeTable);\n      code1 = distDecode[code1];\n      code2 = code1 >> 16;\n      if (code2 > 0) {\n        code2 = this.getBits(code2);\n      }\n      const dist = (code1 & 0xffff) + code2;\n      if (pos + len >= limit) {\n        buffer = this.ensureBuffer(pos + len);\n        limit = buffer.length;\n      }\n      for (let k = 0; k < len; ++k, ++pos) {\n        buffer[pos] = buffer[pos - dist];\n      }\n    }\n  }\n}\n\nexport { FlateStream };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { isDict, isStream } from \"./primitives.js\";\nimport { DecodeStream } from \"./decode_stream.js\";\nimport { Jbig2Image } from \"./jbig2.js\";\nimport { shadow } from \"../shared/util.js\";\n\n/**\n * For JBIG2's we use a library to decode these images and\n * the stream behaves like all the other DecodeStreams.\n */\nclass Jbig2Stream extends DecodeStream {\n  constructor(stream, maybeLength, params) {\n    super(maybeLength);\n\n    this.stream = stream;\n    this.dict = stream.dict;\n    this.maybeLength = maybeLength;\n    this.params = params;\n  }\n\n  get bytes() {\n    // If `this.maybeLength` is null, we'll get the entire stream.\n    return shadow(this, \"bytes\", this.stream.getBytes(this.maybeLength));\n  }\n\n  ensureBuffer(requested) {\n    // No-op, since `this.readBlock` will always parse the entire image and\n    // directly insert all of its data into `this.buffer`.\n  }\n\n  readBlock() {\n    if (this.eof) {\n      return;\n    }\n    const jbig2Image = new Jbig2Image();\n\n    const chunks = [];\n    if (isDict(this.params)) {\n      const globalsStream = this.params.get(\"JBIG2Globals\");\n      if (isStream(globalsStream)) {\n        const globals = globalsStream.getBytes();\n        chunks.push({ data: globals, start: 0, end: globals.length });\n      }\n    }\n    chunks.push({ data: this.bytes, start: 0, end: this.bytes.length });\n    const data = jbig2Image.parseChunks(chunks);\n    const dataLength = data.length;\n\n    // JBIG2 had black as 1 and white as 0, inverting the colors\n    for (let i = 0; i < dataLength; i++) {\n      data[i] ^= 0xff;\n    }\n    this.buffer = data;\n    this.bufferLength = dataLength;\n    this.eof = true;\n  }\n}\n\nexport { Jbig2Stream };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { BaseException, shadow } from \"../shared/util.js\";\nimport { log2, readInt8, readUint16, readUint32 } from \"./core_utils.js\";\nimport { ArithmeticDecoder } from \"./arithmetic_decoder.js\";\nimport { CCITTFaxDecoder } from \"./ccitt.js\";\n\nclass Jbig2Error extends BaseException {\n  constructor(msg) {\n    super(`JBIG2 error: ${msg}`, \"Jbig2Error\");\n  }\n}\n\n// Utility data structures\nclass ContextCache {\n  getContexts(id) {\n    if (id in this) {\n      return this[id];\n    }\n    return (this[id] = new Int8Array(1 << 16));\n  }\n}\n\nclass DecodingContext {\n  constructor(data, start, end) {\n    this.data = data;\n    this.start = start;\n    this.end = end;\n  }\n\n  get decoder() {\n    const decoder = new ArithmeticDecoder(this.data, this.start, this.end);\n    return shadow(this, \"decoder\", decoder);\n  }\n\n  get contextCache() {\n    const cache = new ContextCache();\n    return shadow(this, \"contextCache\", cache);\n  }\n}\n\n// Annex A. Arithmetic Integer Decoding Procedure\n// A.2 Procedure for decoding values\nfunction decodeInteger(contextCache, procedure, decoder) {\n  const contexts = contextCache.getContexts(procedure);\n  let prev = 1;\n\n  function readBits(length) {\n    let v = 0;\n    for (let i = 0; i < length; i++) {\n      const bit = decoder.readBit(contexts, prev);\n      prev = prev < 256 ? (prev << 1) | bit : (((prev << 1) | bit) & 511) | 256;\n      v = (v << 1) | bit;\n    }\n    return v >>> 0;\n  }\n\n  const sign = readBits(1);\n  // prettier-ignore\n  /* eslint-disable no-nested-ternary */\n  const value = readBits(1) ?\n                  (readBits(1) ?\n                    (readBits(1) ?\n                      (readBits(1) ?\n                        (readBits(1) ?\n                          (readBits(32) + 4436) :\n                        readBits(12) + 340) :\n                      readBits(8) + 84) :\n                    readBits(6) + 20) :\n                  readBits(4) + 4) :\n                readBits(2);\n  /* eslint-enable no-nested-ternary */\n  if (sign === 0) {\n    return value;\n  } else if (value > 0) {\n    return -value;\n  }\n  return null;\n}\n\n// A.3 The IAID decoding procedure\nfunction decodeIAID(contextCache, decoder, codeLength) {\n  const contexts = contextCache.getContexts(\"IAID\");\n\n  let prev = 1;\n  for (let i = 0; i < codeLength; i++) {\n    const bit = decoder.readBit(contexts, prev);\n    prev = (prev << 1) | bit;\n  }\n  if (codeLength < 31) {\n    return prev & ((1 << codeLength) - 1);\n  }\n  return prev & 0x7fffffff;\n}\n\n// 7.3 Segment types\nconst SegmentTypes = [\n  \"SymbolDictionary\",\n  null,\n  null,\n  null,\n  \"IntermediateTextRegion\",\n  null,\n  \"ImmediateTextRegion\",\n  \"ImmediateLosslessTextRegion\",\n  null,\n  null,\n  null,\n  null,\n  null,\n  null,\n  null,\n  null,\n  \"PatternDictionary\",\n  null,\n  null,\n  null,\n  \"IntermediateHalftoneRegion\",\n  null,\n  \"ImmediateHalftoneRegion\",\n  \"ImmediateLosslessHalftoneRegion\",\n  null,\n  null,\n  null,\n  null,\n  null,\n  null,\n  null,\n  null,\n  null,\n  null,\n  null,\n  null,\n  \"IntermediateGenericRegion\",\n  null,\n  \"ImmediateGenericRegion\",\n  \"ImmediateLosslessGenericRegion\",\n  \"IntermediateGenericRefinementRegion\",\n  null,\n  \"ImmediateGenericRefinementRegion\",\n  \"ImmediateLosslessGenericRefinementRegion\",\n  null,\n  null,\n  null,\n  null,\n  \"PageInformation\",\n  \"EndOfPage\",\n  \"EndOfStripe\",\n  \"EndOfFile\",\n  \"Profiles\",\n  \"Tables\",\n  null,\n  null,\n  null,\n  null,\n  null,\n  null,\n  null,\n  null,\n  \"Extension\",\n];\n\nconst CodingTemplates = [\n  [\n    { x: -1, y: -2 },\n    { x: 0, y: -2 },\n    { x: 1, y: -2 },\n    { x: -2, y: -1 },\n    { x: -1, y: -1 },\n    { x: 0, y: -1 },\n    { x: 1, y: -1 },\n    { x: 2, y: -1 },\n    { x: -4, y: 0 },\n    { x: -3, y: 0 },\n    { x: -2, y: 0 },\n    { x: -1, y: 0 },\n  ],\n  [\n    { x: -1, y: -2 },\n    { x: 0, y: -2 },\n    { x: 1, y: -2 },\n    { x: 2, y: -2 },\n    { x: -2, y: -1 },\n    { x: -1, y: -1 },\n    { x: 0, y: -1 },\n    { x: 1, y: -1 },\n    { x: 2, y: -1 },\n    { x: -3, y: 0 },\n    { x: -2, y: 0 },\n    { x: -1, y: 0 },\n  ],\n  [\n    { x: -1, y: -2 },\n    { x: 0, y: -2 },\n    { x: 1, y: -2 },\n    { x: -2, y: -1 },\n    { x: -1, y: -1 },\n    { x: 0, y: -1 },\n    { x: 1, y: -1 },\n    { x: -2, y: 0 },\n    { x: -1, y: 0 },\n  ],\n  [\n    { x: -3, y: -1 },\n    { x: -2, y: -1 },\n    { x: -1, y: -1 },\n    { x: 0, y: -1 },\n    { x: 1, y: -1 },\n    { x: -4, y: 0 },\n    { x: -3, y: 0 },\n    { x: -2, y: 0 },\n    { x: -1, y: 0 },\n  ],\n];\n\nconst RefinementTemplates = [\n  {\n    coding: [\n      { x: 0, y: -1 },\n      { x: 1, y: -1 },\n      { x: -1, y: 0 },\n    ],\n    reference: [\n      { x: 0, y: -1 },\n      { x: 1, y: -1 },\n      { x: -1, y: 0 },\n      { x: 0, y: 0 },\n      { x: 1, y: 0 },\n      { x: -1, y: 1 },\n      { x: 0, y: 1 },\n      { x: 1, y: 1 },\n    ],\n  },\n  {\n    coding: [\n      { x: -1, y: -1 },\n      { x: 0, y: -1 },\n      { x: 1, y: -1 },\n      { x: -1, y: 0 },\n    ],\n    reference: [\n      { x: 0, y: -1 },\n      { x: -1, y: 0 },\n      { x: 0, y: 0 },\n      { x: 1, y: 0 },\n      { x: 0, y: 1 },\n      { x: 1, y: 1 },\n    ],\n  },\n];\n\n// See 6.2.5.7 Decoding the bitmap.\nconst ReusedContexts = [\n  0x9b25, // 10011 0110010 0101\n  0x0795, // 0011 110010 101\n  0x00e5, // 001 11001 01\n  0x0195, // 011001 0101\n];\n\nconst RefinementReusedContexts = [\n  0x0020, // '000' + '0' (coding) + '00010000' + '0' (reference)\n  0x0008, // '0000' + '001000'\n];\n\nfunction decodeBitmapTemplate0(width, height, decodingContext) {\n  const decoder = decodingContext.decoder;\n  const contexts = decodingContext.contextCache.getContexts(\"GB\");\n  const bitmap = [];\n  let contextLabel, i, j, pixel, row, row1, row2;\n\n  // ...ooooo....\n  // ..ooooooo... Context template for current pixel (X)\n  // .ooooX...... (concatenate values of 'o'-pixels to get contextLabel)\n  const OLD_PIXEL_MASK = 0x7bf7; // 01111 0111111 0111\n\n  for (i = 0; i < height; i++) {\n    row = bitmap[i] = new Uint8Array(width);\n    row1 = i < 1 ? row : bitmap[i - 1];\n    row2 = i < 2 ? row : bitmap[i - 2];\n\n    // At the beginning of each row:\n    // Fill contextLabel with pixels that are above/right of (X)\n    contextLabel =\n      (row2[0] << 13) |\n      (row2[1] << 12) |\n      (row2[2] << 11) |\n      (row1[0] << 7) |\n      (row1[1] << 6) |\n      (row1[2] << 5) |\n      (row1[3] << 4);\n\n    for (j = 0; j < width; j++) {\n      row[j] = pixel = decoder.readBit(contexts, contextLabel);\n\n      // At each pixel: Clear contextLabel pixels that are shifted\n      // out of the context, then add new ones.\n      contextLabel =\n        ((contextLabel & OLD_PIXEL_MASK) << 1) |\n        (j + 3 < width ? row2[j + 3] << 11 : 0) |\n        (j + 4 < width ? row1[j + 4] << 4 : 0) |\n        pixel;\n    }\n  }\n\n  return bitmap;\n}\n\n// 6.2 Generic Region Decoding Procedure\nfunction decodeBitmap(\n  mmr,\n  width,\n  height,\n  templateIndex,\n  prediction,\n  skip,\n  at,\n  decodingContext\n) {\n  if (mmr) {\n    const input = new Reader(\n      decodingContext.data,\n      decodingContext.start,\n      decodingContext.end\n    );\n    return decodeMMRBitmap(input, width, height, false);\n  }\n\n  // Use optimized version for the most common case\n  if (\n    templateIndex === 0 &&\n    !skip &&\n    !prediction &&\n    at.length === 4 &&\n    at[0].x === 3 &&\n    at[0].y === -1 &&\n    at[1].x === -3 &&\n    at[1].y === -1 &&\n    at[2].x === 2 &&\n    at[2].y === -2 &&\n    at[3].x === -2 &&\n    at[3].y === -2\n  ) {\n    return decodeBitmapTemplate0(width, height, decodingContext);\n  }\n\n  const useskip = !!skip;\n  const template = CodingTemplates[templateIndex].concat(at);\n\n  // Sorting is non-standard, and it is not required. But sorting increases\n  // the number of template bits that can be reused from the previous\n  // contextLabel in the main loop.\n  template.sort(function (a, b) {\n    return a.y - b.y || a.x - b.x;\n  });\n\n  const templateLength = template.length;\n  const templateX = new Int8Array(templateLength);\n  const templateY = new Int8Array(templateLength);\n  const changingTemplateEntries = [];\n  let reuseMask = 0,\n    minX = 0,\n    maxX = 0,\n    minY = 0;\n  let c, k;\n\n  for (k = 0; k < templateLength; k++) {\n    templateX[k] = template[k].x;\n    templateY[k] = template[k].y;\n    minX = Math.min(minX, template[k].x);\n    maxX = Math.max(maxX, template[k].x);\n    minY = Math.min(minY, template[k].y);\n    // Check if the template pixel appears in two consecutive context labels,\n    // so it can be reused. Otherwise, we add it to the list of changing\n    // template entries.\n    if (\n      k < templateLength - 1 &&\n      template[k].y === template[k + 1].y &&\n      template[k].x === template[k + 1].x - 1\n    ) {\n      reuseMask |= 1 << (templateLength - 1 - k);\n    } else {\n      changingTemplateEntries.push(k);\n    }\n  }\n  const changingEntriesLength = changingTemplateEntries.length;\n\n  const changingTemplateX = new Int8Array(changingEntriesLength);\n  const changingTemplateY = new Int8Array(changingEntriesLength);\n  const changingTemplateBit = new Uint16Array(changingEntriesLength);\n  for (c = 0; c < changingEntriesLength; c++) {\n    k = changingTemplateEntries[c];\n    changingTemplateX[c] = template[k].x;\n    changingTemplateY[c] = template[k].y;\n    changingTemplateBit[c] = 1 << (templateLength - 1 - k);\n  }\n\n  // Get the safe bounding box edges from the width, height, minX, maxX, minY\n  const sbb_left = -minX;\n  const sbb_top = -minY;\n  const sbb_right = width - maxX;\n\n  const pseudoPixelContext = ReusedContexts[templateIndex];\n  let row = new Uint8Array(width);\n  const bitmap = [];\n\n  const decoder = decodingContext.decoder;\n  const contexts = decodingContext.contextCache.getContexts(\"GB\");\n\n  let ltp = 0,\n    j,\n    i0,\n    j0,\n    contextLabel = 0,\n    bit,\n    shift;\n  for (let i = 0; i < height; i++) {\n    if (prediction) {\n      const sltp = decoder.readBit(contexts, pseudoPixelContext);\n      ltp ^= sltp;\n      if (ltp) {\n        bitmap.push(row); // duplicate previous row\n        continue;\n      }\n    }\n    row = new Uint8Array(row);\n    bitmap.push(row);\n    for (j = 0; j < width; j++) {\n      if (useskip && skip[i][j]) {\n        row[j] = 0;\n        continue;\n      }\n      // Are we in the middle of a scanline, so we can reuse contextLabel\n      // bits?\n      if (j >= sbb_left && j < sbb_right && i >= sbb_top) {\n        // If yes, we can just shift the bits that are reusable and only\n        // fetch the remaining ones.\n        contextLabel = (contextLabel << 1) & reuseMask;\n        for (k = 0; k < changingEntriesLength; k++) {\n          i0 = i + changingTemplateY[k];\n          j0 = j + changingTemplateX[k];\n          bit = bitmap[i0][j0];\n          if (bit) {\n            bit = changingTemplateBit[k];\n            contextLabel |= bit;\n          }\n        }\n      } else {\n        // compute the contextLabel from scratch\n        contextLabel = 0;\n        shift = templateLength - 1;\n        for (k = 0; k < templateLength; k++, shift--) {\n          j0 = j + templateX[k];\n          if (j0 >= 0 && j0 < width) {\n            i0 = i + templateY[k];\n            if (i0 >= 0) {\n              bit = bitmap[i0][j0];\n              if (bit) {\n                contextLabel |= bit << shift;\n              }\n            }\n          }\n        }\n      }\n      const pixel = decoder.readBit(contexts, contextLabel);\n      row[j] = pixel;\n    }\n  }\n  return bitmap;\n}\n\n// 6.3.2 Generic Refinement Region Decoding Procedure\nfunction decodeRefinement(\n  width,\n  height,\n  templateIndex,\n  referenceBitmap,\n  offsetX,\n  offsetY,\n  prediction,\n  at,\n  decodingContext\n) {\n  let codingTemplate = RefinementTemplates[templateIndex].coding;\n  if (templateIndex === 0) {\n    codingTemplate = codingTemplate.concat([at[0]]);\n  }\n  const codingTemplateLength = codingTemplate.length;\n  const codingTemplateX = new Int32Array(codingTemplateLength);\n  const codingTemplateY = new Int32Array(codingTemplateLength);\n  let k;\n  for (k = 0; k < codingTemplateLength; k++) {\n    codingTemplateX[k] = codingTemplate[k].x;\n    codingTemplateY[k] = codingTemplate[k].y;\n  }\n\n  let referenceTemplate = RefinementTemplates[templateIndex].reference;\n  if (templateIndex === 0) {\n    referenceTemplate = referenceTemplate.concat([at[1]]);\n  }\n  const referenceTemplateLength = referenceTemplate.length;\n  const referenceTemplateX = new Int32Array(referenceTemplateLength);\n  const referenceTemplateY = new Int32Array(referenceTemplateLength);\n  for (k = 0; k < referenceTemplateLength; k++) {\n    referenceTemplateX[k] = referenceTemplate[k].x;\n    referenceTemplateY[k] = referenceTemplate[k].y;\n  }\n  const referenceWidth = referenceBitmap[0].length;\n  const referenceHeight = referenceBitmap.length;\n\n  const pseudoPixelContext = RefinementReusedContexts[templateIndex];\n  const bitmap = [];\n\n  const decoder = decodingContext.decoder;\n  const contexts = decodingContext.contextCache.getContexts(\"GR\");\n\n  let ltp = 0;\n  for (let i = 0; i < height; i++) {\n    if (prediction) {\n      const sltp = decoder.readBit(contexts, pseudoPixelContext);\n      ltp ^= sltp;\n      if (ltp) {\n        throw new Jbig2Error(\"prediction is not supported\");\n      }\n    }\n    const row = new Uint8Array(width);\n    bitmap.push(row);\n    for (let j = 0; j < width; j++) {\n      let i0, j0;\n      let contextLabel = 0;\n      for (k = 0; k < codingTemplateLength; k++) {\n        i0 = i + codingTemplateY[k];\n        j0 = j + codingTemplateX[k];\n        if (i0 < 0 || j0 < 0 || j0 >= width) {\n          contextLabel <<= 1; // out of bound pixel\n        } else {\n          contextLabel = (contextLabel << 1) | bitmap[i0][j0];\n        }\n      }\n      for (k = 0; k < referenceTemplateLength; k++) {\n        i0 = i + referenceTemplateY[k] - offsetY;\n        j0 = j + referenceTemplateX[k] - offsetX;\n        if (i0 < 0 || i0 >= referenceHeight || j0 < 0 || j0 >= referenceWidth) {\n          contextLabel <<= 1; // out of bound pixel\n        } else {\n          contextLabel = (contextLabel << 1) | referenceBitmap[i0][j0];\n        }\n      }\n      const pixel = decoder.readBit(contexts, contextLabel);\n      row[j] = pixel;\n    }\n  }\n\n  return bitmap;\n}\n\n// 6.5.5 Decoding the symbol dictionary\nfunction decodeSymbolDictionary(\n  huffman,\n  refinement,\n  symbols,\n  numberOfNewSymbols,\n  numberOfExportedSymbols,\n  huffmanTables,\n  templateIndex,\n  at,\n  refinementTemplateIndex,\n  refinementAt,\n  decodingContext,\n  huffmanInput\n) {\n  if (huffman && refinement) {\n    throw new Jbig2Error(\"symbol refinement with Huffman is not supported\");\n  }\n\n  const newSymbols = [];\n  let currentHeight = 0;\n  let symbolCodeLength = log2(symbols.length + numberOfNewSymbols);\n\n  const decoder = decodingContext.decoder;\n  const contextCache = decodingContext.contextCache;\n  let tableB1, symbolWidths;\n  if (huffman) {\n    tableB1 = getStandardTable(1); // standard table B.1\n    symbolWidths = [];\n    symbolCodeLength = Math.max(symbolCodeLength, 1); // 6.5.8.2.3\n  }\n\n  while (newSymbols.length < numberOfNewSymbols) {\n    const deltaHeight = huffman\n      ? huffmanTables.tableDeltaHeight.decode(huffmanInput)\n      : decodeInteger(contextCache, \"IADH\", decoder); // 6.5.6\n    currentHeight += deltaHeight;\n    let currentWidth = 0,\n      totalWidth = 0;\n    const firstSymbol = huffman ? symbolWidths.length : 0;\n    while (true) {\n      const deltaWidth = huffman\n        ? huffmanTables.tableDeltaWidth.decode(huffmanInput)\n        : decodeInteger(contextCache, \"IADW\", decoder); // 6.5.7\n      if (deltaWidth === null) {\n        break; // OOB\n      }\n      currentWidth += deltaWidth;\n      totalWidth += currentWidth;\n      let bitmap;\n      if (refinement) {\n        // 6.5.8.2 Refinement/aggregate-coded symbol bitmap\n        const numberOfInstances = decodeInteger(contextCache, \"IAAI\", decoder);\n        if (numberOfInstances > 1) {\n          bitmap = decodeTextRegion(\n            huffman,\n            refinement,\n            currentWidth,\n            currentHeight,\n            0,\n            numberOfInstances,\n            1, // strip size\n            symbols.concat(newSymbols),\n            symbolCodeLength,\n            0, // transposed\n            0, // ds offset\n            1, // top left 7.4.3.1.1\n            0, // OR operator\n            huffmanTables,\n            refinementTemplateIndex,\n            refinementAt,\n            decodingContext,\n            0,\n            huffmanInput\n          );\n        } else {\n          const symbolId = decodeIAID(contextCache, decoder, symbolCodeLength);\n          const rdx = decodeInteger(contextCache, \"IARDX\", decoder); // 6.4.11.3\n          const rdy = decodeInteger(contextCache, \"IARDY\", decoder); // 6.4.11.4\n          const symbol =\n            symbolId < symbols.length\n              ? symbols[symbolId]\n              : newSymbols[symbolId - symbols.length];\n          bitmap = decodeRefinement(\n            currentWidth,\n            currentHeight,\n            refinementTemplateIndex,\n            symbol,\n            rdx,\n            rdy,\n            false,\n            refinementAt,\n            decodingContext\n          );\n        }\n        newSymbols.push(bitmap);\n      } else if (huffman) {\n        // Store only symbol width and decode a collective bitmap when the\n        // height class is done.\n        symbolWidths.push(currentWidth);\n      } else {\n        // 6.5.8.1 Direct-coded symbol bitmap\n        bitmap = decodeBitmap(\n          false,\n          currentWidth,\n          currentHeight,\n          templateIndex,\n          false,\n          null,\n          at,\n          decodingContext\n        );\n        newSymbols.push(bitmap);\n      }\n    }\n    if (huffman && !refinement) {\n      // 6.5.9 Height class collective bitmap\n      const bitmapSize = huffmanTables.tableBitmapSize.decode(huffmanInput);\n      huffmanInput.byteAlign();\n      let collectiveBitmap;\n      if (bitmapSize === 0) {\n        // Uncompressed collective bitmap\n        collectiveBitmap = readUncompressedBitmap(\n          huffmanInput,\n          totalWidth,\n          currentHeight\n        );\n      } else {\n        // MMR collective bitmap\n        const originalEnd = huffmanInput.end;\n        const bitmapEnd = huffmanInput.position + bitmapSize;\n        huffmanInput.end = bitmapEnd;\n        collectiveBitmap = decodeMMRBitmap(\n          huffmanInput,\n          totalWidth,\n          currentHeight,\n          false\n        );\n        huffmanInput.end = originalEnd;\n        huffmanInput.position = bitmapEnd;\n      }\n      const numberOfSymbolsDecoded = symbolWidths.length;\n      if (firstSymbol === numberOfSymbolsDecoded - 1) {\n        // collectiveBitmap is a single symbol.\n        newSymbols.push(collectiveBitmap);\n      } else {\n        // Divide collectiveBitmap into symbols.\n        let i,\n          y,\n          xMin = 0,\n          xMax,\n          bitmapWidth,\n          symbolBitmap;\n        for (i = firstSymbol; i < numberOfSymbolsDecoded; i++) {\n          bitmapWidth = symbolWidths[i];\n          xMax = xMin + bitmapWidth;\n          symbolBitmap = [];\n          for (y = 0; y < currentHeight; y++) {\n            symbolBitmap.push(collectiveBitmap[y].subarray(xMin, xMax));\n          }\n          newSymbols.push(symbolBitmap);\n          xMin = xMax;\n        }\n      }\n    }\n  }\n\n  // 6.5.10 Exported symbols\n  const exportedSymbols = [],\n    flags = [];\n  let currentFlag = false,\n    i,\n    ii;\n  const totalSymbolsLength = symbols.length + numberOfNewSymbols;\n  while (flags.length < totalSymbolsLength) {\n    let runLength = huffman\n      ? tableB1.decode(huffmanInput)\n      : decodeInteger(contextCache, \"IAEX\", decoder);\n    while (runLength--) {\n      flags.push(currentFlag);\n    }\n    currentFlag = !currentFlag;\n  }\n  for (i = 0, ii = symbols.length; i < ii; i++) {\n    if (flags[i]) {\n      exportedSymbols.push(symbols[i]);\n    }\n  }\n  for (let j = 0; j < numberOfNewSymbols; i++, j++) {\n    if (flags[i]) {\n      exportedSymbols.push(newSymbols[j]);\n    }\n  }\n  return exportedSymbols;\n}\n\nfunction decodeTextRegion(\n  huffman,\n  refinement,\n  width,\n  height,\n  defaultPixelValue,\n  numberOfSymbolInstances,\n  stripSize,\n  inputSymbols,\n  symbolCodeLength,\n  transposed,\n  dsOffset,\n  referenceCorner,\n  combinationOperator,\n  huffmanTables,\n  refinementTemplateIndex,\n  refinementAt,\n  decodingContext,\n  logStripSize,\n  huffmanInput\n) {\n  if (huffman && refinement) {\n    throw new Jbig2Error(\"refinement with Huffman is not supported\");\n  }\n\n  // Prepare bitmap\n  const bitmap = [];\n  let i, row;\n  for (i = 0; i < height; i++) {\n    row = new Uint8Array(width);\n    if (defaultPixelValue) {\n      for (let j = 0; j < width; j++) {\n        row[j] = defaultPixelValue;\n      }\n    }\n    bitmap.push(row);\n  }\n\n  const decoder = decodingContext.decoder;\n  const contextCache = decodingContext.contextCache;\n\n  let stripT = huffman\n    ? -huffmanTables.tableDeltaT.decode(huffmanInput)\n    : -decodeInteger(contextCache, \"IADT\", decoder); // 6.4.6\n  let firstS = 0;\n  i = 0;\n  while (i < numberOfSymbolInstances) {\n    const deltaT = huffman\n      ? huffmanTables.tableDeltaT.decode(huffmanInput)\n      : decodeInteger(contextCache, \"IADT\", decoder); // 6.4.6\n    stripT += deltaT;\n\n    const deltaFirstS = huffman\n      ? huffmanTables.tableFirstS.decode(huffmanInput)\n      : decodeInteger(contextCache, \"IAFS\", decoder); // 6.4.7\n    firstS += deltaFirstS;\n    let currentS = firstS;\n    do {\n      let currentT = 0; // 6.4.9\n      if (stripSize > 1) {\n        currentT = huffman\n          ? huffmanInput.readBits(logStripSize)\n          : decodeInteger(contextCache, \"IAIT\", decoder);\n      }\n      const t = stripSize * stripT + currentT;\n      const symbolId = huffman\n        ? huffmanTables.symbolIDTable.decode(huffmanInput)\n        : decodeIAID(contextCache, decoder, symbolCodeLength);\n      const applyRefinement =\n        refinement &&\n        (huffman\n          ? huffmanInput.readBit()\n          : decodeInteger(contextCache, \"IARI\", decoder));\n      let symbolBitmap = inputSymbols[symbolId];\n      let symbolWidth = symbolBitmap[0].length;\n      let symbolHeight = symbolBitmap.length;\n      if (applyRefinement) {\n        const rdw = decodeInteger(contextCache, \"IARDW\", decoder); // 6.4.11.1\n        const rdh = decodeInteger(contextCache, \"IARDH\", decoder); // 6.4.11.2\n        const rdx = decodeInteger(contextCache, \"IARDX\", decoder); // 6.4.11.3\n        const rdy = decodeInteger(contextCache, \"IARDY\", decoder); // 6.4.11.4\n        symbolWidth += rdw;\n        symbolHeight += rdh;\n        symbolBitmap = decodeRefinement(\n          symbolWidth,\n          symbolHeight,\n          refinementTemplateIndex,\n          symbolBitmap,\n          (rdw >> 1) + rdx,\n          (rdh >> 1) + rdy,\n          false,\n          refinementAt,\n          decodingContext\n        );\n      }\n      const offsetT = t - (referenceCorner & 1 ? 0 : symbolHeight - 1);\n      const offsetS = currentS - (referenceCorner & 2 ? symbolWidth - 1 : 0);\n      let s2, t2, symbolRow;\n      if (transposed) {\n        // Place Symbol Bitmap from T1,S1\n        for (s2 = 0; s2 < symbolHeight; s2++) {\n          row = bitmap[offsetS + s2];\n          if (!row) {\n            continue;\n          }\n          symbolRow = symbolBitmap[s2];\n          // To ignore Parts of Symbol bitmap which goes\n          // outside bitmap region\n          const maxWidth = Math.min(width - offsetT, symbolWidth);\n          switch (combinationOperator) {\n            case 0: // OR\n              for (t2 = 0; t2 < maxWidth; t2++) {\n                row[offsetT + t2] |= symbolRow[t2];\n              }\n              break;\n            case 2: // XOR\n              for (t2 = 0; t2 < maxWidth; t2++) {\n                row[offsetT + t2] ^= symbolRow[t2];\n              }\n              break;\n            default:\n              throw new Jbig2Error(\n                `operator ${combinationOperator} is not supported`\n              );\n          }\n        }\n        currentS += symbolHeight - 1;\n      } else {\n        for (t2 = 0; t2 < symbolHeight; t2++) {\n          row = bitmap[offsetT + t2];\n          if (!row) {\n            continue;\n          }\n          symbolRow = symbolBitmap[t2];\n          switch (combinationOperator) {\n            case 0: // OR\n              for (s2 = 0; s2 < symbolWidth; s2++) {\n                row[offsetS + s2] |= symbolRow[s2];\n              }\n              break;\n            case 2: // XOR\n              for (s2 = 0; s2 < symbolWidth; s2++) {\n                row[offsetS + s2] ^= symbolRow[s2];\n              }\n              break;\n            default:\n              throw new Jbig2Error(\n                `operator ${combinationOperator} is not supported`\n              );\n          }\n        }\n        currentS += symbolWidth - 1;\n      }\n      i++;\n      const deltaS = huffman\n        ? huffmanTables.tableDeltaS.decode(huffmanInput)\n        : decodeInteger(contextCache, \"IADS\", decoder); // 6.4.8\n      if (deltaS === null) {\n        break; // OOB\n      }\n      currentS += deltaS + dsOffset;\n    } while (true);\n  }\n  return bitmap;\n}\n\nfunction decodePatternDictionary(\n  mmr,\n  patternWidth,\n  patternHeight,\n  maxPatternIndex,\n  template,\n  decodingContext\n) {\n  const at = [];\n  if (!mmr) {\n    at.push({\n      x: -patternWidth,\n      y: 0,\n    });\n    if (template === 0) {\n      at.push(\n        {\n          x: -3,\n          y: -1,\n        },\n        {\n          x: 2,\n          y: -2,\n        },\n        {\n          x: -2,\n          y: -2,\n        }\n      );\n    }\n  }\n  const collectiveWidth = (maxPatternIndex + 1) * patternWidth;\n  const collectiveBitmap = decodeBitmap(\n    mmr,\n    collectiveWidth,\n    patternHeight,\n    template,\n    false,\n    null,\n    at,\n    decodingContext\n  );\n  // Divide collective bitmap into patterns.\n  const patterns = [];\n  for (let i = 0; i <= maxPatternIndex; i++) {\n    const patternBitmap = [];\n    const xMin = patternWidth * i;\n    const xMax = xMin + patternWidth;\n    for (let y = 0; y < patternHeight; y++) {\n      patternBitmap.push(collectiveBitmap[y].subarray(xMin, xMax));\n    }\n    patterns.push(patternBitmap);\n  }\n  return patterns;\n}\n\nfunction decodeHalftoneRegion(\n  mmr,\n  patterns,\n  template,\n  regionWidth,\n  regionHeight,\n  defaultPixelValue,\n  enableSkip,\n  combinationOperator,\n  gridWidth,\n  gridHeight,\n  gridOffsetX,\n  gridOffsetY,\n  gridVectorX,\n  gridVectorY,\n  decodingContext\n) {\n  const skip = null;\n  if (enableSkip) {\n    throw new Jbig2Error(\"skip is not supported\");\n  }\n  if (combinationOperator !== 0) {\n    throw new Jbig2Error(\n      `operator \"${combinationOperator}\" is not supported in halftone region`\n    );\n  }\n\n  // Prepare bitmap.\n  const regionBitmap = [];\n  let i, j, row;\n  for (i = 0; i < regionHeight; i++) {\n    row = new Uint8Array(regionWidth);\n    if (defaultPixelValue) {\n      for (j = 0; j < regionWidth; j++) {\n        row[j] = defaultPixelValue;\n      }\n    }\n    regionBitmap.push(row);\n  }\n\n  const numberOfPatterns = patterns.length;\n  const pattern0 = patterns[0];\n  const patternWidth = pattern0[0].length,\n    patternHeight = pattern0.length;\n  const bitsPerValue = log2(numberOfPatterns);\n  const at = [];\n  if (!mmr) {\n    at.push({\n      x: template <= 1 ? 3 : 2,\n      y: -1,\n    });\n    if (template === 0) {\n      at.push(\n        {\n          x: -3,\n          y: -1,\n        },\n        {\n          x: 2,\n          y: -2,\n        },\n        {\n          x: -2,\n          y: -2,\n        }\n      );\n    }\n  }\n  // Annex C. Gray-scale Image Decoding Procedure.\n  const grayScaleBitPlanes = [];\n  let mmrInput, bitmap;\n  if (mmr) {\n    // MMR bit planes are in one continuous stream. Only EOFB codes indicate\n    // the end of each bitmap, so EOFBs must be decoded.\n    mmrInput = new Reader(\n      decodingContext.data,\n      decodingContext.start,\n      decodingContext.end\n    );\n  }\n  for (i = bitsPerValue - 1; i >= 0; i--) {\n    if (mmr) {\n      bitmap = decodeMMRBitmap(mmrInput, gridWidth, gridHeight, true);\n    } else {\n      bitmap = decodeBitmap(\n        false,\n        gridWidth,\n        gridHeight,\n        template,\n        false,\n        skip,\n        at,\n        decodingContext\n      );\n    }\n    grayScaleBitPlanes[i] = bitmap;\n  }\n  // 6.6.5.2 Rendering the patterns.\n  let mg, ng, bit, patternIndex, patternBitmap, x, y, patternRow, regionRow;\n  for (mg = 0; mg < gridHeight; mg++) {\n    for (ng = 0; ng < gridWidth; ng++) {\n      bit = 0;\n      patternIndex = 0;\n      for (j = bitsPerValue - 1; j >= 0; j--) {\n        bit ^= grayScaleBitPlanes[j][mg][ng]; // Gray decoding\n        patternIndex |= bit << j;\n      }\n      patternBitmap = patterns[patternIndex];\n      x = (gridOffsetX + mg * gridVectorY + ng * gridVectorX) >> 8;\n      y = (gridOffsetY + mg * gridVectorX - ng * gridVectorY) >> 8;\n      // Draw patternBitmap at (x, y).\n      if (\n        x >= 0 &&\n        x + patternWidth <= regionWidth &&\n        y >= 0 &&\n        y + patternHeight <= regionHeight\n      ) {\n        for (i = 0; i < patternHeight; i++) {\n          regionRow = regionBitmap[y + i];\n          patternRow = patternBitmap[i];\n          for (j = 0; j < patternWidth; j++) {\n            regionRow[x + j] |= patternRow[j];\n          }\n        }\n      } else {\n        let regionX, regionY;\n        for (i = 0; i < patternHeight; i++) {\n          regionY = y + i;\n          if (regionY < 0 || regionY >= regionHeight) {\n            continue;\n          }\n          regionRow = regionBitmap[regionY];\n          patternRow = patternBitmap[i];\n          for (j = 0; j < patternWidth; j++) {\n            regionX = x + j;\n            if (regionX >= 0 && regionX < regionWidth) {\n              regionRow[regionX] |= patternRow[j];\n            }\n          }\n        }\n      }\n    }\n  }\n  return regionBitmap;\n}\n\nfunction readSegmentHeader(data, start) {\n  const segmentHeader = {};\n  segmentHeader.number = readUint32(data, start);\n  const flags = data[start + 4];\n  const segmentType = flags & 0x3f;\n  if (!SegmentTypes[segmentType]) {\n    throw new Jbig2Error(\"invalid segment type: \" + segmentType);\n  }\n  segmentHeader.type = segmentType;\n  segmentHeader.typeName = SegmentTypes[segmentType];\n  segmentHeader.deferredNonRetain = !!(flags & 0x80);\n\n  const pageAssociationFieldSize = !!(flags & 0x40);\n  const referredFlags = data[start + 5];\n  let referredToCount = (referredFlags >> 5) & 7;\n  const retainBits = [referredFlags & 31];\n  let position = start + 6;\n  if (referredFlags === 7) {\n    referredToCount = readUint32(data, position - 1) & 0x1fffffff;\n    position += 3;\n    let bytes = (referredToCount + 7) >> 3;\n    retainBits[0] = data[position++];\n    while (--bytes > 0) {\n      retainBits.push(data[position++]);\n    }\n  } else if (referredFlags === 5 || referredFlags === 6) {\n    throw new Jbig2Error(\"invalid referred-to flags\");\n  }\n\n  segmentHeader.retainBits = retainBits;\n\n  let referredToSegmentNumberSize = 4;\n  if (segmentHeader.number <= 256) {\n    referredToSegmentNumberSize = 1;\n  } else if (segmentHeader.number <= 65536) {\n    referredToSegmentNumberSize = 2;\n  }\n  const referredTo = [];\n  let i, ii;\n  for (i = 0; i < referredToCount; i++) {\n    let number;\n    if (referredToSegmentNumberSize === 1) {\n      number = data[position];\n    } else if (referredToSegmentNumberSize === 2) {\n      number = readUint16(data, position);\n    } else {\n      number = readUint32(data, position);\n    }\n    referredTo.push(number);\n    position += referredToSegmentNumberSize;\n  }\n  segmentHeader.referredTo = referredTo;\n  if (!pageAssociationFieldSize) {\n    segmentHeader.pageAssociation = data[position++];\n  } else {\n    segmentHeader.pageAssociation = readUint32(data, position);\n    position += 4;\n  }\n  segmentHeader.length = readUint32(data, position);\n  position += 4;\n\n  if (segmentHeader.length === 0xffffffff) {\n    // 7.2.7 Segment data length, unknown segment length\n    if (segmentType === 38) {\n      // ImmediateGenericRegion\n      const genericRegionInfo = readRegionSegmentInformation(data, position);\n      const genericRegionSegmentFlags =\n        data[position + RegionSegmentInformationFieldLength];\n      const genericRegionMmr = !!(genericRegionSegmentFlags & 1);\n      // searching for the segment end\n      const searchPatternLength = 6;\n      const searchPattern = new Uint8Array(searchPatternLength);\n      if (!genericRegionMmr) {\n        searchPattern[0] = 0xff;\n        searchPattern[1] = 0xac;\n      }\n      searchPattern[2] = (genericRegionInfo.height >>> 24) & 0xff;\n      searchPattern[3] = (genericRegionInfo.height >> 16) & 0xff;\n      searchPattern[4] = (genericRegionInfo.height >> 8) & 0xff;\n      searchPattern[5] = genericRegionInfo.height & 0xff;\n      for (i = position, ii = data.length; i < ii; i++) {\n        let j = 0;\n        while (j < searchPatternLength && searchPattern[j] === data[i + j]) {\n          j++;\n        }\n        if (j === searchPatternLength) {\n          segmentHeader.length = i + searchPatternLength;\n          break;\n        }\n      }\n      if (segmentHeader.length === 0xffffffff) {\n        throw new Jbig2Error(\"segment end was not found\");\n      }\n    } else {\n      throw new Jbig2Error(\"invalid unknown segment length\");\n    }\n  }\n  segmentHeader.headerEnd = position;\n  return segmentHeader;\n}\n\nfunction readSegments(header, data, start, end) {\n  const segments = [];\n  let position = start;\n  while (position < end) {\n    const segmentHeader = readSegmentHeader(data, position);\n    position = segmentHeader.headerEnd;\n    const segment = {\n      header: segmentHeader,\n      data,\n    };\n    if (!header.randomAccess) {\n      segment.start = position;\n      position += segmentHeader.length;\n      segment.end = position;\n    }\n    segments.push(segment);\n    if (segmentHeader.type === 51) {\n      break; // end of file is found\n    }\n  }\n  if (header.randomAccess) {\n    for (let i = 0, ii = segments.length; i < ii; i++) {\n      segments[i].start = position;\n      position += segments[i].header.length;\n      segments[i].end = position;\n    }\n  }\n  return segments;\n}\n\n// 7.4.1 Region segment information field\nfunction readRegionSegmentInformation(data, start) {\n  return {\n    width: readUint32(data, start),\n    height: readUint32(data, start + 4),\n    x: readUint32(data, start + 8),\n    y: readUint32(data, start + 12),\n    combinationOperator: data[start + 16] & 7,\n  };\n}\nconst RegionSegmentInformationFieldLength = 17;\n\nfunction processSegment(segment, visitor) {\n  const header = segment.header;\n\n  const data = segment.data,\n    end = segment.end;\n  let position = segment.start;\n  let args, at, i, atLength;\n  switch (header.type) {\n    case 0: // SymbolDictionary\n      // 7.4.2 Symbol dictionary segment syntax\n      const dictionary = {};\n      const dictionaryFlags = readUint16(data, position); // 7.4.2.1.1\n      dictionary.huffman = !!(dictionaryFlags & 1);\n      dictionary.refinement = !!(dictionaryFlags & 2);\n      dictionary.huffmanDHSelector = (dictionaryFlags >> 2) & 3;\n      dictionary.huffmanDWSelector = (dictionaryFlags >> 4) & 3;\n      dictionary.bitmapSizeSelector = (dictionaryFlags >> 6) & 1;\n      dictionary.aggregationInstancesSelector = (dictionaryFlags >> 7) & 1;\n      dictionary.bitmapCodingContextUsed = !!(dictionaryFlags & 256);\n      dictionary.bitmapCodingContextRetained = !!(dictionaryFlags & 512);\n      dictionary.template = (dictionaryFlags >> 10) & 3;\n      dictionary.refinementTemplate = (dictionaryFlags >> 12) & 1;\n      position += 2;\n      if (!dictionary.huffman) {\n        atLength = dictionary.template === 0 ? 4 : 1;\n        at = [];\n        for (i = 0; i < atLength; i++) {\n          at.push({\n            x: readInt8(data, position),\n            y: readInt8(data, position + 1),\n          });\n          position += 2;\n        }\n        dictionary.at = at;\n      }\n      if (dictionary.refinement && !dictionary.refinementTemplate) {\n        at = [];\n        for (i = 0; i < 2; i++) {\n          at.push({\n            x: readInt8(data, position),\n            y: readInt8(data, position + 1),\n          });\n          position += 2;\n        }\n        dictionary.refinementAt = at;\n      }\n      dictionary.numberOfExportedSymbols = readUint32(data, position);\n      position += 4;\n      dictionary.numberOfNewSymbols = readUint32(data, position);\n      position += 4;\n      args = [\n        dictionary,\n        header.number,\n        header.referredTo,\n        data,\n        position,\n        end,\n      ];\n      break;\n    case 6: // ImmediateTextRegion\n    case 7: // ImmediateLosslessTextRegion\n      const textRegion = {};\n      textRegion.info = readRegionSegmentInformation(data, position);\n      position += RegionSegmentInformationFieldLength;\n      const textRegionSegmentFlags = readUint16(data, position);\n      position += 2;\n      textRegion.huffman = !!(textRegionSegmentFlags & 1);\n      textRegion.refinement = !!(textRegionSegmentFlags & 2);\n      textRegion.logStripSize = (textRegionSegmentFlags >> 2) & 3;\n      textRegion.stripSize = 1 << textRegion.logStripSize;\n      textRegion.referenceCorner = (textRegionSegmentFlags >> 4) & 3;\n      textRegion.transposed = !!(textRegionSegmentFlags & 64);\n      textRegion.combinationOperator = (textRegionSegmentFlags >> 7) & 3;\n      textRegion.defaultPixelValue = (textRegionSegmentFlags >> 9) & 1;\n      textRegion.dsOffset = (textRegionSegmentFlags << 17) >> 27;\n      textRegion.refinementTemplate = (textRegionSegmentFlags >> 15) & 1;\n      if (textRegion.huffman) {\n        const textRegionHuffmanFlags = readUint16(data, position);\n        position += 2;\n        textRegion.huffmanFS = textRegionHuffmanFlags & 3;\n        textRegion.huffmanDS = (textRegionHuffmanFlags >> 2) & 3;\n        textRegion.huffmanDT = (textRegionHuffmanFlags >> 4) & 3;\n        textRegion.huffmanRefinementDW = (textRegionHuffmanFlags >> 6) & 3;\n        textRegion.huffmanRefinementDH = (textRegionHuffmanFlags >> 8) & 3;\n        textRegion.huffmanRefinementDX = (textRegionHuffmanFlags >> 10) & 3;\n        textRegion.huffmanRefinementDY = (textRegionHuffmanFlags >> 12) & 3;\n        textRegion.huffmanRefinementSizeSelector = !!(\n          textRegionHuffmanFlags & 0x4000\n        );\n      }\n      if (textRegion.refinement && !textRegion.refinementTemplate) {\n        at = [];\n        for (i = 0; i < 2; i++) {\n          at.push({\n            x: readInt8(data, position),\n            y: readInt8(data, position + 1),\n          });\n          position += 2;\n        }\n        textRegion.refinementAt = at;\n      }\n      textRegion.numberOfSymbolInstances = readUint32(data, position);\n      position += 4;\n      args = [textRegion, header.referredTo, data, position, end];\n      break;\n    case 16: // PatternDictionary\n      // 7.4.4. Pattern dictionary segment syntax\n      const patternDictionary = {};\n      const patternDictionaryFlags = data[position++];\n      patternDictionary.mmr = !!(patternDictionaryFlags & 1);\n      patternDictionary.template = (patternDictionaryFlags >> 1) & 3;\n      patternDictionary.patternWidth = data[position++];\n      patternDictionary.patternHeight = data[position++];\n      patternDictionary.maxPatternIndex = readUint32(data, position);\n      position += 4;\n      args = [patternDictionary, header.number, data, position, end];\n      break;\n    case 22: // ImmediateHalftoneRegion\n    case 23: // ImmediateLosslessHalftoneRegion\n      // 7.4.5 Halftone region segment syntax\n      const halftoneRegion = {};\n      halftoneRegion.info = readRegionSegmentInformation(data, position);\n      position += RegionSegmentInformationFieldLength;\n      const halftoneRegionFlags = data[position++];\n      halftoneRegion.mmr = !!(halftoneRegionFlags & 1);\n      halftoneRegion.template = (halftoneRegionFlags >> 1) & 3;\n      halftoneRegion.enableSkip = !!(halftoneRegionFlags & 8);\n      halftoneRegion.combinationOperator = (halftoneRegionFlags >> 4) & 7;\n      halftoneRegion.defaultPixelValue = (halftoneRegionFlags >> 7) & 1;\n      halftoneRegion.gridWidth = readUint32(data, position);\n      position += 4;\n      halftoneRegion.gridHeight = readUint32(data, position);\n      position += 4;\n      halftoneRegion.gridOffsetX = readUint32(data, position) & 0xffffffff;\n      position += 4;\n      halftoneRegion.gridOffsetY = readUint32(data, position) & 0xffffffff;\n      position += 4;\n      halftoneRegion.gridVectorX = readUint16(data, position);\n      position += 2;\n      halftoneRegion.gridVectorY = readUint16(data, position);\n      position += 2;\n      args = [halftoneRegion, header.referredTo, data, position, end];\n      break;\n    case 38: // ImmediateGenericRegion\n    case 39: // ImmediateLosslessGenericRegion\n      const genericRegion = {};\n      genericRegion.info = readRegionSegmentInformation(data, position);\n      position += RegionSegmentInformationFieldLength;\n      const genericRegionSegmentFlags = data[position++];\n      genericRegion.mmr = !!(genericRegionSegmentFlags & 1);\n      genericRegion.template = (genericRegionSegmentFlags >> 1) & 3;\n      genericRegion.prediction = !!(genericRegionSegmentFlags & 8);\n      if (!genericRegion.mmr) {\n        atLength = genericRegion.template === 0 ? 4 : 1;\n        at = [];\n        for (i = 0; i < atLength; i++) {\n          at.push({\n            x: readInt8(data, position),\n            y: readInt8(data, position + 1),\n          });\n          position += 2;\n        }\n        genericRegion.at = at;\n      }\n      args = [genericRegion, data, position, end];\n      break;\n    case 48: // PageInformation\n      const pageInfo = {\n        width: readUint32(data, position),\n        height: readUint32(data, position + 4),\n        resolutionX: readUint32(data, position + 8),\n        resolutionY: readUint32(data, position + 12),\n      };\n      if (pageInfo.height === 0xffffffff) {\n        delete pageInfo.height;\n      }\n      const pageSegmentFlags = data[position + 16];\n      readUint16(data, position + 17); // pageStripingInformation\n      pageInfo.lossless = !!(pageSegmentFlags & 1);\n      pageInfo.refinement = !!(pageSegmentFlags & 2);\n      pageInfo.defaultPixelValue = (pageSegmentFlags >> 2) & 1;\n      pageInfo.combinationOperator = (pageSegmentFlags >> 3) & 3;\n      pageInfo.requiresBuffer = !!(pageSegmentFlags & 32);\n      pageInfo.combinationOperatorOverride = !!(pageSegmentFlags & 64);\n      args = [pageInfo];\n      break;\n    case 49: // EndOfPage\n      break;\n    case 50: // EndOfStripe\n      break;\n    case 51: // EndOfFile\n      break;\n    case 53: // Tables\n      args = [header.number, data, position, end];\n      break;\n    case 62: // 7.4.15 defines 2 extension types which\n      // are comments and can be ignored.\n      break;\n    default:\n      throw new Jbig2Error(\n        `segment type ${header.typeName}(${header.type})` +\n          \" is not implemented\"\n      );\n  }\n  const callbackName = \"on\" + header.typeName;\n  if (callbackName in visitor) {\n    visitor[callbackName].apply(visitor, args);\n  }\n}\n\nfunction processSegments(segments, visitor) {\n  for (let i = 0, ii = segments.length; i < ii; i++) {\n    processSegment(segments[i], visitor);\n  }\n}\n\nfunction parseJbig2Chunks(chunks) {\n  const visitor = new SimpleSegmentVisitor();\n  for (let i = 0, ii = chunks.length; i < ii; i++) {\n    const chunk = chunks[i];\n    const segments = readSegments({}, chunk.data, chunk.start, chunk.end);\n    processSegments(segments, visitor);\n  }\n  return visitor.buffer;\n}\n\nfunction parseJbig2(data) {\n  const end = data.length;\n  let position = 0;\n\n  if (\n    data[position] !== 0x97 ||\n    data[position + 1] !== 0x4a ||\n    data[position + 2] !== 0x42 ||\n    data[position + 3] !== 0x32 ||\n    data[position + 4] !== 0x0d ||\n    data[position + 5] !== 0x0a ||\n    data[position + 6] !== 0x1a ||\n    data[position + 7] !== 0x0a\n  ) {\n    throw new Jbig2Error(\"parseJbig2 - invalid header.\");\n  }\n\n  const header = Object.create(null);\n  position += 8;\n  const flags = data[position++];\n  header.randomAccess = !(flags & 1);\n  if (!(flags & 2)) {\n    header.numberOfPages = readUint32(data, position);\n    position += 4;\n  }\n\n  const segments = readSegments(header, data, position, end);\n  const visitor = new SimpleSegmentVisitor();\n  processSegments(segments, visitor);\n\n  const { width, height } = visitor.currentPageInfo;\n  const bitPacked = visitor.buffer;\n  const imgData = new Uint8ClampedArray(width * height);\n  let q = 0,\n    k = 0;\n  for (let i = 0; i < height; i++) {\n    let mask = 0,\n      buffer;\n    for (let j = 0; j < width; j++) {\n      if (!mask) {\n        mask = 128;\n        buffer = bitPacked[k++];\n      }\n      imgData[q++] = buffer & mask ? 0 : 255;\n      mask >>= 1;\n    }\n  }\n\n  return { imgData, width, height };\n}\n\nclass SimpleSegmentVisitor {\n  onPageInformation(info) {\n    this.currentPageInfo = info;\n    const rowSize = (info.width + 7) >> 3;\n    const buffer = new Uint8ClampedArray(rowSize * info.height);\n    // The contents of ArrayBuffers are initialized to 0.\n    // Fill the buffer with 0xFF only if info.defaultPixelValue is set\n    if (info.defaultPixelValue) {\n      for (let i = 0, ii = buffer.length; i < ii; i++) {\n        buffer[i] = 0xff;\n      }\n    }\n    this.buffer = buffer;\n  }\n\n  drawBitmap(regionInfo, bitmap) {\n    const pageInfo = this.currentPageInfo;\n    const width = regionInfo.width,\n      height = regionInfo.height;\n    const rowSize = (pageInfo.width + 7) >> 3;\n    const combinationOperator = pageInfo.combinationOperatorOverride\n      ? regionInfo.combinationOperator\n      : pageInfo.combinationOperator;\n    const buffer = this.buffer;\n    const mask0 = 128 >> (regionInfo.x & 7);\n    let offset0 = regionInfo.y * rowSize + (regionInfo.x >> 3);\n    let i, j, mask, offset;\n    switch (combinationOperator) {\n      case 0: // OR\n        for (i = 0; i < height; i++) {\n          mask = mask0;\n          offset = offset0;\n          for (j = 0; j < width; j++) {\n            if (bitmap[i][j]) {\n              buffer[offset] |= mask;\n            }\n            mask >>= 1;\n            if (!mask) {\n              mask = 128;\n              offset++;\n            }\n          }\n          offset0 += rowSize;\n        }\n        break;\n      case 2: // XOR\n        for (i = 0; i < height; i++) {\n          mask = mask0;\n          offset = offset0;\n          for (j = 0; j < width; j++) {\n            if (bitmap[i][j]) {\n              buffer[offset] ^= mask;\n            }\n            mask >>= 1;\n            if (!mask) {\n              mask = 128;\n              offset++;\n            }\n          }\n          offset0 += rowSize;\n        }\n        break;\n      default:\n        throw new Jbig2Error(\n          `operator ${combinationOperator} is not supported`\n        );\n    }\n  }\n\n  onImmediateGenericRegion(region, data, start, end) {\n    const regionInfo = region.info;\n    const decodingContext = new DecodingContext(data, start, end);\n    const bitmap = decodeBitmap(\n      region.mmr,\n      regionInfo.width,\n      regionInfo.height,\n      region.template,\n      region.prediction,\n      null,\n      region.at,\n      decodingContext\n    );\n    this.drawBitmap(regionInfo, bitmap);\n  }\n\n  onImmediateLosslessGenericRegion() {\n    this.onImmediateGenericRegion.apply(this, arguments);\n  }\n\n  onSymbolDictionary(\n    dictionary,\n    currentSegment,\n    referredSegments,\n    data,\n    start,\n    end\n  ) {\n    let huffmanTables, huffmanInput;\n    if (dictionary.huffman) {\n      huffmanTables = getSymbolDictionaryHuffmanTables(\n        dictionary,\n        referredSegments,\n        this.customTables\n      );\n      huffmanInput = new Reader(data, start, end);\n    }\n\n    // Combines exported symbols from all referred segments\n    let symbols = this.symbols;\n    if (!symbols) {\n      this.symbols = symbols = {};\n    }\n\n    let inputSymbols = [];\n    for (let i = 0, ii = referredSegments.length; i < ii; i++) {\n      const referredSymbols = symbols[referredSegments[i]];\n      // referredSymbols is undefined when we have a reference to a Tables\n      // segment instead of a SymbolDictionary.\n      if (referredSymbols) {\n        inputSymbols = inputSymbols.concat(referredSymbols);\n      }\n    }\n\n    const decodingContext = new DecodingContext(data, start, end);\n    symbols[currentSegment] = decodeSymbolDictionary(\n      dictionary.huffman,\n      dictionary.refinement,\n      inputSymbols,\n      dictionary.numberOfNewSymbols,\n      dictionary.numberOfExportedSymbols,\n      huffmanTables,\n      dictionary.template,\n      dictionary.at,\n      dictionary.refinementTemplate,\n      dictionary.refinementAt,\n      decodingContext,\n      huffmanInput\n    );\n  }\n\n  onImmediateTextRegion(region, referredSegments, data, start, end) {\n    const regionInfo = region.info;\n    let huffmanTables, huffmanInput;\n\n    // Combines exported symbols from all referred segments\n    const symbols = this.symbols;\n    let inputSymbols = [];\n    for (let i = 0, ii = referredSegments.length; i < ii; i++) {\n      const referredSymbols = symbols[referredSegments[i]];\n      // referredSymbols is undefined when we have a reference to a Tables\n      // segment instead of a SymbolDictionary.\n      if (referredSymbols) {\n        inputSymbols = inputSymbols.concat(referredSymbols);\n      }\n    }\n    const symbolCodeLength = log2(inputSymbols.length);\n    if (region.huffman) {\n      huffmanInput = new Reader(data, start, end);\n      huffmanTables = getTextRegionHuffmanTables(\n        region,\n        referredSegments,\n        this.customTables,\n        inputSymbols.length,\n        huffmanInput\n      );\n    }\n\n    const decodingContext = new DecodingContext(data, start, end);\n    const bitmap = decodeTextRegion(\n      region.huffman,\n      region.refinement,\n      regionInfo.width,\n      regionInfo.height,\n      region.defaultPixelValue,\n      region.numberOfSymbolInstances,\n      region.stripSize,\n      inputSymbols,\n      symbolCodeLength,\n      region.transposed,\n      region.dsOffset,\n      region.referenceCorner,\n      region.combinationOperator,\n      huffmanTables,\n      region.refinementTemplate,\n      region.refinementAt,\n      decodingContext,\n      region.logStripSize,\n      huffmanInput\n    );\n    this.drawBitmap(regionInfo, bitmap);\n  }\n\n  onImmediateLosslessTextRegion() {\n    this.onImmediateTextRegion.apply(this, arguments);\n  }\n\n  onPatternDictionary(dictionary, currentSegment, data, start, end) {\n    let patterns = this.patterns;\n    if (!patterns) {\n      this.patterns = patterns = {};\n    }\n    const decodingContext = new DecodingContext(data, start, end);\n    patterns[currentSegment] = decodePatternDictionary(\n      dictionary.mmr,\n      dictionary.patternWidth,\n      dictionary.patternHeight,\n      dictionary.maxPatternIndex,\n      dictionary.template,\n      decodingContext\n    );\n  }\n\n  onImmediateHalftoneRegion(region, referredSegments, data, start, end) {\n    // HalftoneRegion refers to exactly one PatternDictionary.\n    const patterns = this.patterns[referredSegments[0]];\n    const regionInfo = region.info;\n    const decodingContext = new DecodingContext(data, start, end);\n    const bitmap = decodeHalftoneRegion(\n      region.mmr,\n      patterns,\n      region.template,\n      regionInfo.width,\n      regionInfo.height,\n      region.defaultPixelValue,\n      region.enableSkip,\n      region.combinationOperator,\n      region.gridWidth,\n      region.gridHeight,\n      region.gridOffsetX,\n      region.gridOffsetY,\n      region.gridVectorX,\n      region.gridVectorY,\n      decodingContext\n    );\n    this.drawBitmap(regionInfo, bitmap);\n  }\n\n  onImmediateLosslessHalftoneRegion() {\n    this.onImmediateHalftoneRegion.apply(this, arguments);\n  }\n\n  onTables(currentSegment, data, start, end) {\n    let customTables = this.customTables;\n    if (!customTables) {\n      this.customTables = customTables = {};\n    }\n    customTables[currentSegment] = decodeTablesSegment(data, start, end);\n  }\n}\n\nclass HuffmanLine {\n  constructor(lineData) {\n    if (lineData.length === 2) {\n      // OOB line.\n      this.isOOB = true;\n      this.rangeLow = 0;\n      this.prefixLength = lineData[0];\n      this.rangeLength = 0;\n      this.prefixCode = lineData[1];\n      this.isLowerRange = false;\n    } else {\n      // Normal, upper range or lower range line.\n      // Upper range lines are processed like normal lines.\n      this.isOOB = false;\n      this.rangeLow = lineData[0];\n      this.prefixLength = lineData[1];\n      this.rangeLength = lineData[2];\n      this.prefixCode = lineData[3];\n      this.isLowerRange = lineData[4] === \"lower\";\n    }\n  }\n}\n\nclass HuffmanTreeNode {\n  constructor(line) {\n    this.children = [];\n    if (line) {\n      // Leaf node\n      this.isLeaf = true;\n      this.rangeLength = line.rangeLength;\n      this.rangeLow = line.rangeLow;\n      this.isLowerRange = line.isLowerRange;\n      this.isOOB = line.isOOB;\n    } else {\n      // Intermediate or root node\n      this.isLeaf = false;\n    }\n  }\n\n  buildTree(line, shift) {\n    const bit = (line.prefixCode >> shift) & 1;\n    if (shift <= 0) {\n      // Create a leaf node.\n      this.children[bit] = new HuffmanTreeNode(line);\n    } else {\n      // Create an intermediate node and continue recursively.\n      let node = this.children[bit];\n      if (!node) {\n        this.children[bit] = node = new HuffmanTreeNode(null);\n      }\n      node.buildTree(line, shift - 1);\n    }\n  }\n\n  decodeNode(reader) {\n    if (this.isLeaf) {\n      if (this.isOOB) {\n        return null;\n      }\n      const htOffset = reader.readBits(this.rangeLength);\n      return this.rangeLow + (this.isLowerRange ? -htOffset : htOffset);\n    }\n    const node = this.children[reader.readBit()];\n    if (!node) {\n      throw new Jbig2Error(\"invalid Huffman data\");\n    }\n    return node.decodeNode(reader);\n  }\n}\n\nclass HuffmanTable {\n  constructor(lines, prefixCodesDone) {\n    if (!prefixCodesDone) {\n      this.assignPrefixCodes(lines);\n    }\n    // Create Huffman tree.\n    this.rootNode = new HuffmanTreeNode(null);\n    for (let i = 0, ii = lines.length; i < ii; i++) {\n      const line = lines[i];\n      if (line.prefixLength > 0) {\n        this.rootNode.buildTree(line, line.prefixLength - 1);\n      }\n    }\n  }\n\n  decode(reader) {\n    return this.rootNode.decodeNode(reader);\n  }\n\n  assignPrefixCodes(lines) {\n    // Annex B.3 Assigning the prefix codes.\n    const linesLength = lines.length;\n    let prefixLengthMax = 0;\n    for (let i = 0; i < linesLength; i++) {\n      prefixLengthMax = Math.max(prefixLengthMax, lines[i].prefixLength);\n    }\n\n    const histogram = new Uint32Array(prefixLengthMax + 1);\n    for (let i = 0; i < linesLength; i++) {\n      histogram[lines[i].prefixLength]++;\n    }\n    let currentLength = 1,\n      firstCode = 0,\n      currentCode,\n      currentTemp,\n      line;\n    histogram[0] = 0;\n\n    while (currentLength <= prefixLengthMax) {\n      firstCode = (firstCode + histogram[currentLength - 1]) << 1;\n      currentCode = firstCode;\n      currentTemp = 0;\n      while (currentTemp < linesLength) {\n        line = lines[currentTemp];\n        if (line.prefixLength === currentLength) {\n          line.prefixCode = currentCode;\n          currentCode++;\n        }\n        currentTemp++;\n      }\n      currentLength++;\n    }\n  }\n}\n\nfunction decodeTablesSegment(data, start, end) {\n  // Decodes a Tables segment, i.e., a custom Huffman table.\n  // Annex B.2 Code table structure.\n  const flags = data[start];\n  const lowestValue = readUint32(data, start + 1) & 0xffffffff;\n  const highestValue = readUint32(data, start + 5) & 0xffffffff;\n  const reader = new Reader(data, start + 9, end);\n\n  const prefixSizeBits = ((flags >> 1) & 7) + 1;\n  const rangeSizeBits = ((flags >> 4) & 7) + 1;\n  const lines = [];\n  let prefixLength,\n    rangeLength,\n    currentRangeLow = lowestValue;\n\n  // Normal table lines\n  do {\n    prefixLength = reader.readBits(prefixSizeBits);\n    rangeLength = reader.readBits(rangeSizeBits);\n    lines.push(\n      new HuffmanLine([currentRangeLow, prefixLength, rangeLength, 0])\n    );\n    currentRangeLow += 1 << rangeLength;\n  } while (currentRangeLow < highestValue);\n\n  // Lower range table line\n  prefixLength = reader.readBits(prefixSizeBits);\n  lines.push(new HuffmanLine([lowestValue - 1, prefixLength, 32, 0, \"lower\"]));\n\n  // Upper range table line\n  prefixLength = reader.readBits(prefixSizeBits);\n  lines.push(new HuffmanLine([highestValue, prefixLength, 32, 0]));\n\n  if (flags & 1) {\n    // Out-of-band table line\n    prefixLength = reader.readBits(prefixSizeBits);\n    lines.push(new HuffmanLine([prefixLength, 0]));\n  }\n\n  return new HuffmanTable(lines, false);\n}\n\nconst standardTablesCache = {};\n\nfunction getStandardTable(number) {\n  // Annex B.5 Standard Huffman tables.\n  let table = standardTablesCache[number];\n  if (table) {\n    return table;\n  }\n  let lines;\n  switch (number) {\n    case 1:\n      lines = [\n        [0, 1, 4, 0x0],\n        [16, 2, 8, 0x2],\n        [272, 3, 16, 0x6],\n        [65808, 3, 32, 0x7], // upper\n      ];\n      break;\n    case 2:\n      lines = [\n        [0, 1, 0, 0x0],\n        [1, 2, 0, 0x2],\n        [2, 3, 0, 0x6],\n        [3, 4, 3, 0xe],\n        [11, 5, 6, 0x1e],\n        [75, 6, 32, 0x3e], // upper\n        [6, 0x3f], // OOB\n      ];\n      break;\n    case 3:\n      lines = [\n        [-256, 8, 8, 0xfe],\n        [0, 1, 0, 0x0],\n        [1, 2, 0, 0x2],\n        [2, 3, 0, 0x6],\n        [3, 4, 3, 0xe],\n        [11, 5, 6, 0x1e],\n        [-257, 8, 32, 0xff, \"lower\"],\n        [75, 7, 32, 0x7e], // upper\n        [6, 0x3e], // OOB\n      ];\n      break;\n    case 4:\n      lines = [\n        [1, 1, 0, 0x0],\n        [2, 2, 0, 0x2],\n        [3, 3, 0, 0x6],\n        [4, 4, 3, 0xe],\n        [12, 5, 6, 0x1e],\n        [76, 5, 32, 0x1f], // upper\n      ];\n      break;\n    case 5:\n      lines = [\n        [-255, 7, 8, 0x7e],\n        [1, 1, 0, 0x0],\n        [2, 2, 0, 0x2],\n        [3, 3, 0, 0x6],\n        [4, 4, 3, 0xe],\n        [12, 5, 6, 0x1e],\n        [-256, 7, 32, 0x7f, \"lower\"],\n        [76, 6, 32, 0x3e], // upper\n      ];\n      break;\n    case 6:\n      lines = [\n        [-2048, 5, 10, 0x1c],\n        [-1024, 4, 9, 0x8],\n        [-512, 4, 8, 0x9],\n        [-256, 4, 7, 0xa],\n        [-128, 5, 6, 0x1d],\n        [-64, 5, 5, 0x1e],\n        [-32, 4, 5, 0xb],\n        [0, 2, 7, 0x0],\n        [128, 3, 7, 0x2],\n        [256, 3, 8, 0x3],\n        [512, 4, 9, 0xc],\n        [1024, 4, 10, 0xd],\n        [-2049, 6, 32, 0x3e, \"lower\"],\n        [2048, 6, 32, 0x3f], // upper\n      ];\n      break;\n    case 7:\n      lines = [\n        [-1024, 4, 9, 0x8],\n        [-512, 3, 8, 0x0],\n        [-256, 4, 7, 0x9],\n        [-128, 5, 6, 0x1a],\n        [-64, 5, 5, 0x1b],\n        [-32, 4, 5, 0xa],\n        [0, 4, 5, 0xb],\n        [32, 5, 5, 0x1c],\n        [64, 5, 6, 0x1d],\n        [128, 4, 7, 0xc],\n        [256, 3, 8, 0x1],\n        [512, 3, 9, 0x2],\n        [1024, 3, 10, 0x3],\n        [-1025, 5, 32, 0x1e, \"lower\"],\n        [2048, 5, 32, 0x1f], // upper\n      ];\n      break;\n    case 8:\n      lines = [\n        [-15, 8, 3, 0xfc],\n        [-7, 9, 1, 0x1fc],\n        [-5, 8, 1, 0xfd],\n        [-3, 9, 0, 0x1fd],\n        [-2, 7, 0, 0x7c],\n        [-1, 4, 0, 0xa],\n        [0, 2, 1, 0x0],\n        [2, 5, 0, 0x1a],\n        [3, 6, 0, 0x3a],\n        [4, 3, 4, 0x4],\n        [20, 6, 1, 0x3b],\n        [22, 4, 4, 0xb],\n        [38, 4, 5, 0xc],\n        [70, 5, 6, 0x1b],\n        [134, 5, 7, 0x1c],\n        [262, 6, 7, 0x3c],\n        [390, 7, 8, 0x7d],\n        [646, 6, 10, 0x3d],\n        [-16, 9, 32, 0x1fe, \"lower\"],\n        [1670, 9, 32, 0x1ff], // upper\n        [2, 0x1], // OOB\n      ];\n      break;\n    case 9:\n      lines = [\n        [-31, 8, 4, 0xfc],\n        [-15, 9, 2, 0x1fc],\n        [-11, 8, 2, 0xfd],\n        [-7, 9, 1, 0x1fd],\n        [-5, 7, 1, 0x7c],\n        [-3, 4, 1, 0xa],\n        [-1, 3, 1, 0x2],\n        [1, 3, 1, 0x3],\n        [3, 5, 1, 0x1a],\n        [5, 6, 1, 0x3a],\n        [7, 3, 5, 0x4],\n        [39, 6, 2, 0x3b],\n        [43, 4, 5, 0xb],\n        [75, 4, 6, 0xc],\n        [139, 5, 7, 0x1b],\n        [267, 5, 8, 0x1c],\n        [523, 6, 8, 0x3c],\n        [779, 7, 9, 0x7d],\n        [1291, 6, 11, 0x3d],\n        [-32, 9, 32, 0x1fe, \"lower\"],\n        [3339, 9, 32, 0x1ff], // upper\n        [2, 0x0], // OOB\n      ];\n      break;\n    case 10:\n      lines = [\n        [-21, 7, 4, 0x7a],\n        [-5, 8, 0, 0xfc],\n        [-4, 7, 0, 0x7b],\n        [-3, 5, 0, 0x18],\n        [-2, 2, 2, 0x0],\n        [2, 5, 0, 0x19],\n        [3, 6, 0, 0x36],\n        [4, 7, 0, 0x7c],\n        [5, 8, 0, 0xfd],\n        [6, 2, 6, 0x1],\n        [70, 5, 5, 0x1a],\n        [102, 6, 5, 0x37],\n        [134, 6, 6, 0x38],\n        [198, 6, 7, 0x39],\n        [326, 6, 8, 0x3a],\n        [582, 6, 9, 0x3b],\n        [1094, 6, 10, 0x3c],\n        [2118, 7, 11, 0x7d],\n        [-22, 8, 32, 0xfe, \"lower\"],\n        [4166, 8, 32, 0xff], // upper\n        [2, 0x2], // OOB\n      ];\n      break;\n    case 11:\n      lines = [\n        [1, 1, 0, 0x0],\n        [2, 2, 1, 0x2],\n        [4, 4, 0, 0xc],\n        [5, 4, 1, 0xd],\n        [7, 5, 1, 0x1c],\n        [9, 5, 2, 0x1d],\n        [13, 6, 2, 0x3c],\n        [17, 7, 2, 0x7a],\n        [21, 7, 3, 0x7b],\n        [29, 7, 4, 0x7c],\n        [45, 7, 5, 0x7d],\n        [77, 7, 6, 0x7e],\n        [141, 7, 32, 0x7f], // upper\n      ];\n      break;\n    case 12:\n      lines = [\n        [1, 1, 0, 0x0],\n        [2, 2, 0, 0x2],\n        [3, 3, 1, 0x6],\n        [5, 5, 0, 0x1c],\n        [6, 5, 1, 0x1d],\n        [8, 6, 1, 0x3c],\n        [10, 7, 0, 0x7a],\n        [11, 7, 1, 0x7b],\n        [13, 7, 2, 0x7c],\n        [17, 7, 3, 0x7d],\n        [25, 7, 4, 0x7e],\n        [41, 8, 5, 0xfe],\n        [73, 8, 32, 0xff], // upper\n      ];\n      break;\n    case 13:\n      lines = [\n        [1, 1, 0, 0x0],\n        [2, 3, 0, 0x4],\n        [3, 4, 0, 0xc],\n        [4, 5, 0, 0x1c],\n        [5, 4, 1, 0xd],\n        [7, 3, 3, 0x5],\n        [15, 6, 1, 0x3a],\n        [17, 6, 2, 0x3b],\n        [21, 6, 3, 0x3c],\n        [29, 6, 4, 0x3d],\n        [45, 6, 5, 0x3e],\n        [77, 7, 6, 0x7e],\n        [141, 7, 32, 0x7f], // upper\n      ];\n      break;\n    case 14:\n      lines = [\n        [-2, 3, 0, 0x4],\n        [-1, 3, 0, 0x5],\n        [0, 1, 0, 0x0],\n        [1, 3, 0, 0x6],\n        [2, 3, 0, 0x7],\n      ];\n      break;\n    case 15:\n      lines = [\n        [-24, 7, 4, 0x7c],\n        [-8, 6, 2, 0x3c],\n        [-4, 5, 1, 0x1c],\n        [-2, 4, 0, 0xc],\n        [-1, 3, 0, 0x4],\n        [0, 1, 0, 0x0],\n        [1, 3, 0, 0x5],\n        [2, 4, 0, 0xd],\n        [3, 5, 1, 0x1d],\n        [5, 6, 2, 0x3d],\n        [9, 7, 4, 0x7d],\n        [-25, 7, 32, 0x7e, \"lower\"],\n        [25, 7, 32, 0x7f], // upper\n      ];\n      break;\n    default:\n      throw new Jbig2Error(`standard table B.${number} does not exist`);\n  }\n\n  for (let i = 0, ii = lines.length; i < ii; i++) {\n    lines[i] = new HuffmanLine(lines[i]);\n  }\n  table = new HuffmanTable(lines, true);\n  standardTablesCache[number] = table;\n  return table;\n}\n\nclass Reader {\n  constructor(data, start, end) {\n    this.data = data;\n    this.start = start;\n    this.end = end;\n    this.position = start;\n    this.shift = -1;\n    this.currentByte = 0;\n  }\n\n  readBit() {\n    if (this.shift < 0) {\n      if (this.position >= this.end) {\n        throw new Jbig2Error(\"end of data while reading bit\");\n      }\n      this.currentByte = this.data[this.position++];\n      this.shift = 7;\n    }\n    const bit = (this.currentByte >> this.shift) & 1;\n    this.shift--;\n    return bit;\n  }\n\n  readBits(numBits) {\n    let result = 0,\n      i;\n    for (i = numBits - 1; i >= 0; i--) {\n      result |= this.readBit() << i;\n    }\n    return result;\n  }\n\n  byteAlign() {\n    this.shift = -1;\n  }\n\n  next() {\n    if (this.position >= this.end) {\n      return -1;\n    }\n    return this.data[this.position++];\n  }\n}\n\nfunction getCustomHuffmanTable(index, referredTo, customTables) {\n  // Returns a Tables segment that has been earlier decoded.\n  // See 7.4.2.1.6 (symbol dictionary) or 7.4.3.1.6 (text region).\n  let currentIndex = 0;\n  for (let i = 0, ii = referredTo.length; i < ii; i++) {\n    const table = customTables[referredTo[i]];\n    if (table) {\n      if (index === currentIndex) {\n        return table;\n      }\n      currentIndex++;\n    }\n  }\n  throw new Jbig2Error(\"can't find custom Huffman table\");\n}\n\nfunction getTextRegionHuffmanTables(\n  textRegion,\n  referredTo,\n  customTables,\n  numberOfSymbols,\n  reader\n) {\n  // 7.4.3.1.7 Symbol ID Huffman table decoding\n\n  // Read code lengths for RUNCODEs 0...34.\n  const codes = [];\n  for (let i = 0; i <= 34; i++) {\n    const codeLength = reader.readBits(4);\n    codes.push(new HuffmanLine([i, codeLength, 0, 0]));\n  }\n  // Assign Huffman codes for RUNCODEs.\n  const runCodesTable = new HuffmanTable(codes, false);\n\n  // Read a Huffman code using the assignment above.\n  // Interpret the RUNCODE codes and the additional bits (if any).\n  codes.length = 0;\n  for (let i = 0; i < numberOfSymbols; ) {\n    const codeLength = runCodesTable.decode(reader);\n    if (codeLength >= 32) {\n      let repeatedLength, numberOfRepeats, j;\n      switch (codeLength) {\n        case 32:\n          if (i === 0) {\n            throw new Jbig2Error(\"no previous value in symbol ID table\");\n          }\n          numberOfRepeats = reader.readBits(2) + 3;\n          repeatedLength = codes[i - 1].prefixLength;\n          break;\n        case 33:\n          numberOfRepeats = reader.readBits(3) + 3;\n          repeatedLength = 0;\n          break;\n        case 34:\n          numberOfRepeats = reader.readBits(7) + 11;\n          repeatedLength = 0;\n          break;\n        default:\n          throw new Jbig2Error(\"invalid code length in symbol ID table\");\n      }\n      for (j = 0; j < numberOfRepeats; j++) {\n        codes.push(new HuffmanLine([i, repeatedLength, 0, 0]));\n        i++;\n      }\n    } else {\n      codes.push(new HuffmanLine([i, codeLength, 0, 0]));\n      i++;\n    }\n  }\n  reader.byteAlign();\n  const symbolIDTable = new HuffmanTable(codes, false);\n\n  // 7.4.3.1.6 Text region segment Huffman table selection\n\n  let customIndex = 0,\n    tableFirstS,\n    tableDeltaS,\n    tableDeltaT;\n\n  switch (textRegion.huffmanFS) {\n    case 0:\n    case 1:\n      tableFirstS = getStandardTable(textRegion.huffmanFS + 6);\n      break;\n    case 3:\n      tableFirstS = getCustomHuffmanTable(\n        customIndex,\n        referredTo,\n        customTables\n      );\n      customIndex++;\n      break;\n    default:\n      throw new Jbig2Error(\"invalid Huffman FS selector\");\n  }\n\n  switch (textRegion.huffmanDS) {\n    case 0:\n    case 1:\n    case 2:\n      tableDeltaS = getStandardTable(textRegion.huffmanDS + 8);\n      break;\n    case 3:\n      tableDeltaS = getCustomHuffmanTable(\n        customIndex,\n        referredTo,\n        customTables\n      );\n      customIndex++;\n      break;\n    default:\n      throw new Jbig2Error(\"invalid Huffman DS selector\");\n  }\n\n  switch (textRegion.huffmanDT) {\n    case 0:\n    case 1:\n    case 2:\n      tableDeltaT = getStandardTable(textRegion.huffmanDT + 11);\n      break;\n    case 3:\n      tableDeltaT = getCustomHuffmanTable(\n        customIndex,\n        referredTo,\n        customTables\n      );\n      customIndex++;\n      break;\n    default:\n      throw new Jbig2Error(\"invalid Huffman DT selector\");\n  }\n\n  if (textRegion.refinement) {\n    // Load tables RDW, RDH, RDX and RDY.\n    throw new Jbig2Error(\"refinement with Huffman is not supported\");\n  }\n\n  return {\n    symbolIDTable,\n    tableFirstS,\n    tableDeltaS,\n    tableDeltaT,\n  };\n}\n\nfunction getSymbolDictionaryHuffmanTables(\n  dictionary,\n  referredTo,\n  customTables\n) {\n  // 7.4.2.1.6 Symbol dictionary segment Huffman table selection\n\n  let customIndex = 0,\n    tableDeltaHeight,\n    tableDeltaWidth;\n  switch (dictionary.huffmanDHSelector) {\n    case 0:\n    case 1:\n      tableDeltaHeight = getStandardTable(dictionary.huffmanDHSelector + 4);\n      break;\n    case 3:\n      tableDeltaHeight = getCustomHuffmanTable(\n        customIndex,\n        referredTo,\n        customTables\n      );\n      customIndex++;\n      break;\n    default:\n      throw new Jbig2Error(\"invalid Huffman DH selector\");\n  }\n\n  switch (dictionary.huffmanDWSelector) {\n    case 0:\n    case 1:\n      tableDeltaWidth = getStandardTable(dictionary.huffmanDWSelector + 2);\n      break;\n    case 3:\n      tableDeltaWidth = getCustomHuffmanTable(\n        customIndex,\n        referredTo,\n        customTables\n      );\n      customIndex++;\n      break;\n    default:\n      throw new Jbig2Error(\"invalid Huffman DW selector\");\n  }\n\n  let tableBitmapSize, tableAggregateInstances;\n  if (dictionary.bitmapSizeSelector) {\n    tableBitmapSize = getCustomHuffmanTable(\n      customIndex,\n      referredTo,\n      customTables\n    );\n    customIndex++;\n  } else {\n    tableBitmapSize = getStandardTable(1);\n  }\n\n  if (dictionary.aggregationInstancesSelector) {\n    tableAggregateInstances = getCustomHuffmanTable(\n      customIndex,\n      referredTo,\n      customTables\n    );\n  } else {\n    tableAggregateInstances = getStandardTable(1);\n  }\n\n  return {\n    tableDeltaHeight,\n    tableDeltaWidth,\n    tableBitmapSize,\n    tableAggregateInstances,\n  };\n}\n\nfunction readUncompressedBitmap(reader, width, height) {\n  const bitmap = [];\n  for (let y = 0; y < height; y++) {\n    const row = new Uint8Array(width);\n    bitmap.push(row);\n    for (let x = 0; x < width; x++) {\n      row[x] = reader.readBit();\n    }\n    reader.byteAlign();\n  }\n  return bitmap;\n}\n\nfunction decodeMMRBitmap(input, width, height, endOfBlock) {\n  // MMR is the same compression algorithm as the PDF filter\n  // CCITTFaxDecode with /K -1.\n  const params = {\n    K: -1,\n    Columns: width,\n    Rows: height,\n    BlackIs1: true,\n    EndOfBlock: endOfBlock,\n  };\n  const decoder = new CCITTFaxDecoder(input, params);\n  const bitmap = [];\n  let currentByte,\n    eof = false;\n\n  for (let y = 0; y < height; y++) {\n    const row = new Uint8Array(width);\n    bitmap.push(row);\n    let shift = -1;\n    for (let x = 0; x < width; x++) {\n      if (shift < 0) {\n        currentByte = decoder.readNextChar();\n        if (currentByte === -1) {\n          // Set the rest of the bits to zero.\n          currentByte = 0;\n          eof = true;\n        }\n        shift = 7;\n      }\n      row[x] = (currentByte >> shift) & 1;\n      shift--;\n    }\n  }\n\n  if (endOfBlock && !eof) {\n    // Read until EOFB has been consumed.\n    const lookForEOFLimit = 5;\n    for (let i = 0; i < lookForEOFLimit; i++) {\n      if (decoder.readNextChar() === -1) {\n        break;\n      }\n    }\n  }\n\n  return bitmap;\n}\n\nclass Jbig2Image {\n  parseChunks(chunks) {\n    return parseJbig2Chunks(chunks);\n  }\n\n  parse(data) {\n    const { imgData, width, height } = parseJbig2(data);\n    this.width = width;\n    this.height = height;\n    return imgData;\n  }\n}\n\nexport { Jbig2Image };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// Table C-2\nconst QeTable = [\n  { qe: 0x5601, nmps: 1, nlps: 1, switchFlag: 1 },\n  { qe: 0x3401, nmps: 2, nlps: 6, switchFlag: 0 },\n  { qe: 0x1801, nmps: 3, nlps: 9, switchFlag: 0 },\n  { qe: 0x0ac1, nmps: 4, nlps: 12, switchFlag: 0 },\n  { qe: 0x0521, nmps: 5, nlps: 29, switchFlag: 0 },\n  { qe: 0x0221, nmps: 38, nlps: 33, switchFlag: 0 },\n  { qe: 0x5601, nmps: 7, nlps: 6, switchFlag: 1 },\n  { qe: 0x5401, nmps: 8, nlps: 14, switchFlag: 0 },\n  { qe: 0x4801, nmps: 9, nlps: 14, switchFlag: 0 },\n  { qe: 0x3801, nmps: 10, nlps: 14, switchFlag: 0 },\n  { qe: 0x3001, nmps: 11, nlps: 17, switchFlag: 0 },\n  { qe: 0x2401, nmps: 12, nlps: 18, switchFlag: 0 },\n  { qe: 0x1c01, nmps: 13, nlps: 20, switchFlag: 0 },\n  { qe: 0x1601, nmps: 29, nlps: 21, switchFlag: 0 },\n  { qe: 0x5601, nmps: 15, nlps: 14, switchFlag: 1 },\n  { qe: 0x5401, nmps: 16, nlps: 14, switchFlag: 0 },\n  { qe: 0x5101, nmps: 17, nlps: 15, switchFlag: 0 },\n  { qe: 0x4801, nmps: 18, nlps: 16, switchFlag: 0 },\n  { qe: 0x3801, nmps: 19, nlps: 17, switchFlag: 0 },\n  { qe: 0x3401, nmps: 20, nlps: 18, switchFlag: 0 },\n  { qe: 0x3001, nmps: 21, nlps: 19, switchFlag: 0 },\n  { qe: 0x2801, nmps: 22, nlps: 19, switchFlag: 0 },\n  { qe: 0x2401, nmps: 23, nlps: 20, switchFlag: 0 },\n  { qe: 0x2201, nmps: 24, nlps: 21, switchFlag: 0 },\n  { qe: 0x1c01, nmps: 25, nlps: 22, switchFlag: 0 },\n  { qe: 0x1801, nmps: 26, nlps: 23, switchFlag: 0 },\n  { qe: 0x1601, nmps: 27, nlps: 24, switchFlag: 0 },\n  { qe: 0x1401, nmps: 28, nlps: 25, switchFlag: 0 },\n  { qe: 0x1201, nmps: 29, nlps: 26, switchFlag: 0 },\n  { qe: 0x1101, nmps: 30, nlps: 27, switchFlag: 0 },\n  { qe: 0x0ac1, nmps: 31, nlps: 28, switchFlag: 0 },\n  { qe: 0x09c1, nmps: 32, nlps: 29, switchFlag: 0 },\n  { qe: 0x08a1, nmps: 33, nlps: 30, switchFlag: 0 },\n  { qe: 0x0521, nmps: 34, nlps: 31, switchFlag: 0 },\n  { qe: 0x0441, nmps: 35, nlps: 32, switchFlag: 0 },\n  { qe: 0x02a1, nmps: 36, nlps: 33, switchFlag: 0 },\n  { qe: 0x0221, nmps: 37, nlps: 34, switchFlag: 0 },\n  { qe: 0x0141, nmps: 38, nlps: 35, switchFlag: 0 },\n  { qe: 0x0111, nmps: 39, nlps: 36, switchFlag: 0 },\n  { qe: 0x0085, nmps: 40, nlps: 37, switchFlag: 0 },\n  { qe: 0x0049, nmps: 41, nlps: 38, switchFlag: 0 },\n  { qe: 0x0025, nmps: 42, nlps: 39, switchFlag: 0 },\n  { qe: 0x0015, nmps: 43, nlps: 40, switchFlag: 0 },\n  { qe: 0x0009, nmps: 44, nlps: 41, switchFlag: 0 },\n  { qe: 0x0005, nmps: 45, nlps: 42, switchFlag: 0 },\n  { qe: 0x0001, nmps: 45, nlps: 43, switchFlag: 0 },\n  { qe: 0x5601, nmps: 46, nlps: 46, switchFlag: 0 },\n];\n\n/**\n * This class implements the QM Coder decoding as defined in\n *   JPEG 2000 Part I Final Committee Draft Version 1.0\n *   Annex C.3 Arithmetic decoding procedure\n * available at http://www.jpeg.org/public/fcd15444-1.pdf\n *\n * The arithmetic decoder is used in conjunction with context models to decode\n * JPEG2000 and JBIG2 streams.\n */\nclass ArithmeticDecoder {\n  // C.3.5 Initialisation of the decoder (INITDEC)\n  constructor(data, start, end) {\n    this.data = data;\n    this.bp = start;\n    this.dataEnd = end;\n\n    this.chigh = data[start];\n    this.clow = 0;\n\n    this.byteIn();\n\n    this.chigh = ((this.chigh << 7) & 0xffff) | ((this.clow >> 9) & 0x7f);\n    this.clow = (this.clow << 7) & 0xffff;\n    this.ct -= 7;\n    this.a = 0x8000;\n  }\n\n  // C.3.4 Compressed data input (BYTEIN)\n  byteIn() {\n    const data = this.data;\n    let bp = this.bp;\n\n    if (data[bp] === 0xff) {\n      if (data[bp + 1] > 0x8f) {\n        this.clow += 0xff00;\n        this.ct = 8;\n      } else {\n        bp++;\n        this.clow += data[bp] << 9;\n        this.ct = 7;\n        this.bp = bp;\n      }\n    } else {\n      bp++;\n      this.clow += bp < this.dataEnd ? data[bp] << 8 : 0xff00;\n      this.ct = 8;\n      this.bp = bp;\n    }\n    if (this.clow > 0xffff) {\n      this.chigh += this.clow >> 16;\n      this.clow &= 0xffff;\n    }\n  }\n\n  // C.3.2 Decoding a decision (DECODE)\n  readBit(contexts, pos) {\n    // Contexts are packed into 1 byte:\n    // highest 7 bits carry cx.index, lowest bit carries cx.mps\n    let cx_index = contexts[pos] >> 1,\n      cx_mps = contexts[pos] & 1;\n    const qeTableIcx = QeTable[cx_index];\n    const qeIcx = qeTableIcx.qe;\n    let d;\n    let a = this.a - qeIcx;\n\n    if (this.chigh < qeIcx) {\n      // exchangeLps\n      if (a < qeIcx) {\n        a = qeIcx;\n        d = cx_mps;\n        cx_index = qeTableIcx.nmps;\n      } else {\n        a = qeIcx;\n        d = 1 ^ cx_mps;\n        if (qeTableIcx.switchFlag === 1) {\n          cx_mps = d;\n        }\n        cx_index = qeTableIcx.nlps;\n      }\n    } else {\n      this.chigh -= qeIcx;\n      if ((a & 0x8000) !== 0) {\n        this.a = a;\n        return cx_mps;\n      }\n      // exchangeMps\n      if (a < qeIcx) {\n        d = 1 ^ cx_mps;\n        if (qeTableIcx.switchFlag === 1) {\n          cx_mps = d;\n        }\n        cx_index = qeTableIcx.nlps;\n      } else {\n        d = cx_mps;\n        cx_index = qeTableIcx.nmps;\n      }\n    }\n    // C.3.3 renormD;\n    do {\n      if (this.ct === 0) {\n        this.byteIn();\n      }\n\n      a <<= 1;\n      this.chigh = ((this.chigh << 1) & 0xffff) | ((this.clow >> 15) & 1);\n      this.clow = (this.clow << 1) & 0xffff;\n      this.ct--;\n    } while ((a & 0x8000) === 0);\n    this.a = a;\n\n    contexts[pos] = (cx_index << 1) | cx_mps;\n    return d;\n  }\n}\n\nexport { ArithmeticDecoder };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { DecodeStream } from \"./decode_stream.js\";\nimport { isDict } from \"./primitives.js\";\nimport { JpegImage } from \"./jpg.js\";\nimport { shadow } from \"../shared/util.js\";\n\n/**\n * For JPEG's we use a library to decode these images and the stream behaves\n * like all the other DecodeStreams.\n */\nclass JpegStream extends DecodeStream {\n  constructor(stream, maybeLength, params) {\n    // Some images may contain 'junk' before the SOI (start-of-image) marker.\n    // Note: this seems to mainly affect inline images.\n    let ch;\n    while ((ch = stream.getByte()) !== -1) {\n      // Find the first byte of the SOI marker (0xFFD8).\n      if (ch === 0xff) {\n        stream.skip(-1); // Reset the stream position to the SOI.\n        break;\n      }\n    }\n    super(maybeLength);\n\n    this.stream = stream;\n    this.dict = stream.dict;\n    this.maybeLength = maybeLength;\n    this.params = params;\n  }\n\n  get bytes() {\n    // If `this.maybeLength` is null, we'll get the entire stream.\n    return shadow(this, \"bytes\", this.stream.getBytes(this.maybeLength));\n  }\n\n  ensureBuffer(requested) {\n    // No-op, since `this.readBlock` will always parse the entire image and\n    // directly insert all of its data into `this.buffer`.\n  }\n\n  readBlock() {\n    if (this.eof) {\n      return;\n    }\n    const jpegOptions = {\n      decodeTransform: undefined,\n      colorTransform: undefined,\n    };\n\n    // Checking if values need to be transformed before conversion.\n    const decodeArr = this.dict.getArray(\"D\", \"Decode\");\n    if (this.forceRGB && Array.isArray(decodeArr)) {\n      const bitsPerComponent = this.dict.get(\"BPC\", \"BitsPerComponent\") || 8;\n      const decodeArrLength = decodeArr.length;\n      const transform = new Int32Array(decodeArrLength);\n      let transformNeeded = false;\n      const maxValue = (1 << bitsPerComponent) - 1;\n      for (let i = 0; i < decodeArrLength; i += 2) {\n        transform[i] = ((decodeArr[i + 1] - decodeArr[i]) * 256) | 0;\n        transform[i + 1] = (decodeArr[i] * maxValue) | 0;\n        if (transform[i] !== 256 || transform[i + 1] !== 0) {\n          transformNeeded = true;\n        }\n      }\n      if (transformNeeded) {\n        jpegOptions.decodeTransform = transform;\n      }\n    }\n    // Fetching the 'ColorTransform' entry, if it exists.\n    if (isDict(this.params)) {\n      const colorTransform = this.params.get(\"ColorTransform\");\n      if (Number.isInteger(colorTransform)) {\n        jpegOptions.colorTransform = colorTransform;\n      }\n    }\n    const jpegImage = new JpegImage(jpegOptions);\n\n    jpegImage.parse(this.bytes);\n    const data = jpegImage.getData({\n      width: this.drawWidth,\n      height: this.drawHeight,\n      forceRGB: this.forceRGB,\n      isSourcePDF: true,\n    });\n    this.buffer = data;\n    this.bufferLength = data.length;\n    this.eof = true;\n  }\n}\n\nexport { JpegStream };\n","/* Copyright 2014 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the 'License');\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an 'AS IS' BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { assert, BaseException, warn } from \"../shared/util.js\";\nimport { readUint16 } from \"./core_utils.js\";\n\nclass JpegError extends BaseException {\n  constructor(msg) {\n    super(`JPEG error: ${msg}`, \"JpegError\");\n  }\n}\n\nclass DNLMarkerError extends BaseException {\n  constructor(message, scanLines) {\n    super(message, \"DNLMarkerError\");\n    this.scanLines = scanLines;\n  }\n}\n\nclass EOIMarkerError extends BaseException {\n  constructor(msg) {\n    super(msg, \"EOIMarkerError\");\n  }\n}\n\n/**\n * This code was forked from https://github.com/notmasteryet/jpgjs.\n * The original version was created by GitHub user notmasteryet.\n *\n * - The JPEG specification can be found in the ITU CCITT Recommendation T.81\n *   (www.w3.org/Graphics/JPEG/itu-t81.pdf)\n * - The JFIF specification can be found in the JPEG File Interchange Format\n *   (www.w3.org/Graphics/JPEG/jfif3.pdf)\n * - The Adobe Application-Specific JPEG markers in the\n *   Supporting the DCT Filters in PostScript Level 2, Technical Note #5116\n *   (partners.adobe.com/public/developer/en/ps/sdk/5116.DCT_Filter.pdf)\n */\n\n// prettier-ignore\nconst dctZigZag = new Uint8Array([\n   0,\n   1,  8,\n  16,  9,  2,\n   3, 10, 17, 24,\n  32, 25, 18, 11, 4,\n   5, 12, 19, 26, 33, 40,\n  48, 41, 34, 27, 20, 13,  6,\n   7, 14, 21, 28, 35, 42, 49, 56,\n  57, 50, 43, 36, 29, 22, 15,\n  23, 30, 37, 44, 51, 58,\n  59, 52, 45, 38, 31,\n  39, 46, 53, 60,\n  61, 54, 47,\n  55, 62,\n  63\n]);\n\nconst dctCos1 = 4017; // cos(pi/16)\nconst dctSin1 = 799; // sin(pi/16)\nconst dctCos3 = 3406; // cos(3*pi/16)\nconst dctSin3 = 2276; // sin(3*pi/16)\nconst dctCos6 = 1567; // cos(6*pi/16)\nconst dctSin6 = 3784; // sin(6*pi/16)\nconst dctSqrt2 = 5793; // sqrt(2)\nconst dctSqrt1d2 = 2896; // sqrt(2) / 2\n\nfunction buildHuffmanTable(codeLengths, values) {\n  let k = 0,\n    i,\n    j,\n    length = 16;\n  while (length > 0 && !codeLengths[length - 1]) {\n    length--;\n  }\n  const code = [{ children: [], index: 0 }];\n  let p = code[0],\n    q;\n  for (i = 0; i < length; i++) {\n    for (j = 0; j < codeLengths[i]; j++) {\n      p = code.pop();\n      p.children[p.index] = values[k];\n      while (p.index > 0) {\n        p = code.pop();\n      }\n      p.index++;\n      code.push(p);\n      while (code.length <= i) {\n        code.push((q = { children: [], index: 0 }));\n        p.children[p.index] = q.children;\n        p = q;\n      }\n      k++;\n    }\n    if (i + 1 < length) {\n      // p here points to last code\n      code.push((q = { children: [], index: 0 }));\n      p.children[p.index] = q.children;\n      p = q;\n    }\n  }\n  return code[0].children;\n}\n\nfunction getBlockBufferOffset(component, row, col) {\n  return 64 * ((component.blocksPerLine + 1) * row + col);\n}\n\nfunction decodeScan(\n  data,\n  offset,\n  frame,\n  components,\n  resetInterval,\n  spectralStart,\n  spectralEnd,\n  successivePrev,\n  successive,\n  parseDNLMarker = false\n) {\n  const mcusPerLine = frame.mcusPerLine;\n  const progressive = frame.progressive;\n\n  const startOffset = offset;\n  let bitsData = 0,\n    bitsCount = 0;\n\n  function readBit() {\n    if (bitsCount > 0) {\n      bitsCount--;\n      return (bitsData >> bitsCount) & 1;\n    }\n    bitsData = data[offset++];\n    if (bitsData === 0xff) {\n      const nextByte = data[offset++];\n      if (nextByte) {\n        if (nextByte === /* DNL = */ 0xdc && parseDNLMarker) {\n          offset += 2; // Skip marker length.\n\n          const scanLines = readUint16(data, offset);\n          offset += 2;\n          if (scanLines > 0 && scanLines !== frame.scanLines) {\n            throw new DNLMarkerError(\n              \"Found DNL marker (0xFFDC) while parsing scan data\",\n              scanLines\n            );\n          }\n        } else if (nextByte === /* EOI = */ 0xd9) {\n          if (parseDNLMarker) {\n            // NOTE: only 8-bit JPEG images are supported in this decoder.\n            const maybeScanLines = blockRow * (frame.precision === 8 ? 8 : 0);\n            // Heuristic to attempt to handle corrupt JPEG images with too\n            // large `scanLines` parameter, by falling back to the currently\n            // parsed number of scanLines when it's at least (approximately)\n            // one order of magnitude smaller than expected (fixes\n            // issue10880.pdf and issue10989.pdf).\n            if (\n              maybeScanLines > 0 &&\n              Math.round(frame.scanLines / maybeScanLines) >= 10\n            ) {\n              throw new DNLMarkerError(\n                \"Found EOI marker (0xFFD9) while parsing scan data, \" +\n                  \"possibly caused by incorrect `scanLines` parameter\",\n                maybeScanLines\n              );\n            }\n          }\n          throw new EOIMarkerError(\n            \"Found EOI marker (0xFFD9) while parsing scan data\"\n          );\n        }\n        throw new JpegError(\n          `unexpected marker ${((bitsData << 8) | nextByte).toString(16)}`\n        );\n      }\n      // unstuff 0\n    }\n    bitsCount = 7;\n    return bitsData >>> 7;\n  }\n\n  function decodeHuffman(tree) {\n    let node = tree;\n    while (true) {\n      node = node[readBit()];\n      switch (typeof node) {\n        case \"number\":\n          return node;\n        case \"object\":\n          continue;\n      }\n      throw new JpegError(\"invalid huffman sequence\");\n    }\n  }\n\n  function receive(length) {\n    let n = 0;\n    while (length > 0) {\n      n = (n << 1) | readBit();\n      length--;\n    }\n    return n;\n  }\n\n  function receiveAndExtend(length) {\n    if (length === 1) {\n      return readBit() === 1 ? 1 : -1;\n    }\n    const n = receive(length);\n    if (n >= 1 << (length - 1)) {\n      return n;\n    }\n    return n + (-1 << length) + 1;\n  }\n\n  function decodeBaseline(component, blockOffset) {\n    const t = decodeHuffman(component.huffmanTableDC);\n    const diff = t === 0 ? 0 : receiveAndExtend(t);\n    component.blockData[blockOffset] = component.pred += diff;\n    let k = 1;\n    while (k < 64) {\n      const rs = decodeHuffman(component.huffmanTableAC);\n      const s = rs & 15,\n        r = rs >> 4;\n      if (s === 0) {\n        if (r < 15) {\n          break;\n        }\n        k += 16;\n        continue;\n      }\n      k += r;\n      const z = dctZigZag[k];\n      component.blockData[blockOffset + z] = receiveAndExtend(s);\n      k++;\n    }\n  }\n\n  function decodeDCFirst(component, blockOffset) {\n    const t = decodeHuffman(component.huffmanTableDC);\n    const diff = t === 0 ? 0 : receiveAndExtend(t) << successive;\n    component.blockData[blockOffset] = component.pred += diff;\n  }\n\n  function decodeDCSuccessive(component, blockOffset) {\n    component.blockData[blockOffset] |= readBit() << successive;\n  }\n\n  let eobrun = 0;\n  function decodeACFirst(component, blockOffset) {\n    if (eobrun > 0) {\n      eobrun--;\n      return;\n    }\n    let k = spectralStart;\n    const e = spectralEnd;\n    while (k <= e) {\n      const rs = decodeHuffman(component.huffmanTableAC);\n      const s = rs & 15,\n        r = rs >> 4;\n      if (s === 0) {\n        if (r < 15) {\n          eobrun = receive(r) + (1 << r) - 1;\n          break;\n        }\n        k += 16;\n        continue;\n      }\n      k += r;\n      const z = dctZigZag[k];\n      component.blockData[blockOffset + z] =\n        receiveAndExtend(s) * (1 << successive);\n      k++;\n    }\n  }\n\n  let successiveACState = 0,\n    successiveACNextValue;\n  function decodeACSuccessive(component, blockOffset) {\n    let k = spectralStart;\n    const e = spectralEnd;\n    let r = 0;\n    let s;\n    let rs;\n    while (k <= e) {\n      const offsetZ = blockOffset + dctZigZag[k];\n      const sign = component.blockData[offsetZ] < 0 ? -1 : 1;\n      switch (successiveACState) {\n        case 0: // initial state\n          rs = decodeHuffman(component.huffmanTableAC);\n          s = rs & 15;\n          r = rs >> 4;\n          if (s === 0) {\n            if (r < 15) {\n              eobrun = receive(r) + (1 << r);\n              successiveACState = 4;\n            } else {\n              r = 16;\n              successiveACState = 1;\n            }\n          } else {\n            if (s !== 1) {\n              throw new JpegError(\"invalid ACn encoding\");\n            }\n            successiveACNextValue = receiveAndExtend(s);\n            successiveACState = r ? 2 : 3;\n          }\n          continue;\n        case 1: // skipping r zero items\n        case 2:\n          if (component.blockData[offsetZ]) {\n            component.blockData[offsetZ] += sign * (readBit() << successive);\n          } else {\n            r--;\n            if (r === 0) {\n              successiveACState = successiveACState === 2 ? 3 : 0;\n            }\n          }\n          break;\n        case 3: // set value for a zero item\n          if (component.blockData[offsetZ]) {\n            component.blockData[offsetZ] += sign * (readBit() << successive);\n          } else {\n            component.blockData[offsetZ] = successiveACNextValue << successive;\n            successiveACState = 0;\n          }\n          break;\n        case 4: // eob\n          if (component.blockData[offsetZ]) {\n            component.blockData[offsetZ] += sign * (readBit() << successive);\n          }\n          break;\n      }\n      k++;\n    }\n    if (successiveACState === 4) {\n      eobrun--;\n      if (eobrun === 0) {\n        successiveACState = 0;\n      }\n    }\n  }\n\n  let blockRow = 0;\n  function decodeMcu(component, decode, mcu, row, col) {\n    const mcuRow = (mcu / mcusPerLine) | 0;\n    const mcuCol = mcu % mcusPerLine;\n    blockRow = mcuRow * component.v + row;\n    const blockCol = mcuCol * component.h + col;\n    const blockOffset = getBlockBufferOffset(component, blockRow, blockCol);\n    decode(component, blockOffset);\n  }\n\n  function decodeBlock(component, decode, mcu) {\n    blockRow = (mcu / component.blocksPerLine) | 0;\n    const blockCol = mcu % component.blocksPerLine;\n    const blockOffset = getBlockBufferOffset(component, blockRow, blockCol);\n    decode(component, blockOffset);\n  }\n\n  const componentsLength = components.length;\n  let component, i, j, k, n;\n  let decodeFn;\n  if (progressive) {\n    if (spectralStart === 0) {\n      decodeFn = successivePrev === 0 ? decodeDCFirst : decodeDCSuccessive;\n    } else {\n      decodeFn = successivePrev === 0 ? decodeACFirst : decodeACSuccessive;\n    }\n  } else {\n    decodeFn = decodeBaseline;\n  }\n\n  let mcu = 0,\n    fileMarker;\n  let mcuExpected;\n  if (componentsLength === 1) {\n    mcuExpected = components[0].blocksPerLine * components[0].blocksPerColumn;\n  } else {\n    mcuExpected = mcusPerLine * frame.mcusPerColumn;\n  }\n\n  let h, v;\n  while (mcu <= mcuExpected) {\n    // reset interval stuff\n    const mcuToRead = resetInterval\n      ? Math.min(mcuExpected - mcu, resetInterval)\n      : mcuExpected;\n\n    // The `mcuToRead === 0` case should only occur when all of the expected\n    // MCU data has been already parsed, i.e. when `mcu === mcuExpected`, but\n    // some corrupt JPEG images contain more data than intended and we thus\n    // want to skip over any extra RSTx markers below (fixes issue11794.pdf).\n    if (mcuToRead > 0) {\n      for (i = 0; i < componentsLength; i++) {\n        components[i].pred = 0;\n      }\n      eobrun = 0;\n\n      if (componentsLength === 1) {\n        component = components[0];\n        for (n = 0; n < mcuToRead; n++) {\n          decodeBlock(component, decodeFn, mcu);\n          mcu++;\n        }\n      } else {\n        for (n = 0; n < mcuToRead; n++) {\n          for (i = 0; i < componentsLength; i++) {\n            component = components[i];\n            h = component.h;\n            v = component.v;\n            for (j = 0; j < v; j++) {\n              for (k = 0; k < h; k++) {\n                decodeMcu(component, decodeFn, mcu, j, k);\n              }\n            }\n          }\n          mcu++;\n        }\n      }\n    }\n\n    // find marker\n    bitsCount = 0;\n    fileMarker = findNextFileMarker(data, offset);\n    if (!fileMarker) {\n      break; // Reached the end of the image data without finding any marker.\n    }\n    if (fileMarker.invalid) {\n      // Some bad images seem to pad Scan blocks with e.g. zero bytes, skip\n      // past those to attempt to find a valid marker (fixes issue4090.pdf).\n      const partialMsg = mcuToRead > 0 ? \"unexpected\" : \"excessive\";\n      warn(\n        `decodeScan - ${partialMsg} MCU data, current marker is: ${fileMarker.invalid}`\n      );\n      offset = fileMarker.offset;\n    }\n    if (fileMarker.marker >= 0xffd0 && fileMarker.marker <= 0xffd7) {\n      // RSTx\n      offset += 2;\n    } else {\n      break;\n    }\n  }\n\n  return offset - startOffset;\n}\n\n// A port of poppler's IDCT method which in turn is taken from:\n//   Christoph Loeffler, Adriaan Ligtenberg, George S. Moschytz,\n//   'Practical Fast 1-D DCT Algorithms with 11 Multiplications',\n//   IEEE Intl. Conf. on Acoustics, Speech & Signal Processing, 1989,\n//   988-991.\nfunction quantizeAndInverse(component, blockBufferOffset, p) {\n  const qt = component.quantizationTable,\n    blockData = component.blockData;\n  let v0, v1, v2, v3, v4, v5, v6, v7;\n  let p0, p1, p2, p3, p4, p5, p6, p7;\n  let t;\n\n  if (!qt) {\n    throw new JpegError(\"missing required Quantization Table.\");\n  }\n\n  // inverse DCT on rows\n  for (let row = 0; row < 64; row += 8) {\n    // gather block data\n    p0 = blockData[blockBufferOffset + row];\n    p1 = blockData[blockBufferOffset + row + 1];\n    p2 = blockData[blockBufferOffset + row + 2];\n    p3 = blockData[blockBufferOffset + row + 3];\n    p4 = blockData[blockBufferOffset + row + 4];\n    p5 = blockData[blockBufferOffset + row + 5];\n    p6 = blockData[blockBufferOffset + row + 6];\n    p7 = blockData[blockBufferOffset + row + 7];\n\n    // dequant p0\n    p0 *= qt[row];\n\n    // check for all-zero AC coefficients\n    if ((p1 | p2 | p3 | p4 | p5 | p6 | p7) === 0) {\n      t = (dctSqrt2 * p0 + 512) >> 10;\n      p[row] = t;\n      p[row + 1] = t;\n      p[row + 2] = t;\n      p[row + 3] = t;\n      p[row + 4] = t;\n      p[row + 5] = t;\n      p[row + 6] = t;\n      p[row + 7] = t;\n      continue;\n    }\n    // dequant p1 ... p7\n    p1 *= qt[row + 1];\n    p2 *= qt[row + 2];\n    p3 *= qt[row + 3];\n    p4 *= qt[row + 4];\n    p5 *= qt[row + 5];\n    p6 *= qt[row + 6];\n    p7 *= qt[row + 7];\n\n    // stage 4\n    v0 = (dctSqrt2 * p0 + 128) >> 8;\n    v1 = (dctSqrt2 * p4 + 128) >> 8;\n    v2 = p2;\n    v3 = p6;\n    v4 = (dctSqrt1d2 * (p1 - p7) + 128) >> 8;\n    v7 = (dctSqrt1d2 * (p1 + p7) + 128) >> 8;\n    v5 = p3 << 4;\n    v6 = p5 << 4;\n\n    // stage 3\n    v0 = (v0 + v1 + 1) >> 1;\n    v1 = v0 - v1;\n    t = (v2 * dctSin6 + v3 * dctCos6 + 128) >> 8;\n    v2 = (v2 * dctCos6 - v3 * dctSin6 + 128) >> 8;\n    v3 = t;\n    v4 = (v4 + v6 + 1) >> 1;\n    v6 = v4 - v6;\n    v7 = (v7 + v5 + 1) >> 1;\n    v5 = v7 - v5;\n\n    // stage 2\n    v0 = (v0 + v3 + 1) >> 1;\n    v3 = v0 - v3;\n    v1 = (v1 + v2 + 1) >> 1;\n    v2 = v1 - v2;\n    t = (v4 * dctSin3 + v7 * dctCos3 + 2048) >> 12;\n    v4 = (v4 * dctCos3 - v7 * dctSin3 + 2048) >> 12;\n    v7 = t;\n    t = (v5 * dctSin1 + v6 * dctCos1 + 2048) >> 12;\n    v5 = (v5 * dctCos1 - v6 * dctSin1 + 2048) >> 12;\n    v6 = t;\n\n    // stage 1\n    p[row] = v0 + v7;\n    p[row + 7] = v0 - v7;\n    p[row + 1] = v1 + v6;\n    p[row + 6] = v1 - v6;\n    p[row + 2] = v2 + v5;\n    p[row + 5] = v2 - v5;\n    p[row + 3] = v3 + v4;\n    p[row + 4] = v3 - v4;\n  }\n\n  // inverse DCT on columns\n  for (let col = 0; col < 8; ++col) {\n    p0 = p[col];\n    p1 = p[col + 8];\n    p2 = p[col + 16];\n    p3 = p[col + 24];\n    p4 = p[col + 32];\n    p5 = p[col + 40];\n    p6 = p[col + 48];\n    p7 = p[col + 56];\n\n    // check for all-zero AC coefficients\n    if ((p1 | p2 | p3 | p4 | p5 | p6 | p7) === 0) {\n      t = (dctSqrt2 * p0 + 8192) >> 14;\n      // Convert to 8-bit.\n      if (t < -2040) {\n        t = 0;\n      } else if (t >= 2024) {\n        t = 255;\n      } else {\n        t = (t + 2056) >> 4;\n      }\n      blockData[blockBufferOffset + col] = t;\n      blockData[blockBufferOffset + col + 8] = t;\n      blockData[blockBufferOffset + col + 16] = t;\n      blockData[blockBufferOffset + col + 24] = t;\n      blockData[blockBufferOffset + col + 32] = t;\n      blockData[blockBufferOffset + col + 40] = t;\n      blockData[blockBufferOffset + col + 48] = t;\n      blockData[blockBufferOffset + col + 56] = t;\n      continue;\n    }\n\n    // stage 4\n    v0 = (dctSqrt2 * p0 + 2048) >> 12;\n    v1 = (dctSqrt2 * p4 + 2048) >> 12;\n    v2 = p2;\n    v3 = p6;\n    v4 = (dctSqrt1d2 * (p1 - p7) + 2048) >> 12;\n    v7 = (dctSqrt1d2 * (p1 + p7) + 2048) >> 12;\n    v5 = p3;\n    v6 = p5;\n\n    // stage 3\n    // Shift v0 by 128.5 << 5 here, so we don't need to shift p0...p7 when\n    // converting to UInt8 range later.\n    v0 = ((v0 + v1 + 1) >> 1) + 4112;\n    v1 = v0 - v1;\n    t = (v2 * dctSin6 + v3 * dctCos6 + 2048) >> 12;\n    v2 = (v2 * dctCos6 - v3 * dctSin6 + 2048) >> 12;\n    v3 = t;\n    v4 = (v4 + v6 + 1) >> 1;\n    v6 = v4 - v6;\n    v7 = (v7 + v5 + 1) >> 1;\n    v5 = v7 - v5;\n\n    // stage 2\n    v0 = (v0 + v3 + 1) >> 1;\n    v3 = v0 - v3;\n    v1 = (v1 + v2 + 1) >> 1;\n    v2 = v1 - v2;\n    t = (v4 * dctSin3 + v7 * dctCos3 + 2048) >> 12;\n    v4 = (v4 * dctCos3 - v7 * dctSin3 + 2048) >> 12;\n    v7 = t;\n    t = (v5 * dctSin1 + v6 * dctCos1 + 2048) >> 12;\n    v5 = (v5 * dctCos1 - v6 * dctSin1 + 2048) >> 12;\n    v6 = t;\n\n    // stage 1\n    p0 = v0 + v7;\n    p7 = v0 - v7;\n    p1 = v1 + v6;\n    p6 = v1 - v6;\n    p2 = v2 + v5;\n    p5 = v2 - v5;\n    p3 = v3 + v4;\n    p4 = v3 - v4;\n\n    // Convert to 8-bit integers.\n    if (p0 < 16) {\n      p0 = 0;\n    } else if (p0 >= 4080) {\n      p0 = 255;\n    } else {\n      p0 >>= 4;\n    }\n    if (p1 < 16) {\n      p1 = 0;\n    } else if (p1 >= 4080) {\n      p1 = 255;\n    } else {\n      p1 >>= 4;\n    }\n    if (p2 < 16) {\n      p2 = 0;\n    } else if (p2 >= 4080) {\n      p2 = 255;\n    } else {\n      p2 >>= 4;\n    }\n    if (p3 < 16) {\n      p3 = 0;\n    } else if (p3 >= 4080) {\n      p3 = 255;\n    } else {\n      p3 >>= 4;\n    }\n    if (p4 < 16) {\n      p4 = 0;\n    } else if (p4 >= 4080) {\n      p4 = 255;\n    } else {\n      p4 >>= 4;\n    }\n    if (p5 < 16) {\n      p5 = 0;\n    } else if (p5 >= 4080) {\n      p5 = 255;\n    } else {\n      p5 >>= 4;\n    }\n    if (p6 < 16) {\n      p6 = 0;\n    } else if (p6 >= 4080) {\n      p6 = 255;\n    } else {\n      p6 >>= 4;\n    }\n    if (p7 < 16) {\n      p7 = 0;\n    } else if (p7 >= 4080) {\n      p7 = 255;\n    } else {\n      p7 >>= 4;\n    }\n\n    // store block data\n    blockData[blockBufferOffset + col] = p0;\n    blockData[blockBufferOffset + col + 8] = p1;\n    blockData[blockBufferOffset + col + 16] = p2;\n    blockData[blockBufferOffset + col + 24] = p3;\n    blockData[blockBufferOffset + col + 32] = p4;\n    blockData[blockBufferOffset + col + 40] = p5;\n    blockData[blockBufferOffset + col + 48] = p6;\n    blockData[blockBufferOffset + col + 56] = p7;\n  }\n}\n\nfunction buildComponentData(frame, component) {\n  const blocksPerLine = component.blocksPerLine;\n  const blocksPerColumn = component.blocksPerColumn;\n  const computationBuffer = new Int16Array(64);\n\n  for (let blockRow = 0; blockRow < blocksPerColumn; blockRow++) {\n    for (let blockCol = 0; blockCol < blocksPerLine; blockCol++) {\n      const offset = getBlockBufferOffset(component, blockRow, blockCol);\n      quantizeAndInverse(component, offset, computationBuffer);\n    }\n  }\n  return component.blockData;\n}\n\nfunction findNextFileMarker(data, currentPos, startPos = currentPos) {\n  const maxPos = data.length - 1;\n  let newPos = startPos < currentPos ? startPos : currentPos;\n\n  if (currentPos >= maxPos) {\n    return null; // Don't attempt to read non-existent data and just return.\n  }\n  const currentMarker = readUint16(data, currentPos);\n  if (currentMarker >= 0xffc0 && currentMarker <= 0xfffe) {\n    return {\n      invalid: null,\n      marker: currentMarker,\n      offset: currentPos,\n    };\n  }\n  let newMarker = readUint16(data, newPos);\n  while (!(newMarker >= 0xffc0 && newMarker <= 0xfffe)) {\n    if (++newPos >= maxPos) {\n      return null; // Don't attempt to read non-existent data and just return.\n    }\n    newMarker = readUint16(data, newPos);\n  }\n  return {\n    invalid: currentMarker.toString(16),\n    marker: newMarker,\n    offset: newPos,\n  };\n}\n\nclass JpegImage {\n  constructor({ decodeTransform = null, colorTransform = -1 } = {}) {\n    this._decodeTransform = decodeTransform;\n    this._colorTransform = colorTransform;\n  }\n\n  parse(data, { dnlScanLines = null } = {}) {\n    function readDataBlock() {\n      const length = readUint16(data, offset);\n      offset += 2;\n      let endOffset = offset + length - 2;\n\n      const fileMarker = findNextFileMarker(data, endOffset, offset);\n      if (fileMarker && fileMarker.invalid) {\n        warn(\n          \"readDataBlock - incorrect length, current marker is: \" +\n            fileMarker.invalid\n        );\n        endOffset = fileMarker.offset;\n      }\n\n      const array = data.subarray(offset, endOffset);\n      offset += array.length;\n      return array;\n    }\n\n    function prepareComponents(frame) {\n      const mcusPerLine = Math.ceil(frame.samplesPerLine / 8 / frame.maxH);\n      const mcusPerColumn = Math.ceil(frame.scanLines / 8 / frame.maxV);\n      for (let i = 0, ii = frame.components.length; i < ii; i++) {\n        const component = frame.components[i];\n        const blocksPerLine = Math.ceil(\n          (Math.ceil(frame.samplesPerLine / 8) * component.h) / frame.maxH\n        );\n        const blocksPerColumn = Math.ceil(\n          (Math.ceil(frame.scanLines / 8) * component.v) / frame.maxV\n        );\n        const blocksPerLineForMcu = mcusPerLine * component.h;\n        const blocksPerColumnForMcu = mcusPerColumn * component.v;\n\n        const blocksBufferSize =\n          64 * blocksPerColumnForMcu * (blocksPerLineForMcu + 1);\n        component.blockData = new Int16Array(blocksBufferSize);\n        component.blocksPerLine = blocksPerLine;\n        component.blocksPerColumn = blocksPerColumn;\n      }\n      frame.mcusPerLine = mcusPerLine;\n      frame.mcusPerColumn = mcusPerColumn;\n    }\n\n    let offset = 0;\n    let jfif = null;\n    let adobe = null;\n    let frame, resetInterval;\n    let numSOSMarkers = 0;\n    const quantizationTables = [];\n    const huffmanTablesAC = [],\n      huffmanTablesDC = [];\n\n    let fileMarker = readUint16(data, offset);\n    offset += 2;\n    if (fileMarker !== /* SOI (Start of Image) = */ 0xffd8) {\n      throw new JpegError(\"SOI not found\");\n    }\n    fileMarker = readUint16(data, offset);\n    offset += 2;\n\n    markerLoop: while (fileMarker !== /* EOI (End of Image) = */ 0xffd9) {\n      let i, j, l;\n      switch (fileMarker) {\n        case 0xffe0: // APP0 (Application Specific)\n        case 0xffe1: // APP1\n        case 0xffe2: // APP2\n        case 0xffe3: // APP3\n        case 0xffe4: // APP4\n        case 0xffe5: // APP5\n        case 0xffe6: // APP6\n        case 0xffe7: // APP7\n        case 0xffe8: // APP8\n        case 0xffe9: // APP9\n        case 0xffea: // APP10\n        case 0xffeb: // APP11\n        case 0xffec: // APP12\n        case 0xffed: // APP13\n        case 0xffee: // APP14\n        case 0xffef: // APP15\n        case 0xfffe: // COM (Comment)\n          const appData = readDataBlock();\n\n          if (fileMarker === 0xffe0) {\n            // 'JFIF\\x00'\n            if (\n              appData[0] === 0x4a &&\n              appData[1] === 0x46 &&\n              appData[2] === 0x49 &&\n              appData[3] === 0x46 &&\n              appData[4] === 0\n            ) {\n              jfif = {\n                version: { major: appData[5], minor: appData[6] },\n                densityUnits: appData[7],\n                xDensity: (appData[8] << 8) | appData[9],\n                yDensity: (appData[10] << 8) | appData[11],\n                thumbWidth: appData[12],\n                thumbHeight: appData[13],\n                thumbData: appData.subarray(\n                  14,\n                  14 + 3 * appData[12] * appData[13]\n                ),\n              };\n            }\n          }\n          // TODO APP1 - Exif\n          if (fileMarker === 0xffee) {\n            // 'Adobe'\n            if (\n              appData[0] === 0x41 &&\n              appData[1] === 0x64 &&\n              appData[2] === 0x6f &&\n              appData[3] === 0x62 &&\n              appData[4] === 0x65\n            ) {\n              adobe = {\n                version: (appData[5] << 8) | appData[6],\n                flags0: (appData[7] << 8) | appData[8],\n                flags1: (appData[9] << 8) | appData[10],\n                transformCode: appData[11],\n              };\n            }\n          }\n          break;\n\n        case 0xffdb: // DQT (Define Quantization Tables)\n          const quantizationTablesLength = readUint16(data, offset);\n          offset += 2;\n          const quantizationTablesEnd = quantizationTablesLength + offset - 2;\n          let z;\n          while (offset < quantizationTablesEnd) {\n            const quantizationTableSpec = data[offset++];\n            const tableData = new Uint16Array(64);\n            if (quantizationTableSpec >> 4 === 0) {\n              // 8 bit values\n              for (j = 0; j < 64; j++) {\n                z = dctZigZag[j];\n                tableData[z] = data[offset++];\n              }\n            } else if (quantizationTableSpec >> 4 === 1) {\n              // 16 bit values\n              for (j = 0; j < 64; j++) {\n                z = dctZigZag[j];\n                tableData[z] = readUint16(data, offset);\n                offset += 2;\n              }\n            } else {\n              throw new JpegError(\"DQT - invalid table spec\");\n            }\n            quantizationTables[quantizationTableSpec & 15] = tableData;\n          }\n          break;\n\n        case 0xffc0: // SOF0 (Start of Frame, Baseline DCT)\n        case 0xffc1: // SOF1 (Start of Frame, Extended DCT)\n        case 0xffc2: // SOF2 (Start of Frame, Progressive DCT)\n          if (frame) {\n            throw new JpegError(\"Only single frame JPEGs supported\");\n          }\n          offset += 2; // Skip marker length.\n\n          frame = {};\n          frame.extended = fileMarker === 0xffc1;\n          frame.progressive = fileMarker === 0xffc2;\n          frame.precision = data[offset++];\n          const sofScanLines = readUint16(data, offset);\n          offset += 2;\n          frame.scanLines = dnlScanLines || sofScanLines;\n          frame.samplesPerLine = readUint16(data, offset);\n          offset += 2;\n          frame.components = [];\n          frame.componentIds = {};\n          const componentsCount = data[offset++];\n          let maxH = 0,\n            maxV = 0;\n          for (i = 0; i < componentsCount; i++) {\n            const componentId = data[offset];\n            const h = data[offset + 1] >> 4;\n            const v = data[offset + 1] & 15;\n            if (maxH < h) {\n              maxH = h;\n            }\n            if (maxV < v) {\n              maxV = v;\n            }\n            const qId = data[offset + 2];\n            l = frame.components.push({\n              h,\n              v,\n              quantizationId: qId,\n              quantizationTable: null, // See comment below.\n            });\n            frame.componentIds[componentId] = l - 1;\n            offset += 3;\n          }\n          frame.maxH = maxH;\n          frame.maxV = maxV;\n          prepareComponents(frame);\n          break;\n\n        case 0xffc4: // DHT (Define Huffman Tables)\n          const huffmanLength = readUint16(data, offset);\n          offset += 2;\n          for (i = 2; i < huffmanLength; ) {\n            const huffmanTableSpec = data[offset++];\n            const codeLengths = new Uint8Array(16);\n            let codeLengthSum = 0;\n            for (j = 0; j < 16; j++, offset++) {\n              codeLengthSum += codeLengths[j] = data[offset];\n            }\n            const huffmanValues = new Uint8Array(codeLengthSum);\n            for (j = 0; j < codeLengthSum; j++, offset++) {\n              huffmanValues[j] = data[offset];\n            }\n            i += 17 + codeLengthSum;\n\n            (huffmanTableSpec >> 4 === 0 ? huffmanTablesDC : huffmanTablesAC)[\n              huffmanTableSpec & 15\n            ] = buildHuffmanTable(codeLengths, huffmanValues);\n          }\n          break;\n\n        case 0xffdd: // DRI (Define Restart Interval)\n          offset += 2; // Skip marker length.\n\n          resetInterval = readUint16(data, offset);\n          offset += 2;\n          break;\n\n        case 0xffda: // SOS (Start of Scan)\n          // A DNL marker (0xFFDC), if it exists, is only allowed at the end\n          // of the first scan segment and may only occur once in an image.\n          // Furthermore, to prevent an infinite loop, do *not* attempt to\n          // parse DNL markers during re-parsing of the JPEG scan data.\n          const parseDNLMarker = ++numSOSMarkers === 1 && !dnlScanLines;\n\n          offset += 2; // Skip marker length.\n\n          const selectorsCount = data[offset++],\n            components = [];\n          for (i = 0; i < selectorsCount; i++) {\n            const index = data[offset++];\n            const componentIndex = frame.componentIds[index];\n            const component = frame.components[componentIndex];\n            component.index = index;\n            const tableSpec = data[offset++];\n            component.huffmanTableDC = huffmanTablesDC[tableSpec >> 4];\n            component.huffmanTableAC = huffmanTablesAC[tableSpec & 15];\n            components.push(component);\n          }\n          const spectralStart = data[offset++],\n            spectralEnd = data[offset++],\n            successiveApproximation = data[offset++];\n          try {\n            const processed = decodeScan(\n              data,\n              offset,\n              frame,\n              components,\n              resetInterval,\n              spectralStart,\n              spectralEnd,\n              successiveApproximation >> 4,\n              successiveApproximation & 15,\n              parseDNLMarker\n            );\n            offset += processed;\n          } catch (ex) {\n            if (ex instanceof DNLMarkerError) {\n              warn(`${ex.message} -- attempting to re-parse the JPEG image.`);\n              return this.parse(data, { dnlScanLines: ex.scanLines });\n            } else if (ex instanceof EOIMarkerError) {\n              warn(`${ex.message} -- ignoring the rest of the image data.`);\n              break markerLoop;\n            }\n            throw ex;\n          }\n          break;\n\n        case 0xffdc: // DNL (Define Number of Lines)\n          // Ignore the marker, since it's being handled in `decodeScan`.\n          offset += 4;\n          break;\n\n        case 0xffff: // Fill bytes\n          if (data[offset] !== 0xff) {\n            // Avoid skipping a valid marker.\n            offset--;\n          }\n          break;\n\n        default:\n          // Could be incorrect encoding -- the last 0xFF byte of the previous\n          // block could have been eaten by the encoder, hence we fallback to\n          // `startPos = offset - 3` when looking for the next valid marker.\n          const nextFileMarker = findNextFileMarker(\n            data,\n            /* currentPos = */ offset - 2,\n            /* startPos = */ offset - 3\n          );\n          if (nextFileMarker && nextFileMarker.invalid) {\n            warn(\n              \"JpegImage.parse - unexpected data, current marker is: \" +\n                nextFileMarker.invalid\n            );\n            offset = nextFileMarker.offset;\n            break;\n          }\n          if (!nextFileMarker || offset >= data.length - 1) {\n            warn(\n              \"JpegImage.parse - reached the end of the image data \" +\n                \"without finding an EOI marker (0xFFD9).\"\n            );\n            break markerLoop;\n          }\n          throw new JpegError(\n            \"JpegImage.parse - unknown marker: \" + fileMarker.toString(16)\n          );\n      }\n      fileMarker = readUint16(data, offset);\n      offset += 2;\n    }\n\n    this.width = frame.samplesPerLine;\n    this.height = frame.scanLines;\n    this.jfif = jfif;\n    this.adobe = adobe;\n    this.components = [];\n    for (let i = 0, ii = frame.components.length; i < ii; i++) {\n      const component = frame.components[i];\n\n      // Prevent errors when DQT markers are placed after SOF{n} markers,\n      // by assigning the `quantizationTable` entry after the entire image\n      // has been parsed (fixes issue7406.pdf).\n      const quantizationTable = quantizationTables[component.quantizationId];\n      if (quantizationTable) {\n        component.quantizationTable = quantizationTable;\n      }\n\n      this.components.push({\n        index: component.index,\n        output: buildComponentData(frame, component),\n        scaleX: component.h / frame.maxH,\n        scaleY: component.v / frame.maxV,\n        blocksPerLine: component.blocksPerLine,\n        blocksPerColumn: component.blocksPerColumn,\n      });\n    }\n    this.numComponents = this.components.length;\n    return undefined;\n  }\n\n  _getLinearizedBlockData(width, height, isSourcePDF = false) {\n    const scaleX = this.width / width,\n      scaleY = this.height / height;\n\n    let component, componentScaleX, componentScaleY, blocksPerScanline;\n    let x, y, i, j, k;\n    let index;\n    let offset = 0;\n    let output;\n    const numComponents = this.components.length;\n    const dataLength = width * height * numComponents;\n    const data = new Uint8ClampedArray(dataLength);\n    const xScaleBlockOffset = new Uint32Array(width);\n    const mask3LSB = 0xfffffff8; // used to clear the 3 LSBs\n    let lastComponentScaleX;\n\n    for (i = 0; i < numComponents; i++) {\n      component = this.components[i];\n      componentScaleX = component.scaleX * scaleX;\n      componentScaleY = component.scaleY * scaleY;\n      offset = i;\n      output = component.output;\n      blocksPerScanline = (component.blocksPerLine + 1) << 3;\n      // Precalculate the `xScaleBlockOffset`. Since it doesn't depend on the\n      // component data, that's only necessary when `componentScaleX` changes.\n      if (componentScaleX !== lastComponentScaleX) {\n        for (x = 0; x < width; x++) {\n          j = 0 | (x * componentScaleX);\n          xScaleBlockOffset[x] = ((j & mask3LSB) << 3) | (j & 7);\n        }\n        lastComponentScaleX = componentScaleX;\n      }\n      // linearize the blocks of the component\n      for (y = 0; y < height; y++) {\n        j = 0 | (y * componentScaleY);\n        index = (blocksPerScanline * (j & mask3LSB)) | ((j & 7) << 3);\n        for (x = 0; x < width; x++) {\n          data[offset] = output[index + xScaleBlockOffset[x]];\n          offset += numComponents;\n        }\n      }\n    }\n\n    // decodeTransform contains pairs of multiplier (-256..256) and additive\n    let transform = this._decodeTransform;\n\n    // In PDF files, JPEG images with CMYK colour spaces are usually inverted\n    // (this can be observed by extracting the raw image data).\n    // Since the conversion algorithms (see below) were written primarily for\n    // the PDF use-cases, attempting to use `JpegImage` to parse standalone\n    // JPEG (CMYK) images may thus result in inverted images (see issue 9513).\n    //\n    // Unfortunately it's not (always) possible to tell, from the image data\n    // alone, if it needs to be inverted. Thus in an attempt to provide better\n    // out-of-box behaviour when `JpegImage` is used standalone, default to\n    // inverting JPEG (CMYK) images if and only if the image data does *not*\n    // come from a PDF file and no `decodeTransform` was passed by the user.\n    if (!isSourcePDF && numComponents === 4 && !transform) {\n      transform = new Int32Array([-256, 255, -256, 255, -256, 255, -256, 255]);\n    }\n\n    if (transform) {\n      for (i = 0; i < dataLength; ) {\n        for (j = 0, k = 0; j < numComponents; j++, i++, k += 2) {\n          data[i] = ((data[i] * transform[k]) >> 8) + transform[k + 1];\n        }\n      }\n    }\n    return data;\n  }\n\n  get _isColorConversionNeeded() {\n    if (this.adobe) {\n      // The adobe transform marker overrides any previous setting.\n      return !!this.adobe.transformCode;\n    }\n    if (this.numComponents === 3) {\n      if (this._colorTransform === 0) {\n        // If the Adobe transform marker is not present and the image\n        // dictionary has a 'ColorTransform' entry, explicitly set to `0`,\n        // then the colours should *not* be transformed.\n        return false;\n      } else if (\n        this.components[0].index === /* \"R\" = */ 0x52 &&\n        this.components[1].index === /* \"G\" = */ 0x47 &&\n        this.components[2].index === /* \"B\" = */ 0x42\n      ) {\n        // If the three components are indexed as RGB in ASCII\n        // then the colours should *not* be transformed.\n        return false;\n      }\n      return true;\n    }\n    // `this.numComponents !== 3`\n    if (this._colorTransform === 1) {\n      // If the Adobe transform marker is not present and the image\n      // dictionary has a 'ColorTransform' entry, explicitly set to `1`,\n      // then the colours should be transformed.\n      return true;\n    }\n    return false;\n  }\n\n  _convertYccToRgb(data) {\n    let Y, Cb, Cr;\n    for (let i = 0, length = data.length; i < length; i += 3) {\n      Y = data[i];\n      Cb = data[i + 1];\n      Cr = data[i + 2];\n      data[i] = Y - 179.456 + 1.402 * Cr;\n      data[i + 1] = Y + 135.459 - 0.344 * Cb - 0.714 * Cr;\n      data[i + 2] = Y - 226.816 + 1.772 * Cb;\n    }\n    return data;\n  }\n\n  _convertYcckToRgb(data) {\n    let Y, Cb, Cr, k;\n    let offset = 0;\n    for (let i = 0, length = data.length; i < length; i += 4) {\n      Y = data[i];\n      Cb = data[i + 1];\n      Cr = data[i + 2];\n      k = data[i + 3];\n\n      data[offset++] =\n        -122.67195406894 +\n        Cb *\n          (-6.60635669420364e-5 * Cb +\n            0.000437130475926232 * Cr -\n            5.4080610064599e-5 * Y +\n            0.00048449797120281 * k -\n            0.154362151871126) +\n        Cr *\n          (-0.000957964378445773 * Cr +\n            0.000817076911346625 * Y -\n            0.00477271405408747 * k +\n            1.53380253221734) +\n        Y *\n          (0.000961250184130688 * Y -\n            0.00266257332283933 * k +\n            0.48357088451265) +\n        k * (-0.000336197177618394 * k + 0.484791561490776);\n\n      data[offset++] =\n        107.268039397724 +\n        Cb *\n          (2.19927104525741e-5 * Cb -\n            0.000640992018297945 * Cr +\n            0.000659397001245577 * Y +\n            0.000426105652938837 * k -\n            0.176491792462875) +\n        Cr *\n          (-0.000778269941513683 * Cr +\n            0.00130872261408275 * Y +\n            0.000770482631801132 * k -\n            0.151051492775562) +\n        Y *\n          (0.00126935368114843 * Y -\n            0.00265090189010898 * k +\n            0.25802910206845) +\n        k * (-0.000318913117588328 * k - 0.213742400323665);\n\n      data[offset++] =\n        -20.810012546947 +\n        Cb *\n          (-0.000570115196973677 * Cb -\n            2.63409051004589e-5 * Cr +\n            0.0020741088115012 * Y -\n            0.00288260236853442 * k +\n            0.814272968359295) +\n        Cr *\n          (-1.53496057440975e-5 * Cr -\n            0.000132689043961446 * Y +\n            0.000560833691242812 * k -\n            0.195152027534049) +\n        Y *\n          (0.00174418132927582 * Y -\n            0.00255243321439347 * k +\n            0.116935020465145) +\n        k * (-0.000343531996510555 * k + 0.24165260232407);\n    }\n    // Ensure that only the converted RGB data is returned.\n    return data.subarray(0, offset);\n  }\n\n  _convertYcckToCmyk(data) {\n    let Y, Cb, Cr;\n    for (let i = 0, length = data.length; i < length; i += 4) {\n      Y = data[i];\n      Cb = data[i + 1];\n      Cr = data[i + 2];\n      data[i] = 434.456 - Y - 1.402 * Cr;\n      data[i + 1] = 119.541 - Y + 0.344 * Cb + 0.714 * Cr;\n      data[i + 2] = 481.816 - Y - 1.772 * Cb;\n      // K in data[i + 3] is unchanged\n    }\n    return data;\n  }\n\n  _convertCmykToRgb(data) {\n    let c, m, y, k;\n    let offset = 0;\n    for (let i = 0, length = data.length; i < length; i += 4) {\n      c = data[i];\n      m = data[i + 1];\n      y = data[i + 2];\n      k = data[i + 3];\n\n      data[offset++] =\n        255 +\n        c *\n          (-0.00006747147073602441 * c +\n            0.0008379262121013727 * m +\n            0.0002894718188643294 * y +\n            0.003264231057537806 * k -\n            1.1185611867203937) +\n        m *\n          (0.000026374107616089405 * m -\n            0.00008626949158638572 * y -\n            0.0002748769067499491 * k -\n            0.02155688794978967) +\n        y *\n          (-0.00003878099212869363 * y -\n            0.0003267808279485286 * k +\n            0.0686742238595345) -\n        k * (0.0003361971776183937 * k + 0.7430659151342254);\n\n      data[offset++] =\n        255 +\n        c *\n          (0.00013596372813588848 * c +\n            0.000924537132573585 * m +\n            0.00010567359618683593 * y +\n            0.0004791864687436512 * k -\n            0.3109689587515875) +\n        m *\n          (-0.00023545346108370344 * m +\n            0.0002702845253534714 * y +\n            0.0020200308977307156 * k -\n            0.7488052167015494) +\n        y *\n          (0.00006834815998235662 * y +\n            0.00015168452363460973 * k -\n            0.09751927774728933) -\n        k * (0.0003189131175883281 * k + 0.7364883807733168);\n\n      data[offset++] =\n        255 +\n        c *\n          (0.000013598650411385307 * c +\n            0.00012423956175490851 * m +\n            0.0004751985097583589 * y -\n            0.0000036729317476630422 * k -\n            0.05562186980264034) +\n        m *\n          (0.00016141380598724676 * m +\n            0.0009692239130725186 * y +\n            0.0007782692450036253 * k -\n            0.44015232367526463) +\n        y *\n          (5.068882914068769e-7 * y +\n            0.0017778369011375071 * k -\n            0.7591454649749609) -\n        k * (0.0003435319965105553 * k + 0.7063770186160144);\n    }\n    // Ensure that only the converted RGB data is returned.\n    return data.subarray(0, offset);\n  }\n\n  getData({ width, height, forceRGB = false, isSourcePDF = false }) {\n    if (\n      typeof PDFJSDev === \"undefined\" ||\n      PDFJSDev.test(\"!PRODUCTION || TESTING\")\n    ) {\n      assert(\n        isSourcePDF === true,\n        'JpegImage.getData: Unexpected \"isSourcePDF\" value for PDF files.'\n      );\n    }\n    if (this.numComponents > 4) {\n      throw new JpegError(\"Unsupported color mode\");\n    }\n    // Type of data: Uint8ClampedArray(width * height * numComponents)\n    const data = this._getLinearizedBlockData(width, height, isSourcePDF);\n\n    if (this.numComponents === 1 && forceRGB) {\n      const dataLength = data.length;\n      const rgbData = new Uint8ClampedArray(dataLength * 3);\n      let offset = 0;\n      for (let i = 0; i < dataLength; i++) {\n        const grayColor = data[i];\n        rgbData[offset++] = grayColor;\n        rgbData[offset++] = grayColor;\n        rgbData[offset++] = grayColor;\n      }\n      return rgbData;\n    } else if (this.numComponents === 3 && this._isColorConversionNeeded) {\n      return this._convertYccToRgb(data);\n    } else if (this.numComponents === 4) {\n      if (this._isColorConversionNeeded) {\n        if (forceRGB) {\n          return this._convertYcckToRgb(data);\n        }\n        return this._convertYcckToCmyk(data);\n      } else if (forceRGB) {\n        return this._convertCmykToRgb(data);\n      }\n    }\n    return data;\n  }\n}\n\nexport { JpegImage };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { DecodeStream } from \"./decode_stream.js\";\nimport { JpxImage } from \"./jpx.js\";\nimport { shadow } from \"../shared/util.js\";\n\n/**\n * For JPEG 2000's we use a library to decode these images and\n * the stream behaves like all the other DecodeStreams.\n */\nclass JpxStream extends DecodeStream {\n  constructor(stream, maybeLength, params) {\n    super(maybeLength);\n\n    this.stream = stream;\n    this.dict = stream.dict;\n    this.maybeLength = maybeLength;\n    this.params = params;\n  }\n\n  get bytes() {\n    // If `this.maybeLength` is null, we'll get the entire stream.\n    return shadow(this, \"bytes\", this.stream.getBytes(this.maybeLength));\n  }\n\n  ensureBuffer(requested) {\n    // No-op, since `this.readBlock` will always parse the entire image and\n    // directly insert all of its data into `this.buffer`.\n  }\n\n  readBlock() {\n    if (this.eof) {\n      return;\n    }\n    const jpxImage = new JpxImage();\n    jpxImage.parse(this.bytes);\n\n    const width = jpxImage.width;\n    const height = jpxImage.height;\n    const componentsCount = jpxImage.componentsCount;\n    const tileCount = jpxImage.tiles.length;\n    if (tileCount === 1) {\n      this.buffer = jpxImage.tiles[0].items;\n    } else {\n      const data = new Uint8ClampedArray(width * height * componentsCount);\n\n      for (let k = 0; k < tileCount; k++) {\n        const tileComponents = jpxImage.tiles[k];\n        const tileWidth = tileComponents.width;\n        const tileHeight = tileComponents.height;\n        const tileLeft = tileComponents.left;\n        const tileTop = tileComponents.top;\n\n        const src = tileComponents.items;\n        let srcPosition = 0;\n        let dataPosition = (width * tileTop + tileLeft) * componentsCount;\n        const imgRowSize = width * componentsCount;\n        const tileRowSize = tileWidth * componentsCount;\n\n        for (let j = 0; j < tileHeight; j++) {\n          const rowBytes = src.subarray(srcPosition, srcPosition + tileRowSize);\n          data.set(rowBytes, dataPosition);\n          srcPosition += tileRowSize;\n          dataPosition += imgRowSize;\n        }\n      }\n      this.buffer = data;\n    }\n    this.bufferLength = this.buffer.length;\n    this.eof = true;\n  }\n}\n\nexport { JpxStream };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { BaseException, info, unreachable, warn } from \"../shared/util.js\";\nimport { log2, readUint16, readUint32 } from \"./core_utils.js\";\nimport { ArithmeticDecoder } from \"./arithmetic_decoder.js\";\n\nclass JpxError extends BaseException {\n  constructor(msg) {\n    super(`JPX error: ${msg}`, \"JpxError\");\n  }\n}\n\n// Table E.1\nconst SubbandsGainLog2 = {\n  LL: 0,\n  LH: 1,\n  HL: 1,\n  HH: 2,\n};\n\nclass JpxImage {\n  constructor() {\n    this.failOnCorruptedImage = false;\n  }\n\n  parse(data) {\n    const head = readUint16(data, 0);\n    // No box header, immediate start of codestream (SOC)\n    if (head === 0xff4f) {\n      this.parseCodestream(data, 0, data.length);\n      return;\n    }\n\n    const length = data.length;\n    let position = 0;\n    while (position < length) {\n      let headerSize = 8;\n      let lbox = readUint32(data, position);\n      const tbox = readUint32(data, position + 4);\n      position += headerSize;\n      if (lbox === 1) {\n        // XLBox: read UInt64 according to spec.\n        // JavaScript's int precision of 53 bit should be sufficient here.\n        lbox =\n          readUint32(data, position) * 4294967296 +\n          readUint32(data, position + 4);\n        position += 8;\n        headerSize += 8;\n      }\n      if (lbox === 0) {\n        lbox = length - position + headerSize;\n      }\n      if (lbox < headerSize) {\n        throw new JpxError(\"Invalid box field size\");\n      }\n      const dataLength = lbox - headerSize;\n      let jumpDataLength = true;\n      switch (tbox) {\n        case 0x6a703268: // 'jp2h'\n          jumpDataLength = false; // parsing child boxes\n          break;\n        case 0x636f6c72: // 'colr'\n          // Colorspaces are not used, the CS from the PDF is used.\n          const method = data[position];\n          if (method === 1) {\n            // enumerated colorspace\n            const colorspace = readUint32(data, position + 3);\n            switch (colorspace) {\n              case 16: // this indicates a sRGB colorspace\n              case 17: // this indicates a grayscale colorspace\n              case 18: // this indicates a YUV colorspace\n                break;\n              default:\n                warn(\"Unknown colorspace \" + colorspace);\n                break;\n            }\n          } else if (method === 2) {\n            info(\"ICC profile not supported\");\n          }\n          break;\n        case 0x6a703263: // 'jp2c'\n          this.parseCodestream(data, position, position + dataLength);\n          break;\n        case 0x6a502020: // 'jP\\024\\024'\n          if (readUint32(data, position) !== 0x0d0a870a) {\n            warn(\"Invalid JP2 signature\");\n          }\n          break;\n        // The following header types are valid but currently not used:\n        case 0x6a501a1a: // 'jP\\032\\032'\n        case 0x66747970: // 'ftyp'\n        case 0x72726571: // 'rreq'\n        case 0x72657320: // 'res '\n        case 0x69686472: // 'ihdr'\n          break;\n        default:\n          const headerType = String.fromCharCode(\n            (tbox >> 24) & 0xff,\n            (tbox >> 16) & 0xff,\n            (tbox >> 8) & 0xff,\n            tbox & 0xff\n          );\n          warn(`Unsupported header type ${tbox} (${headerType}).`);\n          break;\n      }\n      if (jumpDataLength) {\n        position += dataLength;\n      }\n    }\n  }\n\n  parseImageProperties(stream) {\n    let newByte = stream.getByte();\n    while (newByte >= 0) {\n      const oldByte = newByte;\n      newByte = stream.getByte();\n      const code = (oldByte << 8) | newByte;\n      // Image and tile size (SIZ)\n      if (code === 0xff51) {\n        stream.skip(4);\n        const Xsiz = stream.getInt32() >>> 0; // Byte 4\n        const Ysiz = stream.getInt32() >>> 0; // Byte 8\n        const XOsiz = stream.getInt32() >>> 0; // Byte 12\n        const YOsiz = stream.getInt32() >>> 0; // Byte 16\n        stream.skip(16);\n        const Csiz = stream.getUint16(); // Byte 36\n        this.width = Xsiz - XOsiz;\n        this.height = Ysiz - YOsiz;\n        this.componentsCount = Csiz;\n        // Results are always returned as `Uint8ClampedArray`s.\n        this.bitsPerComponent = 8;\n        return;\n      }\n    }\n    throw new JpxError(\"No size marker found in JPX stream\");\n  }\n\n  parseCodestream(data, start, end) {\n    const context = {};\n    let doNotRecover = false;\n    try {\n      let position = start;\n      while (position + 1 < end) {\n        const code = readUint16(data, position);\n        position += 2;\n\n        let length = 0,\n          j,\n          sqcd,\n          spqcds,\n          spqcdSize,\n          scalarExpounded,\n          tile;\n        switch (code) {\n          case 0xff4f: // Start of codestream (SOC)\n            context.mainHeader = true;\n            break;\n          case 0xffd9: // End of codestream (EOC)\n            break;\n          case 0xff51: // Image and tile size (SIZ)\n            length = readUint16(data, position);\n            const siz = {};\n            siz.Xsiz = readUint32(data, position + 4);\n            siz.Ysiz = readUint32(data, position + 8);\n            siz.XOsiz = readUint32(data, position + 12);\n            siz.YOsiz = readUint32(data, position + 16);\n            siz.XTsiz = readUint32(data, position + 20);\n            siz.YTsiz = readUint32(data, position + 24);\n            siz.XTOsiz = readUint32(data, position + 28);\n            siz.YTOsiz = readUint32(data, position + 32);\n            const componentsCount = readUint16(data, position + 36);\n            siz.Csiz = componentsCount;\n            const components = [];\n            j = position + 38;\n            for (let i = 0; i < componentsCount; i++) {\n              const component = {\n                precision: (data[j] & 0x7f) + 1,\n                isSigned: !!(data[j] & 0x80),\n                XRsiz: data[j + 1],\n                YRsiz: data[j + 2],\n              };\n              j += 3;\n              calculateComponentDimensions(component, siz);\n              components.push(component);\n            }\n            context.SIZ = siz;\n            context.components = components;\n            calculateTileGrids(context, components);\n            context.QCC = [];\n            context.COC = [];\n            break;\n          case 0xff5c: // Quantization default (QCD)\n            length = readUint16(data, position);\n            const qcd = {};\n            j = position + 2;\n            sqcd = data[j++];\n            switch (sqcd & 0x1f) {\n              case 0:\n                spqcdSize = 8;\n                scalarExpounded = true;\n                break;\n              case 1:\n                spqcdSize = 16;\n                scalarExpounded = false;\n                break;\n              case 2:\n                spqcdSize = 16;\n                scalarExpounded = true;\n                break;\n              default:\n                throw new Error(\"Invalid SQcd value \" + sqcd);\n            }\n            qcd.noQuantization = spqcdSize === 8;\n            qcd.scalarExpounded = scalarExpounded;\n            qcd.guardBits = sqcd >> 5;\n            spqcds = [];\n            while (j < length + position) {\n              const spqcd = {};\n              if (spqcdSize === 8) {\n                spqcd.epsilon = data[j++] >> 3;\n                spqcd.mu = 0;\n              } else {\n                spqcd.epsilon = data[j] >> 3;\n                spqcd.mu = ((data[j] & 0x7) << 8) | data[j + 1];\n                j += 2;\n              }\n              spqcds.push(spqcd);\n            }\n            qcd.SPqcds = spqcds;\n            if (context.mainHeader) {\n              context.QCD = qcd;\n            } else {\n              context.currentTile.QCD = qcd;\n              context.currentTile.QCC = [];\n            }\n            break;\n          case 0xff5d: // Quantization component (QCC)\n            length = readUint16(data, position);\n            const qcc = {};\n            j = position + 2;\n            let cqcc;\n            if (context.SIZ.Csiz < 257) {\n              cqcc = data[j++];\n            } else {\n              cqcc = readUint16(data, j);\n              j += 2;\n            }\n            sqcd = data[j++];\n            switch (sqcd & 0x1f) {\n              case 0:\n                spqcdSize = 8;\n                scalarExpounded = true;\n                break;\n              case 1:\n                spqcdSize = 16;\n                scalarExpounded = false;\n                break;\n              case 2:\n                spqcdSize = 16;\n                scalarExpounded = true;\n                break;\n              default:\n                throw new Error(\"Invalid SQcd value \" + sqcd);\n            }\n            qcc.noQuantization = spqcdSize === 8;\n            qcc.scalarExpounded = scalarExpounded;\n            qcc.guardBits = sqcd >> 5;\n            spqcds = [];\n            while (j < length + position) {\n              const spqcd = {};\n              if (spqcdSize === 8) {\n                spqcd.epsilon = data[j++] >> 3;\n                spqcd.mu = 0;\n              } else {\n                spqcd.epsilon = data[j] >> 3;\n                spqcd.mu = ((data[j] & 0x7) << 8) | data[j + 1];\n                j += 2;\n              }\n              spqcds.push(spqcd);\n            }\n            qcc.SPqcds = spqcds;\n            if (context.mainHeader) {\n              context.QCC[cqcc] = qcc;\n            } else {\n              context.currentTile.QCC[cqcc] = qcc;\n            }\n            break;\n          case 0xff52: // Coding style default (COD)\n            length = readUint16(data, position);\n            const cod = {};\n            j = position + 2;\n            const scod = data[j++];\n            cod.entropyCoderWithCustomPrecincts = !!(scod & 1);\n            cod.sopMarkerUsed = !!(scod & 2);\n            cod.ephMarkerUsed = !!(scod & 4);\n            cod.progressionOrder = data[j++];\n            cod.layersCount = readUint16(data, j);\n            j += 2;\n            cod.multipleComponentTransform = data[j++];\n\n            cod.decompositionLevelsCount = data[j++];\n            cod.xcb = (data[j++] & 0xf) + 2;\n            cod.ycb = (data[j++] & 0xf) + 2;\n            const blockStyle = data[j++];\n            cod.selectiveArithmeticCodingBypass = !!(blockStyle & 1);\n            cod.resetContextProbabilities = !!(blockStyle & 2);\n            cod.terminationOnEachCodingPass = !!(blockStyle & 4);\n            cod.verticallyStripe = !!(blockStyle & 8);\n            cod.predictableTermination = !!(blockStyle & 16);\n            cod.segmentationSymbolUsed = !!(blockStyle & 32);\n            cod.reversibleTransformation = data[j++];\n            if (cod.entropyCoderWithCustomPrecincts) {\n              const precinctsSizes = [];\n              while (j < length + position) {\n                const precinctsSize = data[j++];\n                precinctsSizes.push({\n                  PPx: precinctsSize & 0xf,\n                  PPy: precinctsSize >> 4,\n                });\n              }\n              cod.precinctsSizes = precinctsSizes;\n            }\n            const unsupported = [];\n            if (cod.selectiveArithmeticCodingBypass) {\n              unsupported.push(\"selectiveArithmeticCodingBypass\");\n            }\n            if (cod.resetContextProbabilities) {\n              unsupported.push(\"resetContextProbabilities\");\n            }\n            if (cod.terminationOnEachCodingPass) {\n              unsupported.push(\"terminationOnEachCodingPass\");\n            }\n            if (cod.verticallyStripe) {\n              unsupported.push(\"verticallyStripe\");\n            }\n            if (cod.predictableTermination) {\n              unsupported.push(\"predictableTermination\");\n            }\n            if (unsupported.length > 0) {\n              doNotRecover = true;\n              warn(`JPX: Unsupported COD options (${unsupported.join(\", \")}).`);\n            }\n            if (context.mainHeader) {\n              context.COD = cod;\n            } else {\n              context.currentTile.COD = cod;\n              context.currentTile.COC = [];\n            }\n            break;\n          case 0xff90: // Start of tile-part (SOT)\n            length = readUint16(data, position);\n            tile = {};\n            tile.index = readUint16(data, position + 2);\n            tile.length = readUint32(data, position + 4);\n            tile.dataEnd = tile.length + position - 2;\n            tile.partIndex = data[position + 8];\n            tile.partsCount = data[position + 9];\n\n            context.mainHeader = false;\n            if (tile.partIndex === 0) {\n              // reset component specific settings\n              tile.COD = context.COD;\n              tile.COC = context.COC.slice(0); // clone of the global COC\n              tile.QCD = context.QCD;\n              tile.QCC = context.QCC.slice(0); // clone of the global COC\n            }\n            context.currentTile = tile;\n            break;\n          case 0xff93: // Start of data (SOD)\n            tile = context.currentTile;\n            if (tile.partIndex === 0) {\n              initializeTile(context, tile.index);\n              buildPackets(context);\n            }\n\n            // moving to the end of the data\n            length = tile.dataEnd - position;\n            parseTilePackets(context, data, position, length);\n            break;\n          case 0xff53: // Coding style component (COC)\n            warn(\"JPX: Codestream code 0xFF53 (COC) is not implemented.\");\n          /* falls through */\n          case 0xff55: // Tile-part lengths, main header (TLM)\n          case 0xff57: // Packet length, main header (PLM)\n          case 0xff58: // Packet length, tile-part header (PLT)\n          case 0xff64: // Comment (COM)\n            length = readUint16(data, position);\n            // skipping content\n            break;\n          default:\n            throw new Error(\"Unknown codestream code: \" + code.toString(16));\n        }\n        position += length;\n      }\n    } catch (e) {\n      if (doNotRecover || this.failOnCorruptedImage) {\n        throw new JpxError(e.message);\n      } else {\n        warn(`JPX: Trying to recover from: \"${e.message}\".`);\n      }\n    }\n    this.tiles = transformComponents(context);\n    this.width = context.SIZ.Xsiz - context.SIZ.XOsiz;\n    this.height = context.SIZ.Ysiz - context.SIZ.YOsiz;\n    this.componentsCount = context.SIZ.Csiz;\n  }\n}\n\nfunction calculateComponentDimensions(component, siz) {\n  // Section B.2 Component mapping\n  component.x0 = Math.ceil(siz.XOsiz / component.XRsiz);\n  component.x1 = Math.ceil(siz.Xsiz / component.XRsiz);\n  component.y0 = Math.ceil(siz.YOsiz / component.YRsiz);\n  component.y1 = Math.ceil(siz.Ysiz / component.YRsiz);\n  component.width = component.x1 - component.x0;\n  component.height = component.y1 - component.y0;\n}\nfunction calculateTileGrids(context, components) {\n  const siz = context.SIZ;\n  // Section B.3 Division into tile and tile-components\n  const tiles = [];\n  let tile;\n  const numXtiles = Math.ceil((siz.Xsiz - siz.XTOsiz) / siz.XTsiz);\n  const numYtiles = Math.ceil((siz.Ysiz - siz.YTOsiz) / siz.YTsiz);\n  for (let q = 0; q < numYtiles; q++) {\n    for (let p = 0; p < numXtiles; p++) {\n      tile = {};\n      tile.tx0 = Math.max(siz.XTOsiz + p * siz.XTsiz, siz.XOsiz);\n      tile.ty0 = Math.max(siz.YTOsiz + q * siz.YTsiz, siz.YOsiz);\n      tile.tx1 = Math.min(siz.XTOsiz + (p + 1) * siz.XTsiz, siz.Xsiz);\n      tile.ty1 = Math.min(siz.YTOsiz + (q + 1) * siz.YTsiz, siz.Ysiz);\n      tile.width = tile.tx1 - tile.tx0;\n      tile.height = tile.ty1 - tile.ty0;\n      tile.components = [];\n      tiles.push(tile);\n    }\n  }\n  context.tiles = tiles;\n\n  const componentsCount = siz.Csiz;\n  for (let i = 0, ii = componentsCount; i < ii; i++) {\n    const component = components[i];\n    for (let j = 0, jj = tiles.length; j < jj; j++) {\n      const tileComponent = {};\n      tile = tiles[j];\n      tileComponent.tcx0 = Math.ceil(tile.tx0 / component.XRsiz);\n      tileComponent.tcy0 = Math.ceil(tile.ty0 / component.YRsiz);\n      tileComponent.tcx1 = Math.ceil(tile.tx1 / component.XRsiz);\n      tileComponent.tcy1 = Math.ceil(tile.ty1 / component.YRsiz);\n      tileComponent.width = tileComponent.tcx1 - tileComponent.tcx0;\n      tileComponent.height = tileComponent.tcy1 - tileComponent.tcy0;\n      tile.components[i] = tileComponent;\n    }\n  }\n}\nfunction getBlocksDimensions(context, component, r) {\n  const codOrCoc = component.codingStyleParameters;\n  const result = {};\n  if (!codOrCoc.entropyCoderWithCustomPrecincts) {\n    result.PPx = 15;\n    result.PPy = 15;\n  } else {\n    result.PPx = codOrCoc.precinctsSizes[r].PPx;\n    result.PPy = codOrCoc.precinctsSizes[r].PPy;\n  }\n  // calculate codeblock size as described in section B.7\n  result.xcb_ =\n    r > 0\n      ? Math.min(codOrCoc.xcb, result.PPx - 1)\n      : Math.min(codOrCoc.xcb, result.PPx);\n  result.ycb_ =\n    r > 0\n      ? Math.min(codOrCoc.ycb, result.PPy - 1)\n      : Math.min(codOrCoc.ycb, result.PPy);\n  return result;\n}\nfunction buildPrecincts(context, resolution, dimensions) {\n  // Section B.6 Division resolution to precincts\n  const precinctWidth = 1 << dimensions.PPx;\n  const precinctHeight = 1 << dimensions.PPy;\n  // Jasper introduces codeblock groups for mapping each subband codeblocks\n  // to precincts. Precinct partition divides a resolution according to width\n  // and height parameters. The subband that belongs to the resolution level\n  // has a different size than the level, unless it is the zero resolution.\n\n  // From Jasper documentation: jpeg2000.pdf, section K: Tier-2 coding:\n  // The precinct partitioning for a particular subband is derived from a\n  // partitioning of its parent LL band (i.e., the LL band at the next higher\n  // resolution level)... The LL band associated with each resolution level is\n  // divided into precincts... Each of the resulting precinct regions is then\n  // mapped into its child subbands (if any) at the next lower resolution\n  // level. This is accomplished by using the coordinate transformation\n  // (u, v) = (ceil(x/2), ceil(y/2)) where (x, y) and (u, v) are the\n  // coordinates of a point in the LL band and child subband, respectively.\n  const isZeroRes = resolution.resLevel === 0;\n  const precinctWidthInSubband = 1 << (dimensions.PPx + (isZeroRes ? 0 : -1));\n  const precinctHeightInSubband = 1 << (dimensions.PPy + (isZeroRes ? 0 : -1));\n  const numprecinctswide =\n    resolution.trx1 > resolution.trx0\n      ? Math.ceil(resolution.trx1 / precinctWidth) -\n        Math.floor(resolution.trx0 / precinctWidth)\n      : 0;\n  const numprecinctshigh =\n    resolution.try1 > resolution.try0\n      ? Math.ceil(resolution.try1 / precinctHeight) -\n        Math.floor(resolution.try0 / precinctHeight)\n      : 0;\n  const numprecincts = numprecinctswide * numprecinctshigh;\n\n  resolution.precinctParameters = {\n    precinctWidth,\n    precinctHeight,\n    numprecinctswide,\n    numprecinctshigh,\n    numprecincts,\n    precinctWidthInSubband,\n    precinctHeightInSubband,\n  };\n}\nfunction buildCodeblocks(context, subband, dimensions) {\n  // Section B.7 Division sub-band into code-blocks\n  const xcb_ = dimensions.xcb_;\n  const ycb_ = dimensions.ycb_;\n  const codeblockWidth = 1 << xcb_;\n  const codeblockHeight = 1 << ycb_;\n  const cbx0 = subband.tbx0 >> xcb_;\n  const cby0 = subband.tby0 >> ycb_;\n  const cbx1 = (subband.tbx1 + codeblockWidth - 1) >> xcb_;\n  const cby1 = (subband.tby1 + codeblockHeight - 1) >> ycb_;\n  const precinctParameters = subband.resolution.precinctParameters;\n  const codeblocks = [];\n  const precincts = [];\n  let i, j, codeblock, precinctNumber;\n  for (j = cby0; j < cby1; j++) {\n    for (i = cbx0; i < cbx1; i++) {\n      codeblock = {\n        cbx: i,\n        cby: j,\n        tbx0: codeblockWidth * i,\n        tby0: codeblockHeight * j,\n        tbx1: codeblockWidth * (i + 1),\n        tby1: codeblockHeight * (j + 1),\n      };\n\n      codeblock.tbx0_ = Math.max(subband.tbx0, codeblock.tbx0);\n      codeblock.tby0_ = Math.max(subband.tby0, codeblock.tby0);\n      codeblock.tbx1_ = Math.min(subband.tbx1, codeblock.tbx1);\n      codeblock.tby1_ = Math.min(subband.tby1, codeblock.tby1);\n\n      // Calculate precinct number for this codeblock, codeblock position\n      // should be relative to its subband, use actual dimension and position\n      // See comment about codeblock group width and height\n      const pi = Math.floor(\n        (codeblock.tbx0_ - subband.tbx0) /\n          precinctParameters.precinctWidthInSubband\n      );\n      const pj = Math.floor(\n        (codeblock.tby0_ - subband.tby0) /\n          precinctParameters.precinctHeightInSubband\n      );\n      precinctNumber = pi + pj * precinctParameters.numprecinctswide;\n\n      codeblock.precinctNumber = precinctNumber;\n      codeblock.subbandType = subband.type;\n      codeblock.Lblock = 3;\n\n      if (\n        codeblock.tbx1_ <= codeblock.tbx0_ ||\n        codeblock.tby1_ <= codeblock.tby0_\n      ) {\n        continue;\n      }\n      codeblocks.push(codeblock);\n      // building precinct for the sub-band\n      let precinct = precincts[precinctNumber];\n      if (precinct !== undefined) {\n        if (i < precinct.cbxMin) {\n          precinct.cbxMin = i;\n        } else if (i > precinct.cbxMax) {\n          precinct.cbxMax = i;\n        }\n        if (j < precinct.cbyMin) {\n          precinct.cbxMin = j;\n        } else if (j > precinct.cbyMax) {\n          precinct.cbyMax = j;\n        }\n      } else {\n        precincts[precinctNumber] = precinct = {\n          cbxMin: i,\n          cbyMin: j,\n          cbxMax: i,\n          cbyMax: j,\n        };\n      }\n      codeblock.precinct = precinct;\n    }\n  }\n  subband.codeblockParameters = {\n    codeblockWidth: xcb_,\n    codeblockHeight: ycb_,\n    numcodeblockwide: cbx1 - cbx0 + 1,\n    numcodeblockhigh: cby1 - cby0 + 1,\n  };\n  subband.codeblocks = codeblocks;\n  subband.precincts = precincts;\n}\nfunction createPacket(resolution, precinctNumber, layerNumber) {\n  const precinctCodeblocks = [];\n  // Section B.10.8 Order of info in packet\n  const subbands = resolution.subbands;\n  // sub-bands already ordered in 'LL', 'HL', 'LH', and 'HH' sequence\n  for (let i = 0, ii = subbands.length; i < ii; i++) {\n    const subband = subbands[i];\n    const codeblocks = subband.codeblocks;\n    for (let j = 0, jj = codeblocks.length; j < jj; j++) {\n      const codeblock = codeblocks[j];\n      if (codeblock.precinctNumber !== precinctNumber) {\n        continue;\n      }\n      precinctCodeblocks.push(codeblock);\n    }\n  }\n  return {\n    layerNumber,\n    codeblocks: precinctCodeblocks,\n  };\n}\nfunction LayerResolutionComponentPositionIterator(context) {\n  const siz = context.SIZ;\n  const tileIndex = context.currentTile.index;\n  const tile = context.tiles[tileIndex];\n  const layersCount = tile.codingStyleDefaultParameters.layersCount;\n  const componentsCount = siz.Csiz;\n  let maxDecompositionLevelsCount = 0;\n  for (let q = 0; q < componentsCount; q++) {\n    maxDecompositionLevelsCount = Math.max(\n      maxDecompositionLevelsCount,\n      tile.components[q].codingStyleParameters.decompositionLevelsCount\n    );\n  }\n\n  let l = 0,\n    r = 0,\n    i = 0,\n    k = 0;\n\n  this.nextPacket = function JpxImage_nextPacket() {\n    // Section B.12.1.1 Layer-resolution-component-position\n    for (; l < layersCount; l++) {\n      for (; r <= maxDecompositionLevelsCount; r++) {\n        for (; i < componentsCount; i++) {\n          const component = tile.components[i];\n          if (r > component.codingStyleParameters.decompositionLevelsCount) {\n            continue;\n          }\n\n          const resolution = component.resolutions[r];\n          const numprecincts = resolution.precinctParameters.numprecincts;\n          for (; k < numprecincts; ) {\n            const packet = createPacket(resolution, k, l);\n            k++;\n            return packet;\n          }\n          k = 0;\n        }\n        i = 0;\n      }\n      r = 0;\n    }\n    throw new JpxError(\"Out of packets\");\n  };\n}\nfunction ResolutionLayerComponentPositionIterator(context) {\n  const siz = context.SIZ;\n  const tileIndex = context.currentTile.index;\n  const tile = context.tiles[tileIndex];\n  const layersCount = tile.codingStyleDefaultParameters.layersCount;\n  const componentsCount = siz.Csiz;\n  let maxDecompositionLevelsCount = 0;\n  for (let q = 0; q < componentsCount; q++) {\n    maxDecompositionLevelsCount = Math.max(\n      maxDecompositionLevelsCount,\n      tile.components[q].codingStyleParameters.decompositionLevelsCount\n    );\n  }\n\n  let r = 0,\n    l = 0,\n    i = 0,\n    k = 0;\n\n  this.nextPacket = function JpxImage_nextPacket() {\n    // Section B.12.1.2 Resolution-layer-component-position\n    for (; r <= maxDecompositionLevelsCount; r++) {\n      for (; l < layersCount; l++) {\n        for (; i < componentsCount; i++) {\n          const component = tile.components[i];\n          if (r > component.codingStyleParameters.decompositionLevelsCount) {\n            continue;\n          }\n\n          const resolution = component.resolutions[r];\n          const numprecincts = resolution.precinctParameters.numprecincts;\n          for (; k < numprecincts; ) {\n            const packet = createPacket(resolution, k, l);\n            k++;\n            return packet;\n          }\n          k = 0;\n        }\n        i = 0;\n      }\n      l = 0;\n    }\n    throw new JpxError(\"Out of packets\");\n  };\n}\nfunction ResolutionPositionComponentLayerIterator(context) {\n  const siz = context.SIZ;\n  const tileIndex = context.currentTile.index;\n  const tile = context.tiles[tileIndex];\n  const layersCount = tile.codingStyleDefaultParameters.layersCount;\n  const componentsCount = siz.Csiz;\n  let l, r, c, p;\n  let maxDecompositionLevelsCount = 0;\n  for (c = 0; c < componentsCount; c++) {\n    const component = tile.components[c];\n    maxDecompositionLevelsCount = Math.max(\n      maxDecompositionLevelsCount,\n      component.codingStyleParameters.decompositionLevelsCount\n    );\n  }\n  const maxNumPrecinctsInLevel = new Int32Array(\n    maxDecompositionLevelsCount + 1\n  );\n  for (r = 0; r <= maxDecompositionLevelsCount; ++r) {\n    let maxNumPrecincts = 0;\n    for (c = 0; c < componentsCount; ++c) {\n      const resolutions = tile.components[c].resolutions;\n      if (r < resolutions.length) {\n        maxNumPrecincts = Math.max(\n          maxNumPrecincts,\n          resolutions[r].precinctParameters.numprecincts\n        );\n      }\n    }\n    maxNumPrecinctsInLevel[r] = maxNumPrecincts;\n  }\n  l = 0;\n  r = 0;\n  c = 0;\n  p = 0;\n\n  this.nextPacket = function JpxImage_nextPacket() {\n    // Section B.12.1.3 Resolution-position-component-layer\n    for (; r <= maxDecompositionLevelsCount; r++) {\n      for (; p < maxNumPrecinctsInLevel[r]; p++) {\n        for (; c < componentsCount; c++) {\n          const component = tile.components[c];\n          if (r > component.codingStyleParameters.decompositionLevelsCount) {\n            continue;\n          }\n          const resolution = component.resolutions[r];\n          const numprecincts = resolution.precinctParameters.numprecincts;\n          if (p >= numprecincts) {\n            continue;\n          }\n          for (; l < layersCount; ) {\n            const packet = createPacket(resolution, p, l);\n            l++;\n            return packet;\n          }\n          l = 0;\n        }\n        c = 0;\n      }\n      p = 0;\n    }\n    throw new JpxError(\"Out of packets\");\n  };\n}\nfunction PositionComponentResolutionLayerIterator(context) {\n  const siz = context.SIZ;\n  const tileIndex = context.currentTile.index;\n  const tile = context.tiles[tileIndex];\n  const layersCount = tile.codingStyleDefaultParameters.layersCount;\n  const componentsCount = siz.Csiz;\n  const precinctsSizes = getPrecinctSizesInImageScale(tile);\n  const precinctsIterationSizes = precinctsSizes;\n  let l = 0,\n    r = 0,\n    c = 0,\n    px = 0,\n    py = 0;\n\n  this.nextPacket = function JpxImage_nextPacket() {\n    // Section B.12.1.4 Position-component-resolution-layer\n    for (; py < precinctsIterationSizes.maxNumHigh; py++) {\n      for (; px < precinctsIterationSizes.maxNumWide; px++) {\n        for (; c < componentsCount; c++) {\n          const component = tile.components[c];\n          const decompositionLevelsCount =\n            component.codingStyleParameters.decompositionLevelsCount;\n          for (; r <= decompositionLevelsCount; r++) {\n            const resolution = component.resolutions[r];\n            const sizeInImageScale =\n              precinctsSizes.components[c].resolutions[r];\n            const k = getPrecinctIndexIfExist(\n              px,\n              py,\n              sizeInImageScale,\n              precinctsIterationSizes,\n              resolution\n            );\n            if (k === null) {\n              continue;\n            }\n            for (; l < layersCount; ) {\n              const packet = createPacket(resolution, k, l);\n              l++;\n              return packet;\n            }\n            l = 0;\n          }\n          r = 0;\n        }\n        c = 0;\n      }\n      px = 0;\n    }\n    throw new JpxError(\"Out of packets\");\n  };\n}\nfunction ComponentPositionResolutionLayerIterator(context) {\n  const siz = context.SIZ;\n  const tileIndex = context.currentTile.index;\n  const tile = context.tiles[tileIndex];\n  const layersCount = tile.codingStyleDefaultParameters.layersCount;\n  const componentsCount = siz.Csiz;\n  const precinctsSizes = getPrecinctSizesInImageScale(tile);\n  let l = 0,\n    r = 0,\n    c = 0,\n    px = 0,\n    py = 0;\n\n  this.nextPacket = function JpxImage_nextPacket() {\n    // Section B.12.1.5 Component-position-resolution-layer\n    for (; c < componentsCount; ++c) {\n      const component = tile.components[c];\n      const precinctsIterationSizes = precinctsSizes.components[c];\n      const decompositionLevelsCount =\n        component.codingStyleParameters.decompositionLevelsCount;\n      for (; py < precinctsIterationSizes.maxNumHigh; py++) {\n        for (; px < precinctsIterationSizes.maxNumWide; px++) {\n          for (; r <= decompositionLevelsCount; r++) {\n            const resolution = component.resolutions[r];\n            const sizeInImageScale = precinctsIterationSizes.resolutions[r];\n            const k = getPrecinctIndexIfExist(\n              px,\n              py,\n              sizeInImageScale,\n              precinctsIterationSizes,\n              resolution\n            );\n            if (k === null) {\n              continue;\n            }\n            for (; l < layersCount; ) {\n              const packet = createPacket(resolution, k, l);\n              l++;\n              return packet;\n            }\n            l = 0;\n          }\n          r = 0;\n        }\n        px = 0;\n      }\n      py = 0;\n    }\n    throw new JpxError(\"Out of packets\");\n  };\n}\nfunction getPrecinctIndexIfExist(\n  pxIndex,\n  pyIndex,\n  sizeInImageScale,\n  precinctIterationSizes,\n  resolution\n) {\n  const posX = pxIndex * precinctIterationSizes.minWidth;\n  const posY = pyIndex * precinctIterationSizes.minHeight;\n  if (\n    posX % sizeInImageScale.width !== 0 ||\n    posY % sizeInImageScale.height !== 0\n  ) {\n    return null;\n  }\n  const startPrecinctRowIndex =\n    (posY / sizeInImageScale.width) *\n    resolution.precinctParameters.numprecinctswide;\n  return posX / sizeInImageScale.height + startPrecinctRowIndex;\n}\nfunction getPrecinctSizesInImageScale(tile) {\n  const componentsCount = tile.components.length;\n  let minWidth = Number.MAX_VALUE;\n  let minHeight = Number.MAX_VALUE;\n  let maxNumWide = 0;\n  let maxNumHigh = 0;\n  const sizePerComponent = new Array(componentsCount);\n  for (let c = 0; c < componentsCount; c++) {\n    const component = tile.components[c];\n    const decompositionLevelsCount =\n      component.codingStyleParameters.decompositionLevelsCount;\n    const sizePerResolution = new Array(decompositionLevelsCount + 1);\n    let minWidthCurrentComponent = Number.MAX_VALUE;\n    let minHeightCurrentComponent = Number.MAX_VALUE;\n    let maxNumWideCurrentComponent = 0;\n    let maxNumHighCurrentComponent = 0;\n    let scale = 1;\n    for (let r = decompositionLevelsCount; r >= 0; --r) {\n      const resolution = component.resolutions[r];\n      const widthCurrentResolution =\n        scale * resolution.precinctParameters.precinctWidth;\n      const heightCurrentResolution =\n        scale * resolution.precinctParameters.precinctHeight;\n      minWidthCurrentComponent = Math.min(\n        minWidthCurrentComponent,\n        widthCurrentResolution\n      );\n      minHeightCurrentComponent = Math.min(\n        minHeightCurrentComponent,\n        heightCurrentResolution\n      );\n      maxNumWideCurrentComponent = Math.max(\n        maxNumWideCurrentComponent,\n        resolution.precinctParameters.numprecinctswide\n      );\n      maxNumHighCurrentComponent = Math.max(\n        maxNumHighCurrentComponent,\n        resolution.precinctParameters.numprecinctshigh\n      );\n      sizePerResolution[r] = {\n        width: widthCurrentResolution,\n        height: heightCurrentResolution,\n      };\n      scale <<= 1;\n    }\n    minWidth = Math.min(minWidth, minWidthCurrentComponent);\n    minHeight = Math.min(minHeight, minHeightCurrentComponent);\n    maxNumWide = Math.max(maxNumWide, maxNumWideCurrentComponent);\n    maxNumHigh = Math.max(maxNumHigh, maxNumHighCurrentComponent);\n    sizePerComponent[c] = {\n      resolutions: sizePerResolution,\n      minWidth: minWidthCurrentComponent,\n      minHeight: minHeightCurrentComponent,\n      maxNumWide: maxNumWideCurrentComponent,\n      maxNumHigh: maxNumHighCurrentComponent,\n    };\n  }\n  return {\n    components: sizePerComponent,\n    minWidth,\n    minHeight,\n    maxNumWide,\n    maxNumHigh,\n  };\n}\nfunction buildPackets(context) {\n  const siz = context.SIZ;\n  const tileIndex = context.currentTile.index;\n  const tile = context.tiles[tileIndex];\n  const componentsCount = siz.Csiz;\n  // Creating resolutions and sub-bands for each component\n  for (let c = 0; c < componentsCount; c++) {\n    const component = tile.components[c];\n    const decompositionLevelsCount =\n      component.codingStyleParameters.decompositionLevelsCount;\n    // Section B.5 Resolution levels and sub-bands\n    const resolutions = [];\n    const subbands = [];\n    for (let r = 0; r <= decompositionLevelsCount; r++) {\n      const blocksDimensions = getBlocksDimensions(context, component, r);\n      const resolution = {};\n      const scale = 1 << (decompositionLevelsCount - r);\n      resolution.trx0 = Math.ceil(component.tcx0 / scale);\n      resolution.try0 = Math.ceil(component.tcy0 / scale);\n      resolution.trx1 = Math.ceil(component.tcx1 / scale);\n      resolution.try1 = Math.ceil(component.tcy1 / scale);\n      resolution.resLevel = r;\n      buildPrecincts(context, resolution, blocksDimensions);\n      resolutions.push(resolution);\n\n      let subband;\n      if (r === 0) {\n        // one sub-band (LL) with last decomposition\n        subband = {};\n        subband.type = \"LL\";\n        subband.tbx0 = Math.ceil(component.tcx0 / scale);\n        subband.tby0 = Math.ceil(component.tcy0 / scale);\n        subband.tbx1 = Math.ceil(component.tcx1 / scale);\n        subband.tby1 = Math.ceil(component.tcy1 / scale);\n        subband.resolution = resolution;\n        buildCodeblocks(context, subband, blocksDimensions);\n        subbands.push(subband);\n        resolution.subbands = [subband];\n      } else {\n        const bscale = 1 << (decompositionLevelsCount - r + 1);\n        const resolutionSubbands = [];\n        // three sub-bands (HL, LH and HH) with rest of decompositions\n        subband = {};\n        subband.type = \"HL\";\n        subband.tbx0 = Math.ceil(component.tcx0 / bscale - 0.5);\n        subband.tby0 = Math.ceil(component.tcy0 / bscale);\n        subband.tbx1 = Math.ceil(component.tcx1 / bscale - 0.5);\n        subband.tby1 = Math.ceil(component.tcy1 / bscale);\n        subband.resolution = resolution;\n        buildCodeblocks(context, subband, blocksDimensions);\n        subbands.push(subband);\n        resolutionSubbands.push(subband);\n\n        subband = {};\n        subband.type = \"LH\";\n        subband.tbx0 = Math.ceil(component.tcx0 / bscale);\n        subband.tby0 = Math.ceil(component.tcy0 / bscale - 0.5);\n        subband.tbx1 = Math.ceil(component.tcx1 / bscale);\n        subband.tby1 = Math.ceil(component.tcy1 / bscale - 0.5);\n        subband.resolution = resolution;\n        buildCodeblocks(context, subband, blocksDimensions);\n        subbands.push(subband);\n        resolutionSubbands.push(subband);\n\n        subband = {};\n        subband.type = \"HH\";\n        subband.tbx0 = Math.ceil(component.tcx0 / bscale - 0.5);\n        subband.tby0 = Math.ceil(component.tcy0 / bscale - 0.5);\n        subband.tbx1 = Math.ceil(component.tcx1 / bscale - 0.5);\n        subband.tby1 = Math.ceil(component.tcy1 / bscale - 0.5);\n        subband.resolution = resolution;\n        buildCodeblocks(context, subband, blocksDimensions);\n        subbands.push(subband);\n        resolutionSubbands.push(subband);\n\n        resolution.subbands = resolutionSubbands;\n      }\n    }\n    component.resolutions = resolutions;\n    component.subbands = subbands;\n  }\n  // Generate the packets sequence\n  const progressionOrder = tile.codingStyleDefaultParameters.progressionOrder;\n  switch (progressionOrder) {\n    case 0:\n      tile.packetsIterator = new LayerResolutionComponentPositionIterator(\n        context\n      );\n      break;\n    case 1:\n      tile.packetsIterator = new ResolutionLayerComponentPositionIterator(\n        context\n      );\n      break;\n    case 2:\n      tile.packetsIterator = new ResolutionPositionComponentLayerIterator(\n        context\n      );\n      break;\n    case 3:\n      tile.packetsIterator = new PositionComponentResolutionLayerIterator(\n        context\n      );\n      break;\n    case 4:\n      tile.packetsIterator = new ComponentPositionResolutionLayerIterator(\n        context\n      );\n      break;\n    default:\n      throw new JpxError(`Unsupported progression order ${progressionOrder}`);\n  }\n}\nfunction parseTilePackets(context, data, offset, dataLength) {\n  let position = 0;\n  let buffer,\n    bufferSize = 0,\n    skipNextBit = false;\n  function readBits(count) {\n    while (bufferSize < count) {\n      const b = data[offset + position];\n      position++;\n      if (skipNextBit) {\n        buffer = (buffer << 7) | b;\n        bufferSize += 7;\n        skipNextBit = false;\n      } else {\n        buffer = (buffer << 8) | b;\n        bufferSize += 8;\n      }\n      if (b === 0xff) {\n        skipNextBit = true;\n      }\n    }\n    bufferSize -= count;\n    return (buffer >>> bufferSize) & ((1 << count) - 1);\n  }\n  function skipMarkerIfEqual(value) {\n    if (\n      data[offset + position - 1] === 0xff &&\n      data[offset + position] === value\n    ) {\n      skipBytes(1);\n      return true;\n    } else if (\n      data[offset + position] === 0xff &&\n      data[offset + position + 1] === value\n    ) {\n      skipBytes(2);\n      return true;\n    }\n    return false;\n  }\n  function skipBytes(count) {\n    position += count;\n  }\n  function alignToByte() {\n    bufferSize = 0;\n    if (skipNextBit) {\n      position++;\n      skipNextBit = false;\n    }\n  }\n  function readCodingpasses() {\n    if (readBits(1) === 0) {\n      return 1;\n    }\n    if (readBits(1) === 0) {\n      return 2;\n    }\n    let value = readBits(2);\n    if (value < 3) {\n      return value + 3;\n    }\n    value = readBits(5);\n    if (value < 31) {\n      return value + 6;\n    }\n    value = readBits(7);\n    return value + 37;\n  }\n  const tileIndex = context.currentTile.index;\n  const tile = context.tiles[tileIndex];\n  const sopMarkerUsed = context.COD.sopMarkerUsed;\n  const ephMarkerUsed = context.COD.ephMarkerUsed;\n  const packetsIterator = tile.packetsIterator;\n  while (position < dataLength) {\n    alignToByte();\n    if (sopMarkerUsed && skipMarkerIfEqual(0x91)) {\n      // Skip also marker segment length and packet sequence ID\n      skipBytes(4);\n    }\n    const packet = packetsIterator.nextPacket();\n    if (!readBits(1)) {\n      continue;\n    }\n    const layerNumber = packet.layerNumber,\n      queue = [];\n    let codeblock;\n    for (let i = 0, ii = packet.codeblocks.length; i < ii; i++) {\n      codeblock = packet.codeblocks[i];\n      let precinct = codeblock.precinct;\n      const codeblockColumn = codeblock.cbx - precinct.cbxMin;\n      const codeblockRow = codeblock.cby - precinct.cbyMin;\n      let codeblockIncluded = false;\n      let firstTimeInclusion = false;\n      let valueReady, zeroBitPlanesTree;\n      if (codeblock.included !== undefined) {\n        codeblockIncluded = !!readBits(1);\n      } else {\n        // reading inclusion tree\n        precinct = codeblock.precinct;\n        let inclusionTree;\n        if (precinct.inclusionTree !== undefined) {\n          inclusionTree = precinct.inclusionTree;\n        } else {\n          // building inclusion and zero bit-planes trees\n          const width = precinct.cbxMax - precinct.cbxMin + 1;\n          const height = precinct.cbyMax - precinct.cbyMin + 1;\n          inclusionTree = new InclusionTree(width, height, layerNumber);\n          zeroBitPlanesTree = new TagTree(width, height);\n          precinct.inclusionTree = inclusionTree;\n          precinct.zeroBitPlanesTree = zeroBitPlanesTree;\n          for (let l = 0; l < layerNumber; l++) {\n            if (readBits(1) !== 0) {\n              throw new JpxError(\"Invalid tag tree\");\n            }\n          }\n        }\n\n        if (inclusionTree.reset(codeblockColumn, codeblockRow, layerNumber)) {\n          while (true) {\n            if (readBits(1)) {\n              valueReady = !inclusionTree.nextLevel();\n              if (valueReady) {\n                codeblock.included = true;\n                codeblockIncluded = firstTimeInclusion = true;\n                break;\n              }\n            } else {\n              inclusionTree.incrementValue(layerNumber);\n              break;\n            }\n          }\n        }\n      }\n      if (!codeblockIncluded) {\n        continue;\n      }\n      if (firstTimeInclusion) {\n        zeroBitPlanesTree = precinct.zeroBitPlanesTree;\n        zeroBitPlanesTree.reset(codeblockColumn, codeblockRow);\n        while (true) {\n          if (readBits(1)) {\n            valueReady = !zeroBitPlanesTree.nextLevel();\n            if (valueReady) {\n              break;\n            }\n          } else {\n            zeroBitPlanesTree.incrementValue();\n          }\n        }\n        codeblock.zeroBitPlanes = zeroBitPlanesTree.value;\n      }\n      const codingpasses = readCodingpasses();\n      while (readBits(1)) {\n        codeblock.Lblock++;\n      }\n      const codingpassesLog2 = log2(codingpasses);\n      // rounding down log2\n      const bits =\n        (codingpasses < 1 << codingpassesLog2\n          ? codingpassesLog2 - 1\n          : codingpassesLog2) + codeblock.Lblock;\n      const codedDataLength = readBits(bits);\n      queue.push({\n        codeblock,\n        codingpasses,\n        dataLength: codedDataLength,\n      });\n    }\n    alignToByte();\n    if (ephMarkerUsed) {\n      skipMarkerIfEqual(0x92);\n    }\n    while (queue.length > 0) {\n      const packetItem = queue.shift();\n      codeblock = packetItem.codeblock;\n      if (codeblock.data === undefined) {\n        codeblock.data = [];\n      }\n      codeblock.data.push({\n        data,\n        start: offset + position,\n        end: offset + position + packetItem.dataLength,\n        codingpasses: packetItem.codingpasses,\n      });\n      position += packetItem.dataLength;\n    }\n  }\n  return position;\n}\nfunction copyCoefficients(\n  coefficients,\n  levelWidth,\n  levelHeight,\n  subband,\n  delta,\n  mb,\n  reversible,\n  segmentationSymbolUsed\n) {\n  const x0 = subband.tbx0;\n  const y0 = subband.tby0;\n  const width = subband.tbx1 - subband.tbx0;\n  const codeblocks = subband.codeblocks;\n  const right = subband.type.charAt(0) === \"H\" ? 1 : 0;\n  const bottom = subband.type.charAt(1) === \"H\" ? levelWidth : 0;\n\n  for (let i = 0, ii = codeblocks.length; i < ii; ++i) {\n    const codeblock = codeblocks[i];\n    const blockWidth = codeblock.tbx1_ - codeblock.tbx0_;\n    const blockHeight = codeblock.tby1_ - codeblock.tby0_;\n    if (blockWidth === 0 || blockHeight === 0) {\n      continue;\n    }\n    if (codeblock.data === undefined) {\n      continue;\n    }\n\n    const bitModel = new BitModel(\n      blockWidth,\n      blockHeight,\n      codeblock.subbandType,\n      codeblock.zeroBitPlanes,\n      mb\n    );\n    let currentCodingpassType = 2; // first bit plane starts from cleanup\n\n    // collect data\n    const data = codeblock.data;\n    let totalLength = 0,\n      codingpasses = 0;\n    let j, jj, dataItem;\n    for (j = 0, jj = data.length; j < jj; j++) {\n      dataItem = data[j];\n      totalLength += dataItem.end - dataItem.start;\n      codingpasses += dataItem.codingpasses;\n    }\n    const encodedData = new Uint8Array(totalLength);\n    let position = 0;\n    for (j = 0, jj = data.length; j < jj; j++) {\n      dataItem = data[j];\n      const chunk = dataItem.data.subarray(dataItem.start, dataItem.end);\n      encodedData.set(chunk, position);\n      position += chunk.length;\n    }\n    // decoding the item\n    const decoder = new ArithmeticDecoder(encodedData, 0, totalLength);\n    bitModel.setDecoder(decoder);\n\n    for (j = 0; j < codingpasses; j++) {\n      switch (currentCodingpassType) {\n        case 0:\n          bitModel.runSignificancePropagationPass();\n          break;\n        case 1:\n          bitModel.runMagnitudeRefinementPass();\n          break;\n        case 2:\n          bitModel.runCleanupPass();\n          if (segmentationSymbolUsed) {\n            bitModel.checkSegmentationSymbol();\n          }\n          break;\n      }\n      currentCodingpassType = (currentCodingpassType + 1) % 3;\n    }\n\n    let offset = codeblock.tbx0_ - x0 + (codeblock.tby0_ - y0) * width;\n    const sign = bitModel.coefficentsSign;\n    const magnitude = bitModel.coefficentsMagnitude;\n    const bitsDecoded = bitModel.bitsDecoded;\n    const magnitudeCorrection = reversible ? 0 : 0.5;\n    let k, n, nb;\n    position = 0;\n    // Do the interleaving of Section F.3.3 here, so we do not need\n    // to copy later. LL level is not interleaved, just copied.\n    const interleave = subband.type !== \"LL\";\n    for (j = 0; j < blockHeight; j++) {\n      const row = (offset / width) | 0; // row in the non-interleaved subband\n      const levelOffset = 2 * row * (levelWidth - width) + right + bottom;\n      for (k = 0; k < blockWidth; k++) {\n        n = magnitude[position];\n        if (n !== 0) {\n          n = (n + magnitudeCorrection) * delta;\n          if (sign[position] !== 0) {\n            n = -n;\n          }\n          nb = bitsDecoded[position];\n          const pos = interleave ? levelOffset + (offset << 1) : offset;\n          if (reversible && nb >= mb) {\n            coefficients[pos] = n;\n          } else {\n            coefficients[pos] = n * (1 << (mb - nb));\n          }\n        }\n        offset++;\n        position++;\n      }\n      offset += width - blockWidth;\n    }\n  }\n}\nfunction transformTile(context, tile, c) {\n  const component = tile.components[c];\n  const codingStyleParameters = component.codingStyleParameters;\n  const quantizationParameters = component.quantizationParameters;\n  const decompositionLevelsCount =\n    codingStyleParameters.decompositionLevelsCount;\n  const spqcds = quantizationParameters.SPqcds;\n  const scalarExpounded = quantizationParameters.scalarExpounded;\n  const guardBits = quantizationParameters.guardBits;\n  const segmentationSymbolUsed = codingStyleParameters.segmentationSymbolUsed;\n  const precision = context.components[c].precision;\n\n  const reversible = codingStyleParameters.reversibleTransformation;\n  const transform = reversible\n    ? new ReversibleTransform()\n    : new IrreversibleTransform();\n\n  const subbandCoefficients = [];\n  let b = 0;\n  for (let i = 0; i <= decompositionLevelsCount; i++) {\n    const resolution = component.resolutions[i];\n\n    const width = resolution.trx1 - resolution.trx0;\n    const height = resolution.try1 - resolution.try0;\n    // Allocate space for the whole sublevel.\n    const coefficients = new Float32Array(width * height);\n\n    for (let j = 0, jj = resolution.subbands.length; j < jj; j++) {\n      let mu, epsilon;\n      if (!scalarExpounded) {\n        // formula E-5\n        mu = spqcds[0].mu;\n        epsilon = spqcds[0].epsilon + (i > 0 ? 1 - i : 0);\n      } else {\n        mu = spqcds[b].mu;\n        epsilon = spqcds[b].epsilon;\n        b++;\n      }\n\n      const subband = resolution.subbands[j];\n      const gainLog2 = SubbandsGainLog2[subband.type];\n\n      // calculate quantization coefficient (Section E.1.1.1)\n      const delta = reversible\n        ? 1\n        : 2 ** (precision + gainLog2 - epsilon) * (1 + mu / 2048);\n      const mb = guardBits + epsilon - 1;\n\n      // In the first resolution level, copyCoefficients will fill the\n      // whole array with coefficients. In the succeeding passes,\n      // copyCoefficients will consecutively fill in the values that belong\n      // to the interleaved positions of the HL, LH, and HH coefficients.\n      // The LL coefficients will then be interleaved in Transform.iterate().\n      copyCoefficients(\n        coefficients,\n        width,\n        height,\n        subband,\n        delta,\n        mb,\n        reversible,\n        segmentationSymbolUsed\n      );\n    }\n    subbandCoefficients.push({\n      width,\n      height,\n      items: coefficients,\n    });\n  }\n\n  const result = transform.calculate(\n    subbandCoefficients,\n    component.tcx0,\n    component.tcy0\n  );\n  return {\n    left: component.tcx0,\n    top: component.tcy0,\n    width: result.width,\n    height: result.height,\n    items: result.items,\n  };\n}\nfunction transformComponents(context) {\n  const siz = context.SIZ;\n  const components = context.components;\n  const componentsCount = siz.Csiz;\n  const resultImages = [];\n  for (let i = 0, ii = context.tiles.length; i < ii; i++) {\n    const tile = context.tiles[i];\n    const transformedTiles = [];\n    for (let c = 0; c < componentsCount; c++) {\n      transformedTiles[c] = transformTile(context, tile, c);\n    }\n    const tile0 = transformedTiles[0];\n    const out = new Uint8ClampedArray(tile0.items.length * componentsCount);\n    const result = {\n      left: tile0.left,\n      top: tile0.top,\n      width: tile0.width,\n      height: tile0.height,\n      items: out,\n    };\n\n    // Section G.2.2 Inverse multi component transform\n    let shift, offset;\n    let pos = 0,\n      j,\n      jj,\n      y0,\n      y1,\n      y2;\n    if (tile.codingStyleDefaultParameters.multipleComponentTransform) {\n      const fourComponents = componentsCount === 4;\n      const y0items = transformedTiles[0].items;\n      const y1items = transformedTiles[1].items;\n      const y2items = transformedTiles[2].items;\n      const y3items = fourComponents ? transformedTiles[3].items : null;\n\n      // HACK: The multiple component transform formulas below assume that\n      // all components have the same precision. With this in mind, we\n      // compute shift and offset only once.\n      shift = components[0].precision - 8;\n      offset = (128 << shift) + 0.5;\n\n      const component0 = tile.components[0];\n      const alpha01 = componentsCount - 3;\n      jj = y0items.length;\n      if (!component0.codingStyleParameters.reversibleTransformation) {\n        // inverse irreversible multiple component transform\n        for (j = 0; j < jj; j++, pos += alpha01) {\n          y0 = y0items[j] + offset;\n          y1 = y1items[j];\n          y2 = y2items[j];\n          out[pos++] = (y0 + 1.402 * y2) >> shift;\n          out[pos++] = (y0 - 0.34413 * y1 - 0.71414 * y2) >> shift;\n          out[pos++] = (y0 + 1.772 * y1) >> shift;\n        }\n      } else {\n        // inverse reversible multiple component transform\n        for (j = 0; j < jj; j++, pos += alpha01) {\n          y0 = y0items[j] + offset;\n          y1 = y1items[j];\n          y2 = y2items[j];\n          const g = y0 - ((y2 + y1) >> 2);\n\n          out[pos++] = (g + y2) >> shift;\n          out[pos++] = g >> shift;\n          out[pos++] = (g + y1) >> shift;\n        }\n      }\n      if (fourComponents) {\n        for (j = 0, pos = 3; j < jj; j++, pos += 4) {\n          out[pos] = (y3items[j] + offset) >> shift;\n        }\n      }\n    } else {\n      // no multi-component transform\n      for (let c = 0; c < componentsCount; c++) {\n        const items = transformedTiles[c].items;\n        shift = components[c].precision - 8;\n        offset = (128 << shift) + 0.5;\n        for (pos = c, j = 0, jj = items.length; j < jj; j++) {\n          out[pos] = (items[j] + offset) >> shift;\n          pos += componentsCount;\n        }\n      }\n    }\n    resultImages.push(result);\n  }\n  return resultImages;\n}\nfunction initializeTile(context, tileIndex) {\n  const siz = context.SIZ;\n  const componentsCount = siz.Csiz;\n  const tile = context.tiles[tileIndex];\n  for (let c = 0; c < componentsCount; c++) {\n    const component = tile.components[c];\n    const qcdOrQcc =\n      context.currentTile.QCC[c] !== undefined\n        ? context.currentTile.QCC[c]\n        : context.currentTile.QCD;\n    component.quantizationParameters = qcdOrQcc;\n    const codOrCoc =\n      context.currentTile.COC[c] !== undefined\n        ? context.currentTile.COC[c]\n        : context.currentTile.COD;\n    component.codingStyleParameters = codOrCoc;\n  }\n  tile.codingStyleDefaultParameters = context.currentTile.COD;\n}\n\n// Section B.10.2 Tag trees\nclass TagTree {\n  constructor(width, height) {\n    const levelsLength = log2(Math.max(width, height)) + 1;\n    this.levels = [];\n    for (let i = 0; i < levelsLength; i++) {\n      const level = {\n        width,\n        height,\n        items: [],\n      };\n      this.levels.push(level);\n      width = Math.ceil(width / 2);\n      height = Math.ceil(height / 2);\n    }\n  }\n\n  reset(i, j) {\n    let currentLevel = 0,\n      value = 0,\n      level;\n    while (currentLevel < this.levels.length) {\n      level = this.levels[currentLevel];\n      const index = i + j * level.width;\n      if (level.items[index] !== undefined) {\n        value = level.items[index];\n        break;\n      }\n      level.index = index;\n      i >>= 1;\n      j >>= 1;\n      currentLevel++;\n    }\n    currentLevel--;\n    level = this.levels[currentLevel];\n    level.items[level.index] = value;\n    this.currentLevel = currentLevel;\n    delete this.value;\n  }\n\n  incrementValue() {\n    const level = this.levels[this.currentLevel];\n    level.items[level.index]++;\n  }\n\n  nextLevel() {\n    let currentLevel = this.currentLevel;\n    let level = this.levels[currentLevel];\n    const value = level.items[level.index];\n    currentLevel--;\n    if (currentLevel < 0) {\n      this.value = value;\n      return false;\n    }\n\n    this.currentLevel = currentLevel;\n    level = this.levels[currentLevel];\n    level.items[level.index] = value;\n    return true;\n  }\n}\n\nclass InclusionTree {\n  constructor(width, height, defaultValue) {\n    const levelsLength = log2(Math.max(width, height)) + 1;\n    this.levels = [];\n    for (let i = 0; i < levelsLength; i++) {\n      const items = new Uint8Array(width * height);\n      for (let j = 0, jj = items.length; j < jj; j++) {\n        items[j] = defaultValue;\n      }\n\n      const level = {\n        width,\n        height,\n        items,\n      };\n      this.levels.push(level);\n\n      width = Math.ceil(width / 2);\n      height = Math.ceil(height / 2);\n    }\n  }\n\n  reset(i, j, stopValue) {\n    let currentLevel = 0;\n    while (currentLevel < this.levels.length) {\n      const level = this.levels[currentLevel];\n      const index = i + j * level.width;\n      level.index = index;\n      const value = level.items[index];\n\n      if (value === 0xff) {\n        break;\n      }\n\n      if (value > stopValue) {\n        this.currentLevel = currentLevel;\n        // already know about this one, propagating the value to top levels\n        this.propagateValues();\n        return false;\n      }\n\n      i >>= 1;\n      j >>= 1;\n      currentLevel++;\n    }\n    this.currentLevel = currentLevel - 1;\n    return true;\n  }\n\n  incrementValue(stopValue) {\n    const level = this.levels[this.currentLevel];\n    level.items[level.index] = stopValue + 1;\n    this.propagateValues();\n  }\n\n  propagateValues() {\n    let levelIndex = this.currentLevel;\n    let level = this.levels[levelIndex];\n    const currentValue = level.items[level.index];\n    while (--levelIndex >= 0) {\n      level = this.levels[levelIndex];\n      level.items[level.index] = currentValue;\n    }\n  }\n\n  nextLevel() {\n    let currentLevel = this.currentLevel;\n    let level = this.levels[currentLevel];\n    const value = level.items[level.index];\n    level.items[level.index] = 0xff;\n    currentLevel--;\n    if (currentLevel < 0) {\n      return false;\n    }\n\n    this.currentLevel = currentLevel;\n    level = this.levels[currentLevel];\n    level.items[level.index] = value;\n    return true;\n  }\n}\n\n// Section D. Coefficient bit modeling\nconst BitModel = (function BitModelClosure() {\n  const UNIFORM_CONTEXT = 17;\n  const RUNLENGTH_CONTEXT = 18;\n  // Table D-1\n  // The index is binary presentation: 0dddvvhh, ddd - sum of Di (0..4),\n  // vv - sum of Vi (0..2), and hh - sum of Hi (0..2)\n  const LLAndLHContextsLabel = new Uint8Array([\n    0, 5, 8, 0, 3, 7, 8, 0, 4, 7, 8, 0, 0, 0, 0, 0, 1, 6, 8, 0, 3, 7, 8, 0, 4,\n    7, 8, 0, 0, 0, 0, 0, 2, 6, 8, 0, 3, 7, 8, 0, 4, 7, 8, 0, 0, 0, 0, 0, 2, 6,\n    8, 0, 3, 7, 8, 0, 4, 7, 8, 0, 0, 0, 0, 0, 2, 6, 8, 0, 3, 7, 8, 0, 4, 7, 8,\n  ]);\n  const HLContextLabel = new Uint8Array([\n    0, 3, 4, 0, 5, 7, 7, 0, 8, 8, 8, 0, 0, 0, 0, 0, 1, 3, 4, 0, 6, 7, 7, 0, 8,\n    8, 8, 0, 0, 0, 0, 0, 2, 3, 4, 0, 6, 7, 7, 0, 8, 8, 8, 0, 0, 0, 0, 0, 2, 3,\n    4, 0, 6, 7, 7, 0, 8, 8, 8, 0, 0, 0, 0, 0, 2, 3, 4, 0, 6, 7, 7, 0, 8, 8, 8,\n  ]);\n  const HHContextLabel = new Uint8Array([\n    0, 1, 2, 0, 1, 2, 2, 0, 2, 2, 2, 0, 0, 0, 0, 0, 3, 4, 5, 0, 4, 5, 5, 0, 5,\n    5, 5, 0, 0, 0, 0, 0, 6, 7, 7, 0, 7, 7, 7, 0, 7, 7, 7, 0, 0, 0, 0, 0, 8, 8,\n    8, 0, 8, 8, 8, 0, 8, 8, 8, 0, 0, 0, 0, 0, 8, 8, 8, 0, 8, 8, 8, 0, 8, 8, 8,\n  ]);\n\n  // eslint-disable-next-line no-shadow\n  class BitModel {\n    constructor(width, height, subband, zeroBitPlanes, mb) {\n      this.width = width;\n      this.height = height;\n\n      let contextLabelTable;\n      if (subband === \"HH\") {\n        contextLabelTable = HHContextLabel;\n      } else if (subband === \"HL\") {\n        contextLabelTable = HLContextLabel;\n      } else {\n        contextLabelTable = LLAndLHContextsLabel;\n      }\n      this.contextLabelTable = contextLabelTable;\n\n      const coefficientCount = width * height;\n\n      // coefficients outside the encoding region treated as insignificant\n      // add border state cells for significanceState\n      this.neighborsSignificance = new Uint8Array(coefficientCount);\n      this.coefficentsSign = new Uint8Array(coefficientCount);\n      let coefficentsMagnitude;\n      if (mb > 14) {\n        coefficentsMagnitude = new Uint32Array(coefficientCount);\n      } else if (mb > 6) {\n        coefficentsMagnitude = new Uint16Array(coefficientCount);\n      } else {\n        coefficentsMagnitude = new Uint8Array(coefficientCount);\n      }\n      this.coefficentsMagnitude = coefficentsMagnitude;\n      this.processingFlags = new Uint8Array(coefficientCount);\n\n      const bitsDecoded = new Uint8Array(coefficientCount);\n      if (zeroBitPlanes !== 0) {\n        for (let i = 0; i < coefficientCount; i++) {\n          bitsDecoded[i] = zeroBitPlanes;\n        }\n      }\n      this.bitsDecoded = bitsDecoded;\n\n      this.reset();\n    }\n\n    setDecoder(decoder) {\n      this.decoder = decoder;\n    }\n\n    reset() {\n      // We have 17 contexts that are accessed via context labels,\n      // plus the uniform and runlength context.\n      this.contexts = new Int8Array(19);\n\n      // Contexts are packed into 1 byte:\n      // highest 7 bits carry the index, lowest bit carries mps\n      this.contexts[0] = (4 << 1) | 0;\n      this.contexts[UNIFORM_CONTEXT] = (46 << 1) | 0;\n      this.contexts[RUNLENGTH_CONTEXT] = (3 << 1) | 0;\n    }\n\n    setNeighborsSignificance(row, column, index) {\n      const neighborsSignificance = this.neighborsSignificance;\n      const width = this.width,\n        height = this.height;\n      const left = column > 0;\n      const right = column + 1 < width;\n      let i;\n\n      if (row > 0) {\n        i = index - width;\n        if (left) {\n          neighborsSignificance[i - 1] += 0x10;\n        }\n        if (right) {\n          neighborsSignificance[i + 1] += 0x10;\n        }\n        neighborsSignificance[i] += 0x04;\n      }\n\n      if (row + 1 < height) {\n        i = index + width;\n        if (left) {\n          neighborsSignificance[i - 1] += 0x10;\n        }\n        if (right) {\n          neighborsSignificance[i + 1] += 0x10;\n        }\n        neighborsSignificance[i] += 0x04;\n      }\n\n      if (left) {\n        neighborsSignificance[index - 1] += 0x01;\n      }\n      if (right) {\n        neighborsSignificance[index + 1] += 0x01;\n      }\n      neighborsSignificance[index] |= 0x80;\n    }\n\n    runSignificancePropagationPass() {\n      const decoder = this.decoder;\n      const width = this.width,\n        height = this.height;\n      const coefficentsMagnitude = this.coefficentsMagnitude;\n      const coefficentsSign = this.coefficentsSign;\n      const neighborsSignificance = this.neighborsSignificance;\n      const processingFlags = this.processingFlags;\n      const contexts = this.contexts;\n      const labels = this.contextLabelTable;\n      const bitsDecoded = this.bitsDecoded;\n      const processedInverseMask = ~1;\n      const processedMask = 1;\n      const firstMagnitudeBitMask = 2;\n\n      for (let i0 = 0; i0 < height; i0 += 4) {\n        for (let j = 0; j < width; j++) {\n          let index = i0 * width + j;\n          for (let i1 = 0; i1 < 4; i1++, index += width) {\n            const i = i0 + i1;\n            if (i >= height) {\n              break;\n            }\n            // clear processed flag first\n            processingFlags[index] &= processedInverseMask;\n\n            if (coefficentsMagnitude[index] || !neighborsSignificance[index]) {\n              continue;\n            }\n\n            const contextLabel = labels[neighborsSignificance[index]];\n            const decision = decoder.readBit(contexts, contextLabel);\n            if (decision) {\n              const sign = this.decodeSignBit(i, j, index);\n              coefficentsSign[index] = sign;\n              coefficentsMagnitude[index] = 1;\n              this.setNeighborsSignificance(i, j, index);\n              processingFlags[index] |= firstMagnitudeBitMask;\n            }\n            bitsDecoded[index]++;\n            processingFlags[index] |= processedMask;\n          }\n        }\n      }\n    }\n\n    decodeSignBit(row, column, index) {\n      const width = this.width,\n        height = this.height;\n      const coefficentsMagnitude = this.coefficentsMagnitude;\n      const coefficentsSign = this.coefficentsSign;\n      let contribution, sign0, sign1, significance1;\n      let contextLabel, decoded;\n\n      // calculate horizontal contribution\n      significance1 = column > 0 && coefficentsMagnitude[index - 1] !== 0;\n      if (column + 1 < width && coefficentsMagnitude[index + 1] !== 0) {\n        sign1 = coefficentsSign[index + 1];\n        if (significance1) {\n          sign0 = coefficentsSign[index - 1];\n          contribution = 1 - sign1 - sign0;\n        } else {\n          contribution = 1 - sign1 - sign1;\n        }\n      } else if (significance1) {\n        sign0 = coefficentsSign[index - 1];\n        contribution = 1 - sign0 - sign0;\n      } else {\n        contribution = 0;\n      }\n      const horizontalContribution = 3 * contribution;\n\n      // calculate vertical contribution and combine with the horizontal\n      significance1 = row > 0 && coefficentsMagnitude[index - width] !== 0;\n      if (row + 1 < height && coefficentsMagnitude[index + width] !== 0) {\n        sign1 = coefficentsSign[index + width];\n        if (significance1) {\n          sign0 = coefficentsSign[index - width];\n          contribution = 1 - sign1 - sign0 + horizontalContribution;\n        } else {\n          contribution = 1 - sign1 - sign1 + horizontalContribution;\n        }\n      } else if (significance1) {\n        sign0 = coefficentsSign[index - width];\n        contribution = 1 - sign0 - sign0 + horizontalContribution;\n      } else {\n        contribution = horizontalContribution;\n      }\n\n      if (contribution >= 0) {\n        contextLabel = 9 + contribution;\n        decoded = this.decoder.readBit(this.contexts, contextLabel);\n      } else {\n        contextLabel = 9 - contribution;\n        decoded = this.decoder.readBit(this.contexts, contextLabel) ^ 1;\n      }\n      return decoded;\n    }\n\n    runMagnitudeRefinementPass() {\n      const decoder = this.decoder;\n      const width = this.width,\n        height = this.height;\n      const coefficentsMagnitude = this.coefficentsMagnitude;\n      const neighborsSignificance = this.neighborsSignificance;\n      const contexts = this.contexts;\n      const bitsDecoded = this.bitsDecoded;\n      const processingFlags = this.processingFlags;\n      const processedMask = 1;\n      const firstMagnitudeBitMask = 2;\n      const length = width * height;\n      const width4 = width * 4;\n\n      for (let index0 = 0, indexNext; index0 < length; index0 = indexNext) {\n        indexNext = Math.min(length, index0 + width4);\n        for (let j = 0; j < width; j++) {\n          for (let index = index0 + j; index < indexNext; index += width) {\n            // significant but not those that have just become\n            if (\n              !coefficentsMagnitude[index] ||\n              (processingFlags[index] & processedMask) !== 0\n            ) {\n              continue;\n            }\n\n            let contextLabel = 16;\n            if ((processingFlags[index] & firstMagnitudeBitMask) !== 0) {\n              processingFlags[index] ^= firstMagnitudeBitMask;\n              // first refinement\n              const significance = neighborsSignificance[index] & 127;\n              contextLabel = significance === 0 ? 15 : 14;\n            }\n\n            const bit = decoder.readBit(contexts, contextLabel);\n            coefficentsMagnitude[index] =\n              (coefficentsMagnitude[index] << 1) | bit;\n            bitsDecoded[index]++;\n            processingFlags[index] |= processedMask;\n          }\n        }\n      }\n    }\n\n    runCleanupPass() {\n      const decoder = this.decoder;\n      const width = this.width,\n        height = this.height;\n      const neighborsSignificance = this.neighborsSignificance;\n      const coefficentsMagnitude = this.coefficentsMagnitude;\n      const coefficentsSign = this.coefficentsSign;\n      const contexts = this.contexts;\n      const labels = this.contextLabelTable;\n      const bitsDecoded = this.bitsDecoded;\n      const processingFlags = this.processingFlags;\n      const processedMask = 1;\n      const firstMagnitudeBitMask = 2;\n      const oneRowDown = width;\n      const twoRowsDown = width * 2;\n      const threeRowsDown = width * 3;\n      let iNext;\n      for (let i0 = 0; i0 < height; i0 = iNext) {\n        iNext = Math.min(i0 + 4, height);\n        const indexBase = i0 * width;\n        const checkAllEmpty = i0 + 3 < height;\n        for (let j = 0; j < width; j++) {\n          const index0 = indexBase + j;\n          // using the property: labels[neighborsSignificance[index]] === 0\n          // when neighborsSignificance[index] === 0\n          const allEmpty =\n            checkAllEmpty &&\n            processingFlags[index0] === 0 &&\n            processingFlags[index0 + oneRowDown] === 0 &&\n            processingFlags[index0 + twoRowsDown] === 0 &&\n            processingFlags[index0 + threeRowsDown] === 0 &&\n            neighborsSignificance[index0] === 0 &&\n            neighborsSignificance[index0 + oneRowDown] === 0 &&\n            neighborsSignificance[index0 + twoRowsDown] === 0 &&\n            neighborsSignificance[index0 + threeRowsDown] === 0;\n          let i1 = 0,\n            index = index0;\n          let i = i0,\n            sign;\n          if (allEmpty) {\n            const hasSignificantCoefficent = decoder.readBit(\n              contexts,\n              RUNLENGTH_CONTEXT\n            );\n            if (!hasSignificantCoefficent) {\n              bitsDecoded[index0]++;\n              bitsDecoded[index0 + oneRowDown]++;\n              bitsDecoded[index0 + twoRowsDown]++;\n              bitsDecoded[index0 + threeRowsDown]++;\n              continue; // next column\n            }\n            i1 =\n              (decoder.readBit(contexts, UNIFORM_CONTEXT) << 1) |\n              decoder.readBit(contexts, UNIFORM_CONTEXT);\n            if (i1 !== 0) {\n              i = i0 + i1;\n              index += i1 * width;\n            }\n\n            sign = this.decodeSignBit(i, j, index);\n            coefficentsSign[index] = sign;\n            coefficentsMagnitude[index] = 1;\n            this.setNeighborsSignificance(i, j, index);\n            processingFlags[index] |= firstMagnitudeBitMask;\n\n            index = index0;\n            for (let i2 = i0; i2 <= i; i2++, index += width) {\n              bitsDecoded[index]++;\n            }\n\n            i1++;\n          }\n          for (i = i0 + i1; i < iNext; i++, index += width) {\n            if (\n              coefficentsMagnitude[index] ||\n              (processingFlags[index] & processedMask) !== 0\n            ) {\n              continue;\n            }\n\n            const contextLabel = labels[neighborsSignificance[index]];\n            const decision = decoder.readBit(contexts, contextLabel);\n            if (decision === 1) {\n              sign = this.decodeSignBit(i, j, index);\n              coefficentsSign[index] = sign;\n              coefficentsMagnitude[index] = 1;\n              this.setNeighborsSignificance(i, j, index);\n              processingFlags[index] |= firstMagnitudeBitMask;\n            }\n            bitsDecoded[index]++;\n          }\n        }\n      }\n    }\n\n    checkSegmentationSymbol() {\n      const decoder = this.decoder;\n      const contexts = this.contexts;\n      const symbol =\n        (decoder.readBit(contexts, UNIFORM_CONTEXT) << 3) |\n        (decoder.readBit(contexts, UNIFORM_CONTEXT) << 2) |\n        (decoder.readBit(contexts, UNIFORM_CONTEXT) << 1) |\n        decoder.readBit(contexts, UNIFORM_CONTEXT);\n      if (symbol !== 0xa) {\n        throw new JpxError(\"Invalid segmentation symbol\");\n      }\n    }\n  }\n\n  return BitModel;\n})();\n\n// Section F, Discrete wavelet transformation\nclass Transform {\n  constructor() {\n    if (this.constructor === Transform) {\n      unreachable(\"Cannot initialize Transform.\");\n    }\n  }\n\n  calculate(subbands, u0, v0) {\n    let ll = subbands[0];\n    for (let i = 1, ii = subbands.length; i < ii; i++) {\n      ll = this.iterate(ll, subbands[i], u0, v0);\n    }\n    return ll;\n  }\n\n  extend(buffer, offset, size) {\n    // Section F.3.7 extending... using max extension of 4\n    let i1 = offset - 1,\n      j1 = offset + 1;\n    let i2 = offset + size - 2,\n      j2 = offset + size;\n    buffer[i1--] = buffer[j1++];\n    buffer[j2++] = buffer[i2--];\n    buffer[i1--] = buffer[j1++];\n    buffer[j2++] = buffer[i2--];\n    buffer[i1--] = buffer[j1++];\n    buffer[j2++] = buffer[i2--];\n    buffer[i1] = buffer[j1];\n    buffer[j2] = buffer[i2];\n  }\n\n  filter(x, offset, length) {\n    unreachable(\"Abstract method `filter` called\");\n  }\n\n  iterate(ll, hl_lh_hh, u0, v0) {\n    const llWidth = ll.width,\n      llHeight = ll.height;\n    let llItems = ll.items;\n    const width = hl_lh_hh.width;\n    const height = hl_lh_hh.height;\n    const items = hl_lh_hh.items;\n    let i, j, k, l, u, v;\n\n    // Interleave LL according to Section F.3.3\n    for (k = 0, i = 0; i < llHeight; i++) {\n      l = i * 2 * width;\n      for (j = 0; j < llWidth; j++, k++, l += 2) {\n        items[l] = llItems[k];\n      }\n    }\n    // The LL band is not needed anymore.\n    llItems = ll.items = null;\n\n    const bufferPadding = 4;\n    const rowBuffer = new Float32Array(width + 2 * bufferPadding);\n\n    // Section F.3.4 HOR_SR\n    if (width === 1) {\n      // if width = 1, when u0 even keep items as is, when odd divide by 2\n      if ((u0 & 1) !== 0) {\n        for (v = 0, k = 0; v < height; v++, k += width) {\n          items[k] *= 0.5;\n        }\n      }\n    } else {\n      for (v = 0, k = 0; v < height; v++, k += width) {\n        rowBuffer.set(items.subarray(k, k + width), bufferPadding);\n\n        this.extend(rowBuffer, bufferPadding, width);\n        this.filter(rowBuffer, bufferPadding, width);\n\n        items.set(rowBuffer.subarray(bufferPadding, bufferPadding + width), k);\n      }\n    }\n\n    // Accesses to the items array can take long, because it may not fit into\n    // CPU cache and has to be fetched from main memory. Since subsequent\n    // accesses to the items array are not local when reading columns, we\n    // have a cache miss every time. To reduce cache misses, get up to\n    // 'numBuffers' items at a time and store them into the individual\n    // buffers. The colBuffers should be small enough to fit into CPU cache.\n    let numBuffers = 16;\n    const colBuffers = [];\n    for (i = 0; i < numBuffers; i++) {\n      colBuffers.push(new Float32Array(height + 2 * bufferPadding));\n    }\n    let b,\n      currentBuffer = 0;\n    ll = bufferPadding + height;\n\n    // Section F.3.5 VER_SR\n    if (height === 1) {\n      // if height = 1, when v0 even keep items as is, when odd divide by 2\n      if ((v0 & 1) !== 0) {\n        for (u = 0; u < width; u++) {\n          items[u] *= 0.5;\n        }\n      }\n    } else {\n      for (u = 0; u < width; u++) {\n        // if we ran out of buffers, copy several image columns at once\n        if (currentBuffer === 0) {\n          numBuffers = Math.min(width - u, numBuffers);\n          for (k = u, l = bufferPadding; l < ll; k += width, l++) {\n            for (b = 0; b < numBuffers; b++) {\n              colBuffers[b][l] = items[k + b];\n            }\n          }\n          currentBuffer = numBuffers;\n        }\n\n        currentBuffer--;\n        const buffer = colBuffers[currentBuffer];\n        this.extend(buffer, bufferPadding, height);\n        this.filter(buffer, bufferPadding, height);\n\n        // If this is last buffer in this group of buffers, flush all buffers.\n        if (currentBuffer === 0) {\n          k = u - numBuffers + 1;\n          for (l = bufferPadding; l < ll; k += width, l++) {\n            for (b = 0; b < numBuffers; b++) {\n              items[k + b] = colBuffers[b][l];\n            }\n          }\n        }\n      }\n    }\n\n    return { width, height, items };\n  }\n}\n\n// Section 3.8.2 Irreversible 9-7 filter\nclass IrreversibleTransform extends Transform {\n  filter(x, offset, length) {\n    const len = length >> 1;\n    offset |= 0;\n    let j, n, current, next;\n\n    const alpha = -1.586134342059924;\n    const beta = -0.052980118572961;\n    const gamma = 0.882911075530934;\n    const delta = 0.443506852043971;\n    const K = 1.230174104914001;\n    const K_ = 1 / K;\n\n    // step 1 is combined with step 3\n\n    // step 2\n    j = offset - 3;\n    for (n = len + 4; n--; j += 2) {\n      x[j] *= K_;\n    }\n\n    // step 1 & 3\n    j = offset - 2;\n    current = delta * x[j - 1];\n    for (n = len + 3; n--; j += 2) {\n      next = delta * x[j + 1];\n      x[j] = K * x[j] - current - next;\n      if (n--) {\n        j += 2;\n        current = delta * x[j + 1];\n        x[j] = K * x[j] - current - next;\n      } else {\n        break;\n      }\n    }\n\n    // step 4\n    j = offset - 1;\n    current = gamma * x[j - 1];\n    for (n = len + 2; n--; j += 2) {\n      next = gamma * x[j + 1];\n      x[j] -= current + next;\n      if (n--) {\n        j += 2;\n        current = gamma * x[j + 1];\n        x[j] -= current + next;\n      } else {\n        break;\n      }\n    }\n\n    // step 5\n    j = offset;\n    current = beta * x[j - 1];\n    for (n = len + 1; n--; j += 2) {\n      next = beta * x[j + 1];\n      x[j] -= current + next;\n      if (n--) {\n        j += 2;\n        current = beta * x[j + 1];\n        x[j] -= current + next;\n      } else {\n        break;\n      }\n    }\n\n    // step 6\n    if (len !== 0) {\n      j = offset + 1;\n      current = alpha * x[j - 1];\n      for (n = len; n--; j += 2) {\n        next = alpha * x[j + 1];\n        x[j] -= current + next;\n        if (n--) {\n          j += 2;\n          current = alpha * x[j + 1];\n          x[j] -= current + next;\n        } else {\n          break;\n        }\n      }\n    }\n  }\n}\n\n// Section 3.8.1 Reversible 5-3 filter\nclass ReversibleTransform extends Transform {\n  filter(x, offset, length) {\n    const len = length >> 1;\n    offset |= 0;\n    let j, n;\n\n    for (j = offset, n = len + 1; n--; j += 2) {\n      x[j] -= (x[j - 1] + x[j + 1] + 2) >> 2;\n    }\n\n    for (j = offset + 1, n = len; n--; j += 2) {\n      x[j] += (x[j - 1] + x[j + 1]) >> 1;\n    }\n  }\n}\n\nexport { JpxImage };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { DecodeStream } from \"./decode_stream.js\";\n\nclass LZWStream extends DecodeStream {\n  constructor(str, maybeLength, earlyChange) {\n    super(maybeLength);\n\n    this.str = str;\n    this.dict = str.dict;\n    this.cachedData = 0;\n    this.bitsCached = 0;\n\n    const maxLzwDictionarySize = 4096;\n    const lzwState = {\n      earlyChange,\n      codeLength: 9,\n      nextCode: 258,\n      dictionaryValues: new Uint8Array(maxLzwDictionarySize),\n      dictionaryLengths: new Uint16Array(maxLzwDictionarySize),\n      dictionaryPrevCodes: new Uint16Array(maxLzwDictionarySize),\n      currentSequence: new Uint8Array(maxLzwDictionarySize),\n      currentSequenceLength: 0,\n    };\n    for (let i = 0; i < 256; ++i) {\n      lzwState.dictionaryValues[i] = i;\n      lzwState.dictionaryLengths[i] = 1;\n    }\n    this.lzwState = lzwState;\n  }\n\n  readBits(n) {\n    let bitsCached = this.bitsCached;\n    let cachedData = this.cachedData;\n    while (bitsCached < n) {\n      const c = this.str.getByte();\n      if (c === -1) {\n        this.eof = true;\n        return null;\n      }\n      cachedData = (cachedData << 8) | c;\n      bitsCached += 8;\n    }\n    this.bitsCached = bitsCached -= n;\n    this.cachedData = cachedData;\n    this.lastCode = null;\n    return (cachedData >>> bitsCached) & ((1 << n) - 1);\n  }\n\n  readBlock() {\n    const blockSize = 512,\n      decodedSizeDelta = blockSize;\n    let estimatedDecodedSize = blockSize * 2;\n    let i, j, q;\n\n    const lzwState = this.lzwState;\n    if (!lzwState) {\n      return; // eof was found\n    }\n\n    const earlyChange = lzwState.earlyChange;\n    let nextCode = lzwState.nextCode;\n    const dictionaryValues = lzwState.dictionaryValues;\n    const dictionaryLengths = lzwState.dictionaryLengths;\n    const dictionaryPrevCodes = lzwState.dictionaryPrevCodes;\n    let codeLength = lzwState.codeLength;\n    let prevCode = lzwState.prevCode;\n    const currentSequence = lzwState.currentSequence;\n    let currentSequenceLength = lzwState.currentSequenceLength;\n\n    let decodedLength = 0;\n    let currentBufferLength = this.bufferLength;\n    let buffer = this.ensureBuffer(this.bufferLength + estimatedDecodedSize);\n\n    for (i = 0; i < blockSize; i++) {\n      const code = this.readBits(codeLength);\n      const hasPrev = currentSequenceLength > 0;\n      if (code < 256) {\n        currentSequence[0] = code;\n        currentSequenceLength = 1;\n      } else if (code >= 258) {\n        if (code < nextCode) {\n          currentSequenceLength = dictionaryLengths[code];\n          for (j = currentSequenceLength - 1, q = code; j >= 0; j--) {\n            currentSequence[j] = dictionaryValues[q];\n            q = dictionaryPrevCodes[q];\n          }\n        } else {\n          currentSequence[currentSequenceLength++] = currentSequence[0];\n        }\n      } else if (code === 256) {\n        codeLength = 9;\n        nextCode = 258;\n        currentSequenceLength = 0;\n        continue;\n      } else {\n        this.eof = true;\n        delete this.lzwState;\n        break;\n      }\n\n      if (hasPrev) {\n        dictionaryPrevCodes[nextCode] = prevCode;\n        dictionaryLengths[nextCode] = dictionaryLengths[prevCode] + 1;\n        dictionaryValues[nextCode] = currentSequence[0];\n        nextCode++;\n        codeLength =\n          (nextCode + earlyChange) & (nextCode + earlyChange - 1)\n            ? codeLength\n            : Math.min(\n                Math.log(nextCode + earlyChange) / 0.6931471805599453 + 1,\n                12\n              ) | 0;\n      }\n      prevCode = code;\n\n      decodedLength += currentSequenceLength;\n      if (estimatedDecodedSize < decodedLength) {\n        do {\n          estimatedDecodedSize += decodedSizeDelta;\n        } while (estimatedDecodedSize < decodedLength);\n        buffer = this.ensureBuffer(this.bufferLength + estimatedDecodedSize);\n      }\n      for (j = 0; j < currentSequenceLength; j++) {\n        buffer[currentBufferLength++] = currentSequence[j];\n      }\n    }\n    lzwState.nextCode = nextCode;\n    lzwState.codeLength = codeLength;\n    lzwState.prevCode = prevCode;\n    lzwState.currentSequenceLength = currentSequenceLength;\n\n    this.bufferLength = currentBufferLength;\n  }\n}\n\nexport { LZWStream };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { DecodeStream } from \"./decode_stream.js\";\nimport { FormatError } from \"../shared/util.js\";\nimport { isDict } from \"./primitives.js\";\n\nclass PredictorStream extends DecodeStream {\n  constructor(str, maybeLength, params) {\n    super(maybeLength);\n\n    if (!isDict(params)) {\n      return str; // no prediction\n    }\n    const predictor = (this.predictor = params.get(\"Predictor\") || 1);\n\n    if (predictor <= 1) {\n      return str; // no prediction\n    }\n    if (predictor !== 2 && (predictor < 10 || predictor > 15)) {\n      throw new FormatError(`Unsupported predictor: ${predictor}`);\n    }\n\n    if (predictor === 2) {\n      this.readBlock = this.readBlockTiff;\n    } else {\n      this.readBlock = this.readBlockPng;\n    }\n\n    this.str = str;\n    this.dict = str.dict;\n\n    const colors = (this.colors = params.get(\"Colors\") || 1);\n    const bits = (this.bits = params.get(\"BPC\", \"BitsPerComponent\") || 8);\n    const columns = (this.columns = params.get(\"Columns\") || 1);\n\n    this.pixBytes = (colors * bits + 7) >> 3;\n    this.rowBytes = (columns * colors * bits + 7) >> 3;\n\n    return this;\n  }\n\n  readBlockTiff() {\n    const rowBytes = this.rowBytes;\n\n    const bufferLength = this.bufferLength;\n    const buffer = this.ensureBuffer(bufferLength + rowBytes);\n\n    const bits = this.bits;\n    const colors = this.colors;\n\n    const rawBytes = this.str.getBytes(rowBytes);\n    this.eof = !rawBytes.length;\n    if (this.eof) {\n      return;\n    }\n\n    let inbuf = 0,\n      outbuf = 0;\n    let inbits = 0,\n      outbits = 0;\n    let pos = bufferLength;\n    let i;\n\n    if (bits === 1 && colors === 1) {\n      // Optimized version of the loop in the \"else\"-branch\n      // for 1 bit-per-component and 1 color TIFF images.\n      for (i = 0; i < rowBytes; ++i) {\n        let c = rawBytes[i] ^ inbuf;\n        c ^= c >> 1;\n        c ^= c >> 2;\n        c ^= c >> 4;\n        inbuf = (c & 1) << 7;\n        buffer[pos++] = c;\n      }\n    } else if (bits === 8) {\n      for (i = 0; i < colors; ++i) {\n        buffer[pos++] = rawBytes[i];\n      }\n      for (; i < rowBytes; ++i) {\n        buffer[pos] = buffer[pos - colors] + rawBytes[i];\n        pos++;\n      }\n    } else if (bits === 16) {\n      const bytesPerPixel = colors * 2;\n      for (i = 0; i < bytesPerPixel; ++i) {\n        buffer[pos++] = rawBytes[i];\n      }\n      for (; i < rowBytes; i += 2) {\n        const sum =\n          ((rawBytes[i] & 0xff) << 8) +\n          (rawBytes[i + 1] & 0xff) +\n          ((buffer[pos - bytesPerPixel] & 0xff) << 8) +\n          (buffer[pos - bytesPerPixel + 1] & 0xff);\n        buffer[pos++] = (sum >> 8) & 0xff;\n        buffer[pos++] = sum & 0xff;\n      }\n    } else {\n      const compArray = new Uint8Array(colors + 1);\n      const bitMask = (1 << bits) - 1;\n      let j = 0,\n        k = bufferLength;\n      const columns = this.columns;\n      for (i = 0; i < columns; ++i) {\n        for (let kk = 0; kk < colors; ++kk) {\n          if (inbits < bits) {\n            inbuf = (inbuf << 8) | (rawBytes[j++] & 0xff);\n            inbits += 8;\n          }\n          compArray[kk] =\n            (compArray[kk] + (inbuf >> (inbits - bits))) & bitMask;\n          inbits -= bits;\n          outbuf = (outbuf << bits) | compArray[kk];\n          outbits += bits;\n          if (outbits >= 8) {\n            buffer[k++] = (outbuf >> (outbits - 8)) & 0xff;\n            outbits -= 8;\n          }\n        }\n      }\n      if (outbits > 0) {\n        buffer[k++] =\n          (outbuf << (8 - outbits)) + (inbuf & ((1 << (8 - outbits)) - 1));\n      }\n    }\n    this.bufferLength += rowBytes;\n  }\n\n  readBlockPng() {\n    const rowBytes = this.rowBytes;\n    const pixBytes = this.pixBytes;\n\n    const predictor = this.str.getByte();\n    const rawBytes = this.str.getBytes(rowBytes);\n    this.eof = !rawBytes.length;\n    if (this.eof) {\n      return;\n    }\n\n    const bufferLength = this.bufferLength;\n    const buffer = this.ensureBuffer(bufferLength + rowBytes);\n\n    let prevRow = buffer.subarray(bufferLength - rowBytes, bufferLength);\n    if (prevRow.length === 0) {\n      prevRow = new Uint8Array(rowBytes);\n    }\n\n    let i,\n      j = bufferLength,\n      up,\n      c;\n    switch (predictor) {\n      case 0:\n        for (i = 0; i < rowBytes; ++i) {\n          buffer[j++] = rawBytes[i];\n        }\n        break;\n      case 1:\n        for (i = 0; i < pixBytes; ++i) {\n          buffer[j++] = rawBytes[i];\n        }\n        for (; i < rowBytes; ++i) {\n          buffer[j] = (buffer[j - pixBytes] + rawBytes[i]) & 0xff;\n          j++;\n        }\n        break;\n      case 2:\n        for (i = 0; i < rowBytes; ++i) {\n          buffer[j++] = (prevRow[i] + rawBytes[i]) & 0xff;\n        }\n        break;\n      case 3:\n        for (i = 0; i < pixBytes; ++i) {\n          buffer[j++] = (prevRow[i] >> 1) + rawBytes[i];\n        }\n        for (; i < rowBytes; ++i) {\n          buffer[j] =\n            (((prevRow[i] + buffer[j - pixBytes]) >> 1) + rawBytes[i]) & 0xff;\n          j++;\n        }\n        break;\n      case 4:\n        // we need to save the up left pixels values. the simplest way\n        // is to create a new buffer\n        for (i = 0; i < pixBytes; ++i) {\n          up = prevRow[i];\n          c = rawBytes[i];\n          buffer[j++] = up + c;\n        }\n        for (; i < rowBytes; ++i) {\n          up = prevRow[i];\n          const upLeft = prevRow[i - pixBytes];\n          const left = buffer[j - pixBytes];\n          const p = left + up - upLeft;\n\n          let pa = p - left;\n          if (pa < 0) {\n            pa = -pa;\n          }\n          let pb = p - up;\n          if (pb < 0) {\n            pb = -pb;\n          }\n          let pc = p - upLeft;\n          if (pc < 0) {\n            pc = -pc;\n          }\n\n          c = rawBytes[i];\n          if (pa <= pb && pa <= pc) {\n            buffer[j++] = left + c;\n          } else if (pb <= pc) {\n            buffer[j++] = up + c;\n          } else {\n            buffer[j++] = upLeft + c;\n          }\n        }\n        break;\n      default:\n        throw new FormatError(`Unsupported predictor: ${predictor}`);\n    }\n    this.bufferLength += rowBytes;\n  }\n}\n\nexport { PredictorStream };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { DecodeStream } from \"./decode_stream.js\";\n\nclass RunLengthStream extends DecodeStream {\n  constructor(str, maybeLength) {\n    super(maybeLength);\n\n    this.str = str;\n    this.dict = str.dict;\n  }\n\n  readBlock() {\n    // The repeatHeader has following format. The first byte defines type of run\n    // and amount of bytes to repeat/copy: n = 0 through 127 - copy next n bytes\n    // (in addition to the second byte from the header), n = 129 through 255 -\n    // duplicate the second byte from the header (257 - n) times, n = 128 - end.\n    const repeatHeader = this.str.getBytes(2);\n    if (!repeatHeader || repeatHeader.length < 2 || repeatHeader[0] === 128) {\n      this.eof = true;\n      return;\n    }\n\n    let buffer;\n    let bufferLength = this.bufferLength;\n    let n = repeatHeader[0];\n    if (n < 128) {\n      // copy n bytes\n      buffer = this.ensureBuffer(bufferLength + n + 1);\n      buffer[bufferLength++] = repeatHeader[1];\n      if (n > 0) {\n        const source = this.str.getBytes(n);\n        buffer.set(source, bufferLength);\n        bufferLength += n;\n      }\n    } else {\n      n = 257 - n;\n      const b = repeatHeader[1];\n      buffer = this.ensureBuffer(bufferLength + n + 1);\n      for (let i = 0; i < n; i++) {\n        buffer[bufferLength++] = b;\n      }\n    }\n    this.bufferLength = bufferLength;\n  }\n}\n\nexport { RunLengthStream };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n  assert,\n  bytesToString,\n  FONT_IDENTITY_MATRIX,\n  FontType,\n  FormatError,\n  info,\n  isNum,\n  shadow,\n  string32,\n  warn,\n} from \"../shared/util.js\";\nimport { CFFCompiler, CFFParser } from \"./cff_parser.js\";\nimport {\n  FontFlags,\n  getFontType,\n  MacStandardGlyphOrdering,\n  normalizeFontName,\n  recoverGlyphName,\n  SEAC_ANALYSIS_ENABLED,\n} from \"./fonts_utils.js\";\nimport { getDingbatsGlyphsUnicode, getGlyphsUnicode } from \"./glyphlist.js\";\nimport {\n  getEncoding,\n  MacRomanEncoding,\n  StandardEncoding,\n  SymbolSetEncoding,\n  ZapfDingbatsEncoding,\n} from \"./encodings.js\";\nimport {\n  getGlyphMapForStandardFonts,\n  getNonStdFontMap,\n  getSerifFonts,\n  getStdFontMap,\n  getSupplementalGlyphMapForArialBlack,\n  getSupplementalGlyphMapForCalibri,\n} from \"./standard_fonts.js\";\nimport {\n  getUnicodeForGlyph,\n  getUnicodeRangeFor,\n  mapSpecialUnicodeValues,\n} from \"./unicode.js\";\nimport { IdentityToUnicodeMap, ToUnicodeMap } from \"./to_unicode_map.js\";\nimport { CFFFont } from \"./cff_font.js\";\nimport { FontRendererFactory } from \"./font_renderer.js\";\nimport { GlyfTable } from \"./glyf.js\";\nimport { IdentityCMap } from \"./cmap.js\";\nimport { OpenTypeFileBuilder } from \"./opentype_file_builder.js\";\nimport { readUint32 } from \"./core_utils.js\";\nimport { Stream } from \"./stream.js\";\nimport { Type1Font } from \"./type1_font.js\";\n\n// Unicode Private Use Areas:\nconst PRIVATE_USE_AREAS = [\n  [0xe000, 0xf8ff], // BMP (0)\n  [0x100000, 0x10fffd], // PUP (16)\n];\n\n// PDF Glyph Space Units are one Thousandth of a TextSpace Unit\n// except for Type 3 fonts\nconst PDF_GLYPH_SPACE_UNITS = 1000;\n\nconst EXPORT_DATA_PROPERTIES = [\n  \"ascent\",\n  \"bbox\",\n  \"black\",\n  \"bold\",\n  \"charProcOperatorList\",\n  \"composite\",\n  \"cssFontInfo\",\n  \"data\",\n  \"defaultVMetrics\",\n  \"defaultWidth\",\n  \"descent\",\n  \"fallbackName\",\n  \"fontMatrix\",\n  \"fontType\",\n  \"isType3Font\",\n  \"italic\",\n  \"loadedName\",\n  \"mimetype\",\n  \"missingFile\",\n  \"name\",\n  \"remeasure\",\n  \"subtype\",\n  \"type\",\n  \"vertical\",\n];\n\nconst EXPORT_DATA_EXTRA_PROPERTIES = [\n  \"cMap\",\n  \"defaultEncoding\",\n  \"differences\",\n  \"isMonospace\",\n  \"isSerifFont\",\n  \"isSymbolicFont\",\n  \"seacMap\",\n  \"toFontChar\",\n  \"toUnicode\",\n  \"vmetrics\",\n  \"widths\",\n];\n\nfunction adjustWidths(properties) {\n  if (!properties.fontMatrix) {\n    return;\n  }\n  if (properties.fontMatrix[0] === FONT_IDENTITY_MATRIX[0]) {\n    return;\n  }\n  // adjusting width to fontMatrix scale\n  const scale = 0.001 / properties.fontMatrix[0];\n  const glyphsWidths = properties.widths;\n  for (const glyph in glyphsWidths) {\n    glyphsWidths[glyph] *= scale;\n  }\n  properties.defaultWidth *= scale;\n}\n\nfunction adjustToUnicode(properties, builtInEncoding) {\n  if (properties.isInternalFont) {\n    return;\n  }\n  if (builtInEncoding === properties.defaultEncoding) {\n    return; // No point in trying to adjust `toUnicode` if the encodings match.\n  }\n  if (properties.toUnicode instanceof IdentityToUnicodeMap) {\n    return;\n  }\n  const toUnicode = [],\n    glyphsUnicodeMap = getGlyphsUnicode();\n  for (const charCode in builtInEncoding) {\n    if (properties.hasIncludedToUnicodeMap) {\n      if (properties.toUnicode.has(charCode)) {\n        continue; // The font dictionary has a `ToUnicode` entry.\n      }\n    } else if (properties.hasEncoding) {\n      if (\n        properties.differences.length === 0 ||\n        properties.differences[charCode] !== undefined\n      ) {\n        continue; // The font dictionary has an `Encoding`/`Differences` entry.\n      }\n    }\n    const glyphName = builtInEncoding[charCode];\n    const unicode = getUnicodeForGlyph(glyphName, glyphsUnicodeMap);\n    if (unicode !== -1) {\n      toUnicode[charCode] = String.fromCharCode(unicode);\n    }\n  }\n  if (toUnicode.length > 0) {\n    properties.toUnicode.amend(toUnicode);\n  }\n}\n\n/**\n * NOTE: This function should only be called at the *end* of font-parsing,\n *       after e.g. `adjustToUnicode` has run, to prevent any issues.\n */\nfunction amendFallbackToUnicode(properties) {\n  if (!properties.fallbackToUnicode) {\n    return;\n  }\n  if (properties.toUnicode instanceof IdentityToUnicodeMap) {\n    return;\n  }\n  const toUnicode = [];\n  for (const charCode in properties.fallbackToUnicode) {\n    if (properties.toUnicode.has(charCode)) {\n      continue; // The font dictionary has a `ToUnicode` entry.\n    }\n    toUnicode[charCode] = properties.fallbackToUnicode[charCode];\n  }\n  if (toUnicode.length > 0) {\n    properties.toUnicode.amend(toUnicode);\n  }\n}\n\nclass Glyph {\n  constructor(\n    originalCharCode,\n    fontChar,\n    unicode,\n    accent,\n    width,\n    vmetric,\n    operatorListId,\n    isSpace,\n    isInFont\n  ) {\n    this.originalCharCode = originalCharCode;\n    this.fontChar = fontChar;\n    this.unicode = unicode;\n    this.accent = accent;\n    this.width = width;\n    this.vmetric = vmetric;\n    this.operatorListId = operatorListId;\n    this.isSpace = isSpace;\n    this.isInFont = isInFont;\n  }\n\n  matchesForCache(\n    originalCharCode,\n    fontChar,\n    unicode,\n    accent,\n    width,\n    vmetric,\n    operatorListId,\n    isSpace,\n    isInFont\n  ) {\n    return (\n      this.originalCharCode === originalCharCode &&\n      this.fontChar === fontChar &&\n      this.unicode === unicode &&\n      this.accent === accent &&\n      this.width === width &&\n      this.vmetric === vmetric &&\n      this.operatorListId === operatorListId &&\n      this.isSpace === isSpace &&\n      this.isInFont === isInFont\n    );\n  }\n}\n\nfunction int16(b0, b1) {\n  return (b0 << 8) + b1;\n}\n\nfunction writeSignedInt16(bytes, index, value) {\n  bytes[index + 1] = value;\n  bytes[index] = value >>> 8;\n}\n\nfunction signedInt16(b0, b1) {\n  const value = (b0 << 8) + b1;\n  return value & (1 << 15) ? value - 0x10000 : value;\n}\n\nfunction int32(b0, b1, b2, b3) {\n  return (b0 << 24) + (b1 << 16) + (b2 << 8) + b3;\n}\n\nfunction string16(value) {\n  if (\n    typeof PDFJSDev === \"undefined\" ||\n    PDFJSDev.test(\"!PRODUCTION || TESTING\")\n  ) {\n    assert(\n      typeof value === \"number\" && Math.abs(value) < 2 ** 16,\n      `string16: Unexpected input \"${value}\".`\n    );\n  }\n  return String.fromCharCode((value >> 8) & 0xff, value & 0xff);\n}\n\nfunction safeString16(value) {\n  if (\n    typeof PDFJSDev === \"undefined\" ||\n    PDFJSDev.test(\"!PRODUCTION || TESTING\")\n  ) {\n    assert(\n      typeof value === \"number\" && !Number.isNaN(value),\n      `safeString16: Unexpected input \"${value}\".`\n    );\n  }\n  // clamp value to the 16-bit int range\n  if (value > 0x7fff) {\n    value = 0x7fff;\n  } else if (value < -0x8000) {\n    value = -0x8000;\n  }\n  return String.fromCharCode((value >> 8) & 0xff, value & 0xff);\n}\n\nfunction isTrueTypeFile(file) {\n  const header = file.peekBytes(4);\n  return (\n    readUint32(header, 0) === 0x00010000 || bytesToString(header) === \"true\"\n  );\n}\n\nfunction isTrueTypeCollectionFile(file) {\n  const header = file.peekBytes(4);\n  return bytesToString(header) === \"ttcf\";\n}\n\nfunction isOpenTypeFile(file) {\n  const header = file.peekBytes(4);\n  return bytesToString(header) === \"OTTO\";\n}\n\nfunction isType1File(file) {\n  const header = file.peekBytes(2);\n  // All Type1 font programs must begin with the comment '%!' (0x25 + 0x21).\n  if (header[0] === 0x25 && header[1] === 0x21) {\n    return true;\n  }\n  // ... obviously some fonts violate that part of the specification,\n  // please refer to the comment in |Type1Font| below (pfb file header).\n  if (header[0] === 0x80 && header[1] === 0x01) {\n    return true;\n  }\n  return false;\n}\n\n/**\n * Compared to other font formats, the header in CFF files is not constant\n * but contains version numbers. To reduce the possibility of misclassifying\n * font files as CFF, it's recommended to check for other font formats first.\n */\nfunction isCFFFile(file) {\n  const header = file.peekBytes(4);\n  if (\n    /* major version, [1, 255] */ header[0] >= 1 &&\n    /* minor version, [0, 255]; header[1] */\n    /* header size, [0, 255]; header[2] */\n    /* offset(0) size, [1, 4] */ header[3] >= 1 &&\n    header[3] <= 4\n  ) {\n    return true;\n  }\n  return false;\n}\n\nfunction getFontFileType(file, { type, subtype, composite }) {\n  let fileType, fileSubtype;\n\n  if (isTrueTypeFile(file) || isTrueTypeCollectionFile(file)) {\n    if (composite) {\n      fileType = \"CIDFontType2\";\n    } else {\n      fileType = \"TrueType\";\n    }\n  } else if (isOpenTypeFile(file)) {\n    if (composite) {\n      fileType = \"CIDFontType2\";\n    } else {\n      fileType = \"OpenType\";\n    }\n  } else if (isType1File(file)) {\n    if (composite) {\n      fileType = \"CIDFontType0\";\n    } else {\n      fileType = type === \"MMType1\" ? \"MMType1\" : \"Type1\";\n    }\n  } else if (isCFFFile(file)) {\n    if (composite) {\n      fileType = \"CIDFontType0\";\n      fileSubtype = \"CIDFontType0C\";\n    } else {\n      fileType = type === \"MMType1\" ? \"MMType1\" : \"Type1\";\n      fileSubtype = \"Type1C\";\n    }\n  } else {\n    warn(\"getFontFileType: Unable to detect correct font file Type/Subtype.\");\n    fileType = type;\n    fileSubtype = subtype;\n  }\n\n  return [fileType, fileSubtype];\n}\n\nfunction applyStandardFontGlyphMap(map, glyphMap) {\n  for (const charCode in glyphMap) {\n    map[+charCode] = glyphMap[charCode];\n  }\n}\n\nfunction buildToFontChar(encoding, glyphsUnicodeMap, differences) {\n  const toFontChar = [];\n  let unicode;\n  for (let i = 0, ii = encoding.length; i < ii; i++) {\n    unicode = getUnicodeForGlyph(encoding[i], glyphsUnicodeMap);\n    if (unicode !== -1) {\n      toFontChar[i] = unicode;\n    }\n  }\n  for (const charCode in differences) {\n    unicode = getUnicodeForGlyph(differences[charCode], glyphsUnicodeMap);\n    if (unicode !== -1) {\n      toFontChar[+charCode] = unicode;\n    }\n  }\n  return toFontChar;\n}\n\nfunction convertCidString(charCode, cid, shouldThrow = false) {\n  switch (cid.length) {\n    case 1:\n      return cid.charCodeAt(0);\n    case 2:\n      return (cid.charCodeAt(0) << 8) | cid.charCodeAt(1);\n  }\n  const msg = `Unsupported CID string (charCode ${charCode}): \"${cid}\".`;\n  if (shouldThrow) {\n    throw new FormatError(msg);\n  }\n  warn(msg);\n  return cid;\n}\n\n/**\n * Rebuilds the char code to glyph ID map by moving all char codes to the\n * private use area. This is done to avoid issues with various problematic\n * unicode areas where either a glyph won't be drawn or is deformed by a\n * shaper.\n * @returns {Object} Two properties:\n * 'toFontChar' - maps original char codes(the value that will be read\n * from commands such as show text) to the char codes that will be used in the\n * font that we build\n * 'charCodeToGlyphId' - maps the new font char codes to glyph ids\n */\nfunction adjustMapping(charCodeToGlyphId, hasGlyph, newGlyphZeroId) {\n  const newMap = Object.create(null);\n  const toFontChar = [];\n  let privateUseAreaIndex = 0;\n  let nextAvailableFontCharCode = PRIVATE_USE_AREAS[privateUseAreaIndex][0];\n  let privateUseOffetEnd = PRIVATE_USE_AREAS[privateUseAreaIndex][1];\n  for (let originalCharCode in charCodeToGlyphId) {\n    originalCharCode |= 0;\n    let glyphId = charCodeToGlyphId[originalCharCode];\n    // For missing glyphs don't create the mappings so the glyph isn't\n    // drawn.\n    if (!hasGlyph(glyphId)) {\n      continue;\n    }\n    if (nextAvailableFontCharCode > privateUseOffetEnd) {\n      privateUseAreaIndex++;\n      if (privateUseAreaIndex >= PRIVATE_USE_AREAS.length) {\n        warn(\"Ran out of space in font private use area.\");\n        break;\n      }\n      nextAvailableFontCharCode = PRIVATE_USE_AREAS[privateUseAreaIndex][0];\n      privateUseOffetEnd = PRIVATE_USE_AREAS[privateUseAreaIndex][1];\n    }\n    const fontCharCode = nextAvailableFontCharCode++;\n    if (glyphId === 0) {\n      glyphId = newGlyphZeroId;\n    }\n\n    newMap[fontCharCode] = glyphId;\n    toFontChar[originalCharCode] = fontCharCode;\n  }\n  return {\n    toFontChar,\n    charCodeToGlyphId: newMap,\n    nextAvailableFontCharCode,\n  };\n}\n\nfunction getRanges(glyphs, numGlyphs) {\n  // Array.sort() sorts by characters, not numerically, so convert to an\n  // array of characters.\n  const codes = [];\n  for (const charCode in glyphs) {\n    // Remove an invalid glyph ID mappings to make OTS happy.\n    if (glyphs[charCode] >= numGlyphs) {\n      continue;\n    }\n    codes.push({ fontCharCode: charCode | 0, glyphId: glyphs[charCode] });\n  }\n  // Some fonts have zero glyphs and are used only for text selection, but\n  // there needs to be at least one to build a valid cmap table.\n  if (codes.length === 0) {\n    codes.push({ fontCharCode: 0, glyphId: 0 });\n  }\n  codes.sort(function fontGetRangesSort(a, b) {\n    return a.fontCharCode - b.fontCharCode;\n  });\n\n  // Split the sorted codes into ranges.\n  const ranges = [];\n  const length = codes.length;\n  for (let n = 0; n < length; ) {\n    const start = codes[n].fontCharCode;\n    const codeIndices = [codes[n].glyphId];\n    ++n;\n    let end = start;\n    while (n < length && end + 1 === codes[n].fontCharCode) {\n      codeIndices.push(codes[n].glyphId);\n      ++end;\n      ++n;\n      if (end === 0xffff) {\n        break;\n      }\n    }\n    ranges.push([start, end, codeIndices]);\n  }\n\n  return ranges;\n}\n\nfunction createCmapTable(glyphs, numGlyphs) {\n  const ranges = getRanges(glyphs, numGlyphs);\n  const numTables = ranges[ranges.length - 1][1] > 0xffff ? 2 : 1;\n  let cmap =\n    \"\\x00\\x00\" + // version\n    string16(numTables) + // numTables\n    \"\\x00\\x03\" + // platformID\n    \"\\x00\\x01\" + // encodingID\n    string32(4 + numTables * 8); // start of the table record\n\n  let i, ii, j, jj;\n  for (i = ranges.length - 1; i >= 0; --i) {\n    if (ranges[i][0] <= 0xffff) {\n      break;\n    }\n  }\n  const bmpLength = i + 1;\n\n  if (ranges[i][0] < 0xffff && ranges[i][1] === 0xffff) {\n    ranges[i][1] = 0xfffe;\n  }\n  const trailingRangesCount = ranges[i][1] < 0xffff ? 1 : 0;\n  const segCount = bmpLength + trailingRangesCount;\n  const searchParams = OpenTypeFileBuilder.getSearchParams(segCount, 2);\n\n  // Fill up the 4 parallel arrays describing the segments.\n  let startCount = \"\";\n  let endCount = \"\";\n  let idDeltas = \"\";\n  let idRangeOffsets = \"\";\n  let glyphsIds = \"\";\n  let bias = 0;\n\n  let range, start, end, codes;\n  for (i = 0, ii = bmpLength; i < ii; i++) {\n    range = ranges[i];\n    start = range[0];\n    end = range[1];\n    startCount += string16(start);\n    endCount += string16(end);\n    codes = range[2];\n    let contiguous = true;\n    for (j = 1, jj = codes.length; j < jj; ++j) {\n      if (codes[j] !== codes[j - 1] + 1) {\n        contiguous = false;\n        break;\n      }\n    }\n    if (!contiguous) {\n      const offset = (segCount - i) * 2 + bias * 2;\n      bias += end - start + 1;\n\n      idDeltas += string16(0);\n      idRangeOffsets += string16(offset);\n\n      for (j = 0, jj = codes.length; j < jj; ++j) {\n        glyphsIds += string16(codes[j]);\n      }\n    } else {\n      const startCode = codes[0];\n\n      idDeltas += string16((startCode - start) & 0xffff);\n      idRangeOffsets += string16(0);\n    }\n  }\n\n  if (trailingRangesCount > 0) {\n    endCount += \"\\xFF\\xFF\";\n    startCount += \"\\xFF\\xFF\";\n    idDeltas += \"\\x00\\x01\";\n    idRangeOffsets += \"\\x00\\x00\";\n  }\n\n  const format314 =\n    \"\\x00\\x00\" + // language\n    string16(2 * segCount) +\n    string16(searchParams.range) +\n    string16(searchParams.entry) +\n    string16(searchParams.rangeShift) +\n    endCount +\n    \"\\x00\\x00\" +\n    startCount +\n    idDeltas +\n    idRangeOffsets +\n    glyphsIds;\n\n  let format31012 = \"\";\n  let header31012 = \"\";\n  if (numTables > 1) {\n    cmap +=\n      \"\\x00\\x03\" + // platformID\n      \"\\x00\\x0A\" + // encodingID\n      string32(4 + numTables * 8 + 4 + format314.length); // start of the table record\n    format31012 = \"\";\n    for (i = 0, ii = ranges.length; i < ii; i++) {\n      range = ranges[i];\n      start = range[0];\n      codes = range[2];\n      let code = codes[0];\n      for (j = 1, jj = codes.length; j < jj; ++j) {\n        if (codes[j] !== codes[j - 1] + 1) {\n          end = range[0] + j - 1;\n          format31012 +=\n            string32(start) + // startCharCode\n            string32(end) + // endCharCode\n            string32(code); // startGlyphID\n          start = end + 1;\n          code = codes[j];\n        }\n      }\n      format31012 +=\n        string32(start) + // startCharCode\n        string32(range[1]) + // endCharCode\n        string32(code); // startGlyphID\n    }\n    header31012 =\n      \"\\x00\\x0C\" + // format\n      \"\\x00\\x00\" + // reserved\n      string32(format31012.length + 16) + // length\n      \"\\x00\\x00\\x00\\x00\" + // language\n      string32(format31012.length / 12); // nGroups\n  }\n\n  return (\n    cmap +\n    \"\\x00\\x04\" + // format\n    string16(format314.length + 4) + // length\n    format314 +\n    header31012 +\n    format31012\n  );\n}\n\nfunction validateOS2Table(os2, file) {\n  file.pos = (file.start || 0) + os2.offset;\n  const version = file.getUint16();\n  // TODO verify all OS/2 tables fields, but currently we validate only those\n  // that give us issues\n  file.skip(60); // skipping type, misc sizes, panose, unicode ranges\n  const selection = file.getUint16();\n  if (version < 4 && selection & 0x0300) {\n    return false;\n  }\n  const firstChar = file.getUint16();\n  const lastChar = file.getUint16();\n  if (firstChar > lastChar) {\n    return false;\n  }\n  file.skip(6); // skipping sTypoAscender/Descender/LineGap\n  const usWinAscent = file.getUint16();\n  if (usWinAscent === 0) {\n    // makes font unreadable by windows\n    return false;\n  }\n\n  // OS/2 appears to be valid, resetting some fields\n  os2.data[8] = os2.data[9] = 0; // IE rejects fonts if fsType != 0\n  return true;\n}\n\nfunction createOS2Table(properties, charstrings, override) {\n  override = override || {\n    unitsPerEm: 0,\n    yMax: 0,\n    yMin: 0,\n    ascent: 0,\n    descent: 0,\n  };\n\n  let ulUnicodeRange1 = 0;\n  let ulUnicodeRange2 = 0;\n  let ulUnicodeRange3 = 0;\n  let ulUnicodeRange4 = 0;\n\n  let firstCharIndex = null;\n  let lastCharIndex = 0;\n\n  if (charstrings) {\n    for (let code in charstrings) {\n      code |= 0;\n      if (firstCharIndex > code || !firstCharIndex) {\n        firstCharIndex = code;\n      }\n      if (lastCharIndex < code) {\n        lastCharIndex = code;\n      }\n\n      const position = getUnicodeRangeFor(code);\n      if (position < 32) {\n        ulUnicodeRange1 |= 1 << position;\n      } else if (position < 64) {\n        ulUnicodeRange2 |= 1 << (position - 32);\n      } else if (position < 96) {\n        ulUnicodeRange3 |= 1 << (position - 64);\n      } else if (position < 123) {\n        ulUnicodeRange4 |= 1 << (position - 96);\n      } else {\n        throw new FormatError(\n          \"Unicode ranges Bits > 123 are reserved for internal usage\"\n        );\n      }\n    }\n    if (lastCharIndex > 0xffff) {\n      // OS2 only supports a 16 bit int. The spec says if supplementary\n      // characters are used the field should just be set to 0xFFFF.\n      lastCharIndex = 0xffff;\n    }\n  } else {\n    // TODO\n    firstCharIndex = 0;\n    lastCharIndex = 255;\n  }\n\n  const bbox = properties.bbox || [0, 0, 0, 0];\n  const unitsPerEm =\n    override.unitsPerEm ||\n    1 / (properties.fontMatrix || FONT_IDENTITY_MATRIX)[0];\n\n  // if the font units differ to the PDF glyph space units\n  // then scale up the values\n  const scale = properties.ascentScaled\n    ? 1.0\n    : unitsPerEm / PDF_GLYPH_SPACE_UNITS;\n\n  const typoAscent =\n    override.ascent || Math.round(scale * (properties.ascent || bbox[3]));\n  let typoDescent =\n    override.descent || Math.round(scale * (properties.descent || bbox[1]));\n  if (typoDescent > 0 && properties.descent > 0 && bbox[1] < 0) {\n    typoDescent = -typoDescent; // fixing incorrect descent\n  }\n  const winAscent = override.yMax || typoAscent;\n  const winDescent = -override.yMin || -typoDescent;\n\n  return (\n    \"\\x00\\x03\" + // version\n    \"\\x02\\x24\" + // xAvgCharWidth\n    \"\\x01\\xF4\" + // usWeightClass\n    \"\\x00\\x05\" + // usWidthClass\n    \"\\x00\\x00\" + // fstype (0 to let the font loads via font-face on IE)\n    \"\\x02\\x8A\" + // ySubscriptXSize\n    \"\\x02\\xBB\" + // ySubscriptYSize\n    \"\\x00\\x00\" + // ySubscriptXOffset\n    \"\\x00\\x8C\" + // ySubscriptYOffset\n    \"\\x02\\x8A\" + // ySuperScriptXSize\n    \"\\x02\\xBB\" + // ySuperScriptYSize\n    \"\\x00\\x00\" + // ySuperScriptXOffset\n    \"\\x01\\xDF\" + // ySuperScriptYOffset\n    \"\\x00\\x31\" + // yStrikeOutSize\n    \"\\x01\\x02\" + // yStrikeOutPosition\n    \"\\x00\\x00\" + // sFamilyClass\n    \"\\x00\\x00\\x06\" +\n    String.fromCharCode(properties.fixedPitch ? 0x09 : 0x00) +\n    \"\\x00\\x00\\x00\\x00\\x00\\x00\" + // Panose\n    string32(ulUnicodeRange1) + // ulUnicodeRange1 (Bits 0-31)\n    string32(ulUnicodeRange2) + // ulUnicodeRange2 (Bits 32-63)\n    string32(ulUnicodeRange3) + // ulUnicodeRange3 (Bits 64-95)\n    string32(ulUnicodeRange4) + // ulUnicodeRange4 (Bits 96-127)\n    \"\\x2A\\x32\\x31\\x2A\" + // achVendID\n    string16(properties.italicAngle ? 1 : 0) + // fsSelection\n    string16(firstCharIndex || properties.firstChar) + // usFirstCharIndex\n    string16(lastCharIndex || properties.lastChar) + // usLastCharIndex\n    string16(typoAscent) + // sTypoAscender\n    string16(typoDescent) + // sTypoDescender\n    \"\\x00\\x64\" + // sTypoLineGap (7%-10% of the unitsPerEM value)\n    string16(winAscent) + // usWinAscent\n    string16(winDescent) + // usWinDescent\n    \"\\x00\\x00\\x00\\x00\" + // ulCodePageRange1 (Bits 0-31)\n    \"\\x00\\x00\\x00\\x00\" + // ulCodePageRange2 (Bits 32-63)\n    string16(properties.xHeight) + // sxHeight\n    string16(properties.capHeight) + // sCapHeight\n    string16(0) + // usDefaultChar\n    string16(firstCharIndex || properties.firstChar) + // usBreakChar\n    \"\\x00\\x03\"\n  ); // usMaxContext\n}\n\nfunction createPostTable(properties) {\n  const angle = Math.floor(properties.italicAngle * 2 ** 16);\n  return (\n    \"\\x00\\x03\\x00\\x00\" + // Version number\n    string32(angle) + // italicAngle\n    \"\\x00\\x00\" + // underlinePosition\n    \"\\x00\\x00\" + // underlineThickness\n    string32(properties.fixedPitch ? 1 : 0) + // isFixedPitch\n    \"\\x00\\x00\\x00\\x00\" + // minMemType42\n    \"\\x00\\x00\\x00\\x00\" + // maxMemType42\n    \"\\x00\\x00\\x00\\x00\" + // minMemType1\n    \"\\x00\\x00\\x00\\x00\"\n  ); // maxMemType1\n}\n\nfunction createPostscriptName(name) {\n  // See https://docs.microsoft.com/en-us/typography/opentype/spec/recom#name.\n  return name.replace(/[^\\x21-\\x7E]|[[\\](){}<>/%]/g, \"\").slice(0, 63);\n}\n\nfunction createNameTable(name, proto) {\n  if (!proto) {\n    proto = [[], []]; // no strings and unicode strings\n  }\n\n  const strings = [\n    proto[0][0] || \"Original licence\", // 0.Copyright\n    proto[0][1] || name, // 1.Font family\n    proto[0][2] || \"Unknown\", // 2.Font subfamily (font weight)\n    proto[0][3] || \"uniqueID\", // 3.Unique ID\n    proto[0][4] || name, // 4.Full font name\n    proto[0][5] || \"Version 0.11\", // 5.Version\n    proto[0][6] || createPostscriptName(name), // 6.Postscript name\n    proto[0][7] || \"Unknown\", // 7.Trademark\n    proto[0][8] || \"Unknown\", // 8.Manufacturer\n    proto[0][9] || \"Unknown\", // 9.Designer\n  ];\n\n  // Mac want 1-byte per character strings while Windows want\n  // 2-bytes per character, so duplicate the names table\n  const stringsUnicode = [];\n  let i, ii, j, jj, str;\n  for (i = 0, ii = strings.length; i < ii; i++) {\n    str = proto[1][i] || strings[i];\n\n    const strBufUnicode = [];\n    for (j = 0, jj = str.length; j < jj; j++) {\n      strBufUnicode.push(string16(str.charCodeAt(j)));\n    }\n    stringsUnicode.push(strBufUnicode.join(\"\"));\n  }\n\n  const names = [strings, stringsUnicode];\n  const platforms = [\"\\x00\\x01\", \"\\x00\\x03\"];\n  const encodings = [\"\\x00\\x00\", \"\\x00\\x01\"];\n  const languages = [\"\\x00\\x00\", \"\\x04\\x09\"];\n\n  const namesRecordCount = strings.length * platforms.length;\n  let nameTable =\n    \"\\x00\\x00\" + // format\n    string16(namesRecordCount) + // Number of names Record\n    string16(namesRecordCount * 12 + 6); // Storage\n\n  // Build the name records field\n  let strOffset = 0;\n  for (i = 0, ii = platforms.length; i < ii; i++) {\n    const strs = names[i];\n    for (j = 0, jj = strs.length; j < jj; j++) {\n      str = strs[j];\n      const nameRecord =\n        platforms[i] + // platform ID\n        encodings[i] + // encoding ID\n        languages[i] + // language ID\n        string16(j) + // name ID\n        string16(str.length) +\n        string16(strOffset);\n      nameTable += nameRecord;\n      strOffset += str.length;\n    }\n  }\n\n  nameTable += strings.join(\"\") + stringsUnicode.join(\"\");\n  return nameTable;\n}\n\n/**\n * 'Font' is the class the outside world should use, it encapsulate all the font\n * decoding logics whatever type it is (assuming the font type is supported).\n */\nclass Font {\n  constructor(name, file, properties) {\n    this.name = name;\n    this.psName = null;\n    this.mimetype = null;\n    this.disableFontFace = false;\n\n    this.loadedName = properties.loadedName;\n    this.isType3Font = properties.isType3Font;\n    this.missingFile = false;\n    this.cssFontInfo = properties.cssFontInfo;\n\n    this._charsCache = Object.create(null);\n    this._glyphCache = Object.create(null);\n\n    let isSerifFont = !!(properties.flags & FontFlags.Serif);\n    // Fallback to checking the font name, in order to improve text-selection,\n    // since the /Flags-entry is often wrong (fixes issue13845.pdf).\n    if (!isSerifFont && !properties.isSimulatedFlags) {\n      const baseName = name.replace(/[,_]/g, \"-\").split(\"-\")[0],\n        serifFonts = getSerifFonts();\n      for (const namePart of baseName.split(\"+\")) {\n        if (serifFonts[namePart]) {\n          isSerifFont = true;\n          break;\n        }\n      }\n    }\n    this.isSerifFont = isSerifFont;\n\n    this.isSymbolicFont = !!(properties.flags & FontFlags.Symbolic);\n    this.isMonospace = !!(properties.flags & FontFlags.FixedPitch);\n\n    let type = properties.type;\n    let subtype = properties.subtype;\n    this.type = type;\n    this.subtype = subtype;\n\n    let fallbackName = \"sans-serif\";\n    if (this.isMonospace) {\n      fallbackName = \"monospace\";\n    } else if (this.isSerifFont) {\n      fallbackName = \"serif\";\n    }\n    this.fallbackName = fallbackName;\n\n    this.differences = properties.differences;\n    this.widths = properties.widths;\n    this.defaultWidth = properties.defaultWidth;\n    this.composite = properties.composite;\n    this.cMap = properties.cMap;\n    this.capHeight = properties.capHeight / PDF_GLYPH_SPACE_UNITS;\n    this.ascent = properties.ascent / PDF_GLYPH_SPACE_UNITS;\n    this.descent = properties.descent / PDF_GLYPH_SPACE_UNITS;\n    this.lineHeight = this.ascent - this.descent;\n    this.fontMatrix = properties.fontMatrix;\n    this.bbox = properties.bbox;\n    this.defaultEncoding = properties.defaultEncoding;\n\n    this.toUnicode = properties.toUnicode;\n    this.toFontChar = [];\n\n    if (properties.type === \"Type3\") {\n      for (let charCode = 0; charCode < 256; charCode++) {\n        this.toFontChar[charCode] =\n          this.differences[charCode] || properties.defaultEncoding[charCode];\n      }\n      this.fontType = FontType.TYPE3;\n      return;\n    }\n\n    this.cidEncoding = properties.cidEncoding || \"\";\n    this.vertical = !!properties.vertical;\n    if (this.vertical) {\n      this.vmetrics = properties.vmetrics;\n      this.defaultVMetrics = properties.defaultVMetrics;\n    }\n\n    if (!file || file.isEmpty) {\n      if (file) {\n        // Some bad PDF generators will include empty font files,\n        // attempting to recover by assuming that no file exists.\n        warn('Font file is empty in \"' + name + '\" (' + this.loadedName + \")\");\n      }\n      this.fallbackToSystemFont(properties);\n      return;\n    }\n\n    // Parse the font file to determine the correct type/subtype, rather than\n    // relying on the (often incorrect) data in the font dictionary; (see e.g.\n    //  issue6782.pdf, issue7598.pdf, and issue9949.pdf).\n    [type, subtype] = getFontFileType(file, properties);\n\n    if (type !== this.type || subtype !== this.subtype) {\n      info(\n        \"Inconsistent font file Type/SubType, expected: \" +\n          `${this.type}/${this.subtype} but found: ${type}/${subtype}.`\n      );\n    }\n\n    let data;\n    try {\n      switch (type) {\n        case \"MMType1\":\n          info(\"MMType1 font (\" + name + \"), falling back to Type1.\");\n        /* falls through */\n        case \"Type1\":\n        case \"CIDFontType0\":\n          this.mimetype = \"font/opentype\";\n\n          const cff =\n            subtype === \"Type1C\" || subtype === \"CIDFontType0C\"\n              ? new CFFFont(file, properties)\n              : new Type1Font(name, file, properties);\n\n          adjustWidths(properties);\n\n          // Wrap the CFF data inside an OTF font file\n          data = this.convert(name, cff, properties);\n          break;\n\n        case \"OpenType\":\n        case \"TrueType\":\n        case \"CIDFontType2\":\n          this.mimetype = \"font/opentype\";\n\n          // Repair the TrueType file. It is can be damaged in the point of\n          // view of the sanitizer\n          data = this.checkAndRepair(name, file, properties);\n          if (this.isOpenType) {\n            adjustWidths(properties);\n\n            type = \"OpenType\";\n          }\n          break;\n\n        default:\n          throw new FormatError(`Font ${type} is not supported`);\n      }\n    } catch (e) {\n      warn(e);\n      this.fallbackToSystemFont(properties);\n      return;\n    }\n\n    amendFallbackToUnicode(properties);\n    this.data = data;\n    this.fontType = getFontType(type, subtype, properties.isStandardFont);\n\n    // Transfer some properties again that could change during font conversion\n    this.fontMatrix = properties.fontMatrix;\n    this.widths = properties.widths;\n    this.defaultWidth = properties.defaultWidth;\n    this.toUnicode = properties.toUnicode;\n    this.seacMap = properties.seacMap;\n  }\n\n  get renderer() {\n    const renderer = FontRendererFactory.create(this, SEAC_ANALYSIS_ENABLED);\n    return shadow(this, \"renderer\", renderer);\n  }\n\n  exportData(extraProperties = false) {\n    const exportDataProperties = extraProperties\n      ? [...EXPORT_DATA_PROPERTIES, ...EXPORT_DATA_EXTRA_PROPERTIES]\n      : EXPORT_DATA_PROPERTIES;\n\n    const data = Object.create(null);\n    let property, value;\n    for (property of exportDataProperties) {\n      value = this[property];\n      // Ignore properties that haven't been explicitly set.\n      if (value !== undefined) {\n        data[property] = value;\n      }\n    }\n    return data;\n  }\n\n  fallbackToSystemFont(properties) {\n    this.missingFile = true;\n    // The file data is not specified. Trying to fix the font name\n    // to be used with the canvas.font.\n    const name = this.name;\n    const type = this.type;\n    const subtype = this.subtype;\n    let fontName = normalizeFontName(name);\n    const stdFontMap = getStdFontMap(),\n      nonStdFontMap = getNonStdFontMap();\n    const isStandardFont = !!stdFontMap[fontName];\n    const isMappedToStandardFont = !!(\n      nonStdFontMap[fontName] && stdFontMap[nonStdFontMap[fontName]]\n    );\n\n    fontName = stdFontMap[fontName] || nonStdFontMap[fontName] || fontName;\n    this.bold = fontName.search(/bold/gi) !== -1;\n    this.italic =\n      fontName.search(/oblique/gi) !== -1 || fontName.search(/italic/gi) !== -1;\n\n    // Use 'name' instead of 'fontName' here because the original\n    // name ArialBlack for example will be replaced by Helvetica.\n    this.black = name.search(/Black/g) !== -1;\n\n    // Use 'name' instead of 'fontName' here because the original\n    // name ArialNarrow for example will be replaced by Helvetica.\n    const isNarrow = name.search(/Narrow/g) !== -1;\n\n    // if at least one width is present, remeasure all chars when exists\n    this.remeasure =\n      (!isStandardFont || isNarrow) && Object.keys(this.widths).length > 0;\n    if (\n      (isStandardFont || isMappedToStandardFont) &&\n      type === \"CIDFontType2\" &&\n      this.cidEncoding.startsWith(\"Identity-\")\n    ) {\n      const cidToGidMap = properties.cidToGidMap;\n      // Standard fonts might be embedded as CID font without glyph mapping.\n      // Building one based on GlyphMapForStandardFonts.\n      const map = [];\n      applyStandardFontGlyphMap(map, getGlyphMapForStandardFonts());\n\n      if (/Arial-?Black/i.test(name)) {\n        applyStandardFontGlyphMap(map, getSupplementalGlyphMapForArialBlack());\n      } else if (/Calibri/i.test(name)) {\n        applyStandardFontGlyphMap(map, getSupplementalGlyphMapForCalibri());\n      }\n\n      // Always update the glyph mapping with the `cidToGidMap` when it exists\n      // (fixes issue12418_reduced.pdf).\n      if (cidToGidMap) {\n        for (const charCode in map) {\n          const cid = map[charCode];\n          if (cidToGidMap[cid] !== undefined) {\n            map[+charCode] = cidToGidMap[cid];\n          }\n        }\n        // When the /CIDToGIDMap is \"incomplete\", fallback to the included\n        // /ToUnicode-map regardless of its encoding (fixes issue11915.pdf).\n        if (\n          cidToGidMap.length !== this.toUnicode.length &&\n          properties.hasIncludedToUnicodeMap &&\n          this.toUnicode instanceof IdentityToUnicodeMap\n        ) {\n          this.toUnicode.forEach(function (charCode, unicodeCharCode) {\n            const cid = map[charCode];\n            if (cidToGidMap[cid] === undefined) {\n              map[+charCode] = unicodeCharCode;\n            }\n          });\n        }\n      }\n\n      if (!(this.toUnicode instanceof IdentityToUnicodeMap)) {\n        this.toUnicode.forEach(function (charCode, unicodeCharCode) {\n          map[+charCode] = unicodeCharCode;\n        });\n      }\n      this.toFontChar = map;\n      this.toUnicode = new ToUnicodeMap(map);\n    } else if (/Symbol/i.test(fontName)) {\n      this.toFontChar = buildToFontChar(\n        SymbolSetEncoding,\n        getGlyphsUnicode(),\n        this.differences\n      );\n    } else if (/Dingbats/i.test(fontName)) {\n      if (/Wingdings/i.test(name)) {\n        warn(\"Non-embedded Wingdings font, falling back to ZapfDingbats.\");\n      }\n      this.toFontChar = buildToFontChar(\n        ZapfDingbatsEncoding,\n        getDingbatsGlyphsUnicode(),\n        this.differences\n      );\n    } else if (isStandardFont) {\n      const map = buildToFontChar(\n        this.defaultEncoding,\n        getGlyphsUnicode(),\n        this.differences\n      );\n\n      if (\n        type === \"CIDFontType2\" &&\n        !this.cidEncoding.startsWith(\"Identity-\") &&\n        !(this.toUnicode instanceof IdentityToUnicodeMap)\n      ) {\n        this.toUnicode.forEach(function (charCode, unicodeCharCode) {\n          map[+charCode] = unicodeCharCode;\n        });\n      }\n      this.toFontChar = map;\n    } else {\n      const glyphsUnicodeMap = getGlyphsUnicode();\n      const map = [];\n      this.toUnicode.forEach((charCode, unicodeCharCode) => {\n        if (!this.composite) {\n          const glyphName =\n            this.differences[charCode] || this.defaultEncoding[charCode];\n          const unicode = getUnicodeForGlyph(glyphName, glyphsUnicodeMap);\n          if (unicode !== -1) {\n            unicodeCharCode = unicode;\n          }\n        }\n        map[+charCode] = unicodeCharCode;\n      });\n\n      // Attempt to improve the glyph mapping for (some) composite fonts that\n      // appear to lack meaningful ToUnicode data.\n      if (this.composite && this.toUnicode instanceof IdentityToUnicodeMap) {\n        if (/Verdana/i.test(name)) {\n          // Fixes issue11242_reduced.pdf\n          applyStandardFontGlyphMap(map, getGlyphMapForStandardFonts());\n        }\n      }\n      this.toFontChar = map;\n    }\n\n    amendFallbackToUnicode(properties);\n    this.loadedName = fontName.split(\"-\")[0];\n    this.fontType = getFontType(type, subtype, properties.isStandardFont);\n  }\n\n  checkAndRepair(name, font, properties) {\n    const VALID_TABLES = [\n      \"OS/2\",\n      \"cmap\",\n      \"head\",\n      \"hhea\",\n      \"hmtx\",\n      \"maxp\",\n      \"name\",\n      \"post\",\n      \"loca\",\n      \"glyf\",\n      \"fpgm\",\n      \"prep\",\n      \"cvt \",\n      \"CFF \",\n    ];\n\n    function readTables(file, numTables) {\n      const tables = Object.create(null);\n      tables[\"OS/2\"] = null;\n      tables.cmap = null;\n      tables.head = null;\n      tables.hhea = null;\n      tables.hmtx = null;\n      tables.maxp = null;\n      tables.name = null;\n      tables.post = null;\n\n      for (let i = 0; i < numTables; i++) {\n        const table = readTableEntry(file);\n        if (!VALID_TABLES.includes(table.tag)) {\n          continue; // skipping table if it's not a required or optional table\n        }\n        if (table.length === 0) {\n          continue; // skipping empty tables\n        }\n        tables[table.tag] = table;\n      }\n      return tables;\n    }\n\n    function readTableEntry(file) {\n      const tag = file.getString(4);\n\n      const checksum = file.getInt32() >>> 0;\n      const offset = file.getInt32() >>> 0;\n      const length = file.getInt32() >>> 0;\n\n      // Read the table associated data\n      const previousPosition = file.pos;\n      file.pos = file.start ? file.start : 0;\n      file.skip(offset);\n      const data = file.getBytes(length);\n      file.pos = previousPosition;\n\n      if (tag === \"head\") {\n        // clearing checksum adjustment\n        data[8] = data[9] = data[10] = data[11] = 0;\n        data[17] |= 0x20; // Set font optimized for cleartype flag.\n      }\n\n      return {\n        tag,\n        checksum,\n        length,\n        offset,\n        data,\n      };\n    }\n\n    function readOpenTypeHeader(ttf) {\n      return {\n        version: ttf.getString(4),\n        numTables: ttf.getUint16(),\n        searchRange: ttf.getUint16(),\n        entrySelector: ttf.getUint16(),\n        rangeShift: ttf.getUint16(),\n      };\n    }\n\n    function readTrueTypeCollectionHeader(ttc) {\n      const ttcTag = ttc.getString(4);\n      assert(ttcTag === \"ttcf\", \"Must be a TrueType Collection font.\");\n\n      const majorVersion = ttc.getUint16();\n      const minorVersion = ttc.getUint16();\n      const numFonts = ttc.getInt32() >>> 0;\n      const offsetTable = [];\n      for (let i = 0; i < numFonts; i++) {\n        offsetTable.push(ttc.getInt32() >>> 0);\n      }\n\n      const header = {\n        ttcTag,\n        majorVersion,\n        minorVersion,\n        numFonts,\n        offsetTable,\n      };\n      switch (majorVersion) {\n        case 1:\n          return header;\n        case 2:\n          header.dsigTag = ttc.getInt32() >>> 0;\n          header.dsigLength = ttc.getInt32() >>> 0;\n          header.dsigOffset = ttc.getInt32() >>> 0;\n          return header;\n      }\n      throw new FormatError(\n        `Invalid TrueType Collection majorVersion: ${majorVersion}.`\n      );\n    }\n\n    function readTrueTypeCollectionData(ttc, fontName) {\n      const { numFonts, offsetTable } = readTrueTypeCollectionHeader(ttc);\n      const fontNameParts = fontName.split(\"+\");\n      let fallbackData;\n\n      for (let i = 0; i < numFonts; i++) {\n        ttc.pos = (ttc.start || 0) + offsetTable[i];\n        const potentialHeader = readOpenTypeHeader(ttc);\n        const potentialTables = readTables(ttc, potentialHeader.numTables);\n\n        if (!potentialTables.name) {\n          throw new FormatError(\n            'TrueType Collection font must contain a \"name\" table.'\n          );\n        }\n        const nameTable = readNameTable(potentialTables.name);\n\n        for (let j = 0, jj = nameTable.length; j < jj; j++) {\n          for (let k = 0, kk = nameTable[j].length; k < kk; k++) {\n            const nameEntry =\n              nameTable[j][k] && nameTable[j][k].replace(/\\s/g, \"\");\n            if (!nameEntry) {\n              continue;\n            }\n            if (nameEntry === fontName) {\n              return {\n                header: potentialHeader,\n                tables: potentialTables,\n              };\n            }\n            if (fontNameParts.length < 2) {\n              continue;\n            }\n            for (const part of fontNameParts) {\n              if (nameEntry === part) {\n                fallbackData = {\n                  name: part,\n                  header: potentialHeader,\n                  tables: potentialTables,\n                };\n              }\n            }\n          }\n        }\n      }\n      if (fallbackData) {\n        warn(\n          `TrueType Collection does not contain \"${fontName}\" font, ` +\n            `falling back to \"${fallbackData.name}\" font instead.`\n        );\n        return {\n          header: fallbackData.header,\n          tables: fallbackData.tables,\n        };\n      }\n      throw new FormatError(\n        `TrueType Collection does not contain \"${fontName}\" font.`\n      );\n    }\n\n    /**\n     * Read the appropriate subtable from the cmap according to 9.6.6.4 from\n     * PDF spec\n     */\n    function readCmapTable(cmap, file, isSymbolicFont, hasEncoding) {\n      if (!cmap) {\n        warn(\"No cmap table available.\");\n        return {\n          platformId: -1,\n          encodingId: -1,\n          mappings: [],\n          hasShortCmap: false,\n        };\n      }\n      let segment;\n      let start = (file.start ? file.start : 0) + cmap.offset;\n      file.pos = start;\n\n      file.skip(2); // version\n      const numTables = file.getUint16();\n\n      let potentialTable;\n      let canBreak = false;\n      // There's an order of preference in terms of which cmap subtable to\n      // use:\n      // - non-symbolic fonts the preference is a 3,1 table then a 1,0 table\n      // - symbolic fonts the preference is a 3,0 table then a 1,0 table\n      // The following takes advantage of the fact that the tables are sorted\n      // to work.\n      for (let i = 0; i < numTables; i++) {\n        const platformId = file.getUint16();\n        const encodingId = file.getUint16();\n        const offset = file.getInt32() >>> 0;\n        let useTable = false;\n\n        // Sometimes there are multiple of the same type of table. Default\n        // to choosing the first table and skip the rest.\n        if (\n          potentialTable &&\n          potentialTable.platformId === platformId &&\n          potentialTable.encodingId === encodingId\n        ) {\n          continue;\n        }\n\n        if (\n          platformId === 0 &&\n          (encodingId === /* Unicode Default */ 0 ||\n            encodingId === /* Unicode 1.1 */ 1 ||\n            encodingId === /* Unicode BMP */ 3)\n        ) {\n          useTable = true;\n          // Continue the loop since there still may be a higher priority\n          // table.\n        } else if (platformId === 1 && encodingId === 0) {\n          useTable = true;\n          // Continue the loop since there still may be a higher priority\n          // table.\n        } else if (\n          platformId === 3 &&\n          encodingId === 1 &&\n          (hasEncoding || !potentialTable)\n        ) {\n          useTable = true;\n          if (!isSymbolicFont) {\n            canBreak = true;\n          }\n        } else if (isSymbolicFont && platformId === 3 && encodingId === 0) {\n          useTable = true;\n\n          let correctlySorted = true;\n          if (i < numTables - 1) {\n            const nextBytes = file.peekBytes(2),\n              nextPlatformId = int16(nextBytes[0], nextBytes[1]);\n            if (nextPlatformId < platformId) {\n              correctlySorted = false;\n            }\n          }\n          if (correctlySorted) {\n            canBreak = true;\n          }\n        }\n\n        if (useTable) {\n          potentialTable = {\n            platformId,\n            encodingId,\n            offset,\n          };\n        }\n        if (canBreak) {\n          break;\n        }\n      }\n\n      if (potentialTable) {\n        file.pos = start + potentialTable.offset;\n      }\n      if (!potentialTable || file.peekByte() === -1) {\n        warn(\"Could not find a preferred cmap table.\");\n        return {\n          platformId: -1,\n          encodingId: -1,\n          mappings: [],\n          hasShortCmap: false,\n        };\n      }\n\n      const format = file.getUint16();\n      file.skip(2 + 2); // length + language\n\n      let hasShortCmap = false;\n      const mappings = [];\n      let j, glyphId;\n\n      // TODO(mack): refactor this cmap subtable reading logic out\n      if (format === 0) {\n        for (j = 0; j < 256; j++) {\n          const index = file.getByte();\n          if (!index) {\n            continue;\n          }\n          mappings.push({\n            charCode: j,\n            glyphId: index,\n          });\n        }\n        hasShortCmap = true;\n      } else if (format === 2) {\n        const subHeaderKeys = [];\n        let maxSubHeaderKey = 0;\n        // Read subHeaderKeys. If subHeaderKeys[i] === 0, then i is a\n        // single-byte character. Otherwise, i is the first byte of a\n        // multi-byte character, and the value is 8*index into\n        // subHeaders.\n        for (let i = 0; i < 256; i++) {\n          const subHeaderKey = file.getUint16() >> 3;\n          subHeaderKeys.push(subHeaderKey);\n          maxSubHeaderKey = Math.max(subHeaderKey, maxSubHeaderKey);\n        }\n        // Read subHeaders. The number of entries is determined\n        // dynamically based on the subHeaderKeys found above.\n        const subHeaders = [];\n        for (let i = 0; i <= maxSubHeaderKey; i++) {\n          subHeaders.push({\n            firstCode: file.getUint16(),\n            entryCount: file.getUint16(),\n            idDelta: signedInt16(file.getByte(), file.getByte()),\n            idRangePos: file.pos + file.getUint16(),\n          });\n        }\n        for (let i = 0; i < 256; i++) {\n          if (subHeaderKeys[i] === 0) {\n            // i is a single-byte code.\n            file.pos = subHeaders[0].idRangePos + 2 * i;\n            glyphId = file.getUint16();\n            mappings.push({\n              charCode: i,\n              glyphId,\n            });\n          } else {\n            // i is the first byte of a two-byte code.\n            const s = subHeaders[subHeaderKeys[i]];\n            for (j = 0; j < s.entryCount; j++) {\n              const charCode = (i << 8) + j + s.firstCode;\n              file.pos = s.idRangePos + 2 * j;\n              glyphId = file.getUint16();\n              if (glyphId !== 0) {\n                glyphId = (glyphId + s.idDelta) % 65536;\n              }\n              mappings.push({\n                charCode,\n                glyphId,\n              });\n            }\n          }\n        }\n      } else if (format === 4) {\n        // re-creating the table in format 4 since the encoding\n        // might be changed\n        const segCount = file.getUint16() >> 1;\n        file.skip(6); // skipping range fields\n        const segments = [];\n        let segIndex;\n        for (segIndex = 0; segIndex < segCount; segIndex++) {\n          segments.push({ end: file.getUint16() });\n        }\n        file.skip(2);\n        for (segIndex = 0; segIndex < segCount; segIndex++) {\n          segments[segIndex].start = file.getUint16();\n        }\n\n        for (segIndex = 0; segIndex < segCount; segIndex++) {\n          segments[segIndex].delta = file.getUint16();\n        }\n\n        let offsetsCount = 0,\n          offsetIndex;\n        for (segIndex = 0; segIndex < segCount; segIndex++) {\n          segment = segments[segIndex];\n          const rangeOffset = file.getUint16();\n          if (!rangeOffset) {\n            segment.offsetIndex = -1;\n            continue;\n          }\n\n          offsetIndex = (rangeOffset >> 1) - (segCount - segIndex);\n          segment.offsetIndex = offsetIndex;\n          offsetsCount = Math.max(\n            offsetsCount,\n            offsetIndex + segment.end - segment.start + 1\n          );\n        }\n\n        const offsets = [];\n        for (j = 0; j < offsetsCount; j++) {\n          offsets.push(file.getUint16());\n        }\n\n        for (segIndex = 0; segIndex < segCount; segIndex++) {\n          segment = segments[segIndex];\n          start = segment.start;\n          const end = segment.end;\n          const delta = segment.delta;\n          offsetIndex = segment.offsetIndex;\n\n          for (j = start; j <= end; j++) {\n            if (j === 0xffff) {\n              continue;\n            }\n\n            glyphId = offsetIndex < 0 ? j : offsets[offsetIndex + j - start];\n            glyphId = (glyphId + delta) & 0xffff;\n            mappings.push({\n              charCode: j,\n              glyphId,\n            });\n          }\n        }\n      } else if (format === 6) {\n        // Format 6 is a 2-bytes dense mapping, which means the font data\n        // lives glue together even if they are pretty far in the unicode\n        // table. (This looks weird, so I can have missed something), this\n        // works on Linux but seems to fails on Mac so let's rewrite the\n        // cmap table to a 3-1-4 style\n        const firstCode = file.getUint16();\n        const entryCount = file.getUint16();\n\n        for (j = 0; j < entryCount; j++) {\n          glyphId = file.getUint16();\n          const charCode = firstCode + j;\n\n          mappings.push({\n            charCode,\n            glyphId,\n          });\n        }\n      } else {\n        warn(\"cmap table has unsupported format: \" + format);\n        return {\n          platformId: -1,\n          encodingId: -1,\n          mappings: [],\n          hasShortCmap: false,\n        };\n      }\n\n      // removing duplicate entries\n      mappings.sort(function (a, b) {\n        return a.charCode - b.charCode;\n      });\n      for (let i = 1; i < mappings.length; i++) {\n        if (mappings[i - 1].charCode === mappings[i].charCode) {\n          mappings.splice(i, 1);\n          i--;\n        }\n      }\n\n      return {\n        platformId: potentialTable.platformId,\n        encodingId: potentialTable.encodingId,\n        mappings,\n        hasShortCmap,\n      };\n    }\n\n    function sanitizeMetrics(\n      file,\n      header,\n      metrics,\n      headTable,\n      numGlyphs,\n      dupFirstEntry\n    ) {\n      if (!header) {\n        if (metrics) {\n          metrics.data = null;\n        }\n        return;\n      }\n\n      file.pos = (file.start ? file.start : 0) + header.offset;\n      file.pos += 4; // version\n      file.pos += 2; // ascent\n      file.pos += 2; // descent\n      file.pos += 2; // linegap\n      file.pos += 2; // adv_width_max\n      file.pos += 2; // min_sb1\n      file.pos += 2; // min_sb2\n      file.pos += 2; // max_extent\n      file.pos += 2; // caret_slope_rise\n      file.pos += 2; // caret_slope_run\n      const caretOffset = file.getUint16();\n      file.pos += 8; // reserved\n      file.pos += 2; // format\n      let numOfMetrics = file.getUint16();\n\n      if (caretOffset !== 0) {\n        const macStyle = int16(headTable.data[44], headTable.data[45]);\n        if (!(macStyle & 2)) {\n          // Suppress OTS warnings about the `caretOffset` in the hhea-table.\n          header.data[22] = 0;\n          header.data[23] = 0;\n        }\n      }\n\n      if (numOfMetrics > numGlyphs) {\n        info(\n          `The numOfMetrics (${numOfMetrics}) should not be ` +\n            `greater than the numGlyphs (${numGlyphs}).`\n        );\n        // Reduce numOfMetrics if it is greater than numGlyphs\n        numOfMetrics = numGlyphs;\n        header.data[34] = (numOfMetrics & 0xff00) >> 8;\n        header.data[35] = numOfMetrics & 0x00ff;\n      }\n\n      const numOfSidebearings = numGlyphs - numOfMetrics;\n      const numMissing =\n        numOfSidebearings - ((metrics.length - numOfMetrics * 4) >> 1);\n\n      if (numMissing > 0) {\n        // For each missing glyph, we set both the width and lsb to 0 (zero).\n        // Since we need to add two properties for each glyph, this explains\n        // the use of |numMissing * 2| when initializing the typed array.\n        const entries = new Uint8Array(metrics.length + numMissing * 2);\n        entries.set(metrics.data);\n        if (dupFirstEntry) {\n          // Set the sidebearing value of the duplicated glyph.\n          entries[metrics.length] = metrics.data[2];\n          entries[metrics.length + 1] = metrics.data[3];\n        }\n        metrics.data = entries;\n      }\n    }\n\n    function sanitizeGlyph(\n      source,\n      sourceStart,\n      sourceEnd,\n      dest,\n      destStart,\n      hintsValid\n    ) {\n      const glyphProfile = {\n        length: 0,\n        sizeOfInstructions: 0,\n      };\n      if (sourceEnd - sourceStart <= 12) {\n        // glyph with data less than 12 is invalid one\n        return glyphProfile;\n      }\n      const glyf = source.subarray(sourceStart, sourceEnd);\n      let contoursCount = signedInt16(glyf[0], glyf[1]);\n      if (contoursCount < 0) {\n        // OTS doesn't like contour count to be less than -1.\n        contoursCount = -1;\n        writeSignedInt16(glyf, 0, contoursCount);\n        // complex glyph, writing as is\n        dest.set(glyf, destStart);\n        glyphProfile.length = glyf.length;\n        return glyphProfile;\n      }\n\n      let i,\n        j = 10,\n        flagsCount = 0;\n      for (i = 0; i < contoursCount; i++) {\n        const endPoint = (glyf[j] << 8) | glyf[j + 1];\n        flagsCount = endPoint + 1;\n        j += 2;\n      }\n      // skipping instructions\n      const instructionsStart = j;\n      const instructionsLength = (glyf[j] << 8) | glyf[j + 1];\n      glyphProfile.sizeOfInstructions = instructionsLength;\n      j += 2 + instructionsLength;\n      const instructionsEnd = j;\n      // validating flags\n      let coordinatesLength = 0;\n      for (i = 0; i < flagsCount; i++) {\n        const flag = glyf[j++];\n        if (flag & 0xc0) {\n          // reserved flags must be zero, cleaning up\n          glyf[j - 1] = flag & 0x3f;\n        }\n        let xLength = 2;\n        if (flag & 2) {\n          xLength = 1;\n        } else if (flag & 16) {\n          xLength = 0;\n        }\n        let yLength = 2;\n        if (flag & 4) {\n          yLength = 1;\n        } else if (flag & 32) {\n          yLength = 0;\n        }\n        const xyLength = xLength + yLength;\n        coordinatesLength += xyLength;\n        if (flag & 8) {\n          const repeat = glyf[j++];\n          i += repeat;\n          coordinatesLength += repeat * xyLength;\n        }\n      }\n      // glyph without coordinates will be rejected\n      if (coordinatesLength === 0) {\n        return glyphProfile;\n      }\n      let glyphDataLength = j + coordinatesLength;\n      if (glyphDataLength > glyf.length) {\n        // not enough data for coordinates\n        return glyphProfile;\n      }\n      if (!hintsValid && instructionsLength > 0) {\n        dest.set(glyf.subarray(0, instructionsStart), destStart);\n        dest.set([0, 0], destStart + instructionsStart);\n        dest.set(\n          glyf.subarray(instructionsEnd, glyphDataLength),\n          destStart + instructionsStart + 2\n        );\n        glyphDataLength -= instructionsLength;\n        if (glyf.length - glyphDataLength > 3) {\n          glyphDataLength = (glyphDataLength + 3) & ~3;\n        }\n        glyphProfile.length = glyphDataLength;\n        return glyphProfile;\n      }\n      if (glyf.length - glyphDataLength > 3) {\n        // truncating and aligning to 4 bytes the long glyph data\n        glyphDataLength = (glyphDataLength + 3) & ~3;\n        dest.set(glyf.subarray(0, glyphDataLength), destStart);\n        glyphProfile.length = glyphDataLength;\n        return glyphProfile;\n      }\n      // glyph data is fine\n      dest.set(glyf, destStart);\n      glyphProfile.length = glyf.length;\n      return glyphProfile;\n    }\n\n    function sanitizeHead(head, numGlyphs, locaLength) {\n      const data = head.data;\n\n      // Validate version:\n      // Should always be 0x00010000\n      const version = int32(data[0], data[1], data[2], data[3]);\n      if (version >> 16 !== 1) {\n        info(\"Attempting to fix invalid version in head table: \" + version);\n        data[0] = 0;\n        data[1] = 1;\n        data[2] = 0;\n        data[3] = 0;\n      }\n\n      const indexToLocFormat = int16(data[50], data[51]);\n      if (indexToLocFormat < 0 || indexToLocFormat > 1) {\n        info(\n          \"Attempting to fix invalid indexToLocFormat in head table: \" +\n            indexToLocFormat\n        );\n\n        // The value of indexToLocFormat should be 0 if the loca table\n        // consists of short offsets, and should be 1 if the loca table\n        // consists of long offsets.\n        //\n        // The number of entries in the loca table should be numGlyphs + 1.\n        //\n        // Using this information, we can work backwards to deduce if the\n        // size of each offset in the loca table, and thus figure out the\n        // appropriate value for indexToLocFormat.\n\n        const numGlyphsPlusOne = numGlyphs + 1;\n        if (locaLength === numGlyphsPlusOne << 1) {\n          // 0x0000 indicates the loca table consists of short offsets\n          data[50] = 0;\n          data[51] = 0;\n        } else if (locaLength === numGlyphsPlusOne << 2) {\n          // 0x0001 indicates the loca table consists of long offsets\n          data[50] = 0;\n          data[51] = 1;\n        } else {\n          throw new FormatError(\n            \"Could not fix indexToLocFormat: \" + indexToLocFormat\n          );\n        }\n      }\n    }\n\n    function sanitizeGlyphLocations(\n      loca,\n      glyf,\n      numGlyphs,\n      isGlyphLocationsLong,\n      hintsValid,\n      dupFirstEntry,\n      maxSizeOfInstructions\n    ) {\n      let itemSize, itemDecode, itemEncode;\n      if (isGlyphLocationsLong) {\n        itemSize = 4;\n        itemDecode = function fontItemDecodeLong(data, offset) {\n          return (\n            (data[offset] << 24) |\n            (data[offset + 1] << 16) |\n            (data[offset + 2] << 8) |\n            data[offset + 3]\n          );\n        };\n        itemEncode = function fontItemEncodeLong(data, offset, value) {\n          data[offset] = (value >>> 24) & 0xff;\n          data[offset + 1] = (value >> 16) & 0xff;\n          data[offset + 2] = (value >> 8) & 0xff;\n          data[offset + 3] = value & 0xff;\n        };\n      } else {\n        itemSize = 2;\n        itemDecode = function fontItemDecode(data, offset) {\n          return (data[offset] << 9) | (data[offset + 1] << 1);\n        };\n        itemEncode = function fontItemEncode(data, offset, value) {\n          data[offset] = (value >> 9) & 0xff;\n          data[offset + 1] = (value >> 1) & 0xff;\n        };\n      }\n      // The first glyph is duplicated.\n      const numGlyphsOut = dupFirstEntry ? numGlyphs + 1 : numGlyphs;\n      const locaDataSize = itemSize * (1 + numGlyphsOut);\n      // Resize loca table to account for duplicated glyph.\n      const locaData = new Uint8Array(locaDataSize);\n      locaData.set(loca.data.subarray(0, locaDataSize));\n      loca.data = locaData;\n      // removing the invalid glyphs\n      const oldGlyfData = glyf.data;\n      const oldGlyfDataLength = oldGlyfData.length;\n      const newGlyfData = new Uint8Array(oldGlyfDataLength);\n\n      // The spec says the offsets should be in ascending order, however\n      // this is not true for some fonts or they use the offset of 0 to mark a\n      // glyph as missing. OTS requires the offsets to be in order and not to\n      // be zero, so we must sort and rebuild the loca table and potentially\n      // re-arrange the glyf data.\n      let i, j;\n      const locaEntries = [];\n      // There are numGlyphs + 1 loca table entries.\n      for (i = 0, j = 0; i < numGlyphs + 1; i++, j += itemSize) {\n        let offset = itemDecode(locaData, j);\n        if (offset > oldGlyfDataLength) {\n          offset = oldGlyfDataLength;\n        }\n        locaEntries.push({\n          index: i,\n          offset,\n          endOffset: 0,\n        });\n      }\n      locaEntries.sort((a, b) => {\n        return a.offset - b.offset;\n      });\n      // Now the offsets are sorted, calculate the end offset of each glyph.\n      // The last loca entry's endOffset is not calculated since it's the end\n      // of the data and will be stored on the previous entry's endOffset.\n      for (i = 0; i < numGlyphs; i++) {\n        locaEntries[i].endOffset = locaEntries[i + 1].offset;\n      }\n      // Re-sort so glyphs aren't out of order.\n      locaEntries.sort((a, b) => {\n        return a.index - b.index;\n      });\n\n      const missingGlyphs = Object.create(null);\n      let writeOffset = 0;\n      itemEncode(locaData, 0, writeOffset);\n      for (i = 0, j = itemSize; i < numGlyphs; i++, j += itemSize) {\n        const glyphProfile = sanitizeGlyph(\n          oldGlyfData,\n          locaEntries[i].offset,\n          locaEntries[i].endOffset,\n          newGlyfData,\n          writeOffset,\n          hintsValid\n        );\n        const newLength = glyphProfile.length;\n        if (newLength === 0) {\n          missingGlyphs[i] = true;\n        }\n        if (glyphProfile.sizeOfInstructions > maxSizeOfInstructions) {\n          maxSizeOfInstructions = glyphProfile.sizeOfInstructions;\n        }\n        writeOffset += newLength;\n        itemEncode(locaData, j, writeOffset);\n      }\n\n      if (writeOffset === 0) {\n        // glyf table cannot be empty -- redoing the glyf and loca tables\n        // to have single glyph with one point\n        const simpleGlyph = new Uint8Array([\n          0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 0,\n        ]);\n        for (i = 0, j = itemSize; i < numGlyphsOut; i++, j += itemSize) {\n          itemEncode(locaData, j, simpleGlyph.length);\n        }\n        glyf.data = simpleGlyph;\n      } else if (dupFirstEntry) {\n        // Browsers will not display a glyph at position 0. Typically glyph 0\n        // is notdef, but a number of fonts put a valid glyph there so it must\n        // be duplicated and appended.\n        const firstEntryLength = itemDecode(locaData, itemSize);\n        if (newGlyfData.length > firstEntryLength + writeOffset) {\n          glyf.data = newGlyfData.subarray(0, firstEntryLength + writeOffset);\n        } else {\n          glyf.data = new Uint8Array(firstEntryLength + writeOffset);\n          glyf.data.set(newGlyfData.subarray(0, writeOffset));\n        }\n        glyf.data.set(newGlyfData.subarray(0, firstEntryLength), writeOffset);\n        itemEncode(\n          loca.data,\n          locaData.length - itemSize,\n          writeOffset + firstEntryLength\n        );\n      } else {\n        glyf.data = newGlyfData.subarray(0, writeOffset);\n      }\n      return {\n        missingGlyphs,\n        maxSizeOfInstructions,\n      };\n    }\n\n    function readPostScriptTable(post, propertiesObj, maxpNumGlyphs) {\n      const start = (font.start ? font.start : 0) + post.offset;\n      font.pos = start;\n\n      const length = post.length,\n        end = start + length;\n      const version = font.getInt32();\n      // skip rest to the tables\n      font.skip(28);\n\n      let glyphNames;\n      let valid = true;\n      let i;\n\n      switch (version) {\n        case 0x00010000:\n          glyphNames = MacStandardGlyphOrdering;\n          break;\n        case 0x00020000:\n          const numGlyphs = font.getUint16();\n          if (numGlyphs !== maxpNumGlyphs) {\n            valid = false;\n            break;\n          }\n          const glyphNameIndexes = [];\n          for (i = 0; i < numGlyphs; ++i) {\n            const index = font.getUint16();\n            if (index >= 32768) {\n              valid = false;\n              break;\n            }\n            glyphNameIndexes.push(index);\n          }\n          if (!valid) {\n            break;\n          }\n          const customNames = [],\n            strBuf = [];\n          while (font.pos < end) {\n            const stringLength = font.getByte();\n            strBuf.length = stringLength;\n            for (i = 0; i < stringLength; ++i) {\n              strBuf[i] = String.fromCharCode(font.getByte());\n            }\n            customNames.push(strBuf.join(\"\"));\n          }\n          glyphNames = [];\n          for (i = 0; i < numGlyphs; ++i) {\n            const j = glyphNameIndexes[i];\n            if (j < 258) {\n              glyphNames.push(MacStandardGlyphOrdering[j]);\n              continue;\n            }\n            glyphNames.push(customNames[j - 258]);\n          }\n          break;\n        case 0x00030000:\n          break;\n        default:\n          warn(\"Unknown/unsupported post table version \" + version);\n          valid = false;\n          if (propertiesObj.defaultEncoding) {\n            glyphNames = propertiesObj.defaultEncoding;\n          }\n          break;\n      }\n      propertiesObj.glyphNames = glyphNames;\n      return valid;\n    }\n\n    function readNameTable(nameTable) {\n      const start = (font.start ? font.start : 0) + nameTable.offset;\n      font.pos = start;\n\n      const names = [[], []];\n      const length = nameTable.length,\n        end = start + length;\n      const format = font.getUint16();\n      const FORMAT_0_HEADER_LENGTH = 6;\n      if (format !== 0 || length < FORMAT_0_HEADER_LENGTH) {\n        // unsupported name table format or table \"too\" small\n        return names;\n      }\n      const numRecords = font.getUint16();\n      const stringsStart = font.getUint16();\n      const records = [];\n      const NAME_RECORD_LENGTH = 12;\n      let i, ii;\n\n      for (i = 0; i < numRecords && font.pos + NAME_RECORD_LENGTH <= end; i++) {\n        const r = {\n          platform: font.getUint16(),\n          encoding: font.getUint16(),\n          language: font.getUint16(),\n          name: font.getUint16(),\n          length: font.getUint16(),\n          offset: font.getUint16(),\n        };\n        // using only Macintosh and Windows platform/encoding names\n        if (\n          (r.platform === 1 && r.encoding === 0 && r.language === 0) ||\n          (r.platform === 3 && r.encoding === 1 && r.language === 0x409)\n        ) {\n          records.push(r);\n        }\n      }\n      for (i = 0, ii = records.length; i < ii; i++) {\n        const record = records[i];\n        if (record.length <= 0) {\n          continue; // Nothing to process, ignoring.\n        }\n        const pos = start + stringsStart + record.offset;\n        if (pos + record.length > end) {\n          continue; // outside of name table, ignoring\n        }\n        font.pos = pos;\n        const nameIndex = record.name;\n        if (record.encoding) {\n          // unicode\n          let str = \"\";\n          for (let j = 0, jj = record.length; j < jj; j += 2) {\n            str += String.fromCharCode(font.getUint16());\n          }\n          names[1][nameIndex] = str;\n        } else {\n          names[0][nameIndex] = font.getString(record.length);\n        }\n      }\n      return names;\n    }\n\n    // prettier-ignore\n    const TTOpsStackDeltas = [\n      0, 0, 0, 0, 0, 0, 0, 0, -2, -2, -2, -2, 0, 0, -2, -5,\n      -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, -1, 0, -1, -1, -1, -1,\n      1, -1, -999, 0, 1, 0, -1, -2, 0, -1, -2, -1, -1, 0, -1, -1,\n      0, 0, -999, -999, -1, -1, -1, -1, -2, -999, -2, -2, -999, 0, -2, -2,\n      0, 0, -2, 0, -2, 0, 0, 0, -2, -1, -1, 1, 1, 0, 0, -1,\n      -1, -1, -1, -1, -1, -1, 0, 0, -1, 0, -1, -1, 0, -999, -1, -1,\n      -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n      -2, -999, -999, -999, -999, -999, -1, -1, -2, -2, 0, 0, 0, 0, -1, -1,\n      -999, -2, -2, 0, 0, -1, -2, -2, 0, 0, 0, -1, -1, -1, -2];\n    // 0xC0-DF == -1 and 0xE0-FF == -2\n\n    function sanitizeTTProgram(table, ttContext) {\n      let data = table.data;\n      let i = 0,\n        j,\n        n,\n        b,\n        funcId,\n        pc,\n        lastEndf = 0,\n        lastDeff = 0;\n      const stack = [];\n      const callstack = [];\n      const functionsCalled = [];\n      let tooComplexToFollowFunctions = ttContext.tooComplexToFollowFunctions;\n      let inFDEF = false,\n        ifLevel = 0,\n        inELSE = 0;\n      for (let ii = data.length; i < ii; ) {\n        const op = data[i++];\n        // The TrueType instruction set docs can be found at\n        // https://developer.apple.com/fonts/TTRefMan/RM05/Chap5.html\n        if (op === 0x40) {\n          // NPUSHB - pushes n bytes\n          n = data[i++];\n          if (inFDEF || inELSE) {\n            i += n;\n          } else {\n            for (j = 0; j < n; j++) {\n              stack.push(data[i++]);\n            }\n          }\n        } else if (op === 0x41) {\n          // NPUSHW - pushes n words\n          n = data[i++];\n          if (inFDEF || inELSE) {\n            i += n * 2;\n          } else {\n            for (j = 0; j < n; j++) {\n              b = data[i++];\n              stack.push((b << 8) | data[i++]);\n            }\n          }\n        } else if ((op & 0xf8) === 0xb0) {\n          // PUSHB - pushes bytes\n          n = op - 0xb0 + 1;\n          if (inFDEF || inELSE) {\n            i += n;\n          } else {\n            for (j = 0; j < n; j++) {\n              stack.push(data[i++]);\n            }\n          }\n        } else if ((op & 0xf8) === 0xb8) {\n          // PUSHW - pushes words\n          n = op - 0xb8 + 1;\n          if (inFDEF || inELSE) {\n            i += n * 2;\n          } else {\n            for (j = 0; j < n; j++) {\n              b = data[i++];\n              stack.push((b << 8) | data[i++]);\n            }\n          }\n        } else if (op === 0x2b && !tooComplexToFollowFunctions) {\n          // CALL\n          if (!inFDEF && !inELSE) {\n            // collecting information about which functions are used\n            funcId = stack[stack.length - 1];\n            if (isNaN(funcId)) {\n              info(\"TT: CALL empty stack (or invalid entry).\");\n            } else {\n              ttContext.functionsUsed[funcId] = true;\n              if (funcId in ttContext.functionsStackDeltas) {\n                const newStackLength =\n                  stack.length + ttContext.functionsStackDeltas[funcId];\n                if (newStackLength < 0) {\n                  warn(\"TT: CALL invalid functions stack delta.\");\n                  ttContext.hintsValid = false;\n                  return;\n                }\n                stack.length = newStackLength;\n              } else if (\n                funcId in ttContext.functionsDefined &&\n                !functionsCalled.includes(funcId)\n              ) {\n                callstack.push({ data, i, stackTop: stack.length - 1 });\n                functionsCalled.push(funcId);\n                pc = ttContext.functionsDefined[funcId];\n                if (!pc) {\n                  warn(\"TT: CALL non-existent function\");\n                  ttContext.hintsValid = false;\n                  return;\n                }\n                data = pc.data;\n                i = pc.i;\n              }\n            }\n          }\n        } else if (op === 0x2c && !tooComplexToFollowFunctions) {\n          // FDEF\n          if (inFDEF || inELSE) {\n            warn(\"TT: nested FDEFs not allowed\");\n            tooComplexToFollowFunctions = true;\n          }\n          inFDEF = true;\n          // collecting information about which functions are defined\n          lastDeff = i;\n          funcId = stack.pop();\n          ttContext.functionsDefined[funcId] = { data, i };\n        } else if (op === 0x2d) {\n          // ENDF - end of function\n          if (inFDEF) {\n            inFDEF = false;\n            lastEndf = i;\n          } else {\n            pc = callstack.pop();\n            if (!pc) {\n              warn(\"TT: ENDF bad stack\");\n              ttContext.hintsValid = false;\n              return;\n            }\n            funcId = functionsCalled.pop();\n            data = pc.data;\n            i = pc.i;\n            ttContext.functionsStackDeltas[funcId] = stack.length - pc.stackTop;\n          }\n        } else if (op === 0x89) {\n          // IDEF - instruction definition\n          if (inFDEF || inELSE) {\n            warn(\"TT: nested IDEFs not allowed\");\n            tooComplexToFollowFunctions = true;\n          }\n          inFDEF = true;\n          // recording it as a function to track ENDF\n          lastDeff = i;\n        } else if (op === 0x58) {\n          // IF\n          ++ifLevel;\n        } else if (op === 0x1b) {\n          // ELSE\n          inELSE = ifLevel;\n        } else if (op === 0x59) {\n          // EIF\n          if (inELSE === ifLevel) {\n            inELSE = 0;\n          }\n          --ifLevel;\n        } else if (op === 0x1c) {\n          // JMPR\n          if (!inFDEF && !inELSE) {\n            const offset = stack[stack.length - 1];\n            // only jumping forward to prevent infinite loop\n            if (offset > 0) {\n              i += offset - 1;\n            }\n          }\n        }\n        // Adjusting stack not extactly, but just enough to get function id\n        if (!inFDEF && !inELSE) {\n          let stackDelta = 0;\n          if (op <= 0x8e) {\n            stackDelta = TTOpsStackDeltas[op];\n          } else if (op >= 0xc0 && op <= 0xdf) {\n            stackDelta = -1;\n          } else if (op >= 0xe0) {\n            stackDelta = -2;\n          }\n          if (op >= 0x71 && op <= 0x75) {\n            n = stack.pop();\n            if (!isNaN(n)) {\n              stackDelta = -n * 2;\n            }\n          }\n          while (stackDelta < 0 && stack.length > 0) {\n            stack.pop();\n            stackDelta++;\n          }\n          while (stackDelta > 0) {\n            stack.push(NaN); // pushing any number into stack\n            stackDelta--;\n          }\n        }\n      }\n      ttContext.tooComplexToFollowFunctions = tooComplexToFollowFunctions;\n      const content = [data];\n      if (i > data.length) {\n        content.push(new Uint8Array(i - data.length));\n      }\n      if (lastDeff > lastEndf) {\n        warn(\"TT: complementing a missing function tail\");\n        // new function definition started, but not finished\n        // complete function by [CLEAR, ENDF]\n        content.push(new Uint8Array([0x22, 0x2d]));\n      }\n      foldTTTable(table, content);\n    }\n\n    function checkInvalidFunctions(ttContext, maxFunctionDefs) {\n      if (ttContext.tooComplexToFollowFunctions) {\n        return;\n      }\n      if (ttContext.functionsDefined.length > maxFunctionDefs) {\n        warn(\"TT: more functions defined than expected\");\n        ttContext.hintsValid = false;\n        return;\n      }\n      for (let j = 0, jj = ttContext.functionsUsed.length; j < jj; j++) {\n        if (j > maxFunctionDefs) {\n          warn(\"TT: invalid function id: \" + j);\n          ttContext.hintsValid = false;\n          return;\n        }\n        if (ttContext.functionsUsed[j] && !ttContext.functionsDefined[j]) {\n          warn(\"TT: undefined function: \" + j);\n          ttContext.hintsValid = false;\n          return;\n        }\n      }\n    }\n\n    function foldTTTable(table, content) {\n      if (content.length > 1) {\n        // concatenating the content items\n        let newLength = 0;\n        let j, jj;\n        for (j = 0, jj = content.length; j < jj; j++) {\n          newLength += content[j].length;\n        }\n        newLength = (newLength + 3) & ~3;\n        const result = new Uint8Array(newLength);\n        let pos = 0;\n        for (j = 0, jj = content.length; j < jj; j++) {\n          result.set(content[j], pos);\n          pos += content[j].length;\n        }\n        table.data = result;\n        table.length = newLength;\n      }\n    }\n\n    function sanitizeTTPrograms(fpgm, prep, cvt, maxFunctionDefs) {\n      const ttContext = {\n        functionsDefined: [],\n        functionsUsed: [],\n        functionsStackDeltas: [],\n        tooComplexToFollowFunctions: false,\n        hintsValid: true,\n      };\n      if (fpgm) {\n        sanitizeTTProgram(fpgm, ttContext);\n      }\n      if (prep) {\n        sanitizeTTProgram(prep, ttContext);\n      }\n      if (fpgm) {\n        checkInvalidFunctions(ttContext, maxFunctionDefs);\n      }\n      if (cvt && cvt.length & 1) {\n        const cvtData = new Uint8Array(cvt.length + 1);\n        cvtData.set(cvt.data);\n        cvt.data = cvtData;\n      }\n      return ttContext.hintsValid;\n    }\n\n    // The following steps modify the original font data, making copy\n    font = new Stream(new Uint8Array(font.getBytes()));\n\n    let header, tables;\n    if (isTrueTypeCollectionFile(font)) {\n      const ttcData = readTrueTypeCollectionData(font, this.name);\n      header = ttcData.header;\n      tables = ttcData.tables;\n    } else {\n      header = readOpenTypeHeader(font);\n      tables = readTables(font, header.numTables);\n    }\n    let cff, cffFile;\n\n    const isTrueType = !tables[\"CFF \"];\n    if (!isTrueType) {\n      const isComposite =\n        properties.composite &&\n        ((properties.cidToGidMap || []).length > 0 ||\n          !(properties.cMap instanceof IdentityCMap));\n      // OpenType font (skip composite fonts with non-default glyph mapping).\n      if (\n        (header.version === \"OTTO\" && !isComposite) ||\n        !tables.head ||\n        !tables.hhea ||\n        !tables.maxp ||\n        !tables.post\n      ) {\n        // No major tables: throwing everything at `CFFFont`.\n        cffFile = new Stream(tables[\"CFF \"].data);\n        cff = new CFFFont(cffFile, properties);\n\n        adjustWidths(properties);\n\n        return this.convert(name, cff, properties);\n      }\n\n      delete tables.glyf;\n      delete tables.loca;\n      delete tables.fpgm;\n      delete tables.prep;\n      delete tables[\"cvt \"];\n      this.isOpenType = true;\n    } else {\n      if (!tables.loca) {\n        throw new FormatError('Required \"loca\" table is not found');\n      }\n      if (!tables.glyf) {\n        warn('Required \"glyf\" table is not found -- trying to recover.');\n        // Note: We use `sanitizeGlyphLocations` to add dummy glyf data below.\n        tables.glyf = {\n          tag: \"glyf\",\n          data: new Uint8Array(0),\n        };\n      }\n      this.isOpenType = false;\n    }\n\n    if (!tables.maxp) {\n      throw new FormatError('Required \"maxp\" table is not found');\n    }\n\n    font.pos = (font.start || 0) + tables.maxp.offset;\n    const version = font.getInt32();\n    const numGlyphs = font.getUint16();\n\n    if (\n      properties.scaleFactors &&\n      properties.scaleFactors.length === numGlyphs &&\n      isTrueType\n    ) {\n      const { scaleFactors } = properties;\n      const isGlyphLocationsLong = int16(\n        tables.head.data[50],\n        tables.head.data[51]\n      );\n\n      const glyphs = new GlyfTable({\n        glyfTable: tables.glyf.data,\n        isGlyphLocationsLong,\n        locaTable: tables.loca.data,\n        numGlyphs,\n      });\n      glyphs.scale(scaleFactors);\n\n      const { glyf, loca, isLocationLong } = glyphs.write();\n      tables.glyf.data = glyf;\n      tables.loca.data = loca;\n\n      if (isLocationLong !== !!isGlyphLocationsLong) {\n        tables.head.data[50] = 0;\n        tables.head.data[51] = isLocationLong ? 1 : 0;\n      }\n\n      const metrics = tables.hmtx.data;\n\n      for (let i = 0; i < numGlyphs; i++) {\n        const j = 4 * i;\n        const advanceWidth = Math.round(\n          scaleFactors[i] * int16(metrics[j], metrics[j + 1])\n        );\n        metrics[j] = (advanceWidth >> 8) & 0xff;\n        metrics[j + 1] = advanceWidth & 0xff;\n        const lsb = Math.round(\n          scaleFactors[i] * signedInt16(metrics[j + 2], metrics[j + 3])\n        );\n        writeSignedInt16(metrics, j + 2, lsb);\n      }\n    }\n\n    // Glyph 0 is duplicated and appended.\n    let numGlyphsOut = numGlyphs + 1;\n    let dupFirstEntry = true;\n    if (numGlyphsOut > 0xffff) {\n      dupFirstEntry = false;\n      numGlyphsOut = numGlyphs;\n      warn(\"Not enough space in glyfs to duplicate first glyph.\");\n    }\n    let maxFunctionDefs = 0;\n    let maxSizeOfInstructions = 0;\n    if (version >= 0x00010000 && tables.maxp.length >= 22) {\n      // maxZones can be invalid\n      font.pos += 8;\n      const maxZones = font.getUint16();\n      if (maxZones > 2) {\n        // reset to 2 if font has invalid maxZones\n        tables.maxp.data[14] = 0;\n        tables.maxp.data[15] = 2;\n      }\n      font.pos += 4;\n      maxFunctionDefs = font.getUint16();\n      font.pos += 4;\n      maxSizeOfInstructions = font.getUint16();\n    }\n\n    tables.maxp.data[4] = numGlyphsOut >> 8;\n    tables.maxp.data[5] = numGlyphsOut & 255;\n\n    const hintsValid = sanitizeTTPrograms(\n      tables.fpgm,\n      tables.prep,\n      tables[\"cvt \"],\n      maxFunctionDefs\n    );\n    if (!hintsValid) {\n      delete tables.fpgm;\n      delete tables.prep;\n      delete tables[\"cvt \"];\n    }\n\n    // Ensure the hmtx table contains the advance width and\n    // sidebearings information for numGlyphs in the maxp table\n    sanitizeMetrics(\n      font,\n      tables.hhea,\n      tables.hmtx,\n      tables.head,\n      numGlyphsOut,\n      dupFirstEntry\n    );\n\n    if (!tables.head) {\n      throw new FormatError('Required \"head\" table is not found');\n    }\n\n    sanitizeHead(tables.head, numGlyphs, isTrueType ? tables.loca.length : 0);\n\n    let missingGlyphs = Object.create(null);\n    if (isTrueType) {\n      const isGlyphLocationsLong = int16(\n        tables.head.data[50],\n        tables.head.data[51]\n      );\n      const glyphsInfo = sanitizeGlyphLocations(\n        tables.loca,\n        tables.glyf,\n        numGlyphs,\n        isGlyphLocationsLong,\n        hintsValid,\n        dupFirstEntry,\n        maxSizeOfInstructions\n      );\n      missingGlyphs = glyphsInfo.missingGlyphs;\n\n      // Some fonts have incorrect maxSizeOfInstructions values, so we use\n      // the computed value instead.\n      if (version >= 0x00010000 && tables.maxp.length >= 22) {\n        tables.maxp.data[26] = glyphsInfo.maxSizeOfInstructions >> 8;\n        tables.maxp.data[27] = glyphsInfo.maxSizeOfInstructions & 255;\n      }\n    }\n    if (!tables.hhea) {\n      throw new FormatError('Required \"hhea\" table is not found');\n    }\n\n    // Sanitizer reduces the glyph advanceWidth to the maxAdvanceWidth\n    // Sometimes it's 0. That needs to be fixed\n    if (tables.hhea.data[10] === 0 && tables.hhea.data[11] === 0) {\n      tables.hhea.data[10] = 0xff;\n      tables.hhea.data[11] = 0xff;\n    }\n\n    // Extract some more font properties from the OpenType head and\n    // hhea tables; yMin and descent value are always negative.\n    const metricsOverride = {\n      unitsPerEm: int16(tables.head.data[18], tables.head.data[19]),\n      yMax: int16(tables.head.data[42], tables.head.data[43]),\n      yMin: signedInt16(tables.head.data[38], tables.head.data[39]),\n      ascent: signedInt16(tables.hhea.data[4], tables.hhea.data[5]),\n      descent: signedInt16(tables.hhea.data[6], tables.hhea.data[7]),\n      lineGap: signedInt16(tables.hhea.data[8], tables.hhea.data[9]),\n    };\n\n    // PDF FontDescriptor metrics lie -- using data from actual font.\n    this.ascent = metricsOverride.ascent / metricsOverride.unitsPerEm;\n    this.descent = metricsOverride.descent / metricsOverride.unitsPerEm;\n    this.lineGap = metricsOverride.lineGap / metricsOverride.unitsPerEm;\n\n    if (this.cssFontInfo && this.cssFontInfo.lineHeight) {\n      this.lineHeight = this.cssFontInfo.metrics.lineHeight;\n      this.lineGap = this.cssFontInfo.metrics.lineGap;\n    } else {\n      this.lineHeight = this.ascent - this.descent + this.lineGap;\n    }\n\n    // The 'post' table has glyphs names.\n    if (tables.post) {\n      readPostScriptTable(tables.post, properties, numGlyphs);\n    }\n\n    // The original 'post' table is not needed, replace it.\n    tables.post = {\n      tag: \"post\",\n      data: createPostTable(properties),\n    };\n\n    const charCodeToGlyphId = [];\n\n    // Helper function to try to skip mapping of empty glyphs.\n    function hasGlyph(glyphId) {\n      return !missingGlyphs[glyphId];\n    }\n\n    if (properties.composite) {\n      const cidToGidMap = properties.cidToGidMap || [];\n      const isCidToGidMapEmpty = cidToGidMap.length === 0;\n\n      properties.cMap.forEach(function (charCode, cid) {\n        if (typeof cid === \"string\") {\n          cid = convertCidString(charCode, cid, /* shouldThrow = */ true);\n        }\n        if (cid > 0xffff) {\n          throw new FormatError(\"Max size of CID is 65,535\");\n        }\n        let glyphId = -1;\n        if (isCidToGidMapEmpty) {\n          glyphId = cid;\n        } else if (cidToGidMap[cid] !== undefined) {\n          glyphId = cidToGidMap[cid];\n        }\n\n        if (glyphId >= 0 && glyphId < numGlyphs && hasGlyph(glyphId)) {\n          charCodeToGlyphId[charCode] = glyphId;\n        }\n      });\n    } else {\n      // Most of the following logic in this code branch is based on the\n      // 9.6.6.4 of the PDF spec.\n      const cmapTable = readCmapTable(\n        tables.cmap,\n        font,\n        this.isSymbolicFont,\n        properties.hasEncoding\n      );\n      const cmapPlatformId = cmapTable.platformId;\n      const cmapEncodingId = cmapTable.encodingId;\n      const cmapMappings = cmapTable.mappings;\n      const cmapMappingsLength = cmapMappings.length;\n      let baseEncoding = [],\n        forcePostTable = false;\n      if (\n        properties.hasEncoding &&\n        (properties.baseEncodingName === \"MacRomanEncoding\" ||\n          properties.baseEncodingName === \"WinAnsiEncoding\")\n      ) {\n        baseEncoding = getEncoding(properties.baseEncodingName);\n      }\n\n      // If the font has an encoding and is not symbolic then follow the rules\n      // in section 9.6.6.4 of the spec on how to map 3,1 and 1,0 cmaps.\n      if (\n        properties.hasEncoding &&\n        !this.isSymbolicFont &&\n        ((cmapPlatformId === 3 && cmapEncodingId === 1) ||\n          (cmapPlatformId === 1 && cmapEncodingId === 0))\n      ) {\n        const glyphsUnicodeMap = getGlyphsUnicode();\n        for (let charCode = 0; charCode < 256; charCode++) {\n          let glyphName;\n          if (this.differences[charCode] !== undefined) {\n            glyphName = this.differences[charCode];\n          } else if (baseEncoding.length && baseEncoding[charCode] !== \"\") {\n            glyphName = baseEncoding[charCode];\n          } else {\n            glyphName = StandardEncoding[charCode];\n          }\n          if (!glyphName) {\n            continue;\n          }\n          // Ensure that non-standard glyph names are resolved to valid ones.\n          const standardGlyphName = recoverGlyphName(\n            glyphName,\n            glyphsUnicodeMap\n          );\n\n          let unicodeOrCharCode;\n          if (cmapPlatformId === 3 && cmapEncodingId === 1) {\n            unicodeOrCharCode = glyphsUnicodeMap[standardGlyphName];\n          } else if (cmapPlatformId === 1 && cmapEncodingId === 0) {\n            // TODO: the encoding needs to be updated with mac os table.\n            unicodeOrCharCode = MacRomanEncoding.indexOf(standardGlyphName);\n          }\n\n          if (unicodeOrCharCode === undefined) {\n            // Not a valid glyph name, fallback to using the /ToUnicode map\n            // when no post-table exists (fixes issue13316_reduced.pdf).\n            if (\n              !properties.glyphNames &&\n              properties.hasIncludedToUnicodeMap &&\n              !(this.toUnicode instanceof IdentityToUnicodeMap)\n            ) {\n              const unicode = this.toUnicode.get(charCode);\n              if (unicode) {\n                unicodeOrCharCode = unicode.codePointAt(0);\n              }\n            }\n\n            if (unicodeOrCharCode === undefined) {\n              continue; // No valid glyph mapping found.\n            }\n          }\n\n          for (let i = 0; i < cmapMappingsLength; ++i) {\n            if (cmapMappings[i].charCode !== unicodeOrCharCode) {\n              continue;\n            }\n            charCodeToGlyphId[charCode] = cmapMappings[i].glyphId;\n            break;\n          }\n        }\n      } else if (cmapPlatformId === 0) {\n        // Default Unicode semantics, use the charcodes as is.\n        for (let i = 0; i < cmapMappingsLength; ++i) {\n          charCodeToGlyphId[cmapMappings[i].charCode] = cmapMappings[i].glyphId;\n        }\n        // Always prefer the BaseEncoding/Differences arrays, when they exist\n        // (fixes issue13433.pdf).\n        forcePostTable = true;\n      } else {\n        // When there is only a (1, 0) cmap table, the char code is a single\n        // byte and it is used directly as the char code.\n\n        // When a (3, 0) cmap table is present, it is used instead but the\n        // spec has special rules for char codes in the range of 0xF000 to\n        // 0xF0FF and it says the (3, 0) table should map the values from\n        // the (1, 0) table by prepending 0xF0 to the char codes. To reverse\n        // this, the upper bits of the char code are cleared, but only for the\n        // special range since some PDFs have char codes outside of this range\n        // (e.g. 0x2013) which when masked would overwrite other values in the\n        // cmap.\n        for (let i = 0; i < cmapMappingsLength; ++i) {\n          let charCode = cmapMappings[i].charCode;\n          if (\n            cmapPlatformId === 3 &&\n            charCode >= 0xf000 &&\n            charCode <= 0xf0ff\n          ) {\n            charCode &= 0xff;\n          }\n          charCodeToGlyphId[charCode] = cmapMappings[i].glyphId;\n        }\n      }\n\n      // Last, try to map any missing charcodes using the post table.\n      if (\n        properties.glyphNames &&\n        (baseEncoding.length || this.differences.length)\n      ) {\n        for (let i = 0; i < 256; ++i) {\n          if (!forcePostTable && charCodeToGlyphId[i] !== undefined) {\n            continue;\n          }\n          const glyphName = this.differences[i] || baseEncoding[i];\n          if (!glyphName) {\n            continue;\n          }\n          const glyphId = properties.glyphNames.indexOf(glyphName);\n          if (glyphId > 0 && hasGlyph(glyphId)) {\n            charCodeToGlyphId[i] = glyphId;\n          }\n        }\n      }\n    }\n\n    if (charCodeToGlyphId.length === 0) {\n      // defines at least one glyph\n      charCodeToGlyphId[0] = 0;\n    }\n\n    // Typically glyph 0 is duplicated and the mapping must be updated, but if\n    // there isn't enough room to duplicate, the glyph id is left the same. In\n    // this case, glyph 0 may not work correctly, but that is better than\n    // having the whole font fail.\n    let glyphZeroId = numGlyphsOut - 1;\n    if (!dupFirstEntry) {\n      glyphZeroId = 0;\n    }\n\n    // When `cssFontInfo` is set, the font is used to render text in the HTML\n    // view (e.g. with Xfa) so nothing must be moved in the private use area.\n    if (!properties.cssFontInfo) {\n      // Converting glyphs and ids into font's cmap table\n      const newMapping = adjustMapping(\n        charCodeToGlyphId,\n        hasGlyph,\n        glyphZeroId\n      );\n      this.toFontChar = newMapping.toFontChar;\n      tables.cmap = {\n        tag: \"cmap\",\n        data: createCmapTable(newMapping.charCodeToGlyphId, numGlyphsOut),\n      };\n\n      if (!tables[\"OS/2\"] || !validateOS2Table(tables[\"OS/2\"], font)) {\n        tables[\"OS/2\"] = {\n          tag: \"OS/2\",\n          data: createOS2Table(\n            properties,\n            newMapping.charCodeToGlyphId,\n            metricsOverride\n          ),\n        };\n      }\n    }\n\n    if (!isTrueType) {\n      try {\n        // Trying to repair CFF file\n        cffFile = new Stream(tables[\"CFF \"].data);\n        const parser = new CFFParser(\n          cffFile,\n          properties,\n          SEAC_ANALYSIS_ENABLED\n        );\n        cff = parser.parse();\n        cff.duplicateFirstGlyph();\n        const compiler = new CFFCompiler(cff);\n        tables[\"CFF \"].data = compiler.compile();\n      } catch (e) {\n        warn(\"Failed to compile font \" + properties.loadedName);\n      }\n    }\n\n    // Re-creating 'name' table\n    if (!tables.name) {\n      tables.name = {\n        tag: \"name\",\n        data: createNameTable(this.name),\n      };\n    } else {\n      // ... using existing 'name' table as prototype\n      const namePrototype = readNameTable(tables.name);\n      tables.name.data = createNameTable(name, namePrototype);\n      this.psName = namePrototype[0][6] || null;\n    }\n\n    const builder = new OpenTypeFileBuilder(header.version);\n    for (const tableTag in tables) {\n      builder.addTable(tableTag, tables[tableTag].data);\n    }\n    return builder.toArray();\n  }\n\n  convert(fontName, font, properties) {\n    // TODO: Check the charstring widths to determine this.\n    properties.fixedPitch = false;\n\n    if (properties.builtInEncoding) {\n      // For Type1 fonts that do not include either `ToUnicode` or `Encoding`\n      // data, attempt to use the `builtInEncoding` to improve text selection.\n      adjustToUnicode(properties, properties.builtInEncoding);\n    }\n\n    // Type 1 fonts have a notdef inserted at the beginning, so glyph 0\n    // becomes glyph 1. In a CFF font glyph 0 is appended to the end of the\n    // char strings.\n    let glyphZeroId = 1;\n    if (font instanceof CFFFont) {\n      glyphZeroId = font.numGlyphs - 1;\n    }\n    const mapping = font.getGlyphMapping(properties);\n    let newMapping = null;\n    let newCharCodeToGlyphId = mapping;\n\n    // When `cssFontInfo` is set, the font is used to render text in the HTML\n    // view (e.g. with Xfa) so nothing must be moved in the private use area.\n    if (!properties.cssFontInfo) {\n      newMapping = adjustMapping(\n        mapping,\n        font.hasGlyphId.bind(font),\n        glyphZeroId\n      );\n      this.toFontChar = newMapping.toFontChar;\n      newCharCodeToGlyphId = newMapping.charCodeToGlyphId;\n    }\n    const numGlyphs = font.numGlyphs;\n\n    function getCharCodes(charCodeToGlyphId, glyphId) {\n      let charCodes = null;\n      for (const charCode in charCodeToGlyphId) {\n        if (glyphId === charCodeToGlyphId[charCode]) {\n          if (!charCodes) {\n            charCodes = [];\n          }\n          charCodes.push(charCode | 0);\n        }\n      }\n      return charCodes;\n    }\n\n    function createCharCode(charCodeToGlyphId, glyphId) {\n      for (const charCode in charCodeToGlyphId) {\n        if (glyphId === charCodeToGlyphId[charCode]) {\n          return charCode | 0;\n        }\n      }\n      newMapping.charCodeToGlyphId[newMapping.nextAvailableFontCharCode] =\n        glyphId;\n      return newMapping.nextAvailableFontCharCode++;\n    }\n\n    const seacs = font.seacs;\n    if (newMapping && SEAC_ANALYSIS_ENABLED && seacs && seacs.length) {\n      const matrix = properties.fontMatrix || FONT_IDENTITY_MATRIX;\n      const charset = font.getCharset();\n      const seacMap = Object.create(null);\n      for (let glyphId in seacs) {\n        glyphId |= 0;\n        const seac = seacs[glyphId];\n        const baseGlyphName = StandardEncoding[seac[2]];\n        const accentGlyphName = StandardEncoding[seac[3]];\n        const baseGlyphId = charset.indexOf(baseGlyphName);\n        const accentGlyphId = charset.indexOf(accentGlyphName);\n        if (baseGlyphId < 0 || accentGlyphId < 0) {\n          continue;\n        }\n        const accentOffset = {\n          x: seac[0] * matrix[0] + seac[1] * matrix[2] + matrix[4],\n          y: seac[0] * matrix[1] + seac[1] * matrix[3] + matrix[5],\n        };\n\n        const charCodes = getCharCodes(mapping, glyphId);\n        if (!charCodes) {\n          // There's no point in mapping it if the char code was never mapped\n          // to begin with.\n          continue;\n        }\n        for (let i = 0, ii = charCodes.length; i < ii; i++) {\n          const charCode = charCodes[i];\n          // Find a fontCharCode that maps to the base and accent glyphs.\n          // If one doesn't exists, create it.\n          const charCodeToGlyphId = newMapping.charCodeToGlyphId;\n          const baseFontCharCode = createCharCode(\n            charCodeToGlyphId,\n            baseGlyphId\n          );\n          const accentFontCharCode = createCharCode(\n            charCodeToGlyphId,\n            accentGlyphId\n          );\n          seacMap[charCode] = {\n            baseFontCharCode,\n            accentFontCharCode,\n            accentOffset,\n          };\n        }\n      }\n      properties.seacMap = seacMap;\n    }\n\n    const unitsPerEm = 1 / (properties.fontMatrix || FONT_IDENTITY_MATRIX)[0];\n\n    const builder = new OpenTypeFileBuilder(\"\\x4F\\x54\\x54\\x4F\");\n    // PostScript Font Program\n    builder.addTable(\"CFF \", font.data);\n    // OS/2 and Windows Specific metrics\n    builder.addTable(\"OS/2\", createOS2Table(properties, newCharCodeToGlyphId));\n    // Character to glyphs mapping\n    builder.addTable(\"cmap\", createCmapTable(newCharCodeToGlyphId, numGlyphs));\n    // Font header\n    builder.addTable(\n      \"head\",\n      \"\\x00\\x01\\x00\\x00\" + // Version number\n        \"\\x00\\x00\\x10\\x00\" + // fontRevision\n        \"\\x00\\x00\\x00\\x00\" + // checksumAdjustement\n        \"\\x5F\\x0F\\x3C\\xF5\" + // magicNumber\n        \"\\x00\\x00\" + // Flags\n        safeString16(unitsPerEm) + // unitsPerEM\n        \"\\x00\\x00\\x00\\x00\\x9e\\x0b\\x7e\\x27\" + // creation date\n        \"\\x00\\x00\\x00\\x00\\x9e\\x0b\\x7e\\x27\" + // modifification date\n        \"\\x00\\x00\" + // xMin\n        safeString16(properties.descent) + // yMin\n        \"\\x0F\\xFF\" + // xMax\n        safeString16(properties.ascent) + // yMax\n        string16(properties.italicAngle ? 2 : 0) + // macStyle\n        \"\\x00\\x11\" + // lowestRecPPEM\n        \"\\x00\\x00\" + // fontDirectionHint\n        \"\\x00\\x00\" + // indexToLocFormat\n        \"\\x00\\x00\"\n    ); // glyphDataFormat\n\n    // Horizontal header\n    builder.addTable(\n      \"hhea\",\n      \"\\x00\\x01\\x00\\x00\" + // Version number\n        safeString16(properties.ascent) + // Typographic Ascent\n        safeString16(properties.descent) + // Typographic Descent\n        \"\\x00\\x00\" + // Line Gap\n        \"\\xFF\\xFF\" + // advanceWidthMax\n        \"\\x00\\x00\" + // minLeftSidebearing\n        \"\\x00\\x00\" + // minRightSidebearing\n        \"\\x00\\x00\" + // xMaxExtent\n        safeString16(properties.capHeight) + // caretSlopeRise\n        safeString16(Math.tan(properties.italicAngle) * properties.xHeight) + // caretSlopeRun\n        \"\\x00\\x00\" + // caretOffset\n        \"\\x00\\x00\" + // -reserved-\n        \"\\x00\\x00\" + // -reserved-\n        \"\\x00\\x00\" + // -reserved-\n        \"\\x00\\x00\" + // -reserved-\n        \"\\x00\\x00\" + // metricDataFormat\n        string16(numGlyphs)\n    ); // Number of HMetrics\n\n    // Horizontal metrics\n    builder.addTable(\n      \"hmtx\",\n      (function fontFieldsHmtx() {\n        const charstrings = font.charstrings;\n        const cffWidths = font.cff ? font.cff.widths : null;\n        let hmtx = \"\\x00\\x00\\x00\\x00\"; // Fake .notdef\n        for (let i = 1, ii = numGlyphs; i < ii; i++) {\n          let width = 0;\n          if (charstrings) {\n            const charstring = charstrings[i - 1];\n            width = \"width\" in charstring ? charstring.width : 0;\n          } else if (cffWidths) {\n            width = Math.ceil(cffWidths[i] || 0);\n          }\n          hmtx += string16(width) + string16(0);\n        }\n        return hmtx;\n      })()\n    );\n\n    // Maximum profile\n    builder.addTable(\n      \"maxp\",\n      \"\\x00\\x00\\x50\\x00\" + string16(numGlyphs) // Version number\n    ); // Num of glyphs\n\n    // Naming tables\n    builder.addTable(\"name\", createNameTable(fontName));\n\n    // PostScript information\n    builder.addTable(\"post\", createPostTable(properties));\n\n    return builder.toArray();\n  }\n\n  get spaceWidth() {\n    // trying to estimate space character width\n    const possibleSpaceReplacements = [\"space\", \"minus\", \"one\", \"i\", \"I\"];\n    let width;\n    for (let i = 0, ii = possibleSpaceReplacements.length; i < ii; i++) {\n      const glyphName = possibleSpaceReplacements[i];\n      // if possible, getting width by glyph name\n      if (glyphName in this.widths) {\n        width = this.widths[glyphName];\n        break;\n      }\n      const glyphsUnicodeMap = getGlyphsUnicode();\n      const glyphUnicode = glyphsUnicodeMap[glyphName];\n      // finding the charcode via unicodeToCID map\n      let charcode = 0;\n      if (this.composite && this.cMap.contains(glyphUnicode)) {\n        charcode = this.cMap.lookup(glyphUnicode);\n\n        if (typeof charcode === \"string\") {\n          charcode = convertCidString(glyphUnicode, charcode);\n        }\n      }\n      // ... via toUnicode map\n      if (!charcode && this.toUnicode) {\n        charcode = this.toUnicode.charCodeOf(glyphUnicode);\n      }\n      // setting it to unicode if negative or undefined\n      if (charcode <= 0) {\n        charcode = glyphUnicode;\n      }\n      // trying to get width via charcode\n      width = this.widths[charcode];\n      if (width) {\n        break; // the non-zero width found\n      }\n    }\n    width = width || this.defaultWidth;\n    return shadow(this, \"spaceWidth\", width);\n  }\n\n  /**\n   * @private\n   */\n  _charToGlyph(charcode, isSpace = false) {\n    let fontCharCode, width, operatorListId;\n\n    let widthCode = charcode;\n    if (this.cMap && this.cMap.contains(charcode)) {\n      widthCode = this.cMap.lookup(charcode);\n\n      if (typeof widthCode === \"string\") {\n        widthCode = convertCidString(charcode, widthCode);\n      }\n    }\n    width = this.widths[widthCode];\n    width = isNum(width) ? width : this.defaultWidth;\n    const vmetric = this.vmetrics && this.vmetrics[widthCode];\n\n    let unicode = this.toUnicode.get(charcode) || charcode;\n    if (typeof unicode === \"number\") {\n      unicode = String.fromCharCode(unicode);\n    }\n\n    let isInFont = this.toFontChar[charcode] !== undefined;\n    // First try the toFontChar map, if it's not there then try falling\n    // back to the char code.\n    fontCharCode = this.toFontChar[charcode] || charcode;\n    if (this.missingFile) {\n      const glyphName =\n        this.differences[charcode] || this.defaultEncoding[charcode];\n      if (\n        (glyphName === \".notdef\" || glyphName === \"\") &&\n        this.type === \"Type1\"\n      ) {\n        // .notdef glyphs should be invisible in non-embedded Type1 fonts, so\n        // replace them with spaces.\n        fontCharCode = 0x20;\n      }\n      fontCharCode = mapSpecialUnicodeValues(fontCharCode);\n    }\n\n    if (this.isType3Font) {\n      // Font char code in this case is actually a glyph name.\n      operatorListId = fontCharCode;\n    }\n\n    let accent = null;\n    if (this.seacMap && this.seacMap[charcode]) {\n      isInFont = true;\n      const seac = this.seacMap[charcode];\n      fontCharCode = seac.baseFontCharCode;\n      accent = {\n        fontChar: String.fromCodePoint(seac.accentFontCharCode),\n        offset: seac.accentOffset,\n      };\n    }\n\n    let fontChar = \"\";\n    if (typeof fontCharCode === \"number\") {\n      if (fontCharCode <= 0x10ffff) {\n        fontChar = String.fromCodePoint(fontCharCode);\n      } else {\n        warn(`charToGlyph - invalid fontCharCode: ${fontCharCode}`);\n      }\n    }\n\n    let glyph = this._glyphCache[charcode];\n    if (\n      !glyph ||\n      !glyph.matchesForCache(\n        charcode,\n        fontChar,\n        unicode,\n        accent,\n        width,\n        vmetric,\n        operatorListId,\n        isSpace,\n        isInFont\n      )\n    ) {\n      glyph = new Glyph(\n        charcode,\n        fontChar,\n        unicode,\n        accent,\n        width,\n        vmetric,\n        operatorListId,\n        isSpace,\n        isInFont\n      );\n      this._glyphCache[charcode] = glyph;\n    }\n    return glyph;\n  }\n\n  charsToGlyphs(chars) {\n    // If we translated this string before, just grab it from the cache.\n    let glyphs = this._charsCache[chars];\n    if (glyphs) {\n      return glyphs;\n    }\n    glyphs = [];\n\n    if (this.cMap) {\n      // Composite fonts have multi-byte strings, convert the string from\n      // single-byte to multi-byte.\n      const c = Object.create(null),\n        ii = chars.length;\n      let i = 0;\n      while (i < ii) {\n        this.cMap.readCharCode(chars, i, c);\n        const { charcode, length } = c;\n        i += length;\n        // Space is char with code 0x20 and length 1 in multiple-byte codes.\n        const glyph = this._charToGlyph(\n          charcode,\n          length === 1 && chars.charCodeAt(i - 1) === 0x20\n        );\n        glyphs.push(glyph);\n      }\n    } else {\n      for (let i = 0, ii = chars.length; i < ii; ++i) {\n        const charcode = chars.charCodeAt(i);\n        const glyph = this._charToGlyph(charcode, charcode === 0x20);\n        glyphs.push(glyph);\n      }\n    }\n\n    // Enter the translated string into the cache.\n    return (this._charsCache[chars] = glyphs);\n  }\n\n  /**\n   * Chars can have different sizes (depends on the encoding).\n   * @param {String} a string encoded with font encoding.\n   * @returns {Array<Array<number>>} the positions of each char in the string.\n   */\n  getCharPositions(chars) {\n    // This function doesn't use a cache because\n    // it's called only when saving or printing.\n    const positions = [];\n\n    if (this.cMap) {\n      const c = Object.create(null);\n      let i = 0;\n      while (i < chars.length) {\n        this.cMap.readCharCode(chars, i, c);\n        const length = c.length;\n        positions.push([i, i + length]);\n        i += length;\n      }\n    } else {\n      for (let i = 0, ii = chars.length; i < ii; ++i) {\n        positions.push([i, i + 1]);\n      }\n    }\n\n    return positions;\n  }\n\n  get glyphCacheValues() {\n    return Object.values(this._glyphCache);\n  }\n\n  /**\n   * Encode a js string using font encoding.\n   * The resulting array contains an encoded string at even positions\n   * (can be empty) and a non-encoded one at odd positions.\n   * @param {String} a js string.\n   * @returns {Array<String>} an array of encoded strings or non-encoded ones.\n   */\n  encodeString(str) {\n    const buffers = [];\n    const currentBuf = [];\n\n    // buffers will contain: encoded, non-encoded, encoded, ...\n    // currentBuf is pushed in buffers each time there is a change.\n    // So when buffers.length is odd then the last string is an encoded one\n    // and currentBuf contains non-encoded chars.\n    const hasCurrentBufErrors = () => buffers.length % 2 === 1;\n\n    const getCharCode =\n      this.toUnicode instanceof IdentityToUnicodeMap\n        ? unicode => this.toUnicode.charCodeOf(unicode)\n        : unicode => this.toUnicode.charCodeOf(String.fromCodePoint(unicode));\n\n    for (let i = 0, ii = str.length; i < ii; i++) {\n      const unicode = str.codePointAt(i);\n      if (unicode > 0xd7ff && (unicode < 0xe000 || unicode > 0xfffd)) {\n        // unicode is represented by two uint16\n        i++;\n      }\n      if (this.toUnicode) {\n        const charCode = getCharCode(unicode);\n        if (charCode !== -1) {\n          if (hasCurrentBufErrors()) {\n            buffers.push(currentBuf.join(\"\"));\n            currentBuf.length = 0;\n          }\n          const charCodeLength = this.cMap\n            ? this.cMap.getCharCodeLength(charCode)\n            : 1;\n          for (let j = charCodeLength - 1; j >= 0; j--) {\n            currentBuf.push(String.fromCharCode((charCode >> (8 * j)) & 0xff));\n          }\n          continue;\n        }\n      }\n\n      // unicode can't be encoded\n      if (!hasCurrentBufErrors()) {\n        buffers.push(currentBuf.join(\"\"));\n        currentBuf.length = 0;\n      }\n      currentBuf.push(String.fromCodePoint(unicode));\n    }\n\n    buffers.push(currentBuf.join(\"\"));\n\n    return buffers;\n  }\n}\n\nclass ErrorFont {\n  constructor(error) {\n    this.error = error;\n    this.loadedName = \"g_font_error\";\n    this.missingFile = true;\n  }\n\n  charsToGlyphs() {\n    return [];\n  }\n\n  encodeString(chars) {\n    return [chars];\n  }\n\n  exportData(extraProperties = false) {\n    return { error: this.error };\n  }\n}\n\nexport { ErrorFont, Font };\n","/* Copyright 2016 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n  bytesToString,\n  FormatError,\n  info,\n  shadow,\n  stringToBytes,\n  Util,\n  warn,\n} from \"../shared/util.js\";\nimport {\n  ExpertCharset,\n  ExpertSubsetCharset,\n  ISOAdobeCharset,\n} from \"./charsets.js\";\nimport { ExpertEncoding, StandardEncoding } from \"./encodings.js\";\n\n// Maximum subroutine call depth of type 2 chartrings. Matches OTS.\nconst MAX_SUBR_NESTING = 10;\n\n/**\n * The CFF class takes a Type1 file and wrap it into a\n * 'Compact Font Format' which itself embed Type2 charstrings.\n */\n// prettier-ignore\nconst CFFStandardStrings = [\n  \".notdef\", \"space\", \"exclam\", \"quotedbl\", \"numbersign\", \"dollar\", \"percent\",\n  \"ampersand\", \"quoteright\", \"parenleft\", \"parenright\", \"asterisk\", \"plus\",\n  \"comma\", \"hyphen\", \"period\", \"slash\", \"zero\", \"one\", \"two\", \"three\", \"four\",\n  \"five\", \"six\", \"seven\", \"eight\", \"nine\", \"colon\", \"semicolon\", \"less\",\n  \"equal\", \"greater\", \"question\", \"at\", \"A\", \"B\", \"C\", \"D\", \"E\", \"F\", \"G\", \"H\",\n  \"I\", \"J\", \"K\", \"L\", \"M\", \"N\", \"O\", \"P\", \"Q\", \"R\", \"S\", \"T\", \"U\", \"V\", \"W\",\n  \"X\", \"Y\", \"Z\", \"bracketleft\", \"backslash\", \"bracketright\", \"asciicircum\",\n  \"underscore\", \"quoteleft\", \"a\", \"b\", \"c\", \"d\", \"e\", \"f\", \"g\", \"h\", \"i\", \"j\",\n  \"k\", \"l\", \"m\", \"n\", \"o\", \"p\", \"q\", \"r\", \"s\", \"t\", \"u\", \"v\", \"w\", \"x\", \"y\",\n  \"z\", \"braceleft\", \"bar\", \"braceright\", \"asciitilde\", \"exclamdown\", \"cent\",\n  \"sterling\", \"fraction\", \"yen\", \"florin\", \"section\", \"currency\",\n  \"quotesingle\", \"quotedblleft\", \"guillemotleft\", \"guilsinglleft\",\n  \"guilsinglright\", \"fi\", \"fl\", \"endash\", \"dagger\", \"daggerdbl\",\n  \"periodcentered\", \"paragraph\", \"bullet\", \"quotesinglbase\", \"quotedblbase\",\n  \"quotedblright\", \"guillemotright\", \"ellipsis\", \"perthousand\", \"questiondown\",\n  \"grave\", \"acute\", \"circumflex\", \"tilde\", \"macron\", \"breve\", \"dotaccent\",\n  \"dieresis\", \"ring\", \"cedilla\", \"hungarumlaut\", \"ogonek\", \"caron\", \"emdash\",\n  \"AE\", \"ordfeminine\", \"Lslash\", \"Oslash\", \"OE\", \"ordmasculine\", \"ae\",\n  \"dotlessi\", \"lslash\", \"oslash\", \"oe\", \"germandbls\", \"onesuperior\",\n  \"logicalnot\", \"mu\", \"trademark\", \"Eth\", \"onehalf\", \"plusminus\", \"Thorn\",\n  \"onequarter\", \"divide\", \"brokenbar\", \"degree\", \"thorn\", \"threequarters\",\n  \"twosuperior\", \"registered\", \"minus\", \"eth\", \"multiply\", \"threesuperior\",\n  \"copyright\", \"Aacute\", \"Acircumflex\", \"Adieresis\", \"Agrave\", \"Aring\",\n  \"Atilde\", \"Ccedilla\", \"Eacute\", \"Ecircumflex\", \"Edieresis\", \"Egrave\",\n  \"Iacute\", \"Icircumflex\", \"Idieresis\", \"Igrave\", \"Ntilde\", \"Oacute\",\n  \"Ocircumflex\", \"Odieresis\", \"Ograve\", \"Otilde\", \"Scaron\", \"Uacute\",\n  \"Ucircumflex\", \"Udieresis\", \"Ugrave\", \"Yacute\", \"Ydieresis\", \"Zcaron\",\n  \"aacute\", \"acircumflex\", \"adieresis\", \"agrave\", \"aring\", \"atilde\",\n  \"ccedilla\", \"eacute\", \"ecircumflex\", \"edieresis\", \"egrave\", \"iacute\",\n  \"icircumflex\", \"idieresis\", \"igrave\", \"ntilde\", \"oacute\", \"ocircumflex\",\n  \"odieresis\", \"ograve\", \"otilde\", \"scaron\", \"uacute\", \"ucircumflex\",\n  \"udieresis\", \"ugrave\", \"yacute\", \"ydieresis\", \"zcaron\", \"exclamsmall\",\n  \"Hungarumlautsmall\", \"dollaroldstyle\", \"dollarsuperior\", \"ampersandsmall\",\n  \"Acutesmall\", \"parenleftsuperior\", \"parenrightsuperior\", \"twodotenleader\",\n  \"onedotenleader\", \"zerooldstyle\", \"oneoldstyle\", \"twooldstyle\",\n  \"threeoldstyle\", \"fouroldstyle\", \"fiveoldstyle\", \"sixoldstyle\",\n  \"sevenoldstyle\", \"eightoldstyle\", \"nineoldstyle\", \"commasuperior\",\n  \"threequartersemdash\", \"periodsuperior\", \"questionsmall\", \"asuperior\",\n  \"bsuperior\", \"centsuperior\", \"dsuperior\", \"esuperior\", \"isuperior\",\n  \"lsuperior\", \"msuperior\", \"nsuperior\", \"osuperior\", \"rsuperior\", \"ssuperior\",\n  \"tsuperior\", \"ff\", \"ffi\", \"ffl\", \"parenleftinferior\", \"parenrightinferior\",\n  \"Circumflexsmall\", \"hyphensuperior\", \"Gravesmall\", \"Asmall\", \"Bsmall\",\n  \"Csmall\", \"Dsmall\", \"Esmall\", \"Fsmall\", \"Gsmall\", \"Hsmall\", \"Ismall\",\n  \"Jsmall\", \"Ksmall\", \"Lsmall\", \"Msmall\", \"Nsmall\", \"Osmall\", \"Psmall\",\n  \"Qsmall\", \"Rsmall\", \"Ssmall\", \"Tsmall\", \"Usmall\", \"Vsmall\", \"Wsmall\",\n  \"Xsmall\", \"Ysmall\", \"Zsmall\", \"colonmonetary\", \"onefitted\", \"rupiah\",\n  \"Tildesmall\", \"exclamdownsmall\", \"centoldstyle\", \"Lslashsmall\",\n  \"Scaronsmall\", \"Zcaronsmall\", \"Dieresissmall\", \"Brevesmall\", \"Caronsmall\",\n  \"Dotaccentsmall\", \"Macronsmall\", \"figuredash\", \"hypheninferior\",\n  \"Ogoneksmall\", \"Ringsmall\", \"Cedillasmall\", \"questiondownsmall\", \"oneeighth\",\n  \"threeeighths\", \"fiveeighths\", \"seveneighths\", \"onethird\", \"twothirds\",\n  \"zerosuperior\", \"foursuperior\", \"fivesuperior\", \"sixsuperior\",\n  \"sevensuperior\", \"eightsuperior\", \"ninesuperior\", \"zeroinferior\",\n  \"oneinferior\", \"twoinferior\", \"threeinferior\", \"fourinferior\",\n  \"fiveinferior\", \"sixinferior\", \"seveninferior\", \"eightinferior\",\n  \"nineinferior\", \"centinferior\", \"dollarinferior\", \"periodinferior\",\n  \"commainferior\", \"Agravesmall\", \"Aacutesmall\", \"Acircumflexsmall\",\n  \"Atildesmall\", \"Adieresissmall\", \"Aringsmall\", \"AEsmall\", \"Ccedillasmall\",\n  \"Egravesmall\", \"Eacutesmall\", \"Ecircumflexsmall\", \"Edieresissmall\",\n  \"Igravesmall\", \"Iacutesmall\", \"Icircumflexsmall\", \"Idieresissmall\",\n  \"Ethsmall\", \"Ntildesmall\", \"Ogravesmall\", \"Oacutesmall\", \"Ocircumflexsmall\",\n  \"Otildesmall\", \"Odieresissmall\", \"OEsmall\", \"Oslashsmall\", \"Ugravesmall\",\n  \"Uacutesmall\", \"Ucircumflexsmall\", \"Udieresissmall\", \"Yacutesmall\",\n  \"Thornsmall\", \"Ydieresissmall\", \"001.000\", \"001.001\", \"001.002\", \"001.003\",\n  \"Black\", \"Bold\", \"Book\", \"Light\", \"Medium\", \"Regular\", \"Roman\", \"Semibold\"\n];\n\nconst NUM_STANDARD_CFF_STRINGS = 391;\n\nconst CFFParser = (function CFFParserClosure() {\n  const CharstringValidationData = [\n    null,\n    { id: \"hstem\", min: 2, stackClearing: true, stem: true },\n    null,\n    { id: \"vstem\", min: 2, stackClearing: true, stem: true },\n    { id: \"vmoveto\", min: 1, stackClearing: true },\n    { id: \"rlineto\", min: 2, resetStack: true },\n    { id: \"hlineto\", min: 1, resetStack: true },\n    { id: \"vlineto\", min: 1, resetStack: true },\n    { id: \"rrcurveto\", min: 6, resetStack: true },\n    null,\n    { id: \"callsubr\", min: 1, undefStack: true },\n    { id: \"return\", min: 0, undefStack: true },\n    null, // 12\n    null,\n    { id: \"endchar\", min: 0, stackClearing: true },\n    null,\n    null,\n    null,\n    { id: \"hstemhm\", min: 2, stackClearing: true, stem: true },\n    { id: \"hintmask\", min: 0, stackClearing: true },\n    { id: \"cntrmask\", min: 0, stackClearing: true },\n    { id: \"rmoveto\", min: 2, stackClearing: true },\n    { id: \"hmoveto\", min: 1, stackClearing: true },\n    { id: \"vstemhm\", min: 2, stackClearing: true, stem: true },\n    { id: \"rcurveline\", min: 8, resetStack: true },\n    { id: \"rlinecurve\", min: 8, resetStack: true },\n    { id: \"vvcurveto\", min: 4, resetStack: true },\n    { id: \"hhcurveto\", min: 4, resetStack: true },\n    null, // shortint\n    { id: \"callgsubr\", min: 1, undefStack: true },\n    { id: \"vhcurveto\", min: 4, resetStack: true },\n    { id: \"hvcurveto\", min: 4, resetStack: true },\n  ];\n  const CharstringValidationData12 = [\n    null,\n    null,\n    null,\n    { id: \"and\", min: 2, stackDelta: -1 },\n    { id: \"or\", min: 2, stackDelta: -1 },\n    { id: \"not\", min: 1, stackDelta: 0 },\n    null,\n    null,\n    null,\n    { id: \"abs\", min: 1, stackDelta: 0 },\n    {\n      id: \"add\",\n      min: 2,\n      stackDelta: -1,\n      stackFn: function stack_div(stack, index) {\n        stack[index - 2] = stack[index - 2] + stack[index - 1];\n      },\n    },\n    {\n      id: \"sub\",\n      min: 2,\n      stackDelta: -1,\n      stackFn: function stack_div(stack, index) {\n        stack[index - 2] = stack[index - 2] - stack[index - 1];\n      },\n    },\n    {\n      id: \"div\",\n      min: 2,\n      stackDelta: -1,\n      stackFn: function stack_div(stack, index) {\n        stack[index - 2] = stack[index - 2] / stack[index - 1];\n      },\n    },\n    null,\n    {\n      id: \"neg\",\n      min: 1,\n      stackDelta: 0,\n      stackFn: function stack_div(stack, index) {\n        stack[index - 1] = -stack[index - 1];\n      },\n    },\n    { id: \"eq\", min: 2, stackDelta: -1 },\n    null,\n    null,\n    { id: \"drop\", min: 1, stackDelta: -1 },\n    null,\n    { id: \"put\", min: 2, stackDelta: -2 },\n    { id: \"get\", min: 1, stackDelta: 0 },\n    { id: \"ifelse\", min: 4, stackDelta: -3 },\n    { id: \"random\", min: 0, stackDelta: 1 },\n    {\n      id: \"mul\",\n      min: 2,\n      stackDelta: -1,\n      stackFn: function stack_div(stack, index) {\n        stack[index - 2] = stack[index - 2] * stack[index - 1];\n      },\n    },\n    null,\n    { id: \"sqrt\", min: 1, stackDelta: 0 },\n    { id: \"dup\", min: 1, stackDelta: 1 },\n    { id: \"exch\", min: 2, stackDelta: 0 },\n    { id: \"index\", min: 2, stackDelta: 0 },\n    { id: \"roll\", min: 3, stackDelta: -2 },\n    null,\n    null,\n    null,\n    { id: \"hflex\", min: 7, resetStack: true },\n    { id: \"flex\", min: 13, resetStack: true },\n    { id: \"hflex1\", min: 9, resetStack: true },\n    { id: \"flex1\", min: 11, resetStack: true },\n  ];\n\n  // eslint-disable-next-line no-shadow\n  class CFFParser {\n    constructor(file, properties, seacAnalysisEnabled) {\n      this.bytes = file.getBytes();\n      this.properties = properties;\n      this.seacAnalysisEnabled = !!seacAnalysisEnabled;\n    }\n\n    parse() {\n      const properties = this.properties;\n      const cff = new CFF();\n      this.cff = cff;\n\n      // The first five sections must be in order, all the others are reached\n      // via offsets contained in one of the below.\n      const header = this.parseHeader();\n      const nameIndex = this.parseIndex(header.endPos);\n      const topDictIndex = this.parseIndex(nameIndex.endPos);\n      const stringIndex = this.parseIndex(topDictIndex.endPos);\n      const globalSubrIndex = this.parseIndex(stringIndex.endPos);\n\n      const topDictParsed = this.parseDict(topDictIndex.obj.get(0));\n      const topDict = this.createDict(CFFTopDict, topDictParsed, cff.strings);\n\n      cff.header = header.obj;\n      cff.names = this.parseNameIndex(nameIndex.obj);\n      cff.strings = this.parseStringIndex(stringIndex.obj);\n      cff.topDict = topDict;\n      cff.globalSubrIndex = globalSubrIndex.obj;\n\n      this.parsePrivateDict(cff.topDict);\n\n      cff.isCIDFont = topDict.hasName(\"ROS\");\n\n      const charStringOffset = topDict.getByName(\"CharStrings\");\n      const charStringIndex = this.parseIndex(charStringOffset).obj;\n\n      const fontMatrix = topDict.getByName(\"FontMatrix\");\n      if (fontMatrix) {\n        properties.fontMatrix = fontMatrix;\n      }\n\n      const fontBBox = topDict.getByName(\"FontBBox\");\n      if (fontBBox) {\n        // adjusting ascent/descent\n        properties.ascent = Math.max(fontBBox[3], fontBBox[1]);\n        properties.descent = Math.min(fontBBox[1], fontBBox[3]);\n        properties.ascentScaled = true;\n      }\n\n      let charset, encoding;\n      if (cff.isCIDFont) {\n        const fdArrayIndex = this.parseIndex(topDict.getByName(\"FDArray\")).obj;\n        for (let i = 0, ii = fdArrayIndex.count; i < ii; ++i) {\n          const dictRaw = fdArrayIndex.get(i);\n          const fontDict = this.createDict(\n            CFFTopDict,\n            this.parseDict(dictRaw),\n            cff.strings\n          );\n          this.parsePrivateDict(fontDict);\n          cff.fdArray.push(fontDict);\n        }\n        // cid fonts don't have an encoding\n        encoding = null;\n        charset = this.parseCharsets(\n          topDict.getByName(\"charset\"),\n          charStringIndex.count,\n          cff.strings,\n          true\n        );\n        cff.fdSelect = this.parseFDSelect(\n          topDict.getByName(\"FDSelect\"),\n          charStringIndex.count\n        );\n      } else {\n        charset = this.parseCharsets(\n          topDict.getByName(\"charset\"),\n          charStringIndex.count,\n          cff.strings,\n          false\n        );\n        encoding = this.parseEncoding(\n          topDict.getByName(\"Encoding\"),\n          properties,\n          cff.strings,\n          charset.charset\n        );\n      }\n\n      cff.charset = charset;\n      cff.encoding = encoding;\n\n      const charStringsAndSeacs = this.parseCharStrings({\n        charStrings: charStringIndex,\n        localSubrIndex: topDict.privateDict.subrsIndex,\n        globalSubrIndex: globalSubrIndex.obj,\n        fdSelect: cff.fdSelect,\n        fdArray: cff.fdArray,\n        privateDict: topDict.privateDict,\n      });\n      cff.charStrings = charStringsAndSeacs.charStrings;\n      cff.seacs = charStringsAndSeacs.seacs;\n      cff.widths = charStringsAndSeacs.widths;\n\n      return cff;\n    }\n\n    parseHeader() {\n      let bytes = this.bytes;\n      const bytesLength = bytes.length;\n      let offset = 0;\n\n      // Prevent an infinite loop, by checking that the offset is within the\n      // bounds of the bytes array. Necessary in empty, or invalid, font files.\n      while (offset < bytesLength && bytes[offset] !== 1) {\n        ++offset;\n      }\n      if (offset >= bytesLength) {\n        throw new FormatError(\"Invalid CFF header\");\n      }\n      if (offset !== 0) {\n        info(\"cff data is shifted\");\n        bytes = bytes.subarray(offset);\n        this.bytes = bytes;\n      }\n      const major = bytes[0];\n      const minor = bytes[1];\n      const hdrSize = bytes[2];\n      const offSize = bytes[3];\n      const header = new CFFHeader(major, minor, hdrSize, offSize);\n      return { obj: header, endPos: hdrSize };\n    }\n\n    parseDict(dict) {\n      let pos = 0;\n\n      function parseOperand() {\n        let value = dict[pos++];\n        if (value === 30) {\n          return parseFloatOperand();\n        } else if (value === 28) {\n          value = dict[pos++];\n          value = ((value << 24) | (dict[pos++] << 16)) >> 16;\n          return value;\n        } else if (value === 29) {\n          value = dict[pos++];\n          value = (value << 8) | dict[pos++];\n          value = (value << 8) | dict[pos++];\n          value = (value << 8) | dict[pos++];\n          return value;\n        } else if (value >= 32 && value <= 246) {\n          return value - 139;\n        } else if (value >= 247 && value <= 250) {\n          return (value - 247) * 256 + dict[pos++] + 108;\n        } else if (value >= 251 && value <= 254) {\n          return -((value - 251) * 256) - dict[pos++] - 108;\n        }\n        warn('CFFParser_parseDict: \"' + value + '\" is a reserved command.');\n        return NaN;\n      }\n\n      function parseFloatOperand() {\n        let str = \"\";\n        const eof = 15;\n        // prettier-ignore\n        const lookup = [\"0\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\",\n                        \"9\", \".\", \"E\", \"E-\", null, \"-\"];\n        const length = dict.length;\n        while (pos < length) {\n          const b = dict[pos++];\n          const b1 = b >> 4;\n          const b2 = b & 15;\n\n          if (b1 === eof) {\n            break;\n          }\n          str += lookup[b1];\n\n          if (b2 === eof) {\n            break;\n          }\n          str += lookup[b2];\n        }\n        return parseFloat(str);\n      }\n\n      let operands = [];\n      const entries = [];\n\n      pos = 0;\n      const end = dict.length;\n      while (pos < end) {\n        let b = dict[pos];\n        if (b <= 21) {\n          if (b === 12) {\n            b = (b << 8) | dict[++pos];\n          }\n          entries.push([b, operands]);\n          operands = [];\n          ++pos;\n        } else {\n          operands.push(parseOperand());\n        }\n      }\n      return entries;\n    }\n\n    parseIndex(pos) {\n      const cffIndex = new CFFIndex();\n      const bytes = this.bytes;\n      const count = (bytes[pos++] << 8) | bytes[pos++];\n      const offsets = [];\n      let end = pos;\n      let i, ii;\n\n      if (count !== 0) {\n        const offsetSize = bytes[pos++];\n        // add 1 for offset to determine size of last object\n        const startPos = pos + (count + 1) * offsetSize - 1;\n\n        for (i = 0, ii = count + 1; i < ii; ++i) {\n          let offset = 0;\n          for (let j = 0; j < offsetSize; ++j) {\n            offset <<= 8;\n            offset += bytes[pos++];\n          }\n          offsets.push(startPos + offset);\n        }\n        end = offsets[count];\n      }\n      for (i = 0, ii = offsets.length - 1; i < ii; ++i) {\n        const offsetStart = offsets[i];\n        const offsetEnd = offsets[i + 1];\n        cffIndex.add(bytes.subarray(offsetStart, offsetEnd));\n      }\n      return { obj: cffIndex, endPos: end };\n    }\n\n    parseNameIndex(index) {\n      const names = [];\n      for (let i = 0, ii = index.count; i < ii; ++i) {\n        const name = index.get(i);\n        names.push(bytesToString(name));\n      }\n      return names;\n    }\n\n    parseStringIndex(index) {\n      const strings = new CFFStrings();\n      for (let i = 0, ii = index.count; i < ii; ++i) {\n        const data = index.get(i);\n        strings.add(bytesToString(data));\n      }\n      return strings;\n    }\n\n    createDict(Type, dict, strings) {\n      const cffDict = new Type(strings);\n      for (let i = 0, ii = dict.length; i < ii; ++i) {\n        const pair = dict[i];\n        const key = pair[0];\n        const value = pair[1];\n        cffDict.setByKey(key, value);\n      }\n      return cffDict;\n    }\n\n    parseCharString(state, data, localSubrIndex, globalSubrIndex) {\n      if (!data || state.callDepth > MAX_SUBR_NESTING) {\n        return false;\n      }\n      let stackSize = state.stackSize;\n      const stack = state.stack;\n\n      const length = data.length;\n\n      for (let j = 0; j < length; ) {\n        const value = data[j++];\n        let validationCommand = null;\n        if (value === 12) {\n          const q = data[j++];\n          if (q === 0) {\n            // The CFF specification state that the 'dotsection' command\n            // (12, 0) is deprecated and treated as a no-op, but all Type2\n            // charstrings processors should support them. Unfortunately\n            // the font sanitizer don't. As a workaround the sequence (12, 0)\n            // is replaced by a useless (0, hmoveto).\n            data[j - 2] = 139;\n            data[j - 1] = 22;\n            stackSize = 0;\n          } else {\n            validationCommand = CharstringValidationData12[q];\n          }\n        } else if (value === 28) {\n          // number (16 bit)\n          stack[stackSize] = ((data[j] << 24) | (data[j + 1] << 16)) >> 16;\n          j += 2;\n          stackSize++;\n        } else if (value === 14) {\n          if (stackSize >= 4) {\n            stackSize -= 4;\n            if (this.seacAnalysisEnabled) {\n              state.seac = stack.slice(stackSize, stackSize + 4);\n              return false;\n            }\n          }\n          validationCommand = CharstringValidationData[value];\n        } else if (value >= 32 && value <= 246) {\n          // number\n          stack[stackSize] = value - 139;\n          stackSize++;\n        } else if (value >= 247 && value <= 254) {\n          // number (+1 bytes)\n          stack[stackSize] =\n            value < 251\n              ? ((value - 247) << 8) + data[j] + 108\n              : -((value - 251) << 8) - data[j] - 108;\n          j++;\n          stackSize++;\n        } else if (value === 255) {\n          // number (32 bit)\n          stack[stackSize] =\n            ((data[j] << 24) |\n              (data[j + 1] << 16) |\n              (data[j + 2] << 8) |\n              data[j + 3]) /\n            65536;\n          j += 4;\n          stackSize++;\n        } else if (value === 19 || value === 20) {\n          state.hints += stackSize >> 1;\n          // skipping right amount of hints flag data\n          j += (state.hints + 7) >> 3;\n          stackSize %= 2;\n          validationCommand = CharstringValidationData[value];\n        } else if (value === 10 || value === 29) {\n          let subrsIndex;\n          if (value === 10) {\n            subrsIndex = localSubrIndex;\n          } else {\n            subrsIndex = globalSubrIndex;\n          }\n          if (!subrsIndex) {\n            validationCommand = CharstringValidationData[value];\n            warn(\"Missing subrsIndex for \" + validationCommand.id);\n            return false;\n          }\n          let bias = 32768;\n          if (subrsIndex.count < 1240) {\n            bias = 107;\n          } else if (subrsIndex.count < 33900) {\n            bias = 1131;\n          }\n          const subrNumber = stack[--stackSize] + bias;\n          if (\n            subrNumber < 0 ||\n            subrNumber >= subrsIndex.count ||\n            isNaN(subrNumber)\n          ) {\n            validationCommand = CharstringValidationData[value];\n            warn(\"Out of bounds subrIndex for \" + validationCommand.id);\n            return false;\n          }\n          state.stackSize = stackSize;\n          state.callDepth++;\n          const valid = this.parseCharString(\n            state,\n            subrsIndex.get(subrNumber),\n            localSubrIndex,\n            globalSubrIndex\n          );\n          if (!valid) {\n            return false;\n          }\n          state.callDepth--;\n          stackSize = state.stackSize;\n          continue;\n        } else if (value === 11) {\n          state.stackSize = stackSize;\n          return true;\n        } else if (value === 0 && j === data.length) {\n          // Operator 0 is not used according to the current spec and\n          // it's the last char and consequently it's likely a terminator.\n          // So just replace it by endchar command to make OTS happy.\n          data[j - 1] = 14;\n          validationCommand = CharstringValidationData[14];\n        } else {\n          validationCommand = CharstringValidationData[value];\n        }\n        if (validationCommand) {\n          if (validationCommand.stem) {\n            state.hints += stackSize >> 1;\n            if (value === 3 || value === 23) {\n              // vstem or vstemhm.\n              state.hasVStems = true;\n            } else if (state.hasVStems && (value === 1 || value === 18)) {\n              // Some browsers don't draw glyphs that specify vstems before\n              // hstems. As a workaround, replace hstem (1) and hstemhm (18)\n              // with a pointless vstem (3) or vstemhm (23).\n              warn(\"CFF stem hints are in wrong order\");\n              data[j - 1] = value === 1 ? 3 : 23;\n            }\n          }\n          if (\"min\" in validationCommand) {\n            if (!state.undefStack && stackSize < validationCommand.min) {\n              warn(\n                \"Not enough parameters for \" +\n                  validationCommand.id +\n                  \"; actual: \" +\n                  stackSize +\n                  \", expected: \" +\n                  validationCommand.min\n              );\n\n              if (stackSize === 0) {\n                // Just \"fix\" the outline in replacing command by a endchar:\n                // it could lead to wrong rendering of some glyphs or not.\n                // For example, the pdf in #6132 is well-rendered.\n                data[j - 1] = 14;\n                return true;\n              }\n              return false;\n            }\n          }\n          if (state.firstStackClearing && validationCommand.stackClearing) {\n            state.firstStackClearing = false;\n            // the optional character width can be found before the first\n            // stack-clearing command arguments\n            stackSize -= validationCommand.min;\n            if (stackSize >= 2 && validationCommand.stem) {\n              // there are even amount of arguments for stem commands\n              stackSize %= 2;\n            } else if (stackSize > 1) {\n              warn(\"Found too many parameters for stack-clearing command\");\n            }\n            if (stackSize > 0) {\n              // Width can be any number since its the difference\n              // from nominalWidthX.\n              state.width = stack[stackSize - 1];\n            }\n          }\n          if (\"stackDelta\" in validationCommand) {\n            if (\"stackFn\" in validationCommand) {\n              validationCommand.stackFn(stack, stackSize);\n            }\n            stackSize += validationCommand.stackDelta;\n          } else if (validationCommand.stackClearing) {\n            stackSize = 0;\n          } else if (validationCommand.resetStack) {\n            stackSize = 0;\n            state.undefStack = false;\n          } else if (validationCommand.undefStack) {\n            stackSize = 0;\n            state.undefStack = true;\n            state.firstStackClearing = false;\n          }\n        }\n      }\n      state.stackSize = stackSize;\n      return true;\n    }\n\n    parseCharStrings({\n      charStrings,\n      localSubrIndex,\n      globalSubrIndex,\n      fdSelect,\n      fdArray,\n      privateDict,\n    }) {\n      const seacs = [];\n      const widths = [];\n      const count = charStrings.count;\n      for (let i = 0; i < count; i++) {\n        const charstring = charStrings.get(i);\n        const state = {\n          callDepth: 0,\n          stackSize: 0,\n          stack: [],\n          undefStack: true,\n          hints: 0,\n          firstStackClearing: true,\n          seac: null,\n          width: null,\n          hasVStems: false,\n        };\n        let valid = true;\n        let localSubrToUse = null;\n        let privateDictToUse = privateDict;\n        if (fdSelect && fdArray.length) {\n          const fdIndex = fdSelect.getFDIndex(i);\n          if (fdIndex === -1) {\n            warn(\"Glyph index is not in fd select.\");\n            valid = false;\n          }\n          if (fdIndex >= fdArray.length) {\n            warn(\"Invalid fd index for glyph index.\");\n            valid = false;\n          }\n          if (valid) {\n            privateDictToUse = fdArray[fdIndex].privateDict;\n            localSubrToUse = privateDictToUse.subrsIndex;\n          }\n        } else if (localSubrIndex) {\n          localSubrToUse = localSubrIndex;\n        }\n        if (valid) {\n          valid = this.parseCharString(\n            state,\n            charstring,\n            localSubrToUse,\n            globalSubrIndex\n          );\n        }\n        if (state.width !== null) {\n          const nominalWidth = privateDictToUse.getByName(\"nominalWidthX\");\n          widths[i] = nominalWidth + state.width;\n        } else {\n          const defaultWidth = privateDictToUse.getByName(\"defaultWidthX\");\n          widths[i] = defaultWidth;\n        }\n        if (state.seac !== null) {\n          seacs[i] = state.seac;\n        }\n        if (!valid) {\n          // resetting invalid charstring to single 'endchar'\n          charStrings.set(i, new Uint8Array([14]));\n        }\n      }\n      return { charStrings, seacs, widths };\n    }\n\n    emptyPrivateDictionary(parentDict) {\n      const privateDict = this.createDict(\n        CFFPrivateDict,\n        [],\n        parentDict.strings\n      );\n      parentDict.setByKey(18, [0, 0]);\n      parentDict.privateDict = privateDict;\n    }\n\n    parsePrivateDict(parentDict) {\n      // no private dict, do nothing\n      if (!parentDict.hasName(\"Private\")) {\n        this.emptyPrivateDictionary(parentDict);\n        return;\n      }\n      const privateOffset = parentDict.getByName(\"Private\");\n      // make sure the params are formatted correctly\n      if (!Array.isArray(privateOffset) || privateOffset.length !== 2) {\n        parentDict.removeByName(\"Private\");\n        return;\n      }\n      const size = privateOffset[0];\n      const offset = privateOffset[1];\n      // remove empty dicts or ones that refer to invalid location\n      if (size === 0 || offset >= this.bytes.length) {\n        this.emptyPrivateDictionary(parentDict);\n        return;\n      }\n\n      const privateDictEnd = offset + size;\n      const dictData = this.bytes.subarray(offset, privateDictEnd);\n      const dict = this.parseDict(dictData);\n      const privateDict = this.createDict(\n        CFFPrivateDict,\n        dict,\n        parentDict.strings\n      );\n      parentDict.privateDict = privateDict;\n\n      // Parse the Subrs index also since it's relative to the private dict.\n      if (!privateDict.getByName(\"Subrs\")) {\n        return;\n      }\n      const subrsOffset = privateDict.getByName(\"Subrs\");\n      const relativeOffset = offset + subrsOffset;\n      // Validate the offset.\n      if (subrsOffset === 0 || relativeOffset >= this.bytes.length) {\n        this.emptyPrivateDictionary(parentDict);\n        return;\n      }\n      const subrsIndex = this.parseIndex(relativeOffset);\n      privateDict.subrsIndex = subrsIndex.obj;\n    }\n\n    parseCharsets(pos, length, strings, cid) {\n      if (pos === 0) {\n        return new CFFCharset(\n          true,\n          CFFCharsetPredefinedTypes.ISO_ADOBE,\n          ISOAdobeCharset\n        );\n      } else if (pos === 1) {\n        return new CFFCharset(\n          true,\n          CFFCharsetPredefinedTypes.EXPERT,\n          ExpertCharset\n        );\n      } else if (pos === 2) {\n        return new CFFCharset(\n          true,\n          CFFCharsetPredefinedTypes.EXPERT_SUBSET,\n          ExpertSubsetCharset\n        );\n      }\n\n      const bytes = this.bytes;\n      const start = pos;\n      const format = bytes[pos++];\n      const charset = [cid ? 0 : \".notdef\"];\n      let id, count, i;\n\n      // subtract 1 for the .notdef glyph\n      length -= 1;\n\n      switch (format) {\n        case 0:\n          for (i = 0; i < length; i++) {\n            id = (bytes[pos++] << 8) | bytes[pos++];\n            charset.push(cid ? id : strings.get(id));\n          }\n          break;\n        case 1:\n          while (charset.length <= length) {\n            id = (bytes[pos++] << 8) | bytes[pos++];\n            count = bytes[pos++];\n            for (i = 0; i <= count; i++) {\n              charset.push(cid ? id++ : strings.get(id++));\n            }\n          }\n          break;\n        case 2:\n          while (charset.length <= length) {\n            id = (bytes[pos++] << 8) | bytes[pos++];\n            count = (bytes[pos++] << 8) | bytes[pos++];\n            for (i = 0; i <= count; i++) {\n              charset.push(cid ? id++ : strings.get(id++));\n            }\n          }\n          break;\n        default:\n          throw new FormatError(\"Unknown charset format\");\n      }\n      // Raw won't be needed if we actually compile the charset.\n      const end = pos;\n      const raw = bytes.subarray(start, end);\n\n      return new CFFCharset(false, format, charset, raw);\n    }\n\n    parseEncoding(pos, properties, strings, charset) {\n      const encoding = Object.create(null);\n      const bytes = this.bytes;\n      let predefined = false;\n      let format, i, ii;\n      let raw = null;\n\n      function readSupplement() {\n        const supplementsCount = bytes[pos++];\n        for (i = 0; i < supplementsCount; i++) {\n          const code = bytes[pos++];\n          const sid = (bytes[pos++] << 8) + (bytes[pos++] & 0xff);\n          encoding[code] = charset.indexOf(strings.get(sid));\n        }\n      }\n\n      if (pos === 0 || pos === 1) {\n        predefined = true;\n        format = pos;\n        const baseEncoding = pos ? ExpertEncoding : StandardEncoding;\n        for (i = 0, ii = charset.length; i < ii; i++) {\n          const index = baseEncoding.indexOf(charset[i]);\n          if (index !== -1) {\n            encoding[index] = i;\n          }\n        }\n      } else {\n        const dataStart = pos;\n        format = bytes[pos++];\n        switch (format & 0x7f) {\n          case 0:\n            const glyphsCount = bytes[pos++];\n            for (i = 1; i <= glyphsCount; i++) {\n              encoding[bytes[pos++]] = i;\n            }\n            break;\n\n          case 1:\n            const rangesCount = bytes[pos++];\n            let gid = 1;\n            for (i = 0; i < rangesCount; i++) {\n              const start = bytes[pos++];\n              const left = bytes[pos++];\n              for (let j = start; j <= start + left; j++) {\n                encoding[j] = gid++;\n              }\n            }\n            break;\n\n          default:\n            throw new FormatError(`Unknown encoding format: ${format} in CFF`);\n        }\n        const dataEnd = pos;\n        if (format & 0x80) {\n          // hasSupplement\n          // The font sanitizer does not support CFF encoding with a\n          // supplement, since the encoding is not really used to map\n          // between gid to glyph, let's overwrite what is declared in\n          // the top dictionary to let the sanitizer think the font use\n          // StandardEncoding, that's a lie but that's ok.\n          bytes[dataStart] &= 0x7f;\n          readSupplement();\n        }\n        raw = bytes.subarray(dataStart, dataEnd);\n      }\n      format &= 0x7f;\n      return new CFFEncoding(predefined, format, encoding, raw);\n    }\n\n    parseFDSelect(pos, length) {\n      const bytes = this.bytes;\n      const format = bytes[pos++];\n      const fdSelect = [];\n      let i;\n\n      switch (format) {\n        case 0:\n          for (i = 0; i < length; ++i) {\n            const id = bytes[pos++];\n            fdSelect.push(id);\n          }\n          break;\n        case 3:\n          const rangesCount = (bytes[pos++] << 8) | bytes[pos++];\n          for (i = 0; i < rangesCount; ++i) {\n            let first = (bytes[pos++] << 8) | bytes[pos++];\n            if (i === 0 && first !== 0) {\n              warn(\n                \"parseFDSelect: The first range must have a first GID of 0\" +\n                  \" -- trying to recover.\"\n              );\n              first = 0;\n            }\n            const fdIndex = bytes[pos++];\n            const next = (bytes[pos] << 8) | bytes[pos + 1];\n            for (let j = first; j < next; ++j) {\n              fdSelect.push(fdIndex);\n            }\n          }\n          // Advance past the sentinel(next).\n          pos += 2;\n          break;\n        default:\n          throw new FormatError(`parseFDSelect: Unknown format \"${format}\".`);\n      }\n      if (fdSelect.length !== length) {\n        throw new FormatError(\"parseFDSelect: Invalid font data.\");\n      }\n\n      return new CFFFDSelect(format, fdSelect);\n    }\n  }\n  return CFFParser;\n})();\n\n// Compact Font Format\nclass CFF {\n  constructor() {\n    this.header = null;\n    this.names = [];\n    this.topDict = null;\n    this.strings = new CFFStrings();\n    this.globalSubrIndex = null;\n\n    // The following could really be per font, but since we only have one font\n    // store them here.\n    this.encoding = null;\n    this.charset = null;\n    this.charStrings = null;\n    this.fdArray = [];\n    this.fdSelect = null;\n\n    this.isCIDFont = false;\n  }\n\n  duplicateFirstGlyph() {\n    // Browsers will not display a glyph at position 0. Typically glyph 0 is\n    // notdef, but a number of fonts put a valid glyph there so it must be\n    // duplicated and appended.\n    if (this.charStrings.count >= 65535) {\n      warn(\"Not enough space in charstrings to duplicate first glyph.\");\n      return;\n    }\n    const glyphZero = this.charStrings.get(0);\n    this.charStrings.add(glyphZero);\n    if (this.isCIDFont) {\n      this.fdSelect.fdSelect.push(this.fdSelect.fdSelect[0]);\n    }\n  }\n\n  hasGlyphId(id) {\n    if (id < 0 || id >= this.charStrings.count) {\n      return false;\n    }\n    const glyph = this.charStrings.get(id);\n    return glyph.length > 0;\n  }\n}\n\nclass CFFHeader {\n  constructor(major, minor, hdrSize, offSize) {\n    this.major = major;\n    this.minor = minor;\n    this.hdrSize = hdrSize;\n    this.offSize = offSize;\n  }\n}\n\nclass CFFStrings {\n  constructor() {\n    this.strings = [];\n  }\n\n  get(index) {\n    if (index >= 0 && index <= NUM_STANDARD_CFF_STRINGS - 1) {\n      return CFFStandardStrings[index];\n    }\n    if (index - NUM_STANDARD_CFF_STRINGS <= this.strings.length) {\n      return this.strings[index - NUM_STANDARD_CFF_STRINGS];\n    }\n    return CFFStandardStrings[0];\n  }\n\n  getSID(str) {\n    let index = CFFStandardStrings.indexOf(str);\n    if (index !== -1) {\n      return index;\n    }\n    index = this.strings.indexOf(str);\n    if (index !== -1) {\n      return index + NUM_STANDARD_CFF_STRINGS;\n    }\n    return -1;\n  }\n\n  add(value) {\n    this.strings.push(value);\n  }\n\n  get count() {\n    return this.strings.length;\n  }\n}\n\nclass CFFIndex {\n  constructor() {\n    this.objects = [];\n    this.length = 0;\n  }\n\n  add(data) {\n    this.length += data.length;\n    this.objects.push(data);\n  }\n\n  set(index, data) {\n    this.length += data.length - this.objects[index].length;\n    this.objects[index] = data;\n  }\n\n  get(index) {\n    return this.objects[index];\n  }\n\n  get count() {\n    return this.objects.length;\n  }\n}\n\nclass CFFDict {\n  constructor(tables, strings) {\n    this.keyToNameMap = tables.keyToNameMap;\n    this.nameToKeyMap = tables.nameToKeyMap;\n    this.defaults = tables.defaults;\n    this.types = tables.types;\n    this.opcodes = tables.opcodes;\n    this.order = tables.order;\n    this.strings = strings;\n    this.values = Object.create(null);\n  }\n\n  // value should always be an array\n  setByKey(key, value) {\n    if (!(key in this.keyToNameMap)) {\n      return false;\n    }\n    const valueLength = value.length;\n    // ignore empty values\n    if (valueLength === 0) {\n      return true;\n    }\n    // Ignore invalid values (fixes bug1068432.pdf and bug1308536.pdf).\n    for (let i = 0; i < valueLength; i++) {\n      if (isNaN(value[i])) {\n        warn('Invalid CFFDict value: \"' + value + '\" for key \"' + key + '\".');\n        return true;\n      }\n    }\n    const type = this.types[key];\n    // remove the array wrapping these types of values\n    if (type === \"num\" || type === \"sid\" || type === \"offset\") {\n      value = value[0];\n    }\n    this.values[key] = value;\n    return true;\n  }\n\n  setByName(name, value) {\n    if (!(name in this.nameToKeyMap)) {\n      throw new FormatError(`Invalid dictionary name \"${name}\"`);\n    }\n    this.values[this.nameToKeyMap[name]] = value;\n  }\n\n  hasName(name) {\n    return this.nameToKeyMap[name] in this.values;\n  }\n\n  getByName(name) {\n    if (!(name in this.nameToKeyMap)) {\n      throw new FormatError(`Invalid dictionary name ${name}\"`);\n    }\n    const key = this.nameToKeyMap[name];\n    if (!(key in this.values)) {\n      return this.defaults[key];\n    }\n    return this.values[key];\n  }\n\n  removeByName(name) {\n    delete this.values[this.nameToKeyMap[name]];\n  }\n\n  static createTables(layout) {\n    const tables = {\n      keyToNameMap: {},\n      nameToKeyMap: {},\n      defaults: {},\n      types: {},\n      opcodes: {},\n      order: [],\n    };\n    for (let i = 0, ii = layout.length; i < ii; ++i) {\n      const entry = layout[i];\n      const key = Array.isArray(entry[0])\n        ? (entry[0][0] << 8) + entry[0][1]\n        : entry[0];\n      tables.keyToNameMap[key] = entry[1];\n      tables.nameToKeyMap[entry[1]] = key;\n      tables.types[key] = entry[2];\n      tables.defaults[key] = entry[3];\n      tables.opcodes[key] = Array.isArray(entry[0]) ? entry[0] : [entry[0]];\n      tables.order.push(key);\n    }\n    return tables;\n  }\n}\n\nconst CFFTopDict = (function CFFTopDictClosure() {\n  const layout = [\n    [[12, 30], \"ROS\", [\"sid\", \"sid\", \"num\"], null],\n    [[12, 20], \"SyntheticBase\", \"num\", null],\n    [0, \"version\", \"sid\", null],\n    [1, \"Notice\", \"sid\", null],\n    [[12, 0], \"Copyright\", \"sid\", null],\n    [2, \"FullName\", \"sid\", null],\n    [3, \"FamilyName\", \"sid\", null],\n    [4, \"Weight\", \"sid\", null],\n    [[12, 1], \"isFixedPitch\", \"num\", 0],\n    [[12, 2], \"ItalicAngle\", \"num\", 0],\n    [[12, 3], \"UnderlinePosition\", \"num\", -100],\n    [[12, 4], \"UnderlineThickness\", \"num\", 50],\n    [[12, 5], \"PaintType\", \"num\", 0],\n    [[12, 6], \"CharstringType\", \"num\", 2],\n    // prettier-ignore\n    [[12, 7], \"FontMatrix\", [\"num\", \"num\", \"num\", \"num\", \"num\", \"num\"],\n                            [0.001, 0, 0, 0.001, 0, 0]],\n    [13, \"UniqueID\", \"num\", null],\n    [5, \"FontBBox\", [\"num\", \"num\", \"num\", \"num\"], [0, 0, 0, 0]],\n    [[12, 8], \"StrokeWidth\", \"num\", 0],\n    [14, \"XUID\", \"array\", null],\n    [15, \"charset\", \"offset\", 0],\n    [16, \"Encoding\", \"offset\", 0],\n    [17, \"CharStrings\", \"offset\", 0],\n    [18, \"Private\", [\"offset\", \"offset\"], null],\n    [[12, 21], \"PostScript\", \"sid\", null],\n    [[12, 22], \"BaseFontName\", \"sid\", null],\n    [[12, 23], \"BaseFontBlend\", \"delta\", null],\n    [[12, 31], \"CIDFontVersion\", \"num\", 0],\n    [[12, 32], \"CIDFontRevision\", \"num\", 0],\n    [[12, 33], \"CIDFontType\", \"num\", 0],\n    [[12, 34], \"CIDCount\", \"num\", 8720],\n    [[12, 35], \"UIDBase\", \"num\", null],\n    // XXX: CID Fonts on DirectWrite 6.1 only seem to work if FDSelect comes\n    // before FDArray.\n    [[12, 37], \"FDSelect\", \"offset\", null],\n    [[12, 36], \"FDArray\", \"offset\", null],\n    [[12, 38], \"FontName\", \"sid\", null],\n  ];\n  let tables = null;\n\n  // eslint-disable-next-line no-shadow\n  class CFFTopDict extends CFFDict {\n    constructor(strings) {\n      if (tables === null) {\n        tables = CFFDict.createTables(layout);\n      }\n      super(tables, strings);\n      this.privateDict = null;\n    }\n  }\n  return CFFTopDict;\n})();\n\nconst CFFPrivateDict = (function CFFPrivateDictClosure() {\n  const layout = [\n    [6, \"BlueValues\", \"delta\", null],\n    [7, \"OtherBlues\", \"delta\", null],\n    [8, \"FamilyBlues\", \"delta\", null],\n    [9, \"FamilyOtherBlues\", \"delta\", null],\n    [[12, 9], \"BlueScale\", \"num\", 0.039625],\n    [[12, 10], \"BlueShift\", \"num\", 7],\n    [[12, 11], \"BlueFuzz\", \"num\", 1],\n    [10, \"StdHW\", \"num\", null],\n    [11, \"StdVW\", \"num\", null],\n    [[12, 12], \"StemSnapH\", \"delta\", null],\n    [[12, 13], \"StemSnapV\", \"delta\", null],\n    [[12, 14], \"ForceBold\", \"num\", 0],\n    [[12, 17], \"LanguageGroup\", \"num\", 0],\n    [[12, 18], \"ExpansionFactor\", \"num\", 0.06],\n    [[12, 19], \"initialRandomSeed\", \"num\", 0],\n    [20, \"defaultWidthX\", \"num\", 0],\n    [21, \"nominalWidthX\", \"num\", 0],\n    [19, \"Subrs\", \"offset\", null],\n  ];\n  let tables = null;\n\n  // eslint-disable-next-line no-shadow\n  class CFFPrivateDict extends CFFDict {\n    constructor(strings) {\n      if (tables === null) {\n        tables = CFFDict.createTables(layout);\n      }\n      super(tables, strings);\n      this.subrsIndex = null;\n    }\n  }\n  return CFFPrivateDict;\n})();\n\nconst CFFCharsetPredefinedTypes = {\n  ISO_ADOBE: 0,\n  EXPERT: 1,\n  EXPERT_SUBSET: 2,\n};\n\nclass CFFCharset {\n  constructor(predefined, format, charset, raw) {\n    this.predefined = predefined;\n    this.format = format;\n    this.charset = charset;\n    this.raw = raw;\n  }\n}\n\nclass CFFEncoding {\n  constructor(predefined, format, encoding, raw) {\n    this.predefined = predefined;\n    this.format = format;\n    this.encoding = encoding;\n    this.raw = raw;\n  }\n}\n\nclass CFFFDSelect {\n  constructor(format, fdSelect) {\n    this.format = format;\n    this.fdSelect = fdSelect;\n  }\n\n  getFDIndex(glyphIndex) {\n    if (glyphIndex < 0 || glyphIndex >= this.fdSelect.length) {\n      return -1;\n    }\n    return this.fdSelect[glyphIndex];\n  }\n}\n\n// Helper class to keep track of where an offset is within the data and helps\n// filling in that offset once it's known.\nclass CFFOffsetTracker {\n  constructor() {\n    this.offsets = Object.create(null);\n  }\n\n  isTracking(key) {\n    return key in this.offsets;\n  }\n\n  track(key, location) {\n    if (key in this.offsets) {\n      throw new FormatError(`Already tracking location of ${key}`);\n    }\n    this.offsets[key] = location;\n  }\n\n  offset(value) {\n    for (const key in this.offsets) {\n      this.offsets[key] += value;\n    }\n  }\n\n  setEntryLocation(key, values, output) {\n    if (!(key in this.offsets)) {\n      throw new FormatError(`Not tracking location of ${key}`);\n    }\n    const data = output.data;\n    const dataOffset = this.offsets[key];\n    const size = 5;\n    for (let i = 0, ii = values.length; i < ii; ++i) {\n      const offset0 = i * size + dataOffset;\n      const offset1 = offset0 + 1;\n      const offset2 = offset0 + 2;\n      const offset3 = offset0 + 3;\n      const offset4 = offset0 + 4;\n      // It's easy to screw up offsets so perform this sanity check.\n      if (\n        data[offset0] !== 0x1d ||\n        data[offset1] !== 0 ||\n        data[offset2] !== 0 ||\n        data[offset3] !== 0 ||\n        data[offset4] !== 0\n      ) {\n        throw new FormatError(\"writing to an offset that is not empty\");\n      }\n      const value = values[i];\n      data[offset0] = 0x1d;\n      data[offset1] = (value >> 24) & 0xff;\n      data[offset2] = (value >> 16) & 0xff;\n      data[offset3] = (value >> 8) & 0xff;\n      data[offset4] = value & 0xff;\n    }\n  }\n}\n\n// Takes a CFF and converts it to the binary representation.\nclass CFFCompiler {\n  constructor(cff) {\n    this.cff = cff;\n  }\n\n  compile() {\n    const cff = this.cff;\n    const output = {\n      data: [],\n      length: 0,\n      add: function CFFCompiler_add(data) {\n        this.data = this.data.concat(data);\n        this.length = this.data.length;\n      },\n    };\n\n    // Compile the five entries that must be in order.\n    const header = this.compileHeader(cff.header);\n    output.add(header);\n\n    const nameIndex = this.compileNameIndex(cff.names);\n    output.add(nameIndex);\n\n    if (cff.isCIDFont) {\n      // The spec is unclear on how font matrices should relate to each other\n      // when there is one in the main top dict and the sub top dicts.\n      // Windows handles this differently than linux and osx so we have to\n      // normalize to work on all.\n      // Rules based off of some mailing list discussions:\n      // - If main font has a matrix and subfont doesn't, use the main matrix.\n      // - If no main font matrix and there is a subfont matrix, use the\n      //   subfont matrix.\n      // - If both have matrices, concat together.\n      // - If neither have matrices, use default.\n      // To make this work on all platforms we move the top matrix into each\n      // sub top dict and concat if necessary.\n      if (cff.topDict.hasName(\"FontMatrix\")) {\n        const base = cff.topDict.getByName(\"FontMatrix\");\n        cff.topDict.removeByName(\"FontMatrix\");\n        for (let i = 0, ii = cff.fdArray.length; i < ii; i++) {\n          const subDict = cff.fdArray[i];\n          let matrix = base.slice(0);\n          if (subDict.hasName(\"FontMatrix\")) {\n            matrix = Util.transform(matrix, subDict.getByName(\"FontMatrix\"));\n          }\n          subDict.setByName(\"FontMatrix\", matrix);\n        }\n      }\n    }\n\n    const xuid = cff.topDict.getByName(\"XUID\");\n    if (xuid && xuid.length > 16) {\n      // Length of XUID array must not be greater than 16 (issue #12399).\n      cff.topDict.removeByName(\"XUID\");\n    }\n\n    cff.topDict.setByName(\"charset\", 0);\n    let compiled = this.compileTopDicts(\n      [cff.topDict],\n      output.length,\n      cff.isCIDFont\n    );\n    output.add(compiled.output);\n    const topDictTracker = compiled.trackers[0];\n\n    const stringIndex = this.compileStringIndex(cff.strings.strings);\n    output.add(stringIndex);\n\n    const globalSubrIndex = this.compileIndex(cff.globalSubrIndex);\n    output.add(globalSubrIndex);\n\n    // Now start on the other entries that have no specific order.\n    if (cff.encoding && cff.topDict.hasName(\"Encoding\")) {\n      if (cff.encoding.predefined) {\n        topDictTracker.setEntryLocation(\n          \"Encoding\",\n          [cff.encoding.format],\n          output\n        );\n      } else {\n        const encoding = this.compileEncoding(cff.encoding);\n        topDictTracker.setEntryLocation(\"Encoding\", [output.length], output);\n        output.add(encoding);\n      }\n    }\n    const charset = this.compileCharset(\n      cff.charset,\n      cff.charStrings.count,\n      cff.strings,\n      cff.isCIDFont\n    );\n    topDictTracker.setEntryLocation(\"charset\", [output.length], output);\n    output.add(charset);\n\n    const charStrings = this.compileCharStrings(cff.charStrings);\n    topDictTracker.setEntryLocation(\"CharStrings\", [output.length], output);\n    output.add(charStrings);\n\n    if (cff.isCIDFont) {\n      // For some reason FDSelect must be in front of FDArray on windows. OSX\n      // and linux don't seem to care.\n      topDictTracker.setEntryLocation(\"FDSelect\", [output.length], output);\n      const fdSelect = this.compileFDSelect(cff.fdSelect);\n      output.add(fdSelect);\n      // It is unclear if the sub font dictionary can have CID related\n      // dictionary keys, but the sanitizer doesn't like them so remove them.\n      compiled = this.compileTopDicts(cff.fdArray, output.length, true);\n      topDictTracker.setEntryLocation(\"FDArray\", [output.length], output);\n      output.add(compiled.output);\n      const fontDictTrackers = compiled.trackers;\n\n      this.compilePrivateDicts(cff.fdArray, fontDictTrackers, output);\n    }\n\n    this.compilePrivateDicts([cff.topDict], [topDictTracker], output);\n\n    // If the font data ends with INDEX whose object data is zero-length,\n    // the sanitizer will bail out. Add a dummy byte to avoid that.\n    output.add([0]);\n\n    return output.data;\n  }\n\n  encodeNumber(value) {\n    if (Number.isInteger(value)) {\n      return this.encodeInteger(value);\n    }\n    return this.encodeFloat(value);\n  }\n\n  static get EncodeFloatRegExp() {\n    return shadow(\n      this,\n      \"EncodeFloatRegExp\",\n      /\\.(\\d*?)(?:9{5,20}|0{5,20})\\d{0,2}(?:e(.+)|$)/\n    );\n  }\n\n  encodeFloat(num) {\n    let value = num.toString();\n\n    // Rounding inaccurate doubles.\n    const m = CFFCompiler.EncodeFloatRegExp.exec(value);\n    if (m) {\n      const epsilon = parseFloat(\"1e\" + ((m[2] ? +m[2] : 0) + m[1].length));\n      value = (Math.round(num * epsilon) / epsilon).toString();\n    }\n\n    let nibbles = \"\";\n    let i, ii;\n    for (i = 0, ii = value.length; i < ii; ++i) {\n      const a = value[i];\n      if (a === \"e\") {\n        nibbles += value[++i] === \"-\" ? \"c\" : \"b\";\n      } else if (a === \".\") {\n        nibbles += \"a\";\n      } else if (a === \"-\") {\n        nibbles += \"e\";\n      } else {\n        nibbles += a;\n      }\n    }\n    nibbles += nibbles.length & 1 ? \"f\" : \"ff\";\n    const out = [30];\n    for (i = 0, ii = nibbles.length; i < ii; i += 2) {\n      out.push(parseInt(nibbles.substring(i, i + 2), 16));\n    }\n    return out;\n  }\n\n  encodeInteger(value) {\n    let code;\n    if (value >= -107 && value <= 107) {\n      code = [value + 139];\n    } else if (value >= 108 && value <= 1131) {\n      value -= 108;\n      code = [(value >> 8) + 247, value & 0xff];\n    } else if (value >= -1131 && value <= -108) {\n      value = -value - 108;\n      code = [(value >> 8) + 251, value & 0xff];\n    } else if (value >= -32768 && value <= 32767) {\n      code = [0x1c, (value >> 8) & 0xff, value & 0xff];\n    } else {\n      code = [\n        0x1d,\n        (value >> 24) & 0xff,\n        (value >> 16) & 0xff,\n        (value >> 8) & 0xff,\n        value & 0xff,\n      ];\n    }\n    return code;\n  }\n\n  compileHeader(header) {\n    // `header.hdrSize` can be any value but we only write 4 values\n    // so header size is 4 (prevents OTS from rejecting the font).\n    return [header.major, header.minor, 4, header.offSize];\n  }\n\n  compileNameIndex(names) {\n    const nameIndex = new CFFIndex();\n    for (let i = 0, ii = names.length; i < ii; ++i) {\n      const name = names[i];\n      // OTS doesn't allow names to be over 127 characters.\n      const length = Math.min(name.length, 127);\n      let sanitizedName = new Array(length);\n      for (let j = 0; j < length; j++) {\n        // OTS requires chars to be between a range and not certain other\n        // chars.\n        let char = name[j];\n        if (\n          char < \"!\" ||\n          char > \"~\" ||\n          char === \"[\" ||\n          char === \"]\" ||\n          char === \"(\" ||\n          char === \")\" ||\n          char === \"{\" ||\n          char === \"}\" ||\n          char === \"<\" ||\n          char === \">\" ||\n          char === \"/\" ||\n          char === \"%\"\n        ) {\n          char = \"_\";\n        }\n        sanitizedName[j] = char;\n      }\n      sanitizedName = sanitizedName.join(\"\");\n\n      if (sanitizedName === \"\") {\n        sanitizedName = \"Bad_Font_Name\";\n      }\n      nameIndex.add(stringToBytes(sanitizedName));\n    }\n    return this.compileIndex(nameIndex);\n  }\n\n  compileTopDicts(dicts, length, removeCidKeys) {\n    const fontDictTrackers = [];\n    let fdArrayIndex = new CFFIndex();\n    for (let i = 0, ii = dicts.length; i < ii; ++i) {\n      const fontDict = dicts[i];\n      if (removeCidKeys) {\n        fontDict.removeByName(\"CIDFontVersion\");\n        fontDict.removeByName(\"CIDFontRevision\");\n        fontDict.removeByName(\"CIDFontType\");\n        fontDict.removeByName(\"CIDCount\");\n        fontDict.removeByName(\"UIDBase\");\n      }\n      const fontDictTracker = new CFFOffsetTracker();\n      const fontDictData = this.compileDict(fontDict, fontDictTracker);\n      fontDictTrackers.push(fontDictTracker);\n      fdArrayIndex.add(fontDictData);\n      fontDictTracker.offset(length);\n    }\n    fdArrayIndex = this.compileIndex(fdArrayIndex, fontDictTrackers);\n    return {\n      trackers: fontDictTrackers,\n      output: fdArrayIndex,\n    };\n  }\n\n  compilePrivateDicts(dicts, trackers, output) {\n    for (let i = 0, ii = dicts.length; i < ii; ++i) {\n      const fontDict = dicts[i];\n      const privateDict = fontDict.privateDict;\n      if (!privateDict || !fontDict.hasName(\"Private\")) {\n        throw new FormatError(\"There must be a private dictionary.\");\n      }\n      const privateDictTracker = new CFFOffsetTracker();\n      const privateDictData = this.compileDict(privateDict, privateDictTracker);\n\n      let outputLength = output.length;\n      privateDictTracker.offset(outputLength);\n      if (!privateDictData.length) {\n        // The private dictionary was empty, set the output length to zero to\n        // ensure the offset length isn't out of bounds in the eyes of the\n        // sanitizer.\n        outputLength = 0;\n      }\n\n      trackers[i].setEntryLocation(\n        \"Private\",\n        [privateDictData.length, outputLength],\n        output\n      );\n      output.add(privateDictData);\n\n      if (privateDict.subrsIndex && privateDict.hasName(\"Subrs\")) {\n        const subrs = this.compileIndex(privateDict.subrsIndex);\n        privateDictTracker.setEntryLocation(\n          \"Subrs\",\n          [privateDictData.length],\n          output\n        );\n        output.add(subrs);\n      }\n    }\n  }\n\n  compileDict(dict, offsetTracker) {\n    let out = [];\n    // The dictionary keys must be in a certain order.\n    const order = dict.order;\n    for (let i = 0; i < order.length; ++i) {\n      const key = order[i];\n      if (!(key in dict.values)) {\n        continue;\n      }\n      let values = dict.values[key];\n      let types = dict.types[key];\n      if (!Array.isArray(types)) {\n        types = [types];\n      }\n      if (!Array.isArray(values)) {\n        values = [values];\n      }\n\n      // Remove any empty dict values.\n      if (values.length === 0) {\n        continue;\n      }\n\n      for (let j = 0, jj = types.length; j < jj; ++j) {\n        const type = types[j];\n        const value = values[j];\n        switch (type) {\n          case \"num\":\n          case \"sid\":\n            out = out.concat(this.encodeNumber(value));\n            break;\n          case \"offset\":\n            // For offsets we just insert a 32bit integer so we don't have to\n            // deal with figuring out the length of the offset when it gets\n            // replaced later on by the compiler.\n            const name = dict.keyToNameMap[key];\n            // Some offsets have the offset and the length, so just record the\n            // position of the first one.\n            if (!offsetTracker.isTracking(name)) {\n              offsetTracker.track(name, out.length);\n            }\n            out = out.concat([0x1d, 0, 0, 0, 0]);\n            break;\n          case \"array\":\n          case \"delta\":\n            out = out.concat(this.encodeNumber(value));\n            for (let k = 1, kk = values.length; k < kk; ++k) {\n              out = out.concat(this.encodeNumber(values[k]));\n            }\n            break;\n          default:\n            throw new FormatError(`Unknown data type of ${type}`);\n        }\n      }\n      out = out.concat(dict.opcodes[key]);\n    }\n    return out;\n  }\n\n  compileStringIndex(strings) {\n    const stringIndex = new CFFIndex();\n    for (let i = 0, ii = strings.length; i < ii; ++i) {\n      stringIndex.add(stringToBytes(strings[i]));\n    }\n    return this.compileIndex(stringIndex);\n  }\n\n  compileGlobalSubrIndex() {\n    const globalSubrIndex = this.cff.globalSubrIndex;\n    this.out.writeByteArray(this.compileIndex(globalSubrIndex));\n  }\n\n  compileCharStrings(charStrings) {\n    const charStringsIndex = new CFFIndex();\n    for (let i = 0; i < charStrings.count; i++) {\n      const glyph = charStrings.get(i);\n      // If the CharString outline is empty, replace it with .notdef to\n      // prevent OTS from rejecting the font (fixes bug1252420.pdf).\n      if (glyph.length === 0) {\n        charStringsIndex.add(new Uint8Array([0x8b, 0x0e]));\n        continue;\n      }\n      charStringsIndex.add(glyph);\n    }\n    return this.compileIndex(charStringsIndex);\n  }\n\n  compileCharset(charset, numGlyphs, strings, isCIDFont) {\n    // Freetype requires the number of charset strings be correct and MacOS\n    // requires a valid mapping for printing.\n    let out;\n    const numGlyphsLessNotDef = numGlyphs - 1;\n    if (isCIDFont) {\n      // In a CID font, the charset is a mapping of CIDs not SIDs so just\n      // create an identity mapping.\n      out = new Uint8Array([\n        2, // format\n        0, // first CID upper byte\n        0, // first CID lower byte\n        (numGlyphsLessNotDef >> 8) & 0xff,\n        numGlyphsLessNotDef & 0xff,\n      ]);\n    } else {\n      const length = 1 + numGlyphsLessNotDef * 2;\n      out = new Uint8Array(length);\n      out[0] = 0; // format 0\n      let charsetIndex = 0;\n      const numCharsets = charset.charset.length;\n      let warned = false;\n      for (let i = 1; i < out.length; i += 2) {\n        let sid = 0;\n        if (charsetIndex < numCharsets) {\n          const name = charset.charset[charsetIndex++];\n          sid = strings.getSID(name);\n          if (sid === -1) {\n            sid = 0;\n            if (!warned) {\n              warned = true;\n              warn(`Couldn't find ${name} in CFF strings`);\n            }\n          }\n        }\n        out[i] = (sid >> 8) & 0xff;\n        out[i + 1] = sid & 0xff;\n      }\n    }\n    return this.compileTypedArray(out);\n  }\n\n  compileEncoding(encoding) {\n    return this.compileTypedArray(encoding.raw);\n  }\n\n  compileFDSelect(fdSelect) {\n    const format = fdSelect.format;\n    let out, i;\n    switch (format) {\n      case 0:\n        out = new Uint8Array(1 + fdSelect.fdSelect.length);\n        out[0] = format;\n        for (i = 0; i < fdSelect.fdSelect.length; i++) {\n          out[i + 1] = fdSelect.fdSelect[i];\n        }\n        break;\n      case 3:\n        const start = 0;\n        let lastFD = fdSelect.fdSelect[0];\n        const ranges = [\n          format,\n          0, // nRanges place holder\n          0, // nRanges place holder\n          (start >> 8) & 0xff,\n          start & 0xff,\n          lastFD,\n        ];\n        for (i = 1; i < fdSelect.fdSelect.length; i++) {\n          const currentFD = fdSelect.fdSelect[i];\n          if (currentFD !== lastFD) {\n            ranges.push((i >> 8) & 0xff, i & 0xff, currentFD);\n            lastFD = currentFD;\n          }\n        }\n        // 3 bytes are pushed for every range and there are 3 header bytes.\n        const numRanges = (ranges.length - 3) / 3;\n        ranges[1] = (numRanges >> 8) & 0xff;\n        ranges[2] = numRanges & 0xff;\n        // sentinel\n        ranges.push((i >> 8) & 0xff, i & 0xff);\n        out = new Uint8Array(ranges);\n        break;\n    }\n    return this.compileTypedArray(out);\n  }\n\n  compileTypedArray(data) {\n    const out = [];\n    for (let i = 0, ii = data.length; i < ii; ++i) {\n      out[i] = data[i];\n    }\n    return out;\n  }\n\n  compileIndex(index, trackers = []) {\n    const objects = index.objects;\n    // First 2 bytes contains the number of objects contained into this index\n    const count = objects.length;\n\n    // If there is no object, just create an index. This technically\n    // should just be [0, 0] but OTS has an issue with that.\n    if (count === 0) {\n      return [0, 0, 0];\n    }\n\n    const data = [(count >> 8) & 0xff, count & 0xff];\n\n    let lastOffset = 1,\n      i;\n    for (i = 0; i < count; ++i) {\n      lastOffset += objects[i].length;\n    }\n\n    let offsetSize;\n    if (lastOffset < 0x100) {\n      offsetSize = 1;\n    } else if (lastOffset < 0x10000) {\n      offsetSize = 2;\n    } else if (lastOffset < 0x1000000) {\n      offsetSize = 3;\n    } else {\n      offsetSize = 4;\n    }\n\n    // Next byte contains the offset size use to reference object in the file\n    data.push(offsetSize);\n\n    // Add another offset after this one because we need a new offset\n    let relativeOffset = 1;\n    for (i = 0; i < count + 1; i++) {\n      if (offsetSize === 1) {\n        data.push(relativeOffset & 0xff);\n      } else if (offsetSize === 2) {\n        data.push((relativeOffset >> 8) & 0xff, relativeOffset & 0xff);\n      } else if (offsetSize === 3) {\n        data.push(\n          (relativeOffset >> 16) & 0xff,\n          (relativeOffset >> 8) & 0xff,\n          relativeOffset & 0xff\n        );\n      } else {\n        data.push(\n          (relativeOffset >>> 24) & 0xff,\n          (relativeOffset >> 16) & 0xff,\n          (relativeOffset >> 8) & 0xff,\n          relativeOffset & 0xff\n        );\n      }\n\n      if (objects[i]) {\n        relativeOffset += objects[i].length;\n      }\n    }\n\n    for (i = 0; i < count; i++) {\n      // Notify the tracker where the object will be offset in the data.\n      if (trackers[i]) {\n        trackers[i].offset(data.length);\n      }\n      for (let j = 0, jj = objects[i].length; j < jj; j++) {\n        data.push(objects[i][j]);\n      }\n    }\n    return data;\n  }\n}\n\nexport {\n  CFF,\n  CFFCharset,\n  CFFCompiler,\n  CFFFDSelect,\n  CFFHeader,\n  CFFIndex,\n  CFFParser,\n  CFFPrivateDict,\n  CFFStandardStrings,\n  CFFStrings,\n  CFFTopDict,\n};\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// prettier-ignore\nconst ISOAdobeCharset = [\n  \".notdef\", \"space\", \"exclam\", \"quotedbl\", \"numbersign\", \"dollar\",\n  \"percent\", \"ampersand\", \"quoteright\", \"parenleft\", \"parenright\",\n  \"asterisk\", \"plus\", \"comma\", \"hyphen\", \"period\", \"slash\", \"zero\",\n  \"one\", \"two\", \"three\", \"four\", \"five\", \"six\", \"seven\", \"eight\",\n  \"nine\", \"colon\", \"semicolon\", \"less\", \"equal\", \"greater\", \"question\",\n  \"at\", \"A\", \"B\", \"C\", \"D\", \"E\", \"F\", \"G\", \"H\", \"I\", \"J\", \"K\", \"L\", \"M\",\n  \"N\", \"O\", \"P\", \"Q\", \"R\", \"S\", \"T\", \"U\", \"V\", \"W\", \"X\", \"Y\", \"Z\",\n  \"bracketleft\", \"backslash\", \"bracketright\", \"asciicircum\", \"underscore\",\n  \"quoteleft\", \"a\", \"b\", \"c\", \"d\", \"e\", \"f\", \"g\", \"h\", \"i\", \"j\", \"k\", \"l\",\n  \"m\", \"n\", \"o\", \"p\", \"q\", \"r\", \"s\", \"t\", \"u\", \"v\", \"w\", \"x\", \"y\", \"z\",\n  \"braceleft\", \"bar\", \"braceright\", \"asciitilde\", \"exclamdown\", \"cent\",\n  \"sterling\", \"fraction\", \"yen\", \"florin\", \"section\", \"currency\",\n  \"quotesingle\", \"quotedblleft\", \"guillemotleft\", \"guilsinglleft\",\n  \"guilsinglright\", \"fi\", \"fl\", \"endash\", \"dagger\", \"daggerdbl\",\n  \"periodcentered\", \"paragraph\", \"bullet\", \"quotesinglbase\",\n  \"quotedblbase\", \"quotedblright\", \"guillemotright\", \"ellipsis\",\n  \"perthousand\", \"questiondown\", \"grave\", \"acute\", \"circumflex\", \"tilde\",\n  \"macron\", \"breve\", \"dotaccent\", \"dieresis\", \"ring\", \"cedilla\",\n  \"hungarumlaut\", \"ogonek\", \"caron\", \"emdash\", \"AE\", \"ordfeminine\",\n  \"Lslash\", \"Oslash\", \"OE\", \"ordmasculine\", \"ae\", \"dotlessi\", \"lslash\",\n  \"oslash\", \"oe\", \"germandbls\", \"onesuperior\", \"logicalnot\", \"mu\",\n  \"trademark\", \"Eth\", \"onehalf\", \"plusminus\", \"Thorn\", \"onequarter\",\n  \"divide\", \"brokenbar\", \"degree\", \"thorn\", \"threequarters\", \"twosuperior\",\n  \"registered\", \"minus\", \"eth\", \"multiply\", \"threesuperior\", \"copyright\",\n  \"Aacute\", \"Acircumflex\", \"Adieresis\", \"Agrave\", \"Aring\", \"Atilde\",\n  \"Ccedilla\", \"Eacute\", \"Ecircumflex\", \"Edieresis\", \"Egrave\", \"Iacute\",\n  \"Icircumflex\", \"Idieresis\", \"Igrave\", \"Ntilde\", \"Oacute\", \"Ocircumflex\",\n  \"Odieresis\", \"Ograve\", \"Otilde\", \"Scaron\", \"Uacute\", \"Ucircumflex\",\n  \"Udieresis\", \"Ugrave\", \"Yacute\", \"Ydieresis\", \"Zcaron\", \"aacute\",\n  \"acircumflex\", \"adieresis\", \"agrave\", \"aring\", \"atilde\", \"ccedilla\",\n  \"eacute\", \"ecircumflex\", \"edieresis\", \"egrave\", \"iacute\", \"icircumflex\",\n  \"idieresis\", \"igrave\", \"ntilde\", \"oacute\", \"ocircumflex\", \"odieresis\",\n  \"ograve\", \"otilde\", \"scaron\", \"uacute\", \"ucircumflex\", \"udieresis\",\n  \"ugrave\", \"yacute\", \"ydieresis\", \"zcaron\"\n];\n\n// prettier-ignore\nconst ExpertCharset = [\n  \".notdef\", \"space\", \"exclamsmall\", \"Hungarumlautsmall\", \"dollaroldstyle\",\n  \"dollarsuperior\", \"ampersandsmall\", \"Acutesmall\", \"parenleftsuperior\",\n  \"parenrightsuperior\", \"twodotenleader\", \"onedotenleader\", \"comma\",\n  \"hyphen\", \"period\", \"fraction\", \"zerooldstyle\", \"oneoldstyle\",\n  \"twooldstyle\", \"threeoldstyle\", \"fouroldstyle\", \"fiveoldstyle\",\n  \"sixoldstyle\", \"sevenoldstyle\", \"eightoldstyle\", \"nineoldstyle\",\n  \"colon\", \"semicolon\", \"commasuperior\", \"threequartersemdash\",\n  \"periodsuperior\", \"questionsmall\", \"asuperior\", \"bsuperior\",\n  \"centsuperior\", \"dsuperior\", \"esuperior\", \"isuperior\", \"lsuperior\",\n  \"msuperior\", \"nsuperior\", \"osuperior\", \"rsuperior\", \"ssuperior\",\n  \"tsuperior\", \"ff\", \"fi\", \"fl\", \"ffi\", \"ffl\", \"parenleftinferior\",\n  \"parenrightinferior\", \"Circumflexsmall\", \"hyphensuperior\", \"Gravesmall\",\n  \"Asmall\", \"Bsmall\", \"Csmall\", \"Dsmall\", \"Esmall\", \"Fsmall\", \"Gsmall\",\n  \"Hsmall\", \"Ismall\", \"Jsmall\", \"Ksmall\", \"Lsmall\", \"Msmall\", \"Nsmall\",\n  \"Osmall\", \"Psmall\", \"Qsmall\", \"Rsmall\", \"Ssmall\", \"Tsmall\", \"Usmall\",\n  \"Vsmall\", \"Wsmall\", \"Xsmall\", \"Ysmall\", \"Zsmall\", \"colonmonetary\",\n  \"onefitted\", \"rupiah\", \"Tildesmall\", \"exclamdownsmall\", \"centoldstyle\",\n  \"Lslashsmall\", \"Scaronsmall\", \"Zcaronsmall\", \"Dieresissmall\",\n  \"Brevesmall\", \"Caronsmall\", \"Dotaccentsmall\", \"Macronsmall\",\n  \"figuredash\", \"hypheninferior\", \"Ogoneksmall\", \"Ringsmall\",\n  \"Cedillasmall\", \"onequarter\", \"onehalf\", \"threequarters\",\n  \"questiondownsmall\", \"oneeighth\", \"threeeighths\", \"fiveeighths\",\n  \"seveneighths\", \"onethird\", \"twothirds\", \"zerosuperior\", \"onesuperior\",\n  \"twosuperior\", \"threesuperior\", \"foursuperior\", \"fivesuperior\",\n  \"sixsuperior\", \"sevensuperior\", \"eightsuperior\", \"ninesuperior\",\n  \"zeroinferior\", \"oneinferior\", \"twoinferior\", \"threeinferior\",\n  \"fourinferior\", \"fiveinferior\", \"sixinferior\", \"seveninferior\",\n  \"eightinferior\", \"nineinferior\", \"centinferior\", \"dollarinferior\",\n  \"periodinferior\", \"commainferior\", \"Agravesmall\", \"Aacutesmall\",\n  \"Acircumflexsmall\", \"Atildesmall\", \"Adieresissmall\", \"Aringsmall\",\n  \"AEsmall\", \"Ccedillasmall\", \"Egravesmall\", \"Eacutesmall\",\n  \"Ecircumflexsmall\", \"Edieresissmall\", \"Igravesmall\", \"Iacutesmall\",\n  \"Icircumflexsmall\", \"Idieresissmall\", \"Ethsmall\", \"Ntildesmall\",\n  \"Ogravesmall\", \"Oacutesmall\", \"Ocircumflexsmall\", \"Otildesmall\",\n  \"Odieresissmall\", \"OEsmall\", \"Oslashsmall\", \"Ugravesmall\", \"Uacutesmall\",\n  \"Ucircumflexsmall\", \"Udieresissmall\", \"Yacutesmall\", \"Thornsmall\",\n  \"Ydieresissmall\"\n];\n\n// prettier-ignore\nconst ExpertSubsetCharset = [\n  \".notdef\", \"space\", \"dollaroldstyle\", \"dollarsuperior\",\n  \"parenleftsuperior\", \"parenrightsuperior\", \"twodotenleader\",\n  \"onedotenleader\", \"comma\", \"hyphen\", \"period\", \"fraction\",\n  \"zerooldstyle\", \"oneoldstyle\", \"twooldstyle\", \"threeoldstyle\",\n  \"fouroldstyle\", \"fiveoldstyle\", \"sixoldstyle\", \"sevenoldstyle\",\n  \"eightoldstyle\", \"nineoldstyle\", \"colon\", \"semicolon\", \"commasuperior\",\n  \"threequartersemdash\", \"periodsuperior\", \"asuperior\", \"bsuperior\",\n  \"centsuperior\", \"dsuperior\", \"esuperior\", \"isuperior\", \"lsuperior\",\n  \"msuperior\", \"nsuperior\", \"osuperior\", \"rsuperior\", \"ssuperior\",\n  \"tsuperior\", \"ff\", \"fi\", \"fl\", \"ffi\", \"ffl\", \"parenleftinferior\",\n  \"parenrightinferior\", \"hyphensuperior\", \"colonmonetary\", \"onefitted\",\n  \"rupiah\", \"centoldstyle\", \"figuredash\", \"hypheninferior\", \"onequarter\",\n  \"onehalf\", \"threequarters\", \"oneeighth\", \"threeeighths\", \"fiveeighths\",\n  \"seveneighths\", \"onethird\", \"twothirds\", \"zerosuperior\", \"onesuperior\",\n  \"twosuperior\", \"threesuperior\", \"foursuperior\", \"fivesuperior\",\n  \"sixsuperior\", \"sevensuperior\", \"eightsuperior\", \"ninesuperior\",\n  \"zeroinferior\", \"oneinferior\", \"twoinferior\", \"threeinferior\",\n  \"fourinferior\", \"fiveinferior\", \"sixinferior\", \"seveninferior\",\n  \"eightinferior\", \"nineinferior\", \"centinferior\", \"dollarinferior\",\n  \"periodinferior\", \"commainferior\"\n];\n\nexport { ExpertCharset, ExpertSubsetCharset, ISOAdobeCharset };\n","/* Copyright 2015 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { getLookupTableFactory } from \"./core_utils.js\";\nimport { normalizeFontName } from \"./fonts_utils.js\";\n\n/**\n * Hold a map of decoded fonts and of the standard fourteen Type1\n * fonts and their acronyms.\n */\nconst getStdFontMap = getLookupTableFactory(function (t) {\n  // The standard 14 fonts:\n  t[\"Times-Roman\"] = \"Times-Roman\";\n  t.Helvetica = \"Helvetica\";\n  t.Courier = \"Courier\";\n  t.Symbol = \"Symbol\";\n  t[\"Times-Bold\"] = \"Times-Bold\";\n  t[\"Helvetica-Bold\"] = \"Helvetica-Bold\";\n  t[\"Courier-Bold\"] = \"Courier-Bold\";\n  t.ZapfDingbats = \"ZapfDingbats\";\n  t[\"Times-Italic\"] = \"Times-Italic\";\n  t[\"Helvetica-Oblique\"] = \"Helvetica-Oblique\";\n  t[\"Courier-Oblique\"] = \"Courier-Oblique\";\n  t[\"Times-BoldItalic\"] = \"Times-BoldItalic\";\n  t[\"Helvetica-BoldOblique\"] = \"Helvetica-BoldOblique\";\n  t[\"Courier-BoldOblique\"] = \"Courier-BoldOblique\";\n\n  // Extra mappings\n  t.ArialNarrow = \"Helvetica\";\n  t[\"ArialNarrow-Bold\"] = \"Helvetica-Bold\";\n  t[\"ArialNarrow-BoldItalic\"] = \"Helvetica-BoldOblique\";\n  t[\"ArialNarrow-Italic\"] = \"Helvetica-Oblique\";\n  t.ArialBlack = \"Helvetica\";\n  t[\"ArialBlack-Bold\"] = \"Helvetica-Bold\";\n  t[\"ArialBlack-BoldItalic\"] = \"Helvetica-BoldOblique\";\n  t[\"ArialBlack-Italic\"] = \"Helvetica-Oblique\";\n  t[\"Arial-Black\"] = \"Helvetica\";\n  t[\"Arial-Black-Bold\"] = \"Helvetica-Bold\";\n  t[\"Arial-Black-BoldItalic\"] = \"Helvetica-BoldOblique\";\n  t[\"Arial-Black-Italic\"] = \"Helvetica-Oblique\";\n  t.Arial = \"Helvetica\";\n  t[\"Arial-Bold\"] = \"Helvetica-Bold\";\n  t[\"Arial-BoldItalic\"] = \"Helvetica-BoldOblique\";\n  t[\"Arial-Italic\"] = \"Helvetica-Oblique\";\n  t[\"Arial-BoldItalicMT\"] = \"Helvetica-BoldOblique\";\n  t[\"Arial-BoldMT\"] = \"Helvetica-Bold\";\n  t[\"Arial-ItalicMT\"] = \"Helvetica-Oblique\";\n  t.ArialMT = \"Helvetica\";\n  t[\"Courier-BoldItalic\"] = \"Courier-BoldOblique\";\n  t[\"Courier-Italic\"] = \"Courier-Oblique\";\n  t.CourierNew = \"Courier\";\n  t[\"CourierNew-Bold\"] = \"Courier-Bold\";\n  t[\"CourierNew-BoldItalic\"] = \"Courier-BoldOblique\";\n  t[\"CourierNew-Italic\"] = \"Courier-Oblique\";\n  t[\"CourierNewPS-BoldItalicMT\"] = \"Courier-BoldOblique\";\n  t[\"CourierNewPS-BoldMT\"] = \"Courier-Bold\";\n  t[\"CourierNewPS-ItalicMT\"] = \"Courier-Oblique\";\n  t.CourierNewPSMT = \"Courier\";\n  t[\"Helvetica-BoldItalic\"] = \"Helvetica-BoldOblique\";\n  t[\"Helvetica-Italic\"] = \"Helvetica-Oblique\";\n  t[\"Symbol-Bold\"] = \"Symbol\";\n  t[\"Symbol-BoldItalic\"] = \"Symbol\";\n  t[\"Symbol-Italic\"] = \"Symbol\";\n  t.TimesNewRoman = \"Times-Roman\";\n  t[\"TimesNewRoman-Bold\"] = \"Times-Bold\";\n  t[\"TimesNewRoman-BoldItalic\"] = \"Times-BoldItalic\";\n  t[\"TimesNewRoman-Italic\"] = \"Times-Italic\";\n  t.TimesNewRomanPS = \"Times-Roman\";\n  t[\"TimesNewRomanPS-Bold\"] = \"Times-Bold\";\n  t[\"TimesNewRomanPS-BoldItalic\"] = \"Times-BoldItalic\";\n  t[\"TimesNewRomanPS-BoldItalicMT\"] = \"Times-BoldItalic\";\n  t[\"TimesNewRomanPS-BoldMT\"] = \"Times-Bold\";\n  t[\"TimesNewRomanPS-Italic\"] = \"Times-Italic\";\n  t[\"TimesNewRomanPS-ItalicMT\"] = \"Times-Italic\";\n  t.TimesNewRomanPSMT = \"Times-Roman\";\n  t[\"TimesNewRomanPSMT-Bold\"] = \"Times-Bold\";\n  t[\"TimesNewRomanPSMT-BoldItalic\"] = \"Times-BoldItalic\";\n  t[\"TimesNewRomanPSMT-Italic\"] = \"Times-Italic\";\n});\n\n// Contains mapping for standard fonts and xfa fonts.\nconst getFontNameToFileMap = getLookupTableFactory(function (t) {\n  t.Courier = \"FoxitFixed.pfb\";\n  t[\"Courier-Bold\"] = \"FoxitFixedBold.pfb\";\n  t[\"Courier-BoldOblique\"] = \"FoxitFixedBoldItalic.pfb\";\n  t[\"Courier-Oblique\"] = \"FoxitFixedItalic.pfb\";\n  t.Helvetica = \"FoxitSans.pfb\";\n  t[\"Helvetica-Bold\"] = \"FoxitSansBold.pfb\";\n  t[\"Helvetica-BoldOblique\"] = \"FoxitSansBoldItalic.pfb\";\n  t[\"Helvetica-Oblique\"] = \"FoxitSansItalic.pfb\";\n  t[\"Times-Roman\"] = \"FoxitSerif.pfb\";\n  t[\"Times-Bold\"] = \"FoxitSerifBold.pfb\";\n  t[\"Times-BoldItalic\"] = \"FoxitSerifBoldItalic.pfb\";\n  t[\"Times-Italic\"] = \"FoxitSerifItalic.pfb\";\n  t.Symbol = \"FoxitSymbol.pfb\";\n  t.ZapfDingbats = \"FoxitDingbats.pfb\";\n  t[\"LiberationSans-Regular\"] = \"LiberationSans-Regular.ttf\";\n  t[\"LiberationSans-Bold\"] = \"LiberationSans-Bold.ttf\";\n  t[\"LiberationSans-Italic\"] = \"LiberationSans-Italic.ttf\";\n  t[\"LiberationSans-BoldItalic\"] = \"LiberationSans-BoldItalic.ttf\";\n});\n\n/**\n * Holds the map of the non-standard fonts that might be included as\n * a standard fonts without glyph data.\n */\nconst getNonStdFontMap = getLookupTableFactory(function (t) {\n  t.Calibri = \"Helvetica\";\n  t[\"Calibri-Bold\"] = \"Helvetica-Bold\";\n  t[\"Calibri-BoldItalic\"] = \"Helvetica-BoldOblique\";\n  t[\"Calibri-Italic\"] = \"Helvetica-Oblique\";\n  t.CenturyGothic = \"Helvetica\";\n  t[\"CenturyGothic-Bold\"] = \"Helvetica-Bold\";\n  t[\"CenturyGothic-BoldItalic\"] = \"Helvetica-BoldOblique\";\n  t[\"CenturyGothic-Italic\"] = \"Helvetica-Oblique\";\n  t.ComicSansMS = \"Comic Sans MS\";\n  t[\"ComicSansMS-Bold\"] = \"Comic Sans MS-Bold\";\n  t[\"ComicSansMS-BoldItalic\"] = \"Comic Sans MS-BoldItalic\";\n  t[\"ComicSansMS-Italic\"] = \"Comic Sans MS-Italic\";\n  t[\"ItcSymbol-Bold\"] = \"Helvetica-Bold\";\n  t[\"ItcSymbol-BoldItalic\"] = \"Helvetica-BoldOblique\";\n  t[\"ItcSymbol-Book\"] = \"Helvetica\";\n  t[\"ItcSymbol-BookItalic\"] = \"Helvetica-Oblique\";\n  t[\"ItcSymbol-Medium\"] = \"Helvetica\";\n  t[\"ItcSymbol-MediumItalic\"] = \"Helvetica-Oblique\";\n  t.LucidaConsole = \"Courier\";\n  t[\"LucidaConsole-Bold\"] = \"Courier-Bold\";\n  t[\"LucidaConsole-BoldItalic\"] = \"Courier-BoldOblique\";\n  t[\"LucidaConsole-Italic\"] = \"Courier-Oblique\";\n  t[\"LucidaSans-Demi\"] = \"Helvetica-Bold\";\n  t[\"MS-Gothic\"] = \"MS Gothic\";\n  t[\"MS-Gothic-Bold\"] = \"MS Gothic-Bold\";\n  t[\"MS-Gothic-BoldItalic\"] = \"MS Gothic-BoldItalic\";\n  t[\"MS-Gothic-Italic\"] = \"MS Gothic-Italic\";\n  t[\"MS-Mincho\"] = \"MS Mincho\";\n  t[\"MS-Mincho-Bold\"] = \"MS Mincho-Bold\";\n  t[\"MS-Mincho-BoldItalic\"] = \"MS Mincho-BoldItalic\";\n  t[\"MS-Mincho-Italic\"] = \"MS Mincho-Italic\";\n  t[\"MS-PGothic\"] = \"MS PGothic\";\n  t[\"MS-PGothic-Bold\"] = \"MS PGothic-Bold\";\n  t[\"MS-PGothic-BoldItalic\"] = \"MS PGothic-BoldItalic\";\n  t[\"MS-PGothic-Italic\"] = \"MS PGothic-Italic\";\n  t[\"MS-PMincho\"] = \"MS PMincho\";\n  t[\"MS-PMincho-Bold\"] = \"MS PMincho-Bold\";\n  t[\"MS-PMincho-BoldItalic\"] = \"MS PMincho-BoldItalic\";\n  t[\"MS-PMincho-Italic\"] = \"MS PMincho-Italic\";\n  t.NuptialScript = \"Times-Italic\";\n  t.SegoeUISymbol = \"Helvetica\";\n  t.Wingdings = \"ZapfDingbats\";\n  t[\"Wingdings-Regular\"] = \"ZapfDingbats\";\n});\n\nconst getSerifFonts = getLookupTableFactory(function (t) {\n  t[\"Adobe Jenson\"] = true;\n  t[\"Adobe Text\"] = true;\n  t.Albertus = true;\n  t.Aldus = true;\n  t.Alexandria = true;\n  t.Algerian = true;\n  t[\"American Typewriter\"] = true;\n  t.Antiqua = true;\n  t.Apex = true;\n  t.Arno = true;\n  t.Aster = true;\n  t.Aurora = true;\n  t.Baskerville = true;\n  t.Bell = true;\n  t.Bembo = true;\n  t[\"Bembo Schoolbook\"] = true;\n  t.Benguiat = true;\n  t[\"Berkeley Old Style\"] = true;\n  t[\"Bernhard Modern\"] = true;\n  t[\"Berthold City\"] = true;\n  t.Bodoni = true;\n  t[\"Bauer Bodoni\"] = true;\n  t[\"Book Antiqua\"] = true;\n  t.Bookman = true;\n  t[\"Bordeaux Roman\"] = true;\n  t[\"Californian FB\"] = true;\n  t.Calisto = true;\n  t.Calvert = true;\n  t.Capitals = true;\n  t.Cambria = true;\n  t.Cartier = true;\n  t.Caslon = true;\n  t.Catull = true;\n  t.Centaur = true;\n  t[\"Century Old Style\"] = true;\n  t[\"Century Schoolbook\"] = true;\n  t.Chaparral = true;\n  t[\"Charis SIL\"] = true;\n  t.Cheltenham = true;\n  t[\"Cholla Slab\"] = true;\n  t.Clarendon = true;\n  t.Clearface = true;\n  t.Cochin = true;\n  t.Colonna = true;\n  t[\"Computer Modern\"] = true;\n  t[\"Concrete Roman\"] = true;\n  t.Constantia = true;\n  t[\"Cooper Black\"] = true;\n  t.Corona = true;\n  t.Ecotype = true;\n  t.Egyptienne = true;\n  t.Elephant = true;\n  t.Excelsior = true;\n  t.Fairfield = true;\n  t[\"FF Scala\"] = true;\n  t.Folkard = true;\n  t.Footlight = true;\n  t.FreeSerif = true;\n  t[\"Friz Quadrata\"] = true;\n  t.Garamond = true;\n  t.Gentium = true;\n  t.Georgia = true;\n  t.Gloucester = true;\n  t[\"Goudy Old Style\"] = true;\n  t[\"Goudy Schoolbook\"] = true;\n  t[\"Goudy Pro Font\"] = true;\n  t.Granjon = true;\n  t[\"Guardian Egyptian\"] = true;\n  t.Heather = true;\n  t.Hercules = true;\n  t[\"High Tower Text\"] = true;\n  t.Hiroshige = true;\n  t[\"Hoefler Text\"] = true;\n  t[\"Humana Serif\"] = true;\n  t.Imprint = true;\n  t[\"Ionic No. 5\"] = true;\n  t.Janson = true;\n  t.Joanna = true;\n  t.Korinna = true;\n  t.Lexicon = true;\n  t.LiberationSerif = true;\n  t[\"Liberation Serif\"] = true;\n  t[\"Linux Libertine\"] = true;\n  t.Literaturnaya = true;\n  t.Lucida = true;\n  t[\"Lucida Bright\"] = true;\n  t.Melior = true;\n  t.Memphis = true;\n  t.Miller = true;\n  t.Minion = true;\n  t.Modern = true;\n  t[\"Mona Lisa\"] = true;\n  t[\"Mrs Eaves\"] = true;\n  t[\"MS Serif\"] = true;\n  t[\"Museo Slab\"] = true;\n  t[\"New York\"] = true;\n  t[\"Nimbus Roman\"] = true;\n  t[\"NPS Rawlinson Roadway\"] = true;\n  t.NuptialScript = true;\n  t.Palatino = true;\n  t.Perpetua = true;\n  t.Plantin = true;\n  t[\"Plantin Schoolbook\"] = true;\n  t.Playbill = true;\n  t[\"Poor Richard\"] = true;\n  t[\"Rawlinson Roadway\"] = true;\n  t.Renault = true;\n  t.Requiem = true;\n  t.Rockwell = true;\n  t.Roman = true;\n  t[\"Rotis Serif\"] = true;\n  t.Sabon = true;\n  t.Scala = true;\n  t.Seagull = true;\n  t.Sistina = true;\n  t.Souvenir = true;\n  t.STIX = true;\n  t[\"Stone Informal\"] = true;\n  t[\"Stone Serif\"] = true;\n  t.Sylfaen = true;\n  t.Times = true;\n  t.Trajan = true;\n  t[\"Trinité\"] = true;\n  t[\"Trump Mediaeval\"] = true;\n  t.Utopia = true;\n  t[\"Vale Type\"] = true;\n  t[\"Bitstream Vera\"] = true;\n  t[\"Vera Serif\"] = true;\n  t.Versailles = true;\n  t.Wanted = true;\n  t.Weiss = true;\n  t[\"Wide Latin\"] = true;\n  t.Windsor = true;\n  t.XITS = true;\n});\n\nconst getSymbolsFonts = getLookupTableFactory(function (t) {\n  t.Dingbats = true;\n  t.Symbol = true;\n  t.ZapfDingbats = true;\n});\n\n// Glyph map for well-known standard fonts. Sometimes Ghostscript uses CID\n// fonts, but does not embed the CID to GID mapping. The mapping is incomplete\n// for all glyphs, but common for some set of the standard fonts.\nconst getGlyphMapForStandardFonts = getLookupTableFactory(function (t) {\n  t[2] = 10;\n  t[3] = 32;\n  t[4] = 33;\n  t[5] = 34;\n  t[6] = 35;\n  t[7] = 36;\n  t[8] = 37;\n  t[9] = 38;\n  t[10] = 39;\n  t[11] = 40;\n  t[12] = 41;\n  t[13] = 42;\n  t[14] = 43;\n  t[15] = 44;\n  t[16] = 45;\n  t[17] = 46;\n  t[18] = 47;\n  t[19] = 48;\n  t[20] = 49;\n  t[21] = 50;\n  t[22] = 51;\n  t[23] = 52;\n  t[24] = 53;\n  t[25] = 54;\n  t[26] = 55;\n  t[27] = 56;\n  t[28] = 57;\n  t[29] = 58;\n  t[30] = 894;\n  t[31] = 60;\n  t[32] = 61;\n  t[33] = 62;\n  t[34] = 63;\n  t[35] = 64;\n  t[36] = 65;\n  t[37] = 66;\n  t[38] = 67;\n  t[39] = 68;\n  t[40] = 69;\n  t[41] = 70;\n  t[42] = 71;\n  t[43] = 72;\n  t[44] = 73;\n  t[45] = 74;\n  t[46] = 75;\n  t[47] = 76;\n  t[48] = 77;\n  t[49] = 78;\n  t[50] = 79;\n  t[51] = 80;\n  t[52] = 81;\n  t[53] = 82;\n  t[54] = 83;\n  t[55] = 84;\n  t[56] = 85;\n  t[57] = 86;\n  t[58] = 87;\n  t[59] = 88;\n  t[60] = 89;\n  t[61] = 90;\n  t[62] = 91;\n  t[63] = 92;\n  t[64] = 93;\n  t[65] = 94;\n  t[66] = 95;\n  t[67] = 96;\n  t[68] = 97;\n  t[69] = 98;\n  t[70] = 99;\n  t[71] = 100;\n  t[72] = 101;\n  t[73] = 102;\n  t[74] = 103;\n  t[75] = 104;\n  t[76] = 105;\n  t[77] = 106;\n  t[78] = 107;\n  t[79] = 108;\n  t[80] = 109;\n  t[81] = 110;\n  t[82] = 111;\n  t[83] = 112;\n  t[84] = 113;\n  t[85] = 114;\n  t[86] = 115;\n  t[87] = 116;\n  t[88] = 117;\n  t[89] = 118;\n  t[90] = 119;\n  t[91] = 120;\n  t[92] = 121;\n  t[93] = 122;\n  t[94] = 123;\n  t[95] = 124;\n  t[96] = 125;\n  t[97] = 126;\n  t[98] = 196;\n  t[99] = 197;\n  t[100] = 199;\n  t[101] = 201;\n  t[102] = 209;\n  t[103] = 214;\n  t[104] = 220;\n  t[105] = 225;\n  t[106] = 224;\n  t[107] = 226;\n  t[108] = 228;\n  t[109] = 227;\n  t[110] = 229;\n  t[111] = 231;\n  t[112] = 233;\n  t[113] = 232;\n  t[114] = 234;\n  t[115] = 235;\n  t[116] = 237;\n  t[117] = 236;\n  t[118] = 238;\n  t[119] = 239;\n  t[120] = 241;\n  t[121] = 243;\n  t[122] = 242;\n  t[123] = 244;\n  t[124] = 246;\n  t[125] = 245;\n  t[126] = 250;\n  t[127] = 249;\n  t[128] = 251;\n  t[129] = 252;\n  t[130] = 8224;\n  t[131] = 176;\n  t[132] = 162;\n  t[133] = 163;\n  t[134] = 167;\n  t[135] = 8226;\n  t[136] = 182;\n  t[137] = 223;\n  t[138] = 174;\n  t[139] = 169;\n  t[140] = 8482;\n  t[141] = 180;\n  t[142] = 168;\n  t[143] = 8800;\n  t[144] = 198;\n  t[145] = 216;\n  t[146] = 8734;\n  t[147] = 177;\n  t[148] = 8804;\n  t[149] = 8805;\n  t[150] = 165;\n  t[151] = 181;\n  t[152] = 8706;\n  t[153] = 8721;\n  t[154] = 8719;\n  t[156] = 8747;\n  t[157] = 170;\n  t[158] = 186;\n  t[159] = 8486;\n  t[160] = 230;\n  t[161] = 248;\n  t[162] = 191;\n  t[163] = 161;\n  t[164] = 172;\n  t[165] = 8730;\n  t[166] = 402;\n  t[167] = 8776;\n  t[168] = 8710;\n  t[169] = 171;\n  t[170] = 187;\n  t[171] = 8230;\n  t[200] = 193;\n  t[203] = 205;\n  t[210] = 218;\n  t[223] = 711;\n  t[224] = 321;\n  t[225] = 322;\n  t[226] = 352;\n  t[227] = 353;\n  t[228] = 381;\n  t[229] = 382;\n  t[233] = 221;\n  t[234] = 253;\n  t[252] = 263;\n  t[253] = 268;\n  t[254] = 269;\n  t[258] = 258;\n  t[260] = 260;\n  t[261] = 261;\n  t[265] = 280;\n  t[266] = 281;\n  t[267] = 282;\n  t[268] = 283;\n  t[269] = 313;\n  t[275] = 323;\n  t[276] = 324;\n  t[278] = 328;\n  t[283] = 344;\n  t[284] = 345;\n  t[285] = 346;\n  t[286] = 347;\n  t[292] = 367;\n  t[295] = 377;\n  t[296] = 378;\n  t[298] = 380;\n  t[305] = 963;\n  t[306] = 964;\n  t[307] = 966;\n  t[308] = 8215;\n  t[309] = 8252;\n  t[310] = 8319;\n  t[311] = 8359;\n  t[312] = 8592;\n  t[313] = 8593;\n  t[337] = 9552;\n  t[493] = 1039;\n  t[494] = 1040;\n  t[705] = 1524;\n  t[706] = 8362;\n  t[710] = 64288;\n  t[711] = 64298;\n  t[759] = 1617;\n  t[761] = 1776;\n  t[763] = 1778;\n  t[775] = 1652;\n  t[777] = 1764;\n  t[778] = 1780;\n  t[779] = 1781;\n  t[780] = 1782;\n  t[782] = 771;\n  t[783] = 64726;\n  t[786] = 8363;\n  t[788] = 8532;\n  t[790] = 768;\n  t[791] = 769;\n  t[792] = 768;\n  t[795] = 803;\n  t[797] = 64336;\n  t[798] = 64337;\n  t[799] = 64342;\n  t[800] = 64343;\n  t[801] = 64344;\n  t[802] = 64345;\n  t[803] = 64362;\n  t[804] = 64363;\n  t[805] = 64364;\n  t[2424] = 7821;\n  t[2425] = 7822;\n  t[2426] = 7823;\n  t[2427] = 7824;\n  t[2428] = 7825;\n  t[2429] = 7826;\n  t[2430] = 7827;\n  t[2433] = 7682;\n  t[2678] = 8045;\n  t[2679] = 8046;\n  t[2830] = 1552;\n  t[2838] = 686;\n  t[2840] = 751;\n  t[2842] = 753;\n  t[2843] = 754;\n  t[2844] = 755;\n  t[2846] = 757;\n  t[2856] = 767;\n  t[2857] = 848;\n  t[2858] = 849;\n  t[2862] = 853;\n  t[2863] = 854;\n  t[2864] = 855;\n  t[2865] = 861;\n  t[2866] = 862;\n  t[2906] = 7460;\n  t[2908] = 7462;\n  t[2909] = 7463;\n  t[2910] = 7464;\n  t[2912] = 7466;\n  t[2913] = 7467;\n  t[2914] = 7468;\n  t[2916] = 7470;\n  t[2917] = 7471;\n  t[2918] = 7472;\n  t[2920] = 7474;\n  t[2921] = 7475;\n  t[2922] = 7476;\n  t[2924] = 7478;\n  t[2925] = 7479;\n  t[2926] = 7480;\n  t[2928] = 7482;\n  t[2929] = 7483;\n  t[2930] = 7484;\n  t[2932] = 7486;\n  t[2933] = 7487;\n  t[2934] = 7488;\n  t[2936] = 7490;\n  t[2937] = 7491;\n  t[2938] = 7492;\n  t[2940] = 7494;\n  t[2941] = 7495;\n  t[2942] = 7496;\n  t[2944] = 7498;\n  t[2946] = 7500;\n  t[2948] = 7502;\n  t[2950] = 7504;\n  t[2951] = 7505;\n  t[2952] = 7506;\n  t[2954] = 7508;\n  t[2955] = 7509;\n  t[2956] = 7510;\n  t[2958] = 7512;\n  t[2959] = 7513;\n  t[2960] = 7514;\n  t[2962] = 7516;\n  t[2963] = 7517;\n  t[2964] = 7518;\n  t[2966] = 7520;\n  t[2967] = 7521;\n  t[2968] = 7522;\n  t[2970] = 7524;\n  t[2971] = 7525;\n  t[2972] = 7526;\n  t[2974] = 7528;\n  t[2975] = 7529;\n  t[2976] = 7530;\n  t[2978] = 1537;\n  t[2979] = 1538;\n  t[2980] = 1539;\n  t[2982] = 1549;\n  t[2983] = 1551;\n  t[2984] = 1552;\n  t[2986] = 1554;\n  t[2987] = 1555;\n  t[2988] = 1556;\n  t[2990] = 1623;\n  t[2991] = 1624;\n  t[2995] = 1775;\n  t[2999] = 1791;\n  t[3002] = 64290;\n  t[3003] = 64291;\n  t[3004] = 64292;\n  t[3006] = 64294;\n  t[3007] = 64295;\n  t[3008] = 64296;\n  t[3011] = 1900;\n  t[3014] = 8223;\n  t[3015] = 8244;\n  t[3017] = 7532;\n  t[3018] = 7533;\n  t[3019] = 7534;\n  t[3075] = 7590;\n  t[3076] = 7591;\n  t[3079] = 7594;\n  t[3080] = 7595;\n  t[3083] = 7598;\n  t[3084] = 7599;\n  t[3087] = 7602;\n  t[3088] = 7603;\n  t[3091] = 7606;\n  t[3092] = 7607;\n  t[3095] = 7610;\n  t[3096] = 7611;\n  t[3099] = 7614;\n  t[3100] = 7615;\n  t[3103] = 7618;\n  t[3104] = 7619;\n  t[3107] = 8337;\n  t[3108] = 8338;\n  t[3116] = 1884;\n  t[3119] = 1885;\n  t[3120] = 1885;\n  t[3123] = 1886;\n  t[3124] = 1886;\n  t[3127] = 1887;\n  t[3128] = 1887;\n  t[3131] = 1888;\n  t[3132] = 1888;\n  t[3135] = 1889;\n  t[3136] = 1889;\n  t[3139] = 1890;\n  t[3140] = 1890;\n  t[3143] = 1891;\n  t[3144] = 1891;\n  t[3147] = 1892;\n  t[3148] = 1892;\n  t[3153] = 580;\n  t[3154] = 581;\n  t[3157] = 584;\n  t[3158] = 585;\n  t[3161] = 588;\n  t[3162] = 589;\n  t[3165] = 891;\n  t[3166] = 892;\n  t[3169] = 1274;\n  t[3170] = 1275;\n  t[3173] = 1278;\n  t[3174] = 1279;\n  t[3181] = 7622;\n  t[3182] = 7623;\n  t[3282] = 11799;\n  t[3316] = 578;\n  t[3379] = 42785;\n  t[3393] = 1159;\n  t[3416] = 8377;\n});\n\n// The glyph map for ArialBlack differs slightly from the glyph map used for\n// other well-known standard fonts. Hence we use this (incomplete) CID to GID\n// mapping to adjust the glyph map for non-embedded ArialBlack fonts.\nconst getSupplementalGlyphMapForArialBlack = getLookupTableFactory(function (\n  t\n) {\n  t[227] = 322;\n  t[264] = 261;\n  t[291] = 346;\n});\n\n// The glyph map for Calibri (a Windows font) differs from the glyph map used\n// in the standard fonts. Hence we use this (incomplete) CID to GID mapping to\n// adjust the glyph map for non-embedded Calibri fonts.\nconst getSupplementalGlyphMapForCalibri = getLookupTableFactory(function (t) {\n  t[1] = 32;\n  t[4] = 65;\n  t[6] = 193;\n  t[17] = 66;\n  t[18] = 67;\n  t[21] = 268;\n  t[24] = 68;\n  t[28] = 69;\n  t[30] = 201;\n  t[32] = 282;\n  t[38] = 70;\n  t[39] = 71;\n  t[44] = 72;\n  t[47] = 73;\n  t[49] = 205;\n  t[58] = 74;\n  t[60] = 75;\n  t[62] = 76;\n  t[68] = 77;\n  t[69] = 78;\n  t[75] = 79;\n  t[87] = 80;\n  t[89] = 81;\n  t[90] = 82;\n  t[92] = 344;\n  t[94] = 83;\n  t[97] = 352;\n  t[100] = 84;\n  t[104] = 85;\n  t[115] = 86;\n  t[116] = 87;\n  t[121] = 88;\n  t[122] = 89;\n  t[124] = 221;\n  t[127] = 90;\n  t[129] = 381;\n  t[258] = 97;\n  t[260] = 225;\n  t[268] = 261;\n  t[271] = 98;\n  t[272] = 99;\n  t[273] = 263;\n  t[275] = 269;\n  t[282] = 100;\n  t[286] = 101;\n  t[288] = 233;\n  t[290] = 283;\n  t[295] = 281;\n  t[296] = 102;\n  t[336] = 103;\n  t[346] = 104;\n  t[349] = 105;\n  t[351] = 237;\n  t[361] = 106;\n  t[364] = 107;\n  t[367] = 108;\n  t[371] = 322;\n  t[373] = 109;\n  t[374] = 110;\n  t[381] = 111;\n  t[383] = 243;\n  t[393] = 112;\n  t[395] = 113;\n  t[396] = 114;\n  t[398] = 345;\n  t[400] = 115;\n  t[401] = 347;\n  t[403] = 353;\n  t[410] = 116;\n  t[437] = 117;\n  t[448] = 118;\n  t[449] = 119;\n  t[454] = 120;\n  t[455] = 121;\n  t[457] = 253;\n  t[460] = 122;\n  t[462] = 382;\n  t[463] = 380;\n  t[853] = 44;\n  t[855] = 58;\n  t[856] = 46;\n  t[876] = 47;\n  t[878] = 45;\n  t[882] = 45;\n  t[894] = 40;\n  t[895] = 41;\n  t[896] = 91;\n  t[897] = 93;\n  t[923] = 64;\n  t[1004] = 48;\n  t[1005] = 49;\n  t[1006] = 50;\n  t[1007] = 51;\n  t[1008] = 52;\n  t[1009] = 53;\n  t[1010] = 54;\n  t[1011] = 55;\n  t[1012] = 56;\n  t[1013] = 57;\n  t[1081] = 37;\n  t[1085] = 43;\n  t[1086] = 45;\n});\n\nfunction getStandardFontName(name) {\n  const fontName = normalizeFontName(name);\n  const stdFontMap = getStdFontMap();\n  return stdFontMap[fontName];\n}\n\nexport {\n  getFontNameToFileMap,\n  getGlyphMapForStandardFonts,\n  getNonStdFontMap,\n  getSerifFonts,\n  getStandardFontName,\n  getStdFontMap,\n  getSupplementalGlyphMapForArialBlack,\n  getSupplementalGlyphMapForCalibri,\n  getSymbolsFonts,\n};\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { unreachable } from \"../shared/util.js\";\n\nclass ToUnicodeMap {\n  constructor(cmap = []) {\n    // The elements of this._map can be integers or strings, depending on how\n    // `cmap` was created.\n    this._map = cmap;\n  }\n\n  get length() {\n    return this._map.length;\n  }\n\n  forEach(callback) {\n    for (const charCode in this._map) {\n      callback(charCode, this._map[charCode].charCodeAt(0));\n    }\n  }\n\n  has(i) {\n    return this._map[i] !== undefined;\n  }\n\n  get(i) {\n    return this._map[i];\n  }\n\n  charCodeOf(value) {\n    // `Array.prototype.indexOf` is *extremely* inefficient for arrays which\n    // are both very sparse and very large (see issue8372.pdf).\n    const map = this._map;\n    if (map.length <= 0x10000) {\n      return map.indexOf(value);\n    }\n    for (const charCode in map) {\n      if (map[charCode] === value) {\n        return charCode | 0;\n      }\n    }\n    return -1;\n  }\n\n  amend(map) {\n    for (const charCode in map) {\n      this._map[charCode] = map[charCode];\n    }\n  }\n}\n\nclass IdentityToUnicodeMap {\n  constructor(firstChar, lastChar) {\n    this.firstChar = firstChar;\n    this.lastChar = lastChar;\n  }\n\n  get length() {\n    return this.lastChar + 1 - this.firstChar;\n  }\n\n  forEach(callback) {\n    for (let i = this.firstChar, ii = this.lastChar; i <= ii; i++) {\n      callback(i, i);\n    }\n  }\n\n  has(i) {\n    return this.firstChar <= i && i <= this.lastChar;\n  }\n\n  get(i) {\n    if (this.firstChar <= i && i <= this.lastChar) {\n      return String.fromCharCode(i);\n    }\n    return undefined;\n  }\n\n  charCodeOf(v) {\n    return Number.isInteger(v) && v >= this.firstChar && v <= this.lastChar\n      ? v\n      : -1;\n  }\n\n  amend(map) {\n    unreachable(\"Should not call amend()\");\n  }\n}\n\nexport { IdentityToUnicodeMap, ToUnicodeMap };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { CFFCompiler, CFFParser } from \"./cff_parser.js\";\nimport { SEAC_ANALYSIS_ENABLED, type1FontGlyphMapping } from \"./fonts_utils.js\";\nimport { warn } from \"../shared/util.js\";\n\nclass CFFFont {\n  constructor(file, properties) {\n    this.properties = properties;\n\n    const parser = new CFFParser(file, properties, SEAC_ANALYSIS_ENABLED);\n    this.cff = parser.parse();\n    this.cff.duplicateFirstGlyph();\n    const compiler = new CFFCompiler(this.cff);\n    this.seacs = this.cff.seacs;\n    try {\n      this.data = compiler.compile();\n    } catch (e) {\n      warn(\"Failed to compile font \" + properties.loadedName);\n      // There may have just been an issue with the compiler, set the data\n      // anyway and hope the font loaded.\n      this.data = file;\n    }\n    this._createBuiltInEncoding();\n  }\n\n  get numGlyphs() {\n    return this.cff.charStrings.count;\n  }\n\n  getCharset() {\n    return this.cff.charset.charset;\n  }\n\n  getGlyphMapping() {\n    const cff = this.cff;\n    const properties = this.properties;\n    const charsets = cff.charset.charset;\n    let charCodeToGlyphId;\n    let glyphId;\n\n    if (properties.composite) {\n      charCodeToGlyphId = Object.create(null);\n      let charCode;\n      if (cff.isCIDFont) {\n        // If the font is actually a CID font then we should use the charset\n        // to map CIDs to GIDs.\n        for (glyphId = 0; glyphId < charsets.length; glyphId++) {\n          const cid = charsets[glyphId];\n          charCode = properties.cMap.charCodeOf(cid);\n          charCodeToGlyphId[charCode] = glyphId;\n        }\n      } else {\n        // If it is NOT actually a CID font then CIDs should be mapped\n        // directly to GIDs.\n        for (glyphId = 0; glyphId < cff.charStrings.count; glyphId++) {\n          charCode = properties.cMap.charCodeOf(glyphId);\n          charCodeToGlyphId[charCode] = glyphId;\n        }\n      }\n      return charCodeToGlyphId;\n    }\n\n    let encoding = cff.encoding ? cff.encoding.encoding : null;\n    if (properties.isInternalFont) {\n      encoding = properties.defaultEncoding;\n    }\n    charCodeToGlyphId = type1FontGlyphMapping(properties, encoding, charsets);\n    return charCodeToGlyphId;\n  }\n\n  hasGlyphId(id) {\n    return this.cff.hasGlyphId(id);\n  }\n\n  /**\n   * @private\n   */\n  _createBuiltInEncoding() {\n    const { charset, encoding } = this.cff;\n    if (!charset || !encoding) {\n      return;\n    }\n    const charsets = charset.charset,\n      encodings = encoding.encoding;\n    const map = [];\n\n    for (const charCode in encodings) {\n      const glyphId = encodings[charCode];\n      if (glyphId >= 0) {\n        const glyphName = charsets[glyphId];\n        if (glyphName) {\n          map[charCode] = glyphName;\n        }\n      }\n    }\n    if (map.length > 0) {\n      this.properties.builtInEncoding = map;\n    }\n  }\n}\n\nexport { CFFFont };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n  bytesToString,\n  FONT_IDENTITY_MATRIX,\n  FormatError,\n  unreachable,\n  warn,\n} from \"../shared/util.js\";\nimport { CFFParser } from \"./cff_parser.js\";\nimport { getGlyphsUnicode } from \"./glyphlist.js\";\nimport { StandardEncoding } from \"./encodings.js\";\nimport { Stream } from \"./stream.js\";\n\nfunction getLong(data, offset) {\n  return (\n    (data[offset] << 24) |\n    (data[offset + 1] << 16) |\n    (data[offset + 2] << 8) |\n    data[offset + 3]\n  );\n}\n\nfunction getUshort(data, offset) {\n  return (data[offset] << 8) | data[offset + 1];\n}\n\nfunction getSubroutineBias(subrs) {\n  const numSubrs = subrs.length;\n  let bias = 32768;\n  if (numSubrs < 1240) {\n    bias = 107;\n  } else if (numSubrs < 33900) {\n    bias = 1131;\n  }\n  return bias;\n}\n\nfunction parseCmap(data, start, end) {\n  const offset =\n    getUshort(data, start + 2) === 1\n      ? getLong(data, start + 8)\n      : getLong(data, start + 16);\n  const format = getUshort(data, start + offset);\n  let ranges, p, i;\n  if (format === 4) {\n    getUshort(data, start + offset + 2); // length\n    const segCount = getUshort(data, start + offset + 6) >> 1;\n    p = start + offset + 14;\n    ranges = [];\n    for (i = 0; i < segCount; i++, p += 2) {\n      ranges[i] = { end: getUshort(data, p) };\n    }\n    p += 2;\n    for (i = 0; i < segCount; i++, p += 2) {\n      ranges[i].start = getUshort(data, p);\n    }\n    for (i = 0; i < segCount; i++, p += 2) {\n      ranges[i].idDelta = getUshort(data, p);\n    }\n    for (i = 0; i < segCount; i++, p += 2) {\n      let idOffset = getUshort(data, p);\n      if (idOffset === 0) {\n        continue;\n      }\n      ranges[i].ids = [];\n      for (let j = 0, jj = ranges[i].end - ranges[i].start + 1; j < jj; j++) {\n        ranges[i].ids[j] = getUshort(data, p + idOffset);\n        idOffset += 2;\n      }\n    }\n    return ranges;\n  } else if (format === 12) {\n    getLong(data, start + offset + 4); // length\n    const groups = getLong(data, start + offset + 12);\n    p = start + offset + 16;\n    ranges = [];\n    for (i = 0; i < groups; i++) {\n      ranges.push({\n        start: getLong(data, p),\n        end: getLong(data, p + 4),\n        idDelta: getLong(data, p + 8) - getLong(data, p),\n      });\n      p += 12;\n    }\n    return ranges;\n  }\n  throw new FormatError(`unsupported cmap: ${format}`);\n}\n\nfunction parseCff(data, start, end, seacAnalysisEnabled) {\n  const properties = {};\n  const parser = new CFFParser(\n    new Stream(data, start, end - start),\n    properties,\n    seacAnalysisEnabled\n  );\n  const cff = parser.parse();\n  return {\n    glyphs: cff.charStrings.objects,\n    subrs:\n      cff.topDict.privateDict &&\n      cff.topDict.privateDict.subrsIndex &&\n      cff.topDict.privateDict.subrsIndex.objects,\n    gsubrs: cff.globalSubrIndex && cff.globalSubrIndex.objects,\n    isCFFCIDFont: cff.isCIDFont,\n    fdSelect: cff.fdSelect,\n    fdArray: cff.fdArray,\n  };\n}\n\nfunction parseGlyfTable(glyf, loca, isGlyphLocationsLong) {\n  let itemSize, itemDecode;\n  if (isGlyphLocationsLong) {\n    itemSize = 4;\n    itemDecode = function fontItemDecodeLong(data, offset) {\n      return (\n        (data[offset] << 24) |\n        (data[offset + 1] << 16) |\n        (data[offset + 2] << 8) |\n        data[offset + 3]\n      );\n    };\n  } else {\n    itemSize = 2;\n    itemDecode = function fontItemDecode(data, offset) {\n      return (data[offset] << 9) | (data[offset + 1] << 1);\n    };\n  }\n  const glyphs = [];\n  let startOffset = itemDecode(loca, 0);\n  for (let j = itemSize; j < loca.length; j += itemSize) {\n    const endOffset = itemDecode(loca, j);\n    glyphs.push(glyf.subarray(startOffset, endOffset));\n    startOffset = endOffset;\n  }\n  return glyphs;\n}\n\nfunction lookupCmap(ranges, unicode) {\n  const code = unicode.codePointAt(0);\n  let gid = 0,\n    l = 0,\n    r = ranges.length - 1;\n  while (l < r) {\n    const c = (l + r + 1) >> 1;\n    if (code < ranges[c].start) {\n      r = c - 1;\n    } else {\n      l = c;\n    }\n  }\n  if (ranges[l].start <= code && code <= ranges[l].end) {\n    gid =\n      (ranges[l].idDelta +\n        (ranges[l].ids ? ranges[l].ids[code - ranges[l].start] : code)) &\n      0xffff;\n  }\n  return {\n    charCode: code,\n    glyphId: gid,\n  };\n}\n\nfunction compileGlyf(code, cmds, font) {\n  function moveTo(x, y) {\n    cmds.push({ cmd: \"moveTo\", args: [x, y] });\n  }\n  function lineTo(x, y) {\n    cmds.push({ cmd: \"lineTo\", args: [x, y] });\n  }\n  function quadraticCurveTo(xa, ya, x, y) {\n    cmds.push({ cmd: \"quadraticCurveTo\", args: [xa, ya, x, y] });\n  }\n\n  let i = 0;\n  const numberOfContours = ((code[i] << 24) | (code[i + 1] << 16)) >> 16;\n  let flags;\n  let x = 0,\n    y = 0;\n  i += 10;\n  if (numberOfContours < 0) {\n    // composite glyph\n    do {\n      flags = (code[i] << 8) | code[i + 1];\n      const glyphIndex = (code[i + 2] << 8) | code[i + 3];\n      i += 4;\n      let arg1, arg2;\n      if (flags & 0x01) {\n        arg1 = ((code[i] << 24) | (code[i + 1] << 16)) >> 16;\n        arg2 = ((code[i + 2] << 24) | (code[i + 3] << 16)) >> 16;\n        i += 4;\n      } else {\n        arg1 = code[i++];\n        arg2 = code[i++];\n      }\n      if (flags & 0x02) {\n        x = arg1;\n        y = arg2;\n      } else {\n        x = 0;\n        y = 0; // TODO \"they are points\" ?\n      }\n      let scaleX = 1,\n        scaleY = 1,\n        scale01 = 0,\n        scale10 = 0;\n      if (flags & 0x08) {\n        scaleX = scaleY = ((code[i] << 24) | (code[i + 1] << 16)) / 1073741824;\n        i += 2;\n      } else if (flags & 0x40) {\n        scaleX = ((code[i] << 24) | (code[i + 1] << 16)) / 1073741824;\n        scaleY = ((code[i + 2] << 24) | (code[i + 3] << 16)) / 1073741824;\n        i += 4;\n      } else if (flags & 0x80) {\n        scaleX = ((code[i] << 24) | (code[i + 1] << 16)) / 1073741824;\n        scale01 = ((code[i + 2] << 24) | (code[i + 3] << 16)) / 1073741824;\n        scale10 = ((code[i + 4] << 24) | (code[i + 5] << 16)) / 1073741824;\n        scaleY = ((code[i + 6] << 24) | (code[i + 7] << 16)) / 1073741824;\n        i += 8;\n      }\n      const subglyph = font.glyphs[glyphIndex];\n      if (subglyph) {\n        cmds.push(\n          { cmd: \"save\" },\n          {\n            cmd: \"transform\",\n            args: [scaleX, scale01, scale10, scaleY, x, y],\n          }\n        );\n        compileGlyf(subglyph, cmds, font);\n        cmds.push({ cmd: \"restore\" });\n      }\n    } while (flags & 0x20);\n  } else {\n    // simple glyph\n    const endPtsOfContours = [];\n    let j, jj;\n    for (j = 0; j < numberOfContours; j++) {\n      endPtsOfContours.push((code[i] << 8) | code[i + 1]);\n      i += 2;\n    }\n    const instructionLength = (code[i] << 8) | code[i + 1];\n    i += 2 + instructionLength; // skipping the instructions\n    const numberOfPoints = endPtsOfContours[endPtsOfContours.length - 1] + 1;\n    const points = [];\n    while (points.length < numberOfPoints) {\n      flags = code[i++];\n      let repeat = 1;\n      if (flags & 0x08) {\n        repeat += code[i++];\n      }\n      while (repeat-- > 0) {\n        points.push({ flags });\n      }\n    }\n    for (j = 0; j < numberOfPoints; j++) {\n      switch (points[j].flags & 0x12) {\n        case 0x00:\n          x += ((code[i] << 24) | (code[i + 1] << 16)) >> 16;\n          i += 2;\n          break;\n        case 0x02:\n          x -= code[i++];\n          break;\n        case 0x12:\n          x += code[i++];\n          break;\n      }\n      points[j].x = x;\n    }\n    for (j = 0; j < numberOfPoints; j++) {\n      switch (points[j].flags & 0x24) {\n        case 0x00:\n          y += ((code[i] << 24) | (code[i + 1] << 16)) >> 16;\n          i += 2;\n          break;\n        case 0x04:\n          y -= code[i++];\n          break;\n        case 0x24:\n          y += code[i++];\n          break;\n      }\n      points[j].y = y;\n    }\n\n    let startPoint = 0;\n    for (i = 0; i < numberOfContours; i++) {\n      const endPoint = endPtsOfContours[i];\n      // contours might have implicit points, which is located in the middle\n      // between two neighboring off-curve points\n      const contour = points.slice(startPoint, endPoint + 1);\n      if (contour[0].flags & 1) {\n        contour.push(contour[0]); // using start point at the contour end\n      } else if (contour[contour.length - 1].flags & 1) {\n        // first is off-curve point, trying to use one from the end\n        contour.unshift(contour[contour.length - 1]);\n      } else {\n        // start and end are off-curve points, creating implicit one\n        const p = {\n          flags: 1,\n          x: (contour[0].x + contour[contour.length - 1].x) / 2,\n          y: (contour[0].y + contour[contour.length - 1].y) / 2,\n        };\n        contour.unshift(p);\n        contour.push(p);\n      }\n      moveTo(contour[0].x, contour[0].y);\n      for (j = 1, jj = contour.length; j < jj; j++) {\n        if (contour[j].flags & 1) {\n          lineTo(contour[j].x, contour[j].y);\n        } else if (contour[j + 1].flags & 1) {\n          quadraticCurveTo(\n            contour[j].x,\n            contour[j].y,\n            contour[j + 1].x,\n            contour[j + 1].y\n          );\n          j++;\n        } else {\n          quadraticCurveTo(\n            contour[j].x,\n            contour[j].y,\n            (contour[j].x + contour[j + 1].x) / 2,\n            (contour[j].y + contour[j + 1].y) / 2\n          );\n        }\n      }\n      startPoint = endPoint + 1;\n    }\n  }\n}\n\nfunction compileCharString(charStringCode, cmds, font, glyphId) {\n  function moveTo(x, y) {\n    cmds.push({ cmd: \"moveTo\", args: [x, y] });\n  }\n  function lineTo(x, y) {\n    cmds.push({ cmd: \"lineTo\", args: [x, y] });\n  }\n  function bezierCurveTo(x1, y1, x2, y2, x, y) {\n    cmds.push({ cmd: \"bezierCurveTo\", args: [x1, y1, x2, y2, x, y] });\n  }\n\n  const stack = [];\n  let x = 0,\n    y = 0;\n  let stems = 0;\n\n  function parse(code) {\n    let i = 0;\n    while (i < code.length) {\n      let stackClean = false;\n      let v = code[i++];\n      let xa, xb, ya, yb, y1, y2, y3, n, subrCode;\n      switch (v) {\n        case 1: // hstem\n          stems += stack.length >> 1;\n          stackClean = true;\n          break;\n        case 3: // vstem\n          stems += stack.length >> 1;\n          stackClean = true;\n          break;\n        case 4: // vmoveto\n          y += stack.pop();\n          moveTo(x, y);\n          stackClean = true;\n          break;\n        case 5: // rlineto\n          while (stack.length > 0) {\n            x += stack.shift();\n            y += stack.shift();\n            lineTo(x, y);\n          }\n          break;\n        case 6: // hlineto\n          while (stack.length > 0) {\n            x += stack.shift();\n            lineTo(x, y);\n            if (stack.length === 0) {\n              break;\n            }\n            y += stack.shift();\n            lineTo(x, y);\n          }\n          break;\n        case 7: // vlineto\n          while (stack.length > 0) {\n            y += stack.shift();\n            lineTo(x, y);\n            if (stack.length === 0) {\n              break;\n            }\n            x += stack.shift();\n            lineTo(x, y);\n          }\n          break;\n        case 8: // rrcurveto\n          while (stack.length > 0) {\n            xa = x + stack.shift();\n            ya = y + stack.shift();\n            xb = xa + stack.shift();\n            yb = ya + stack.shift();\n            x = xb + stack.shift();\n            y = yb + stack.shift();\n            bezierCurveTo(xa, ya, xb, yb, x, y);\n          }\n          break;\n        case 10: // callsubr\n          n = stack.pop();\n          subrCode = null;\n          if (font.isCFFCIDFont) {\n            const fdIndex = font.fdSelect.getFDIndex(glyphId);\n            if (fdIndex >= 0 && fdIndex < font.fdArray.length) {\n              const fontDict = font.fdArray[fdIndex];\n              let subrs;\n              if (fontDict.privateDict && fontDict.privateDict.subrsIndex) {\n                subrs = fontDict.privateDict.subrsIndex.objects;\n              }\n              if (subrs) {\n                // Add subroutine bias.\n                n += getSubroutineBias(subrs);\n                subrCode = subrs[n];\n              }\n            } else {\n              warn(\"Invalid fd index for glyph index.\");\n            }\n          } else {\n            subrCode = font.subrs[n + font.subrsBias];\n          }\n          if (subrCode) {\n            parse(subrCode);\n          }\n          break;\n        case 11: // return\n          return;\n        case 12:\n          v = code[i++];\n          switch (v) {\n            case 34: // flex\n              xa = x + stack.shift();\n              xb = xa + stack.shift();\n              y1 = y + stack.shift();\n              x = xb + stack.shift();\n              bezierCurveTo(xa, y, xb, y1, x, y1);\n              xa = x + stack.shift();\n              xb = xa + stack.shift();\n              x = xb + stack.shift();\n              bezierCurveTo(xa, y1, xb, y, x, y);\n              break;\n            case 35: // flex\n              xa = x + stack.shift();\n              ya = y + stack.shift();\n              xb = xa + stack.shift();\n              yb = ya + stack.shift();\n              x = xb + stack.shift();\n              y = yb + stack.shift();\n              bezierCurveTo(xa, ya, xb, yb, x, y);\n              xa = x + stack.shift();\n              ya = y + stack.shift();\n              xb = xa + stack.shift();\n              yb = ya + stack.shift();\n              x = xb + stack.shift();\n              y = yb + stack.shift();\n              bezierCurveTo(xa, ya, xb, yb, x, y);\n              stack.pop(); // fd\n              break;\n            case 36: // hflex1\n              xa = x + stack.shift();\n              y1 = y + stack.shift();\n              xb = xa + stack.shift();\n              y2 = y1 + stack.shift();\n              x = xb + stack.shift();\n              bezierCurveTo(xa, y1, xb, y2, x, y2);\n              xa = x + stack.shift();\n              xb = xa + stack.shift();\n              y3 = y2 + stack.shift();\n              x = xb + stack.shift();\n              bezierCurveTo(xa, y2, xb, y3, x, y);\n              break;\n            case 37: // flex1\n              const x0 = x,\n                y0 = y;\n              xa = x + stack.shift();\n              ya = y + stack.shift();\n              xb = xa + stack.shift();\n              yb = ya + stack.shift();\n              x = xb + stack.shift();\n              y = yb + stack.shift();\n              bezierCurveTo(xa, ya, xb, yb, x, y);\n              xa = x + stack.shift();\n              ya = y + stack.shift();\n              xb = xa + stack.shift();\n              yb = ya + stack.shift();\n              x = xb;\n              y = yb;\n              if (Math.abs(x - x0) > Math.abs(y - y0)) {\n                x += stack.shift();\n              } else {\n                y += stack.shift();\n              }\n              bezierCurveTo(xa, ya, xb, yb, x, y);\n              break;\n            default:\n              throw new FormatError(`unknown operator: 12 ${v}`);\n          }\n          break;\n        case 14: // endchar\n          if (stack.length >= 4) {\n            const achar = stack.pop();\n            const bchar = stack.pop();\n            y = stack.pop();\n            x = stack.pop();\n            cmds.push({ cmd: \"save\" }, { cmd: \"translate\", args: [x, y] });\n            let cmap = lookupCmap(\n              font.cmap,\n              String.fromCharCode(font.glyphNameMap[StandardEncoding[achar]])\n            );\n            compileCharString(\n              font.glyphs[cmap.glyphId],\n              cmds,\n              font,\n              cmap.glyphId\n            );\n            cmds.push({ cmd: \"restore\" });\n\n            cmap = lookupCmap(\n              font.cmap,\n              String.fromCharCode(font.glyphNameMap[StandardEncoding[bchar]])\n            );\n            compileCharString(\n              font.glyphs[cmap.glyphId],\n              cmds,\n              font,\n              cmap.glyphId\n            );\n          }\n          return;\n        case 18: // hstemhm\n          stems += stack.length >> 1;\n          stackClean = true;\n          break;\n        case 19: // hintmask\n          stems += stack.length >> 1;\n          i += (stems + 7) >> 3;\n          stackClean = true;\n          break;\n        case 20: // cntrmask\n          stems += stack.length >> 1;\n          i += (stems + 7) >> 3;\n          stackClean = true;\n          break;\n        case 21: // rmoveto\n          y += stack.pop();\n          x += stack.pop();\n          moveTo(x, y);\n          stackClean = true;\n          break;\n        case 22: // hmoveto\n          x += stack.pop();\n          moveTo(x, y);\n          stackClean = true;\n          break;\n        case 23: // vstemhm\n          stems += stack.length >> 1;\n          stackClean = true;\n          break;\n        case 24: // rcurveline\n          while (stack.length > 2) {\n            xa = x + stack.shift();\n            ya = y + stack.shift();\n            xb = xa + stack.shift();\n            yb = ya + stack.shift();\n            x = xb + stack.shift();\n            y = yb + stack.shift();\n            bezierCurveTo(xa, ya, xb, yb, x, y);\n          }\n          x += stack.shift();\n          y += stack.shift();\n          lineTo(x, y);\n          break;\n        case 25: // rlinecurve\n          while (stack.length > 6) {\n            x += stack.shift();\n            y += stack.shift();\n            lineTo(x, y);\n          }\n          xa = x + stack.shift();\n          ya = y + stack.shift();\n          xb = xa + stack.shift();\n          yb = ya + stack.shift();\n          x = xb + stack.shift();\n          y = yb + stack.shift();\n          bezierCurveTo(xa, ya, xb, yb, x, y);\n          break;\n        case 26: // vvcurveto\n          if (stack.length % 2) {\n            x += stack.shift();\n          }\n          while (stack.length > 0) {\n            xa = x;\n            ya = y + stack.shift();\n            xb = xa + stack.shift();\n            yb = ya + stack.shift();\n            x = xb;\n            y = yb + stack.shift();\n            bezierCurveTo(xa, ya, xb, yb, x, y);\n          }\n          break;\n        case 27: // hhcurveto\n          if (stack.length % 2) {\n            y += stack.shift();\n          }\n          while (stack.length > 0) {\n            xa = x + stack.shift();\n            ya = y;\n            xb = xa + stack.shift();\n            yb = ya + stack.shift();\n            x = xb + stack.shift();\n            y = yb;\n            bezierCurveTo(xa, ya, xb, yb, x, y);\n          }\n          break;\n        case 28:\n          stack.push(((code[i] << 24) | (code[i + 1] << 16)) >> 16);\n          i += 2;\n          break;\n        case 29: // callgsubr\n          n = stack.pop() + font.gsubrsBias;\n          subrCode = font.gsubrs[n];\n          if (subrCode) {\n            parse(subrCode);\n          }\n          break;\n        case 30: // vhcurveto\n          while (stack.length > 0) {\n            xa = x;\n            ya = y + stack.shift();\n            xb = xa + stack.shift();\n            yb = ya + stack.shift();\n            x = xb + stack.shift();\n            y = yb + (stack.length === 1 ? stack.shift() : 0);\n            bezierCurveTo(xa, ya, xb, yb, x, y);\n            if (stack.length === 0) {\n              break;\n            }\n\n            xa = x + stack.shift();\n            ya = y;\n            xb = xa + stack.shift();\n            yb = ya + stack.shift();\n            y = yb + stack.shift();\n            x = xb + (stack.length === 1 ? stack.shift() : 0);\n            bezierCurveTo(xa, ya, xb, yb, x, y);\n          }\n          break;\n        case 31: // hvcurveto\n          while (stack.length > 0) {\n            xa = x + stack.shift();\n            ya = y;\n            xb = xa + stack.shift();\n            yb = ya + stack.shift();\n            y = yb + stack.shift();\n            x = xb + (stack.length === 1 ? stack.shift() : 0);\n            bezierCurveTo(xa, ya, xb, yb, x, y);\n            if (stack.length === 0) {\n              break;\n            }\n\n            xa = x;\n            ya = y + stack.shift();\n            xb = xa + stack.shift();\n            yb = ya + stack.shift();\n            x = xb + stack.shift();\n            y = yb + (stack.length === 1 ? stack.shift() : 0);\n            bezierCurveTo(xa, ya, xb, yb, x, y);\n          }\n          break;\n        default:\n          if (v < 32) {\n            throw new FormatError(`unknown operator: ${v}`);\n          }\n          if (v < 247) {\n            stack.push(v - 139);\n          } else if (v < 251) {\n            stack.push((v - 247) * 256 + code[i++] + 108);\n          } else if (v < 255) {\n            stack.push(-(v - 251) * 256 - code[i++] - 108);\n          } else {\n            stack.push(\n              ((code[i] << 24) |\n                (code[i + 1] << 16) |\n                (code[i + 2] << 8) |\n                code[i + 3]) /\n                65536\n            );\n            i += 4;\n          }\n          break;\n      }\n      if (stackClean) {\n        stack.length = 0;\n      }\n    }\n  }\n  parse(charStringCode);\n}\n\nconst NOOP = [];\n\nclass CompiledFont {\n  constructor(fontMatrix) {\n    if (this.constructor === CompiledFont) {\n      unreachable(\"Cannot initialize CompiledFont.\");\n    }\n    this.fontMatrix = fontMatrix;\n\n    this.compiledGlyphs = Object.create(null);\n    this.compiledCharCodeToGlyphId = Object.create(null);\n  }\n\n  getPathJs(unicode) {\n    const { charCode, glyphId } = lookupCmap(this.cmap, unicode);\n    let fn = this.compiledGlyphs[glyphId];\n    if (!fn) {\n      try {\n        fn = this.compileGlyph(this.glyphs[glyphId], glyphId);\n        this.compiledGlyphs[glyphId] = fn;\n      } catch (ex) {\n        // Avoid attempting to re-compile a corrupt glyph.\n        this.compiledGlyphs[glyphId] = NOOP;\n\n        if (this.compiledCharCodeToGlyphId[charCode] === undefined) {\n          this.compiledCharCodeToGlyphId[charCode] = glyphId;\n        }\n        throw ex;\n      }\n    }\n    if (this.compiledCharCodeToGlyphId[charCode] === undefined) {\n      this.compiledCharCodeToGlyphId[charCode] = glyphId;\n    }\n    return fn;\n  }\n\n  compileGlyph(code, glyphId) {\n    if (!code || code.length === 0 || code[0] === 14) {\n      return NOOP;\n    }\n\n    let fontMatrix = this.fontMatrix;\n    if (this.isCFFCIDFont) {\n      // Top DICT's FontMatrix can be ignored because CFFCompiler always\n      // removes it and copies to FDArray DICTs.\n      const fdIndex = this.fdSelect.getFDIndex(glyphId);\n      if (fdIndex >= 0 && fdIndex < this.fdArray.length) {\n        const fontDict = this.fdArray[fdIndex];\n        fontMatrix = fontDict.getByName(\"FontMatrix\") || FONT_IDENTITY_MATRIX;\n      } else {\n        warn(\"Invalid fd index for glyph index.\");\n      }\n    }\n\n    const cmds = [\n      { cmd: \"save\" },\n      { cmd: \"transform\", args: fontMatrix.slice() },\n      { cmd: \"scale\", args: [\"size\", \"-size\"] },\n    ];\n    this.compileGlyphImpl(code, cmds, glyphId);\n\n    cmds.push({ cmd: \"restore\" });\n\n    return cmds;\n  }\n\n  compileGlyphImpl() {\n    unreachable(\"Children classes should implement this.\");\n  }\n\n  hasBuiltPath(unicode) {\n    const { charCode, glyphId } = lookupCmap(this.cmap, unicode);\n    return (\n      this.compiledGlyphs[glyphId] !== undefined &&\n      this.compiledCharCodeToGlyphId[charCode] !== undefined\n    );\n  }\n}\n\nclass TrueTypeCompiled extends CompiledFont {\n  constructor(glyphs, cmap, fontMatrix) {\n    super(fontMatrix || [0.000488, 0, 0, 0.000488, 0, 0]);\n\n    this.glyphs = glyphs;\n    this.cmap = cmap;\n  }\n\n  compileGlyphImpl(code, cmds) {\n    compileGlyf(code, cmds, this);\n  }\n}\n\nclass Type2Compiled extends CompiledFont {\n  constructor(cffInfo, cmap, fontMatrix, glyphNameMap) {\n    super(fontMatrix || [0.001, 0, 0, 0.001, 0, 0]);\n\n    this.glyphs = cffInfo.glyphs;\n    this.gsubrs = cffInfo.gsubrs || [];\n    this.subrs = cffInfo.subrs || [];\n    this.cmap = cmap;\n    this.glyphNameMap = glyphNameMap || getGlyphsUnicode();\n\n    this.gsubrsBias = getSubroutineBias(this.gsubrs);\n    this.subrsBias = getSubroutineBias(this.subrs);\n\n    this.isCFFCIDFont = cffInfo.isCFFCIDFont;\n    this.fdSelect = cffInfo.fdSelect;\n    this.fdArray = cffInfo.fdArray;\n  }\n\n  compileGlyphImpl(code, cmds, glyphId) {\n    compileCharString(code, cmds, this, glyphId);\n  }\n}\n\nclass FontRendererFactory {\n  static create(font, seacAnalysisEnabled) {\n    const data = new Uint8Array(font.data);\n    let cmap, glyf, loca, cff, indexToLocFormat, unitsPerEm;\n    const numTables = getUshort(data, 4);\n    for (let i = 0, p = 12; i < numTables; i++, p += 16) {\n      const tag = bytesToString(data.subarray(p, p + 4));\n      const offset = getLong(data, p + 8);\n      const length = getLong(data, p + 12);\n      switch (tag) {\n        case \"cmap\":\n          cmap = parseCmap(data, offset, offset + length);\n          break;\n        case \"glyf\":\n          glyf = data.subarray(offset, offset + length);\n          break;\n        case \"loca\":\n          loca = data.subarray(offset, offset + length);\n          break;\n        case \"head\":\n          unitsPerEm = getUshort(data, offset + 18);\n          indexToLocFormat = getUshort(data, offset + 50);\n          break;\n        case \"CFF \":\n          cff = parseCff(data, offset, offset + length, seacAnalysisEnabled);\n          break;\n      }\n    }\n\n    if (glyf) {\n      const fontMatrix = !unitsPerEm\n        ? font.fontMatrix\n        : [1 / unitsPerEm, 0, 0, 1 / unitsPerEm, 0, 0];\n      return new TrueTypeCompiled(\n        parseGlyfTable(glyf, loca, indexToLocFormat),\n        cmap,\n        fontMatrix\n      );\n    }\n    return new Type2Compiled(cff, cmap, font.fontMatrix, font.glyphNameMap);\n  }\n}\n\nexport { FontRendererFactory };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nconst ON_CURVE_POINT = 1 << 0;\nconst X_SHORT_VECTOR = 1 << 1;\nconst Y_SHORT_VECTOR = 1 << 2;\nconst REPEAT_FLAG = 1 << 3;\nconst X_IS_SAME_OR_POSITIVE_X_SHORT_VECTOR = 1 << 4;\nconst Y_IS_SAME_OR_POSITIVE_Y_SHORT_VECTOR = 1 << 5;\nconst OVERLAP_SIMPLE = 1 << 6;\n\nconst ARG_1_AND_2_ARE_WORDS = 1 << 0;\nconst ARGS_ARE_XY_VALUES = 1 << 1;\n// const ROUND_XY_TO_GRID = 1 << 2;\nconst WE_HAVE_A_SCALE = 1 << 3;\nconst MORE_COMPONENTS = 1 << 5;\nconst WE_HAVE_AN_X_AND_Y_SCALE = 1 << 6;\nconst WE_HAVE_A_TWO_BY_TWO = 1 << 7;\nconst WE_HAVE_INSTRUCTIONS = 1 << 8;\n// const USE_MY_METRICS = 1 << 9;\n// const OVERLAP_COMPOUND = 1 << 10;\n// const SCALED_COMPONENT_OFFSET = 1 << 11;\n// const UNSCALED_COMPONENT_OFFSET = 1 << 12;\n\n/**\n * GlyfTable object represents a glyf table containing glyph information:\n *  - glyph header (xMin, yMin, xMax, yMax);\n *  - contours if any;\n *  - components if the glyph is a composite.\n *\n * It's possible to re-scale each glyph in order to have a new font which\n * exactly fits an other one: the goal is to be able to build some substitution\n * font for well-known fonts (Myriad, Arial, ...).\n *\n * A full description of glyf table can be found here\n * https://developer.apple.com/fonts/TrueType-Reference-Manual/RM06/Chap6glyf.html\n */\nclass GlyfTable {\n  constructor({ glyfTable, isGlyphLocationsLong, locaTable, numGlyphs }) {\n    this.glyphs = [];\n    const loca = new DataView(\n      locaTable.buffer,\n      locaTable.byteOffset,\n      locaTable.byteLength\n    );\n    const glyf = new DataView(\n      glyfTable.buffer,\n      glyfTable.byteOffset,\n      glyfTable.byteLength\n    );\n    const offsetSize = isGlyphLocationsLong ? 4 : 2;\n    let prev = isGlyphLocationsLong ? loca.getUint32(0) : 2 * loca.getUint16(0);\n    let pos = 0;\n    for (let i = 0; i < numGlyphs; i++) {\n      pos += offsetSize;\n      const next = isGlyphLocationsLong\n        ? loca.getUint32(pos)\n        : 2 * loca.getUint16(pos);\n      if (next === prev) {\n        this.glyphs.push(new Glyph({}));\n        continue;\n      }\n\n      const glyph = Glyph.parse(prev, glyf);\n      this.glyphs.push(glyph);\n\n      prev = next;\n    }\n  }\n\n  getSize() {\n    return this.glyphs.reduce((a, g) => {\n      const size = g.getSize();\n      // Round to next multiple of 4 if needed.\n      return a + ((size + 3) & ~3);\n    }, 0);\n  }\n\n  write() {\n    const totalSize = this.getSize();\n    const glyfTable = new DataView(new ArrayBuffer(totalSize));\n    const isLocationLong = totalSize > /* 0xffff * 2 */ 0x1fffe;\n    const offsetSize = isLocationLong ? 4 : 2;\n    const locaTable = new DataView(\n      new ArrayBuffer((this.glyphs.length + 1) * offsetSize)\n    );\n\n    if (isLocationLong) {\n      locaTable.setUint32(0, 0);\n    } else {\n      locaTable.setUint16(0, 0);\n    }\n\n    let pos = 0;\n    let locaIndex = 0;\n    for (const glyph of this.glyphs) {\n      pos += glyph.write(pos, glyfTable);\n      // Round to next multiple of 4 if needed.\n      pos = (pos + 3) & ~3;\n\n      locaIndex += offsetSize;\n      if (isLocationLong) {\n        locaTable.setUint32(locaIndex, pos);\n      } else {\n        locaTable.setUint16(locaIndex, pos >> 1);\n      }\n    }\n\n    return {\n      isLocationLong,\n      loca: new Uint8Array(locaTable.buffer),\n      glyf: new Uint8Array(glyfTable.buffer),\n    };\n  }\n\n  scale(factors) {\n    for (let i = 0, ii = this.glyphs.length; i < ii; i++) {\n      this.glyphs[i].scale(factors[i]);\n    }\n  }\n}\n\nclass Glyph {\n  constructor({ header = null, simple = null, composites = null }) {\n    this.header = header;\n    this.simple = simple;\n    this.composites = composites;\n  }\n\n  static parse(pos, glyf) {\n    const [read, header] = GlyphHeader.parse(pos, glyf);\n    pos += read;\n\n    if (header.numberOfContours < 0) {\n      // Composite glyph.\n      const composites = [];\n      while (true) {\n        const [n, composite] = CompositeGlyph.parse(pos, glyf);\n        pos += n;\n        composites.push(composite);\n        if (!(composite.flags & MORE_COMPONENTS)) {\n          break;\n        }\n      }\n\n      return new Glyph({ header, composites });\n    }\n\n    const simple = SimpleGlyph.parse(pos, glyf, header.numberOfContours);\n\n    return new Glyph({ header, simple });\n  }\n\n  getSize() {\n    if (!this.header) {\n      return 0;\n    }\n    const size = this.simple\n      ? this.simple.getSize()\n      : this.composites.reduce((a, c) => a + c.getSize(), 0);\n    return this.header.getSize() + size;\n  }\n\n  write(pos, buf) {\n    if (!this.header) {\n      return 0;\n    }\n\n    const spos = pos;\n    pos += this.header.write(pos, buf);\n    if (this.simple) {\n      pos += this.simple.write(pos, buf);\n    } else {\n      for (const composite of this.composites) {\n        pos += composite.write(pos, buf);\n      }\n    }\n\n    return pos - spos;\n  }\n\n  scale(factor) {\n    if (!this.header) {\n      return;\n    }\n\n    const xMiddle = (this.header.xMin + this.header.xMax) / 2;\n    this.header.scale(xMiddle, factor);\n    if (this.simple) {\n      this.simple.scale(xMiddle, factor);\n    } else {\n      for (const composite of this.composites) {\n        composite.scale(xMiddle, factor);\n      }\n    }\n  }\n}\n\nclass GlyphHeader {\n  constructor({ numberOfContours, xMin, yMin, xMax, yMax }) {\n    this.numberOfContours = numberOfContours;\n    this.xMin = xMin;\n    this.yMin = yMin;\n    this.xMax = xMax;\n    this.yMax = yMax;\n  }\n\n  static parse(pos, glyf) {\n    return [\n      10,\n      new GlyphHeader({\n        numberOfContours: glyf.getInt16(pos),\n        xMin: glyf.getInt16(pos + 2),\n        yMin: glyf.getInt16(pos + 4),\n        xMax: glyf.getInt16(pos + 6),\n        yMax: glyf.getInt16(pos + 8),\n      }),\n    ];\n  }\n\n  getSize() {\n    return 10;\n  }\n\n  write(pos, buf) {\n    buf.setInt16(pos, this.numberOfContours);\n    buf.setInt16(pos + 2, this.xMin);\n    buf.setInt16(pos + 4, this.yMin);\n    buf.setInt16(pos + 6, this.xMax);\n    buf.setInt16(pos + 8, this.yMax);\n\n    return 10;\n  }\n\n  scale(x, factor) {\n    this.xMin = Math.round(x + (this.xMin - x) * factor);\n    this.xMax = Math.round(x + (this.xMax - x) * factor);\n  }\n}\n\nclass Contour {\n  constructor({ flags, xCoordinates, yCoordinates }) {\n    this.xCoordinates = xCoordinates;\n    this.yCoordinates = yCoordinates;\n    this.flags = flags;\n  }\n}\n\nclass SimpleGlyph {\n  constructor({ contours, instructions }) {\n    this.contours = contours;\n    this.instructions = instructions;\n  }\n\n  static parse(pos, glyf, numberOfContours) {\n    const endPtsOfContours = [];\n    for (let i = 0; i < numberOfContours; i++) {\n      const endPt = glyf.getUint16(pos);\n      pos += 2;\n      endPtsOfContours.push(endPt);\n    }\n    const numberOfPt = endPtsOfContours[numberOfContours - 1] + 1;\n    const instructionLength = glyf.getUint16(pos);\n    pos += 2;\n    const instructions = new Uint8Array(glyf).slice(\n      pos,\n      pos + instructionLength\n    );\n    pos += instructionLength;\n\n    const flags = [];\n    for (let i = 0; i < numberOfPt; pos++, i++) {\n      let flag = glyf.getUint8(pos);\n      flags.push(flag);\n      if (flag & REPEAT_FLAG) {\n        const count = glyf.getUint8(++pos);\n        flag ^= REPEAT_FLAG;\n        for (let m = 0; m < count; m++) {\n          flags.push(flag);\n        }\n        i += count;\n      }\n    }\n\n    const allXCoordinates = [];\n    let xCoordinates = [];\n    let yCoordinates = [];\n    let pointFlags = [];\n    const contours = [];\n    let endPtsOfContoursIndex = 0;\n    let lastCoordinate = 0;\n\n    // Get x coordinates.\n    for (let i = 0; i < numberOfPt; i++) {\n      const flag = flags[i];\n      if (flag & X_SHORT_VECTOR) {\n        // 8-bits unsigned value.\n        const x = glyf.getUint8(pos++);\n        lastCoordinate += flag & X_IS_SAME_OR_POSITIVE_X_SHORT_VECTOR ? x : -x;\n        xCoordinates.push(lastCoordinate);\n      } else if (flag & X_IS_SAME_OR_POSITIVE_X_SHORT_VECTOR) {\n        // IS_SAME.\n        xCoordinates.push(lastCoordinate);\n      } else {\n        lastCoordinate += glyf.getInt16(pos);\n        pos += 2;\n        xCoordinates.push(lastCoordinate);\n      }\n\n      if (endPtsOfContours[endPtsOfContoursIndex] === i) {\n        // Next entry is the first one of a new contour.\n        endPtsOfContoursIndex++;\n        allXCoordinates.push(xCoordinates);\n        xCoordinates = [];\n      }\n    }\n\n    lastCoordinate = 0;\n    endPtsOfContoursIndex = 0;\n    for (let i = 0; i < numberOfPt; i++) {\n      const flag = flags[i];\n      if (flag & Y_SHORT_VECTOR) {\n        // 8-bits unsigned value.\n        const y = glyf.getUint8(pos++);\n        lastCoordinate += flag & Y_IS_SAME_OR_POSITIVE_Y_SHORT_VECTOR ? y : -y;\n        yCoordinates.push(lastCoordinate);\n      } else if (flag & Y_IS_SAME_OR_POSITIVE_Y_SHORT_VECTOR) {\n        // IS_SAME.\n        yCoordinates.push(lastCoordinate);\n      } else {\n        lastCoordinate += glyf.getInt16(pos);\n        pos += 2;\n        yCoordinates.push(lastCoordinate);\n      }\n\n      pointFlags.push((flag & ON_CURVE_POINT) | (flag & OVERLAP_SIMPLE));\n\n      if (endPtsOfContours[endPtsOfContoursIndex] === i) {\n        // Next entry is the first one of a new contour.\n        xCoordinates = allXCoordinates[endPtsOfContoursIndex];\n        endPtsOfContoursIndex++;\n        contours.push(\n          new Contour({\n            flags: pointFlags,\n            xCoordinates,\n            yCoordinates,\n          })\n        );\n        yCoordinates = [];\n        pointFlags = [];\n      }\n    }\n\n    return new SimpleGlyph({\n      contours,\n      instructions,\n    });\n  }\n\n  getSize() {\n    let size = this.contours.length * 2 + 2 + this.instructions.length;\n    let lastX = 0;\n    let lastY = 0;\n    for (const contour of this.contours) {\n      size += contour.flags.length;\n      for (let i = 0, ii = contour.xCoordinates.length; i < ii; i++) {\n        const x = contour.xCoordinates[i];\n        const y = contour.yCoordinates[i];\n        let abs = Math.abs(x - lastX);\n        if (abs > 255) {\n          size += 2;\n        } else if (abs > 0) {\n          size += 1;\n        }\n        lastX = x;\n\n        abs = Math.abs(y - lastY);\n        if (abs > 255) {\n          size += 2;\n        } else if (abs > 0) {\n          size += 1;\n        }\n        lastY = y;\n      }\n    }\n    return size;\n  }\n\n  write(pos, buf) {\n    const spos = pos;\n    const xCoordinates = [];\n    const yCoordinates = [];\n    const flags = [];\n    let lastX = 0;\n    let lastY = 0;\n\n    for (const contour of this.contours) {\n      for (let i = 0, ii = contour.xCoordinates.length; i < ii; i++) {\n        let flag = contour.flags[i];\n        const x = contour.xCoordinates[i];\n        let delta = x - lastX;\n        if (delta === 0) {\n          flag |= X_IS_SAME_OR_POSITIVE_X_SHORT_VECTOR;\n          xCoordinates.push(0);\n        } else {\n          const abs = Math.abs(delta);\n          if (abs <= 255) {\n            flag |=\n              delta >= 0\n                ? X_SHORT_VECTOR | X_IS_SAME_OR_POSITIVE_X_SHORT_VECTOR\n                : X_SHORT_VECTOR;\n            xCoordinates.push(abs);\n          } else {\n            xCoordinates.push(delta);\n          }\n        }\n        lastX = x;\n\n        const y = contour.yCoordinates[i];\n        delta = y - lastY;\n        if (delta === 0) {\n          flag |= Y_IS_SAME_OR_POSITIVE_Y_SHORT_VECTOR;\n          yCoordinates.push(0);\n        } else {\n          const abs = Math.abs(delta);\n          if (abs <= 255) {\n            flag |=\n              delta >= 0\n                ? Y_SHORT_VECTOR | Y_IS_SAME_OR_POSITIVE_Y_SHORT_VECTOR\n                : Y_SHORT_VECTOR;\n            yCoordinates.push(abs);\n          } else {\n            yCoordinates.push(delta);\n          }\n        }\n        lastY = y;\n\n        flags.push(flag);\n      }\n\n      // Write endPtsOfContours entry.\n      buf.setUint16(pos, xCoordinates.length - 1);\n      pos += 2;\n    }\n\n    // Write instructionLength.\n    buf.setUint16(pos, this.instructions.length);\n    pos += 2;\n    if (this.instructions.length) {\n      // Write instructions.\n      new Uint8Array(buf.buffer, 0, buf.buffer.byteLength).set(\n        this.instructions,\n        pos\n      );\n      pos += this.instructions.length;\n    }\n\n    // Write flags.\n    for (const flag of flags) {\n      buf.setUint8(pos++, flag);\n    }\n\n    // Write xCoordinates.\n    for (let i = 0, ii = xCoordinates.length; i < ii; i++) {\n      const x = xCoordinates[i];\n      const flag = flags[i];\n      if (flag & X_SHORT_VECTOR) {\n        buf.setUint8(pos++, x);\n      } else if (!(flag & X_IS_SAME_OR_POSITIVE_X_SHORT_VECTOR)) {\n        buf.setInt16(pos, x);\n        pos += 2;\n      }\n    }\n\n    // Write yCoordinates.\n    for (let i = 0, ii = yCoordinates.length; i < ii; i++) {\n      const y = yCoordinates[i];\n      const flag = flags[i];\n      if (flag & Y_SHORT_VECTOR) {\n        buf.setUint8(pos++, y);\n      } else if (!(flag & Y_IS_SAME_OR_POSITIVE_Y_SHORT_VECTOR)) {\n        buf.setInt16(pos, y);\n        pos += 2;\n      }\n    }\n\n    return pos - spos;\n  }\n\n  scale(x, factor) {\n    for (const contour of this.contours) {\n      if (contour.xCoordinates.length === 0) {\n        continue;\n      }\n\n      for (let i = 0, ii = contour.xCoordinates.length; i < ii; i++) {\n        contour.xCoordinates[i] = Math.round(\n          x + (contour.xCoordinates[i] - x) * factor\n        );\n      }\n    }\n  }\n}\n\nclass CompositeGlyph {\n  constructor({\n    flags,\n    glyphIndex,\n    argument1,\n    argument2,\n    transf,\n    instructions,\n  }) {\n    this.flags = flags;\n    this.glyphIndex = glyphIndex;\n    this.argument1 = argument1;\n    this.argument2 = argument2;\n    this.transf = transf;\n    this.instructions = instructions;\n  }\n\n  static parse(pos, glyf) {\n    const spos = pos;\n    const transf = [];\n    let flags = glyf.getUint16(pos);\n    const glyphIndex = glyf.getUint16(pos + 2);\n    pos += 4;\n\n    let argument1, argument2;\n    if (flags & ARG_1_AND_2_ARE_WORDS) {\n      if (flags & ARGS_ARE_XY_VALUES) {\n        argument1 = glyf.getInt16(pos);\n        argument2 = glyf.getInt16(pos + 2);\n      } else {\n        argument1 = glyf.getUint16(pos);\n        argument2 = glyf.getUint16(pos + 2);\n      }\n      pos += 4;\n      flags ^= ARG_1_AND_2_ARE_WORDS;\n    } else {\n      argument1 = glyf.getUint8(pos);\n      argument2 = glyf.getUint8(pos + 1);\n      if (flags & ARGS_ARE_XY_VALUES) {\n        const abs1 = argument1 & 0x7f;\n        argument1 = argument1 & 0x80 ? -abs1 : abs1;\n\n        const abs2 = argument2 & 0x7f;\n        argument2 = argument2 & 0x80 ? -abs2 : abs2;\n      }\n      pos += 2;\n    }\n\n    if (flags & WE_HAVE_A_SCALE) {\n      // Single F2.14.\n      transf.push(glyf.getUint16(pos));\n      pos += 2;\n    } else if (flags & WE_HAVE_AN_X_AND_Y_SCALE) {\n      // Two F2.14.\n      transf.push(glyf.getUint16(pos), glyf.getUint16(pos + 2));\n      pos += 4;\n    } else if (flags & WE_HAVE_A_TWO_BY_TWO) {\n      // Four F2.14.\n      transf.push(\n        glyf.getUint16(pos),\n        glyf.getUint16(pos + 2),\n        glyf.getUint16(pos + 4),\n        glyf.getUint16(pos + 6)\n      );\n      pos += 8;\n    }\n\n    let instructions = null;\n    if (flags & WE_HAVE_INSTRUCTIONS) {\n      const instructionLength = glyf.getUint16(pos);\n      pos += 2;\n      instructions = new Uint8Array(glyf).slice(pos, pos + instructionLength);\n      pos += instructionLength;\n    }\n\n    return [\n      pos - spos,\n      new CompositeGlyph({\n        flags,\n        glyphIndex,\n        argument1,\n        argument2,\n        transf,\n        instructions,\n      }),\n    ];\n  }\n\n  getSize() {\n    let size = 2 + 2 + this.transf.length * 2;\n    if (this.flags & WE_HAVE_INSTRUCTIONS) {\n      size += 2 + this.instructions.length;\n    }\n\n    size += 2;\n    if (this.flags & 2) {\n      // Arguments are signed.\n      if (\n        !(\n          this.argument1 >= -128 &&\n          this.argument1 <= 127 &&\n          this.argument2 >= -128 &&\n          this.argument2 <= 127\n        )\n      ) {\n        size += 2;\n      }\n    } else {\n      if (\n        !(\n          this.argument1 >= 0 &&\n          this.argument1 <= 255 &&\n          this.argument2 >= 0 &&\n          this.argument2 <= 255\n        )\n      ) {\n        size += 2;\n      }\n    }\n\n    return size;\n  }\n\n  write(pos, buf) {\n    const spos = pos;\n\n    if (this.flags & ARGS_ARE_XY_VALUES) {\n      // Arguments are signed.\n      if (\n        !(\n          this.argument1 >= -128 &&\n          this.argument1 <= 127 &&\n          this.argument2 >= -128 &&\n          this.argument2 <= 127\n        )\n      ) {\n        this.flags |= ARG_1_AND_2_ARE_WORDS;\n      }\n    } else {\n      if (\n        !(\n          this.argument1 >= 0 &&\n          this.argument1 <= 255 &&\n          this.argument2 >= 0 &&\n          this.argument2 <= 255\n        )\n      ) {\n        this.flags |= ARG_1_AND_2_ARE_WORDS;\n      }\n    }\n\n    buf.setUint16(pos, this.flags);\n    buf.setUint16(pos + 2, this.glyphIndex);\n    pos += 4;\n\n    if (this.flags & ARG_1_AND_2_ARE_WORDS) {\n      if (this.flags & ARGS_ARE_XY_VALUES) {\n        buf.setInt16(pos, this.argument1);\n        buf.setInt16(pos + 2, this.argument2);\n      } else {\n        buf.setUint16(pos, this.argument1);\n        buf.setUint16(pos + 2, this.argument2);\n      }\n      pos += 4;\n    } else {\n      buf.setUint8(pos, this.argument1);\n      buf.setUint8(pos + 1, this.argument2);\n      pos += 2;\n    }\n\n    if (this.flags & WE_HAVE_INSTRUCTIONS) {\n      buf.setUint16(pos, this.instructions.length);\n      pos += 2;\n      // Write instructions.\n      if (this.instructions.length) {\n        new Uint8Array(buf.buffer, 0, buf.buffer.byteLength).set(\n          this.instructions,\n          pos\n        );\n        pos += this.instructions.length;\n      }\n    }\n\n    return pos - spos;\n  }\n\n  scale(x, factor) {}\n}\n\nexport { GlyfTable };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { readUint32 } from \"./core_utils.js\";\nimport { string32 } from \"../shared/util.js\";\n\nfunction writeInt16(dest, offset, num) {\n  dest[offset] = (num >> 8) & 0xff;\n  dest[offset + 1] = num & 0xff;\n}\n\nfunction writeInt32(dest, offset, num) {\n  dest[offset] = (num >> 24) & 0xff;\n  dest[offset + 1] = (num >> 16) & 0xff;\n  dest[offset + 2] = (num >> 8) & 0xff;\n  dest[offset + 3] = num & 0xff;\n}\n\nfunction writeData(dest, offset, data) {\n  if (data instanceof Uint8Array) {\n    dest.set(data, offset);\n  } else if (typeof data === \"string\") {\n    for (let i = 0, ii = data.length; i < ii; i++) {\n      dest[offset++] = data.charCodeAt(i) & 0xff;\n    }\n  } else {\n    // treating everything else as array\n    for (let i = 0, ii = data.length; i < ii; i++) {\n      dest[offset++] = data[i] & 0xff;\n    }\n  }\n}\n\nconst OTF_HEADER_SIZE = 12;\nconst OTF_TABLE_ENTRY_SIZE = 16;\n\nclass OpenTypeFileBuilder {\n  constructor(sfnt) {\n    this.sfnt = sfnt;\n    this.tables = Object.create(null);\n  }\n\n  static getSearchParams(entriesCount, entrySize) {\n    let maxPower2 = 1,\n      log2 = 0;\n    while ((maxPower2 ^ entriesCount) > maxPower2) {\n      maxPower2 <<= 1;\n      log2++;\n    }\n    const searchRange = maxPower2 * entrySize;\n    return {\n      range: searchRange,\n      entry: log2,\n      rangeShift: entrySize * entriesCount - searchRange,\n    };\n  }\n\n  toArray() {\n    let sfnt = this.sfnt;\n\n    // Tables needs to be written by ascendant alphabetic order\n    const tables = this.tables;\n    const tablesNames = Object.keys(tables);\n    tablesNames.sort();\n    const numTables = tablesNames.length;\n\n    let i, j, jj, table, tableName;\n    // layout the tables data\n    let offset = OTF_HEADER_SIZE + numTables * OTF_TABLE_ENTRY_SIZE;\n    const tableOffsets = [offset];\n    for (i = 0; i < numTables; i++) {\n      table = tables[tablesNames[i]];\n      const paddedLength = ((table.length + 3) & ~3) >>> 0;\n      offset += paddedLength;\n      tableOffsets.push(offset);\n    }\n\n    const file = new Uint8Array(offset);\n    // write the table data first (mostly for checksum)\n    for (i = 0; i < numTables; i++) {\n      table = tables[tablesNames[i]];\n      writeData(file, tableOffsets[i], table);\n    }\n\n    // sfnt version (4 bytes)\n    if (sfnt === \"true\") {\n      // Windows hates the Mac TrueType sfnt version number\n      sfnt = string32(0x00010000);\n    }\n    file[0] = sfnt.charCodeAt(0) & 0xff;\n    file[1] = sfnt.charCodeAt(1) & 0xff;\n    file[2] = sfnt.charCodeAt(2) & 0xff;\n    file[3] = sfnt.charCodeAt(3) & 0xff;\n\n    // numTables (2 bytes)\n    writeInt16(file, 4, numTables);\n\n    const searchParams = OpenTypeFileBuilder.getSearchParams(numTables, 16);\n\n    // searchRange (2 bytes)\n    writeInt16(file, 6, searchParams.range);\n    // entrySelector (2 bytes)\n    writeInt16(file, 8, searchParams.entry);\n    // rangeShift (2 bytes)\n    writeInt16(file, 10, searchParams.rangeShift);\n\n    offset = OTF_HEADER_SIZE;\n    // writing table entries\n    for (i = 0; i < numTables; i++) {\n      tableName = tablesNames[i];\n      file[offset] = tableName.charCodeAt(0) & 0xff;\n      file[offset + 1] = tableName.charCodeAt(1) & 0xff;\n      file[offset + 2] = tableName.charCodeAt(2) & 0xff;\n      file[offset + 3] = tableName.charCodeAt(3) & 0xff;\n\n      // checksum\n      let checksum = 0;\n      for (j = tableOffsets[i], jj = tableOffsets[i + 1]; j < jj; j += 4) {\n        const quad = readUint32(file, j);\n        checksum = (checksum + quad) >>> 0;\n      }\n      writeInt32(file, offset + 4, checksum);\n\n      // offset\n      writeInt32(file, offset + 8, tableOffsets[i]);\n      // length\n      writeInt32(file, offset + 12, tables[tableName].length);\n\n      offset += OTF_TABLE_ENTRY_SIZE;\n    }\n    return file;\n  }\n\n  addTable(tag, data) {\n    if (tag in this.tables) {\n      throw new Error(\"Table \" + tag + \" already exists\");\n    }\n    this.tables[tag] = data;\n  }\n}\n\nexport { OpenTypeFileBuilder };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n  CFF,\n  CFFCharset,\n  CFFCompiler,\n  CFFHeader,\n  CFFIndex,\n  CFFPrivateDict,\n  CFFStandardStrings,\n  CFFStrings,\n  CFFTopDict,\n} from \"./cff_parser.js\";\nimport { SEAC_ANALYSIS_ENABLED, type1FontGlyphMapping } from \"./fonts_utils.js\";\nimport { isWhiteSpace } from \"./core_utils.js\";\nimport { Stream } from \"./stream.js\";\nimport { Type1Parser } from \"./type1_parser.js\";\nimport { warn } from \"../shared/util.js\";\n\nfunction findBlock(streamBytes, signature, startIndex) {\n  const streamBytesLength = streamBytes.length;\n  const signatureLength = signature.length;\n  const scanLength = streamBytesLength - signatureLength;\n\n  let i = startIndex,\n    found = false;\n  while (i < scanLength) {\n    let j = 0;\n    while (j < signatureLength && streamBytes[i + j] === signature[j]) {\n      j++;\n    }\n    if (j >= signatureLength) {\n      // `signature` found, skip over whitespace.\n      i += j;\n      while (i < streamBytesLength && isWhiteSpace(streamBytes[i])) {\n        i++;\n      }\n      found = true;\n      break;\n    }\n    i++;\n  }\n  return {\n    found,\n    length: i,\n  };\n}\n\nfunction getHeaderBlock(stream, suggestedLength) {\n  const EEXEC_SIGNATURE = [0x65, 0x65, 0x78, 0x65, 0x63];\n\n  const streamStartPos = stream.pos; // Save the initial stream position.\n  let headerBytes, headerBytesLength, block;\n  try {\n    headerBytes = stream.getBytes(suggestedLength);\n    headerBytesLength = headerBytes.length;\n  } catch (ex) {\n    // Ignore errors if the `suggestedLength` is huge enough that a Uint8Array\n    // cannot hold the result of `getBytes`, and fallback to simply checking\n    // the entire stream (fixes issue3928.pdf).\n  }\n\n  if (headerBytesLength === suggestedLength) {\n    // Most of the time `suggestedLength` is correct, so to speed things up we\n    // initially only check the last few bytes to see if the header was found.\n    // Otherwise we (potentially) check the entire stream to prevent errors in\n    // `Type1Parser` (fixes issue5686.pdf).\n    block = findBlock(\n      headerBytes,\n      EEXEC_SIGNATURE,\n      suggestedLength - 2 * EEXEC_SIGNATURE.length\n    );\n\n    if (block.found && block.length === suggestedLength) {\n      return {\n        stream: new Stream(headerBytes),\n        length: suggestedLength,\n      };\n    }\n  }\n  warn('Invalid \"Length1\" property in Type1 font -- trying to recover.');\n  stream.pos = streamStartPos; // Reset the stream position.\n\n  const SCAN_BLOCK_LENGTH = 2048;\n  let actualLength;\n  while (true) {\n    const scanBytes = stream.peekBytes(SCAN_BLOCK_LENGTH);\n    block = findBlock(scanBytes, EEXEC_SIGNATURE, 0);\n\n    if (block.length === 0) {\n      break;\n    }\n    stream.pos += block.length; // Update the stream position.\n\n    if (block.found) {\n      actualLength = stream.pos - streamStartPos;\n      break;\n    }\n  }\n  stream.pos = streamStartPos; // Reset the stream position.\n\n  if (actualLength) {\n    return {\n      stream: new Stream(stream.getBytes(actualLength)),\n      length: actualLength,\n    };\n  }\n  warn('Unable to recover \"Length1\" property in Type1 font -- using as is.');\n  return {\n    stream: new Stream(stream.getBytes(suggestedLength)),\n    length: suggestedLength,\n  };\n}\n\nfunction getEexecBlock(stream, suggestedLength) {\n  // We should ideally parse the eexec block to ensure that `suggestedLength`\n  // is correct, so we don't truncate the block data if it's too small.\n  // However, this would also require checking if the fixed-content portion\n  // exists (using the 'Length3' property), and ensuring that it's valid.\n  //\n  // Given that `suggestedLength` almost always is correct, all the validation\n  // would require a great deal of unnecessary parsing for most fonts.\n  // To save time, we always fetch the entire stream instead, which also avoid\n  // issues if `suggestedLength` is huge (see comment in `getHeaderBlock`).\n  //\n  // NOTE: This means that the function can include the fixed-content portion\n  // in the returned eexec block. In practice this does *not* seem to matter,\n  // since `Type1Parser_extractFontProgram` will skip over any non-commands.\n  const eexecBytes = stream.getBytes();\n  return {\n    stream: new Stream(eexecBytes),\n    length: eexecBytes.length,\n  };\n}\n\n/**\n * Type1Font is also a CIDFontType0.\n */\nclass Type1Font {\n  constructor(name, file, properties) {\n    // Some bad generators embed pfb file as is, we have to strip 6-byte header.\n    // Also, length1 and length2 might be off by 6 bytes as well.\n    // http://www.math.ubc.ca/~cass/piscript/type1.pdf\n    const PFB_HEADER_SIZE = 6;\n    let headerBlockLength = properties.length1;\n    let eexecBlockLength = properties.length2;\n    let pfbHeader = file.peekBytes(PFB_HEADER_SIZE);\n    const pfbHeaderPresent = pfbHeader[0] === 0x80 && pfbHeader[1] === 0x01;\n    if (pfbHeaderPresent) {\n      file.skip(PFB_HEADER_SIZE);\n      headerBlockLength =\n        (pfbHeader[5] << 24) |\n        (pfbHeader[4] << 16) |\n        (pfbHeader[3] << 8) |\n        pfbHeader[2];\n    }\n\n    // Get the data block containing glyphs and subrs information\n    const headerBlock = getHeaderBlock(file, headerBlockLength);\n    const headerBlockParser = new Type1Parser(\n      headerBlock.stream,\n      false,\n      SEAC_ANALYSIS_ENABLED\n    );\n    headerBlockParser.extractFontHeader(properties);\n\n    if (pfbHeaderPresent) {\n      pfbHeader = file.getBytes(PFB_HEADER_SIZE);\n      eexecBlockLength =\n        (pfbHeader[5] << 24) |\n        (pfbHeader[4] << 16) |\n        (pfbHeader[3] << 8) |\n        pfbHeader[2];\n    }\n\n    // Decrypt the data blocks and retrieve it's content\n    const eexecBlock = getEexecBlock(file, eexecBlockLength);\n    const eexecBlockParser = new Type1Parser(\n      eexecBlock.stream,\n      true,\n      SEAC_ANALYSIS_ENABLED\n    );\n    const data = eexecBlockParser.extractFontProgram(properties);\n    for (const key in data.properties) {\n      properties[key] = data.properties[key];\n    }\n\n    const charstrings = data.charstrings;\n    const type2Charstrings = this.getType2Charstrings(charstrings);\n    const subrs = this.getType2Subrs(data.subrs);\n\n    this.charstrings = charstrings;\n    this.data = this.wrap(\n      name,\n      type2Charstrings,\n      this.charstrings,\n      subrs,\n      properties\n    );\n    this.seacs = this.getSeacs(data.charstrings);\n  }\n\n  get numGlyphs() {\n    return this.charstrings.length + 1;\n  }\n\n  getCharset() {\n    const charset = [\".notdef\"];\n    const charstrings = this.charstrings;\n    for (let glyphId = 0; glyphId < charstrings.length; glyphId++) {\n      charset.push(charstrings[glyphId].glyphName);\n    }\n    return charset;\n  }\n\n  getGlyphMapping(properties) {\n    const charstrings = this.charstrings;\n\n    if (properties.composite) {\n      const charCodeToGlyphId = Object.create(null);\n      // Map CIDs directly to GIDs.\n      for (\n        let glyphId = 0, charstringsLen = charstrings.length;\n        glyphId < charstringsLen;\n        glyphId++\n      ) {\n        const charCode = properties.cMap.charCodeOf(glyphId);\n        // Add 1 because glyph 0 is duplicated.\n        charCodeToGlyphId[charCode] = glyphId + 1;\n      }\n      return charCodeToGlyphId;\n    }\n\n    const glyphNames = [\".notdef\"];\n    let builtInEncoding, glyphId;\n    for (glyphId = 0; glyphId < charstrings.length; glyphId++) {\n      glyphNames.push(charstrings[glyphId].glyphName);\n    }\n    const encoding = properties.builtInEncoding;\n    if (encoding) {\n      builtInEncoding = Object.create(null);\n      for (const charCode in encoding) {\n        glyphId = glyphNames.indexOf(encoding[charCode]);\n        if (glyphId >= 0) {\n          builtInEncoding[charCode] = glyphId;\n        }\n      }\n    }\n\n    return type1FontGlyphMapping(properties, builtInEncoding, glyphNames);\n  }\n\n  hasGlyphId(id) {\n    if (id < 0 || id >= this.numGlyphs) {\n      return false;\n    }\n    if (id === 0) {\n      // notdef is always defined.\n      return true;\n    }\n    const glyph = this.charstrings[id - 1];\n    return glyph.charstring.length > 0;\n  }\n\n  getSeacs(charstrings) {\n    const seacMap = [];\n    for (let i = 0, ii = charstrings.length; i < ii; i++) {\n      const charstring = charstrings[i];\n      if (charstring.seac) {\n        // Offset by 1 for .notdef\n        seacMap[i + 1] = charstring.seac;\n      }\n    }\n    return seacMap;\n  }\n\n  getType2Charstrings(type1Charstrings) {\n    const type2Charstrings = [];\n    for (let i = 0, ii = type1Charstrings.length; i < ii; i++) {\n      type2Charstrings.push(type1Charstrings[i].charstring);\n    }\n    return type2Charstrings;\n  }\n\n  getType2Subrs(type1Subrs) {\n    let bias = 0;\n    const count = type1Subrs.length;\n    if (count < 1133) {\n      bias = 107;\n    } else if (count < 33769) {\n      bias = 1131;\n    } else {\n      bias = 32768;\n    }\n\n    // Add a bunch of empty subrs to deal with the Type2 bias\n    const type2Subrs = [];\n    let i;\n    for (i = 0; i < bias; i++) {\n      type2Subrs.push([0x0b]);\n    }\n\n    for (i = 0; i < count; i++) {\n      type2Subrs.push(type1Subrs[i]);\n    }\n\n    return type2Subrs;\n  }\n\n  wrap(name, glyphs, charstrings, subrs, properties) {\n    const cff = new CFF();\n    cff.header = new CFFHeader(1, 0, 4, 4);\n\n    cff.names = [name];\n\n    const topDict = new CFFTopDict();\n    // CFF strings IDs 0...390 are predefined names, so refering\n    // to entries in our own String INDEX starts at SID 391.\n    topDict.setByName(\"version\", 391);\n    topDict.setByName(\"Notice\", 392);\n    topDict.setByName(\"FullName\", 393);\n    topDict.setByName(\"FamilyName\", 394);\n    topDict.setByName(\"Weight\", 395);\n    topDict.setByName(\"Encoding\", null); // placeholder\n    topDict.setByName(\"FontMatrix\", properties.fontMatrix);\n    topDict.setByName(\"FontBBox\", properties.bbox);\n    topDict.setByName(\"charset\", null); // placeholder\n    topDict.setByName(\"CharStrings\", null); // placeholder\n    topDict.setByName(\"Private\", null); // placeholder\n    cff.topDict = topDict;\n\n    const strings = new CFFStrings();\n    strings.add(\"Version 0.11\"); // Version\n    strings.add(\"See original notice\"); // Notice\n    strings.add(name); // FullName\n    strings.add(name); // FamilyName\n    strings.add(\"Medium\"); // Weight\n    cff.strings = strings;\n\n    cff.globalSubrIndex = new CFFIndex();\n\n    const count = glyphs.length;\n    const charsetArray = [\".notdef\"];\n    let i, ii;\n    for (i = 0; i < count; i++) {\n      const glyphName = charstrings[i].glyphName;\n      const index = CFFStandardStrings.indexOf(glyphName);\n      if (index === -1) {\n        strings.add(glyphName);\n      }\n      charsetArray.push(glyphName);\n    }\n    cff.charset = new CFFCharset(false, 0, charsetArray);\n\n    const charStringsIndex = new CFFIndex();\n    charStringsIndex.add([0x8b, 0x0e]); // .notdef\n    for (i = 0; i < count; i++) {\n      charStringsIndex.add(glyphs[i]);\n    }\n    cff.charStrings = charStringsIndex;\n\n    const privateDict = new CFFPrivateDict();\n    privateDict.setByName(\"Subrs\", null); // placeholder\n    const fields = [\n      \"BlueValues\",\n      \"OtherBlues\",\n      \"FamilyBlues\",\n      \"FamilyOtherBlues\",\n      \"StemSnapH\",\n      \"StemSnapV\",\n      \"BlueShift\",\n      \"BlueFuzz\",\n      \"BlueScale\",\n      \"LanguageGroup\",\n      \"ExpansionFactor\",\n      \"ForceBold\",\n      \"StdHW\",\n      \"StdVW\",\n    ];\n    for (i = 0, ii = fields.length; i < ii; i++) {\n      const field = fields[i];\n      if (!(field in properties.privateData)) {\n        continue;\n      }\n      const value = properties.privateData[field];\n      if (Array.isArray(value)) {\n        // All of the private dictionary array data in CFF must be stored as\n        // \"delta-encoded\" numbers.\n        for (let j = value.length - 1; j > 0; j--) {\n          value[j] -= value[j - 1]; // ... difference from previous value\n        }\n      }\n      privateDict.setByName(field, value);\n    }\n    cff.topDict.privateDict = privateDict;\n\n    const subrIndex = new CFFIndex();\n    for (i = 0, ii = subrs.length; i < ii; i++) {\n      subrIndex.add(subrs[i]);\n    }\n    privateDict.subrsIndex = subrIndex;\n\n    const compiler = new CFFCompiler(cff);\n    return compiler.compile();\n  }\n}\n\nexport { Type1Font };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { getEncoding } from \"./encodings.js\";\nimport { isWhiteSpace } from \"./core_utils.js\";\nimport { Stream } from \"./stream.js\";\nimport { warn } from \"../shared/util.js\";\n\n// Hinting is currently disabled due to unknown problems on windows\n// in tracemonkey and various other pdfs with type1 fonts.\nconst HINTING_ENABLED = false;\n\n/*\n * CharStrings are encoded following the the CharString Encoding sequence\n * describe in Chapter 6 of the \"Adobe Type1 Font Format\" specification.\n * The value in a byte indicates a command, a number, or subsequent bytes\n * that are to be interpreted in a special way.\n *\n * CharString Number Encoding:\n *  A CharString byte containing the values from 32 through 255 inclusive\n *  indicate an integer. These values are decoded in four ranges.\n *\n * 1. A CharString byte containing a value, v, between 32 and 246 inclusive,\n * indicate the integer v - 139. Thus, the integer values from -107 through\n * 107 inclusive may be encoded in single byte.\n *\n * 2. A CharString byte containing a value, v, between 247 and 250 inclusive,\n * indicates an integer involving the next byte, w, according to the formula:\n * [(v - 247) x 256] + w + 108\n *\n * 3. A CharString byte containing a value, v, between 251 and 254 inclusive,\n * indicates an integer involving the next byte, w, according to the formula:\n * -[(v - 251) * 256] - w - 108\n *\n * 4. A CharString containing the value 255 indicates that the next 4 bytes\n * are a two complement signed integer. The first of these bytes contains the\n * highest order bits, the second byte contains the next higher order bits\n * and the fourth byte contain the lowest order bits.\n *\n *\n * CharString Command Encoding:\n *  CharStrings commands are encoded in 1 or 2 bytes.\n *\n *  Single byte commands are encoded in 1 byte that contains a value between\n *  0 and 31 inclusive.\n *  If a command byte contains the value 12, then the value in the next byte\n *  indicates a command. This \"escape\" mechanism allows many extra commands\n * to be encoded and this encoding technique helps to minimize the length of\n * the charStrings.\n */\nconst Type1CharString = (function Type1CharStringClosure() {\n  const COMMAND_MAP = {\n    hstem: [1],\n    vstem: [3],\n    vmoveto: [4],\n    rlineto: [5],\n    hlineto: [6],\n    vlineto: [7],\n    rrcurveto: [8],\n    callsubr: [10],\n    flex: [12, 35],\n    drop: [12, 18],\n    endchar: [14],\n    rmoveto: [21],\n    hmoveto: [22],\n    vhcurveto: [30],\n    hvcurveto: [31],\n  };\n\n  // eslint-disable-next-line no-shadow\n  class Type1CharString {\n    constructor() {\n      this.width = 0;\n      this.lsb = 0;\n      this.flexing = false;\n      this.output = [];\n      this.stack = [];\n    }\n\n    convert(encoded, subrs, seacAnalysisEnabled) {\n      const count = encoded.length;\n      let error = false;\n      let wx, sbx, subrNumber;\n      for (let i = 0; i < count; i++) {\n        let value = encoded[i];\n        if (value < 32) {\n          if (value === 12) {\n            value = (value << 8) + encoded[++i];\n          }\n          switch (value) {\n            case 1: // hstem\n              if (!HINTING_ENABLED) {\n                this.stack = [];\n                break;\n              }\n              error = this.executeCommand(2, COMMAND_MAP.hstem);\n              break;\n            case 3: // vstem\n              if (!HINTING_ENABLED) {\n                this.stack = [];\n                break;\n              }\n              error = this.executeCommand(2, COMMAND_MAP.vstem);\n              break;\n            case 4: // vmoveto\n              if (this.flexing) {\n                if (this.stack.length < 1) {\n                  error = true;\n                  break;\n                }\n                // Add the dx for flex and but also swap the values so they are\n                // the right order.\n                const dy = this.stack.pop();\n                this.stack.push(0, dy);\n                break;\n              }\n              error = this.executeCommand(1, COMMAND_MAP.vmoveto);\n              break;\n            case 5: // rlineto\n              error = this.executeCommand(2, COMMAND_MAP.rlineto);\n              break;\n            case 6: // hlineto\n              error = this.executeCommand(1, COMMAND_MAP.hlineto);\n              break;\n            case 7: // vlineto\n              error = this.executeCommand(1, COMMAND_MAP.vlineto);\n              break;\n            case 8: // rrcurveto\n              error = this.executeCommand(6, COMMAND_MAP.rrcurveto);\n              break;\n            case 9: // closepath\n              // closepath is a Type1 command that does not take argument and is\n              // useless in Type2 and it can simply be ignored.\n              this.stack = [];\n              break;\n            case 10: // callsubr\n              if (this.stack.length < 1) {\n                error = true;\n                break;\n              }\n              subrNumber = this.stack.pop();\n              if (!subrs[subrNumber]) {\n                error = true;\n                break;\n              }\n              error = this.convert(\n                subrs[subrNumber],\n                subrs,\n                seacAnalysisEnabled\n              );\n              break;\n            case 11: // return\n              return error;\n            case 13: // hsbw\n              if (this.stack.length < 2) {\n                error = true;\n                break;\n              }\n              // To convert to type2 we have to move the width value to the\n              // first part of the charstring and then use hmoveto with lsb.\n              wx = this.stack.pop();\n              sbx = this.stack.pop();\n              this.lsb = sbx;\n              this.width = wx;\n              this.stack.push(wx, sbx);\n              error = this.executeCommand(2, COMMAND_MAP.hmoveto);\n              break;\n            case 14: // endchar\n              this.output.push(COMMAND_MAP.endchar[0]);\n              break;\n            case 21: // rmoveto\n              if (this.flexing) {\n                break;\n              }\n              error = this.executeCommand(2, COMMAND_MAP.rmoveto);\n              break;\n            case 22: // hmoveto\n              if (this.flexing) {\n                // Add the dy for flex.\n                this.stack.push(0);\n                break;\n              }\n              error = this.executeCommand(1, COMMAND_MAP.hmoveto);\n              break;\n            case 30: // vhcurveto\n              error = this.executeCommand(4, COMMAND_MAP.vhcurveto);\n              break;\n            case 31: // hvcurveto\n              error = this.executeCommand(4, COMMAND_MAP.hvcurveto);\n              break;\n            case (12 << 8) + 0: // dotsection\n              // dotsection is a Type1 command to specify some hinting feature\n              // for dots that do not take a parameter and it can safely be\n              // ignored for Type2.\n              this.stack = [];\n              break;\n            case (12 << 8) + 1: // vstem3\n              if (!HINTING_ENABLED) {\n                this.stack = [];\n                break;\n              }\n              // [vh]stem3 are Type1 only and Type2 supports [vh]stem with\n              // multiple parameters, so instead of returning [vh]stem3 take a\n              // shortcut and return [vhstem] instead.\n              error = this.executeCommand(2, COMMAND_MAP.vstem);\n              break;\n            case (12 << 8) + 2: // hstem3\n              if (!HINTING_ENABLED) {\n                this.stack = [];\n                break;\n              }\n              // See vstem3.\n              error = this.executeCommand(2, COMMAND_MAP.hstem);\n              break;\n            case (12 << 8) + 6: // seac\n              // seac is like type 2's special endchar but it doesn't use the\n              // first argument asb, so remove it.\n              if (seacAnalysisEnabled) {\n                const asb = this.stack[this.stack.length - 5];\n                this.seac = this.stack.splice(-4, 4);\n                this.seac[0] += this.lsb - asb;\n                error = this.executeCommand(0, COMMAND_MAP.endchar);\n              } else {\n                error = this.executeCommand(4, COMMAND_MAP.endchar);\n              }\n              break;\n            case (12 << 8) + 7: // sbw\n              if (this.stack.length < 4) {\n                error = true;\n                break;\n              }\n              // To convert to type2 we have to move the width value to the\n              // first part of the charstring and then use rmoveto with\n              // (dx, dy). The height argument will not be used for vmtx and\n              // vhea tables reconstruction -- ignoring it.\n              this.stack.pop(); // wy\n              wx = this.stack.pop();\n              const sby = this.stack.pop();\n              sbx = this.stack.pop();\n              this.lsb = sbx;\n              this.width = wx;\n              this.stack.push(wx, sbx, sby);\n              error = this.executeCommand(3, COMMAND_MAP.rmoveto);\n              break;\n            case (12 << 8) + 12: // div\n              if (this.stack.length < 2) {\n                error = true;\n                break;\n              }\n              const num2 = this.stack.pop();\n              const num1 = this.stack.pop();\n              this.stack.push(num1 / num2);\n              break;\n            case (12 << 8) + 16: // callothersubr\n              if (this.stack.length < 2) {\n                error = true;\n                break;\n              }\n              subrNumber = this.stack.pop();\n              const numArgs = this.stack.pop();\n              if (subrNumber === 0 && numArgs === 3) {\n                const flexArgs = this.stack.splice(this.stack.length - 17, 17);\n                this.stack.push(\n                  flexArgs[2] + flexArgs[0], // bcp1x + rpx\n                  flexArgs[3] + flexArgs[1], // bcp1y + rpy\n                  flexArgs[4], // bcp2x\n                  flexArgs[5], // bcp2y\n                  flexArgs[6], // p2x\n                  flexArgs[7], // p2y\n                  flexArgs[8], // bcp3x\n                  flexArgs[9], // bcp3y\n                  flexArgs[10], // bcp4x\n                  flexArgs[11], // bcp4y\n                  flexArgs[12], // p3x\n                  flexArgs[13], // p3y\n                  flexArgs[14] // flexDepth\n                  // 15 = finalx unused by flex\n                  // 16 = finaly unused by flex\n                );\n                error = this.executeCommand(13, COMMAND_MAP.flex, true);\n                this.flexing = false;\n                this.stack.push(flexArgs[15], flexArgs[16]);\n              } else if (subrNumber === 1 && numArgs === 0) {\n                this.flexing = true;\n              }\n              break;\n            case (12 << 8) + 17: // pop\n              // Ignore this since it is only used with othersubr.\n              break;\n            case (12 << 8) + 33: // setcurrentpoint\n              // Ignore for now.\n              this.stack = [];\n              break;\n            default:\n              warn('Unknown type 1 charstring command of \"' + value + '\"');\n              break;\n          }\n          if (error) {\n            break;\n          }\n          continue;\n        } else if (value <= 246) {\n          value -= 139;\n        } else if (value <= 250) {\n          value = (value - 247) * 256 + encoded[++i] + 108;\n        } else if (value <= 254) {\n          value = -((value - 251) * 256) - encoded[++i] - 108;\n        } else {\n          value =\n            ((encoded[++i] & 0xff) << 24) |\n            ((encoded[++i] & 0xff) << 16) |\n            ((encoded[++i] & 0xff) << 8) |\n            ((encoded[++i] & 0xff) << 0);\n        }\n        this.stack.push(value);\n      }\n      return error;\n    }\n\n    executeCommand(howManyArgs, command, keepStack) {\n      const stackLength = this.stack.length;\n      if (howManyArgs > stackLength) {\n        return true;\n      }\n      const start = stackLength - howManyArgs;\n      for (let i = start; i < stackLength; i++) {\n        let value = this.stack[i];\n        if (Number.isInteger(value)) {\n          this.output.push(28, (value >> 8) & 0xff, value & 0xff);\n        } else {\n          // fixed point\n          value = (65536 * value) | 0;\n          this.output.push(\n            255,\n            (value >> 24) & 0xff,\n            (value >> 16) & 0xff,\n            (value >> 8) & 0xff,\n            value & 0xff\n          );\n        }\n      }\n      this.output.push.apply(this.output, command);\n      if (keepStack) {\n        this.stack.splice(start, howManyArgs);\n      } else {\n        this.stack.length = 0;\n      }\n      return false;\n    }\n  }\n\n  return Type1CharString;\n})();\n\n/*\n * Type1Parser encapsulate the needed code for parsing a Type1 font\n * program. Some of its logic depends on the Type2 charstrings\n * structure.\n * Note: this doesn't really parse the font since that would require evaluation\n * of PostScript, but it is possible in most cases to extract what we need\n * without a full parse.\n */\nconst Type1Parser = (function Type1ParserClosure() {\n  /*\n   * Decrypt a Sequence of Ciphertext Bytes to Produce the Original Sequence\n   * of Plaintext Bytes. The function took a key as a parameter which can be\n   * for decrypting the eexec block of for decoding charStrings.\n   */\n  const EEXEC_ENCRYPT_KEY = 55665;\n  const CHAR_STRS_ENCRYPT_KEY = 4330;\n\n  function isHexDigit(code) {\n    return (\n      (code >= 48 && code <= 57) || // '0'-'9'\n      (code >= 65 && code <= 70) || // 'A'-'F'\n      (code >= 97 && code <= 102) // 'a'-'f'\n    );\n  }\n\n  function decrypt(data, key, discardNumber) {\n    if (discardNumber >= data.length) {\n      return new Uint8Array(0);\n    }\n    const c1 = 52845,\n      c2 = 22719;\n    let r = key | 0,\n      i,\n      j;\n    for (i = 0; i < discardNumber; i++) {\n      r = ((data[i] + r) * c1 + c2) & ((1 << 16) - 1);\n    }\n    const count = data.length - discardNumber;\n    const decrypted = new Uint8Array(count);\n    for (i = discardNumber, j = 0; j < count; i++, j++) {\n      const value = data[i];\n      decrypted[j] = value ^ (r >> 8);\n      r = ((value + r) * c1 + c2) & ((1 << 16) - 1);\n    }\n    return decrypted;\n  }\n\n  function decryptAscii(data, key, discardNumber) {\n    const c1 = 52845,\n      c2 = 22719;\n    let r = key | 0;\n    const count = data.length,\n      maybeLength = count >>> 1;\n    const decrypted = new Uint8Array(maybeLength);\n    let i, j;\n    for (i = 0, j = 0; i < count; i++) {\n      const digit1 = data[i];\n      if (!isHexDigit(digit1)) {\n        continue;\n      }\n      i++;\n      let digit2;\n      while (i < count && !isHexDigit((digit2 = data[i]))) {\n        i++;\n      }\n      if (i < count) {\n        const value = parseInt(String.fromCharCode(digit1, digit2), 16);\n        decrypted[j++] = value ^ (r >> 8);\n        r = ((value + r) * c1 + c2) & ((1 << 16) - 1);\n      }\n    }\n    return decrypted.slice(discardNumber, j);\n  }\n\n  function isSpecial(c) {\n    return (\n      c === /* '/' = */ 0x2f ||\n      c === /* '[' = */ 0x5b ||\n      c === /* ']' = */ 0x5d ||\n      c === /* '{' = */ 0x7b ||\n      c === /* '}' = */ 0x7d ||\n      c === /* '(' = */ 0x28 ||\n      c === /* ')' = */ 0x29\n    );\n  }\n\n  // eslint-disable-next-line no-shadow\n  class Type1Parser {\n    constructor(stream, encrypted, seacAnalysisEnabled) {\n      if (encrypted) {\n        const data = stream.getBytes();\n        const isBinary = !(\n          (isHexDigit(data[0]) || isWhiteSpace(data[0])) &&\n          isHexDigit(data[1]) &&\n          isHexDigit(data[2]) &&\n          isHexDigit(data[3]) &&\n          isHexDigit(data[4]) &&\n          isHexDigit(data[5]) &&\n          isHexDigit(data[6]) &&\n          isHexDigit(data[7])\n        );\n        stream = new Stream(\n          isBinary\n            ? decrypt(data, EEXEC_ENCRYPT_KEY, 4)\n            : decryptAscii(data, EEXEC_ENCRYPT_KEY, 4)\n        );\n      }\n      this.seacAnalysisEnabled = !!seacAnalysisEnabled;\n\n      this.stream = stream;\n      this.nextChar();\n    }\n\n    readNumberArray() {\n      this.getToken(); // read '[' or '{' (arrays can start with either)\n      const array = [];\n      while (true) {\n        const token = this.getToken();\n        if (token === null || token === \"]\" || token === \"}\") {\n          break;\n        }\n        array.push(parseFloat(token || 0));\n      }\n      return array;\n    }\n\n    readNumber() {\n      const token = this.getToken();\n      return parseFloat(token || 0);\n    }\n\n    readInt() {\n      // Use '| 0' to prevent setting a double into length such as the double\n      // does not flow into the loop variable.\n      const token = this.getToken();\n      return parseInt(token || 0, 10) | 0;\n    }\n\n    readBoolean() {\n      const token = this.getToken();\n      // Use 1 and 0 since that's what type2 charstrings use.\n      return token === \"true\" ? 1 : 0;\n    }\n\n    nextChar() {\n      return (this.currentChar = this.stream.getByte());\n    }\n\n    getToken() {\n      // Eat whitespace and comments.\n      let comment = false;\n      let ch = this.currentChar;\n      while (true) {\n        if (ch === -1) {\n          return null;\n        }\n\n        if (comment) {\n          if (ch === 0x0a || ch === 0x0d) {\n            comment = false;\n          }\n        } else if (ch === /* '%' = */ 0x25) {\n          comment = true;\n        } else if (!isWhiteSpace(ch)) {\n          break;\n        }\n        ch = this.nextChar();\n      }\n      if (isSpecial(ch)) {\n        this.nextChar();\n        return String.fromCharCode(ch);\n      }\n      let token = \"\";\n      do {\n        token += String.fromCharCode(ch);\n        ch = this.nextChar();\n      } while (ch >= 0 && !isWhiteSpace(ch) && !isSpecial(ch));\n      return token;\n    }\n\n    readCharStrings(bytes, lenIV) {\n      if (lenIV === -1) {\n        // This isn't in the spec, but Adobe's tx program handles -1\n        // as plain text.\n        return bytes;\n      }\n      return decrypt(bytes, CHAR_STRS_ENCRYPT_KEY, lenIV);\n    }\n\n    /*\n     * Returns an object containing a Subrs array and a CharStrings\n     * array extracted from and eexec encrypted block of data\n     */\n    extractFontProgram(properties) {\n      const stream = this.stream;\n\n      const subrs = [],\n        charstrings = [];\n      const privateData = Object.create(null);\n      privateData.lenIV = 4;\n      const program = {\n        subrs: [],\n        charstrings: [],\n        properties: {\n          privateData,\n        },\n      };\n      let token, length, data, lenIV, encoded;\n      while ((token = this.getToken()) !== null) {\n        if (token !== \"/\") {\n          continue;\n        }\n        token = this.getToken();\n        switch (token) {\n          case \"CharStrings\":\n            // The number immediately following CharStrings must be greater or\n            // equal to the number of CharStrings.\n            this.getToken();\n            this.getToken(); // read in 'dict'\n            this.getToken(); // read in 'dup'\n            this.getToken(); // read in 'begin'\n            while (true) {\n              token = this.getToken();\n              if (token === null || token === \"end\") {\n                break;\n              }\n\n              if (token !== \"/\") {\n                continue;\n              }\n              const glyph = this.getToken();\n              length = this.readInt();\n              this.getToken(); // read in 'RD' or '-|'\n              data = length > 0 ? stream.getBytes(length) : new Uint8Array(0);\n              lenIV = program.properties.privateData.lenIV;\n              encoded = this.readCharStrings(data, lenIV);\n              this.nextChar();\n              token = this.getToken(); // read in 'ND' or '|-'\n              if (token === \"noaccess\") {\n                this.getToken(); // read in 'def'\n              }\n              charstrings.push({\n                glyph,\n                encoded,\n              });\n            }\n            break;\n          case \"Subrs\":\n            this.readInt(); // num\n            this.getToken(); // read in 'array'\n            while (this.getToken() === \"dup\") {\n              const index = this.readInt();\n              length = this.readInt();\n              this.getToken(); // read in 'RD' or '-|'\n              data = length > 0 ? stream.getBytes(length) : new Uint8Array(0);\n              lenIV = program.properties.privateData.lenIV;\n              encoded = this.readCharStrings(data, lenIV);\n              this.nextChar();\n              token = this.getToken(); // read in 'NP' or '|'\n              if (token === \"noaccess\") {\n                this.getToken(); // read in 'put'\n              }\n              subrs[index] = encoded;\n            }\n            break;\n          case \"BlueValues\":\n          case \"OtherBlues\":\n          case \"FamilyBlues\":\n          case \"FamilyOtherBlues\":\n            const blueArray = this.readNumberArray();\n            // *Blue* values may contain invalid data: disables reading of\n            // those values when hinting is disabled.\n            if (\n              blueArray.length > 0 &&\n              blueArray.length % 2 === 0 &&\n              HINTING_ENABLED\n            ) {\n              program.properties.privateData[token] = blueArray;\n            }\n            break;\n          case \"StemSnapH\":\n          case \"StemSnapV\":\n            program.properties.privateData[token] = this.readNumberArray();\n            break;\n          case \"StdHW\":\n          case \"StdVW\":\n            program.properties.privateData[token] = this.readNumberArray()[0];\n            break;\n          case \"BlueShift\":\n          case \"lenIV\":\n          case \"BlueFuzz\":\n          case \"BlueScale\":\n          case \"LanguageGroup\":\n          case \"ExpansionFactor\":\n            program.properties.privateData[token] = this.readNumber();\n            break;\n          case \"ForceBold\":\n            program.properties.privateData[token] = this.readBoolean();\n            break;\n        }\n      }\n\n      for (let i = 0; i < charstrings.length; i++) {\n        const glyph = charstrings[i].glyph;\n        encoded = charstrings[i].encoded;\n        const charString = new Type1CharString();\n        const error = charString.convert(\n          encoded,\n          subrs,\n          this.seacAnalysisEnabled\n        );\n        let output = charString.output;\n        if (error) {\n          // It seems when FreeType encounters an error while evaluating a glyph\n          // that it completely ignores the glyph so we'll mimic that behaviour\n          // here and put an endchar to make the validator happy.\n          output = [14];\n        }\n        const charStringObject = {\n          glyphName: glyph,\n          charstring: output,\n          width: charString.width,\n          lsb: charString.lsb,\n          seac: charString.seac,\n        };\n        if (glyph === \".notdef\") {\n          // Make sure .notdef is at index zero (issue #11477).\n          program.charstrings.unshift(charStringObject);\n        } else {\n          program.charstrings.push(charStringObject);\n        }\n\n        // Attempt to replace missing widths, from the font dictionary /Widths\n        // entry, with ones from the font data (fixes issue11150_reduced.pdf).\n        if (properties.builtInEncoding) {\n          const index = properties.builtInEncoding.indexOf(glyph);\n          if (\n            index > -1 &&\n            properties.widths[index] === undefined &&\n            index >= properties.firstChar &&\n            index <= properties.lastChar\n          ) {\n            properties.widths[index] = charString.width;\n          }\n        }\n      }\n\n      return program;\n    }\n\n    extractFontHeader(properties) {\n      let token;\n      while ((token = this.getToken()) !== null) {\n        if (token !== \"/\") {\n          continue;\n        }\n        token = this.getToken();\n        switch (token) {\n          case \"FontMatrix\":\n            const matrix = this.readNumberArray();\n            properties.fontMatrix = matrix;\n            break;\n          case \"Encoding\":\n            const encodingArg = this.getToken();\n            let encoding;\n            if (!/^\\d+$/.test(encodingArg)) {\n              // encoding name is specified\n              encoding = getEncoding(encodingArg);\n            } else {\n              encoding = [];\n              const size = parseInt(encodingArg, 10) | 0;\n              this.getToken(); // read in 'array'\n\n              for (let j = 0; j < size; j++) {\n                token = this.getToken();\n                // skipping till first dup or def (e.g. ignoring for statement)\n                while (token !== \"dup\" && token !== \"def\") {\n                  token = this.getToken();\n                  if (token === null) {\n                    return; // invalid header\n                  }\n                }\n                if (token === \"def\") {\n                  break; // read all array data\n                }\n                const index = this.readInt();\n                this.getToken(); // read in '/'\n                const glyph = this.getToken();\n                encoding[index] = glyph;\n                this.getToken(); // read the in 'put'\n              }\n            }\n            properties.builtInEncoding = encoding;\n            break;\n          case \"FontBBox\":\n            const fontBBox = this.readNumberArray();\n            // adjusting ascent/descent\n            properties.ascent = Math.max(fontBBox[3], fontBBox[1]);\n            properties.descent = Math.min(fontBBox[1], fontBBox[3]);\n            properties.ascentScaled = true;\n            break;\n        }\n      }\n    }\n  }\n\n  return Type1Parser;\n})();\n\nexport { Type1Parser };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n  assert,\n  FormatError,\n  info,\n  shadow,\n  unreachable,\n  UNSUPPORTED_FEATURES,\n  Util,\n  warn,\n} from \"../shared/util.js\";\nimport { ColorSpace } from \"./colorspace.js\";\nimport { isStream } from \"./primitives.js\";\nimport { MissingDataException } from \"./core_utils.js\";\n\nconst ShadingType = {\n  FUNCTION_BASED: 1,\n  AXIAL: 2,\n  RADIAL: 3,\n  FREE_FORM_MESH: 4,\n  LATTICE_FORM_MESH: 5,\n  COONS_PATCH_MESH: 6,\n  TENSOR_PATCH_MESH: 7,\n};\n\nclass Pattern {\n  constructor() {\n    unreachable(\"Cannot initialize Pattern.\");\n  }\n\n  static parseShading(\n    shading,\n    xref,\n    res,\n    handler,\n    pdfFunctionFactory,\n    localColorSpaceCache\n  ) {\n    const dict = isStream(shading) ? shading.dict : shading;\n    const type = dict.get(\"ShadingType\");\n\n    try {\n      switch (type) {\n        case ShadingType.AXIAL:\n        case ShadingType.RADIAL:\n          return new RadialAxialShading(\n            dict,\n            xref,\n            res,\n            pdfFunctionFactory,\n            localColorSpaceCache\n          );\n        case ShadingType.FREE_FORM_MESH:\n        case ShadingType.LATTICE_FORM_MESH:\n        case ShadingType.COONS_PATCH_MESH:\n        case ShadingType.TENSOR_PATCH_MESH:\n          return new MeshShading(\n            shading,\n            xref,\n            res,\n            pdfFunctionFactory,\n            localColorSpaceCache\n          );\n        default:\n          throw new FormatError(\"Unsupported ShadingType: \" + type);\n      }\n    } catch (ex) {\n      if (ex instanceof MissingDataException) {\n        throw ex;\n      }\n      handler.send(\"UnsupportedFeature\", {\n        featureId: UNSUPPORTED_FEATURES.shadingPattern,\n      });\n      warn(ex);\n      return new DummyShading();\n    }\n  }\n}\n\nclass BaseShading {\n  // A small number to offset the first/last color stops so we can insert ones\n  // to support extend. Number.MIN_VALUE is too small and breaks the extend.\n  static get SMALL_NUMBER() {\n    return shadow(this, \"SMALL_NUMBER\", 1e-6);\n  }\n\n  constructor() {\n    if (this.constructor === BaseShading) {\n      unreachable(\"Cannot initialize BaseShading.\");\n    }\n  }\n\n  getIR() {\n    unreachable(\"Abstract method `getIR` called.\");\n  }\n}\n\n// Radial and axial shading have very similar implementations\n// If needed, the implementations can be broken into two classes.\nclass RadialAxialShading extends BaseShading {\n  constructor(dict, xref, resources, pdfFunctionFactory, localColorSpaceCache) {\n    super();\n    this.coordsArr = dict.getArray(\"Coords\");\n    this.shadingType = dict.get(\"ShadingType\");\n    const cs = ColorSpace.parse({\n      cs: dict.getRaw(\"CS\") || dict.getRaw(\"ColorSpace\"),\n      xref,\n      resources,\n      pdfFunctionFactory,\n      localColorSpaceCache,\n    });\n    const bbox = dict.getArray(\"BBox\");\n    if (Array.isArray(bbox) && bbox.length === 4) {\n      this.bbox = Util.normalizeRect(bbox);\n    } else {\n      this.bbox = null;\n    }\n\n    let t0 = 0.0,\n      t1 = 1.0;\n    if (dict.has(\"Domain\")) {\n      const domainArr = dict.getArray(\"Domain\");\n      t0 = domainArr[0];\n      t1 = domainArr[1];\n    }\n\n    let extendStart = false,\n      extendEnd = false;\n    if (dict.has(\"Extend\")) {\n      const extendArr = dict.getArray(\"Extend\");\n      extendStart = extendArr[0];\n      extendEnd = extendArr[1];\n    }\n\n    if (\n      this.shadingType === ShadingType.RADIAL &&\n      (!extendStart || !extendEnd)\n    ) {\n      // Radial gradient only currently works if either circle is fully within\n      // the other circle.\n      const [x1, y1, r1, x2, y2, r2] = this.coordsArr;\n      const distance = Math.hypot(x1 - x2, y1 - y2);\n      if (r1 <= r2 + distance && r2 <= r1 + distance) {\n        warn(\"Unsupported radial gradient.\");\n      }\n    }\n\n    this.extendStart = extendStart;\n    this.extendEnd = extendEnd;\n\n    const fnObj = dict.getRaw(\"Function\");\n    const fn = pdfFunctionFactory.createFromArray(fnObj);\n\n    // 10 samples seems good enough for now, but probably won't work\n    // if there are sharp color changes. Ideally, we would implement\n    // the spec faithfully and add lossless optimizations.\n    const NUMBER_OF_SAMPLES = 10;\n    const step = (t1 - t0) / NUMBER_OF_SAMPLES;\n\n    const colorStops = (this.colorStops = []);\n\n    // Protect against bad domains.\n    if (t0 >= t1 || step <= 0) {\n      // Acrobat doesn't seem to handle these cases so we'll ignore for\n      // now.\n      info(\"Bad shading domain.\");\n      return;\n    }\n\n    const color = new Float32Array(cs.numComps),\n      ratio = new Float32Array(1);\n    let rgbColor;\n    for (let i = 0; i <= NUMBER_OF_SAMPLES; i++) {\n      ratio[0] = t0 + i * step;\n      fn(ratio, 0, color, 0);\n      rgbColor = cs.getRgb(color, 0);\n      const cssColor = Util.makeHexColor(rgbColor[0], rgbColor[1], rgbColor[2]);\n      colorStops.push([i / NUMBER_OF_SAMPLES, cssColor]);\n    }\n\n    let background = \"transparent\";\n    if (dict.has(\"Background\")) {\n      rgbColor = cs.getRgb(dict.get(\"Background\"), 0);\n      background = Util.makeHexColor(rgbColor[0], rgbColor[1], rgbColor[2]);\n    }\n\n    if (!extendStart) {\n      // Insert a color stop at the front and offset the first real color stop\n      // so it doesn't conflict with the one we insert.\n      colorStops.unshift([0, background]);\n      colorStops[1][0] += BaseShading.SMALL_NUMBER;\n    }\n    if (!extendEnd) {\n      // Same idea as above in extendStart but for the end.\n      colorStops[colorStops.length - 1][0] -= BaseShading.SMALL_NUMBER;\n      colorStops.push([1, background]);\n    }\n\n    this.colorStops = colorStops;\n  }\n\n  getIR() {\n    const coordsArr = this.coordsArr;\n    const shadingType = this.shadingType;\n    let type, p0, p1, r0, r1;\n    if (shadingType === ShadingType.AXIAL) {\n      p0 = [coordsArr[0], coordsArr[1]];\n      p1 = [coordsArr[2], coordsArr[3]];\n      r0 = null;\n      r1 = null;\n      type = \"axial\";\n    } else if (shadingType === ShadingType.RADIAL) {\n      p0 = [coordsArr[0], coordsArr[1]];\n      p1 = [coordsArr[3], coordsArr[4]];\n      r0 = coordsArr[2];\n      r1 = coordsArr[5];\n      type = \"radial\";\n    } else {\n      unreachable(`getPattern type unknown: ${shadingType}`);\n    }\n\n    return [\"RadialAxial\", type, this.bbox, this.colorStops, p0, p1, r0, r1];\n  }\n}\n\n// All mesh shadings. For now, they will be presented as set of the triangles\n// to be drawn on the canvas and rgb color for each vertex.\nclass MeshStreamReader {\n  constructor(stream, context) {\n    this.stream = stream;\n    this.context = context;\n    this.buffer = 0;\n    this.bufferLength = 0;\n\n    const numComps = context.numComps;\n    this.tmpCompsBuf = new Float32Array(numComps);\n    const csNumComps = context.colorSpace.numComps;\n    this.tmpCsCompsBuf = context.colorFn\n      ? new Float32Array(csNumComps)\n      : this.tmpCompsBuf;\n  }\n\n  get hasData() {\n    if (this.stream.end) {\n      return this.stream.pos < this.stream.end;\n    }\n    if (this.bufferLength > 0) {\n      return true;\n    }\n    const nextByte = this.stream.getByte();\n    if (nextByte < 0) {\n      return false;\n    }\n    this.buffer = nextByte;\n    this.bufferLength = 8;\n    return true;\n  }\n\n  readBits(n) {\n    let buffer = this.buffer;\n    let bufferLength = this.bufferLength;\n    if (n === 32) {\n      if (bufferLength === 0) {\n        return (\n          ((this.stream.getByte() << 24) |\n            (this.stream.getByte() << 16) |\n            (this.stream.getByte() << 8) |\n            this.stream.getByte()) >>>\n          0\n        );\n      }\n      buffer =\n        (buffer << 24) |\n        (this.stream.getByte() << 16) |\n        (this.stream.getByte() << 8) |\n        this.stream.getByte();\n      const nextByte = this.stream.getByte();\n      this.buffer = nextByte & ((1 << bufferLength) - 1);\n      return (\n        ((buffer << (8 - bufferLength)) |\n          ((nextByte & 0xff) >> bufferLength)) >>>\n        0\n      );\n    }\n    if (n === 8 && bufferLength === 0) {\n      return this.stream.getByte();\n    }\n    while (bufferLength < n) {\n      buffer = (buffer << 8) | this.stream.getByte();\n      bufferLength += 8;\n    }\n    bufferLength -= n;\n    this.bufferLength = bufferLength;\n    this.buffer = buffer & ((1 << bufferLength) - 1);\n    return buffer >> bufferLength;\n  }\n\n  align() {\n    this.buffer = 0;\n    this.bufferLength = 0;\n  }\n\n  readFlag() {\n    return this.readBits(this.context.bitsPerFlag);\n  }\n\n  readCoordinate() {\n    const bitsPerCoordinate = this.context.bitsPerCoordinate;\n    const xi = this.readBits(bitsPerCoordinate);\n    const yi = this.readBits(bitsPerCoordinate);\n    const decode = this.context.decode;\n    const scale =\n      bitsPerCoordinate < 32\n        ? 1 / ((1 << bitsPerCoordinate) - 1)\n        : 2.3283064365386963e-10; // 2 ^ -32\n    return [\n      xi * scale * (decode[1] - decode[0]) + decode[0],\n      yi * scale * (decode[3] - decode[2]) + decode[2],\n    ];\n  }\n\n  readComponents() {\n    const numComps = this.context.numComps;\n    const bitsPerComponent = this.context.bitsPerComponent;\n    const scale =\n      bitsPerComponent < 32\n        ? 1 / ((1 << bitsPerComponent) - 1)\n        : 2.3283064365386963e-10; // 2 ^ -32\n    const decode = this.context.decode;\n    const components = this.tmpCompsBuf;\n    for (let i = 0, j = 4; i < numComps; i++, j += 2) {\n      const ci = this.readBits(bitsPerComponent);\n      components[i] = ci * scale * (decode[j + 1] - decode[j]) + decode[j];\n    }\n    const color = this.tmpCsCompsBuf;\n    if (this.context.colorFn) {\n      this.context.colorFn(components, 0, color, 0);\n    }\n    return this.context.colorSpace.getRgb(color, 0);\n  }\n}\n\nconst getB = (function getBClosure() {\n  function buildB(count) {\n    const lut = [];\n    for (let i = 0; i <= count; i++) {\n      const t = i / count,\n        t_ = 1 - t;\n      lut.push(\n        new Float32Array([\n          t_ * t_ * t_,\n          3 * t * t_ * t_,\n          3 * t * t * t_,\n          t * t * t,\n        ])\n      );\n    }\n    return lut;\n  }\n  const cache = [];\n\n  return function (count) {\n    if (!cache[count]) {\n      cache[count] = buildB(count);\n    }\n    return cache[count];\n  };\n})();\n\nclass MeshShading extends BaseShading {\n  static get MIN_SPLIT_PATCH_CHUNKS_AMOUNT() {\n    return shadow(this, \"MIN_SPLIT_PATCH_CHUNKS_AMOUNT\", 3);\n  }\n\n  static get MAX_SPLIT_PATCH_CHUNKS_AMOUNT() {\n    return shadow(this, \"MAX_SPLIT_PATCH_CHUNKS_AMOUNT\", 20);\n  }\n\n  // Count of triangles per entire mesh bounds.\n  static get TRIANGLE_DENSITY() {\n    return shadow(this, \"TRIANGLE_DENSITY\", 20);\n  }\n\n  constructor(\n    stream,\n    xref,\n    resources,\n    pdfFunctionFactory,\n    localColorSpaceCache\n  ) {\n    super();\n    if (!isStream(stream)) {\n      throw new FormatError(\"Mesh data is not a stream\");\n    }\n    const dict = stream.dict;\n    this.shadingType = dict.get(\"ShadingType\");\n    const bbox = dict.getArray(\"BBox\");\n    if (Array.isArray(bbox) && bbox.length === 4) {\n      this.bbox = Util.normalizeRect(bbox);\n    } else {\n      this.bbox = null;\n    }\n    const cs = ColorSpace.parse({\n      cs: dict.getRaw(\"CS\") || dict.getRaw(\"ColorSpace\"),\n      xref,\n      resources,\n      pdfFunctionFactory,\n      localColorSpaceCache,\n    });\n    this.background = dict.has(\"Background\")\n      ? cs.getRgb(dict.get(\"Background\"), 0)\n      : null;\n\n    const fnObj = dict.getRaw(\"Function\");\n    const fn = fnObj ? pdfFunctionFactory.createFromArray(fnObj) : null;\n\n    this.coords = [];\n    this.colors = [];\n    this.figures = [];\n\n    const decodeContext = {\n      bitsPerCoordinate: dict.get(\"BitsPerCoordinate\"),\n      bitsPerComponent: dict.get(\"BitsPerComponent\"),\n      bitsPerFlag: dict.get(\"BitsPerFlag\"),\n      decode: dict.getArray(\"Decode\"),\n      colorFn: fn,\n      colorSpace: cs,\n      numComps: fn ? 1 : cs.numComps,\n    };\n    const reader = new MeshStreamReader(stream, decodeContext);\n\n    let patchMesh = false;\n    switch (this.shadingType) {\n      case ShadingType.FREE_FORM_MESH:\n        this._decodeType4Shading(reader);\n        break;\n      case ShadingType.LATTICE_FORM_MESH:\n        const verticesPerRow = dict.get(\"VerticesPerRow\") | 0;\n        if (verticesPerRow < 2) {\n          throw new FormatError(\"Invalid VerticesPerRow\");\n        }\n        this._decodeType5Shading(reader, verticesPerRow);\n        break;\n      case ShadingType.COONS_PATCH_MESH:\n        this._decodeType6Shading(reader);\n        patchMesh = true;\n        break;\n      case ShadingType.TENSOR_PATCH_MESH:\n        this._decodeType7Shading(reader);\n        patchMesh = true;\n        break;\n      default:\n        unreachable(\"Unsupported mesh type.\");\n        break;\n    }\n\n    if (patchMesh) {\n      // Dirty bounds calculation, to determine how dense the triangles will be.\n      this._updateBounds();\n      for (let i = 0, ii = this.figures.length; i < ii; i++) {\n        this._buildFigureFromPatch(i);\n      }\n    }\n    // Calculate bounds.\n    this._updateBounds();\n\n    this._packData();\n  }\n\n  _decodeType4Shading(reader) {\n    const coords = this.coords;\n    const colors = this.colors;\n    const operators = [];\n    const ps = []; // not maintaining cs since that will match ps\n    let verticesLeft = 0; // assuming we have all data to start a new triangle\n    while (reader.hasData) {\n      const f = reader.readFlag();\n      const coord = reader.readCoordinate();\n      const color = reader.readComponents();\n      if (verticesLeft === 0) {\n        // ignoring flags if we started a triangle\n        if (!(0 <= f && f <= 2)) {\n          throw new FormatError(\"Unknown type4 flag\");\n        }\n        switch (f) {\n          case 0:\n            verticesLeft = 3;\n            break;\n          case 1:\n            ps.push(ps[ps.length - 2], ps[ps.length - 1]);\n            verticesLeft = 1;\n            break;\n          case 2:\n            ps.push(ps[ps.length - 3], ps[ps.length - 1]);\n            verticesLeft = 1;\n            break;\n        }\n        operators.push(f);\n      }\n      ps.push(coords.length);\n      coords.push(coord);\n      colors.push(color);\n      verticesLeft--;\n\n      reader.align();\n    }\n    this.figures.push({\n      type: \"triangles\",\n      coords: new Int32Array(ps),\n      colors: new Int32Array(ps),\n    });\n  }\n\n  _decodeType5Shading(reader, verticesPerRow) {\n    const coords = this.coords;\n    const colors = this.colors;\n    const ps = []; // not maintaining cs since that will match ps\n    while (reader.hasData) {\n      const coord = reader.readCoordinate();\n      const color = reader.readComponents();\n      ps.push(coords.length);\n      coords.push(coord);\n      colors.push(color);\n    }\n    this.figures.push({\n      type: \"lattice\",\n      coords: new Int32Array(ps),\n      colors: new Int32Array(ps),\n      verticesPerRow,\n    });\n  }\n\n  _decodeType6Shading(reader) {\n    // A special case of Type 7. The p11, p12, p21, p22 automatically filled\n    const coords = this.coords;\n    const colors = this.colors;\n    const ps = new Int32Array(16); // p00, p10, ..., p30, p01, ..., p33\n    const cs = new Int32Array(4); // c00, c30, c03, c33\n    while (reader.hasData) {\n      const f = reader.readFlag();\n      if (!(0 <= f && f <= 3)) {\n        throw new FormatError(\"Unknown type6 flag\");\n      }\n      const pi = coords.length;\n      for (let i = 0, ii = f !== 0 ? 8 : 12; i < ii; i++) {\n        coords.push(reader.readCoordinate());\n      }\n      const ci = colors.length;\n      for (let i = 0, ii = f !== 0 ? 2 : 4; i < ii; i++) {\n        colors.push(reader.readComponents());\n      }\n      let tmp1, tmp2, tmp3, tmp4;\n      switch (f) {\n        // prettier-ignore\n        case 0:\n          ps[12] = pi + 3; ps[13] = pi + 4;  ps[14] = pi + 5;  ps[15] = pi + 6;\n          ps[ 8] = pi + 2; /* values for 5, 6, 9, 10 are    */ ps[11] = pi + 7;\n          ps[ 4] = pi + 1; /* calculated below              */ ps[ 7] = pi + 8;\n          ps[ 0] = pi;     ps[ 1] = pi + 11; ps[ 2] = pi + 10; ps[ 3] = pi + 9;\n          cs[2] = ci + 1; cs[3] = ci + 2;\n          cs[0] = ci;     cs[1] = ci + 3;\n          break;\n        // prettier-ignore\n        case 1:\n          tmp1 = ps[12]; tmp2 = ps[13]; tmp3 = ps[14]; tmp4 = ps[15];\n          ps[12] = tmp4; ps[13] = pi + 0;  ps[14] = pi + 1;  ps[15] = pi + 2;\n          ps[ 8] = tmp3; /* values for 5, 6, 9, 10 are    */ ps[11] = pi + 3;\n          ps[ 4] = tmp2; /* calculated below              */ ps[ 7] = pi + 4;\n          ps[ 0] = tmp1; ps[ 1] = pi + 7;   ps[ 2] = pi + 6; ps[ 3] = pi + 5;\n          tmp1 = cs[2]; tmp2 = cs[3];\n          cs[2] = tmp2;   cs[3] = ci;\n          cs[0] = tmp1;   cs[1] = ci + 1;\n          break;\n        // prettier-ignore\n        case 2:\n          tmp1 = ps[15];\n          tmp2 = ps[11];\n          ps[12] = ps[3];  ps[13] = pi + 0; ps[14] = pi + 1;   ps[15] = pi + 2;\n          ps[ 8] = ps[7];  /* values for 5, 6, 9, 10 are    */ ps[11] = pi + 3;\n          ps[ 4] = tmp2;   /* calculated below              */ ps[ 7] = pi + 4;\n          ps[ 0] = tmp1;  ps[ 1] = pi + 7;   ps[ 2] = pi + 6;  ps[ 3] = pi + 5;\n          tmp1 = cs[3];\n          cs[2] = cs[1]; cs[3] = ci;\n          cs[0] = tmp1;  cs[1] = ci + 1;\n          break;\n        // prettier-ignore\n        case 3:\n          ps[12] = ps[0];  ps[13] = pi + 0;   ps[14] = pi + 1; ps[15] = pi + 2;\n          ps[ 8] = ps[1];  /* values for 5, 6, 9, 10 are    */ ps[11] = pi + 3;\n          ps[ 4] = ps[2];  /* calculated below              */ ps[ 7] = pi + 4;\n          ps[ 0] = ps[3];  ps[ 1] = pi + 7;   ps[ 2] = pi + 6; ps[ 3] = pi + 5;\n          cs[2] = cs[0]; cs[3] = ci;\n          cs[0] = cs[1]; cs[1] = ci + 1;\n          break;\n      }\n      // set p11, p12, p21, p22\n      ps[5] = coords.length;\n      coords.push([\n        (-4 * coords[ps[0]][0] -\n          coords[ps[15]][0] +\n          6 * (coords[ps[4]][0] + coords[ps[1]][0]) -\n          2 * (coords[ps[12]][0] + coords[ps[3]][0]) +\n          3 * (coords[ps[13]][0] + coords[ps[7]][0])) /\n          9,\n        (-4 * coords[ps[0]][1] -\n          coords[ps[15]][1] +\n          6 * (coords[ps[4]][1] + coords[ps[1]][1]) -\n          2 * (coords[ps[12]][1] + coords[ps[3]][1]) +\n          3 * (coords[ps[13]][1] + coords[ps[7]][1])) /\n          9,\n      ]);\n      ps[6] = coords.length;\n      coords.push([\n        (-4 * coords[ps[3]][0] -\n          coords[ps[12]][0] +\n          6 * (coords[ps[2]][0] + coords[ps[7]][0]) -\n          2 * (coords[ps[0]][0] + coords[ps[15]][0]) +\n          3 * (coords[ps[4]][0] + coords[ps[14]][0])) /\n          9,\n        (-4 * coords[ps[3]][1] -\n          coords[ps[12]][1] +\n          6 * (coords[ps[2]][1] + coords[ps[7]][1]) -\n          2 * (coords[ps[0]][1] + coords[ps[15]][1]) +\n          3 * (coords[ps[4]][1] + coords[ps[14]][1])) /\n          9,\n      ]);\n      ps[9] = coords.length;\n      coords.push([\n        (-4 * coords[ps[12]][0] -\n          coords[ps[3]][0] +\n          6 * (coords[ps[8]][0] + coords[ps[13]][0]) -\n          2 * (coords[ps[0]][0] + coords[ps[15]][0]) +\n          3 * (coords[ps[11]][0] + coords[ps[1]][0])) /\n          9,\n        (-4 * coords[ps[12]][1] -\n          coords[ps[3]][1] +\n          6 * (coords[ps[8]][1] + coords[ps[13]][1]) -\n          2 * (coords[ps[0]][1] + coords[ps[15]][1]) +\n          3 * (coords[ps[11]][1] + coords[ps[1]][1])) /\n          9,\n      ]);\n      ps[10] = coords.length;\n      coords.push([\n        (-4 * coords[ps[15]][0] -\n          coords[ps[0]][0] +\n          6 * (coords[ps[11]][0] + coords[ps[14]][0]) -\n          2 * (coords[ps[12]][0] + coords[ps[3]][0]) +\n          3 * (coords[ps[2]][0] + coords[ps[8]][0])) /\n          9,\n        (-4 * coords[ps[15]][1] -\n          coords[ps[0]][1] +\n          6 * (coords[ps[11]][1] + coords[ps[14]][1]) -\n          2 * (coords[ps[12]][1] + coords[ps[3]][1]) +\n          3 * (coords[ps[2]][1] + coords[ps[8]][1])) /\n          9,\n      ]);\n      this.figures.push({\n        type: \"patch\",\n        coords: new Int32Array(ps), // making copies of ps and cs\n        colors: new Int32Array(cs),\n      });\n    }\n  }\n\n  _decodeType7Shading(reader) {\n    const coords = this.coords;\n    const colors = this.colors;\n    const ps = new Int32Array(16); // p00, p10, ..., p30, p01, ..., p33\n    const cs = new Int32Array(4); // c00, c30, c03, c33\n    while (reader.hasData) {\n      const f = reader.readFlag();\n      if (!(0 <= f && f <= 3)) {\n        throw new FormatError(\"Unknown type7 flag\");\n      }\n      const pi = coords.length;\n      for (let i = 0, ii = f !== 0 ? 12 : 16; i < ii; i++) {\n        coords.push(reader.readCoordinate());\n      }\n      const ci = colors.length;\n      for (let i = 0, ii = f !== 0 ? 2 : 4; i < ii; i++) {\n        colors.push(reader.readComponents());\n      }\n      let tmp1, tmp2, tmp3, tmp4;\n      switch (f) {\n        // prettier-ignore\n        case 0:\n          ps[12] = pi + 3; ps[13] = pi + 4;  ps[14] = pi + 5;  ps[15] = pi + 6;\n          ps[ 8] = pi + 2; ps[ 9] = pi + 13; ps[10] = pi + 14; ps[11] = pi + 7;\n          ps[ 4] = pi + 1; ps[ 5] = pi + 12; ps[ 6] = pi + 15; ps[ 7] = pi + 8;\n          ps[ 0] = pi;     ps[ 1] = pi + 11; ps[ 2] = pi + 10; ps[ 3] = pi + 9;\n          cs[2] = ci + 1; cs[3] = ci + 2;\n          cs[0] = ci;     cs[1] = ci + 3;\n          break;\n        // prettier-ignore\n        case 1:\n          tmp1 = ps[12]; tmp2 = ps[13]; tmp3 = ps[14]; tmp4 = ps[15];\n          ps[12] = tmp4;   ps[13] = pi + 0;  ps[14] = pi + 1;  ps[15] = pi + 2;\n          ps[ 8] = tmp3;   ps[ 9] = pi + 9;  ps[10] = pi + 10; ps[11] = pi + 3;\n          ps[ 4] = tmp2;   ps[ 5] = pi + 8;  ps[ 6] = pi + 11; ps[ 7] = pi + 4;\n          ps[ 0] = tmp1;   ps[ 1] = pi + 7;  ps[ 2] = pi + 6;  ps[ 3] = pi + 5;\n          tmp1 = cs[2]; tmp2 = cs[3];\n          cs[2] = tmp2;   cs[3] = ci;\n          cs[0] = tmp1;   cs[1] = ci + 1;\n          break;\n        // prettier-ignore\n        case 2:\n          tmp1 = ps[15];\n          tmp2 = ps[11];\n          ps[12] = ps[3]; ps[13] = pi + 0; ps[14] = pi + 1;  ps[15] = pi + 2;\n          ps[ 8] = ps[7]; ps[ 9] = pi + 9; ps[10] = pi + 10; ps[11] = pi + 3;\n          ps[ 4] = tmp2;  ps[ 5] = pi + 8; ps[ 6] = pi + 11; ps[ 7] = pi + 4;\n          ps[ 0] = tmp1;  ps[ 1] = pi + 7; ps[ 2] = pi + 6;  ps[ 3] = pi + 5;\n          tmp1 = cs[3];\n          cs[2] = cs[1]; cs[3] = ci;\n          cs[0] = tmp1;  cs[1] = ci + 1;\n          break;\n        // prettier-ignore\n        case 3:\n          ps[12] = ps[0];  ps[13] = pi + 0;  ps[14] = pi + 1;  ps[15] = pi + 2;\n          ps[ 8] = ps[1];  ps[ 9] = pi + 9;  ps[10] = pi + 10; ps[11] = pi + 3;\n          ps[ 4] = ps[2];  ps[ 5] = pi + 8;  ps[ 6] = pi + 11; ps[ 7] = pi + 4;\n          ps[ 0] = ps[3];  ps[ 1] = pi + 7;  ps[ 2] = pi + 6;  ps[ 3] = pi + 5;\n          cs[2] = cs[0]; cs[3] = ci;\n          cs[0] = cs[1]; cs[1] = ci + 1;\n          break;\n      }\n      this.figures.push({\n        type: \"patch\",\n        coords: new Int32Array(ps), // making copies of ps and cs\n        colors: new Int32Array(cs),\n      });\n    }\n  }\n\n  _buildFigureFromPatch(index) {\n    const figure = this.figures[index];\n    assert(figure.type === \"patch\", \"Unexpected patch mesh figure\");\n\n    const coords = this.coords,\n      colors = this.colors;\n    const pi = figure.coords;\n    const ci = figure.colors;\n\n    const figureMinX = Math.min(\n      coords[pi[0]][0],\n      coords[pi[3]][0],\n      coords[pi[12]][0],\n      coords[pi[15]][0]\n    );\n    const figureMinY = Math.min(\n      coords[pi[0]][1],\n      coords[pi[3]][1],\n      coords[pi[12]][1],\n      coords[pi[15]][1]\n    );\n    const figureMaxX = Math.max(\n      coords[pi[0]][0],\n      coords[pi[3]][0],\n      coords[pi[12]][0],\n      coords[pi[15]][0]\n    );\n    const figureMaxY = Math.max(\n      coords[pi[0]][1],\n      coords[pi[3]][1],\n      coords[pi[12]][1],\n      coords[pi[15]][1]\n    );\n    let splitXBy = Math.ceil(\n      ((figureMaxX - figureMinX) * MeshShading.TRIANGLE_DENSITY) /\n        (this.bounds[2] - this.bounds[0])\n    );\n    splitXBy = Math.max(\n      MeshShading.MIN_SPLIT_PATCH_CHUNKS_AMOUNT,\n      Math.min(MeshShading.MAX_SPLIT_PATCH_CHUNKS_AMOUNT, splitXBy)\n    );\n    let splitYBy = Math.ceil(\n      ((figureMaxY - figureMinY) * MeshShading.TRIANGLE_DENSITY) /\n        (this.bounds[3] - this.bounds[1])\n    );\n    splitYBy = Math.max(\n      MeshShading.MIN_SPLIT_PATCH_CHUNKS_AMOUNT,\n      Math.min(MeshShading.MAX_SPLIT_PATCH_CHUNKS_AMOUNT, splitYBy)\n    );\n\n    const verticesPerRow = splitXBy + 1;\n    const figureCoords = new Int32Array((splitYBy + 1) * verticesPerRow);\n    const figureColors = new Int32Array((splitYBy + 1) * verticesPerRow);\n    let k = 0;\n    const cl = new Uint8Array(3),\n      cr = new Uint8Array(3);\n    const c0 = colors[ci[0]],\n      c1 = colors[ci[1]],\n      c2 = colors[ci[2]],\n      c3 = colors[ci[3]];\n    const bRow = getB(splitYBy),\n      bCol = getB(splitXBy);\n    for (let row = 0; row <= splitYBy; row++) {\n      cl[0] = ((c0[0] * (splitYBy - row) + c2[0] * row) / splitYBy) | 0;\n      cl[1] = ((c0[1] * (splitYBy - row) + c2[1] * row) / splitYBy) | 0;\n      cl[2] = ((c0[2] * (splitYBy - row) + c2[2] * row) / splitYBy) | 0;\n\n      cr[0] = ((c1[0] * (splitYBy - row) + c3[0] * row) / splitYBy) | 0;\n      cr[1] = ((c1[1] * (splitYBy - row) + c3[1] * row) / splitYBy) | 0;\n      cr[2] = ((c1[2] * (splitYBy - row) + c3[2] * row) / splitYBy) | 0;\n\n      for (let col = 0; col <= splitXBy; col++, k++) {\n        if (\n          (row === 0 || row === splitYBy) &&\n          (col === 0 || col === splitXBy)\n        ) {\n          continue;\n        }\n        let x = 0,\n          y = 0;\n        let q = 0;\n        for (let i = 0; i <= 3; i++) {\n          for (let j = 0; j <= 3; j++, q++) {\n            const m = bRow[row][i] * bCol[col][j];\n            x += coords[pi[q]][0] * m;\n            y += coords[pi[q]][1] * m;\n          }\n        }\n        figureCoords[k] = coords.length;\n        coords.push([x, y]);\n        figureColors[k] = colors.length;\n        const newColor = new Uint8Array(3);\n        newColor[0] = ((cl[0] * (splitXBy - col) + cr[0] * col) / splitXBy) | 0;\n        newColor[1] = ((cl[1] * (splitXBy - col) + cr[1] * col) / splitXBy) | 0;\n        newColor[2] = ((cl[2] * (splitXBy - col) + cr[2] * col) / splitXBy) | 0;\n        colors.push(newColor);\n      }\n    }\n    figureCoords[0] = pi[0];\n    figureColors[0] = ci[0];\n    figureCoords[splitXBy] = pi[3];\n    figureColors[splitXBy] = ci[1];\n    figureCoords[verticesPerRow * splitYBy] = pi[12];\n    figureColors[verticesPerRow * splitYBy] = ci[2];\n    figureCoords[verticesPerRow * splitYBy + splitXBy] = pi[15];\n    figureColors[verticesPerRow * splitYBy + splitXBy] = ci[3];\n\n    this.figures[index] = {\n      type: \"lattice\",\n      coords: figureCoords,\n      colors: figureColors,\n      verticesPerRow,\n    };\n  }\n\n  _updateBounds() {\n    let minX = this.coords[0][0],\n      minY = this.coords[0][1],\n      maxX = minX,\n      maxY = minY;\n    for (let i = 1, ii = this.coords.length; i < ii; i++) {\n      const x = this.coords[i][0],\n        y = this.coords[i][1];\n      minX = minX > x ? x : minX;\n      minY = minY > y ? y : minY;\n      maxX = maxX < x ? x : maxX;\n      maxY = maxY < y ? y : maxY;\n    }\n    this.bounds = [minX, minY, maxX, maxY];\n  }\n\n  _packData() {\n    let i, ii, j, jj;\n\n    const coords = this.coords;\n    const coordsPacked = new Float32Array(coords.length * 2);\n    for (i = 0, j = 0, ii = coords.length; i < ii; i++) {\n      const xy = coords[i];\n      coordsPacked[j++] = xy[0];\n      coordsPacked[j++] = xy[1];\n    }\n    this.coords = coordsPacked;\n\n    const colors = this.colors;\n    const colorsPacked = new Uint8Array(colors.length * 3);\n    for (i = 0, j = 0, ii = colors.length; i < ii; i++) {\n      const c = colors[i];\n      colorsPacked[j++] = c[0];\n      colorsPacked[j++] = c[1];\n      colorsPacked[j++] = c[2];\n    }\n    this.colors = colorsPacked;\n\n    const figures = this.figures;\n    for (i = 0, ii = figures.length; i < ii; i++) {\n      const figure = figures[i],\n        ps = figure.coords,\n        cs = figure.colors;\n      for (j = 0, jj = ps.length; j < jj; j++) {\n        ps[j] *= 2;\n        cs[j] *= 3;\n      }\n    }\n  }\n\n  getIR() {\n    return [\n      \"Mesh\",\n      this.shadingType,\n      this.coords,\n      this.colors,\n      this.figures,\n      this.bounds,\n      this.bbox,\n      this.background,\n    ];\n  }\n}\n\nclass DummyShading extends BaseShading {\n  getIR() {\n    return [\"Dummy\"];\n  }\n}\n\nfunction getTilingPatternIR(operatorList, dict, color) {\n  const matrix = dict.getArray(\"Matrix\");\n  const bbox = Util.normalizeRect(dict.getArray(\"BBox\"));\n  const xstep = dict.get(\"XStep\");\n  const ystep = dict.get(\"YStep\");\n  const paintType = dict.get(\"PaintType\");\n  const tilingType = dict.get(\"TilingType\");\n\n  // Ensure that the pattern has a non-zero width and height, to prevent errors\n  // in `pattern_helper.js` (fixes issue8330.pdf).\n  if (bbox[2] - bbox[0] === 0 || bbox[3] - bbox[1] === 0) {\n    throw new FormatError(`Invalid getTilingPatternIR /BBox array: [${bbox}].`);\n  }\n\n  return [\n    \"TilingPattern\",\n    color,\n    operatorList,\n    matrix,\n    bbox,\n    xstep,\n    ystep,\n    paintType,\n    tilingType,\n  ];\n}\n\nexport { getTilingPatternIR, Pattern };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Dict, isDict, isStream, Ref } from \"./primitives.js\";\nimport {\n  FormatError,\n  info,\n  isBool,\n  IsEvalSupportedCached,\n  shadow,\n  unreachable,\n} from \"../shared/util.js\";\nimport { PostScriptLexer, PostScriptParser } from \"./ps_parser.js\";\nimport { LocalFunctionCache } from \"./image_utils.js\";\n\nclass PDFFunctionFactory {\n  constructor({ xref, isEvalSupported = true }) {\n    this.xref = xref;\n    this.isEvalSupported = isEvalSupported !== false;\n  }\n\n  create(fn) {\n    const cachedFunction = this.getCached(fn);\n    if (cachedFunction) {\n      return cachedFunction;\n    }\n    const parsedFunction = PDFFunction.parse({\n      xref: this.xref,\n      isEvalSupported: this.isEvalSupported,\n      fn: fn instanceof Ref ? this.xref.fetch(fn) : fn,\n    });\n\n    // Attempt to cache the parsed Function, by reference.\n    this._cache(fn, parsedFunction);\n\n    return parsedFunction;\n  }\n\n  createFromArray(fnObj) {\n    const cachedFunction = this.getCached(fnObj);\n    if (cachedFunction) {\n      return cachedFunction;\n    }\n    const parsedFunction = PDFFunction.parseArray({\n      xref: this.xref,\n      isEvalSupported: this.isEvalSupported,\n      fnObj: fnObj instanceof Ref ? this.xref.fetch(fnObj) : fnObj,\n    });\n\n    // Attempt to cache the parsed Function, by reference.\n    this._cache(fnObj, parsedFunction);\n\n    return parsedFunction;\n  }\n\n  getCached(cacheKey) {\n    let fnRef;\n    if (cacheKey instanceof Ref) {\n      fnRef = cacheKey;\n    } else if (cacheKey instanceof Dict) {\n      fnRef = cacheKey.objId;\n    } else if (isStream(cacheKey)) {\n      fnRef = cacheKey.dict && cacheKey.dict.objId;\n    }\n    if (fnRef) {\n      const localFunction = this._localFunctionCache.getByRef(fnRef);\n      if (localFunction) {\n        return localFunction;\n      }\n    }\n    return null;\n  }\n\n  /**\n   * @private\n   */\n  _cache(cacheKey, parsedFunction) {\n    if (!parsedFunction) {\n      throw new Error(\n        'PDFFunctionFactory._cache - expected \"parsedFunction\" argument.'\n      );\n    }\n    let fnRef;\n    if (cacheKey instanceof Ref) {\n      fnRef = cacheKey;\n    } else if (cacheKey instanceof Dict) {\n      fnRef = cacheKey.objId;\n    } else if (isStream(cacheKey)) {\n      fnRef = cacheKey.dict && cacheKey.dict.objId;\n    }\n    if (fnRef) {\n      this._localFunctionCache.set(/* name = */ null, fnRef, parsedFunction);\n    }\n  }\n\n  /**\n   * @private\n   */\n  get _localFunctionCache() {\n    return shadow(this, \"_localFunctionCache\", new LocalFunctionCache());\n  }\n}\n\nfunction toNumberArray(arr) {\n  if (!Array.isArray(arr)) {\n    return null;\n  }\n  const length = arr.length;\n  for (let i = 0; i < length; i++) {\n    if (typeof arr[i] !== \"number\") {\n      // Non-number is found -- convert all items to numbers.\n      const result = new Array(length);\n      for (let j = 0; j < length; j++) {\n        result[j] = +arr[j];\n      }\n      return result;\n    }\n  }\n  return arr;\n}\n\nclass PDFFunction {\n  static getSampleArray(size, outputSize, bps, stream) {\n    let i, ii;\n    let length = 1;\n    for (i = 0, ii = size.length; i < ii; i++) {\n      length *= size[i];\n    }\n    length *= outputSize;\n\n    const array = new Array(length);\n    let codeSize = 0;\n    let codeBuf = 0;\n    // 32 is a valid bps so shifting won't work\n    const sampleMul = 1.0 / (2.0 ** bps - 1);\n\n    const strBytes = stream.getBytes((length * bps + 7) / 8);\n    let strIdx = 0;\n    for (i = 0; i < length; i++) {\n      while (codeSize < bps) {\n        codeBuf <<= 8;\n        codeBuf |= strBytes[strIdx++];\n        codeSize += 8;\n      }\n      codeSize -= bps;\n      array[i] = (codeBuf >> codeSize) * sampleMul;\n      codeBuf &= (1 << codeSize) - 1;\n    }\n    return array;\n  }\n\n  static parse({ xref, isEvalSupported, fn }) {\n    const dict = fn.dict || fn;\n    const typeNum = dict.get(\"FunctionType\");\n\n    switch (typeNum) {\n      case 0:\n        return this.constructSampled({ xref, isEvalSupported, fn, dict });\n      case 1:\n        break;\n      case 2:\n        return this.constructInterpolated({ xref, isEvalSupported, dict });\n      case 3:\n        return this.constructStiched({ xref, isEvalSupported, dict });\n      case 4:\n        return this.constructPostScript({ xref, isEvalSupported, fn, dict });\n    }\n    throw new FormatError(\"Unknown type of function\");\n  }\n\n  static parseArray({ xref, isEvalSupported, fnObj }) {\n    if (!Array.isArray(fnObj)) {\n      // not an array -- parsing as regular function\n      return this.parse({ xref, isEvalSupported, fn: fnObj });\n    }\n\n    const fnArray = [];\n    for (let j = 0, jj = fnObj.length; j < jj; j++) {\n      fnArray.push(\n        this.parse({ xref, isEvalSupported, fn: xref.fetchIfRef(fnObj[j]) })\n      );\n    }\n    return function (src, srcOffset, dest, destOffset) {\n      for (let i = 0, ii = fnArray.length; i < ii; i++) {\n        fnArray[i](src, srcOffset, dest, destOffset + i);\n      }\n    };\n  }\n\n  static constructSampled({ xref, isEvalSupported, fn, dict }) {\n    function toMultiArray(arr) {\n      const inputLength = arr.length;\n      const out = [];\n      let index = 0;\n      for (let i = 0; i < inputLength; i += 2) {\n        out[index++] = [arr[i], arr[i + 1]];\n      }\n      return out;\n    }\n    // See chapter 3, page 109 of the PDF reference\n    function interpolate(x, xmin, xmax, ymin, ymax) {\n      return ymin + (x - xmin) * ((ymax - ymin) / (xmax - xmin));\n    }\n\n    let domain = toNumberArray(dict.getArray(\"Domain\"));\n    let range = toNumberArray(dict.getArray(\"Range\"));\n\n    if (!domain || !range) {\n      throw new FormatError(\"No domain or range\");\n    }\n\n    const inputSize = domain.length / 2;\n    const outputSize = range.length / 2;\n\n    domain = toMultiArray(domain);\n    range = toMultiArray(range);\n\n    const size = toNumberArray(dict.getArray(\"Size\"));\n    const bps = dict.get(\"BitsPerSample\");\n    const order = dict.get(\"Order\") || 1;\n    if (order !== 1) {\n      // No description how cubic spline interpolation works in PDF32000:2008\n      // As in poppler, ignoring order, linear interpolation may work as good\n      info(\"No support for cubic spline interpolation: \" + order);\n    }\n\n    let encode = toNumberArray(dict.getArray(\"Encode\"));\n    if (!encode) {\n      encode = [];\n      for (let i = 0; i < inputSize; ++i) {\n        encode.push([0, size[i] - 1]);\n      }\n    } else {\n      encode = toMultiArray(encode);\n    }\n\n    let decode = toNumberArray(dict.getArray(\"Decode\"));\n    if (!decode) {\n      decode = range;\n    } else {\n      decode = toMultiArray(decode);\n    }\n\n    const samples = this.getSampleArray(size, outputSize, bps, fn);\n    // const mask = 2 ** bps - 1;\n\n    return function constructSampledFn(src, srcOffset, dest, destOffset) {\n      // See chapter 3, page 110 of the PDF reference.\n\n      // Building the cube vertices: its part and sample index\n      // http://rjwagner49.com/Mathematics/Interpolation.pdf\n      const cubeVertices = 1 << inputSize;\n      const cubeN = new Float64Array(cubeVertices);\n      const cubeVertex = new Uint32Array(cubeVertices);\n      let i, j;\n      for (j = 0; j < cubeVertices; j++) {\n        cubeN[j] = 1;\n      }\n\n      let k = outputSize,\n        pos = 1;\n      // Map x_i to y_j for 0 <= i < m using the sampled function.\n      for (i = 0; i < inputSize; ++i) {\n        // x_i' = min(max(x_i, Domain_2i), Domain_2i+1)\n        const domain_2i = domain[i][0];\n        const domain_2i_1 = domain[i][1];\n        const xi = Math.min(\n          Math.max(src[srcOffset + i], domain_2i),\n          domain_2i_1\n        );\n\n        // e_i = Interpolate(x_i', Domain_2i, Domain_2i+1,\n        //                   Encode_2i, Encode_2i+1)\n        let e = interpolate(\n          xi,\n          domain_2i,\n          domain_2i_1,\n          encode[i][0],\n          encode[i][1]\n        );\n\n        // e_i' = min(max(e_i, 0), Size_i - 1)\n        const size_i = size[i];\n        e = Math.min(Math.max(e, 0), size_i - 1);\n\n        // Adjusting the cube: N and vertex sample index\n        const e0 = e < size_i - 1 ? Math.floor(e) : e - 1; // e1 = e0 + 1;\n        const n0 = e0 + 1 - e; // (e1 - e) / (e1 - e0);\n        const n1 = e - e0; // (e - e0) / (e1 - e0);\n        const offset0 = e0 * k;\n        const offset1 = offset0 + k; // e1 * k\n        for (j = 0; j < cubeVertices; j++) {\n          if (j & pos) {\n            cubeN[j] *= n1;\n            cubeVertex[j] += offset1;\n          } else {\n            cubeN[j] *= n0;\n            cubeVertex[j] += offset0;\n          }\n        }\n\n        k *= size_i;\n        pos <<= 1;\n      }\n\n      for (j = 0; j < outputSize; ++j) {\n        // Sum all cube vertices' samples portions\n        let rj = 0;\n        for (i = 0; i < cubeVertices; i++) {\n          rj += samples[cubeVertex[i] + j] * cubeN[i];\n        }\n\n        // r_j' = Interpolate(r_j, 0, 2^BitsPerSample - 1,\n        //                    Decode_2j, Decode_2j+1)\n        rj = interpolate(rj, 0, 1, decode[j][0], decode[j][1]);\n\n        // y_j = min(max(r_j, range_2j), range_2j+1)\n        dest[destOffset + j] = Math.min(Math.max(rj, range[j][0]), range[j][1]);\n      }\n    };\n  }\n\n  static constructInterpolated({ xref, isEvalSupported, dict }) {\n    const c0 = toNumberArray(dict.getArray(\"C0\")) || [0];\n    const c1 = toNumberArray(dict.getArray(\"C1\")) || [1];\n    const n = dict.get(\"N\");\n\n    const diff = [];\n    for (let i = 0, ii = c0.length; i < ii; ++i) {\n      diff.push(c1[i] - c0[i]);\n    }\n    const length = diff.length;\n\n    return function constructInterpolatedFn(src, srcOffset, dest, destOffset) {\n      const x = n === 1 ? src[srcOffset] : src[srcOffset] ** n;\n\n      for (let j = 0; j < length; ++j) {\n        dest[destOffset + j] = c0[j] + x * diff[j];\n      }\n    };\n  }\n\n  static constructStiched({ xref, isEvalSupported, dict }) {\n    const domain = toNumberArray(dict.getArray(\"Domain\"));\n\n    if (!domain) {\n      throw new FormatError(\"No domain\");\n    }\n\n    const inputSize = domain.length / 2;\n    if (inputSize !== 1) {\n      throw new FormatError(\"Bad domain for stiched function\");\n    }\n\n    const fnRefs = dict.get(\"Functions\");\n    const fns = [];\n    for (let i = 0, ii = fnRefs.length; i < ii; ++i) {\n      fns.push(\n        this.parse({ xref, isEvalSupported, fn: xref.fetchIfRef(fnRefs[i]) })\n      );\n    }\n\n    const bounds = toNumberArray(dict.getArray(\"Bounds\"));\n    const encode = toNumberArray(dict.getArray(\"Encode\"));\n    const tmpBuf = new Float32Array(1);\n\n    return function constructStichedFn(src, srcOffset, dest, destOffset) {\n      const clip = function constructStichedFromIRClip(v, min, max) {\n        if (v > max) {\n          v = max;\n        } else if (v < min) {\n          v = min;\n        }\n        return v;\n      };\n\n      // clip to domain\n      const v = clip(src[srcOffset], domain[0], domain[1]);\n      // calculate which bound the value is in\n      const length = bounds.length;\n      let i;\n      for (i = 0; i < length; ++i) {\n        if (v < bounds[i]) {\n          break;\n        }\n      }\n\n      // encode value into domain of function\n      let dmin = domain[0];\n      if (i > 0) {\n        dmin = bounds[i - 1];\n      }\n      let dmax = domain[1];\n      if (i < bounds.length) {\n        dmax = bounds[i];\n      }\n\n      const rmin = encode[2 * i];\n      const rmax = encode[2 * i + 1];\n\n      // Prevent the value from becoming NaN as a result\n      // of division by zero (fixes issue6113.pdf).\n      tmpBuf[0] =\n        dmin === dmax\n          ? rmin\n          : rmin + ((v - dmin) * (rmax - rmin)) / (dmax - dmin);\n\n      // call the appropriate function\n      fns[i](tmpBuf, 0, dest, destOffset);\n    };\n  }\n\n  static constructPostScript({ xref, isEvalSupported, fn, dict }) {\n    const domain = toNumberArray(dict.getArray(\"Domain\"));\n    const range = toNumberArray(dict.getArray(\"Range\"));\n\n    if (!domain) {\n      throw new FormatError(\"No domain.\");\n    }\n\n    if (!range) {\n      throw new FormatError(\"No range.\");\n    }\n\n    const lexer = new PostScriptLexer(fn);\n    const parser = new PostScriptParser(lexer);\n    const code = parser.parse();\n\n    if (isEvalSupported && IsEvalSupportedCached.value) {\n      const compiled = new PostScriptCompiler().compile(code, domain, range);\n      if (compiled) {\n        // Compiled function consists of simple expressions such as addition,\n        // subtraction, Math.max, and also contains 'var' and 'return'\n        // statements. See the generation in the PostScriptCompiler below.\n        // eslint-disable-next-line no-new-func\n        return new Function(\"src\", \"srcOffset\", \"dest\", \"destOffset\", compiled);\n      }\n    }\n    info(\"Unable to compile PS function\");\n\n    const numOutputs = range.length >> 1;\n    const numInputs = domain.length >> 1;\n    const evaluator = new PostScriptEvaluator(code);\n    // Cache the values for a big speed up, the cache size is limited though\n    // since the number of possible values can be huge from a PS function.\n    const cache = Object.create(null);\n    // The MAX_CACHE_SIZE is set to ~4x the maximum number of distinct values\n    // seen in our tests.\n    const MAX_CACHE_SIZE = 2048 * 4;\n    let cache_available = MAX_CACHE_SIZE;\n    const tmpBuf = new Float32Array(numInputs);\n\n    return function constructPostScriptFn(src, srcOffset, dest, destOffset) {\n      let i, value;\n      let key = \"\";\n      const input = tmpBuf;\n      for (i = 0; i < numInputs; i++) {\n        value = src[srcOffset + i];\n        input[i] = value;\n        key += value + \"_\";\n      }\n\n      const cachedValue = cache[key];\n      if (cachedValue !== undefined) {\n        dest.set(cachedValue, destOffset);\n        return;\n      }\n\n      const output = new Float32Array(numOutputs);\n      const stack = evaluator.execute(input);\n      const stackIndex = stack.length - numOutputs;\n      for (i = 0; i < numOutputs; i++) {\n        value = stack[stackIndex + i];\n        let bound = range[i * 2];\n        if (value < bound) {\n          value = bound;\n        } else {\n          bound = range[i * 2 + 1];\n          if (value > bound) {\n            value = bound;\n          }\n        }\n        output[i] = value;\n      }\n      if (cache_available > 0) {\n        cache_available--;\n        cache[key] = output;\n      }\n      dest.set(output, destOffset);\n    };\n  }\n}\n\nfunction isPDFFunction(v) {\n  let fnDict;\n  if (typeof v !== \"object\") {\n    return false;\n  } else if (isDict(v)) {\n    fnDict = v;\n  } else if (isStream(v)) {\n    fnDict = v.dict;\n  } else {\n    return false;\n  }\n  return fnDict.has(\"FunctionType\");\n}\n\nclass PostScriptStack {\n  static get MAX_STACK_SIZE() {\n    return shadow(this, \"MAX_STACK_SIZE\", 100);\n  }\n\n  constructor(initialStack) {\n    this.stack = !initialStack\n      ? []\n      : Array.prototype.slice.call(initialStack, 0);\n  }\n\n  push(value) {\n    if (this.stack.length >= PostScriptStack.MAX_STACK_SIZE) {\n      throw new Error(\"PostScript function stack overflow.\");\n    }\n    this.stack.push(value);\n  }\n\n  pop() {\n    if (this.stack.length <= 0) {\n      throw new Error(\"PostScript function stack underflow.\");\n    }\n    return this.stack.pop();\n  }\n\n  copy(n) {\n    if (this.stack.length + n >= PostScriptStack.MAX_STACK_SIZE) {\n      throw new Error(\"PostScript function stack overflow.\");\n    }\n    const stack = this.stack;\n    for (let i = stack.length - n, j = n - 1; j >= 0; j--, i++) {\n      stack.push(stack[i]);\n    }\n  }\n\n  index(n) {\n    this.push(this.stack[this.stack.length - n - 1]);\n  }\n\n  // rotate the last n stack elements p times\n  roll(n, p) {\n    const stack = this.stack;\n    const l = stack.length - n;\n    const r = stack.length - 1;\n    const c = l + (p - Math.floor(p / n) * n);\n\n    for (let i = l, j = r; i < j; i++, j--) {\n      const t = stack[i];\n      stack[i] = stack[j];\n      stack[j] = t;\n    }\n    for (let i = l, j = c - 1; i < j; i++, j--) {\n      const t = stack[i];\n      stack[i] = stack[j];\n      stack[j] = t;\n    }\n    for (let i = c, j = r; i < j; i++, j--) {\n      const t = stack[i];\n      stack[i] = stack[j];\n      stack[j] = t;\n    }\n  }\n}\n\nclass PostScriptEvaluator {\n  constructor(operators) {\n    this.operators = operators;\n  }\n\n  execute(initialStack) {\n    const stack = new PostScriptStack(initialStack);\n    let counter = 0;\n    const operators = this.operators;\n    const length = operators.length;\n    let operator, a, b;\n    while (counter < length) {\n      operator = operators[counter++];\n      if (typeof operator === \"number\") {\n        // Operator is really an operand and should be pushed to the stack.\n        stack.push(operator);\n        continue;\n      }\n      switch (operator) {\n        // non standard ps operators\n        case \"jz\": // jump if false\n          b = stack.pop();\n          a = stack.pop();\n          if (!a) {\n            counter = b;\n          }\n          break;\n        case \"j\": // jump\n          a = stack.pop();\n          counter = a;\n          break;\n\n        // all ps operators in alphabetical order (excluding if/ifelse)\n        case \"abs\":\n          a = stack.pop();\n          stack.push(Math.abs(a));\n          break;\n        case \"add\":\n          b = stack.pop();\n          a = stack.pop();\n          stack.push(a + b);\n          break;\n        case \"and\":\n          b = stack.pop();\n          a = stack.pop();\n          if (isBool(a) && isBool(b)) {\n            stack.push(a && b);\n          } else {\n            stack.push(a & b);\n          }\n          break;\n        case \"atan\":\n          a = stack.pop();\n          stack.push(Math.atan(a));\n          break;\n        case \"bitshift\":\n          b = stack.pop();\n          a = stack.pop();\n          if (a > 0) {\n            stack.push(a << b);\n          } else {\n            stack.push(a >> b);\n          }\n          break;\n        case \"ceiling\":\n          a = stack.pop();\n          stack.push(Math.ceil(a));\n          break;\n        case \"copy\":\n          a = stack.pop();\n          stack.copy(a);\n          break;\n        case \"cos\":\n          a = stack.pop();\n          stack.push(Math.cos(a));\n          break;\n        case \"cvi\":\n          a = stack.pop() | 0;\n          stack.push(a);\n          break;\n        case \"cvr\":\n          // noop\n          break;\n        case \"div\":\n          b = stack.pop();\n          a = stack.pop();\n          stack.push(a / b);\n          break;\n        case \"dup\":\n          stack.copy(1);\n          break;\n        case \"eq\":\n          b = stack.pop();\n          a = stack.pop();\n          stack.push(a === b);\n          break;\n        case \"exch\":\n          stack.roll(2, 1);\n          break;\n        case \"exp\":\n          b = stack.pop();\n          a = stack.pop();\n          stack.push(a ** b);\n          break;\n        case \"false\":\n          stack.push(false);\n          break;\n        case \"floor\":\n          a = stack.pop();\n          stack.push(Math.floor(a));\n          break;\n        case \"ge\":\n          b = stack.pop();\n          a = stack.pop();\n          stack.push(a >= b);\n          break;\n        case \"gt\":\n          b = stack.pop();\n          a = stack.pop();\n          stack.push(a > b);\n          break;\n        case \"idiv\":\n          b = stack.pop();\n          a = stack.pop();\n          stack.push((a / b) | 0);\n          break;\n        case \"index\":\n          a = stack.pop();\n          stack.index(a);\n          break;\n        case \"le\":\n          b = stack.pop();\n          a = stack.pop();\n          stack.push(a <= b);\n          break;\n        case \"ln\":\n          a = stack.pop();\n          stack.push(Math.log(a));\n          break;\n        case \"log\":\n          a = stack.pop();\n          stack.push(Math.log(a) / Math.LN10);\n          break;\n        case \"lt\":\n          b = stack.pop();\n          a = stack.pop();\n          stack.push(a < b);\n          break;\n        case \"mod\":\n          b = stack.pop();\n          a = stack.pop();\n          stack.push(a % b);\n          break;\n        case \"mul\":\n          b = stack.pop();\n          a = stack.pop();\n          stack.push(a * b);\n          break;\n        case \"ne\":\n          b = stack.pop();\n          a = stack.pop();\n          stack.push(a !== b);\n          break;\n        case \"neg\":\n          a = stack.pop();\n          stack.push(-a);\n          break;\n        case \"not\":\n          a = stack.pop();\n          if (isBool(a)) {\n            stack.push(!a);\n          } else {\n            stack.push(~a);\n          }\n          break;\n        case \"or\":\n          b = stack.pop();\n          a = stack.pop();\n          if (isBool(a) && isBool(b)) {\n            stack.push(a || b);\n          } else {\n            stack.push(a | b);\n          }\n          break;\n        case \"pop\":\n          stack.pop();\n          break;\n        case \"roll\":\n          b = stack.pop();\n          a = stack.pop();\n          stack.roll(a, b);\n          break;\n        case \"round\":\n          a = stack.pop();\n          stack.push(Math.round(a));\n          break;\n        case \"sin\":\n          a = stack.pop();\n          stack.push(Math.sin(a));\n          break;\n        case \"sqrt\":\n          a = stack.pop();\n          stack.push(Math.sqrt(a));\n          break;\n        case \"sub\":\n          b = stack.pop();\n          a = stack.pop();\n          stack.push(a - b);\n          break;\n        case \"true\":\n          stack.push(true);\n          break;\n        case \"truncate\":\n          a = stack.pop();\n          a = a < 0 ? Math.ceil(a) : Math.floor(a);\n          stack.push(a);\n          break;\n        case \"xor\":\n          b = stack.pop();\n          a = stack.pop();\n          if (isBool(a) && isBool(b)) {\n            stack.push(a !== b);\n          } else {\n            stack.push(a ^ b);\n          }\n          break;\n        default:\n          throw new FormatError(`Unknown operator ${operator}`);\n      }\n    }\n    return stack.stack;\n  }\n}\n\n// Most of the PDFs functions consist of simple operations such as:\n//   roll, exch, sub, cvr, pop, index, dup, mul, if, gt, add.\n//\n// We can compile most of such programs, and at the same moment, we can\n// optimize some expressions using basic math properties. Keeping track of\n// min/max values will allow us to avoid extra Math.min/Math.max calls.\nconst PostScriptCompiler = (function PostScriptCompilerClosure() {\n  class AstNode {\n    constructor(type) {\n      this.type = type;\n    }\n\n    visit(visitor) {\n      unreachable(\"abstract method\");\n    }\n  }\n\n  class AstArgument extends AstNode {\n    constructor(index, min, max) {\n      super(\"args\");\n      this.index = index;\n      this.min = min;\n      this.max = max;\n    }\n\n    visit(visitor) {\n      visitor.visitArgument(this);\n    }\n  }\n\n  class AstLiteral extends AstNode {\n    constructor(number) {\n      super(\"literal\");\n      this.number = number;\n      this.min = number;\n      this.max = number;\n    }\n\n    visit(visitor) {\n      visitor.visitLiteral(this);\n    }\n  }\n\n  class AstBinaryOperation extends AstNode {\n    constructor(op, arg1, arg2, min, max) {\n      super(\"binary\");\n      this.op = op;\n      this.arg1 = arg1;\n      this.arg2 = arg2;\n      this.min = min;\n      this.max = max;\n    }\n\n    visit(visitor) {\n      visitor.visitBinaryOperation(this);\n    }\n  }\n\n  class AstMin extends AstNode {\n    constructor(arg, max) {\n      super(\"max\");\n      this.arg = arg;\n      this.min = arg.min;\n      this.max = max;\n    }\n\n    visit(visitor) {\n      visitor.visitMin(this);\n    }\n  }\n\n  class AstVariable extends AstNode {\n    constructor(index, min, max) {\n      super(\"var\");\n      this.index = index;\n      this.min = min;\n      this.max = max;\n    }\n\n    visit(visitor) {\n      visitor.visitVariable(this);\n    }\n  }\n\n  class AstVariableDefinition extends AstNode {\n    constructor(variable, arg) {\n      super(\"definition\");\n      this.variable = variable;\n      this.arg = arg;\n    }\n\n    visit(visitor) {\n      visitor.visitVariableDefinition(this);\n    }\n  }\n\n  class ExpressionBuilderVisitor {\n    constructor() {\n      this.parts = [];\n    }\n\n    visitArgument(arg) {\n      this.parts.push(\n        \"Math.max(\",\n        arg.min,\n        \", Math.min(\",\n        arg.max,\n        \", src[srcOffset + \",\n        arg.index,\n        \"]))\"\n      );\n    }\n\n    visitVariable(variable) {\n      this.parts.push(\"v\", variable.index);\n    }\n\n    visitLiteral(literal) {\n      this.parts.push(literal.number);\n    }\n\n    visitBinaryOperation(operation) {\n      this.parts.push(\"(\");\n      operation.arg1.visit(this);\n      this.parts.push(\" \", operation.op, \" \");\n      operation.arg2.visit(this);\n      this.parts.push(\")\");\n    }\n\n    visitVariableDefinition(definition) {\n      this.parts.push(\"var \");\n      definition.variable.visit(this);\n      this.parts.push(\" = \");\n      definition.arg.visit(this);\n      this.parts.push(\";\");\n    }\n\n    visitMin(max) {\n      this.parts.push(\"Math.min(\");\n      max.arg.visit(this);\n      this.parts.push(\", \", max.max, \")\");\n    }\n\n    toString() {\n      return this.parts.join(\"\");\n    }\n  }\n\n  function buildAddOperation(num1, num2) {\n    if (num2.type === \"literal\" && num2.number === 0) {\n      // optimization: second operand is 0\n      return num1;\n    }\n    if (num1.type === \"literal\" && num1.number === 0) {\n      // optimization: first operand is 0\n      return num2;\n    }\n    if (num2.type === \"literal\" && num1.type === \"literal\") {\n      // optimization: operands operand are literals\n      return new AstLiteral(num1.number + num2.number);\n    }\n    return new AstBinaryOperation(\n      \"+\",\n      num1,\n      num2,\n      num1.min + num2.min,\n      num1.max + num2.max\n    );\n  }\n\n  function buildMulOperation(num1, num2) {\n    if (num2.type === \"literal\") {\n      // optimization: second operands is a literal...\n      if (num2.number === 0) {\n        return new AstLiteral(0); // and it's 0\n      } else if (num2.number === 1) {\n        return num1; // and it's 1\n      } else if (num1.type === \"literal\") {\n        // ... and first operands is a literal too\n        return new AstLiteral(num1.number * num2.number);\n      }\n    }\n    if (num1.type === \"literal\") {\n      // optimization: first operands is a literal...\n      if (num1.number === 0) {\n        return new AstLiteral(0); // and it's 0\n      } else if (num1.number === 1) {\n        return num2; // and it's 1\n      }\n    }\n    const min = Math.min(\n      num1.min * num2.min,\n      num1.min * num2.max,\n      num1.max * num2.min,\n      num1.max * num2.max\n    );\n    const max = Math.max(\n      num1.min * num2.min,\n      num1.min * num2.max,\n      num1.max * num2.min,\n      num1.max * num2.max\n    );\n    return new AstBinaryOperation(\"*\", num1, num2, min, max);\n  }\n\n  function buildSubOperation(num1, num2) {\n    if (num2.type === \"literal\") {\n      // optimization: second operands is a literal...\n      if (num2.number === 0) {\n        return num1; // ... and it's 0\n      } else if (num1.type === \"literal\") {\n        // ... and first operands is a literal too\n        return new AstLiteral(num1.number - num2.number);\n      }\n    }\n    if (\n      num2.type === \"binary\" &&\n      num2.op === \"-\" &&\n      num1.type === \"literal\" &&\n      num1.number === 1 &&\n      num2.arg1.type === \"literal\" &&\n      num2.arg1.number === 1\n    ) {\n      // optimization for case: 1 - (1 - x)\n      return num2.arg2;\n    }\n    return new AstBinaryOperation(\n      \"-\",\n      num1,\n      num2,\n      num1.min - num2.max,\n      num1.max - num2.min\n    );\n  }\n\n  function buildMinOperation(num1, max) {\n    if (num1.min >= max) {\n      // optimization: num1 min value is not less than required max\n      return new AstLiteral(max); // just returning max\n    } else if (num1.max <= max) {\n      // optimization: num1 max value is not greater than required max\n      return num1; // just returning an argument\n    }\n    return new AstMin(num1, max);\n  }\n\n  // eslint-disable-next-line no-shadow\n  class PostScriptCompiler {\n    compile(code, domain, range) {\n      const stack = [];\n      const instructions = [];\n      const inputSize = domain.length >> 1,\n        outputSize = range.length >> 1;\n      let lastRegister = 0;\n      let n, j;\n      let num1, num2, ast1, ast2, tmpVar, item;\n      for (let i = 0; i < inputSize; i++) {\n        stack.push(new AstArgument(i, domain[i * 2], domain[i * 2 + 1]));\n      }\n\n      for (let i = 0, ii = code.length; i < ii; i++) {\n        item = code[i];\n        if (typeof item === \"number\") {\n          stack.push(new AstLiteral(item));\n          continue;\n        }\n\n        switch (item) {\n          case \"add\":\n            if (stack.length < 2) {\n              return null;\n            }\n            num2 = stack.pop();\n            num1 = stack.pop();\n            stack.push(buildAddOperation(num1, num2));\n            break;\n          case \"cvr\":\n            if (stack.length < 1) {\n              return null;\n            }\n            break;\n          case \"mul\":\n            if (stack.length < 2) {\n              return null;\n            }\n            num2 = stack.pop();\n            num1 = stack.pop();\n            stack.push(buildMulOperation(num1, num2));\n            break;\n          case \"sub\":\n            if (stack.length < 2) {\n              return null;\n            }\n            num2 = stack.pop();\n            num1 = stack.pop();\n            stack.push(buildSubOperation(num1, num2));\n            break;\n          case \"exch\":\n            if (stack.length < 2) {\n              return null;\n            }\n            ast1 = stack.pop();\n            ast2 = stack.pop();\n            stack.push(ast1, ast2);\n            break;\n          case \"pop\":\n            if (stack.length < 1) {\n              return null;\n            }\n            stack.pop();\n            break;\n          case \"index\":\n            if (stack.length < 1) {\n              return null;\n            }\n            num1 = stack.pop();\n            if (num1.type !== \"literal\") {\n              return null;\n            }\n            n = num1.number;\n            if (n < 0 || !Number.isInteger(n) || stack.length < n) {\n              return null;\n            }\n            ast1 = stack[stack.length - n - 1];\n            if (ast1.type === \"literal\" || ast1.type === \"var\") {\n              stack.push(ast1);\n              break;\n            }\n            tmpVar = new AstVariable(lastRegister++, ast1.min, ast1.max);\n            stack[stack.length - n - 1] = tmpVar;\n            stack.push(tmpVar);\n            instructions.push(new AstVariableDefinition(tmpVar, ast1));\n            break;\n          case \"dup\":\n            if (stack.length < 1) {\n              return null;\n            }\n            if (\n              typeof code[i + 1] === \"number\" &&\n              code[i + 2] === \"gt\" &&\n              code[i + 3] === i + 7 &&\n              code[i + 4] === \"jz\" &&\n              code[i + 5] === \"pop\" &&\n              code[i + 6] === code[i + 1]\n            ) {\n              // special case of the commands sequence for the min operation\n              num1 = stack.pop();\n              stack.push(buildMinOperation(num1, code[i + 1]));\n              i += 6;\n              break;\n            }\n            ast1 = stack[stack.length - 1];\n            if (ast1.type === \"literal\" || ast1.type === \"var\") {\n              // we don't have to save into intermediate variable a literal or\n              // variable.\n              stack.push(ast1);\n              break;\n            }\n            tmpVar = new AstVariable(lastRegister++, ast1.min, ast1.max);\n            stack[stack.length - 1] = tmpVar;\n            stack.push(tmpVar);\n            instructions.push(new AstVariableDefinition(tmpVar, ast1));\n            break;\n          case \"roll\":\n            if (stack.length < 2) {\n              return null;\n            }\n            num2 = stack.pop();\n            num1 = stack.pop();\n            if (num2.type !== \"literal\" || num1.type !== \"literal\") {\n              // both roll operands must be numbers\n              return null;\n            }\n            j = num2.number;\n            n = num1.number;\n            if (\n              n <= 0 ||\n              !Number.isInteger(n) ||\n              !Number.isInteger(j) ||\n              stack.length < n\n            ) {\n              // ... and integers\n              return null;\n            }\n            j = ((j % n) + n) % n;\n            if (j === 0) {\n              break; // just skipping -- there are nothing to rotate\n            }\n            Array.prototype.push.apply(\n              stack,\n              stack.splice(stack.length - n, n - j)\n            );\n            break;\n          default:\n            return null; // unsupported operator\n        }\n      }\n\n      if (stack.length !== outputSize) {\n        return null;\n      }\n\n      const result = [];\n      for (const instruction of instructions) {\n        const statementBuilder = new ExpressionBuilderVisitor();\n        instruction.visit(statementBuilder);\n        result.push(statementBuilder.toString());\n      }\n      for (let i = 0, ii = stack.length; i < ii; i++) {\n        const expr = stack[i],\n          statementBuilder = new ExpressionBuilderVisitor();\n        expr.visit(statementBuilder);\n        const min = range[i * 2],\n          max = range[i * 2 + 1];\n        const out = [statementBuilder.toString()];\n        if (min > expr.min) {\n          out.unshift(\"Math.max(\", min, \", \");\n          out.push(\")\");\n        }\n        if (max < expr.max) {\n          out.unshift(\"Math.min(\", max, \", \");\n          out.push(\")\");\n        }\n        out.unshift(\"dest[destOffset + \", i, \"] = \");\n        out.push(\";\");\n        result.push(out.join(\"\"));\n      }\n      return result.join(\"\\n\");\n    }\n  }\n\n  return PostScriptCompiler;\n})();\n\nexport {\n  isPDFFunction,\n  PDFFunctionFactory,\n  PostScriptCompiler,\n  PostScriptEvaluator,\n};\n","/* Copyright 2014 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { FormatError, shadow } from \"../shared/util.js\";\nimport { EOF } from \"./primitives.js\";\nimport { isWhiteSpace } from \"./core_utils.js\";\n\nclass PostScriptParser {\n  constructor(lexer) {\n    this.lexer = lexer;\n    this.operators = [];\n    this.token = null;\n    this.prev = null;\n  }\n\n  nextToken() {\n    this.prev = this.token;\n    this.token = this.lexer.getToken();\n  }\n\n  accept(type) {\n    if (this.token.type === type) {\n      this.nextToken();\n      return true;\n    }\n    return false;\n  }\n\n  expect(type) {\n    if (this.accept(type)) {\n      return true;\n    }\n    throw new FormatError(\n      `Unexpected symbol: found ${this.token.type} expected ${type}.`\n    );\n  }\n\n  parse() {\n    this.nextToken();\n    this.expect(PostScriptTokenTypes.LBRACE);\n    this.parseBlock();\n    this.expect(PostScriptTokenTypes.RBRACE);\n    return this.operators;\n  }\n\n  parseBlock() {\n    while (true) {\n      if (this.accept(PostScriptTokenTypes.NUMBER)) {\n        this.operators.push(this.prev.value);\n      } else if (this.accept(PostScriptTokenTypes.OPERATOR)) {\n        this.operators.push(this.prev.value);\n      } else if (this.accept(PostScriptTokenTypes.LBRACE)) {\n        this.parseCondition();\n      } else {\n        return;\n      }\n    }\n  }\n\n  parseCondition() {\n    // Add two place holders that will be updated later\n    const conditionLocation = this.operators.length;\n    this.operators.push(null, null);\n\n    this.parseBlock();\n    this.expect(PostScriptTokenTypes.RBRACE);\n    if (this.accept(PostScriptTokenTypes.IF)) {\n      // The true block is right after the 'if' so it just falls through on true\n      // else it jumps and skips the true block.\n      this.operators[conditionLocation] = this.operators.length;\n      this.operators[conditionLocation + 1] = \"jz\";\n    } else if (this.accept(PostScriptTokenTypes.LBRACE)) {\n      const jumpLocation = this.operators.length;\n      this.operators.push(null, null);\n      const endOfTrue = this.operators.length;\n      this.parseBlock();\n      this.expect(PostScriptTokenTypes.RBRACE);\n      this.expect(PostScriptTokenTypes.IFELSE);\n      // The jump is added at the end of the true block to skip the false block.\n      this.operators[jumpLocation] = this.operators.length;\n      this.operators[jumpLocation + 1] = \"j\";\n\n      this.operators[conditionLocation] = endOfTrue;\n      this.operators[conditionLocation + 1] = \"jz\";\n    } else {\n      throw new FormatError(\"PS Function: error parsing conditional.\");\n    }\n  }\n}\n\nconst PostScriptTokenTypes = {\n  LBRACE: 0,\n  RBRACE: 1,\n  NUMBER: 2,\n  OPERATOR: 3,\n  IF: 4,\n  IFELSE: 5,\n};\n\nclass PostScriptToken {\n  static get opCache() {\n    return shadow(this, \"opCache\", Object.create(null));\n  }\n\n  constructor(type, value) {\n    this.type = type;\n    this.value = value;\n  }\n\n  static getOperator(op) {\n    const opValue = PostScriptToken.opCache[op];\n    if (opValue) {\n      return opValue;\n    }\n    return (PostScriptToken.opCache[op] = new PostScriptToken(\n      PostScriptTokenTypes.OPERATOR,\n      op\n    ));\n  }\n\n  static get LBRACE() {\n    return shadow(\n      this,\n      \"LBRACE\",\n      new PostScriptToken(PostScriptTokenTypes.LBRACE, \"{\")\n    );\n  }\n\n  static get RBRACE() {\n    return shadow(\n      this,\n      \"RBRACE\",\n      new PostScriptToken(PostScriptTokenTypes.RBRACE, \"}\")\n    );\n  }\n\n  static get IF() {\n    return shadow(\n      this,\n      \"IF\",\n      new PostScriptToken(PostScriptTokenTypes.IF, \"IF\")\n    );\n  }\n\n  static get IFELSE() {\n    return shadow(\n      this,\n      \"IFELSE\",\n      new PostScriptToken(PostScriptTokenTypes.IFELSE, \"IFELSE\")\n    );\n  }\n}\n\nclass PostScriptLexer {\n  constructor(stream) {\n    this.stream = stream;\n    this.nextChar();\n\n    this.strBuf = [];\n  }\n\n  nextChar() {\n    return (this.currentChar = this.stream.getByte());\n  }\n\n  getToken() {\n    let comment = false;\n    let ch = this.currentChar;\n\n    // skip comments\n    while (true) {\n      if (ch < 0) {\n        return EOF;\n      }\n\n      if (comment) {\n        if (ch === 0x0a || ch === 0x0d) {\n          comment = false;\n        }\n      } else if (ch === /* '%' = */ 0x25) {\n        comment = true;\n      } else if (!isWhiteSpace(ch)) {\n        break;\n      }\n      ch = this.nextChar();\n    }\n    switch (ch | 0) {\n      case 0x30: // '0'\n      case 0x31: // '1'\n      case 0x32: // '2'\n      case 0x33: // '3'\n      case 0x34: // '4'\n      case 0x35: // '5'\n      case 0x36: // '6'\n      case 0x37: // '7'\n      case 0x38: // '8'\n      case 0x39: // '9'\n      case 0x2b: // '+'\n      case 0x2d: // '-'\n      case 0x2e: // '.'\n        return new PostScriptToken(\n          PostScriptTokenTypes.NUMBER,\n          this.getNumber()\n        );\n      case 0x7b: // '{'\n        this.nextChar();\n        return PostScriptToken.LBRACE;\n      case 0x7d: // '}'\n        this.nextChar();\n        return PostScriptToken.RBRACE;\n    }\n    // operator\n    const strBuf = this.strBuf;\n    strBuf.length = 0;\n    strBuf[0] = String.fromCharCode(ch);\n\n    while (\n      (ch = this.nextChar()) >= 0 &&\n      ((ch >= /* 'A' = */ 0x41 && ch <= /* 'Z' = */ 0x5a) ||\n        (ch >= /* 'a' = */ 0x61 && ch <= /* 'z' = */ 0x7a))\n    ) {\n      strBuf.push(String.fromCharCode(ch));\n    }\n    const str = strBuf.join(\"\");\n    switch (str.toLowerCase()) {\n      case \"if\":\n        return PostScriptToken.IF;\n      case \"ifelse\":\n        return PostScriptToken.IFELSE;\n      default:\n        return PostScriptToken.getOperator(str);\n    }\n  }\n\n  getNumber() {\n    let ch = this.currentChar;\n    const strBuf = this.strBuf;\n    strBuf.length = 0;\n    strBuf[0] = String.fromCharCode(ch);\n\n    while ((ch = this.nextChar()) >= 0) {\n      if (\n        (ch >= /* '0' = */ 0x30 && ch <= /* '9' = */ 0x39) ||\n        ch === /* '-' = */ 0x2d ||\n        ch === /* '.' = */ 0x2e\n      ) {\n        strBuf.push(String.fromCharCode(ch));\n      } else {\n        break;\n      }\n    }\n    const value = parseFloat(strBuf.join(\"\"));\n    if (isNaN(value)) {\n      throw new FormatError(`Invalid floating point number: ${value}`);\n    }\n    return value;\n  }\n}\n\nexport { PostScriptLexer, PostScriptParser };\n","/* Copyright 2019 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { assert, shadow, unreachable, warn } from \"../shared/util.js\";\nimport { RefSetCache } from \"./primitives.js\";\n\nclass BaseLocalCache {\n  constructor(options) {\n    if (this.constructor === BaseLocalCache) {\n      unreachable(\"Cannot initialize BaseLocalCache.\");\n    }\n    this._onlyRefs = (options && options.onlyRefs) === true;\n\n    if (!this._onlyRefs) {\n      this._nameRefMap = new Map();\n      this._imageMap = new Map();\n    }\n    this._imageCache = new RefSetCache();\n  }\n\n  getByName(name) {\n    if (this._onlyRefs) {\n      unreachable(\"Should not call `getByName` method.\");\n    }\n    const ref = this._nameRefMap.get(name);\n    if (ref) {\n      return this.getByRef(ref);\n    }\n    return this._imageMap.get(name) || null;\n  }\n\n  getByRef(ref) {\n    return this._imageCache.get(ref) || null;\n  }\n\n  set(name, ref, data) {\n    unreachable(\"Abstract method `set` called.\");\n  }\n}\n\nclass LocalImageCache extends BaseLocalCache {\n  set(name, ref = null, data) {\n    if (typeof name !== \"string\") {\n      throw new Error('LocalImageCache.set - expected \"name\" argument.');\n    }\n    if (ref) {\n      if (this._imageCache.has(ref)) {\n        return;\n      }\n      this._nameRefMap.set(name, ref);\n      this._imageCache.put(ref, data);\n      return;\n    }\n    // name\n    if (this._imageMap.has(name)) {\n      return;\n    }\n    this._imageMap.set(name, data);\n  }\n}\n\nclass LocalColorSpaceCache extends BaseLocalCache {\n  set(name = null, ref = null, data) {\n    if (typeof name !== \"string\" && !ref) {\n      throw new Error(\n        'LocalColorSpaceCache.set - expected \"name\" and/or \"ref\" argument.'\n      );\n    }\n    if (ref) {\n      if (this._imageCache.has(ref)) {\n        return;\n      }\n      if (name !== null) {\n        // Optional when `ref` is defined.\n        this._nameRefMap.set(name, ref);\n      }\n      this._imageCache.put(ref, data);\n      return;\n    }\n    // name\n    if (this._imageMap.has(name)) {\n      return;\n    }\n    this._imageMap.set(name, data);\n  }\n}\n\nclass LocalFunctionCache extends BaseLocalCache {\n  constructor(options) {\n    super({ onlyRefs: true });\n  }\n\n  set(name = null, ref, data) {\n    if (!ref) {\n      throw new Error('LocalFunctionCache.set - expected \"ref\" argument.');\n    }\n    if (this._imageCache.has(ref)) {\n      return;\n    }\n    this._imageCache.put(ref, data);\n  }\n}\n\nclass LocalGStateCache extends BaseLocalCache {\n  set(name, ref = null, data) {\n    if (typeof name !== \"string\") {\n      throw new Error('LocalGStateCache.set - expected \"name\" argument.');\n    }\n    if (ref) {\n      if (this._imageCache.has(ref)) {\n        return;\n      }\n      this._nameRefMap.set(name, ref);\n      this._imageCache.put(ref, data);\n      return;\n    }\n    // name\n    if (this._imageMap.has(name)) {\n      return;\n    }\n    this._imageMap.set(name, data);\n  }\n}\n\nclass LocalTilingPatternCache extends BaseLocalCache {\n  constructor(options) {\n    super({ onlyRefs: true });\n  }\n\n  set(name = null, ref, data) {\n    if (!ref) {\n      throw new Error('LocalTilingPatternCache.set - expected \"ref\" argument.');\n    }\n    if (this._imageCache.has(ref)) {\n      return;\n    }\n    this._imageCache.put(ref, data);\n  }\n}\n\nclass GlobalImageCache {\n  static get NUM_PAGES_THRESHOLD() {\n    return shadow(this, \"NUM_PAGES_THRESHOLD\", 2);\n  }\n\n  static get MIN_IMAGES_TO_CACHE() {\n    return shadow(this, \"MIN_IMAGES_TO_CACHE\", 10);\n  }\n\n  static get MAX_BYTE_SIZE() {\n    return shadow(this, \"MAX_BYTE_SIZE\", /* Forty megabytes = */ 40e6);\n  }\n\n  constructor() {\n    if (\n      typeof PDFJSDev === \"undefined\" ||\n      PDFJSDev.test(\"!PRODUCTION || TESTING\")\n    ) {\n      assert(\n        GlobalImageCache.NUM_PAGES_THRESHOLD > 1,\n        \"GlobalImageCache - invalid NUM_PAGES_THRESHOLD constant.\"\n      );\n    }\n    this._refCache = new RefSetCache();\n    this._imageCache = new RefSetCache();\n  }\n\n  get _byteSize() {\n    let byteSize = 0;\n    this._imageCache.forEach(imageData => {\n      byteSize += imageData.byteSize;\n    });\n    return byteSize;\n  }\n\n  get _cacheLimitReached() {\n    if (this._imageCache.size < GlobalImageCache.MIN_IMAGES_TO_CACHE) {\n      return false;\n    }\n    if (this._byteSize < GlobalImageCache.MAX_BYTE_SIZE) {\n      return false;\n    }\n    return true;\n  }\n\n  shouldCache(ref, pageIndex) {\n    const pageIndexSet = this._refCache.get(ref);\n    const numPages = pageIndexSet\n      ? pageIndexSet.size + (pageIndexSet.has(pageIndex) ? 0 : 1)\n      : 1;\n\n    if (numPages < GlobalImageCache.NUM_PAGES_THRESHOLD) {\n      return false;\n    }\n    if (!this._imageCache.has(ref) && this._cacheLimitReached) {\n      return false;\n    }\n    return true;\n  }\n\n  addPageIndex(ref, pageIndex) {\n    let pageIndexSet = this._refCache.get(ref);\n    if (!pageIndexSet) {\n      pageIndexSet = new Set();\n      this._refCache.put(ref, pageIndexSet);\n    }\n    pageIndexSet.add(pageIndex);\n  }\n\n  /**\n   * PLEASE NOTE: Must be called *after* the `setData` method.\n   */\n  addByteSize(ref, byteSize) {\n    const imageData = this._imageCache.get(ref);\n    if (!imageData) {\n      return; // The image data isn't cached (the limit was reached).\n    }\n    if (imageData.byteSize) {\n      return; // The byte-size has already been set.\n    }\n    imageData.byteSize = byteSize;\n  }\n\n  getData(ref, pageIndex) {\n    const pageIndexSet = this._refCache.get(ref);\n    if (!pageIndexSet) {\n      return null;\n    }\n    if (pageIndexSet.size < GlobalImageCache.NUM_PAGES_THRESHOLD) {\n      return null;\n    }\n    const imageData = this._imageCache.get(ref);\n    if (!imageData) {\n      return null;\n    }\n    // Ensure that we keep track of all pages containing the image reference.\n    pageIndexSet.add(pageIndex);\n\n    return imageData;\n  }\n\n  setData(ref, data) {\n    if (!this._refCache.has(ref)) {\n      throw new Error(\n        'GlobalImageCache.setData - expected \"addPageIndex\" to have been called.'\n      );\n    }\n    if (this._imageCache.has(ref)) {\n      return;\n    }\n    if (this._cacheLimitReached) {\n      warn(\"GlobalImageCache.setData - cache limit reached.\");\n      return;\n    }\n    this._imageCache.put(ref, data);\n  }\n\n  clear(onlyData = false) {\n    if (!onlyData) {\n      this._refCache.clear();\n    }\n    this._imageCache.clear();\n  }\n}\n\nexport {\n  GlobalImageCache,\n  LocalColorSpaceCache,\n  LocalFunctionCache,\n  LocalGStateCache,\n  LocalImageCache,\n  LocalTilingPatternCache,\n};\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { warn } from \"../shared/util.js\";\n\n// Character types for symbols from 0000 to 00FF.\n// Source: ftp://ftp.unicode.org/Public/UNIDATA/UnicodeData.txt\n// prettier-ignore\nconst baseTypes = [\n  \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"S\", \"B\", \"S\",\n  \"WS\", \"B\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\",\n  \"BN\", \"BN\", \"BN\", \"BN\", \"B\", \"B\", \"B\", \"S\", \"WS\", \"ON\", \"ON\", \"ET\",\n  \"ET\", \"ET\", \"ON\", \"ON\", \"ON\", \"ON\", \"ON\", \"ES\", \"CS\", \"ES\", \"CS\", \"CS\",\n  \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"CS\", \"ON\",\n  \"ON\", \"ON\", \"ON\", \"ON\", \"ON\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\",\n  \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\",\n  \"L\", \"L\", \"L\", \"L\", \"ON\", \"ON\", \"ON\", \"ON\", \"ON\", \"ON\", \"L\", \"L\", \"L\",\n  \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\",\n  \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"ON\", \"ON\", \"ON\", \"ON\",\n  \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"B\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\",\n  \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\",\n  \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"CS\", \"ON\", \"ET\",\n  \"ET\", \"ET\", \"ET\", \"ON\", \"ON\", \"ON\", \"ON\", \"L\", \"ON\", \"ON\", \"BN\", \"ON\",\n  \"ON\", \"ET\", \"ET\", \"EN\", \"EN\", \"ON\", \"L\", \"ON\", \"ON\", \"ON\", \"EN\", \"L\",\n  \"ON\", \"ON\", \"ON\", \"ON\", \"ON\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\",\n  \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\",\n  \"L\", \"ON\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\",\n  \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\",\n  \"L\", \"L\", \"L\", \"L\", \"L\", \"ON\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\"\n];\n\n// Character types for symbols from 0600 to 06FF.\n// Source: ftp://ftp.unicode.org/Public/UNIDATA/UnicodeData.txt\n// Note that 061D does not exist in the Unicode standard (see\n// http://unicode.org/charts/PDF/U0600.pdf), so we replace it with an\n// empty string and issue a warning if we encounter this character. The\n// empty string is required to properly index the items after it.\n// prettier-ignore\nconst arabicTypes = [\n  \"AN\", \"AN\", \"AN\", \"AN\", \"AN\", \"AN\", \"ON\", \"ON\", \"AL\", \"ET\", \"ET\", \"AL\",\n  \"CS\", \"AL\", \"ON\", \"ON\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\",\n  \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"AL\", \"AL\", \"\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\",\n  \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\",\n  \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\",\n  \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\",\n  \"AL\", \"AL\", \"AL\", \"AL\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\",\n  \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\",\n  \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"AN\", \"AN\", \"AN\", \"AN\", \"AN\", \"AN\", \"AN\",\n  \"AN\", \"AN\", \"AN\", \"ET\", \"AN\", \"AN\", \"AL\", \"AL\", \"AL\", \"NSM\", \"AL\", \"AL\",\n  \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\",\n  \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\",\n  \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\",\n  \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\",\n  \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\",\n  \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\",\n  \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\",\n  \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\",\n  \"AL\", \"AL\", \"AL\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"AN\",\n  \"ON\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"AL\", \"AL\", \"NSM\", \"NSM\",\n  \"ON\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"AL\", \"AL\", \"EN\", \"EN\", \"EN\", \"EN\",\n  \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\"\n];\n\nfunction isOdd(i) {\n  return (i & 1) !== 0;\n}\n\nfunction isEven(i) {\n  return (i & 1) === 0;\n}\n\nfunction findUnequal(arr, start, value) {\n  let j, jj;\n  for (j = start, jj = arr.length; j < jj; ++j) {\n    if (arr[j] !== value) {\n      return j;\n    }\n  }\n  return j;\n}\n\nfunction setValues(arr, start, end, value) {\n  for (let j = start; j < end; ++j) {\n    arr[j] = value;\n  }\n}\n\nfunction reverseValues(arr, start, end) {\n  for (let i = start, j = end - 1; i < j; ++i, --j) {\n    const temp = arr[i];\n    arr[i] = arr[j];\n    arr[j] = temp;\n  }\n}\n\nfunction createBidiText(str, isLTR, vertical = false) {\n  let dir = \"ltr\";\n  if (vertical) {\n    dir = \"ttb\";\n  } else if (!isLTR) {\n    dir = \"rtl\";\n  }\n  return { str, dir };\n}\n\n// These are used in bidi(), which is called frequently. We re-use them on\n// each call to avoid unnecessary allocations.\nconst chars = [];\nconst types = [];\n\nfunction bidi(str, startLevel = -1, vertical = false) {\n  let isLTR = true;\n  const strLength = str.length;\n  if (strLength === 0 || vertical) {\n    return createBidiText(str, isLTR, vertical);\n  }\n\n  // Get types and fill arrays\n  chars.length = strLength;\n  types.length = strLength;\n  let numBidi = 0;\n\n  let i, ii;\n  for (i = 0; i < strLength; ++i) {\n    chars[i] = str.charAt(i);\n\n    const charCode = str.charCodeAt(i);\n    let charType = \"L\";\n    if (charCode <= 0x00ff) {\n      charType = baseTypes[charCode];\n    } else if (0x0590 <= charCode && charCode <= 0x05f4) {\n      charType = \"R\";\n    } else if (0x0600 <= charCode && charCode <= 0x06ff) {\n      charType = arabicTypes[charCode & 0xff];\n      if (!charType) {\n        warn(\"Bidi: invalid Unicode character \" + charCode.toString(16));\n      }\n    } else if (0x0700 <= charCode && charCode <= 0x08ac) {\n      charType = \"AL\";\n    }\n    if (charType === \"R\" || charType === \"AL\" || charType === \"AN\") {\n      numBidi++;\n    }\n    types[i] = charType;\n  }\n\n  // Detect the bidi method\n  // - If there are no rtl characters then no bidi needed\n  // - If less than 30% chars are rtl then string is primarily ltr,\n  //   unless the string is very short.\n  // - If more than 30% chars are rtl then string is primarily rtl\n  if (numBidi === 0) {\n    isLTR = true;\n    return createBidiText(str, isLTR);\n  }\n\n  if (startLevel === -1) {\n    if (numBidi / strLength < 0.3 && strLength > 4) {\n      isLTR = true;\n      startLevel = 0;\n    } else {\n      isLTR = false;\n      startLevel = 1;\n    }\n  }\n\n  const levels = [];\n  for (i = 0; i < strLength; ++i) {\n    levels[i] = startLevel;\n  }\n\n  /*\n   X1-X10: skip most of this, since we are NOT doing the embeddings.\n   */\n  const e = isOdd(startLevel) ? \"R\" : \"L\";\n  const sor = e;\n  const eor = sor;\n\n  /*\n   W1. Examine each non-spacing mark (NSM) in the level run, and change the\n   type of the NSM to the type of the previous character. If the NSM is at the\n   start of the level run, it will get the type of sor.\n   */\n  let lastType = sor;\n  for (i = 0; i < strLength; ++i) {\n    if (types[i] === \"NSM\") {\n      types[i] = lastType;\n    } else {\n      lastType = types[i];\n    }\n  }\n\n  /*\n   W2. Search backwards from each instance of a European number until the\n   first strong type (R, L, AL, or sor) is found.  If an AL is found, change\n   the type of the European number to Arabic number.\n   */\n  lastType = sor;\n  let t;\n  for (i = 0; i < strLength; ++i) {\n    t = types[i];\n    if (t === \"EN\") {\n      types[i] = lastType === \"AL\" ? \"AN\" : \"EN\";\n    } else if (t === \"R\" || t === \"L\" || t === \"AL\") {\n      lastType = t;\n    }\n  }\n\n  /*\n   W3. Change all ALs to R.\n   */\n  for (i = 0; i < strLength; ++i) {\n    t = types[i];\n    if (t === \"AL\") {\n      types[i] = \"R\";\n    }\n  }\n\n  /*\n   W4. A single European separator between two European numbers changes to a\n   European number. A single common separator between two numbers of the same\n   type changes to that type:\n   */\n  for (i = 1; i < strLength - 1; ++i) {\n    if (types[i] === \"ES\" && types[i - 1] === \"EN\" && types[i + 1] === \"EN\") {\n      types[i] = \"EN\";\n    }\n    if (\n      types[i] === \"CS\" &&\n      (types[i - 1] === \"EN\" || types[i - 1] === \"AN\") &&\n      types[i + 1] === types[i - 1]\n    ) {\n      types[i] = types[i - 1];\n    }\n  }\n\n  /*\n   W5. A sequence of European terminators adjacent to European numbers changes\n   to all European numbers:\n   */\n  for (i = 0; i < strLength; ++i) {\n    if (types[i] === \"EN\") {\n      // do before\n      for (let j = i - 1; j >= 0; --j) {\n        if (types[j] !== \"ET\") {\n          break;\n        }\n        types[j] = \"EN\";\n      }\n      // do after\n      for (let j = i + 1; j < strLength; ++j) {\n        if (types[j] !== \"ET\") {\n          break;\n        }\n        types[j] = \"EN\";\n      }\n    }\n  }\n\n  /*\n   W6. Otherwise, separators and terminators change to Other Neutral:\n   */\n  for (i = 0; i < strLength; ++i) {\n    t = types[i];\n    if (t === \"WS\" || t === \"ES\" || t === \"ET\" || t === \"CS\") {\n      types[i] = \"ON\";\n    }\n  }\n\n  /*\n   W7. Search backwards from each instance of a European number until the\n   first strong type (R, L, or sor) is found. If an L is found,  then change\n   the type of the European number to L.\n   */\n  lastType = sor;\n  for (i = 0; i < strLength; ++i) {\n    t = types[i];\n    if (t === \"EN\") {\n      types[i] = lastType === \"L\" ? \"L\" : \"EN\";\n    } else if (t === \"R\" || t === \"L\") {\n      lastType = t;\n    }\n  }\n\n  /*\n   N1. A sequence of neutrals takes the direction of the surrounding strong\n   text if the text on both sides has the same direction. European and Arabic\n   numbers are treated as though they were R. Start-of-level-run (sor) and\n   end-of-level-run (eor) are used at level run boundaries.\n   */\n  for (i = 0; i < strLength; ++i) {\n    if (types[i] === \"ON\") {\n      const end = findUnequal(types, i + 1, \"ON\");\n      let before = sor;\n      if (i > 0) {\n        before = types[i - 1];\n      }\n\n      let after = eor;\n      if (end + 1 < strLength) {\n        after = types[end + 1];\n      }\n      if (before !== \"L\") {\n        before = \"R\";\n      }\n      if (after !== \"L\") {\n        after = \"R\";\n      }\n      if (before === after) {\n        setValues(types, i, end, before);\n      }\n      i = end - 1; // reset to end (-1 so next iteration is ok)\n    }\n  }\n\n  /*\n   N2. Any remaining neutrals take the embedding direction.\n   */\n  for (i = 0; i < strLength; ++i) {\n    if (types[i] === \"ON\") {\n      types[i] = e;\n    }\n  }\n\n  /*\n   I1. For all characters with an even (left-to-right) embedding direction,\n   those of type R go up one level and those of type AN or EN go up two\n   levels.\n   I2. For all characters with an odd (right-to-left) embedding direction,\n   those of type L, EN or AN go up one level.\n   */\n  for (i = 0; i < strLength; ++i) {\n    t = types[i];\n    if (isEven(levels[i])) {\n      if (t === \"R\") {\n        levels[i] += 1;\n      } else if (t === \"AN\" || t === \"EN\") {\n        levels[i] += 2;\n      }\n    } else {\n      // isOdd\n      if (t === \"L\" || t === \"AN\" || t === \"EN\") {\n        levels[i] += 1;\n      }\n    }\n  }\n\n  /*\n   L1. On each line, reset the embedding level of the following characters to\n   the paragraph embedding level:\n\n   segment separators,\n   paragraph separators,\n   any sequence of whitespace characters preceding a segment separator or\n   paragraph separator, and any sequence of white space characters at the end\n   of the line.\n   */\n\n  // don't bother as text is only single line\n\n  /*\n   L2. From the highest level found in the text to the lowest odd level on\n   each line, reverse any contiguous sequence of characters that are at that\n   level or higher.\n   */\n\n  // find highest level & lowest odd level\n  let highestLevel = -1;\n  let lowestOddLevel = 99;\n  let level;\n  for (i = 0, ii = levels.length; i < ii; ++i) {\n    level = levels[i];\n    if (highestLevel < level) {\n      highestLevel = level;\n    }\n    if (lowestOddLevel > level && isOdd(level)) {\n      lowestOddLevel = level;\n    }\n  }\n\n  // now reverse between those limits\n  for (level = highestLevel; level >= lowestOddLevel; --level) {\n    // find segments to reverse\n    let start = -1;\n    for (i = 0, ii = levels.length; i < ii; ++i) {\n      if (levels[i] < level) {\n        if (start >= 0) {\n          reverseValues(chars, start, i);\n          start = -1;\n        }\n      } else if (start < 0) {\n        start = i;\n      }\n    }\n    if (start >= 0) {\n      reverseValues(chars, start, levels.length);\n    }\n  }\n\n  /*\n   L3. Combining marks applied to a right-to-left base character will at this\n   point precede their base character. If the rendering engine expects them to\n   follow the base characters in the final display process, then the ordering\n   of the marks and the base character must be reversed.\n   */\n\n  // don't bother for now\n\n  /*\n   L4. A character that possesses the mirrored property as specified by\n   Section 4.7, Mirrored, must be depicted by a mirrored glyph if the resolved\n   directionality of that character is R.\n   */\n\n  // don't mirror as characters are already mirrored in the pdf\n\n  // Finally, return string\n  for (i = 0, ii = chars.length; i < ii; ++i) {\n    const ch = chars[i];\n    if (ch === \"<\" || ch === \">\") {\n      chars[i] = \"\";\n    }\n  }\n  return createBidiText(chars.join(\"\"), isLTR);\n}\n\nexport { bidi };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { getLookupTableFactory } from \"./core_utils.js\";\n\n// The Metrics object contains glyph widths (in glyph space units).\n// As per PDF spec, for most fonts (Type 3 being an exception) a glyph\n// space unit corresponds to 1/1000th of text space unit.\nconst getMetrics = getLookupTableFactory(function (t) {\n  t.Courier = 600;\n  t[\"Courier-Bold\"] = 600;\n  t[\"Courier-BoldOblique\"] = 600;\n  t[\"Courier-Oblique\"] = 600;\n  // eslint-disable-next-line no-shadow\n  t.Helvetica = getLookupTableFactory(function (t) {\n    t.space = 278;\n    t.exclam = 278;\n    t.quotedbl = 355;\n    t.numbersign = 556;\n    t.dollar = 556;\n    t.percent = 889;\n    t.ampersand = 667;\n    t.quoteright = 222;\n    t.parenleft = 333;\n    t.parenright = 333;\n    t.asterisk = 389;\n    t.plus = 584;\n    t.comma = 278;\n    t.hyphen = 333;\n    t.period = 278;\n    t.slash = 278;\n    t.zero = 556;\n    t.one = 556;\n    t.two = 556;\n    t.three = 556;\n    t.four = 556;\n    t.five = 556;\n    t.six = 556;\n    t.seven = 556;\n    t.eight = 556;\n    t.nine = 556;\n    t.colon = 278;\n    t.semicolon = 278;\n    t.less = 584;\n    t.equal = 584;\n    t.greater = 584;\n    t.question = 556;\n    t.at = 1015;\n    t.A = 667;\n    t.B = 667;\n    t.C = 722;\n    t.D = 722;\n    t.E = 667;\n    t.F = 611;\n    t.G = 778;\n    t.H = 722;\n    t.I = 278;\n    t.J = 500;\n    t.K = 667;\n    t.L = 556;\n    t.M = 833;\n    t.N = 722;\n    t.O = 778;\n    t.P = 667;\n    t.Q = 778;\n    t.R = 722;\n    t.S = 667;\n    t.T = 611;\n    t.U = 722;\n    t.V = 667;\n    t.W = 944;\n    t.X = 667;\n    t.Y = 667;\n    t.Z = 611;\n    t.bracketleft = 278;\n    t.backslash = 278;\n    t.bracketright = 278;\n    t.asciicircum = 469;\n    t.underscore = 556;\n    t.quoteleft = 222;\n    t.a = 556;\n    t.b = 556;\n    t.c = 500;\n    t.d = 556;\n    t.e = 556;\n    t.f = 278;\n    t.g = 556;\n    t.h = 556;\n    t.i = 222;\n    t.j = 222;\n    t.k = 500;\n    t.l = 222;\n    t.m = 833;\n    t.n = 556;\n    t.o = 556;\n    t.p = 556;\n    t.q = 556;\n    t.r = 333;\n    t.s = 500;\n    t.t = 278;\n    t.u = 556;\n    t.v = 500;\n    t.w = 722;\n    t.x = 500;\n    t.y = 500;\n    t.z = 500;\n    t.braceleft = 334;\n    t.bar = 260;\n    t.braceright = 334;\n    t.asciitilde = 584;\n    t.exclamdown = 333;\n    t.cent = 556;\n    t.sterling = 556;\n    t.fraction = 167;\n    t.yen = 556;\n    t.florin = 556;\n    t.section = 556;\n    t.currency = 556;\n    t.quotesingle = 191;\n    t.quotedblleft = 333;\n    t.guillemotleft = 556;\n    t.guilsinglleft = 333;\n    t.guilsinglright = 333;\n    t.fi = 500;\n    t.fl = 500;\n    t.endash = 556;\n    t.dagger = 556;\n    t.daggerdbl = 556;\n    t.periodcentered = 278;\n    t.paragraph = 537;\n    t.bullet = 350;\n    t.quotesinglbase = 222;\n    t.quotedblbase = 333;\n    t.quotedblright = 333;\n    t.guillemotright = 556;\n    t.ellipsis = 1000;\n    t.perthousand = 1000;\n    t.questiondown = 611;\n    t.grave = 333;\n    t.acute = 333;\n    t.circumflex = 333;\n    t.tilde = 333;\n    t.macron = 333;\n    t.breve = 333;\n    t.dotaccent = 333;\n    t.dieresis = 333;\n    t.ring = 333;\n    t.cedilla = 333;\n    t.hungarumlaut = 333;\n    t.ogonek = 333;\n    t.caron = 333;\n    t.emdash = 1000;\n    t.AE = 1000;\n    t.ordfeminine = 370;\n    t.Lslash = 556;\n    t.Oslash = 778;\n    t.OE = 1000;\n    t.ordmasculine = 365;\n    t.ae = 889;\n    t.dotlessi = 278;\n    t.lslash = 222;\n    t.oslash = 611;\n    t.oe = 944;\n    t.germandbls = 611;\n    t.Idieresis = 278;\n    t.eacute = 556;\n    t.abreve = 556;\n    t.uhungarumlaut = 556;\n    t.ecaron = 556;\n    t.Ydieresis = 667;\n    t.divide = 584;\n    t.Yacute = 667;\n    t.Acircumflex = 667;\n    t.aacute = 556;\n    t.Ucircumflex = 722;\n    t.yacute = 500;\n    t.scommaaccent = 500;\n    t.ecircumflex = 556;\n    t.Uring = 722;\n    t.Udieresis = 722;\n    t.aogonek = 556;\n    t.Uacute = 722;\n    t.uogonek = 556;\n    t.Edieresis = 667;\n    t.Dcroat = 722;\n    t.commaaccent = 250;\n    t.copyright = 737;\n    t.Emacron = 667;\n    t.ccaron = 500;\n    t.aring = 556;\n    t.Ncommaaccent = 722;\n    t.lacute = 222;\n    t.agrave = 556;\n    t.Tcommaaccent = 611;\n    t.Cacute = 722;\n    t.atilde = 556;\n    t.Edotaccent = 667;\n    t.scaron = 500;\n    t.scedilla = 500;\n    t.iacute = 278;\n    t.lozenge = 471;\n    t.Rcaron = 722;\n    t.Gcommaaccent = 778;\n    t.ucircumflex = 556;\n    t.acircumflex = 556;\n    t.Amacron = 667;\n    t.rcaron = 333;\n    t.ccedilla = 500;\n    t.Zdotaccent = 611;\n    t.Thorn = 667;\n    t.Omacron = 778;\n    t.Racute = 722;\n    t.Sacute = 667;\n    t.dcaron = 643;\n    t.Umacron = 722;\n    t.uring = 556;\n    t.threesuperior = 333;\n    t.Ograve = 778;\n    t.Agrave = 667;\n    t.Abreve = 667;\n    t.multiply = 584;\n    t.uacute = 556;\n    t.Tcaron = 611;\n    t.partialdiff = 476;\n    t.ydieresis = 500;\n    t.Nacute = 722;\n    t.icircumflex = 278;\n    t.Ecircumflex = 667;\n    t.adieresis = 556;\n    t.edieresis = 556;\n    t.cacute = 500;\n    t.nacute = 556;\n    t.umacron = 556;\n    t.Ncaron = 722;\n    t.Iacute = 278;\n    t.plusminus = 584;\n    t.brokenbar = 260;\n    t.registered = 737;\n    t.Gbreve = 778;\n    t.Idotaccent = 278;\n    t.summation = 600;\n    t.Egrave = 667;\n    t.racute = 333;\n    t.omacron = 556;\n    t.Zacute = 611;\n    t.Zcaron = 611;\n    t.greaterequal = 549;\n    t.Eth = 722;\n    t.Ccedilla = 722;\n    t.lcommaaccent = 222;\n    t.tcaron = 317;\n    t.eogonek = 556;\n    t.Uogonek = 722;\n    t.Aacute = 667;\n    t.Adieresis = 667;\n    t.egrave = 556;\n    t.zacute = 500;\n    t.iogonek = 222;\n    t.Oacute = 778;\n    t.oacute = 556;\n    t.amacron = 556;\n    t.sacute = 500;\n    t.idieresis = 278;\n    t.Ocircumflex = 778;\n    t.Ugrave = 722;\n    t.Delta = 612;\n    t.thorn = 556;\n    t.twosuperior = 333;\n    t.Odieresis = 778;\n    t.mu = 556;\n    t.igrave = 278;\n    t.ohungarumlaut = 556;\n    t.Eogonek = 667;\n    t.dcroat = 556;\n    t.threequarters = 834;\n    t.Scedilla = 667;\n    t.lcaron = 299;\n    t.Kcommaaccent = 667;\n    t.Lacute = 556;\n    t.trademark = 1000;\n    t.edotaccent = 556;\n    t.Igrave = 278;\n    t.Imacron = 278;\n    t.Lcaron = 556;\n    t.onehalf = 834;\n    t.lessequal = 549;\n    t.ocircumflex = 556;\n    t.ntilde = 556;\n    t.Uhungarumlaut = 722;\n    t.Eacute = 667;\n    t.emacron = 556;\n    t.gbreve = 556;\n    t.onequarter = 834;\n    t.Scaron = 667;\n    t.Scommaaccent = 667;\n    t.Ohungarumlaut = 778;\n    t.degree = 400;\n    t.ograve = 556;\n    t.Ccaron = 722;\n    t.ugrave = 556;\n    t.radical = 453;\n    t.Dcaron = 722;\n    t.rcommaaccent = 333;\n    t.Ntilde = 722;\n    t.otilde = 556;\n    t.Rcommaaccent = 722;\n    t.Lcommaaccent = 556;\n    t.Atilde = 667;\n    t.Aogonek = 667;\n    t.Aring = 667;\n    t.Otilde = 778;\n    t.zdotaccent = 500;\n    t.Ecaron = 667;\n    t.Iogonek = 278;\n    t.kcommaaccent = 500;\n    t.minus = 584;\n    t.Icircumflex = 278;\n    t.ncaron = 556;\n    t.tcommaaccent = 278;\n    t.logicalnot = 584;\n    t.odieresis = 556;\n    t.udieresis = 556;\n    t.notequal = 549;\n    t.gcommaaccent = 556;\n    t.eth = 556;\n    t.zcaron = 500;\n    t.ncommaaccent = 556;\n    t.onesuperior = 333;\n    t.imacron = 278;\n    t.Euro = 556;\n  });\n  // eslint-disable-next-line no-shadow\n  t[\"Helvetica-Bold\"] = getLookupTableFactory(function (t) {\n    t.space = 278;\n    t.exclam = 333;\n    t.quotedbl = 474;\n    t.numbersign = 556;\n    t.dollar = 556;\n    t.percent = 889;\n    t.ampersand = 722;\n    t.quoteright = 278;\n    t.parenleft = 333;\n    t.parenright = 333;\n    t.asterisk = 389;\n    t.plus = 584;\n    t.comma = 278;\n    t.hyphen = 333;\n    t.period = 278;\n    t.slash = 278;\n    t.zero = 556;\n    t.one = 556;\n    t.two = 556;\n    t.three = 556;\n    t.four = 556;\n    t.five = 556;\n    t.six = 556;\n    t.seven = 556;\n    t.eight = 556;\n    t.nine = 556;\n    t.colon = 333;\n    t.semicolon = 333;\n    t.less = 584;\n    t.equal = 584;\n    t.greater = 584;\n    t.question = 611;\n    t.at = 975;\n    t.A = 722;\n    t.B = 722;\n    t.C = 722;\n    t.D = 722;\n    t.E = 667;\n    t.F = 611;\n    t.G = 778;\n    t.H = 722;\n    t.I = 278;\n    t.J = 556;\n    t.K = 722;\n    t.L = 611;\n    t.M = 833;\n    t.N = 722;\n    t.O = 778;\n    t.P = 667;\n    t.Q = 778;\n    t.R = 722;\n    t.S = 667;\n    t.T = 611;\n    t.U = 722;\n    t.V = 667;\n    t.W = 944;\n    t.X = 667;\n    t.Y = 667;\n    t.Z = 611;\n    t.bracketleft = 333;\n    t.backslash = 278;\n    t.bracketright = 333;\n    t.asciicircum = 584;\n    t.underscore = 556;\n    t.quoteleft = 278;\n    t.a = 556;\n    t.b = 611;\n    t.c = 556;\n    t.d = 611;\n    t.e = 556;\n    t.f = 333;\n    t.g = 611;\n    t.h = 611;\n    t.i = 278;\n    t.j = 278;\n    t.k = 556;\n    t.l = 278;\n    t.m = 889;\n    t.n = 611;\n    t.o = 611;\n    t.p = 611;\n    t.q = 611;\n    t.r = 389;\n    t.s = 556;\n    t.t = 333;\n    t.u = 611;\n    t.v = 556;\n    t.w = 778;\n    t.x = 556;\n    t.y = 556;\n    t.z = 500;\n    t.braceleft = 389;\n    t.bar = 280;\n    t.braceright = 389;\n    t.asciitilde = 584;\n    t.exclamdown = 333;\n    t.cent = 556;\n    t.sterling = 556;\n    t.fraction = 167;\n    t.yen = 556;\n    t.florin = 556;\n    t.section = 556;\n    t.currency = 556;\n    t.quotesingle = 238;\n    t.quotedblleft = 500;\n    t.guillemotleft = 556;\n    t.guilsinglleft = 333;\n    t.guilsinglright = 333;\n    t.fi = 611;\n    t.fl = 611;\n    t.endash = 556;\n    t.dagger = 556;\n    t.daggerdbl = 556;\n    t.periodcentered = 278;\n    t.paragraph = 556;\n    t.bullet = 350;\n    t.quotesinglbase = 278;\n    t.quotedblbase = 500;\n    t.quotedblright = 500;\n    t.guillemotright = 556;\n    t.ellipsis = 1000;\n    t.perthousand = 1000;\n    t.questiondown = 611;\n    t.grave = 333;\n    t.acute = 333;\n    t.circumflex = 333;\n    t.tilde = 333;\n    t.macron = 333;\n    t.breve = 333;\n    t.dotaccent = 333;\n    t.dieresis = 333;\n    t.ring = 333;\n    t.cedilla = 333;\n    t.hungarumlaut = 333;\n    t.ogonek = 333;\n    t.caron = 333;\n    t.emdash = 1000;\n    t.AE = 1000;\n    t.ordfeminine = 370;\n    t.Lslash = 611;\n    t.Oslash = 778;\n    t.OE = 1000;\n    t.ordmasculine = 365;\n    t.ae = 889;\n    t.dotlessi = 278;\n    t.lslash = 278;\n    t.oslash = 611;\n    t.oe = 944;\n    t.germandbls = 611;\n    t.Idieresis = 278;\n    t.eacute = 556;\n    t.abreve = 556;\n    t.uhungarumlaut = 611;\n    t.ecaron = 556;\n    t.Ydieresis = 667;\n    t.divide = 584;\n    t.Yacute = 667;\n    t.Acircumflex = 722;\n    t.aacute = 556;\n    t.Ucircumflex = 722;\n    t.yacute = 556;\n    t.scommaaccent = 556;\n    t.ecircumflex = 556;\n    t.Uring = 722;\n    t.Udieresis = 722;\n    t.aogonek = 556;\n    t.Uacute = 722;\n    t.uogonek = 611;\n    t.Edieresis = 667;\n    t.Dcroat = 722;\n    t.commaaccent = 250;\n    t.copyright = 737;\n    t.Emacron = 667;\n    t.ccaron = 556;\n    t.aring = 556;\n    t.Ncommaaccent = 722;\n    t.lacute = 278;\n    t.agrave = 556;\n    t.Tcommaaccent = 611;\n    t.Cacute = 722;\n    t.atilde = 556;\n    t.Edotaccent = 667;\n    t.scaron = 556;\n    t.scedilla = 556;\n    t.iacute = 278;\n    t.lozenge = 494;\n    t.Rcaron = 722;\n    t.Gcommaaccent = 778;\n    t.ucircumflex = 611;\n    t.acircumflex = 556;\n    t.Amacron = 722;\n    t.rcaron = 389;\n    t.ccedilla = 556;\n    t.Zdotaccent = 611;\n    t.Thorn = 667;\n    t.Omacron = 778;\n    t.Racute = 722;\n    t.Sacute = 667;\n    t.dcaron = 743;\n    t.Umacron = 722;\n    t.uring = 611;\n    t.threesuperior = 333;\n    t.Ograve = 778;\n    t.Agrave = 722;\n    t.Abreve = 722;\n    t.multiply = 584;\n    t.uacute = 611;\n    t.Tcaron = 611;\n    t.partialdiff = 494;\n    t.ydieresis = 556;\n    t.Nacute = 722;\n    t.icircumflex = 278;\n    t.Ecircumflex = 667;\n    t.adieresis = 556;\n    t.edieresis = 556;\n    t.cacute = 556;\n    t.nacute = 611;\n    t.umacron = 611;\n    t.Ncaron = 722;\n    t.Iacute = 278;\n    t.plusminus = 584;\n    t.brokenbar = 280;\n    t.registered = 737;\n    t.Gbreve = 778;\n    t.Idotaccent = 278;\n    t.summation = 600;\n    t.Egrave = 667;\n    t.racute = 389;\n    t.omacron = 611;\n    t.Zacute = 611;\n    t.Zcaron = 611;\n    t.greaterequal = 549;\n    t.Eth = 722;\n    t.Ccedilla = 722;\n    t.lcommaaccent = 278;\n    t.tcaron = 389;\n    t.eogonek = 556;\n    t.Uogonek = 722;\n    t.Aacute = 722;\n    t.Adieresis = 722;\n    t.egrave = 556;\n    t.zacute = 500;\n    t.iogonek = 278;\n    t.Oacute = 778;\n    t.oacute = 611;\n    t.amacron = 556;\n    t.sacute = 556;\n    t.idieresis = 278;\n    t.Ocircumflex = 778;\n    t.Ugrave = 722;\n    t.Delta = 612;\n    t.thorn = 611;\n    t.twosuperior = 333;\n    t.Odieresis = 778;\n    t.mu = 611;\n    t.igrave = 278;\n    t.ohungarumlaut = 611;\n    t.Eogonek = 667;\n    t.dcroat = 611;\n    t.threequarters = 834;\n    t.Scedilla = 667;\n    t.lcaron = 400;\n    t.Kcommaaccent = 722;\n    t.Lacute = 611;\n    t.trademark = 1000;\n    t.edotaccent = 556;\n    t.Igrave = 278;\n    t.Imacron = 278;\n    t.Lcaron = 611;\n    t.onehalf = 834;\n    t.lessequal = 549;\n    t.ocircumflex = 611;\n    t.ntilde = 611;\n    t.Uhungarumlaut = 722;\n    t.Eacute = 667;\n    t.emacron = 556;\n    t.gbreve = 611;\n    t.onequarter = 834;\n    t.Scaron = 667;\n    t.Scommaaccent = 667;\n    t.Ohungarumlaut = 778;\n    t.degree = 400;\n    t.ograve = 611;\n    t.Ccaron = 722;\n    t.ugrave = 611;\n    t.radical = 549;\n    t.Dcaron = 722;\n    t.rcommaaccent = 389;\n    t.Ntilde = 722;\n    t.otilde = 611;\n    t.Rcommaaccent = 722;\n    t.Lcommaaccent = 611;\n    t.Atilde = 722;\n    t.Aogonek = 722;\n    t.Aring = 722;\n    t.Otilde = 778;\n    t.zdotaccent = 500;\n    t.Ecaron = 667;\n    t.Iogonek = 278;\n    t.kcommaaccent = 556;\n    t.minus = 584;\n    t.Icircumflex = 278;\n    t.ncaron = 611;\n    t.tcommaaccent = 333;\n    t.logicalnot = 584;\n    t.odieresis = 611;\n    t.udieresis = 611;\n    t.notequal = 549;\n    t.gcommaaccent = 611;\n    t.eth = 611;\n    t.zcaron = 500;\n    t.ncommaaccent = 611;\n    t.onesuperior = 333;\n    t.imacron = 278;\n    t.Euro = 556;\n  });\n  // eslint-disable-next-line no-shadow\n  t[\"Helvetica-BoldOblique\"] = getLookupTableFactory(function (t) {\n    t.space = 278;\n    t.exclam = 333;\n    t.quotedbl = 474;\n    t.numbersign = 556;\n    t.dollar = 556;\n    t.percent = 889;\n    t.ampersand = 722;\n    t.quoteright = 278;\n    t.parenleft = 333;\n    t.parenright = 333;\n    t.asterisk = 389;\n    t.plus = 584;\n    t.comma = 278;\n    t.hyphen = 333;\n    t.period = 278;\n    t.slash = 278;\n    t.zero = 556;\n    t.one = 556;\n    t.two = 556;\n    t.three = 556;\n    t.four = 556;\n    t.five = 556;\n    t.six = 556;\n    t.seven = 556;\n    t.eight = 556;\n    t.nine = 556;\n    t.colon = 333;\n    t.semicolon = 333;\n    t.less = 584;\n    t.equal = 584;\n    t.greater = 584;\n    t.question = 611;\n    t.at = 975;\n    t.A = 722;\n    t.B = 722;\n    t.C = 722;\n    t.D = 722;\n    t.E = 667;\n    t.F = 611;\n    t.G = 778;\n    t.H = 722;\n    t.I = 278;\n    t.J = 556;\n    t.K = 722;\n    t.L = 611;\n    t.M = 833;\n    t.N = 722;\n    t.O = 778;\n    t.P = 667;\n    t.Q = 778;\n    t.R = 722;\n    t.S = 667;\n    t.T = 611;\n    t.U = 722;\n    t.V = 667;\n    t.W = 944;\n    t.X = 667;\n    t.Y = 667;\n    t.Z = 611;\n    t.bracketleft = 333;\n    t.backslash = 278;\n    t.bracketright = 333;\n    t.asciicircum = 584;\n    t.underscore = 556;\n    t.quoteleft = 278;\n    t.a = 556;\n    t.b = 611;\n    t.c = 556;\n    t.d = 611;\n    t.e = 556;\n    t.f = 333;\n    t.g = 611;\n    t.h = 611;\n    t.i = 278;\n    t.j = 278;\n    t.k = 556;\n    t.l = 278;\n    t.m = 889;\n    t.n = 611;\n    t.o = 611;\n    t.p = 611;\n    t.q = 611;\n    t.r = 389;\n    t.s = 556;\n    t.t = 333;\n    t.u = 611;\n    t.v = 556;\n    t.w = 778;\n    t.x = 556;\n    t.y = 556;\n    t.z = 500;\n    t.braceleft = 389;\n    t.bar = 280;\n    t.braceright = 389;\n    t.asciitilde = 584;\n    t.exclamdown = 333;\n    t.cent = 556;\n    t.sterling = 556;\n    t.fraction = 167;\n    t.yen = 556;\n    t.florin = 556;\n    t.section = 556;\n    t.currency = 556;\n    t.quotesingle = 238;\n    t.quotedblleft = 500;\n    t.guillemotleft = 556;\n    t.guilsinglleft = 333;\n    t.guilsinglright = 333;\n    t.fi = 611;\n    t.fl = 611;\n    t.endash = 556;\n    t.dagger = 556;\n    t.daggerdbl = 556;\n    t.periodcentered = 278;\n    t.paragraph = 556;\n    t.bullet = 350;\n    t.quotesinglbase = 278;\n    t.quotedblbase = 500;\n    t.quotedblright = 500;\n    t.guillemotright = 556;\n    t.ellipsis = 1000;\n    t.perthousand = 1000;\n    t.questiondown = 611;\n    t.grave = 333;\n    t.acute = 333;\n    t.circumflex = 333;\n    t.tilde = 333;\n    t.macron = 333;\n    t.breve = 333;\n    t.dotaccent = 333;\n    t.dieresis = 333;\n    t.ring = 333;\n    t.cedilla = 333;\n    t.hungarumlaut = 333;\n    t.ogonek = 333;\n    t.caron = 333;\n    t.emdash = 1000;\n    t.AE = 1000;\n    t.ordfeminine = 370;\n    t.Lslash = 611;\n    t.Oslash = 778;\n    t.OE = 1000;\n    t.ordmasculine = 365;\n    t.ae = 889;\n    t.dotlessi = 278;\n    t.lslash = 278;\n    t.oslash = 611;\n    t.oe = 944;\n    t.germandbls = 611;\n    t.Idieresis = 278;\n    t.eacute = 556;\n    t.abreve = 556;\n    t.uhungarumlaut = 611;\n    t.ecaron = 556;\n    t.Ydieresis = 667;\n    t.divide = 584;\n    t.Yacute = 667;\n    t.Acircumflex = 722;\n    t.aacute = 556;\n    t.Ucircumflex = 722;\n    t.yacute = 556;\n    t.scommaaccent = 556;\n    t.ecircumflex = 556;\n    t.Uring = 722;\n    t.Udieresis = 722;\n    t.aogonek = 556;\n    t.Uacute = 722;\n    t.uogonek = 611;\n    t.Edieresis = 667;\n    t.Dcroat = 722;\n    t.commaaccent = 250;\n    t.copyright = 737;\n    t.Emacron = 667;\n    t.ccaron = 556;\n    t.aring = 556;\n    t.Ncommaaccent = 722;\n    t.lacute = 278;\n    t.agrave = 556;\n    t.Tcommaaccent = 611;\n    t.Cacute = 722;\n    t.atilde = 556;\n    t.Edotaccent = 667;\n    t.scaron = 556;\n    t.scedilla = 556;\n    t.iacute = 278;\n    t.lozenge = 494;\n    t.Rcaron = 722;\n    t.Gcommaaccent = 778;\n    t.ucircumflex = 611;\n    t.acircumflex = 556;\n    t.Amacron = 722;\n    t.rcaron = 389;\n    t.ccedilla = 556;\n    t.Zdotaccent = 611;\n    t.Thorn = 667;\n    t.Omacron = 778;\n    t.Racute = 722;\n    t.Sacute = 667;\n    t.dcaron = 743;\n    t.Umacron = 722;\n    t.uring = 611;\n    t.threesuperior = 333;\n    t.Ograve = 778;\n    t.Agrave = 722;\n    t.Abreve = 722;\n    t.multiply = 584;\n    t.uacute = 611;\n    t.Tcaron = 611;\n    t.partialdiff = 494;\n    t.ydieresis = 556;\n    t.Nacute = 722;\n    t.icircumflex = 278;\n    t.Ecircumflex = 667;\n    t.adieresis = 556;\n    t.edieresis = 556;\n    t.cacute = 556;\n    t.nacute = 611;\n    t.umacron = 611;\n    t.Ncaron = 722;\n    t.Iacute = 278;\n    t.plusminus = 584;\n    t.brokenbar = 280;\n    t.registered = 737;\n    t.Gbreve = 778;\n    t.Idotaccent = 278;\n    t.summation = 600;\n    t.Egrave = 667;\n    t.racute = 389;\n    t.omacron = 611;\n    t.Zacute = 611;\n    t.Zcaron = 611;\n    t.greaterequal = 549;\n    t.Eth = 722;\n    t.Ccedilla = 722;\n    t.lcommaaccent = 278;\n    t.tcaron = 389;\n    t.eogonek = 556;\n    t.Uogonek = 722;\n    t.Aacute = 722;\n    t.Adieresis = 722;\n    t.egrave = 556;\n    t.zacute = 500;\n    t.iogonek = 278;\n    t.Oacute = 778;\n    t.oacute = 611;\n    t.amacron = 556;\n    t.sacute = 556;\n    t.idieresis = 278;\n    t.Ocircumflex = 778;\n    t.Ugrave = 722;\n    t.Delta = 612;\n    t.thorn = 611;\n    t.twosuperior = 333;\n    t.Odieresis = 778;\n    t.mu = 611;\n    t.igrave = 278;\n    t.ohungarumlaut = 611;\n    t.Eogonek = 667;\n    t.dcroat = 611;\n    t.threequarters = 834;\n    t.Scedilla = 667;\n    t.lcaron = 400;\n    t.Kcommaaccent = 722;\n    t.Lacute = 611;\n    t.trademark = 1000;\n    t.edotaccent = 556;\n    t.Igrave = 278;\n    t.Imacron = 278;\n    t.Lcaron = 611;\n    t.onehalf = 834;\n    t.lessequal = 549;\n    t.ocircumflex = 611;\n    t.ntilde = 611;\n    t.Uhungarumlaut = 722;\n    t.Eacute = 667;\n    t.emacron = 556;\n    t.gbreve = 611;\n    t.onequarter = 834;\n    t.Scaron = 667;\n    t.Scommaaccent = 667;\n    t.Ohungarumlaut = 778;\n    t.degree = 400;\n    t.ograve = 611;\n    t.Ccaron = 722;\n    t.ugrave = 611;\n    t.radical = 549;\n    t.Dcaron = 722;\n    t.rcommaaccent = 389;\n    t.Ntilde = 722;\n    t.otilde = 611;\n    t.Rcommaaccent = 722;\n    t.Lcommaaccent = 611;\n    t.Atilde = 722;\n    t.Aogonek = 722;\n    t.Aring = 722;\n    t.Otilde = 778;\n    t.zdotaccent = 500;\n    t.Ecaron = 667;\n    t.Iogonek = 278;\n    t.kcommaaccent = 556;\n    t.minus = 584;\n    t.Icircumflex = 278;\n    t.ncaron = 611;\n    t.tcommaaccent = 333;\n    t.logicalnot = 584;\n    t.odieresis = 611;\n    t.udieresis = 611;\n    t.notequal = 549;\n    t.gcommaaccent = 611;\n    t.eth = 611;\n    t.zcaron = 500;\n    t.ncommaaccent = 611;\n    t.onesuperior = 333;\n    t.imacron = 278;\n    t.Euro = 556;\n  });\n  // eslint-disable-next-line no-shadow\n  t[\"Helvetica-Oblique\"] = getLookupTableFactory(function (t) {\n    t.space = 278;\n    t.exclam = 278;\n    t.quotedbl = 355;\n    t.numbersign = 556;\n    t.dollar = 556;\n    t.percent = 889;\n    t.ampersand = 667;\n    t.quoteright = 222;\n    t.parenleft = 333;\n    t.parenright = 333;\n    t.asterisk = 389;\n    t.plus = 584;\n    t.comma = 278;\n    t.hyphen = 333;\n    t.period = 278;\n    t.slash = 278;\n    t.zero = 556;\n    t.one = 556;\n    t.two = 556;\n    t.three = 556;\n    t.four = 556;\n    t.five = 556;\n    t.six = 556;\n    t.seven = 556;\n    t.eight = 556;\n    t.nine = 556;\n    t.colon = 278;\n    t.semicolon = 278;\n    t.less = 584;\n    t.equal = 584;\n    t.greater = 584;\n    t.question = 556;\n    t.at = 1015;\n    t.A = 667;\n    t.B = 667;\n    t.C = 722;\n    t.D = 722;\n    t.E = 667;\n    t.F = 611;\n    t.G = 778;\n    t.H = 722;\n    t.I = 278;\n    t.J = 500;\n    t.K = 667;\n    t.L = 556;\n    t.M = 833;\n    t.N = 722;\n    t.O = 778;\n    t.P = 667;\n    t.Q = 778;\n    t.R = 722;\n    t.S = 667;\n    t.T = 611;\n    t.U = 722;\n    t.V = 667;\n    t.W = 944;\n    t.X = 667;\n    t.Y = 667;\n    t.Z = 611;\n    t.bracketleft = 278;\n    t.backslash = 278;\n    t.bracketright = 278;\n    t.asciicircum = 469;\n    t.underscore = 556;\n    t.quoteleft = 222;\n    t.a = 556;\n    t.b = 556;\n    t.c = 500;\n    t.d = 556;\n    t.e = 556;\n    t.f = 278;\n    t.g = 556;\n    t.h = 556;\n    t.i = 222;\n    t.j = 222;\n    t.k = 500;\n    t.l = 222;\n    t.m = 833;\n    t.n = 556;\n    t.o = 556;\n    t.p = 556;\n    t.q = 556;\n    t.r = 333;\n    t.s = 500;\n    t.t = 278;\n    t.u = 556;\n    t.v = 500;\n    t.w = 722;\n    t.x = 500;\n    t.y = 500;\n    t.z = 500;\n    t.braceleft = 334;\n    t.bar = 260;\n    t.braceright = 334;\n    t.asciitilde = 584;\n    t.exclamdown = 333;\n    t.cent = 556;\n    t.sterling = 556;\n    t.fraction = 167;\n    t.yen = 556;\n    t.florin = 556;\n    t.section = 556;\n    t.currency = 556;\n    t.quotesingle = 191;\n    t.quotedblleft = 333;\n    t.guillemotleft = 556;\n    t.guilsinglleft = 333;\n    t.guilsinglright = 333;\n    t.fi = 500;\n    t.fl = 500;\n    t.endash = 556;\n    t.dagger = 556;\n    t.daggerdbl = 556;\n    t.periodcentered = 278;\n    t.paragraph = 537;\n    t.bullet = 350;\n    t.quotesinglbase = 222;\n    t.quotedblbase = 333;\n    t.quotedblright = 333;\n    t.guillemotright = 556;\n    t.ellipsis = 1000;\n    t.perthousand = 1000;\n    t.questiondown = 611;\n    t.grave = 333;\n    t.acute = 333;\n    t.circumflex = 333;\n    t.tilde = 333;\n    t.macron = 333;\n    t.breve = 333;\n    t.dotaccent = 333;\n    t.dieresis = 333;\n    t.ring = 333;\n    t.cedilla = 333;\n    t.hungarumlaut = 333;\n    t.ogonek = 333;\n    t.caron = 333;\n    t.emdash = 1000;\n    t.AE = 1000;\n    t.ordfeminine = 370;\n    t.Lslash = 556;\n    t.Oslash = 778;\n    t.OE = 1000;\n    t.ordmasculine = 365;\n    t.ae = 889;\n    t.dotlessi = 278;\n    t.lslash = 222;\n    t.oslash = 611;\n    t.oe = 944;\n    t.germandbls = 611;\n    t.Idieresis = 278;\n    t.eacute = 556;\n    t.abreve = 556;\n    t.uhungarumlaut = 556;\n    t.ecaron = 556;\n    t.Ydieresis = 667;\n    t.divide = 584;\n    t.Yacute = 667;\n    t.Acircumflex = 667;\n    t.aacute = 556;\n    t.Ucircumflex = 722;\n    t.yacute = 500;\n    t.scommaaccent = 500;\n    t.ecircumflex = 556;\n    t.Uring = 722;\n    t.Udieresis = 722;\n    t.aogonek = 556;\n    t.Uacute = 722;\n    t.uogonek = 556;\n    t.Edieresis = 667;\n    t.Dcroat = 722;\n    t.commaaccent = 250;\n    t.copyright = 737;\n    t.Emacron = 667;\n    t.ccaron = 500;\n    t.aring = 556;\n    t.Ncommaaccent = 722;\n    t.lacute = 222;\n    t.agrave = 556;\n    t.Tcommaaccent = 611;\n    t.Cacute = 722;\n    t.atilde = 556;\n    t.Edotaccent = 667;\n    t.scaron = 500;\n    t.scedilla = 500;\n    t.iacute = 278;\n    t.lozenge = 471;\n    t.Rcaron = 722;\n    t.Gcommaaccent = 778;\n    t.ucircumflex = 556;\n    t.acircumflex = 556;\n    t.Amacron = 667;\n    t.rcaron = 333;\n    t.ccedilla = 500;\n    t.Zdotaccent = 611;\n    t.Thorn = 667;\n    t.Omacron = 778;\n    t.Racute = 722;\n    t.Sacute = 667;\n    t.dcaron = 643;\n    t.Umacron = 722;\n    t.uring = 556;\n    t.threesuperior = 333;\n    t.Ograve = 778;\n    t.Agrave = 667;\n    t.Abreve = 667;\n    t.multiply = 584;\n    t.uacute = 556;\n    t.Tcaron = 611;\n    t.partialdiff = 476;\n    t.ydieresis = 500;\n    t.Nacute = 722;\n    t.icircumflex = 278;\n    t.Ecircumflex = 667;\n    t.adieresis = 556;\n    t.edieresis = 556;\n    t.cacute = 500;\n    t.nacute = 556;\n    t.umacron = 556;\n    t.Ncaron = 722;\n    t.Iacute = 278;\n    t.plusminus = 584;\n    t.brokenbar = 260;\n    t.registered = 737;\n    t.Gbreve = 778;\n    t.Idotaccent = 278;\n    t.summation = 600;\n    t.Egrave = 667;\n    t.racute = 333;\n    t.omacron = 556;\n    t.Zacute = 611;\n    t.Zcaron = 611;\n    t.greaterequal = 549;\n    t.Eth = 722;\n    t.Ccedilla = 722;\n    t.lcommaaccent = 222;\n    t.tcaron = 317;\n    t.eogonek = 556;\n    t.Uogonek = 722;\n    t.Aacute = 667;\n    t.Adieresis = 667;\n    t.egrave = 556;\n    t.zacute = 500;\n    t.iogonek = 222;\n    t.Oacute = 778;\n    t.oacute = 556;\n    t.amacron = 556;\n    t.sacute = 500;\n    t.idieresis = 278;\n    t.Ocircumflex = 778;\n    t.Ugrave = 722;\n    t.Delta = 612;\n    t.thorn = 556;\n    t.twosuperior = 333;\n    t.Odieresis = 778;\n    t.mu = 556;\n    t.igrave = 278;\n    t.ohungarumlaut = 556;\n    t.Eogonek = 667;\n    t.dcroat = 556;\n    t.threequarters = 834;\n    t.Scedilla = 667;\n    t.lcaron = 299;\n    t.Kcommaaccent = 667;\n    t.Lacute = 556;\n    t.trademark = 1000;\n    t.edotaccent = 556;\n    t.Igrave = 278;\n    t.Imacron = 278;\n    t.Lcaron = 556;\n    t.onehalf = 834;\n    t.lessequal = 549;\n    t.ocircumflex = 556;\n    t.ntilde = 556;\n    t.Uhungarumlaut = 722;\n    t.Eacute = 667;\n    t.emacron = 556;\n    t.gbreve = 556;\n    t.onequarter = 834;\n    t.Scaron = 667;\n    t.Scommaaccent = 667;\n    t.Ohungarumlaut = 778;\n    t.degree = 400;\n    t.ograve = 556;\n    t.Ccaron = 722;\n    t.ugrave = 556;\n    t.radical = 453;\n    t.Dcaron = 722;\n    t.rcommaaccent = 333;\n    t.Ntilde = 722;\n    t.otilde = 556;\n    t.Rcommaaccent = 722;\n    t.Lcommaaccent = 556;\n    t.Atilde = 667;\n    t.Aogonek = 667;\n    t.Aring = 667;\n    t.Otilde = 778;\n    t.zdotaccent = 500;\n    t.Ecaron = 667;\n    t.Iogonek = 278;\n    t.kcommaaccent = 500;\n    t.minus = 584;\n    t.Icircumflex = 278;\n    t.ncaron = 556;\n    t.tcommaaccent = 278;\n    t.logicalnot = 584;\n    t.odieresis = 556;\n    t.udieresis = 556;\n    t.notequal = 549;\n    t.gcommaaccent = 556;\n    t.eth = 556;\n    t.zcaron = 500;\n    t.ncommaaccent = 556;\n    t.onesuperior = 333;\n    t.imacron = 278;\n    t.Euro = 556;\n  });\n  // eslint-disable-next-line no-shadow\n  t.Symbol = getLookupTableFactory(function (t) {\n    t.space = 250;\n    t.exclam = 333;\n    t.universal = 713;\n    t.numbersign = 500;\n    t.existential = 549;\n    t.percent = 833;\n    t.ampersand = 778;\n    t.suchthat = 439;\n    t.parenleft = 333;\n    t.parenright = 333;\n    t.asteriskmath = 500;\n    t.plus = 549;\n    t.comma = 250;\n    t.minus = 549;\n    t.period = 250;\n    t.slash = 278;\n    t.zero = 500;\n    t.one = 500;\n    t.two = 500;\n    t.three = 500;\n    t.four = 500;\n    t.five = 500;\n    t.six = 500;\n    t.seven = 500;\n    t.eight = 500;\n    t.nine = 500;\n    t.colon = 278;\n    t.semicolon = 278;\n    t.less = 549;\n    t.equal = 549;\n    t.greater = 549;\n    t.question = 444;\n    t.congruent = 549;\n    t.Alpha = 722;\n    t.Beta = 667;\n    t.Chi = 722;\n    t.Delta = 612;\n    t.Epsilon = 611;\n    t.Phi = 763;\n    t.Gamma = 603;\n    t.Eta = 722;\n    t.Iota = 333;\n    t.theta1 = 631;\n    t.Kappa = 722;\n    t.Lambda = 686;\n    t.Mu = 889;\n    t.Nu = 722;\n    t.Omicron = 722;\n    t.Pi = 768;\n    t.Theta = 741;\n    t.Rho = 556;\n    t.Sigma = 592;\n    t.Tau = 611;\n    t.Upsilon = 690;\n    t.sigma1 = 439;\n    t.Omega = 768;\n    t.Xi = 645;\n    t.Psi = 795;\n    t.Zeta = 611;\n    t.bracketleft = 333;\n    t.therefore = 863;\n    t.bracketright = 333;\n    t.perpendicular = 658;\n    t.underscore = 500;\n    t.radicalex = 500;\n    t.alpha = 631;\n    t.beta = 549;\n    t.chi = 549;\n    t.delta = 494;\n    t.epsilon = 439;\n    t.phi = 521;\n    t.gamma = 411;\n    t.eta = 603;\n    t.iota = 329;\n    t.phi1 = 603;\n    t.kappa = 549;\n    t.lambda = 549;\n    t.mu = 576;\n    t.nu = 521;\n    t.omicron = 549;\n    t.pi = 549;\n    t.theta = 521;\n    t.rho = 549;\n    t.sigma = 603;\n    t.tau = 439;\n    t.upsilon = 576;\n    t.omega1 = 713;\n    t.omega = 686;\n    t.xi = 493;\n    t.psi = 686;\n    t.zeta = 494;\n    t.braceleft = 480;\n    t.bar = 200;\n    t.braceright = 480;\n    t.similar = 549;\n    t.Euro = 750;\n    t.Upsilon1 = 620;\n    t.minute = 247;\n    t.lessequal = 549;\n    t.fraction = 167;\n    t.infinity = 713;\n    t.florin = 500;\n    t.club = 753;\n    t.diamond = 753;\n    t.heart = 753;\n    t.spade = 753;\n    t.arrowboth = 1042;\n    t.arrowleft = 987;\n    t.arrowup = 603;\n    t.arrowright = 987;\n    t.arrowdown = 603;\n    t.degree = 400;\n    t.plusminus = 549;\n    t.second = 411;\n    t.greaterequal = 549;\n    t.multiply = 549;\n    t.proportional = 713;\n    t.partialdiff = 494;\n    t.bullet = 460;\n    t.divide = 549;\n    t.notequal = 549;\n    t.equivalence = 549;\n    t.approxequal = 549;\n    t.ellipsis = 1000;\n    t.arrowvertex = 603;\n    t.arrowhorizex = 1000;\n    t.carriagereturn = 658;\n    t.aleph = 823;\n    t.Ifraktur = 686;\n    t.Rfraktur = 795;\n    t.weierstrass = 987;\n    t.circlemultiply = 768;\n    t.circleplus = 768;\n    t.emptyset = 823;\n    t.intersection = 768;\n    t.union = 768;\n    t.propersuperset = 713;\n    t.reflexsuperset = 713;\n    t.notsubset = 713;\n    t.propersubset = 713;\n    t.reflexsubset = 713;\n    t.element = 713;\n    t.notelement = 713;\n    t.angle = 768;\n    t.gradient = 713;\n    t.registerserif = 790;\n    t.copyrightserif = 790;\n    t.trademarkserif = 890;\n    t.product = 823;\n    t.radical = 549;\n    t.dotmath = 250;\n    t.logicalnot = 713;\n    t.logicaland = 603;\n    t.logicalor = 603;\n    t.arrowdblboth = 1042;\n    t.arrowdblleft = 987;\n    t.arrowdblup = 603;\n    t.arrowdblright = 987;\n    t.arrowdbldown = 603;\n    t.lozenge = 494;\n    t.angleleft = 329;\n    t.registersans = 790;\n    t.copyrightsans = 790;\n    t.trademarksans = 786;\n    t.summation = 713;\n    t.parenlefttp = 384;\n    t.parenleftex = 384;\n    t.parenleftbt = 384;\n    t.bracketlefttp = 384;\n    t.bracketleftex = 384;\n    t.bracketleftbt = 384;\n    t.bracelefttp = 494;\n    t.braceleftmid = 494;\n    t.braceleftbt = 494;\n    t.braceex = 494;\n    t.angleright = 329;\n    t.integral = 274;\n    t.integraltp = 686;\n    t.integralex = 686;\n    t.integralbt = 686;\n    t.parenrighttp = 384;\n    t.parenrightex = 384;\n    t.parenrightbt = 384;\n    t.bracketrighttp = 384;\n    t.bracketrightex = 384;\n    t.bracketrightbt = 384;\n    t.bracerighttp = 494;\n    t.bracerightmid = 494;\n    t.bracerightbt = 494;\n    t.apple = 790;\n  });\n  // eslint-disable-next-line no-shadow\n  t[\"Times-Roman\"] = getLookupTableFactory(function (t) {\n    t.space = 250;\n    t.exclam = 333;\n    t.quotedbl = 408;\n    t.numbersign = 500;\n    t.dollar = 500;\n    t.percent = 833;\n    t.ampersand = 778;\n    t.quoteright = 333;\n    t.parenleft = 333;\n    t.parenright = 333;\n    t.asterisk = 500;\n    t.plus = 564;\n    t.comma = 250;\n    t.hyphen = 333;\n    t.period = 250;\n    t.slash = 278;\n    t.zero = 500;\n    t.one = 500;\n    t.two = 500;\n    t.three = 500;\n    t.four = 500;\n    t.five = 500;\n    t.six = 500;\n    t.seven = 500;\n    t.eight = 500;\n    t.nine = 500;\n    t.colon = 278;\n    t.semicolon = 278;\n    t.less = 564;\n    t.equal = 564;\n    t.greater = 564;\n    t.question = 444;\n    t.at = 921;\n    t.A = 722;\n    t.B = 667;\n    t.C = 667;\n    t.D = 722;\n    t.E = 611;\n    t.F = 556;\n    t.G = 722;\n    t.H = 722;\n    t.I = 333;\n    t.J = 389;\n    t.K = 722;\n    t.L = 611;\n    t.M = 889;\n    t.N = 722;\n    t.O = 722;\n    t.P = 556;\n    t.Q = 722;\n    t.R = 667;\n    t.S = 556;\n    t.T = 611;\n    t.U = 722;\n    t.V = 722;\n    t.W = 944;\n    t.X = 722;\n    t.Y = 722;\n    t.Z = 611;\n    t.bracketleft = 333;\n    t.backslash = 278;\n    t.bracketright = 333;\n    t.asciicircum = 469;\n    t.underscore = 500;\n    t.quoteleft = 333;\n    t.a = 444;\n    t.b = 500;\n    t.c = 444;\n    t.d = 500;\n    t.e = 444;\n    t.f = 333;\n    t.g = 500;\n    t.h = 500;\n    t.i = 278;\n    t.j = 278;\n    t.k = 500;\n    t.l = 278;\n    t.m = 778;\n    t.n = 500;\n    t.o = 500;\n    t.p = 500;\n    t.q = 500;\n    t.r = 333;\n    t.s = 389;\n    t.t = 278;\n    t.u = 500;\n    t.v = 500;\n    t.w = 722;\n    t.x = 500;\n    t.y = 500;\n    t.z = 444;\n    t.braceleft = 480;\n    t.bar = 200;\n    t.braceright = 480;\n    t.asciitilde = 541;\n    t.exclamdown = 333;\n    t.cent = 500;\n    t.sterling = 500;\n    t.fraction = 167;\n    t.yen = 500;\n    t.florin = 500;\n    t.section = 500;\n    t.currency = 500;\n    t.quotesingle = 180;\n    t.quotedblleft = 444;\n    t.guillemotleft = 500;\n    t.guilsinglleft = 333;\n    t.guilsinglright = 333;\n    t.fi = 556;\n    t.fl = 556;\n    t.endash = 500;\n    t.dagger = 500;\n    t.daggerdbl = 500;\n    t.periodcentered = 250;\n    t.paragraph = 453;\n    t.bullet = 350;\n    t.quotesinglbase = 333;\n    t.quotedblbase = 444;\n    t.quotedblright = 444;\n    t.guillemotright = 500;\n    t.ellipsis = 1000;\n    t.perthousand = 1000;\n    t.questiondown = 444;\n    t.grave = 333;\n    t.acute = 333;\n    t.circumflex = 333;\n    t.tilde = 333;\n    t.macron = 333;\n    t.breve = 333;\n    t.dotaccent = 333;\n    t.dieresis = 333;\n    t.ring = 333;\n    t.cedilla = 333;\n    t.hungarumlaut = 333;\n    t.ogonek = 333;\n    t.caron = 333;\n    t.emdash = 1000;\n    t.AE = 889;\n    t.ordfeminine = 276;\n    t.Lslash = 611;\n    t.Oslash = 722;\n    t.OE = 889;\n    t.ordmasculine = 310;\n    t.ae = 667;\n    t.dotlessi = 278;\n    t.lslash = 278;\n    t.oslash = 500;\n    t.oe = 722;\n    t.germandbls = 500;\n    t.Idieresis = 333;\n    t.eacute = 444;\n    t.abreve = 444;\n    t.uhungarumlaut = 500;\n    t.ecaron = 444;\n    t.Ydieresis = 722;\n    t.divide = 564;\n    t.Yacute = 722;\n    t.Acircumflex = 722;\n    t.aacute = 444;\n    t.Ucircumflex = 722;\n    t.yacute = 500;\n    t.scommaaccent = 389;\n    t.ecircumflex = 444;\n    t.Uring = 722;\n    t.Udieresis = 722;\n    t.aogonek = 444;\n    t.Uacute = 722;\n    t.uogonek = 500;\n    t.Edieresis = 611;\n    t.Dcroat = 722;\n    t.commaaccent = 250;\n    t.copyright = 760;\n    t.Emacron = 611;\n    t.ccaron = 444;\n    t.aring = 444;\n    t.Ncommaaccent = 722;\n    t.lacute = 278;\n    t.agrave = 444;\n    t.Tcommaaccent = 611;\n    t.Cacute = 667;\n    t.atilde = 444;\n    t.Edotaccent = 611;\n    t.scaron = 389;\n    t.scedilla = 389;\n    t.iacute = 278;\n    t.lozenge = 471;\n    t.Rcaron = 667;\n    t.Gcommaaccent = 722;\n    t.ucircumflex = 500;\n    t.acircumflex = 444;\n    t.Amacron = 722;\n    t.rcaron = 333;\n    t.ccedilla = 444;\n    t.Zdotaccent = 611;\n    t.Thorn = 556;\n    t.Omacron = 722;\n    t.Racute = 667;\n    t.Sacute = 556;\n    t.dcaron = 588;\n    t.Umacron = 722;\n    t.uring = 500;\n    t.threesuperior = 300;\n    t.Ograve = 722;\n    t.Agrave = 722;\n    t.Abreve = 722;\n    t.multiply = 564;\n    t.uacute = 500;\n    t.Tcaron = 611;\n    t.partialdiff = 476;\n    t.ydieresis = 500;\n    t.Nacute = 722;\n    t.icircumflex = 278;\n    t.Ecircumflex = 611;\n    t.adieresis = 444;\n    t.edieresis = 444;\n    t.cacute = 444;\n    t.nacute = 500;\n    t.umacron = 500;\n    t.Ncaron = 722;\n    t.Iacute = 333;\n    t.plusminus = 564;\n    t.brokenbar = 200;\n    t.registered = 760;\n    t.Gbreve = 722;\n    t.Idotaccent = 333;\n    t.summation = 600;\n    t.Egrave = 611;\n    t.racute = 333;\n    t.omacron = 500;\n    t.Zacute = 611;\n    t.Zcaron = 611;\n    t.greaterequal = 549;\n    t.Eth = 722;\n    t.Ccedilla = 667;\n    t.lcommaaccent = 278;\n    t.tcaron = 326;\n    t.eogonek = 444;\n    t.Uogonek = 722;\n    t.Aacute = 722;\n    t.Adieresis = 722;\n    t.egrave = 444;\n    t.zacute = 444;\n    t.iogonek = 278;\n    t.Oacute = 722;\n    t.oacute = 500;\n    t.amacron = 444;\n    t.sacute = 389;\n    t.idieresis = 278;\n    t.Ocircumflex = 722;\n    t.Ugrave = 722;\n    t.Delta = 612;\n    t.thorn = 500;\n    t.twosuperior = 300;\n    t.Odieresis = 722;\n    t.mu = 500;\n    t.igrave = 278;\n    t.ohungarumlaut = 500;\n    t.Eogonek = 611;\n    t.dcroat = 500;\n    t.threequarters = 750;\n    t.Scedilla = 556;\n    t.lcaron = 344;\n    t.Kcommaaccent = 722;\n    t.Lacute = 611;\n    t.trademark = 980;\n    t.edotaccent = 444;\n    t.Igrave = 333;\n    t.Imacron = 333;\n    t.Lcaron = 611;\n    t.onehalf = 750;\n    t.lessequal = 549;\n    t.ocircumflex = 500;\n    t.ntilde = 500;\n    t.Uhungarumlaut = 722;\n    t.Eacute = 611;\n    t.emacron = 444;\n    t.gbreve = 500;\n    t.onequarter = 750;\n    t.Scaron = 556;\n    t.Scommaaccent = 556;\n    t.Ohungarumlaut = 722;\n    t.degree = 400;\n    t.ograve = 500;\n    t.Ccaron = 667;\n    t.ugrave = 500;\n    t.radical = 453;\n    t.Dcaron = 722;\n    t.rcommaaccent = 333;\n    t.Ntilde = 722;\n    t.otilde = 500;\n    t.Rcommaaccent = 667;\n    t.Lcommaaccent = 611;\n    t.Atilde = 722;\n    t.Aogonek = 722;\n    t.Aring = 722;\n    t.Otilde = 722;\n    t.zdotaccent = 444;\n    t.Ecaron = 611;\n    t.Iogonek = 333;\n    t.kcommaaccent = 500;\n    t.minus = 564;\n    t.Icircumflex = 333;\n    t.ncaron = 500;\n    t.tcommaaccent = 278;\n    t.logicalnot = 564;\n    t.odieresis = 500;\n    t.udieresis = 500;\n    t.notequal = 549;\n    t.gcommaaccent = 500;\n    t.eth = 500;\n    t.zcaron = 444;\n    t.ncommaaccent = 500;\n    t.onesuperior = 300;\n    t.imacron = 278;\n    t.Euro = 500;\n  });\n  // eslint-disable-next-line no-shadow\n  t[\"Times-Bold\"] = getLookupTableFactory(function (t) {\n    t.space = 250;\n    t.exclam = 333;\n    t.quotedbl = 555;\n    t.numbersign = 500;\n    t.dollar = 500;\n    t.percent = 1000;\n    t.ampersand = 833;\n    t.quoteright = 333;\n    t.parenleft = 333;\n    t.parenright = 333;\n    t.asterisk = 500;\n    t.plus = 570;\n    t.comma = 250;\n    t.hyphen = 333;\n    t.period = 250;\n    t.slash = 278;\n    t.zero = 500;\n    t.one = 500;\n    t.two = 500;\n    t.three = 500;\n    t.four = 500;\n    t.five = 500;\n    t.six = 500;\n    t.seven = 500;\n    t.eight = 500;\n    t.nine = 500;\n    t.colon = 333;\n    t.semicolon = 333;\n    t.less = 570;\n    t.equal = 570;\n    t.greater = 570;\n    t.question = 500;\n    t.at = 930;\n    t.A = 722;\n    t.B = 667;\n    t.C = 722;\n    t.D = 722;\n    t.E = 667;\n    t.F = 611;\n    t.G = 778;\n    t.H = 778;\n    t.I = 389;\n    t.J = 500;\n    t.K = 778;\n    t.L = 667;\n    t.M = 944;\n    t.N = 722;\n    t.O = 778;\n    t.P = 611;\n    t.Q = 778;\n    t.R = 722;\n    t.S = 556;\n    t.T = 667;\n    t.U = 722;\n    t.V = 722;\n    t.W = 1000;\n    t.X = 722;\n    t.Y = 722;\n    t.Z = 667;\n    t.bracketleft = 333;\n    t.backslash = 278;\n    t.bracketright = 333;\n    t.asciicircum = 581;\n    t.underscore = 500;\n    t.quoteleft = 333;\n    t.a = 500;\n    t.b = 556;\n    t.c = 444;\n    t.d = 556;\n    t.e = 444;\n    t.f = 333;\n    t.g = 500;\n    t.h = 556;\n    t.i = 278;\n    t.j = 333;\n    t.k = 556;\n    t.l = 278;\n    t.m = 833;\n    t.n = 556;\n    t.o = 500;\n    t.p = 556;\n    t.q = 556;\n    t.r = 444;\n    t.s = 389;\n    t.t = 333;\n    t.u = 556;\n    t.v = 500;\n    t.w = 722;\n    t.x = 500;\n    t.y = 500;\n    t.z = 444;\n    t.braceleft = 394;\n    t.bar = 220;\n    t.braceright = 394;\n    t.asciitilde = 520;\n    t.exclamdown = 333;\n    t.cent = 500;\n    t.sterling = 500;\n    t.fraction = 167;\n    t.yen = 500;\n    t.florin = 500;\n    t.section = 500;\n    t.currency = 500;\n    t.quotesingle = 278;\n    t.quotedblleft = 500;\n    t.guillemotleft = 500;\n    t.guilsinglleft = 333;\n    t.guilsinglright = 333;\n    t.fi = 556;\n    t.fl = 556;\n    t.endash = 500;\n    t.dagger = 500;\n    t.daggerdbl = 500;\n    t.periodcentered = 250;\n    t.paragraph = 540;\n    t.bullet = 350;\n    t.quotesinglbase = 333;\n    t.quotedblbase = 500;\n    t.quotedblright = 500;\n    t.guillemotright = 500;\n    t.ellipsis = 1000;\n    t.perthousand = 1000;\n    t.questiondown = 500;\n    t.grave = 333;\n    t.acute = 333;\n    t.circumflex = 333;\n    t.tilde = 333;\n    t.macron = 333;\n    t.breve = 333;\n    t.dotaccent = 333;\n    t.dieresis = 333;\n    t.ring = 333;\n    t.cedilla = 333;\n    t.hungarumlaut = 333;\n    t.ogonek = 333;\n    t.caron = 333;\n    t.emdash = 1000;\n    t.AE = 1000;\n    t.ordfeminine = 300;\n    t.Lslash = 667;\n    t.Oslash = 778;\n    t.OE = 1000;\n    t.ordmasculine = 330;\n    t.ae = 722;\n    t.dotlessi = 278;\n    t.lslash = 278;\n    t.oslash = 500;\n    t.oe = 722;\n    t.germandbls = 556;\n    t.Idieresis = 389;\n    t.eacute = 444;\n    t.abreve = 500;\n    t.uhungarumlaut = 556;\n    t.ecaron = 444;\n    t.Ydieresis = 722;\n    t.divide = 570;\n    t.Yacute = 722;\n    t.Acircumflex = 722;\n    t.aacute = 500;\n    t.Ucircumflex = 722;\n    t.yacute = 500;\n    t.scommaaccent = 389;\n    t.ecircumflex = 444;\n    t.Uring = 722;\n    t.Udieresis = 722;\n    t.aogonek = 500;\n    t.Uacute = 722;\n    t.uogonek = 556;\n    t.Edieresis = 667;\n    t.Dcroat = 722;\n    t.commaaccent = 250;\n    t.copyright = 747;\n    t.Emacron = 667;\n    t.ccaron = 444;\n    t.aring = 500;\n    t.Ncommaaccent = 722;\n    t.lacute = 278;\n    t.agrave = 500;\n    t.Tcommaaccent = 667;\n    t.Cacute = 722;\n    t.atilde = 500;\n    t.Edotaccent = 667;\n    t.scaron = 389;\n    t.scedilla = 389;\n    t.iacute = 278;\n    t.lozenge = 494;\n    t.Rcaron = 722;\n    t.Gcommaaccent = 778;\n    t.ucircumflex = 556;\n    t.acircumflex = 500;\n    t.Amacron = 722;\n    t.rcaron = 444;\n    t.ccedilla = 444;\n    t.Zdotaccent = 667;\n    t.Thorn = 611;\n    t.Omacron = 778;\n    t.Racute = 722;\n    t.Sacute = 556;\n    t.dcaron = 672;\n    t.Umacron = 722;\n    t.uring = 556;\n    t.threesuperior = 300;\n    t.Ograve = 778;\n    t.Agrave = 722;\n    t.Abreve = 722;\n    t.multiply = 570;\n    t.uacute = 556;\n    t.Tcaron = 667;\n    t.partialdiff = 494;\n    t.ydieresis = 500;\n    t.Nacute = 722;\n    t.icircumflex = 278;\n    t.Ecircumflex = 667;\n    t.adieresis = 500;\n    t.edieresis = 444;\n    t.cacute = 444;\n    t.nacute = 556;\n    t.umacron = 556;\n    t.Ncaron = 722;\n    t.Iacute = 389;\n    t.plusminus = 570;\n    t.brokenbar = 220;\n    t.registered = 747;\n    t.Gbreve = 778;\n    t.Idotaccent = 389;\n    t.summation = 600;\n    t.Egrave = 667;\n    t.racute = 444;\n    t.omacron = 500;\n    t.Zacute = 667;\n    t.Zcaron = 667;\n    t.greaterequal = 549;\n    t.Eth = 722;\n    t.Ccedilla = 722;\n    t.lcommaaccent = 278;\n    t.tcaron = 416;\n    t.eogonek = 444;\n    t.Uogonek = 722;\n    t.Aacute = 722;\n    t.Adieresis = 722;\n    t.egrave = 444;\n    t.zacute = 444;\n    t.iogonek = 278;\n    t.Oacute = 778;\n    t.oacute = 500;\n    t.amacron = 500;\n    t.sacute = 389;\n    t.idieresis = 278;\n    t.Ocircumflex = 778;\n    t.Ugrave = 722;\n    t.Delta = 612;\n    t.thorn = 556;\n    t.twosuperior = 300;\n    t.Odieresis = 778;\n    t.mu = 556;\n    t.igrave = 278;\n    t.ohungarumlaut = 500;\n    t.Eogonek = 667;\n    t.dcroat = 556;\n    t.threequarters = 750;\n    t.Scedilla = 556;\n    t.lcaron = 394;\n    t.Kcommaaccent = 778;\n    t.Lacute = 667;\n    t.trademark = 1000;\n    t.edotaccent = 444;\n    t.Igrave = 389;\n    t.Imacron = 389;\n    t.Lcaron = 667;\n    t.onehalf = 750;\n    t.lessequal = 549;\n    t.ocircumflex = 500;\n    t.ntilde = 556;\n    t.Uhungarumlaut = 722;\n    t.Eacute = 667;\n    t.emacron = 444;\n    t.gbreve = 500;\n    t.onequarter = 750;\n    t.Scaron = 556;\n    t.Scommaaccent = 556;\n    t.Ohungarumlaut = 778;\n    t.degree = 400;\n    t.ograve = 500;\n    t.Ccaron = 722;\n    t.ugrave = 556;\n    t.radical = 549;\n    t.Dcaron = 722;\n    t.rcommaaccent = 444;\n    t.Ntilde = 722;\n    t.otilde = 500;\n    t.Rcommaaccent = 722;\n    t.Lcommaaccent = 667;\n    t.Atilde = 722;\n    t.Aogonek = 722;\n    t.Aring = 722;\n    t.Otilde = 778;\n    t.zdotaccent = 444;\n    t.Ecaron = 667;\n    t.Iogonek = 389;\n    t.kcommaaccent = 556;\n    t.minus = 570;\n    t.Icircumflex = 389;\n    t.ncaron = 556;\n    t.tcommaaccent = 333;\n    t.logicalnot = 570;\n    t.odieresis = 500;\n    t.udieresis = 556;\n    t.notequal = 549;\n    t.gcommaaccent = 500;\n    t.eth = 500;\n    t.zcaron = 444;\n    t.ncommaaccent = 556;\n    t.onesuperior = 300;\n    t.imacron = 278;\n    t.Euro = 500;\n  });\n  // eslint-disable-next-line no-shadow\n  t[\"Times-BoldItalic\"] = getLookupTableFactory(function (t) {\n    t.space = 250;\n    t.exclam = 389;\n    t.quotedbl = 555;\n    t.numbersign = 500;\n    t.dollar = 500;\n    t.percent = 833;\n    t.ampersand = 778;\n    t.quoteright = 333;\n    t.parenleft = 333;\n    t.parenright = 333;\n    t.asterisk = 500;\n    t.plus = 570;\n    t.comma = 250;\n    t.hyphen = 333;\n    t.period = 250;\n    t.slash = 278;\n    t.zero = 500;\n    t.one = 500;\n    t.two = 500;\n    t.three = 500;\n    t.four = 500;\n    t.five = 500;\n    t.six = 500;\n    t.seven = 500;\n    t.eight = 500;\n    t.nine = 500;\n    t.colon = 333;\n    t.semicolon = 333;\n    t.less = 570;\n    t.equal = 570;\n    t.greater = 570;\n    t.question = 500;\n    t.at = 832;\n    t.A = 667;\n    t.B = 667;\n    t.C = 667;\n    t.D = 722;\n    t.E = 667;\n    t.F = 667;\n    t.G = 722;\n    t.H = 778;\n    t.I = 389;\n    t.J = 500;\n    t.K = 667;\n    t.L = 611;\n    t.M = 889;\n    t.N = 722;\n    t.O = 722;\n    t.P = 611;\n    t.Q = 722;\n    t.R = 667;\n    t.S = 556;\n    t.T = 611;\n    t.U = 722;\n    t.V = 667;\n    t.W = 889;\n    t.X = 667;\n    t.Y = 611;\n    t.Z = 611;\n    t.bracketleft = 333;\n    t.backslash = 278;\n    t.bracketright = 333;\n    t.asciicircum = 570;\n    t.underscore = 500;\n    t.quoteleft = 333;\n    t.a = 500;\n    t.b = 500;\n    t.c = 444;\n    t.d = 500;\n    t.e = 444;\n    t.f = 333;\n    t.g = 500;\n    t.h = 556;\n    t.i = 278;\n    t.j = 278;\n    t.k = 500;\n    t.l = 278;\n    t.m = 778;\n    t.n = 556;\n    t.o = 500;\n    t.p = 500;\n    t.q = 500;\n    t.r = 389;\n    t.s = 389;\n    t.t = 278;\n    t.u = 556;\n    t.v = 444;\n    t.w = 667;\n    t.x = 500;\n    t.y = 444;\n    t.z = 389;\n    t.braceleft = 348;\n    t.bar = 220;\n    t.braceright = 348;\n    t.asciitilde = 570;\n    t.exclamdown = 389;\n    t.cent = 500;\n    t.sterling = 500;\n    t.fraction = 167;\n    t.yen = 500;\n    t.florin = 500;\n    t.section = 500;\n    t.currency = 500;\n    t.quotesingle = 278;\n    t.quotedblleft = 500;\n    t.guillemotleft = 500;\n    t.guilsinglleft = 333;\n    t.guilsinglright = 333;\n    t.fi = 556;\n    t.fl = 556;\n    t.endash = 500;\n    t.dagger = 500;\n    t.daggerdbl = 500;\n    t.periodcentered = 250;\n    t.paragraph = 500;\n    t.bullet = 350;\n    t.quotesinglbase = 333;\n    t.quotedblbase = 500;\n    t.quotedblright = 500;\n    t.guillemotright = 500;\n    t.ellipsis = 1000;\n    t.perthousand = 1000;\n    t.questiondown = 500;\n    t.grave = 333;\n    t.acute = 333;\n    t.circumflex = 333;\n    t.tilde = 333;\n    t.macron = 333;\n    t.breve = 333;\n    t.dotaccent = 333;\n    t.dieresis = 333;\n    t.ring = 333;\n    t.cedilla = 333;\n    t.hungarumlaut = 333;\n    t.ogonek = 333;\n    t.caron = 333;\n    t.emdash = 1000;\n    t.AE = 944;\n    t.ordfeminine = 266;\n    t.Lslash = 611;\n    t.Oslash = 722;\n    t.OE = 944;\n    t.ordmasculine = 300;\n    t.ae = 722;\n    t.dotlessi = 278;\n    t.lslash = 278;\n    t.oslash = 500;\n    t.oe = 722;\n    t.germandbls = 500;\n    t.Idieresis = 389;\n    t.eacute = 444;\n    t.abreve = 500;\n    t.uhungarumlaut = 556;\n    t.ecaron = 444;\n    t.Ydieresis = 611;\n    t.divide = 570;\n    t.Yacute = 611;\n    t.Acircumflex = 667;\n    t.aacute = 500;\n    t.Ucircumflex = 722;\n    t.yacute = 444;\n    t.scommaaccent = 389;\n    t.ecircumflex = 444;\n    t.Uring = 722;\n    t.Udieresis = 722;\n    t.aogonek = 500;\n    t.Uacute = 722;\n    t.uogonek = 556;\n    t.Edieresis = 667;\n    t.Dcroat = 722;\n    t.commaaccent = 250;\n    t.copyright = 747;\n    t.Emacron = 667;\n    t.ccaron = 444;\n    t.aring = 500;\n    t.Ncommaaccent = 722;\n    t.lacute = 278;\n    t.agrave = 500;\n    t.Tcommaaccent = 611;\n    t.Cacute = 667;\n    t.atilde = 500;\n    t.Edotaccent = 667;\n    t.scaron = 389;\n    t.scedilla = 389;\n    t.iacute = 278;\n    t.lozenge = 494;\n    t.Rcaron = 667;\n    t.Gcommaaccent = 722;\n    t.ucircumflex = 556;\n    t.acircumflex = 500;\n    t.Amacron = 667;\n    t.rcaron = 389;\n    t.ccedilla = 444;\n    t.Zdotaccent = 611;\n    t.Thorn = 611;\n    t.Omacron = 722;\n    t.Racute = 667;\n    t.Sacute = 556;\n    t.dcaron = 608;\n    t.Umacron = 722;\n    t.uring = 556;\n    t.threesuperior = 300;\n    t.Ograve = 722;\n    t.Agrave = 667;\n    t.Abreve = 667;\n    t.multiply = 570;\n    t.uacute = 556;\n    t.Tcaron = 611;\n    t.partialdiff = 494;\n    t.ydieresis = 444;\n    t.Nacute = 722;\n    t.icircumflex = 278;\n    t.Ecircumflex = 667;\n    t.adieresis = 500;\n    t.edieresis = 444;\n    t.cacute = 444;\n    t.nacute = 556;\n    t.umacron = 556;\n    t.Ncaron = 722;\n    t.Iacute = 389;\n    t.plusminus = 570;\n    t.brokenbar = 220;\n    t.registered = 747;\n    t.Gbreve = 722;\n    t.Idotaccent = 389;\n    t.summation = 600;\n    t.Egrave = 667;\n    t.racute = 389;\n    t.omacron = 500;\n    t.Zacute = 611;\n    t.Zcaron = 611;\n    t.greaterequal = 549;\n    t.Eth = 722;\n    t.Ccedilla = 667;\n    t.lcommaaccent = 278;\n    t.tcaron = 366;\n    t.eogonek = 444;\n    t.Uogonek = 722;\n    t.Aacute = 667;\n    t.Adieresis = 667;\n    t.egrave = 444;\n    t.zacute = 389;\n    t.iogonek = 278;\n    t.Oacute = 722;\n    t.oacute = 500;\n    t.amacron = 500;\n    t.sacute = 389;\n    t.idieresis = 278;\n    t.Ocircumflex = 722;\n    t.Ugrave = 722;\n    t.Delta = 612;\n    t.thorn = 500;\n    t.twosuperior = 300;\n    t.Odieresis = 722;\n    t.mu = 576;\n    t.igrave = 278;\n    t.ohungarumlaut = 500;\n    t.Eogonek = 667;\n    t.dcroat = 500;\n    t.threequarters = 750;\n    t.Scedilla = 556;\n    t.lcaron = 382;\n    t.Kcommaaccent = 667;\n    t.Lacute = 611;\n    t.trademark = 1000;\n    t.edotaccent = 444;\n    t.Igrave = 389;\n    t.Imacron = 389;\n    t.Lcaron = 611;\n    t.onehalf = 750;\n    t.lessequal = 549;\n    t.ocircumflex = 500;\n    t.ntilde = 556;\n    t.Uhungarumlaut = 722;\n    t.Eacute = 667;\n    t.emacron = 444;\n    t.gbreve = 500;\n    t.onequarter = 750;\n    t.Scaron = 556;\n    t.Scommaaccent = 556;\n    t.Ohungarumlaut = 722;\n    t.degree = 400;\n    t.ograve = 500;\n    t.Ccaron = 667;\n    t.ugrave = 556;\n    t.radical = 549;\n    t.Dcaron = 722;\n    t.rcommaaccent = 389;\n    t.Ntilde = 722;\n    t.otilde = 500;\n    t.Rcommaaccent = 667;\n    t.Lcommaaccent = 611;\n    t.Atilde = 667;\n    t.Aogonek = 667;\n    t.Aring = 667;\n    t.Otilde = 722;\n    t.zdotaccent = 389;\n    t.Ecaron = 667;\n    t.Iogonek = 389;\n    t.kcommaaccent = 500;\n    t.minus = 606;\n    t.Icircumflex = 389;\n    t.ncaron = 556;\n    t.tcommaaccent = 278;\n    t.logicalnot = 606;\n    t.odieresis = 500;\n    t.udieresis = 556;\n    t.notequal = 549;\n    t.gcommaaccent = 500;\n    t.eth = 500;\n    t.zcaron = 389;\n    t.ncommaaccent = 556;\n    t.onesuperior = 300;\n    t.imacron = 278;\n    t.Euro = 500;\n  });\n  // eslint-disable-next-line no-shadow\n  t[\"Times-Italic\"] = getLookupTableFactory(function (t) {\n    t.space = 250;\n    t.exclam = 333;\n    t.quotedbl = 420;\n    t.numbersign = 500;\n    t.dollar = 500;\n    t.percent = 833;\n    t.ampersand = 778;\n    t.quoteright = 333;\n    t.parenleft = 333;\n    t.parenright = 333;\n    t.asterisk = 500;\n    t.plus = 675;\n    t.comma = 250;\n    t.hyphen = 333;\n    t.period = 250;\n    t.slash = 278;\n    t.zero = 500;\n    t.one = 500;\n    t.two = 500;\n    t.three = 500;\n    t.four = 500;\n    t.five = 500;\n    t.six = 500;\n    t.seven = 500;\n    t.eight = 500;\n    t.nine = 500;\n    t.colon = 333;\n    t.semicolon = 333;\n    t.less = 675;\n    t.equal = 675;\n    t.greater = 675;\n    t.question = 500;\n    t.at = 920;\n    t.A = 611;\n    t.B = 611;\n    t.C = 667;\n    t.D = 722;\n    t.E = 611;\n    t.F = 611;\n    t.G = 722;\n    t.H = 722;\n    t.I = 333;\n    t.J = 444;\n    t.K = 667;\n    t.L = 556;\n    t.M = 833;\n    t.N = 667;\n    t.O = 722;\n    t.P = 611;\n    t.Q = 722;\n    t.R = 611;\n    t.S = 500;\n    t.T = 556;\n    t.U = 722;\n    t.V = 611;\n    t.W = 833;\n    t.X = 611;\n    t.Y = 556;\n    t.Z = 556;\n    t.bracketleft = 389;\n    t.backslash = 278;\n    t.bracketright = 389;\n    t.asciicircum = 422;\n    t.underscore = 500;\n    t.quoteleft = 333;\n    t.a = 500;\n    t.b = 500;\n    t.c = 444;\n    t.d = 500;\n    t.e = 444;\n    t.f = 278;\n    t.g = 500;\n    t.h = 500;\n    t.i = 278;\n    t.j = 278;\n    t.k = 444;\n    t.l = 278;\n    t.m = 722;\n    t.n = 500;\n    t.o = 500;\n    t.p = 500;\n    t.q = 500;\n    t.r = 389;\n    t.s = 389;\n    t.t = 278;\n    t.u = 500;\n    t.v = 444;\n    t.w = 667;\n    t.x = 444;\n    t.y = 444;\n    t.z = 389;\n    t.braceleft = 400;\n    t.bar = 275;\n    t.braceright = 400;\n    t.asciitilde = 541;\n    t.exclamdown = 389;\n    t.cent = 500;\n    t.sterling = 500;\n    t.fraction = 167;\n    t.yen = 500;\n    t.florin = 500;\n    t.section = 500;\n    t.currency = 500;\n    t.quotesingle = 214;\n    t.quotedblleft = 556;\n    t.guillemotleft = 500;\n    t.guilsinglleft = 333;\n    t.guilsinglright = 333;\n    t.fi = 500;\n    t.fl = 500;\n    t.endash = 500;\n    t.dagger = 500;\n    t.daggerdbl = 500;\n    t.periodcentered = 250;\n    t.paragraph = 523;\n    t.bullet = 350;\n    t.quotesinglbase = 333;\n    t.quotedblbase = 556;\n    t.quotedblright = 556;\n    t.guillemotright = 500;\n    t.ellipsis = 889;\n    t.perthousand = 1000;\n    t.questiondown = 500;\n    t.grave = 333;\n    t.acute = 333;\n    t.circumflex = 333;\n    t.tilde = 333;\n    t.macron = 333;\n    t.breve = 333;\n    t.dotaccent = 333;\n    t.dieresis = 333;\n    t.ring = 333;\n    t.cedilla = 333;\n    t.hungarumlaut = 333;\n    t.ogonek = 333;\n    t.caron = 333;\n    t.emdash = 889;\n    t.AE = 889;\n    t.ordfeminine = 276;\n    t.Lslash = 556;\n    t.Oslash = 722;\n    t.OE = 944;\n    t.ordmasculine = 310;\n    t.ae = 667;\n    t.dotlessi = 278;\n    t.lslash = 278;\n    t.oslash = 500;\n    t.oe = 667;\n    t.germandbls = 500;\n    t.Idieresis = 333;\n    t.eacute = 444;\n    t.abreve = 500;\n    t.uhungarumlaut = 500;\n    t.ecaron = 444;\n    t.Ydieresis = 556;\n    t.divide = 675;\n    t.Yacute = 556;\n    t.Acircumflex = 611;\n    t.aacute = 500;\n    t.Ucircumflex = 722;\n    t.yacute = 444;\n    t.scommaaccent = 389;\n    t.ecircumflex = 444;\n    t.Uring = 722;\n    t.Udieresis = 722;\n    t.aogonek = 500;\n    t.Uacute = 722;\n    t.uogonek = 500;\n    t.Edieresis = 611;\n    t.Dcroat = 722;\n    t.commaaccent = 250;\n    t.copyright = 760;\n    t.Emacron = 611;\n    t.ccaron = 444;\n    t.aring = 500;\n    t.Ncommaaccent = 667;\n    t.lacute = 278;\n    t.agrave = 500;\n    t.Tcommaaccent = 556;\n    t.Cacute = 667;\n    t.atilde = 500;\n    t.Edotaccent = 611;\n    t.scaron = 389;\n    t.scedilla = 389;\n    t.iacute = 278;\n    t.lozenge = 471;\n    t.Rcaron = 611;\n    t.Gcommaaccent = 722;\n    t.ucircumflex = 500;\n    t.acircumflex = 500;\n    t.Amacron = 611;\n    t.rcaron = 389;\n    t.ccedilla = 444;\n    t.Zdotaccent = 556;\n    t.Thorn = 611;\n    t.Omacron = 722;\n    t.Racute = 611;\n    t.Sacute = 500;\n    t.dcaron = 544;\n    t.Umacron = 722;\n    t.uring = 500;\n    t.threesuperior = 300;\n    t.Ograve = 722;\n    t.Agrave = 611;\n    t.Abreve = 611;\n    t.multiply = 675;\n    t.uacute = 500;\n    t.Tcaron = 556;\n    t.partialdiff = 476;\n    t.ydieresis = 444;\n    t.Nacute = 667;\n    t.icircumflex = 278;\n    t.Ecircumflex = 611;\n    t.adieresis = 500;\n    t.edieresis = 444;\n    t.cacute = 444;\n    t.nacute = 500;\n    t.umacron = 500;\n    t.Ncaron = 667;\n    t.Iacute = 333;\n    t.plusminus = 675;\n    t.brokenbar = 275;\n    t.registered = 760;\n    t.Gbreve = 722;\n    t.Idotaccent = 333;\n    t.summation = 600;\n    t.Egrave = 611;\n    t.racute = 389;\n    t.omacron = 500;\n    t.Zacute = 556;\n    t.Zcaron = 556;\n    t.greaterequal = 549;\n    t.Eth = 722;\n    t.Ccedilla = 667;\n    t.lcommaaccent = 278;\n    t.tcaron = 300;\n    t.eogonek = 444;\n    t.Uogonek = 722;\n    t.Aacute = 611;\n    t.Adieresis = 611;\n    t.egrave = 444;\n    t.zacute = 389;\n    t.iogonek = 278;\n    t.Oacute = 722;\n    t.oacute = 500;\n    t.amacron = 500;\n    t.sacute = 389;\n    t.idieresis = 278;\n    t.Ocircumflex = 722;\n    t.Ugrave = 722;\n    t.Delta = 612;\n    t.thorn = 500;\n    t.twosuperior = 300;\n    t.Odieresis = 722;\n    t.mu = 500;\n    t.igrave = 278;\n    t.ohungarumlaut = 500;\n    t.Eogonek = 611;\n    t.dcroat = 500;\n    t.threequarters = 750;\n    t.Scedilla = 500;\n    t.lcaron = 300;\n    t.Kcommaaccent = 667;\n    t.Lacute = 556;\n    t.trademark = 980;\n    t.edotaccent = 444;\n    t.Igrave = 333;\n    t.Imacron = 333;\n    t.Lcaron = 611;\n    t.onehalf = 750;\n    t.lessequal = 549;\n    t.ocircumflex = 500;\n    t.ntilde = 500;\n    t.Uhungarumlaut = 722;\n    t.Eacute = 611;\n    t.emacron = 444;\n    t.gbreve = 500;\n    t.onequarter = 750;\n    t.Scaron = 500;\n    t.Scommaaccent = 500;\n    t.Ohungarumlaut = 722;\n    t.degree = 400;\n    t.ograve = 500;\n    t.Ccaron = 667;\n    t.ugrave = 500;\n    t.radical = 453;\n    t.Dcaron = 722;\n    t.rcommaaccent = 389;\n    t.Ntilde = 667;\n    t.otilde = 500;\n    t.Rcommaaccent = 611;\n    t.Lcommaaccent = 556;\n    t.Atilde = 611;\n    t.Aogonek = 611;\n    t.Aring = 611;\n    t.Otilde = 722;\n    t.zdotaccent = 389;\n    t.Ecaron = 611;\n    t.Iogonek = 333;\n    t.kcommaaccent = 444;\n    t.minus = 675;\n    t.Icircumflex = 333;\n    t.ncaron = 500;\n    t.tcommaaccent = 278;\n    t.logicalnot = 675;\n    t.odieresis = 500;\n    t.udieresis = 500;\n    t.notequal = 549;\n    t.gcommaaccent = 500;\n    t.eth = 500;\n    t.zcaron = 389;\n    t.ncommaaccent = 500;\n    t.onesuperior = 300;\n    t.imacron = 278;\n    t.Euro = 500;\n  });\n  // eslint-disable-next-line no-shadow\n  t.ZapfDingbats = getLookupTableFactory(function (t) {\n    t.space = 278;\n    t.a1 = 974;\n    t.a2 = 961;\n    t.a202 = 974;\n    t.a3 = 980;\n    t.a4 = 719;\n    t.a5 = 789;\n    t.a119 = 790;\n    t.a118 = 791;\n    t.a117 = 690;\n    t.a11 = 960;\n    t.a12 = 939;\n    t.a13 = 549;\n    t.a14 = 855;\n    t.a15 = 911;\n    t.a16 = 933;\n    t.a105 = 911;\n    t.a17 = 945;\n    t.a18 = 974;\n    t.a19 = 755;\n    t.a20 = 846;\n    t.a21 = 762;\n    t.a22 = 761;\n    t.a23 = 571;\n    t.a24 = 677;\n    t.a25 = 763;\n    t.a26 = 760;\n    t.a27 = 759;\n    t.a28 = 754;\n    t.a6 = 494;\n    t.a7 = 552;\n    t.a8 = 537;\n    t.a9 = 577;\n    t.a10 = 692;\n    t.a29 = 786;\n    t.a30 = 788;\n    t.a31 = 788;\n    t.a32 = 790;\n    t.a33 = 793;\n    t.a34 = 794;\n    t.a35 = 816;\n    t.a36 = 823;\n    t.a37 = 789;\n    t.a38 = 841;\n    t.a39 = 823;\n    t.a40 = 833;\n    t.a41 = 816;\n    t.a42 = 831;\n    t.a43 = 923;\n    t.a44 = 744;\n    t.a45 = 723;\n    t.a46 = 749;\n    t.a47 = 790;\n    t.a48 = 792;\n    t.a49 = 695;\n    t.a50 = 776;\n    t.a51 = 768;\n    t.a52 = 792;\n    t.a53 = 759;\n    t.a54 = 707;\n    t.a55 = 708;\n    t.a56 = 682;\n    t.a57 = 701;\n    t.a58 = 826;\n    t.a59 = 815;\n    t.a60 = 789;\n    t.a61 = 789;\n    t.a62 = 707;\n    t.a63 = 687;\n    t.a64 = 696;\n    t.a65 = 689;\n    t.a66 = 786;\n    t.a67 = 787;\n    t.a68 = 713;\n    t.a69 = 791;\n    t.a70 = 785;\n    t.a71 = 791;\n    t.a72 = 873;\n    t.a73 = 761;\n    t.a74 = 762;\n    t.a203 = 762;\n    t.a75 = 759;\n    t.a204 = 759;\n    t.a76 = 892;\n    t.a77 = 892;\n    t.a78 = 788;\n    t.a79 = 784;\n    t.a81 = 438;\n    t.a82 = 138;\n    t.a83 = 277;\n    t.a84 = 415;\n    t.a97 = 392;\n    t.a98 = 392;\n    t.a99 = 668;\n    t.a100 = 668;\n    t.a89 = 390;\n    t.a90 = 390;\n    t.a93 = 317;\n    t.a94 = 317;\n    t.a91 = 276;\n    t.a92 = 276;\n    t.a205 = 509;\n    t.a85 = 509;\n    t.a206 = 410;\n    t.a86 = 410;\n    t.a87 = 234;\n    t.a88 = 234;\n    t.a95 = 334;\n    t.a96 = 334;\n    t.a101 = 732;\n    t.a102 = 544;\n    t.a103 = 544;\n    t.a104 = 910;\n    t.a106 = 667;\n    t.a107 = 760;\n    t.a108 = 760;\n    t.a112 = 776;\n    t.a111 = 595;\n    t.a110 = 694;\n    t.a109 = 626;\n    t.a120 = 788;\n    t.a121 = 788;\n    t.a122 = 788;\n    t.a123 = 788;\n    t.a124 = 788;\n    t.a125 = 788;\n    t.a126 = 788;\n    t.a127 = 788;\n    t.a128 = 788;\n    t.a129 = 788;\n    t.a130 = 788;\n    t.a131 = 788;\n    t.a132 = 788;\n    t.a133 = 788;\n    t.a134 = 788;\n    t.a135 = 788;\n    t.a136 = 788;\n    t.a137 = 788;\n    t.a138 = 788;\n    t.a139 = 788;\n    t.a140 = 788;\n    t.a141 = 788;\n    t.a142 = 788;\n    t.a143 = 788;\n    t.a144 = 788;\n    t.a145 = 788;\n    t.a146 = 788;\n    t.a147 = 788;\n    t.a148 = 788;\n    t.a149 = 788;\n    t.a150 = 788;\n    t.a151 = 788;\n    t.a152 = 788;\n    t.a153 = 788;\n    t.a154 = 788;\n    t.a155 = 788;\n    t.a156 = 788;\n    t.a157 = 788;\n    t.a158 = 788;\n    t.a159 = 788;\n    t.a160 = 894;\n    t.a161 = 838;\n    t.a163 = 1016;\n    t.a164 = 458;\n    t.a196 = 748;\n    t.a165 = 924;\n    t.a192 = 748;\n    t.a166 = 918;\n    t.a167 = 927;\n    t.a168 = 928;\n    t.a169 = 928;\n    t.a170 = 834;\n    t.a171 = 873;\n    t.a172 = 828;\n    t.a173 = 924;\n    t.a162 = 924;\n    t.a174 = 917;\n    t.a175 = 930;\n    t.a176 = 931;\n    t.a177 = 463;\n    t.a178 = 883;\n    t.a179 = 836;\n    t.a193 = 836;\n    t.a180 = 867;\n    t.a199 = 867;\n    t.a181 = 696;\n    t.a200 = 696;\n    t.a182 = 874;\n    t.a201 = 874;\n    t.a183 = 760;\n    t.a184 = 946;\n    t.a197 = 771;\n    t.a185 = 865;\n    t.a194 = 771;\n    t.a198 = 888;\n    t.a186 = 967;\n    t.a195 = 888;\n    t.a187 = 831;\n    t.a188 = 873;\n    t.a189 = 927;\n    t.a190 = 970;\n    t.a191 = 918;\n  });\n});\n\nexport { getMetrics };\n","/* Copyright 2014 Opera Software ASA\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n *\n * Based on https://code.google.com/p/smhasher/wiki/MurmurHash3.\n * Hashes roughly 100 KB per millisecond on i7 3.4 GHz.\n */\n\nimport { isArrayBuffer, isString } from \"../shared/util.js\";\n\nconst SEED = 0xc3d2e1f0;\n// Workaround for missing math precision in JS.\nconst MASK_HIGH = 0xffff0000;\nconst MASK_LOW = 0xffff;\n\nclass MurmurHash3_64 {\n  constructor(seed) {\n    this.h1 = seed ? seed & 0xffffffff : SEED;\n    this.h2 = seed ? seed & 0xffffffff : SEED;\n  }\n\n  update(input) {\n    let data, length;\n    if (isString(input)) {\n      data = new Uint8Array(input.length * 2);\n      length = 0;\n      for (let i = 0, ii = input.length; i < ii; i++) {\n        const code = input.charCodeAt(i);\n        if (code <= 0xff) {\n          data[length++] = code;\n        } else {\n          data[length++] = code >>> 8;\n          data[length++] = code & 0xff;\n        }\n      }\n    } else if (isArrayBuffer(input)) {\n      data = input.slice();\n      length = data.byteLength;\n    } else {\n      throw new Error(\n        \"Wrong data format in MurmurHash3_64_update. \" +\n          \"Input must be a string or array.\"\n      );\n    }\n\n    const blockCounts = length >> 2;\n    const tailLength = length - blockCounts * 4;\n    // We don't care about endianness here.\n    const dataUint32 = new Uint32Array(data.buffer, 0, blockCounts);\n    let k1 = 0,\n      k2 = 0;\n    let h1 = this.h1,\n      h2 = this.h2;\n    const C1 = 0xcc9e2d51,\n      C2 = 0x1b873593;\n    const C1_LOW = C1 & MASK_LOW,\n      C2_LOW = C2 & MASK_LOW;\n\n    for (let i = 0; i < blockCounts; i++) {\n      if (i & 1) {\n        k1 = dataUint32[i];\n        k1 = ((k1 * C1) & MASK_HIGH) | ((k1 * C1_LOW) & MASK_LOW);\n        k1 = (k1 << 15) | (k1 >>> 17);\n        k1 = ((k1 * C2) & MASK_HIGH) | ((k1 * C2_LOW) & MASK_LOW);\n        h1 ^= k1;\n        h1 = (h1 << 13) | (h1 >>> 19);\n        h1 = h1 * 5 + 0xe6546b64;\n      } else {\n        k2 = dataUint32[i];\n        k2 = ((k2 * C1) & MASK_HIGH) | ((k2 * C1_LOW) & MASK_LOW);\n        k2 = (k2 << 15) | (k2 >>> 17);\n        k2 = ((k2 * C2) & MASK_HIGH) | ((k2 * C2_LOW) & MASK_LOW);\n        h2 ^= k2;\n        h2 = (h2 << 13) | (h2 >>> 19);\n        h2 = h2 * 5 + 0xe6546b64;\n      }\n    }\n\n    k1 = 0;\n\n    switch (tailLength) {\n      case 3:\n        k1 ^= data[blockCounts * 4 + 2] << 16;\n      /* falls through */\n      case 2:\n        k1 ^= data[blockCounts * 4 + 1] << 8;\n      /* falls through */\n      case 1:\n        k1 ^= data[blockCounts * 4];\n        /* falls through */\n\n        k1 = ((k1 * C1) & MASK_HIGH) | ((k1 * C1_LOW) & MASK_LOW);\n        k1 = (k1 << 15) | (k1 >>> 17);\n        k1 = ((k1 * C2) & MASK_HIGH) | ((k1 * C2_LOW) & MASK_LOW);\n        if (blockCounts & 1) {\n          h1 ^= k1;\n        } else {\n          h2 ^= k1;\n        }\n    }\n\n    this.h1 = h1;\n    this.h2 = h2;\n  }\n\n  hexdigest() {\n    let h1 = this.h1,\n      h2 = this.h2;\n\n    h1 ^= h2 >>> 1;\n    h1 = ((h1 * 0xed558ccd) & MASK_HIGH) | ((h1 * 0x8ccd) & MASK_LOW);\n    h2 =\n      ((h2 * 0xff51afd7) & MASK_HIGH) |\n      (((((h2 << 16) | (h1 >>> 16)) * 0xafd7ed55) & MASK_HIGH) >>> 16);\n    h1 ^= h2 >>> 1;\n    h1 = ((h1 * 0x1a85ec53) & MASK_HIGH) | ((h1 * 0xec53) & MASK_LOW);\n    h2 =\n      ((h2 * 0xc4ceb9fe) & MASK_HIGH) |\n      (((((h2 << 16) | (h1 >>> 16)) * 0xb9fe1a85) & MASK_HIGH) >>> 16);\n    h1 ^= h2 >>> 1;\n\n    const hex1 = (h1 >>> 0).toString(16),\n      hex2 = (h2 >>> 0).toString(16);\n    return hex1.padStart(8, \"0\") + hex2.padStart(8, \"0\");\n  }\n}\n\nexport { MurmurHash3_64 };\n","/* Copyright 2017 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n  assert,\n  ImageKind,\n  OPS,\n  RenderingIntentFlag,\n  shadow,\n  warn,\n} from \"../shared/util.js\";\n\nfunction addState(parentState, pattern, checkFn, iterateFn, processFn) {\n  let state = parentState;\n  for (let i = 0, ii = pattern.length - 1; i < ii; i++) {\n    const item = pattern[i];\n    state = state[item] || (state[item] = []);\n  }\n  state[pattern[pattern.length - 1]] = {\n    checkFn,\n    iterateFn,\n    processFn,\n  };\n}\n\nfunction handlePaintSolidColorImageMask(iFirstSave, count, fnArray, argsArray) {\n  // Handles special case of mainly LaTeX documents which use image masks to\n  // draw lines with the current fill style.\n  // 'count' groups of (save, transform, paintImageMaskXObject, restore)+\n  // have been found at iFirstSave.\n  const iFirstPIMXO = iFirstSave + 2;\n  let i;\n  for (i = 0; i < count; i++) {\n    const arg = argsArray[iFirstPIMXO + 4 * i];\n    const imageMask = arg.length === 1 && arg[0];\n    if (\n      imageMask &&\n      imageMask.width === 1 &&\n      imageMask.height === 1 &&\n      (!imageMask.data.length ||\n        (imageMask.data.length === 1 && imageMask.data[0] === 0))\n    ) {\n      fnArray[iFirstPIMXO + 4 * i] = OPS.paintSolidColorImageMask;\n      continue;\n    }\n    break;\n  }\n  return count - i;\n}\n\nconst InitialState = [];\n\n// This replaces (save, transform, paintInlineImageXObject, restore)+\n// sequences with one |paintInlineImageXObjectGroup| operation.\naddState(\n  InitialState,\n  [OPS.save, OPS.transform, OPS.paintInlineImageXObject, OPS.restore],\n  null,\n  function iterateInlineImageGroup(context, i) {\n    const fnArray = context.fnArray;\n    const iFirstSave = context.iCurr - 3;\n    const pos = (i - iFirstSave) % 4;\n    switch (pos) {\n      case 0:\n        return fnArray[i] === OPS.save;\n      case 1:\n        return fnArray[i] === OPS.transform;\n      case 2:\n        return fnArray[i] === OPS.paintInlineImageXObject;\n      case 3:\n        return fnArray[i] === OPS.restore;\n    }\n    throw new Error(`iterateInlineImageGroup - invalid pos: ${pos}`);\n  },\n  function foundInlineImageGroup(context, i) {\n    const MIN_IMAGES_IN_INLINE_IMAGES_BLOCK = 10;\n    const MAX_IMAGES_IN_INLINE_IMAGES_BLOCK = 200;\n    const MAX_WIDTH = 1000;\n    const IMAGE_PADDING = 1;\n\n    const fnArray = context.fnArray,\n      argsArray = context.argsArray;\n    const curr = context.iCurr;\n    const iFirstSave = curr - 3;\n    const iFirstTransform = curr - 2;\n    const iFirstPIIXO = curr - 1;\n\n    const count = Math.min(\n      Math.floor((i - iFirstSave) / 4),\n      MAX_IMAGES_IN_INLINE_IMAGES_BLOCK\n    );\n    if (count < MIN_IMAGES_IN_INLINE_IMAGES_BLOCK) {\n      return i - ((i - iFirstSave) % 4);\n    }\n\n    // assuming that heights of those image is too small (~1 pixel)\n    // packing as much as possible by lines\n    let maxX = 0;\n    const map = [];\n    let maxLineHeight = 0;\n    let currentX = IMAGE_PADDING,\n      currentY = IMAGE_PADDING;\n    for (let q = 0; q < count; q++) {\n      const transform = argsArray[iFirstTransform + (q << 2)];\n      const img = argsArray[iFirstPIIXO + (q << 2)][0];\n      if (currentX + img.width > MAX_WIDTH) {\n        // starting new line\n        maxX = Math.max(maxX, currentX);\n        currentY += maxLineHeight + 2 * IMAGE_PADDING;\n        currentX = 0;\n        maxLineHeight = 0;\n      }\n      map.push({\n        transform,\n        x: currentX,\n        y: currentY,\n        w: img.width,\n        h: img.height,\n      });\n      currentX += img.width + 2 * IMAGE_PADDING;\n      maxLineHeight = Math.max(maxLineHeight, img.height);\n    }\n    const imgWidth = Math.max(maxX, currentX) + IMAGE_PADDING;\n    const imgHeight = currentY + maxLineHeight + IMAGE_PADDING;\n    const imgData = new Uint8ClampedArray(imgWidth * imgHeight * 4);\n    const imgRowSize = imgWidth << 2;\n    for (let q = 0; q < count; q++) {\n      const data = argsArray[iFirstPIIXO + (q << 2)][0].data;\n      // Copy image by lines and extends pixels into padding.\n      const rowSize = map[q].w << 2;\n      let dataOffset = 0;\n      let offset = (map[q].x + map[q].y * imgWidth) << 2;\n      imgData.set(data.subarray(0, rowSize), offset - imgRowSize);\n      for (let k = 0, kk = map[q].h; k < kk; k++) {\n        imgData.set(data.subarray(dataOffset, dataOffset + rowSize), offset);\n        dataOffset += rowSize;\n        offset += imgRowSize;\n      }\n      imgData.set(data.subarray(dataOffset - rowSize, dataOffset), offset);\n      while (offset >= 0) {\n        data[offset - 4] = data[offset];\n        data[offset - 3] = data[offset + 1];\n        data[offset - 2] = data[offset + 2];\n        data[offset - 1] = data[offset + 3];\n        data[offset + rowSize] = data[offset + rowSize - 4];\n        data[offset + rowSize + 1] = data[offset + rowSize - 3];\n        data[offset + rowSize + 2] = data[offset + rowSize - 2];\n        data[offset + rowSize + 3] = data[offset + rowSize - 1];\n        offset -= imgRowSize;\n      }\n    }\n\n    // Replace queue items.\n    fnArray.splice(iFirstSave, count * 4, OPS.paintInlineImageXObjectGroup);\n    argsArray.splice(iFirstSave, count * 4, [\n      {\n        width: imgWidth,\n        height: imgHeight,\n        kind: ImageKind.RGBA_32BPP,\n        data: imgData,\n      },\n      map,\n    ]);\n\n    return iFirstSave + 1;\n  }\n);\n\n// This replaces (save, transform, paintImageMaskXObject, restore)+\n// sequences with one |paintImageMaskXObjectGroup| or one\n// |paintImageMaskXObjectRepeat| operation.\naddState(\n  InitialState,\n  [OPS.save, OPS.transform, OPS.paintImageMaskXObject, OPS.restore],\n  null,\n  function iterateImageMaskGroup(context, i) {\n    const fnArray = context.fnArray;\n    const iFirstSave = context.iCurr - 3;\n    const pos = (i - iFirstSave) % 4;\n    switch (pos) {\n      case 0:\n        return fnArray[i] === OPS.save;\n      case 1:\n        return fnArray[i] === OPS.transform;\n      case 2:\n        return fnArray[i] === OPS.paintImageMaskXObject;\n      case 3:\n        return fnArray[i] === OPS.restore;\n    }\n    throw new Error(`iterateImageMaskGroup - invalid pos: ${pos}`);\n  },\n  function foundImageMaskGroup(context, i) {\n    const MIN_IMAGES_IN_MASKS_BLOCK = 10;\n    const MAX_IMAGES_IN_MASKS_BLOCK = 100;\n    const MAX_SAME_IMAGES_IN_MASKS_BLOCK = 1000;\n\n    const fnArray = context.fnArray,\n      argsArray = context.argsArray;\n    const curr = context.iCurr;\n    const iFirstSave = curr - 3;\n    const iFirstTransform = curr - 2;\n    const iFirstPIMXO = curr - 1;\n\n    // At this point, i is the index of the first op past the last valid\n    // quartet.\n    let count = Math.floor((i - iFirstSave) / 4);\n    count = handlePaintSolidColorImageMask(\n      iFirstSave,\n      count,\n      fnArray,\n      argsArray\n    );\n    if (count < MIN_IMAGES_IN_MASKS_BLOCK) {\n      return i - ((i - iFirstSave) % 4);\n    }\n\n    let isSameImage = false;\n    let iTransform, transformArgs;\n    const firstPIMXOArg0 = argsArray[iFirstPIMXO][0];\n    const firstTransformArg0 = argsArray[iFirstTransform][0],\n      firstTransformArg1 = argsArray[iFirstTransform][1],\n      firstTransformArg2 = argsArray[iFirstTransform][2],\n      firstTransformArg3 = argsArray[iFirstTransform][3];\n\n    if (firstTransformArg1 === firstTransformArg2) {\n      isSameImage = true;\n      iTransform = iFirstTransform + 4;\n      let iPIMXO = iFirstPIMXO + 4;\n      for (let q = 1; q < count; q++, iTransform += 4, iPIMXO += 4) {\n        transformArgs = argsArray[iTransform];\n        if (\n          argsArray[iPIMXO][0] !== firstPIMXOArg0 ||\n          transformArgs[0] !== firstTransformArg0 ||\n          transformArgs[1] !== firstTransformArg1 ||\n          transformArgs[2] !== firstTransformArg2 ||\n          transformArgs[3] !== firstTransformArg3\n        ) {\n          if (q < MIN_IMAGES_IN_MASKS_BLOCK) {\n            isSameImage = false;\n          } else {\n            count = q;\n          }\n          break; // different image or transform\n        }\n      }\n    }\n\n    if (isSameImage) {\n      count = Math.min(count, MAX_SAME_IMAGES_IN_MASKS_BLOCK);\n      const positions = new Float32Array(count * 2);\n      iTransform = iFirstTransform;\n      for (let q = 0; q < count; q++, iTransform += 4) {\n        transformArgs = argsArray[iTransform];\n        positions[q << 1] = transformArgs[4];\n        positions[(q << 1) + 1] = transformArgs[5];\n      }\n\n      // Replace queue items.\n      fnArray.splice(iFirstSave, count * 4, OPS.paintImageMaskXObjectRepeat);\n      argsArray.splice(iFirstSave, count * 4, [\n        firstPIMXOArg0,\n        firstTransformArg0,\n        firstTransformArg1,\n        firstTransformArg2,\n        firstTransformArg3,\n        positions,\n      ]);\n    } else {\n      count = Math.min(count, MAX_IMAGES_IN_MASKS_BLOCK);\n      const images = [];\n      for (let q = 0; q < count; q++) {\n        transformArgs = argsArray[iFirstTransform + (q << 2)];\n        const maskParams = argsArray[iFirstPIMXO + (q << 2)][0];\n        images.push({\n          data: maskParams.data,\n          width: maskParams.width,\n          height: maskParams.height,\n          transform: transformArgs,\n        });\n      }\n\n      // Replace queue items.\n      fnArray.splice(iFirstSave, count * 4, OPS.paintImageMaskXObjectGroup);\n      argsArray.splice(iFirstSave, count * 4, [images]);\n    }\n\n    return iFirstSave + 1;\n  }\n);\n\n// This replaces (save, transform, paintImageXObject, restore)+ sequences\n// with one paintImageXObjectRepeat operation, if the |transform| and\n// |paintImageXObjectRepeat| ops are appropriate.\naddState(\n  InitialState,\n  [OPS.save, OPS.transform, OPS.paintImageXObject, OPS.restore],\n  function (context) {\n    const argsArray = context.argsArray;\n    const iFirstTransform = context.iCurr - 2;\n    return (\n      argsArray[iFirstTransform][1] === 0 && argsArray[iFirstTransform][2] === 0\n    );\n  },\n  function iterateImageGroup(context, i) {\n    const fnArray = context.fnArray,\n      argsArray = context.argsArray;\n    const iFirstSave = context.iCurr - 3;\n    const pos = (i - iFirstSave) % 4;\n    switch (pos) {\n      case 0:\n        return fnArray[i] === OPS.save;\n      case 1:\n        if (fnArray[i] !== OPS.transform) {\n          return false;\n        }\n        const iFirstTransform = context.iCurr - 2;\n        const firstTransformArg0 = argsArray[iFirstTransform][0];\n        const firstTransformArg3 = argsArray[iFirstTransform][3];\n        if (\n          argsArray[i][0] !== firstTransformArg0 ||\n          argsArray[i][1] !== 0 ||\n          argsArray[i][2] !== 0 ||\n          argsArray[i][3] !== firstTransformArg3\n        ) {\n          return false; // transforms don't match\n        }\n        return true;\n      case 2:\n        if (fnArray[i] !== OPS.paintImageXObject) {\n          return false;\n        }\n        const iFirstPIXO = context.iCurr - 1;\n        const firstPIXOArg0 = argsArray[iFirstPIXO][0];\n        if (argsArray[i][0] !== firstPIXOArg0) {\n          return false; // images don't match\n        }\n        return true;\n      case 3:\n        return fnArray[i] === OPS.restore;\n    }\n    throw new Error(`iterateImageGroup - invalid pos: ${pos}`);\n  },\n  function (context, i) {\n    const MIN_IMAGES_IN_BLOCK = 3;\n    const MAX_IMAGES_IN_BLOCK = 1000;\n\n    const fnArray = context.fnArray,\n      argsArray = context.argsArray;\n    const curr = context.iCurr;\n    const iFirstSave = curr - 3;\n    const iFirstTransform = curr - 2;\n    const iFirstPIXO = curr - 1;\n    const firstPIXOArg0 = argsArray[iFirstPIXO][0];\n    const firstTransformArg0 = argsArray[iFirstTransform][0];\n    const firstTransformArg3 = argsArray[iFirstTransform][3];\n\n    // At this point, i is the index of the first op past the last valid\n    // quartet.\n    const count = Math.min(\n      Math.floor((i - iFirstSave) / 4),\n      MAX_IMAGES_IN_BLOCK\n    );\n    if (count < MIN_IMAGES_IN_BLOCK) {\n      return i - ((i - iFirstSave) % 4);\n    }\n\n    // Extract the (x,y) positions from all of the matching transforms.\n    const positions = new Float32Array(count * 2);\n    let iTransform = iFirstTransform;\n    for (let q = 0; q < count; q++, iTransform += 4) {\n      const transformArgs = argsArray[iTransform];\n      positions[q << 1] = transformArgs[4];\n      positions[(q << 1) + 1] = transformArgs[5];\n    }\n\n    // Replace queue items.\n    const args = [\n      firstPIXOArg0,\n      firstTransformArg0,\n      firstTransformArg3,\n      positions,\n    ];\n    fnArray.splice(iFirstSave, count * 4, OPS.paintImageXObjectRepeat);\n    argsArray.splice(iFirstSave, count * 4, args);\n\n    return iFirstSave + 1;\n  }\n);\n\n// This replaces (beginText, setFont, setTextMatrix, showText, endText)+\n// sequences with (beginText, setFont, (setTextMatrix, showText)+, endText)+\n// sequences, if the font for each one is the same.\naddState(\n  InitialState,\n  [OPS.beginText, OPS.setFont, OPS.setTextMatrix, OPS.showText, OPS.endText],\n  null,\n  function iterateShowTextGroup(context, i) {\n    const fnArray = context.fnArray,\n      argsArray = context.argsArray;\n    const iFirstSave = context.iCurr - 4;\n    const pos = (i - iFirstSave) % 5;\n    switch (pos) {\n      case 0:\n        return fnArray[i] === OPS.beginText;\n      case 1:\n        return fnArray[i] === OPS.setFont;\n      case 2:\n        return fnArray[i] === OPS.setTextMatrix;\n      case 3:\n        if (fnArray[i] !== OPS.showText) {\n          return false;\n        }\n        const iFirstSetFont = context.iCurr - 3;\n        const firstSetFontArg0 = argsArray[iFirstSetFont][0];\n        const firstSetFontArg1 = argsArray[iFirstSetFont][1];\n        if (\n          argsArray[i][0] !== firstSetFontArg0 ||\n          argsArray[i][1] !== firstSetFontArg1\n        ) {\n          return false; // fonts don't match\n        }\n        return true;\n      case 4:\n        return fnArray[i] === OPS.endText;\n    }\n    throw new Error(`iterateShowTextGroup - invalid pos: ${pos}`);\n  },\n  function (context, i) {\n    const MIN_CHARS_IN_BLOCK = 3;\n    const MAX_CHARS_IN_BLOCK = 1000;\n\n    const fnArray = context.fnArray,\n      argsArray = context.argsArray;\n    const curr = context.iCurr;\n    const iFirstBeginText = curr - 4;\n    const iFirstSetFont = curr - 3;\n    const iFirstSetTextMatrix = curr - 2;\n    const iFirstShowText = curr - 1;\n    const iFirstEndText = curr;\n    const firstSetFontArg0 = argsArray[iFirstSetFont][0];\n    const firstSetFontArg1 = argsArray[iFirstSetFont][1];\n\n    // At this point, i is the index of the first op past the last valid\n    // quintet.\n    let count = Math.min(\n      Math.floor((i - iFirstBeginText) / 5),\n      MAX_CHARS_IN_BLOCK\n    );\n    if (count < MIN_CHARS_IN_BLOCK) {\n      return i - ((i - iFirstBeginText) % 5);\n    }\n\n    // If the preceding quintet is (<something>, setFont, setTextMatrix,\n    // showText, endText), include that as well. (E.g. <something> might be\n    // |dependency|.)\n    let iFirst = iFirstBeginText;\n    if (\n      iFirstBeginText >= 4 &&\n      fnArray[iFirstBeginText - 4] === fnArray[iFirstSetFont] &&\n      fnArray[iFirstBeginText - 3] === fnArray[iFirstSetTextMatrix] &&\n      fnArray[iFirstBeginText - 2] === fnArray[iFirstShowText] &&\n      fnArray[iFirstBeginText - 1] === fnArray[iFirstEndText] &&\n      argsArray[iFirstBeginText - 4][0] === firstSetFontArg0 &&\n      argsArray[iFirstBeginText - 4][1] === firstSetFontArg1\n    ) {\n      count++;\n      iFirst -= 5;\n    }\n\n    // Remove (endText, beginText, setFont) trios.\n    let iEndText = iFirst + 4;\n    for (let q = 1; q < count; q++) {\n      fnArray.splice(iEndText, 3);\n      argsArray.splice(iEndText, 3);\n      iEndText += 2;\n    }\n\n    return iEndText + 1;\n  }\n);\n\nclass NullOptimizer {\n  constructor(queue) {\n    this.queue = queue;\n  }\n\n  _optimize() {}\n\n  push(fn, args) {\n    this.queue.fnArray.push(fn);\n    this.queue.argsArray.push(args);\n    this._optimize();\n  }\n\n  flush() {}\n\n  reset() {}\n}\n\nclass QueueOptimizer extends NullOptimizer {\n  constructor(queue) {\n    super(queue);\n    this.state = null;\n    this.context = {\n      iCurr: 0,\n      fnArray: queue.fnArray,\n      argsArray: queue.argsArray,\n    };\n    this.match = null;\n    this.lastProcessed = 0;\n  }\n\n  _optimize() {\n    // Process new fnArray item(s) chunk.\n    const fnArray = this.queue.fnArray;\n    let i = this.lastProcessed,\n      ii = fnArray.length;\n    let state = this.state;\n    let match = this.match;\n    if (!state && !match && i + 1 === ii && !InitialState[fnArray[i]]) {\n      // Micro-optimization for the common case: last item is not\n      // optimizable, just skipping it.\n      this.lastProcessed = ii;\n      return;\n    }\n\n    const context = this.context;\n    while (i < ii) {\n      if (match) {\n        // Already find a block of potentially optimizable items, iterating...\n        const iterate = (0, match.iterateFn)(context, i);\n        if (iterate) {\n          i++;\n          continue;\n        }\n        // Found last items for the block, processing...\n        i = (0, match.processFn)(context, i + 1);\n        ii = fnArray.length;\n        match = null;\n        state = null;\n        if (i >= ii) {\n          break;\n        }\n      }\n      // Find the potentially optimizable items.\n      state = (state || InitialState)[fnArray[i]];\n      if (!state || Array.isArray(state)) {\n        i++;\n        continue;\n      }\n      // Found a start of the block based on addState rules.\n      context.iCurr = i;\n      i++;\n      if (state.checkFn && !(0, state.checkFn)(context)) {\n        // Check failed, continue search...\n        state = null;\n        continue;\n      }\n      match = state;\n      state = null;\n    }\n    this.state = state;\n    this.match = match;\n    this.lastProcessed = i;\n  }\n\n  flush() {\n    while (this.match) {\n      const length = this.queue.fnArray.length;\n      this.lastProcessed = (0, this.match.processFn)(this.context, length);\n      this.match = null;\n      this.state = null;\n      // Repeat optimization until all chunks are exhausted.\n      this._optimize();\n    }\n  }\n\n  reset() {\n    this.state = null;\n    this.match = null;\n    this.lastProcessed = 0;\n  }\n}\n\nclass OperatorList {\n  static get CHUNK_SIZE() {\n    return shadow(this, \"CHUNK_SIZE\", 1000);\n  }\n\n  // Close to chunk size.\n  static get CHUNK_SIZE_ABOUT() {\n    return shadow(this, \"CHUNK_SIZE_ABOUT\", this.CHUNK_SIZE - 5);\n  }\n\n  constructor(intent = 0, streamSink) {\n    this._streamSink = streamSink;\n    this.fnArray = [];\n    this.argsArray = [];\n    if (streamSink && !(intent & RenderingIntentFlag.OPLIST)) {\n      this.optimizer = new QueueOptimizer(this);\n    } else {\n      this.optimizer = new NullOptimizer(this);\n    }\n    this.dependencies = new Set();\n    this._totalLength = 0;\n    this.weight = 0;\n    this._resolved = streamSink ? null : Promise.resolve();\n  }\n\n  get length() {\n    return this.argsArray.length;\n  }\n\n  get ready() {\n    return this._resolved || this._streamSink.ready;\n  }\n\n  /**\n   * @type {number} The total length of the entire operator list, since\n   *                `this.length === 0` after flushing.\n   */\n  get totalLength() {\n    return this._totalLength + this.length;\n  }\n\n  addOp(fn, args) {\n    this.optimizer.push(fn, args);\n    this.weight++;\n    if (this._streamSink) {\n      if (this.weight >= OperatorList.CHUNK_SIZE) {\n        this.flush();\n      } else if (\n        this.weight >= OperatorList.CHUNK_SIZE_ABOUT &&\n        (fn === OPS.restore || fn === OPS.endText)\n      ) {\n        // Heuristic to flush on boundary of restore or endText.\n        this.flush();\n      }\n    }\n  }\n\n  addDependency(dependency) {\n    if (this.dependencies.has(dependency)) {\n      return;\n    }\n    this.dependencies.add(dependency);\n    this.addOp(OPS.dependency, [dependency]);\n  }\n\n  addDependencies(dependencies) {\n    for (const dependency of dependencies) {\n      this.addDependency(dependency);\n    }\n  }\n\n  addOpList(opList) {\n    if (!(opList instanceof OperatorList)) {\n      warn('addOpList - ignoring invalid \"opList\" parameter.');\n      return;\n    }\n    for (const dependency of opList.dependencies) {\n      this.dependencies.add(dependency);\n    }\n    for (let i = 0, ii = opList.length; i < ii; i++) {\n      this.addOp(opList.fnArray[i], opList.argsArray[i]);\n    }\n  }\n\n  getIR() {\n    return {\n      fnArray: this.fnArray,\n      argsArray: this.argsArray,\n      length: this.length,\n    };\n  }\n\n  get _transfers() {\n    const transfers = [];\n    const { fnArray, argsArray, length } = this;\n    for (let i = 0; i < length; i++) {\n      switch (fnArray[i]) {\n        case OPS.paintInlineImageXObject:\n        case OPS.paintInlineImageXObjectGroup:\n        case OPS.paintImageMaskXObject:\n          const arg = argsArray[i][0]; // First parameter in imgData.\n\n          if (\n            typeof PDFJSDev === \"undefined\" ||\n            PDFJSDev.test(\"!PRODUCTION || TESTING\")\n          ) {\n            assert(\n              arg.data instanceof Uint8ClampedArray,\n              'OperatorList._transfers: Unsupported \"arg.data\" type.'\n            );\n          }\n          if (!arg.cached) {\n            transfers.push(arg.data.buffer);\n          }\n          break;\n      }\n    }\n    return transfers;\n  }\n\n  flush(lastChunk = false) {\n    this.optimizer.flush();\n    const length = this.length;\n    this._totalLength += length;\n\n    this._streamSink.enqueue(\n      {\n        fnArray: this.fnArray,\n        argsArray: this.argsArray,\n        lastChunk,\n        length,\n      },\n      1,\n      this._transfers\n    );\n\n    this.dependencies.clear();\n    this.fnArray.length = 0;\n    this.argsArray.length = 0;\n    this.weight = 0;\n    this.optimizer.reset();\n  }\n}\n\nexport { OperatorList };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { assert, FormatError, ImageKind, info, warn } from \"../shared/util.js\";\nimport { isName, isStream, Name } from \"./primitives.js\";\nimport { ColorSpace } from \"./colorspace.js\";\nimport { DecodeStream } from \"./decode_stream.js\";\nimport { JpegStream } from \"./jpeg_stream.js\";\nimport { JpxImage } from \"./jpx.js\";\n\n/**\n * Decode and clamp a value. The formula is different from the spec because we\n * don't decode to float range [0,1], we decode it in the [0,max] range.\n */\nfunction decodeAndClamp(value, addend, coefficient, max) {\n  value = addend + value * coefficient;\n  // Clamp the value to the range\n  if (value < 0) {\n    value = 0;\n  } else if (value > max) {\n    value = max;\n  }\n  return value;\n}\n\n/**\n * Resizes an image mask with 1 component.\n * @param {TypedArray} src - The source buffer.\n * @param {number} bpc - Number of bits per component.\n * @param {number} w1 - Original width.\n * @param {number} h1 - Original height.\n * @param {number} w2 - New width.\n * @param {number} h2 - New height.\n * @returns {TypedArray} The resized image mask buffer.\n */\nfunction resizeImageMask(src, bpc, w1, h1, w2, h2) {\n  const length = w2 * h2;\n  let dest;\n  if (bpc <= 8) {\n    dest = new Uint8Array(length);\n  } else if (bpc <= 16) {\n    dest = new Uint16Array(length);\n  } else {\n    dest = new Uint32Array(length);\n  }\n  const xRatio = w1 / w2;\n  const yRatio = h1 / h2;\n  let i,\n    j,\n    py,\n    newIndex = 0,\n    oldIndex;\n  const xScaled = new Uint16Array(w2);\n  const w1Scanline = w1;\n\n  for (i = 0; i < w2; i++) {\n    xScaled[i] = Math.floor(i * xRatio);\n  }\n  for (i = 0; i < h2; i++) {\n    py = Math.floor(i * yRatio) * w1Scanline;\n    for (j = 0; j < w2; j++) {\n      oldIndex = py + xScaled[j];\n      dest[newIndex++] = src[oldIndex];\n    }\n  }\n  return dest;\n}\n\nclass PDFImage {\n  constructor({\n    xref,\n    res,\n    image,\n    isInline = false,\n    smask = null,\n    mask = null,\n    isMask = false,\n    pdfFunctionFactory,\n    localColorSpaceCache,\n  }) {\n    this.image = image;\n    const dict = image.dict;\n\n    const filter = dict.get(\"F\", \"Filter\");\n    if (isName(filter)) {\n      switch (filter.name) {\n        case \"JPXDecode\":\n          const jpxImage = new JpxImage();\n          jpxImage.parseImageProperties(image.stream);\n          image.stream.reset();\n\n          image.width = jpxImage.width;\n          image.height = jpxImage.height;\n          image.bitsPerComponent = jpxImage.bitsPerComponent;\n          image.numComps = jpxImage.componentsCount;\n          break;\n        case \"JBIG2Decode\":\n          image.bitsPerComponent = 1;\n          image.numComps = 1;\n          break;\n      }\n    }\n    // TODO cache rendered images?\n\n    let width = dict.get(\"W\", \"Width\");\n    let height = dict.get(\"H\", \"Height\");\n\n    if (\n      Number.isInteger(image.width) &&\n      image.width > 0 &&\n      Number.isInteger(image.height) &&\n      image.height > 0 &&\n      (image.width !== width || image.height !== height)\n    ) {\n      warn(\n        \"PDFImage - using the Width/Height of the image data, \" +\n          \"rather than the image dictionary.\"\n      );\n      width = image.width;\n      height = image.height;\n    }\n    if (width < 1 || height < 1) {\n      throw new FormatError(\n        `Invalid image width: ${width} or height: ${height}`\n      );\n    }\n    this.width = width;\n    this.height = height;\n\n    this.interpolate = dict.get(\"I\", \"Interpolate\");\n    this.imageMask = dict.get(\"IM\", \"ImageMask\") || false;\n    this.matte = dict.get(\"Matte\") || false;\n\n    let bitsPerComponent = image.bitsPerComponent;\n    if (!bitsPerComponent) {\n      bitsPerComponent = dict.get(\"BPC\", \"BitsPerComponent\");\n      if (!bitsPerComponent) {\n        if (this.imageMask) {\n          bitsPerComponent = 1;\n        } else {\n          throw new FormatError(\n            `Bits per component missing in image: ${this.imageMask}`\n          );\n        }\n      }\n    }\n    this.bpc = bitsPerComponent;\n\n    if (!this.imageMask) {\n      let colorSpace = dict.getRaw(\"CS\") || dict.getRaw(\"ColorSpace\");\n      if (!colorSpace) {\n        info(\"JPX images (which do not require color spaces)\");\n        switch (image.numComps) {\n          case 1:\n            colorSpace = Name.get(\"DeviceGray\");\n            break;\n          case 3:\n            colorSpace = Name.get(\"DeviceRGB\");\n            break;\n          case 4:\n            colorSpace = Name.get(\"DeviceCMYK\");\n            break;\n          default:\n            throw new Error(\n              `JPX images with ${image.numComps} color components not supported.`\n            );\n        }\n      }\n      this.colorSpace = ColorSpace.parse({\n        cs: colorSpace,\n        xref,\n        resources: isInline ? res : null,\n        pdfFunctionFactory,\n        localColorSpaceCache,\n      });\n      this.numComps = this.colorSpace.numComps;\n    }\n\n    this.decode = dict.getArray(\"D\", \"Decode\");\n    this.needsDecode = false;\n    if (\n      this.decode &&\n      ((this.colorSpace &&\n        !this.colorSpace.isDefaultDecode(this.decode, bitsPerComponent)) ||\n        (isMask &&\n          !ColorSpace.isDefaultDecode(this.decode, /* numComps = */ 1)))\n    ) {\n      this.needsDecode = true;\n      // Do some preprocessing to avoid more math.\n      const max = (1 << bitsPerComponent) - 1;\n      this.decodeCoefficients = [];\n      this.decodeAddends = [];\n      const isIndexed = this.colorSpace && this.colorSpace.name === \"Indexed\";\n      for (let i = 0, j = 0; i < this.decode.length; i += 2, ++j) {\n        const dmin = this.decode[i];\n        const dmax = this.decode[i + 1];\n        this.decodeCoefficients[j] = isIndexed\n          ? (dmax - dmin) / max\n          : dmax - dmin;\n        this.decodeAddends[j] = isIndexed ? dmin : max * dmin;\n      }\n    }\n\n    if (smask) {\n      this.smask = new PDFImage({\n        xref,\n        res,\n        image: smask,\n        isInline,\n        pdfFunctionFactory,\n        localColorSpaceCache,\n      });\n    } else if (mask) {\n      if (isStream(mask)) {\n        const maskDict = mask.dict,\n          imageMask = maskDict.get(\"IM\", \"ImageMask\");\n        if (!imageMask) {\n          warn(\"Ignoring /Mask in image without /ImageMask.\");\n        } else {\n          this.mask = new PDFImage({\n            xref,\n            res,\n            image: mask,\n            isInline,\n            isMask: true,\n            pdfFunctionFactory,\n            localColorSpaceCache,\n          });\n        }\n      } else {\n        // Color key mask (just an array).\n        this.mask = mask;\n      }\n    }\n  }\n\n  /**\n   * Handles processing of image data and returns the Promise that is resolved\n   * with a PDFImage when the image is ready to be used.\n   */\n  static async buildImage({\n    xref,\n    res,\n    image,\n    isInline = false,\n    pdfFunctionFactory,\n    localColorSpaceCache,\n  }) {\n    const imageData = image;\n    let smaskData = null;\n    let maskData = null;\n\n    const smask = image.dict.get(\"SMask\");\n    const mask = image.dict.get(\"Mask\");\n\n    if (smask) {\n      smaskData = smask;\n    } else if (mask) {\n      if (isStream(mask) || Array.isArray(mask)) {\n        maskData = mask;\n      } else {\n        warn(\"Unsupported mask format.\");\n      }\n    }\n\n    return new PDFImage({\n      xref,\n      res,\n      image: imageData,\n      isInline,\n      smask: smaskData,\n      mask: maskData,\n      pdfFunctionFactory,\n      localColorSpaceCache,\n    });\n  }\n\n  static createMask({\n    imgArray,\n    width,\n    height,\n    imageIsFromDecodeStream,\n    inverseDecode,\n    interpolate,\n  }) {\n    if (\n      typeof PDFJSDev === \"undefined\" ||\n      PDFJSDev.test(\"!PRODUCTION || TESTING\")\n    ) {\n      assert(\n        imgArray instanceof Uint8ClampedArray,\n        'PDFImage.createMask: Unsupported \"imgArray\" type.'\n      );\n    }\n    // |imgArray| might not contain full data for every pixel of the mask, so\n    // we need to distinguish between |computedLength| and |actualLength|.\n    // In particular, if inverseDecode is true, then the array we return must\n    // have a length of |computedLength|.\n\n    const computedLength = ((width + 7) >> 3) * height;\n    const actualLength = imgArray.byteLength;\n    const haveFullData = computedLength === actualLength;\n    let data, i;\n\n    if (imageIsFromDecodeStream && (!inverseDecode || haveFullData)) {\n      // imgArray came from a DecodeStream and its data is in an appropriate\n      // form, so we can just transfer it.\n      data = imgArray;\n    } else if (!inverseDecode) {\n      data = new Uint8ClampedArray(actualLength);\n      data.set(imgArray);\n    } else {\n      data = new Uint8ClampedArray(computedLength);\n      data.set(imgArray);\n      for (i = actualLength; i < computedLength; i++) {\n        data[i] = 0xff;\n      }\n    }\n\n    // If necessary, invert the original mask data (but not any extra we might\n    // have added above). It's safe to modify the array -- whether it's the\n    // original or a copy, we're about to transfer it anyway, so nothing else\n    // in this thread can be relying on its contents.\n    if (inverseDecode) {\n      for (i = 0; i < actualLength; i++) {\n        data[i] ^= 0xff;\n      }\n    }\n\n    return { data, width, height, interpolate };\n  }\n\n  get drawWidth() {\n    return Math.max(\n      this.width,\n      (this.smask && this.smask.width) || 0,\n      (this.mask && this.mask.width) || 0\n    );\n  }\n\n  get drawHeight() {\n    return Math.max(\n      this.height,\n      (this.smask && this.smask.height) || 0,\n      (this.mask && this.mask.height) || 0\n    );\n  }\n\n  decodeBuffer(buffer) {\n    const bpc = this.bpc;\n    const numComps = this.numComps;\n\n    const decodeAddends = this.decodeAddends;\n    const decodeCoefficients = this.decodeCoefficients;\n    const max = (1 << bpc) - 1;\n    let i, ii;\n\n    if (bpc === 1) {\n      // If the buffer needed decode that means it just needs to be inverted.\n      for (i = 0, ii = buffer.length; i < ii; i++) {\n        buffer[i] = +!buffer[i];\n      }\n      return;\n    }\n    let index = 0;\n    for (i = 0, ii = this.width * this.height; i < ii; i++) {\n      for (let j = 0; j < numComps; j++) {\n        buffer[index] = decodeAndClamp(\n          buffer[index],\n          decodeAddends[j],\n          decodeCoefficients[j],\n          max\n        );\n        index++;\n      }\n    }\n  }\n\n  getComponents(buffer) {\n    const bpc = this.bpc;\n\n    // This image doesn't require any extra work.\n    if (bpc === 8) {\n      return buffer;\n    }\n\n    const width = this.width;\n    const height = this.height;\n    const numComps = this.numComps;\n\n    const length = width * height * numComps;\n    let bufferPos = 0;\n    let output;\n    if (bpc <= 8) {\n      output = new Uint8Array(length);\n    } else if (bpc <= 16) {\n      output = new Uint16Array(length);\n    } else {\n      output = new Uint32Array(length);\n    }\n    const rowComps = width * numComps;\n\n    const max = (1 << bpc) - 1;\n    let i = 0,\n      ii,\n      buf;\n\n    if (bpc === 1) {\n      // Optimization for reading 1 bpc images.\n      let mask, loop1End, loop2End;\n      for (let j = 0; j < height; j++) {\n        loop1End = i + (rowComps & ~7);\n        loop2End = i + rowComps;\n\n        // unroll loop for all full bytes\n        while (i < loop1End) {\n          buf = buffer[bufferPos++];\n          output[i] = (buf >> 7) & 1;\n          output[i + 1] = (buf >> 6) & 1;\n          output[i + 2] = (buf >> 5) & 1;\n          output[i + 3] = (buf >> 4) & 1;\n          output[i + 4] = (buf >> 3) & 1;\n          output[i + 5] = (buf >> 2) & 1;\n          output[i + 6] = (buf >> 1) & 1;\n          output[i + 7] = buf & 1;\n          i += 8;\n        }\n\n        // handle remaining bits\n        if (i < loop2End) {\n          buf = buffer[bufferPos++];\n          mask = 128;\n          while (i < loop2End) {\n            output[i++] = +!!(buf & mask);\n            mask >>= 1;\n          }\n        }\n      }\n    } else {\n      // The general case that handles all other bpc values.\n      let bits = 0;\n      buf = 0;\n      for (i = 0, ii = length; i < ii; ++i) {\n        if (i % rowComps === 0) {\n          buf = 0;\n          bits = 0;\n        }\n\n        while (bits < bpc) {\n          buf = (buf << 8) | buffer[bufferPos++];\n          bits += 8;\n        }\n\n        const remainingBits = bits - bpc;\n        let value = buf >> remainingBits;\n        if (value < 0) {\n          value = 0;\n        } else if (value > max) {\n          value = max;\n        }\n        output[i] = value;\n        buf &= (1 << remainingBits) - 1;\n        bits = remainingBits;\n      }\n    }\n    return output;\n  }\n\n  fillOpacity(rgbaBuf, width, height, actualHeight, image) {\n    if (\n      typeof PDFJSDev === \"undefined\" ||\n      PDFJSDev.test(\"!PRODUCTION || TESTING\")\n    ) {\n      assert(\n        rgbaBuf instanceof Uint8ClampedArray,\n        'PDFImage.fillOpacity: Unsupported \"rgbaBuf\" type.'\n      );\n    }\n    const smask = this.smask;\n    const mask = this.mask;\n    let alphaBuf, sw, sh, i, ii, j;\n\n    if (smask) {\n      sw = smask.width;\n      sh = smask.height;\n      alphaBuf = new Uint8ClampedArray(sw * sh);\n      smask.fillGrayBuffer(alphaBuf);\n      if (sw !== width || sh !== height) {\n        alphaBuf = resizeImageMask(alphaBuf, smask.bpc, sw, sh, width, height);\n      }\n    } else if (mask) {\n      if (mask instanceof PDFImage) {\n        sw = mask.width;\n        sh = mask.height;\n        alphaBuf = new Uint8ClampedArray(sw * sh);\n        mask.numComps = 1;\n        mask.fillGrayBuffer(alphaBuf);\n\n        // Need to invert values in rgbaBuf\n        for (i = 0, ii = sw * sh; i < ii; ++i) {\n          alphaBuf[i] = 255 - alphaBuf[i];\n        }\n\n        if (sw !== width || sh !== height) {\n          alphaBuf = resizeImageMask(alphaBuf, mask.bpc, sw, sh, width, height);\n        }\n      } else if (Array.isArray(mask)) {\n        // Color key mask: if any of the components are outside the range\n        // then they should be painted.\n        alphaBuf = new Uint8ClampedArray(width * height);\n        const numComps = this.numComps;\n        for (i = 0, ii = width * height; i < ii; ++i) {\n          let opacity = 0;\n          const imageOffset = i * numComps;\n          for (j = 0; j < numComps; ++j) {\n            const color = image[imageOffset + j];\n            const maskOffset = j * 2;\n            if (color < mask[maskOffset] || color > mask[maskOffset + 1]) {\n              opacity = 255;\n              break;\n            }\n          }\n          alphaBuf[i] = opacity;\n        }\n      } else {\n        throw new FormatError(\"Unknown mask format.\");\n      }\n    }\n\n    if (alphaBuf) {\n      for (i = 0, j = 3, ii = width * actualHeight; i < ii; ++i, j += 4) {\n        rgbaBuf[j] = alphaBuf[i];\n      }\n    } else {\n      // No mask.\n      for (i = 0, j = 3, ii = width * actualHeight; i < ii; ++i, j += 4) {\n        rgbaBuf[j] = 255;\n      }\n    }\n  }\n\n  undoPreblend(buffer, width, height) {\n    if (\n      typeof PDFJSDev === \"undefined\" ||\n      PDFJSDev.test(\"!PRODUCTION || TESTING\")\n    ) {\n      assert(\n        buffer instanceof Uint8ClampedArray,\n        'PDFImage.undoPreblend: Unsupported \"buffer\" type.'\n      );\n    }\n    const matte = this.smask && this.smask.matte;\n    if (!matte) {\n      return;\n    }\n    const matteRgb = this.colorSpace.getRgb(matte, 0);\n    const matteR = matteRgb[0];\n    const matteG = matteRgb[1];\n    const matteB = matteRgb[2];\n    const length = width * height * 4;\n    for (let i = 0; i < length; i += 4) {\n      const alpha = buffer[i + 3];\n      if (alpha === 0) {\n        // according formula we have to get Infinity in all components\n        // making it white (typical paper color) should be okay\n        buffer[i] = 255;\n        buffer[i + 1] = 255;\n        buffer[i + 2] = 255;\n        continue;\n      }\n      const k = 255 / alpha;\n      buffer[i] = (buffer[i] - matteR) * k + matteR;\n      buffer[i + 1] = (buffer[i + 1] - matteG) * k + matteG;\n      buffer[i + 2] = (buffer[i + 2] - matteB) * k + matteB;\n    }\n  }\n\n  createImageData(forceRGBA = false) {\n    const drawWidth = this.drawWidth;\n    const drawHeight = this.drawHeight;\n    const imgData = {\n      width: drawWidth,\n      height: drawHeight,\n      interpolate: this.interpolate,\n      kind: 0,\n      data: null,\n      // Other fields are filled in below.\n    };\n\n    const numComps = this.numComps;\n    const originalWidth = this.width;\n    const originalHeight = this.height;\n    const bpc = this.bpc;\n\n    // Rows start at byte boundary.\n    const rowBytes = (originalWidth * numComps * bpc + 7) >> 3;\n    let imgArray;\n\n    if (!forceRGBA) {\n      // If it is a 1-bit-per-pixel grayscale (i.e. black-and-white) image\n      // without any complications, we pass a same-sized copy to the main\n      // thread rather than expanding by 32x to RGBA form. This saves *lots*\n      // of memory for many scanned documents. It's also much faster.\n      //\n      // Similarly, if it is a 24-bit-per pixel RGB image without any\n      // complications, we avoid expanding by 1.333x to RGBA form.\n      let kind;\n      if (this.colorSpace.name === \"DeviceGray\" && bpc === 1) {\n        kind = ImageKind.GRAYSCALE_1BPP;\n      } else if (\n        this.colorSpace.name === \"DeviceRGB\" &&\n        bpc === 8 &&\n        !this.needsDecode\n      ) {\n        kind = ImageKind.RGB_24BPP;\n      }\n      if (\n        kind &&\n        !this.smask &&\n        !this.mask &&\n        drawWidth === originalWidth &&\n        drawHeight === originalHeight\n      ) {\n        imgData.kind = kind;\n\n        imgArray = this.getImageBytes(originalHeight * rowBytes);\n        // If imgArray came from a DecodeStream, we're safe to transfer it\n        // (and thus detach its underlying buffer) because it will constitute\n        // the entire DecodeStream's data.  But if it came from a Stream, we\n        // need to copy it because it'll only be a portion of the Stream's\n        // data, and the rest will be read later on.\n        if (this.image instanceof DecodeStream) {\n          imgData.data = imgArray;\n        } else {\n          const newArray = new Uint8ClampedArray(imgArray.length);\n          newArray.set(imgArray);\n          imgData.data = newArray;\n        }\n        if (this.needsDecode) {\n          // Invert the buffer (which must be grayscale if we reached here).\n          assert(\n            kind === ImageKind.GRAYSCALE_1BPP,\n            \"PDFImage.createImageData: The image must be grayscale.\"\n          );\n          const buffer = imgData.data;\n          for (let i = 0, ii = buffer.length; i < ii; i++) {\n            buffer[i] ^= 0xff;\n          }\n        }\n        return imgData;\n      }\n      if (this.image instanceof JpegStream && !this.smask && !this.mask) {\n        let imageLength = originalHeight * rowBytes;\n        switch (this.colorSpace.name) {\n          case \"DeviceGray\":\n            // Avoid truncating the image, since `JpegImage.getData`\n            // will expand the image data when `forceRGB === true`.\n            imageLength *= 3;\n          /* falls through */\n          case \"DeviceRGB\":\n          case \"DeviceCMYK\":\n            imgData.kind = ImageKind.RGB_24BPP;\n            imgData.data = this.getImageBytes(\n              imageLength,\n              drawWidth,\n              drawHeight,\n              /* forceRGB = */ true\n            );\n            return imgData;\n        }\n      }\n    }\n\n    imgArray = this.getImageBytes(originalHeight * rowBytes);\n    // imgArray can be incomplete (e.g. after CCITT fax encoding).\n    const actualHeight =\n      0 | (((imgArray.length / rowBytes) * drawHeight) / originalHeight);\n\n    const comps = this.getComponents(imgArray);\n\n    // If opacity data is present, use RGBA_32BPP form. Otherwise, use the\n    // more compact RGB_24BPP form if allowable.\n    let alpha01, maybeUndoPreblend;\n    if (!forceRGBA && !this.smask && !this.mask) {\n      imgData.kind = ImageKind.RGB_24BPP;\n      imgData.data = new Uint8ClampedArray(drawWidth * drawHeight * 3);\n      alpha01 = 0;\n      maybeUndoPreblend = false;\n    } else {\n      imgData.kind = ImageKind.RGBA_32BPP;\n      imgData.data = new Uint8ClampedArray(drawWidth * drawHeight * 4);\n      alpha01 = 1;\n      maybeUndoPreblend = true;\n\n      // Color key masking (opacity) must be performed before decoding.\n      this.fillOpacity(\n        imgData.data,\n        drawWidth,\n        drawHeight,\n        actualHeight,\n        comps\n      );\n    }\n\n    if (this.needsDecode) {\n      this.decodeBuffer(comps);\n    }\n    this.colorSpace.fillRgb(\n      imgData.data,\n      originalWidth,\n      originalHeight,\n      drawWidth,\n      drawHeight,\n      actualHeight,\n      bpc,\n      comps,\n      alpha01\n    );\n    if (maybeUndoPreblend) {\n      this.undoPreblend(imgData.data, drawWidth, actualHeight);\n    }\n\n    return imgData;\n  }\n\n  fillGrayBuffer(buffer) {\n    if (\n      typeof PDFJSDev === \"undefined\" ||\n      PDFJSDev.test(\"!PRODUCTION || TESTING\")\n    ) {\n      assert(\n        buffer instanceof Uint8ClampedArray,\n        'PDFImage.fillGrayBuffer: Unsupported \"buffer\" type.'\n      );\n    }\n    const numComps = this.numComps;\n    if (numComps !== 1) {\n      throw new FormatError(\n        `Reading gray scale from a color image: ${numComps}`\n      );\n    }\n\n    const width = this.width;\n    const height = this.height;\n    const bpc = this.bpc;\n\n    // rows start at byte boundary\n    const rowBytes = (width * numComps * bpc + 7) >> 3;\n    const imgArray = this.getImageBytes(height * rowBytes);\n\n    const comps = this.getComponents(imgArray);\n    let i, length;\n\n    if (bpc === 1) {\n      // inline decoding (= inversion) for 1 bpc images\n      length = width * height;\n      if (this.needsDecode) {\n        // invert and scale to {0, 255}\n        for (i = 0; i < length; ++i) {\n          buffer[i] = (comps[i] - 1) & 255;\n        }\n      } else {\n        // scale to {0, 255}\n        for (i = 0; i < length; ++i) {\n          buffer[i] = -comps[i] & 255;\n        }\n      }\n      return;\n    }\n\n    if (this.needsDecode) {\n      this.decodeBuffer(comps);\n    }\n    length = width * height;\n    // we aren't using a colorspace so we need to scale the value\n    const scale = 255 / ((1 << bpc) - 1);\n    for (i = 0; i < length; ++i) {\n      buffer[i] = scale * comps[i];\n    }\n  }\n\n  getImageBytes(length, drawWidth, drawHeight, forceRGB = false) {\n    this.image.reset();\n    this.image.drawWidth = drawWidth || this.width;\n    this.image.drawHeight = drawHeight || this.height;\n    this.image.forceRGB = !!forceRGB;\n    return this.image.getBytes(length, /* forceClamped = */ true);\n  }\n}\n\nexport { PDFImage };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n  clearPrimitiveCaches,\n  Dict,\n  isDict,\n  isName,\n  isRef,\n  isRefsEqual,\n  isStream,\n  Name,\n  Ref,\n  RefSet,\n  RefSetCache,\n} from \"./primitives.js\";\nimport {\n  collectActions,\n  MissingDataException,\n  recoverJsURL,\n  toRomanNumerals,\n  XRefEntryException,\n} from \"./core_utils.js\";\nimport {\n  createPromiseCapability,\n  createValidAbsoluteUrl,\n  DocumentActionEventType,\n  FormatError,\n  info,\n  isBool,\n  isNum,\n  isString,\n  objectSize,\n  PermissionFlag,\n  shadow,\n  stringToPDFString,\n  stringToUTF8String,\n  warn,\n} from \"../shared/util.js\";\nimport { NameTree, NumberTree } from \"./name_number_tree.js\";\nimport { BaseStream } from \"./base_stream.js\";\nimport { ColorSpace } from \"./colorspace.js\";\nimport { FileSpec } from \"./file_spec.js\";\nimport { GlobalImageCache } from \"./image_utils.js\";\nimport { MetadataParser } from \"./metadata_parser.js\";\nimport { StructTreeRoot } from \"./struct_tree.js\";\n\nfunction fetchDestination(dest) {\n  if (dest instanceof Dict) {\n    dest = dest.get(\"D\");\n  }\n  return Array.isArray(dest) ? dest : null;\n}\n\nclass Catalog {\n  constructor(pdfManager, xref) {\n    this.pdfManager = pdfManager;\n    this.xref = xref;\n\n    this._catDict = xref.getCatalogObj();\n    if (!(this._catDict instanceof Dict)) {\n      throw new FormatError(\"Catalog object is not a dictionary.\");\n    }\n    // Given that `XRef.parse` will both fetch *and* validate the /Pages-entry,\n    // the following call must always succeed here:\n    this.toplevelPagesDict; // eslint-disable-line no-unused-expressions\n\n    this._actualNumPages = null;\n\n    this.fontCache = new RefSetCache();\n    this.builtInCMapCache = new Map();\n    this.standardFontDataCache = new Map();\n    this.globalImageCache = new GlobalImageCache();\n    this.pageKidsCountCache = new RefSetCache();\n    this.pageIndexCache = new RefSetCache();\n    this.nonBlendModesSet = new RefSet();\n  }\n\n  get version() {\n    const version = this._catDict.get(\"Version\");\n    return shadow(\n      this,\n      \"version\",\n      version instanceof Name ? version.name : null\n    );\n  }\n\n  get lang() {\n    const lang = this._catDict.get(\"Lang\");\n    return shadow(\n      this,\n      \"lang\",\n      typeof lang === \"string\" ? stringToPDFString(lang) : null\n    );\n  }\n\n  /**\n   * @type {boolean} `true` for pure XFA documents,\n   *   `false` for XFA Foreground documents.\n   */\n  get needsRendering() {\n    const needsRendering = this._catDict.get(\"NeedsRendering\");\n    return shadow(\n      this,\n      \"needsRendering\",\n      typeof needsRendering === \"boolean\" ? needsRendering : false\n    );\n  }\n\n  get collection() {\n    let collection = null;\n    try {\n      const obj = this._catDict.get(\"Collection\");\n      if (isDict(obj) && obj.size > 0) {\n        collection = obj;\n      }\n    } catch (ex) {\n      if (ex instanceof MissingDataException) {\n        throw ex;\n      }\n      info(\"Cannot fetch Collection entry; assuming no collection is present.\");\n    }\n    return shadow(this, \"collection\", collection);\n  }\n\n  get acroForm() {\n    let acroForm = null;\n    try {\n      const obj = this._catDict.get(\"AcroForm\");\n      if (isDict(obj) && obj.size > 0) {\n        acroForm = obj;\n      }\n    } catch (ex) {\n      if (ex instanceof MissingDataException) {\n        throw ex;\n      }\n      info(\"Cannot fetch AcroForm entry; assuming no forms are present.\");\n    }\n    return shadow(this, \"acroForm\", acroForm);\n  }\n\n  get acroFormRef() {\n    const value = this._catDict.getRaw(\"AcroForm\");\n    return shadow(this, \"acroFormRef\", isRef(value) ? value : null);\n  }\n\n  get metadata() {\n    const streamRef = this._catDict.getRaw(\"Metadata\");\n    if (!(streamRef instanceof Ref)) {\n      return shadow(this, \"metadata\", null);\n    }\n\n    let metadata = null;\n    try {\n      const suppressEncryption = !(\n        this.xref.encrypt && this.xref.encrypt.encryptMetadata\n      );\n      const stream = this.xref.fetch(streamRef, suppressEncryption);\n\n      if (stream instanceof BaseStream && stream.dict instanceof Dict) {\n        const type = stream.dict.get(\"Type\");\n        const subtype = stream.dict.get(\"Subtype\");\n\n        if (isName(type, \"Metadata\") && isName(subtype, \"XML\")) {\n          // XXX: This should examine the charset the XML document defines,\n          // however since there are currently no real means to decode arbitrary\n          // charsets, let's just hope that the author of the PDF was reasonable\n          // enough to stick with the XML default charset, which is UTF-8.\n          const data = stringToUTF8String(stream.getString());\n          if (data) {\n            metadata = new MetadataParser(data).serializable;\n          }\n        }\n      }\n    } catch (ex) {\n      if (ex instanceof MissingDataException) {\n        throw ex;\n      }\n      info(`Skipping invalid Metadata: \"${ex}\".`);\n    }\n    return shadow(this, \"metadata\", metadata);\n  }\n\n  get markInfo() {\n    let markInfo = null;\n    try {\n      markInfo = this._readMarkInfo();\n    } catch (ex) {\n      if (ex instanceof MissingDataException) {\n        throw ex;\n      }\n      warn(\"Unable to read mark info.\");\n    }\n    return shadow(this, \"markInfo\", markInfo);\n  }\n\n  /**\n   * @private\n   */\n  _readMarkInfo() {\n    const obj = this._catDict.get(\"MarkInfo\");\n    if (!isDict(obj)) {\n      return null;\n    }\n\n    const markInfo = Object.assign(Object.create(null), {\n      Marked: false,\n      UserProperties: false,\n      Suspects: false,\n    });\n    for (const key in markInfo) {\n      if (!obj.has(key)) {\n        continue;\n      }\n      const value = obj.get(key);\n      if (!isBool(value)) {\n        continue;\n      }\n      markInfo[key] = value;\n    }\n\n    return markInfo;\n  }\n\n  get structTreeRoot() {\n    let structTree = null;\n    try {\n      structTree = this._readStructTreeRoot();\n    } catch (ex) {\n      if (ex instanceof MissingDataException) {\n        throw ex;\n      }\n      warn(\"Unable read to structTreeRoot info.\");\n    }\n    return shadow(this, \"structTreeRoot\", structTree);\n  }\n\n  /**\n   * @private\n   */\n  _readStructTreeRoot() {\n    const obj = this._catDict.get(\"StructTreeRoot\");\n    if (!isDict(obj)) {\n      return null;\n    }\n    const root = new StructTreeRoot(obj);\n    root.init();\n    return root;\n  }\n\n  get toplevelPagesDict() {\n    const pagesObj = this._catDict.get(\"Pages\");\n    if (!isDict(pagesObj)) {\n      throw new FormatError(\"Invalid top-level pages dictionary.\");\n    }\n    return shadow(this, \"toplevelPagesDict\", pagesObj);\n  }\n\n  get documentOutline() {\n    let obj = null;\n    try {\n      obj = this._readDocumentOutline();\n    } catch (ex) {\n      if (ex instanceof MissingDataException) {\n        throw ex;\n      }\n      warn(\"Unable to read document outline.\");\n    }\n    return shadow(this, \"documentOutline\", obj);\n  }\n\n  /**\n   * @private\n   */\n  _readDocumentOutline() {\n    let obj = this._catDict.get(\"Outlines\");\n    if (!isDict(obj)) {\n      return null;\n    }\n    obj = obj.getRaw(\"First\");\n    if (!isRef(obj)) {\n      return null;\n    }\n\n    const root = { items: [] };\n    const queue = [{ obj, parent: root }];\n    // To avoid recursion, keep track of the already processed items.\n    const processed = new RefSet();\n    processed.put(obj);\n    const xref = this.xref,\n      blackColor = new Uint8ClampedArray(3);\n\n    while (queue.length > 0) {\n      const i = queue.shift();\n      const outlineDict = xref.fetchIfRef(i.obj);\n      if (outlineDict === null) {\n        continue;\n      }\n      if (!outlineDict.has(\"Title\")) {\n        throw new FormatError(\"Invalid outline item encountered.\");\n      }\n\n      const data = { url: null, dest: null };\n      Catalog.parseDestDictionary({\n        destDict: outlineDict,\n        resultObj: data,\n        docBaseUrl: this.pdfManager.docBaseUrl,\n      });\n      const title = outlineDict.get(\"Title\");\n      const flags = outlineDict.get(\"F\") || 0;\n      const color = outlineDict.getArray(\"C\");\n      const count = outlineDict.get(\"Count\");\n      let rgbColor = blackColor;\n\n      // We only need to parse the color when it's valid, and non-default.\n      if (\n        Array.isArray(color) &&\n        color.length === 3 &&\n        (color[0] !== 0 || color[1] !== 0 || color[2] !== 0)\n      ) {\n        rgbColor = ColorSpace.singletons.rgb.getRgb(color, 0);\n      }\n\n      const outlineItem = {\n        dest: data.dest,\n        url: data.url,\n        unsafeUrl: data.unsafeUrl,\n        newWindow: data.newWindow,\n        title: stringToPDFString(title),\n        color: rgbColor,\n        count: Number.isInteger(count) ? count : undefined,\n        bold: !!(flags & 2),\n        italic: !!(flags & 1),\n        items: [],\n      };\n\n      i.parent.items.push(outlineItem);\n      obj = outlineDict.getRaw(\"First\");\n      if (isRef(obj) && !processed.has(obj)) {\n        queue.push({ obj, parent: outlineItem });\n        processed.put(obj);\n      }\n      obj = outlineDict.getRaw(\"Next\");\n      if (isRef(obj) && !processed.has(obj)) {\n        queue.push({ obj, parent: i.parent });\n        processed.put(obj);\n      }\n    }\n    return root.items.length > 0 ? root.items : null;\n  }\n\n  get permissions() {\n    let permissions = null;\n    try {\n      permissions = this._readPermissions();\n    } catch (ex) {\n      if (ex instanceof MissingDataException) {\n        throw ex;\n      }\n      warn(\"Unable to read permissions.\");\n    }\n    return shadow(this, \"permissions\", permissions);\n  }\n\n  /**\n   * @private\n   */\n  _readPermissions() {\n    const encrypt = this.xref.trailer.get(\"Encrypt\");\n    if (!isDict(encrypt)) {\n      return null;\n    }\n\n    let flags = encrypt.get(\"P\");\n    if (!isNum(flags)) {\n      return null;\n    }\n\n    // PDF integer objects are represented internally in signed 2's complement\n    // form. Therefore, convert the signed decimal integer to a signed 2's\n    // complement binary integer so we can use regular bitwise operations on it.\n    flags += 2 ** 32;\n\n    const permissions = [];\n    for (const key in PermissionFlag) {\n      const value = PermissionFlag[key];\n      if (flags & value) {\n        permissions.push(value);\n      }\n    }\n    return permissions;\n  }\n\n  get optionalContentConfig() {\n    let config = null;\n    try {\n      const properties = this._catDict.get(\"OCProperties\");\n      if (!properties) {\n        return shadow(this, \"optionalContentConfig\", null);\n      }\n      const defaultConfig = properties.get(\"D\");\n      if (!defaultConfig) {\n        return shadow(this, \"optionalContentConfig\", null);\n      }\n      const groupsData = properties.get(\"OCGs\");\n      if (!Array.isArray(groupsData)) {\n        return shadow(this, \"optionalContentConfig\", null);\n      }\n      const groups = [];\n      const groupRefs = [];\n      // Ensure all the optional content groups are valid.\n      for (const groupRef of groupsData) {\n        if (!isRef(groupRef)) {\n          continue;\n        }\n        groupRefs.push(groupRef);\n        const group = this.xref.fetchIfRef(groupRef);\n        groups.push({\n          id: groupRef.toString(),\n          name: isString(group.get(\"Name\"))\n            ? stringToPDFString(group.get(\"Name\"))\n            : null,\n          intent: isString(group.get(\"Intent\"))\n            ? stringToPDFString(group.get(\"Intent\"))\n            : null,\n        });\n      }\n      config = this._readOptionalContentConfig(defaultConfig, groupRefs);\n      config.groups = groups;\n    } catch (ex) {\n      if (ex instanceof MissingDataException) {\n        throw ex;\n      }\n      warn(`Unable to read optional content config: ${ex}`);\n    }\n    return shadow(this, \"optionalContentConfig\", config);\n  }\n\n  _readOptionalContentConfig(config, contentGroupRefs) {\n    function parseOnOff(refs) {\n      const onParsed = [];\n      if (Array.isArray(refs)) {\n        for (const value of refs) {\n          if (!isRef(value)) {\n            continue;\n          }\n          if (contentGroupRefs.includes(value)) {\n            onParsed.push(value.toString());\n          }\n        }\n      }\n      return onParsed;\n    }\n\n    function parseOrder(refs, nestedLevels = 0) {\n      if (!Array.isArray(refs)) {\n        return null;\n      }\n      const order = [];\n\n      for (const value of refs) {\n        if (isRef(value) && contentGroupRefs.includes(value)) {\n          parsedOrderRefs.put(value); // Handle \"hidden\" groups, see below.\n\n          order.push(value.toString());\n          continue;\n        }\n        // Handle nested /Order arrays (see e.g. issue 9462 and bug 1240641).\n        const nestedOrder = parseNestedOrder(value, nestedLevels);\n        if (nestedOrder) {\n          order.push(nestedOrder);\n        }\n      }\n\n      if (nestedLevels > 0) {\n        return order;\n      }\n      const hiddenGroups = [];\n      for (const groupRef of contentGroupRefs) {\n        if (parsedOrderRefs.has(groupRef)) {\n          continue;\n        }\n        hiddenGroups.push(groupRef.toString());\n      }\n      if (hiddenGroups.length) {\n        order.push({ name: null, order: hiddenGroups });\n      }\n\n      return order;\n    }\n\n    function parseNestedOrder(ref, nestedLevels) {\n      if (++nestedLevels > MAX_NESTED_LEVELS) {\n        warn(\"parseNestedOrder - reached MAX_NESTED_LEVELS.\");\n        return null;\n      }\n      const value = xref.fetchIfRef(ref);\n      if (!Array.isArray(value)) {\n        return null;\n      }\n      const nestedName = xref.fetchIfRef(value[0]);\n      if (typeof nestedName !== \"string\") {\n        return null;\n      }\n      const nestedOrder = parseOrder(value.slice(1), nestedLevels);\n      if (!nestedOrder || !nestedOrder.length) {\n        return null;\n      }\n      return { name: stringToPDFString(nestedName), order: nestedOrder };\n    }\n\n    const xref = this.xref,\n      parsedOrderRefs = new RefSet(),\n      MAX_NESTED_LEVELS = 10;\n\n    return {\n      name: isString(config.get(\"Name\"))\n        ? stringToPDFString(config.get(\"Name\"))\n        : null,\n      creator: isString(config.get(\"Creator\"))\n        ? stringToPDFString(config.get(\"Creator\"))\n        : null,\n      baseState: isName(config.get(\"BaseState\"))\n        ? config.get(\"BaseState\").name\n        : null,\n      on: parseOnOff(config.get(\"ON\")),\n      off: parseOnOff(config.get(\"OFF\")),\n      order: parseOrder(config.get(\"Order\")),\n      groups: null,\n    };\n  }\n\n  setActualNumPages(num = null) {\n    this._actualNumPages = num;\n  }\n\n  get hasActualNumPages() {\n    return this._actualNumPages !== null;\n  }\n\n  get _pagesCount() {\n    const obj = this.toplevelPagesDict.get(\"Count\");\n    if (!Number.isInteger(obj)) {\n      throw new FormatError(\n        \"Page count in top-level pages dictionary is not an integer.\"\n      );\n    }\n    return shadow(this, \"_pagesCount\", obj);\n  }\n\n  get numPages() {\n    return this.hasActualNumPages ? this._actualNumPages : this._pagesCount;\n  }\n\n  get destinations() {\n    const obj = this._readDests(),\n      dests = Object.create(null);\n    if (obj instanceof NameTree) {\n      for (const [key, value] of obj.getAll()) {\n        const dest = fetchDestination(value);\n        if (dest) {\n          dests[key] = dest;\n        }\n      }\n    } else if (obj instanceof Dict) {\n      obj.forEach(function (key, value) {\n        const dest = fetchDestination(value);\n        if (dest) {\n          dests[key] = dest;\n        }\n      });\n    }\n    return shadow(this, \"destinations\", dests);\n  }\n\n  getDestination(id) {\n    const obj = this._readDests();\n    if (obj instanceof NameTree) {\n      const dest = fetchDestination(obj.get(id));\n      if (dest) {\n        return dest;\n      }\n      // Fallback to checking the *entire* NameTree, in an attempt to handle\n      // corrupt PDF documents with out-of-order NameTrees (fixes issue 10272).\n      const allDest = this.destinations[id];\n      if (allDest) {\n        warn(`Found \"${id}\" at an incorrect position in the NameTree.`);\n        return allDest;\n      }\n    } else if (obj instanceof Dict) {\n      const dest = fetchDestination(obj.get(id));\n      if (dest) {\n        return dest;\n      }\n    }\n    return null;\n  }\n\n  /**\n   * @private\n   */\n  _readDests() {\n    const obj = this._catDict.get(\"Names\");\n    if (obj && obj.has(\"Dests\")) {\n      return new NameTree(obj.getRaw(\"Dests\"), this.xref);\n    } else if (this._catDict.has(\"Dests\")) {\n      // Simple destination dictionary.\n      return this._catDict.get(\"Dests\");\n    }\n    return undefined;\n  }\n\n  get pageLabels() {\n    let obj = null;\n    try {\n      obj = this._readPageLabels();\n    } catch (ex) {\n      if (ex instanceof MissingDataException) {\n        throw ex;\n      }\n      warn(\"Unable to read page labels.\");\n    }\n    return shadow(this, \"pageLabels\", obj);\n  }\n\n  /**\n   * @private\n   */\n  _readPageLabels() {\n    const obj = this._catDict.getRaw(\"PageLabels\");\n    if (!obj) {\n      return null;\n    }\n\n    const pageLabels = new Array(this.numPages);\n    let style = null,\n      prefix = \"\";\n\n    const numberTree = new NumberTree(obj, this.xref);\n    const nums = numberTree.getAll();\n    let currentLabel = \"\",\n      currentIndex = 1;\n\n    for (let i = 0, ii = this.numPages; i < ii; i++) {\n      const labelDict = nums.get(i);\n\n      if (labelDict !== undefined) {\n        if (!isDict(labelDict)) {\n          throw new FormatError(\"PageLabel is not a dictionary.\");\n        }\n\n        if (\n          labelDict.has(\"Type\") &&\n          !isName(labelDict.get(\"Type\"), \"PageLabel\")\n        ) {\n          throw new FormatError(\"Invalid type in PageLabel dictionary.\");\n        }\n\n        if (labelDict.has(\"S\")) {\n          const s = labelDict.get(\"S\");\n          if (!isName(s)) {\n            throw new FormatError(\"Invalid style in PageLabel dictionary.\");\n          }\n          style = s.name;\n        } else {\n          style = null;\n        }\n\n        if (labelDict.has(\"P\")) {\n          const p = labelDict.get(\"P\");\n          if (!isString(p)) {\n            throw new FormatError(\"Invalid prefix in PageLabel dictionary.\");\n          }\n          prefix = stringToPDFString(p);\n        } else {\n          prefix = \"\";\n        }\n\n        if (labelDict.has(\"St\")) {\n          const st = labelDict.get(\"St\");\n          if (!(Number.isInteger(st) && st >= 1)) {\n            throw new FormatError(\"Invalid start in PageLabel dictionary.\");\n          }\n          currentIndex = st;\n        } else {\n          currentIndex = 1;\n        }\n      }\n\n      switch (style) {\n        case \"D\":\n          currentLabel = currentIndex;\n          break;\n        case \"R\":\n        case \"r\":\n          currentLabel = toRomanNumerals(currentIndex, style === \"r\");\n          break;\n        case \"A\":\n        case \"a\":\n          const LIMIT = 26; // Use only the characters A-Z, or a-z.\n          const A_UPPER_CASE = 0x41,\n            A_LOWER_CASE = 0x61;\n\n          const baseCharCode = style === \"a\" ? A_LOWER_CASE : A_UPPER_CASE;\n          const letterIndex = currentIndex - 1;\n          const character = String.fromCharCode(\n            baseCharCode + (letterIndex % LIMIT)\n          );\n          const charBuf = [];\n          for (let j = 0, jj = (letterIndex / LIMIT) | 0; j <= jj; j++) {\n            charBuf.push(character);\n          }\n          currentLabel = charBuf.join(\"\");\n          break;\n        default:\n          if (style) {\n            throw new FormatError(\n              `Invalid style \"${style}\" in PageLabel dictionary.`\n            );\n          }\n          currentLabel = \"\";\n      }\n\n      pageLabels[i] = prefix + currentLabel;\n      currentIndex++;\n    }\n    return pageLabels;\n  }\n\n  get pageLayout() {\n    const obj = this._catDict.get(\"PageLayout\");\n    // Purposely use a non-standard default value, rather than 'SinglePage', to\n    // allow differentiating between `undefined` and /SinglePage since that does\n    // affect the Scroll mode (continuous/non-continuous) used in Adobe Reader.\n    let pageLayout = \"\";\n\n    if (isName(obj)) {\n      switch (obj.name) {\n        case \"SinglePage\":\n        case \"OneColumn\":\n        case \"TwoColumnLeft\":\n        case \"TwoColumnRight\":\n        case \"TwoPageLeft\":\n        case \"TwoPageRight\":\n          pageLayout = obj.name;\n      }\n    }\n    return shadow(this, \"pageLayout\", pageLayout);\n  }\n\n  get pageMode() {\n    const obj = this._catDict.get(\"PageMode\");\n    let pageMode = \"UseNone\"; // Default value.\n\n    if (isName(obj)) {\n      switch (obj.name) {\n        case \"UseNone\":\n        case \"UseOutlines\":\n        case \"UseThumbs\":\n        case \"FullScreen\":\n        case \"UseOC\":\n        case \"UseAttachments\":\n          pageMode = obj.name;\n      }\n    }\n    return shadow(this, \"pageMode\", pageMode);\n  }\n\n  get viewerPreferences() {\n    const ViewerPreferencesValidators = {\n      HideToolbar: isBool,\n      HideMenubar: isBool,\n      HideWindowUI: isBool,\n      FitWindow: isBool,\n      CenterWindow: isBool,\n      DisplayDocTitle: isBool,\n      NonFullScreenPageMode: isName,\n      Direction: isName,\n      ViewArea: isName,\n      ViewClip: isName,\n      PrintArea: isName,\n      PrintClip: isName,\n      PrintScaling: isName,\n      Duplex: isName,\n      PickTrayByPDFSize: isBool,\n      PrintPageRange: Array.isArray,\n      NumCopies: Number.isInteger,\n    };\n\n    const obj = this._catDict.get(\"ViewerPreferences\");\n    let prefs = null;\n\n    if (isDict(obj)) {\n      for (const key in ViewerPreferencesValidators) {\n        if (!obj.has(key)) {\n          continue;\n        }\n        const value = obj.get(key);\n        // Make sure the (standard) value conforms to the specification.\n        if (!ViewerPreferencesValidators[key](value)) {\n          info(`Bad value in ViewerPreferences for \"${key}\".`);\n          continue;\n        }\n        let prefValue;\n\n        switch (key) {\n          case \"NonFullScreenPageMode\":\n            switch (value.name) {\n              case \"UseNone\":\n              case \"UseOutlines\":\n              case \"UseThumbs\":\n              case \"UseOC\":\n                prefValue = value.name;\n                break;\n              default:\n                prefValue = \"UseNone\";\n            }\n            break;\n          case \"Direction\":\n            switch (value.name) {\n              case \"L2R\":\n              case \"R2L\":\n                prefValue = value.name;\n                break;\n              default:\n                prefValue = \"L2R\";\n            }\n            break;\n          case \"ViewArea\":\n          case \"ViewClip\":\n          case \"PrintArea\":\n          case \"PrintClip\":\n            switch (value.name) {\n              case \"MediaBox\":\n              case \"CropBox\":\n              case \"BleedBox\":\n              case \"TrimBox\":\n              case \"ArtBox\":\n                prefValue = value.name;\n                break;\n              default:\n                prefValue = \"CropBox\";\n            }\n            break;\n          case \"PrintScaling\":\n            switch (value.name) {\n              case \"None\":\n              case \"AppDefault\":\n                prefValue = value.name;\n                break;\n              default:\n                prefValue = \"AppDefault\";\n            }\n            break;\n          case \"Duplex\":\n            switch (value.name) {\n              case \"Simplex\":\n              case \"DuplexFlipShortEdge\":\n              case \"DuplexFlipLongEdge\":\n                prefValue = value.name;\n                break;\n              default:\n                prefValue = \"None\";\n            }\n            break;\n          case \"PrintPageRange\":\n            const length = value.length;\n            if (length % 2 !== 0) {\n              // The number of elements must be even.\n              break;\n            }\n            const isValid = value.every((page, i, arr) => {\n              return (\n                Number.isInteger(page) &&\n                page > 0 &&\n                (i === 0 || page >= arr[i - 1]) &&\n                page <= this.numPages\n              );\n            });\n            if (isValid) {\n              prefValue = value;\n            }\n            break;\n          case \"NumCopies\":\n            if (value > 0) {\n              prefValue = value;\n            }\n            break;\n          default:\n            if (typeof value !== \"boolean\") {\n              throw new FormatError(\n                `viewerPreferences - expected a boolean value for: ${key}`\n              );\n            }\n            prefValue = value;\n        }\n\n        if (prefValue !== undefined) {\n          if (!prefs) {\n            prefs = Object.create(null);\n          }\n          prefs[key] = prefValue;\n        } else {\n          info(`Bad value in ViewerPreferences for \"${key}\".`);\n        }\n      }\n    }\n    return shadow(this, \"viewerPreferences\", prefs);\n  }\n\n  get openAction() {\n    const obj = this._catDict.get(\"OpenAction\");\n    const openAction = Object.create(null);\n\n    if (isDict(obj)) {\n      // Convert the OpenAction dictionary into a format that works with\n      // `parseDestDictionary`, to avoid having to re-implement those checks.\n      const destDict = new Dict(this.xref);\n      destDict.set(\"A\", obj);\n\n      const resultObj = { url: null, dest: null, action: null };\n      Catalog.parseDestDictionary({ destDict, resultObj });\n\n      if (Array.isArray(resultObj.dest)) {\n        openAction.dest = resultObj.dest;\n      } else if (resultObj.action) {\n        openAction.action = resultObj.action;\n      }\n    } else if (Array.isArray(obj)) {\n      openAction.dest = obj;\n    }\n    return shadow(\n      this,\n      \"openAction\",\n      objectSize(openAction) > 0 ? openAction : null\n    );\n  }\n\n  get attachments() {\n    const obj = this._catDict.get(\"Names\");\n    let attachments = null;\n\n    if (obj instanceof Dict && obj.has(\"EmbeddedFiles\")) {\n      const nameTree = new NameTree(obj.getRaw(\"EmbeddedFiles\"), this.xref);\n      for (const [key, value] of nameTree.getAll()) {\n        const fs = new FileSpec(value, this.xref);\n        if (!attachments) {\n          attachments = Object.create(null);\n        }\n        attachments[stringToPDFString(key)] = fs.serializable;\n      }\n    }\n    return shadow(this, \"attachments\", attachments);\n  }\n\n  get xfaImages() {\n    const obj = this._catDict.get(\"Names\");\n    let xfaImages = null;\n\n    if (obj instanceof Dict && obj.has(\"XFAImages\")) {\n      const nameTree = new NameTree(obj.getRaw(\"XFAImages\"), this.xref);\n      for (const [key, value] of nameTree.getAll()) {\n        if (!xfaImages) {\n          xfaImages = new Dict(this.xref);\n        }\n        xfaImages.set(key, value);\n      }\n    }\n    return shadow(this, \"xfaImages\", xfaImages);\n  }\n\n  _collectJavaScript() {\n    const obj = this._catDict.get(\"Names\");\n    let javaScript = null;\n\n    function appendIfJavaScriptDict(name, jsDict) {\n      if (!(jsDict instanceof Dict)) {\n        return;\n      }\n      if (!isName(jsDict.get(\"S\"), \"JavaScript\")) {\n        return;\n      }\n\n      let js = jsDict.get(\"JS\");\n      if (isStream(js)) {\n        js = js.getString();\n      } else if (typeof js !== \"string\") {\n        return;\n      }\n\n      if (javaScript === null) {\n        javaScript = new Map();\n      }\n      javaScript.set(name, stringToPDFString(js));\n    }\n\n    if (obj instanceof Dict && obj.has(\"JavaScript\")) {\n      const nameTree = new NameTree(obj.getRaw(\"JavaScript\"), this.xref);\n      for (const [key, value] of nameTree.getAll()) {\n        appendIfJavaScriptDict(key, value);\n      }\n    }\n    // Append OpenAction \"JavaScript\" actions, if any, to the JavaScript map.\n    const openAction = this._catDict.get(\"OpenAction\");\n    if (openAction) {\n      appendIfJavaScriptDict(\"OpenAction\", openAction);\n    }\n\n    return javaScript;\n  }\n\n  get javaScript() {\n    const javaScript = this._collectJavaScript();\n    return shadow(\n      this,\n      \"javaScript\",\n      javaScript ? [...javaScript.values()] : null\n    );\n  }\n\n  get jsActions() {\n    const javaScript = this._collectJavaScript();\n    let actions = collectActions(\n      this.xref,\n      this._catDict,\n      DocumentActionEventType\n    );\n\n    if (javaScript) {\n      if (!actions) {\n        actions = Object.create(null);\n      }\n      for (const [key, val] of javaScript) {\n        if (key in actions) {\n          actions[key].push(val);\n        } else {\n          actions[key] = [val];\n        }\n      }\n    }\n    return shadow(this, \"jsActions\", actions);\n  }\n\n  fontFallback(id, handler) {\n    const promises = [];\n    this.fontCache.forEach(function (promise) {\n      promises.push(promise);\n    });\n\n    return Promise.all(promises).then(translatedFonts => {\n      for (const translatedFont of translatedFonts) {\n        if (translatedFont.loadedName === id) {\n          translatedFont.fallback(handler);\n          return;\n        }\n      }\n    });\n  }\n\n  cleanup(manuallyTriggered = false) {\n    clearPrimitiveCaches();\n    this.globalImageCache.clear(/* onlyData = */ manuallyTriggered);\n    this.pageKidsCountCache.clear();\n    this.pageIndexCache.clear();\n    this.nonBlendModesSet.clear();\n\n    const promises = [];\n    this.fontCache.forEach(function (promise) {\n      promises.push(promise);\n    });\n\n    return Promise.all(promises).then(translatedFonts => {\n      for (const { dict } of translatedFonts) {\n        delete dict.cacheKey;\n      }\n      this.fontCache.clear();\n      this.builtInCMapCache.clear();\n      this.standardFontDataCache.clear();\n    });\n  }\n\n  getPageDict(pageIndex) {\n    const capability = createPromiseCapability();\n    const nodesToVisit = [this.toplevelPagesDict];\n    const visitedNodes = new RefSet();\n\n    const pagesRef = this._catDict.getRaw(\"Pages\");\n    if (pagesRef instanceof Ref) {\n      visitedNodes.put(pagesRef);\n    }\n    const xref = this.xref,\n      pageKidsCountCache = this.pageKidsCountCache;\n    let currentPageIndex = 0;\n\n    function next() {\n      while (nodesToVisit.length) {\n        const currentNode = nodesToVisit.pop();\n\n        if (currentNode instanceof Ref) {\n          const count = pageKidsCountCache.get(currentNode);\n          // Skip nodes where the page can't be.\n          if (count >= 0 && currentPageIndex + count <= pageIndex) {\n            currentPageIndex += count;\n            continue;\n          }\n          // Prevent circular references in the /Pages tree.\n          if (visitedNodes.has(currentNode)) {\n            capability.reject(\n              new FormatError(\"Pages tree contains circular reference.\")\n            );\n            return;\n          }\n          visitedNodes.put(currentNode);\n\n          xref.fetchAsync(currentNode).then(function (obj) {\n            if (isDict(obj, \"Page\") || (isDict(obj) && !obj.has(\"Kids\"))) {\n              // Cache the Page reference, since it can *greatly* improve\n              // performance by reducing redundant lookups in long documents\n              // where all nodes are found at *one* level of the tree.\n              if (currentNode && !pageKidsCountCache.has(currentNode)) {\n                pageKidsCountCache.put(currentNode, 1);\n              }\n\n              if (pageIndex === currentPageIndex) {\n                capability.resolve([obj, currentNode]);\n              } else {\n                currentPageIndex++;\n                next();\n              }\n              return;\n            }\n            nodesToVisit.push(obj);\n            next();\n          }, capability.reject);\n          return;\n        }\n\n        // Must be a child page dictionary.\n        if (!(currentNode instanceof Dict)) {\n          capability.reject(\n            new FormatError(\n              \"Page dictionary kid reference points to wrong type of object.\"\n            )\n          );\n          return;\n        }\n\n        let count;\n        try {\n          count = currentNode.get(\"Count\");\n        } catch (ex) {\n          if (ex instanceof MissingDataException) {\n            throw ex;\n          }\n        }\n        if (Number.isInteger(count) && count >= 0) {\n          // Cache the Kids count, since it can reduce redundant lookups in\n          // documents where all nodes are found at *one* level of the tree.\n          const objId = currentNode.objId;\n          if (objId && !pageKidsCountCache.has(objId)) {\n            pageKidsCountCache.put(objId, count);\n          }\n          // Skip nodes where the page can't be.\n          if (currentPageIndex + count <= pageIndex) {\n            currentPageIndex += count;\n            continue;\n          }\n        }\n\n        let kids;\n        try {\n          kids = currentNode.get(\"Kids\");\n        } catch (ex) {\n          if (ex instanceof MissingDataException) {\n            throw ex;\n          }\n        }\n        if (!Array.isArray(kids)) {\n          // Prevent errors in corrupt PDF documents that violate the\n          // specification by *inlining* Page dicts directly in the Kids\n          // array, rather than using indirect objects (fixes issue9540.pdf).\n          let type;\n          try {\n            type = currentNode.get(\"Type\");\n          } catch (ex) {\n            if (ex instanceof MissingDataException) {\n              throw ex;\n            }\n          }\n          if (\n            isName(type, \"Page\") ||\n            (!currentNode.has(\"Type\") && currentNode.has(\"Contents\"))\n          ) {\n            if (currentPageIndex === pageIndex) {\n              capability.resolve([currentNode, null]);\n              return;\n            }\n            currentPageIndex++;\n            continue;\n          }\n\n          capability.reject(\n            new FormatError(\"Page dictionary kids object is not an array.\")\n          );\n          return;\n        }\n\n        // Always check all `Kids` nodes, to avoid getting stuck in an empty\n        // node further down in the tree (see issue5644.pdf, issue8088.pdf),\n        // and to ensure that we actually find the correct `Page` dict.\n        for (let last = kids.length - 1; last >= 0; last--) {\n          nodesToVisit.push(kids[last]);\n        }\n      }\n      capability.reject(new Error(`Page index ${pageIndex} not found.`));\n    }\n    next();\n    return capability.promise;\n  }\n\n  /**\n   * Eagerly fetches the entire /Pages-tree; should ONLY be used as a fallback.\n   * @returns {Map}\n   */\n  getAllPageDicts(recoveryMode = false) {\n    const queue = [{ currentNode: this.toplevelPagesDict, posInKids: 0 }];\n    const visitedNodes = new RefSet();\n\n    const pagesRef = this._catDict.getRaw(\"Pages\");\n    if (pagesRef instanceof Ref) {\n      visitedNodes.put(pagesRef);\n    }\n    const map = new Map();\n    let pageIndex = 0;\n\n    function addPageDict(pageDict, pageRef) {\n      map.set(pageIndex++, [pageDict, pageRef]);\n    }\n    function addPageError(error) {\n      map.set(pageIndex++, [error, null]);\n    }\n\n    while (queue.length > 0) {\n      const queueItem = queue[queue.length - 1];\n      const { currentNode, posInKids } = queueItem;\n\n      let kids;\n      try {\n        kids = currentNode.get(\"Kids\");\n      } catch (ex) {\n        if (ex instanceof MissingDataException) {\n          throw ex;\n        }\n        if (ex instanceof XRefEntryException && !recoveryMode) {\n          throw ex;\n        }\n        addPageError(ex);\n        break;\n      }\n      if (!Array.isArray(kids)) {\n        addPageError(\n          new FormatError(\"Page dictionary kids object is not an array.\")\n        );\n        break;\n      }\n\n      if (posInKids >= kids.length) {\n        queue.pop();\n        continue;\n      }\n\n      const kidObj = kids[posInKids];\n      let obj;\n      if (kidObj instanceof Ref) {\n        try {\n          obj = this.xref.fetch(kidObj);\n        } catch (ex) {\n          if (ex instanceof MissingDataException) {\n            throw ex;\n          }\n          if (ex instanceof XRefEntryException && !recoveryMode) {\n            throw ex;\n          }\n          addPageError(ex);\n          break;\n        }\n        // Prevent circular references in the /Pages tree.\n        if (visitedNodes.has(kidObj)) {\n          addPageError(\n            new FormatError(\"Pages tree contains circular reference.\")\n          );\n          break;\n        }\n        visitedNodes.put(kidObj);\n      } else {\n        // Prevent errors in corrupt PDF documents that violate the\n        // specification by *inlining* Page dicts directly in the Kids\n        // array, rather than using indirect objects (see issue9540.pdf).\n        obj = kidObj;\n      }\n      if (!(obj instanceof Dict)) {\n        addPageError(\n          new FormatError(\n            \"Page dictionary kid reference points to wrong type of object.\"\n          )\n        );\n        break;\n      }\n\n      if (isDict(obj, \"Page\") || !obj.has(\"Kids\")) {\n        addPageDict(obj, kidObj instanceof Ref ? kidObj : null);\n      } else {\n        queue.push({ currentNode: obj, posInKids: 0 });\n      }\n      queueItem.posInKids++;\n    }\n    return map;\n  }\n\n  getPageIndex(pageRef) {\n    const cachedPageIndex = this.pageIndexCache.get(pageRef);\n    if (cachedPageIndex !== undefined) {\n      return Promise.resolve(cachedPageIndex);\n    }\n\n    // The page tree nodes have the count of all the leaves below them. To get\n    // how many pages are before we just have to walk up the tree and keep\n    // adding the count of siblings to the left of the node.\n    const xref = this.xref;\n\n    function pagesBeforeRef(kidRef) {\n      let total = 0,\n        parentRef;\n\n      return xref\n        .fetchAsync(kidRef)\n        .then(function (node) {\n          if (\n            isRefsEqual(kidRef, pageRef) &&\n            !isDict(node, \"Page\") &&\n            !(isDict(node) && !node.has(\"Type\") && node.has(\"Contents\"))\n          ) {\n            throw new FormatError(\n              \"The reference does not point to a /Page dictionary.\"\n            );\n          }\n          if (!node) {\n            return null;\n          }\n          if (!isDict(node)) {\n            throw new FormatError(\"Node must be a dictionary.\");\n          }\n          parentRef = node.getRaw(\"Parent\");\n          return node.getAsync(\"Parent\");\n        })\n        .then(function (parent) {\n          if (!parent) {\n            return null;\n          }\n          if (!isDict(parent)) {\n            throw new FormatError(\"Parent must be a dictionary.\");\n          }\n          return parent.getAsync(\"Kids\");\n        })\n        .then(function (kids) {\n          if (!kids) {\n            return null;\n          }\n\n          const kidPromises = [];\n          let found = false;\n          for (let i = 0, ii = kids.length; i < ii; i++) {\n            const kid = kids[i];\n            if (!isRef(kid)) {\n              throw new FormatError(\"Kid must be a reference.\");\n            }\n            if (isRefsEqual(kid, kidRef)) {\n              found = true;\n              break;\n            }\n            kidPromises.push(\n              xref.fetchAsync(kid).then(function (obj) {\n                if (!isDict(obj)) {\n                  throw new FormatError(\"Kid node must be a dictionary.\");\n                }\n                if (obj.has(\"Count\")) {\n                  total += obj.get(\"Count\");\n                } else {\n                  // Page leaf node.\n                  total++;\n                }\n              })\n            );\n          }\n          if (!found) {\n            throw new FormatError(\"Kid reference not found in parent's kids.\");\n          }\n          return Promise.all(kidPromises).then(function () {\n            return [total, parentRef];\n          });\n        });\n    }\n\n    let total = 0;\n    const next = ref =>\n      pagesBeforeRef(ref).then(args => {\n        if (!args) {\n          this.pageIndexCache.put(pageRef, total);\n          return total;\n        }\n        const [count, parentRef] = args;\n        total += count;\n        return next(parentRef);\n      });\n\n    return next(pageRef);\n  }\n\n  /**\n   * @typedef ParseDestDictionaryParameters\n   * @property {Dict} destDict - The dictionary containing the destination.\n   * @property {Object} resultObj - The object where the parsed destination\n   *   properties will be placed.\n   * @property {string} [docBaseUrl] - The document base URL that is used when\n   *   attempting to recover valid absolute URLs from relative ones.\n   */\n\n  /**\n   * Helper function used to parse the contents of destination dictionaries.\n   * @param {ParseDestDictionaryParameters} params\n   */\n  static parseDestDictionary(params) {\n    const destDict = params.destDict;\n    if (!isDict(destDict)) {\n      warn(\"parseDestDictionary: `destDict` must be a dictionary.\");\n      return;\n    }\n    const resultObj = params.resultObj;\n    if (typeof resultObj !== \"object\") {\n      warn(\"parseDestDictionary: `resultObj` must be an object.\");\n      return;\n    }\n    const docBaseUrl = params.docBaseUrl || null;\n\n    let action = destDict.get(\"A\"),\n      url,\n      dest;\n    if (!isDict(action)) {\n      if (destDict.has(\"Dest\")) {\n        // A /Dest entry should *only* contain a Name or an Array, but some bad\n        // PDF generators ignore that and treat it as an /A entry.\n        action = destDict.get(\"Dest\");\n      } else {\n        action = destDict.get(\"AA\");\n        if (isDict(action)) {\n          if (action.has(\"D\")) {\n            // MouseDown\n            action = action.get(\"D\");\n          } else if (action.has(\"U\")) {\n            // MouseUp\n            action = action.get(\"U\");\n          }\n        }\n      }\n    }\n\n    if (isDict(action)) {\n      const actionType = action.get(\"S\");\n      if (!isName(actionType)) {\n        warn(\"parseDestDictionary: Invalid type in Action dictionary.\");\n        return;\n      }\n      const actionName = actionType.name;\n\n      switch (actionName) {\n        case \"ResetForm\":\n          const flags = action.get(\"Flags\");\n          const include = ((isNum(flags) ? flags : 0) & 1) === 0;\n          const fields = [];\n          const refs = [];\n          for (const obj of action.get(\"Fields\") || []) {\n            if (isRef(obj)) {\n              refs.push(obj.toString());\n            } else if (isString(obj)) {\n              fields.push(stringToPDFString(obj));\n            }\n          }\n          resultObj.resetForm = { fields, refs, include };\n          break;\n        case \"URI\":\n          url = action.get(\"URI\");\n          if (url instanceof Name) {\n            // Some bad PDFs do not put parentheses around relative URLs.\n            url = \"/\" + url.name;\n          }\n          // TODO: pdf spec mentions urls can be relative to a Base\n          // entry in the dictionary.\n          break;\n\n        case \"GoTo\":\n          dest = action.get(\"D\");\n          break;\n\n        case \"Launch\":\n        // We neither want, nor can, support arbitrary 'Launch' actions.\n        // However, in practice they are mostly used for linking to other PDF\n        // files, which we thus attempt to support (utilizing `docBaseUrl`).\n        /* falls through */\n\n        case \"GoToR\":\n          const urlDict = action.get(\"F\");\n          if (isDict(urlDict)) {\n            // We assume that we found a FileSpec dictionary\n            // and fetch the URL without checking any further.\n            url = urlDict.get(\"F\") || null;\n          } else if (isString(urlDict)) {\n            url = urlDict;\n          }\n\n          // NOTE: the destination is relative to the *remote* document.\n          let remoteDest = action.get(\"D\");\n          if (remoteDest) {\n            if (isName(remoteDest)) {\n              remoteDest = remoteDest.name;\n            }\n            if (isString(url)) {\n              const baseUrl = url.split(\"#\")[0];\n              if (isString(remoteDest)) {\n                url = baseUrl + \"#\" + remoteDest;\n              } else if (Array.isArray(remoteDest)) {\n                url = baseUrl + \"#\" + JSON.stringify(remoteDest);\n              }\n            }\n          }\n          // The 'NewWindow' property, equal to `LinkTarget.BLANK`.\n          const newWindow = action.get(\"NewWindow\");\n          if (isBool(newWindow)) {\n            resultObj.newWindow = newWindow;\n          }\n          break;\n\n        case \"Named\":\n          const namedAction = action.get(\"N\");\n          if (isName(namedAction)) {\n            resultObj.action = namedAction.name;\n          }\n          break;\n\n        case \"JavaScript\":\n          const jsAction = action.get(\"JS\");\n          let js;\n\n          if (isStream(jsAction)) {\n            js = jsAction.getString();\n          } else if (isString(jsAction)) {\n            js = jsAction;\n          }\n\n          const jsURL = js && recoverJsURL(stringToPDFString(js));\n          if (jsURL) {\n            url = jsURL.url;\n            resultObj.newWindow = jsURL.newWindow;\n            break;\n          }\n        /* falls through */\n        default:\n          if (actionName === \"JavaScript\" || actionName === \"SubmitForm\") {\n            // Don't bother the user with a warning for actions that require\n            // scripting support, since those will be handled separately.\n            break;\n          }\n          warn(`parseDestDictionary - unsupported action: \"${actionName}\".`);\n          break;\n      }\n    } else if (destDict.has(\"Dest\")) {\n      // Simple destination.\n      dest = destDict.get(\"Dest\");\n    }\n\n    if (isString(url)) {\n      const absoluteUrl = createValidAbsoluteUrl(url, docBaseUrl, {\n        addDefaultProtocol: true,\n        tryConvertEncoding: true,\n      });\n      if (absoluteUrl) {\n        resultObj.url = absoluteUrl.href;\n      }\n      resultObj.unsafeUrl = url;\n    }\n    if (dest) {\n      if (isName(dest)) {\n        dest = dest.name;\n      }\n      if (isString(dest) || Array.isArray(dest)) {\n        resultObj.dest = dest;\n      }\n    }\n  }\n}\n\nexport { Catalog };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { FormatError, unreachable, warn } from \"../shared/util.js\";\nimport { isDict, RefSet } from \"./primitives.js\";\n\n/**\n * A NameTree/NumberTree is like a Dict but has some advantageous properties,\n * see the specification (7.9.6 and 7.9.7) for additional details.\n * TODO: implement all the Dict functions and make this more efficient.\n */\nclass NameOrNumberTree {\n  constructor(root, xref, type) {\n    if (this.constructor === NameOrNumberTree) {\n      unreachable(\"Cannot initialize NameOrNumberTree.\");\n    }\n    this.root = root;\n    this.xref = xref;\n    this._type = type;\n  }\n\n  getAll() {\n    const map = new Map();\n    if (!this.root) {\n      return map;\n    }\n    const xref = this.xref;\n    // Reading Name/Number tree.\n    const processed = new RefSet();\n    processed.put(this.root);\n    const queue = [this.root];\n    while (queue.length > 0) {\n      const obj = xref.fetchIfRef(queue.shift());\n      if (!isDict(obj)) {\n        continue;\n      }\n      if (obj.has(\"Kids\")) {\n        const kids = obj.get(\"Kids\");\n        for (let i = 0, ii = kids.length; i < ii; i++) {\n          const kid = kids[i];\n          if (processed.has(kid)) {\n            throw new FormatError(`Duplicate entry in \"${this._type}\" tree.`);\n          }\n          queue.push(kid);\n          processed.put(kid);\n        }\n        continue;\n      }\n      const entries = obj.get(this._type);\n      if (!Array.isArray(entries)) {\n        continue;\n      }\n      for (let i = 0, ii = entries.length; i < ii; i += 2) {\n        map.set(xref.fetchIfRef(entries[i]), xref.fetchIfRef(entries[i + 1]));\n      }\n    }\n    return map;\n  }\n\n  get(key) {\n    if (!this.root) {\n      return null;\n    }\n    const xref = this.xref;\n    let kidsOrEntries = xref.fetchIfRef(this.root);\n    let loopCount = 0;\n    const MAX_LEVELS = 10;\n\n    // Perform a binary search to quickly find the entry that\n    // contains the key we are looking for.\n    while (kidsOrEntries.has(\"Kids\")) {\n      if (++loopCount > MAX_LEVELS) {\n        warn(`Search depth limit reached for \"${this._type}\" tree.`);\n        return null;\n      }\n\n      const kids = kidsOrEntries.get(\"Kids\");\n      if (!Array.isArray(kids)) {\n        return null;\n      }\n\n      let l = 0,\n        r = kids.length - 1;\n      while (l <= r) {\n        const m = (l + r) >> 1;\n        const kid = xref.fetchIfRef(kids[m]);\n        const limits = kid.get(\"Limits\");\n\n        if (key < xref.fetchIfRef(limits[0])) {\n          r = m - 1;\n        } else if (key > xref.fetchIfRef(limits[1])) {\n          l = m + 1;\n        } else {\n          kidsOrEntries = xref.fetchIfRef(kids[m]);\n          break;\n        }\n      }\n      if (l > r) {\n        return null;\n      }\n    }\n\n    // If we get here, then we have found the right entry. Now go through the\n    // entries in the dictionary until we find the key we're looking for.\n    const entries = kidsOrEntries.get(this._type);\n    if (Array.isArray(entries)) {\n      // Perform a binary search to reduce the lookup time.\n      let l = 0,\n        r = entries.length - 2;\n      while (l <= r) {\n        // Check only even indices (0, 2, 4, ...) because the\n        // odd indices contain the actual data.\n        const tmp = (l + r) >> 1,\n          m = tmp + (tmp & 1);\n        const currentKey = xref.fetchIfRef(entries[m]);\n        if (key < currentKey) {\n          r = m - 2;\n        } else if (key > currentKey) {\n          l = m + 2;\n        } else {\n          return xref.fetchIfRef(entries[m + 1]);\n        }\n      }\n    }\n    return null;\n  }\n}\n\nclass NameTree extends NameOrNumberTree {\n  constructor(root, xref) {\n    super(root, xref, \"Names\");\n  }\n}\n\nclass NumberTree extends NameOrNumberTree {\n  constructor(root, xref) {\n    super(root, xref, \"Nums\");\n  }\n}\n\nexport { NameTree, NumberTree };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { isDict, isStream } from \"./primitives.js\";\nimport { stringToPDFString, warn } from \"../shared/util.js\";\n\nfunction pickPlatformItem(dict) {\n  // Look for the filename in this order:\n  // UF, F, Unix, Mac, DOS\n  if (dict.has(\"UF\")) {\n    return dict.get(\"UF\");\n  } else if (dict.has(\"F\")) {\n    return dict.get(\"F\");\n  } else if (dict.has(\"Unix\")) {\n    return dict.get(\"Unix\");\n  } else if (dict.has(\"Mac\")) {\n    return dict.get(\"Mac\");\n  } else if (dict.has(\"DOS\")) {\n    return dict.get(\"DOS\");\n  }\n  return null;\n}\n\n/**\n * \"A PDF file can refer to the contents of another file by using a File\n * Specification (PDF 1.1)\", see the spec (7.11) for more details.\n * NOTE: Only embedded files are supported (as part of the attachments support)\n * TODO: support the 'URL' file system (with caching if !/V), portable\n * collections attributes and related files (/RF)\n */\nclass FileSpec {\n  constructor(root, xref) {\n    if (!root || !isDict(root)) {\n      return;\n    }\n    this.xref = xref;\n    this.root = root;\n    if (root.has(\"FS\")) {\n      this.fs = root.get(\"FS\");\n    }\n    this.description = root.has(\"Desc\")\n      ? stringToPDFString(root.get(\"Desc\"))\n      : \"\";\n    if (root.has(\"RF\")) {\n      warn(\"Related file specifications are not supported\");\n    }\n    this.contentAvailable = true;\n    if (!root.has(\"EF\")) {\n      this.contentAvailable = false;\n      warn(\"Non-embedded file specifications are not supported\");\n    }\n  }\n\n  get filename() {\n    if (!this._filename && this.root) {\n      const filename = pickPlatformItem(this.root) || \"unnamed\";\n      this._filename = stringToPDFString(filename)\n        .replace(/\\\\\\\\/g, \"\\\\\")\n        .replace(/\\\\\\//g, \"/\")\n        .replace(/\\\\/g, \"/\");\n    }\n    return this._filename;\n  }\n\n  get content() {\n    if (!this.contentAvailable) {\n      return null;\n    }\n    if (!this.contentRef && this.root) {\n      this.contentRef = pickPlatformItem(this.root.get(\"EF\"));\n    }\n    let content = null;\n    if (this.contentRef) {\n      const fileObj = this.xref.fetchIfRef(this.contentRef);\n      if (fileObj && isStream(fileObj)) {\n        content = fileObj.getBytes();\n      } else {\n        warn(\n          \"Embedded file specification points to non-existing/invalid content\"\n        );\n      }\n    } else {\n      warn(\"Embedded file specification does not have a content\");\n    }\n    return content;\n  }\n\n  get serializable() {\n    return {\n      filename: this.filename,\n      content: this.content,\n    };\n  }\n}\n\nexport { FileSpec };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { SimpleXMLParser } from \"./xml_parser.js\";\n\nclass MetadataParser {\n  constructor(data) {\n    // Ghostscript may produce invalid metadata, so try to repair that first.\n    data = this._repair(data);\n\n    // Convert the string to an XML document.\n    const parser = new SimpleXMLParser({ lowerCaseName: true });\n    const xmlDocument = parser.parseFromString(data);\n\n    this._metadataMap = new Map();\n    this._data = data;\n\n    if (xmlDocument) {\n      this._parse(xmlDocument);\n    }\n  }\n\n  _repair(data) {\n    // Start by removing any \"junk\" before the first tag (see issue 10395).\n    return data\n      .replace(/^[^<]+/, \"\")\n      .replace(/>\\\\376\\\\377([^<]+)/g, function (all, codes) {\n        const bytes = codes\n          .replace(/\\\\([0-3])([0-7])([0-7])/g, function (code, d1, d2, d3) {\n            return String.fromCharCode(d1 * 64 + d2 * 8 + d3 * 1);\n          })\n          .replace(/&(amp|apos|gt|lt|quot);/g, function (str, name) {\n            switch (name) {\n              case \"amp\":\n                return \"&\";\n              case \"apos\":\n                return \"'\";\n              case \"gt\":\n                return \">\";\n              case \"lt\":\n                return \"<\";\n              case \"quot\":\n                return '\"';\n            }\n            throw new Error(`_repair: ${name} isn't defined.`);\n          });\n\n        const charBuf = [];\n        for (let i = 0, ii = bytes.length; i < ii; i += 2) {\n          const code = bytes.charCodeAt(i) * 256 + bytes.charCodeAt(i + 1);\n          if (\n            code >= /* Space = */ 32 &&\n            code < /* Delete = */ 127 &&\n            code !== /* '<' = */ 60 &&\n            code !== /* '>' = */ 62 &&\n            code !== /* '&' = */ 38\n          ) {\n            charBuf.push(String.fromCharCode(code));\n          } else {\n            charBuf.push(\n              \"&#x\" + (0x10000 + code).toString(16).substring(1) + \";\"\n            );\n          }\n        }\n        return \">\" + charBuf.join(\"\");\n      });\n  }\n\n  _getSequence(entry) {\n    const name = entry.nodeName;\n    if (name !== \"rdf:bag\" && name !== \"rdf:seq\" && name !== \"rdf:alt\") {\n      return null;\n    }\n    return entry.childNodes.filter(node => node.nodeName === \"rdf:li\");\n  }\n\n  _parseArray(entry) {\n    if (!entry.hasChildNodes()) {\n      return;\n    }\n    // Child must be a Bag (unordered array) or a Seq.\n    const [seqNode] = entry.childNodes;\n    const sequence = this._getSequence(seqNode) || [];\n\n    this._metadataMap.set(\n      entry.nodeName,\n      sequence.map(node => node.textContent.trim())\n    );\n  }\n\n  _parse(xmlDocument) {\n    let rdf = xmlDocument.documentElement;\n\n    if (rdf.nodeName !== \"rdf:rdf\") {\n      // Wrapped in <xmpmeta>\n      rdf = rdf.firstChild;\n      while (rdf && rdf.nodeName !== \"rdf:rdf\") {\n        rdf = rdf.nextSibling;\n      }\n    }\n\n    if (!rdf || rdf.nodeName !== \"rdf:rdf\" || !rdf.hasChildNodes()) {\n      return;\n    }\n\n    for (const desc of rdf.childNodes) {\n      if (desc.nodeName !== \"rdf:description\") {\n        continue;\n      }\n\n      for (const entry of desc.childNodes) {\n        const name = entry.nodeName;\n        switch (name) {\n          case \"#text\":\n            continue;\n          case \"dc:creator\":\n          case \"dc:subject\":\n            this._parseArray(entry);\n            continue;\n        }\n        this._metadataMap.set(name, entry.textContent.trim());\n      }\n    }\n  }\n\n  get serializable() {\n    return {\n      parsedData: this._metadataMap,\n      rawData: this._data,\n    };\n  }\n}\n\nexport { MetadataParser };\n","/* Copyright 2018 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// The code for XMLParserBase copied from\n// https://github.com/mozilla/shumway/blob/16451d8836fa85f4b16eeda8b4bda2fa9e2b22b0/src/avm2/natives/xml.ts\n\nimport { encodeToXmlString } from \"./core_utils.js\";\n\nconst XMLParserErrorCode = {\n  NoError: 0,\n  EndOfDocument: -1,\n  UnterminatedCdat: -2,\n  UnterminatedXmlDeclaration: -3,\n  UnterminatedDoctypeDeclaration: -4,\n  UnterminatedComment: -5,\n  MalformedElement: -6,\n  OutOfMemory: -7,\n  UnterminatedAttributeValue: -8,\n  UnterminatedElement: -9,\n  ElementNeverBegun: -10,\n};\n\nfunction isWhitespace(s, index) {\n  const ch = s[index];\n  return ch === \" \" || ch === \"\\n\" || ch === \"\\r\" || ch === \"\\t\";\n}\n\nfunction isWhitespaceString(s) {\n  for (let i = 0, ii = s.length; i < ii; i++) {\n    if (!isWhitespace(s, i)) {\n      return false;\n    }\n  }\n  return true;\n}\n\nclass XMLParserBase {\n  _resolveEntities(s) {\n    return s.replace(/&([^;]+);/g, (all, entity) => {\n      if (entity.substring(0, 2) === \"#x\") {\n        return String.fromCodePoint(parseInt(entity.substring(2), 16));\n      } else if (entity.substring(0, 1) === \"#\") {\n        return String.fromCodePoint(parseInt(entity.substring(1), 10));\n      }\n      switch (entity) {\n        case \"lt\":\n          return \"<\";\n        case \"gt\":\n          return \">\";\n        case \"amp\":\n          return \"&\";\n        case \"quot\":\n          return '\"';\n        case \"apos\":\n          return \"'\";\n      }\n      return this.onResolveEntity(entity);\n    });\n  }\n\n  _parseContent(s, start) {\n    const attributes = [];\n    let pos = start;\n\n    function skipWs() {\n      while (pos < s.length && isWhitespace(s, pos)) {\n        ++pos;\n      }\n    }\n\n    while (\n      pos < s.length &&\n      !isWhitespace(s, pos) &&\n      s[pos] !== \">\" &&\n      s[pos] !== \"/\"\n    ) {\n      ++pos;\n    }\n    const name = s.substring(start, pos);\n    skipWs();\n    while (\n      pos < s.length &&\n      s[pos] !== \">\" &&\n      s[pos] !== \"/\" &&\n      s[pos] !== \"?\"\n    ) {\n      skipWs();\n      let attrName = \"\",\n        attrValue = \"\";\n      while (pos < s.length && !isWhitespace(s, pos) && s[pos] !== \"=\") {\n        attrName += s[pos];\n        ++pos;\n      }\n      skipWs();\n      if (s[pos] !== \"=\") {\n        return null;\n      }\n      ++pos;\n      skipWs();\n      const attrEndChar = s[pos];\n      if (attrEndChar !== '\"' && attrEndChar !== \"'\") {\n        return null;\n      }\n      const attrEndIndex = s.indexOf(attrEndChar, ++pos);\n      if (attrEndIndex < 0) {\n        return null;\n      }\n      attrValue = s.substring(pos, attrEndIndex);\n      attributes.push({\n        name: attrName,\n        value: this._resolveEntities(attrValue),\n      });\n      pos = attrEndIndex + 1;\n      skipWs();\n    }\n    return {\n      name,\n      attributes,\n      parsed: pos - start,\n    };\n  }\n\n  _parseProcessingInstruction(s, start) {\n    let pos = start;\n\n    function skipWs() {\n      while (pos < s.length && isWhitespace(s, pos)) {\n        ++pos;\n      }\n    }\n\n    while (\n      pos < s.length &&\n      !isWhitespace(s, pos) &&\n      s[pos] !== \">\" &&\n      s[pos] !== \"?\" &&\n      s[pos] !== \"/\"\n    ) {\n      ++pos;\n    }\n    const name = s.substring(start, pos);\n    skipWs();\n    const attrStart = pos;\n    while (pos < s.length && (s[pos] !== \"?\" || s[pos + 1] !== \">\")) {\n      ++pos;\n    }\n    const value = s.substring(attrStart, pos);\n    return {\n      name,\n      value,\n      parsed: pos - start,\n    };\n  }\n\n  parseXml(s) {\n    let i = 0;\n    while (i < s.length) {\n      const ch = s[i];\n      let j = i;\n      if (ch === \"<\") {\n        ++j;\n        const ch2 = s[j];\n        let q;\n        switch (ch2) {\n          case \"/\":\n            ++j;\n            q = s.indexOf(\">\", j);\n            if (q < 0) {\n              this.onError(XMLParserErrorCode.UnterminatedElement);\n              return;\n            }\n            this.onEndElement(s.substring(j, q));\n            j = q + 1;\n            break;\n          case \"?\":\n            ++j;\n            const pi = this._parseProcessingInstruction(s, j);\n            if (s.substring(j + pi.parsed, j + pi.parsed + 2) !== \"?>\") {\n              this.onError(XMLParserErrorCode.UnterminatedXmlDeclaration);\n              return;\n            }\n            this.onPi(pi.name, pi.value);\n            j += pi.parsed + 2;\n            break;\n          case \"!\":\n            if (s.substring(j + 1, j + 3) === \"--\") {\n              q = s.indexOf(\"-->\", j + 3);\n              if (q < 0) {\n                this.onError(XMLParserErrorCode.UnterminatedComment);\n                return;\n              }\n              this.onComment(s.substring(j + 3, q));\n              j = q + 3;\n            } else if (s.substring(j + 1, j + 8) === \"[CDATA[\") {\n              q = s.indexOf(\"]]>\", j + 8);\n              if (q < 0) {\n                this.onError(XMLParserErrorCode.UnterminatedCdat);\n                return;\n              }\n              this.onCdata(s.substring(j + 8, q));\n              j = q + 3;\n            } else if (s.substring(j + 1, j + 8) === \"DOCTYPE\") {\n              const q2 = s.indexOf(\"[\", j + 8);\n              let complexDoctype = false;\n              q = s.indexOf(\">\", j + 8);\n              if (q < 0) {\n                this.onError(XMLParserErrorCode.UnterminatedDoctypeDeclaration);\n                return;\n              }\n              if (q2 > 0 && q > q2) {\n                q = s.indexOf(\"]>\", j + 8);\n                if (q < 0) {\n                  this.onError(\n                    XMLParserErrorCode.UnterminatedDoctypeDeclaration\n                  );\n                  return;\n                }\n                complexDoctype = true;\n              }\n              const doctypeContent = s.substring(\n                j + 8,\n                q + (complexDoctype ? 1 : 0)\n              );\n              this.onDoctype(doctypeContent);\n              j = q + (complexDoctype ? 2 : 1);\n            } else {\n              this.onError(XMLParserErrorCode.MalformedElement);\n              return;\n            }\n            break;\n          default:\n            const content = this._parseContent(s, j);\n            if (content === null) {\n              this.onError(XMLParserErrorCode.MalformedElement);\n              return;\n            }\n            let isClosed = false;\n            if (\n              s.substring(j + content.parsed, j + content.parsed + 2) === \"/>\"\n            ) {\n              isClosed = true;\n            } else if (\n              s.substring(j + content.parsed, j + content.parsed + 1) !== \">\"\n            ) {\n              this.onError(XMLParserErrorCode.UnterminatedElement);\n              return;\n            }\n            this.onBeginElement(content.name, content.attributes, isClosed);\n            j += content.parsed + (isClosed ? 2 : 1);\n            break;\n        }\n      } else {\n        while (j < s.length && s[j] !== \"<\") {\n          j++;\n        }\n        const text = s.substring(i, j);\n        this.onText(this._resolveEntities(text));\n      }\n      i = j;\n    }\n  }\n\n  onResolveEntity(name) {\n    return `&${name};`;\n  }\n\n  onPi(name, value) {}\n\n  onComment(text) {}\n\n  onCdata(text) {}\n\n  onDoctype(doctypeContent) {}\n\n  onText(text) {}\n\n  onBeginElement(name, attributes, isEmpty) {}\n\n  onEndElement(name) {}\n\n  onError(code) {}\n}\n\nclass SimpleDOMNode {\n  constructor(nodeName, nodeValue) {\n    this.nodeName = nodeName;\n    this.nodeValue = nodeValue;\n\n    Object.defineProperty(this, \"parentNode\", { value: null, writable: true });\n  }\n\n  get firstChild() {\n    return this.childNodes && this.childNodes[0];\n  }\n\n  get nextSibling() {\n    const childNodes = this.parentNode.childNodes;\n    if (!childNodes) {\n      return undefined;\n    }\n    const index = childNodes.indexOf(this);\n    if (index === -1) {\n      return undefined;\n    }\n    return childNodes[index + 1];\n  }\n\n  get textContent() {\n    if (!this.childNodes) {\n      return this.nodeValue || \"\";\n    }\n    return this.childNodes\n      .map(function (child) {\n        return child.textContent;\n      })\n      .join(\"\");\n  }\n\n  hasChildNodes() {\n    return this.childNodes && this.childNodes.length > 0;\n  }\n\n  /**\n   * Search a node in the tree with the given path\n   * foo.bar[nnn], i.e. find the nnn-th node named\n   * bar under a node named foo.\n   *\n   * @param {Array} paths - an array of objects as\n   * returned by {parseXFAPath}.\n   * @param {number} pos - the current position in\n   * the paths array.\n   * @returns {SimpleDOMNode} The node corresponding\n   * to the path or null if not found.\n   */\n  searchNode(paths, pos) {\n    if (pos >= paths.length) {\n      return this;\n    }\n\n    const component = paths[pos];\n    const stack = [];\n    let node = this;\n\n    while (true) {\n      if (component.name === node.nodeName) {\n        if (component.pos === 0) {\n          const res = node.searchNode(paths, pos + 1);\n          if (res !== null) {\n            return res;\n          }\n        } else if (stack.length === 0) {\n          return null;\n        } else {\n          const [parent] = stack.pop();\n          let siblingPos = 0;\n          for (const child of parent.childNodes) {\n            if (component.name === child.nodeName) {\n              if (siblingPos === component.pos) {\n                return child.searchNode(paths, pos + 1);\n              }\n              siblingPos++;\n            }\n          }\n          // We didn't find the correct sibling\n          // so just return the first found node\n          return node.searchNode(paths, pos + 1);\n        }\n      }\n\n      if (node.childNodes && node.childNodes.length !== 0) {\n        stack.push([node, 0]);\n        node = node.childNodes[0];\n      } else if (stack.length === 0) {\n        return null;\n      } else {\n        while (stack.length !== 0) {\n          const [parent, currentPos] = stack.pop();\n          const newPos = currentPos + 1;\n          if (newPos < parent.childNodes.length) {\n            stack.push([parent, newPos]);\n            node = parent.childNodes[newPos];\n            break;\n          }\n        }\n        if (stack.length === 0) {\n          return null;\n        }\n      }\n    }\n  }\n\n  dump(buffer) {\n    if (this.nodeName === \"#text\") {\n      buffer.push(encodeToXmlString(this.nodeValue));\n      return;\n    }\n\n    buffer.push(`<${this.nodeName}`);\n    if (this.attributes) {\n      for (const attribute of this.attributes) {\n        buffer.push(\n          ` ${attribute.name}=\"${encodeToXmlString(attribute.value)}\"`\n        );\n      }\n    }\n    if (this.hasChildNodes()) {\n      buffer.push(\">\");\n      for (const child of this.childNodes) {\n        child.dump(buffer);\n      }\n      buffer.push(`</${this.nodeName}>`);\n    } else if (this.nodeValue) {\n      buffer.push(`>${encodeToXmlString(this.nodeValue)}</${this.nodeName}>`);\n    } else {\n      buffer.push(\"/>\");\n    }\n  }\n}\n\nclass SimpleXMLParser extends XMLParserBase {\n  constructor({ hasAttributes = false, lowerCaseName = false }) {\n    super();\n    this._currentFragment = null;\n    this._stack = null;\n    this._errorCode = XMLParserErrorCode.NoError;\n    this._hasAttributes = hasAttributes;\n    this._lowerCaseName = lowerCaseName;\n  }\n\n  parseFromString(data) {\n    this._currentFragment = [];\n    this._stack = [];\n    this._errorCode = XMLParserErrorCode.NoError;\n\n    this.parseXml(data);\n\n    if (this._errorCode !== XMLParserErrorCode.NoError) {\n      return undefined; // return undefined on error\n    }\n\n    // We should only have one root.\n    const [documentElement] = this._currentFragment;\n    if (!documentElement) {\n      return undefined; // Return undefined if no root was found.\n    }\n    return { documentElement };\n  }\n\n  onText(text) {\n    if (isWhitespaceString(text)) {\n      return;\n    }\n    const node = new SimpleDOMNode(\"#text\", text);\n    this._currentFragment.push(node);\n  }\n\n  onCdata(text) {\n    const node = new SimpleDOMNode(\"#text\", text);\n    this._currentFragment.push(node);\n  }\n\n  onBeginElement(name, attributes, isEmpty) {\n    if (this._lowerCaseName) {\n      name = name.toLowerCase();\n    }\n    const node = new SimpleDOMNode(name);\n    node.childNodes = [];\n    if (this._hasAttributes) {\n      node.attributes = attributes;\n    }\n    this._currentFragment.push(node);\n    if (isEmpty) {\n      return;\n    }\n    this._stack.push(this._currentFragment);\n    this._currentFragment = node.childNodes;\n  }\n\n  onEndElement(name) {\n    this._currentFragment = this._stack.pop() || [];\n    const lastElement = this._currentFragment[this._currentFragment.length - 1];\n    if (!lastElement) {\n      return;\n    }\n    for (let i = 0, ii = lastElement.childNodes.length; i < ii; i++) {\n      lastElement.childNodes[i].parentNode = lastElement;\n    }\n  }\n\n  onError(code) {\n    this._errorCode = code;\n  }\n}\n\nexport { SimpleDOMNode, SimpleXMLParser, XMLParserBase, XMLParserErrorCode };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { isDict, isName, isRef } from \"./primitives.js\";\nimport { isString, stringToPDFString, warn } from \"../shared/util.js\";\nimport { NumberTree } from \"./name_number_tree.js\";\n\nconst MAX_DEPTH = 40;\n\nconst StructElementType = {\n  PAGE_CONTENT: \"PAGE_CONTENT\",\n  STREAM_CONTENT: \"STREAM_CONTENT\",\n  OBJECT: \"OBJECT\",\n  ELEMENT: \"ELEMENT\",\n};\n\nclass StructTreeRoot {\n  constructor(rootDict) {\n    this.dict = rootDict;\n    this.roleMap = new Map();\n  }\n\n  init() {\n    this.readRoleMap();\n  }\n\n  readRoleMap() {\n    const roleMapDict = this.dict.get(\"RoleMap\");\n    if (!isDict(roleMapDict)) {\n      return;\n    }\n    roleMapDict.forEach((key, value) => {\n      if (!isName(value)) {\n        return;\n      }\n      this.roleMap.set(key, value.name);\n    });\n  }\n}\n\n/**\n * Instead of loading the whole tree we load just the page's relevant structure\n * elements, which means we need a wrapper structure to represent the tree.\n */\nclass StructElementNode {\n  constructor(tree, dict) {\n    this.tree = tree;\n    this.dict = dict;\n    this.kids = [];\n    this.parseKids();\n  }\n\n  get role() {\n    const nameObj = this.dict.get(\"S\");\n    const name = isName(nameObj) ? nameObj.name : \"\";\n    const { root } = this.tree;\n    if (root.roleMap.has(name)) {\n      return root.roleMap.get(name);\n    }\n    return name;\n  }\n\n  parseKids() {\n    let pageObjId = null;\n    const objRef = this.dict.getRaw(\"Pg\");\n    if (isRef(objRef)) {\n      pageObjId = objRef.toString();\n    }\n    const kids = this.dict.get(\"K\");\n    if (Array.isArray(kids)) {\n      for (const kid of kids) {\n        const element = this.parseKid(pageObjId, kid);\n        if (element) {\n          this.kids.push(element);\n        }\n      }\n    } else {\n      const element = this.parseKid(pageObjId, kids);\n      if (element) {\n        this.kids.push(element);\n      }\n    }\n  }\n\n  parseKid(pageObjId, kid) {\n    // A direct link to content, the integer is an mcid.\n    if (Number.isInteger(kid)) {\n      if (this.tree.pageDict.objId !== pageObjId) {\n        return null;\n      }\n\n      return new StructElement({\n        type: StructElementType.PAGE_CONTENT,\n        mcid: kid,\n        pageObjId,\n      });\n    }\n\n    // Find the dictionary for the kid.\n    let kidDict = null;\n    if (isRef(kid)) {\n      kidDict = this.dict.xref.fetch(kid);\n    } else if (isDict(kid)) {\n      kidDict = kid;\n    }\n    if (!kidDict) {\n      return null;\n    }\n    const pageRef = kidDict.getRaw(\"Pg\");\n    if (isRef(pageRef)) {\n      pageObjId = pageRef.toString();\n    }\n\n    const type = isName(kidDict.get(\"Type\")) ? kidDict.get(\"Type\").name : null;\n    if (type === \"MCR\") {\n      if (this.tree.pageDict.objId !== pageObjId) {\n        return null;\n      }\n      return new StructElement({\n        type: StructElementType.STREAM_CONTENT,\n        refObjId: isRef(kidDict.getRaw(\"Stm\"))\n          ? kidDict.getRaw(\"Stm\").toString()\n          : null,\n        pageObjId,\n        mcid: kidDict.get(\"MCID\"),\n      });\n    }\n\n    if (type === \"OBJR\") {\n      if (this.tree.pageDict.objId !== pageObjId) {\n        return null;\n      }\n      return new StructElement({\n        type: StructElementType.OBJECT,\n        refObjId: isRef(kidDict.getRaw(\"Obj\"))\n          ? kidDict.getRaw(\"Obj\").toString()\n          : null,\n        pageObjId,\n      });\n    }\n\n    return new StructElement({\n      type: StructElementType.ELEMENT,\n      dict: kidDict,\n    });\n  }\n}\n\nclass StructElement {\n  constructor({\n    type,\n    dict = null,\n    mcid = null,\n    pageObjId = null,\n    refObjId = null,\n  }) {\n    this.type = type;\n    this.dict = dict;\n    this.mcid = mcid;\n    this.pageObjId = pageObjId;\n    this.refObjId = refObjId;\n    this.parentNode = null;\n  }\n}\n\nclass StructTreePage {\n  constructor(structTreeRoot, pageDict) {\n    this.root = structTreeRoot;\n    this.rootDict = structTreeRoot ? structTreeRoot.dict : null;\n    this.pageDict = pageDict;\n    this.nodes = [];\n  }\n\n  parse() {\n    if (!this.root || !this.rootDict) {\n      return;\n    }\n\n    const parentTree = this.rootDict.get(\"ParentTree\");\n    if (!parentTree) {\n      return;\n    }\n    const id = this.pageDict.get(\"StructParents\");\n    if (!Number.isInteger(id)) {\n      return;\n    }\n    const numberTree = new NumberTree(parentTree, this.rootDict.xref);\n    const parentArray = numberTree.get(id);\n    if (!Array.isArray(parentArray)) {\n      return;\n    }\n    const map = new Map();\n    for (const ref of parentArray) {\n      if (isRef(ref)) {\n        this.addNode(this.rootDict.xref.fetch(ref), map);\n      }\n    }\n  }\n\n  addNode(dict, map, level = 0) {\n    if (level > MAX_DEPTH) {\n      warn(\"StructTree MAX_DEPTH reached.\");\n      return null;\n    }\n\n    if (map.has(dict)) {\n      return map.get(dict);\n    }\n\n    const element = new StructElementNode(this, dict);\n    map.set(dict, element);\n\n    const parent = dict.get(\"P\");\n\n    if (!parent || isName(parent.get(\"Type\"), \"StructTreeRoot\")) {\n      if (!this.addTopLevelNode(dict, element)) {\n        map.delete(dict);\n      }\n      return element;\n    }\n\n    const parentNode = this.addNode(parent, map, level + 1);\n    if (!parentNode) {\n      return element;\n    }\n    let save = false;\n    for (const kid of parentNode.kids) {\n      if (kid.type === StructElementType.ELEMENT && kid.dict === dict) {\n        kid.parentNode = element;\n        save = true;\n      }\n    }\n    if (!save) {\n      map.delete(dict);\n    }\n    return element;\n  }\n\n  addTopLevelNode(dict, element) {\n    const obj = this.rootDict.get(\"K\");\n    if (!obj) {\n      return false;\n    }\n\n    if (isDict(obj)) {\n      if (obj.objId !== dict.objId) {\n        return false;\n      }\n      this.nodes[0] = element;\n      return true;\n    }\n\n    if (!Array.isArray(obj)) {\n      return true;\n    }\n    let save = false;\n    for (let i = 0; i < obj.length; i++) {\n      const kidRef = obj[i];\n      if (kidRef && kidRef.toString() === dict.objId) {\n        this.nodes[i] = element;\n        save = true;\n      }\n    }\n    return save;\n  }\n\n  /**\n   * Convert the tree structure into a simplifed object literal that can\n   * be sent to the main thread.\n   * @returns {Object}\n   */\n  get serializable() {\n    function nodeToSerializable(node, parent, level = 0) {\n      if (level > MAX_DEPTH) {\n        warn(\"StructTree too deep to be fully serialized.\");\n        return;\n      }\n      const obj = Object.create(null);\n      obj.role = node.role;\n      obj.children = [];\n      parent.children.push(obj);\n      const alt = node.dict.get(\"Alt\");\n      if (isString(alt)) {\n        obj.alt = stringToPDFString(alt);\n      }\n      const lang = node.dict.get(\"Lang\");\n      if (isString(lang)) {\n        obj.lang = stringToPDFString(lang);\n      }\n\n      for (const kid of node.kids) {\n        const kidElement =\n          kid.type === StructElementType.ELEMENT ? kid.parentNode : null;\n        if (kidElement) {\n          nodeToSerializable(kidElement, obj, level + 1);\n          continue;\n        } else if (\n          kid.type === StructElementType.PAGE_CONTENT ||\n          kid.type === StructElementType.STREAM_CONTENT\n        ) {\n          obj.children.push({\n            type: \"content\",\n            id: `page${kid.pageObjId}_mcid${kid.mcid}`,\n          });\n        } else if (kid.type === StructElementType.OBJECT) {\n          obj.children.push({\n            type: \"object\",\n            id: kid.refObjId,\n          });\n        }\n      }\n    }\n\n    const root = Object.create(null);\n    root.children = [];\n    root.role = \"Root\";\n    for (const child of this.nodes) {\n      if (!child) {\n        continue;\n      }\n      nodeToSerializable(child, root);\n    }\n    return root;\n  }\n}\n\nexport { StructTreePage, StructTreeRoot };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Dict, isStream, Ref, RefSet } from \"./primitives.js\";\nimport { MissingDataException } from \"./core_utils.js\";\nimport { warn } from \"../shared/util.js\";\n\nfunction mayHaveChildren(value) {\n  return (\n    value instanceof Ref ||\n    value instanceof Dict ||\n    Array.isArray(value) ||\n    isStream(value)\n  );\n}\n\nfunction addChildren(node, nodesToVisit) {\n  if (node instanceof Dict) {\n    node = node.getRawValues();\n  } else if (isStream(node)) {\n    node = node.dict.getRawValues();\n  } else if (!Array.isArray(node)) {\n    return;\n  }\n  for (const rawValue of node) {\n    if (mayHaveChildren(rawValue)) {\n      nodesToVisit.push(rawValue);\n    }\n  }\n}\n\n/**\n * A helper for loading missing data in `Dict` graphs. It traverses the graph\n * depth first and queues up any objects that have missing data. Once it has\n * has traversed as many objects that are available it attempts to bundle the\n * missing data requests and then resume from the nodes that weren't ready.\n *\n * NOTE: It provides protection from circular references by keeping track of\n * loaded references. However, you must be careful not to load any graphs\n * that have references to the catalog or other pages since that will cause the\n * entire PDF document object graph to be traversed.\n */\nclass ObjectLoader {\n  constructor(dict, keys, xref) {\n    this.dict = dict;\n    this.keys = keys;\n    this.xref = xref;\n    this.refSet = null;\n  }\n\n  async load() {\n    // Don't walk the graph if all the data is already loaded.\n    if (this.xref.stream.isDataLoaded) {\n      return undefined;\n    }\n\n    const { keys, dict } = this;\n    this.refSet = new RefSet();\n    // Setup the initial nodes to visit.\n    const nodesToVisit = [];\n    for (let i = 0, ii = keys.length; i < ii; i++) {\n      const rawValue = dict.getRaw(keys[i]);\n      // Skip nodes that are guaranteed to be empty.\n      if (rawValue !== undefined) {\n        nodesToVisit.push(rawValue);\n      }\n    }\n    return this._walk(nodesToVisit);\n  }\n\n  async _walk(nodesToVisit) {\n    const nodesToRevisit = [];\n    const pendingRequests = [];\n    // DFS walk of the object graph.\n    while (nodesToVisit.length) {\n      let currentNode = nodesToVisit.pop();\n\n      // Only references or chunked streams can cause missing data exceptions.\n      if (currentNode instanceof Ref) {\n        // Skip nodes that have already been visited.\n        if (this.refSet.has(currentNode)) {\n          continue;\n        }\n        try {\n          this.refSet.put(currentNode);\n          currentNode = this.xref.fetch(currentNode);\n        } catch (ex) {\n          if (!(ex instanceof MissingDataException)) {\n            warn(`ObjectLoader._walk - requesting all data: \"${ex}\".`);\n            this.refSet = null;\n\n            const { manager } = this.xref.stream;\n            return manager.requestAllChunks();\n          }\n          nodesToRevisit.push(currentNode);\n          pendingRequests.push({ begin: ex.begin, end: ex.end });\n        }\n      }\n      if (isStream(currentNode)) {\n        const baseStreams = currentNode.getBaseStreams();\n        if (baseStreams) {\n          let foundMissingData = false;\n          for (const stream of baseStreams) {\n            if (stream.isDataLoaded) {\n              continue;\n            }\n            foundMissingData = true;\n            pendingRequests.push({ begin: stream.start, end: stream.end });\n          }\n          if (foundMissingData) {\n            nodesToRevisit.push(currentNode);\n          }\n        }\n      }\n\n      addChildren(currentNode, nodesToVisit);\n    }\n\n    if (pendingRequests.length) {\n      await this.xref.stream.manager.requestRanges(pendingRequests);\n\n      for (const node of nodesToRevisit) {\n        // Remove any reference nodes from the current `RefSet` so they\n        // aren't skipped when we revist them.\n        if (node instanceof Ref) {\n          this.refSet.remove(node);\n        }\n      }\n      return this._walk(nodesToRevisit);\n    }\n    // Everything is loaded.\n    this.refSet = null;\n    return undefined;\n  }\n}\n\nexport { ObjectLoader };\n","/* Copyright 2020 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { bytesToString, escapeString, warn } from \"../shared/util.js\";\nimport { Dict, isDict, isName, isRef, isStream, Name } from \"./primitives.js\";\nimport { escapePDFName, parseXFAPath } from \"./core_utils.js\";\nimport { SimpleDOMNode, SimpleXMLParser } from \"./xml_parser.js\";\nimport { calculateMD5 } from \"./crypto.js\";\n\nfunction writeDict(dict, buffer, transform) {\n  buffer.push(\"<<\");\n  for (const key of dict.getKeys()) {\n    buffer.push(` /${escapePDFName(key)} `);\n    writeValue(dict.getRaw(key), buffer, transform);\n  }\n  buffer.push(\">>\");\n}\n\nfunction writeStream(stream, buffer, transform) {\n  writeDict(stream.dict, buffer, transform);\n  buffer.push(\" stream\\n\");\n  let string = stream.getString();\n  if (transform !== null) {\n    string = transform.encryptString(string);\n  }\n  buffer.push(string, \"\\nendstream\\n\");\n}\n\nfunction writeArray(array, buffer, transform) {\n  buffer.push(\"[\");\n  let first = true;\n  for (const val of array) {\n    if (!first) {\n      buffer.push(\" \");\n    } else {\n      first = false;\n    }\n    writeValue(val, buffer, transform);\n  }\n  buffer.push(\"]\");\n}\n\nfunction numberToString(value) {\n  if (Number.isInteger(value)) {\n    return value.toString();\n  }\n\n  const roundedValue = Math.round(value * 100);\n  if (roundedValue % 100 === 0) {\n    return (roundedValue / 100).toString();\n  }\n\n  if (roundedValue % 10 === 0) {\n    return value.toFixed(1);\n  }\n\n  return value.toFixed(2);\n}\n\nfunction writeValue(value, buffer, transform) {\n  if (isName(value)) {\n    buffer.push(`/${escapePDFName(value.name)}`);\n  } else if (isRef(value)) {\n    buffer.push(`${value.num} ${value.gen} R`);\n  } else if (Array.isArray(value)) {\n    writeArray(value, buffer, transform);\n  } else if (typeof value === \"string\") {\n    if (transform !== null) {\n      value = transform.encryptString(value);\n    }\n    buffer.push(`(${escapeString(value)})`);\n  } else if (typeof value === \"number\") {\n    buffer.push(numberToString(value));\n  } else if (typeof value === \"boolean\") {\n    buffer.push(value.toString());\n  } else if (isDict(value)) {\n    writeDict(value, buffer, transform);\n  } else if (isStream(value)) {\n    writeStream(value, buffer, transform);\n  } else if (value === null) {\n    buffer.push(\"null\");\n  } else {\n    warn(`Unhandled value in writer: ${typeof value}, please file a bug.`);\n  }\n}\n\nfunction writeInt(number, size, offset, buffer) {\n  for (let i = size + offset - 1; i > offset - 1; i--) {\n    buffer[i] = number & 0xff;\n    number >>= 8;\n  }\n  return offset + size;\n}\n\nfunction writeString(string, offset, buffer) {\n  for (let i = 0, len = string.length; i < len; i++) {\n    buffer[offset + i] = string.charCodeAt(i) & 0xff;\n  }\n}\n\nfunction computeMD5(filesize, xrefInfo) {\n  const time = Math.floor(Date.now() / 1000);\n  const filename = xrefInfo.filename || \"\";\n  const md5Buffer = [time.toString(), filename, filesize.toString()];\n  let md5BufferLen = md5Buffer.reduce((a, str) => a + str.length, 0);\n  for (const value of Object.values(xrefInfo.info)) {\n    md5Buffer.push(value);\n    md5BufferLen += value.length;\n  }\n\n  const array = new Uint8Array(md5BufferLen);\n  let offset = 0;\n  for (const str of md5Buffer) {\n    writeString(str, offset, array);\n    offset += str.length;\n  }\n  return bytesToString(calculateMD5(array));\n}\n\nfunction writeXFADataForAcroform(str, newRefs) {\n  const xml = new SimpleXMLParser({ hasAttributes: true }).parseFromString(str);\n\n  for (const { xfa } of newRefs) {\n    if (!xfa) {\n      continue;\n    }\n    const { path, value } = xfa;\n    if (!path) {\n      continue;\n    }\n    const node = xml.documentElement.searchNode(parseXFAPath(path), 0);\n    if (node) {\n      node.childNodes = [new SimpleDOMNode(\"#text\", value)];\n    } else {\n      warn(`Node not found for path: ${path}`);\n    }\n  }\n  const buffer = [];\n  xml.documentElement.dump(buffer);\n  return buffer.join(\"\");\n}\n\nfunction updateXFA({\n  xfaData,\n  xfaDatasetsRef,\n  hasXfaDatasetsEntry,\n  acroFormRef,\n  acroForm,\n  newRefs,\n  xref,\n  xrefInfo,\n}) {\n  if (xref === null) {\n    return;\n  }\n\n  if (!hasXfaDatasetsEntry) {\n    if (!acroFormRef) {\n      warn(\"XFA - Cannot save it\");\n      return;\n    }\n\n    // We've a XFA array which doesn't contain a datasets entry.\n    // So we'll update the AcroForm dictionary to have an XFA containing\n    // the datasets.\n    const oldXfa = acroForm.get(\"XFA\");\n    const newXfa = oldXfa.slice();\n    newXfa.splice(2, 0, \"datasets\");\n    newXfa.splice(3, 0, xfaDatasetsRef);\n\n    acroForm.set(\"XFA\", newXfa);\n\n    const encrypt = xref.encrypt;\n    let transform = null;\n    if (encrypt) {\n      transform = encrypt.createCipherTransform(\n        acroFormRef.num,\n        acroFormRef.gen\n      );\n    }\n\n    const buffer = [`${acroFormRef.num} ${acroFormRef.gen} obj\\n`];\n    writeDict(acroForm, buffer, transform);\n    buffer.push(\"\\n\");\n\n    acroForm.set(\"XFA\", oldXfa);\n\n    newRefs.push({ ref: acroFormRef, data: buffer.join(\"\") });\n  }\n\n  if (xfaData === null) {\n    const datasets = xref.fetchIfRef(xfaDatasetsRef);\n    xfaData = writeXFADataForAcroform(datasets.getString(), newRefs);\n  }\n\n  const encrypt = xref.encrypt;\n  if (encrypt) {\n    const transform = encrypt.createCipherTransform(\n      xfaDatasetsRef.num,\n      xfaDatasetsRef.gen\n    );\n    xfaData = transform.encryptString(xfaData);\n  }\n  const data =\n    `${xfaDatasetsRef.num} ${xfaDatasetsRef.gen} obj\\n` +\n    `<< /Type /EmbeddedFile /Length ${xfaData.length}>>\\nstream\\n` +\n    xfaData +\n    \"\\nendstream\\nendobj\\n\";\n\n  newRefs.push({ ref: xfaDatasetsRef, data });\n}\n\nfunction incrementalUpdate({\n  originalData,\n  xrefInfo,\n  newRefs,\n  xref = null,\n  hasXfa = false,\n  xfaDatasetsRef = null,\n  hasXfaDatasetsEntry = false,\n  acroFormRef = null,\n  acroForm = null,\n  xfaData = null,\n}) {\n  if (hasXfa) {\n    updateXFA({\n      xfaData,\n      xfaDatasetsRef,\n      hasXfaDatasetsEntry,\n      acroFormRef,\n      acroForm,\n      newRefs,\n      xref,\n      xrefInfo,\n    });\n  }\n\n  const newXref = new Dict(null);\n  const refForXrefTable = xrefInfo.newRef;\n\n  let buffer, baseOffset;\n  const lastByte = originalData[originalData.length - 1];\n  if (lastByte === /* \\n */ 0x0a || lastByte === /* \\r */ 0x0d) {\n    buffer = [];\n    baseOffset = originalData.length;\n  } else {\n    // Avoid to concatenate %%EOF with an object definition\n    buffer = [\"\\n\"];\n    baseOffset = originalData.length + 1;\n  }\n\n  newXref.set(\"Size\", refForXrefTable.num + 1);\n  newXref.set(\"Prev\", xrefInfo.startXRef);\n  newXref.set(\"Type\", Name.get(\"XRef\"));\n\n  if (xrefInfo.rootRef !== null) {\n    newXref.set(\"Root\", xrefInfo.rootRef);\n  }\n  if (xrefInfo.infoRef !== null) {\n    newXref.set(\"Info\", xrefInfo.infoRef);\n  }\n  if (xrefInfo.encryptRef !== null) {\n    newXref.set(\"Encrypt\", xrefInfo.encryptRef);\n  }\n\n  // Add a ref for the new xref and sort them\n  newRefs.push({ ref: refForXrefTable, data: \"\" });\n  newRefs = newRefs.sort((a, b) => {\n    // compare the refs\n    return a.ref.num - b.ref.num;\n  });\n\n  const xrefTableData = [[0, 1, 0xffff]];\n  const indexes = [0, 1];\n  let maxOffset = 0;\n  for (const { ref, data } of newRefs) {\n    maxOffset = Math.max(maxOffset, baseOffset);\n    xrefTableData.push([1, baseOffset, Math.min(ref.gen, 0xffff)]);\n    baseOffset += data.length;\n    indexes.push(ref.num, 1);\n    buffer.push(data);\n  }\n\n  newXref.set(\"Index\", indexes);\n\n  if (Array.isArray(xrefInfo.fileIds) && xrefInfo.fileIds.length > 0) {\n    const md5 = computeMD5(baseOffset, xrefInfo);\n    newXref.set(\"ID\", [xrefInfo.fileIds[0], md5]);\n  }\n\n  const offsetSize = Math.ceil(Math.log2(maxOffset) / 8);\n  const sizes = [1, offsetSize, 2];\n  const structSize = sizes[0] + sizes[1] + sizes[2];\n  const tableLength = structSize * xrefTableData.length;\n  newXref.set(\"W\", sizes);\n  newXref.set(\"Length\", tableLength);\n\n  buffer.push(`${refForXrefTable.num} ${refForXrefTable.gen} obj\\n`);\n  writeDict(newXref, buffer, null);\n  buffer.push(\" stream\\n\");\n\n  const bufferLen = buffer.reduce((a, str) => a + str.length, 0);\n  const footer = `\\nendstream\\nendobj\\nstartxref\\n${baseOffset}\\n%%EOF\\n`;\n  const array = new Uint8Array(\n    originalData.length + bufferLen + tableLength + footer.length\n  );\n\n  // Original data\n  array.set(originalData);\n  let offset = originalData.length;\n\n  // New data\n  for (const str of buffer) {\n    writeString(str, offset, array);\n    offset += str.length;\n  }\n\n  // New xref table\n  for (const [type, objOffset, gen] of xrefTableData) {\n    offset = writeInt(type, sizes[0], offset, array);\n    offset = writeInt(objOffset, sizes[1], offset, array);\n    offset = writeInt(gen, sizes[2], offset, array);\n  }\n\n  // Add the footer\n  writeString(footer, offset, array);\n\n  return array;\n}\n\nexport { incrementalUpdate, writeDict };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n  bytesToString,\n  FormatError,\n  isArrayEqual,\n  PasswordException,\n  PasswordResponses,\n  stringToBytes,\n  unreachable,\n  utf8StringToString,\n  warn,\n} from \"../shared/util.js\";\nimport { isDict, isName, Name } from \"./primitives.js\";\nimport { DecryptStream } from \"./decrypt_stream.js\";\n\nclass ARCFourCipher {\n  constructor(key) {\n    this.a = 0;\n    this.b = 0;\n    const s = new Uint8Array(256);\n    const keyLength = key.length;\n\n    for (let i = 0; i < 256; ++i) {\n      s[i] = i;\n    }\n    for (let i = 0, j = 0; i < 256; ++i) {\n      const tmp = s[i];\n      j = (j + tmp + key[i % keyLength]) & 0xff;\n      s[i] = s[j];\n      s[j] = tmp;\n    }\n    this.s = s;\n  }\n\n  encryptBlock(data) {\n    let a = this.a,\n      b = this.b;\n    const s = this.s;\n    const n = data.length;\n    const output = new Uint8Array(n);\n    for (let i = 0; i < n; ++i) {\n      a = (a + 1) & 0xff;\n      const tmp = s[a];\n      b = (b + tmp) & 0xff;\n      const tmp2 = s[b];\n      s[a] = tmp2;\n      s[b] = tmp;\n      output[i] = data[i] ^ s[(tmp + tmp2) & 0xff];\n    }\n    this.a = a;\n    this.b = b;\n    return output;\n  }\n\n  decryptBlock(data) {\n    return this.encryptBlock(data);\n  }\n\n  encrypt(data) {\n    return this.encryptBlock(data);\n  }\n}\n\nconst calculateMD5 = (function calculateMD5Closure() {\n  const r = new Uint8Array([\n    7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22, 5, 9, 14, 20, 5,\n    9, 14, 20, 5, 9, 14, 20, 5, 9, 14, 20, 4, 11, 16, 23, 4, 11, 16, 23, 4, 11,\n    16, 23, 4, 11, 16, 23, 6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21, 6, 10,\n    15, 21,\n  ]);\n\n  const k = new Int32Array([\n    -680876936, -389564586, 606105819, -1044525330, -176418897, 1200080426,\n    -1473231341, -45705983, 1770035416, -1958414417, -42063, -1990404162,\n    1804603682, -40341101, -1502002290, 1236535329, -165796510, -1069501632,\n    643717713, -373897302, -701558691, 38016083, -660478335, -405537848,\n    568446438, -1019803690, -187363961, 1163531501, -1444681467, -51403784,\n    1735328473, -1926607734, -378558, -2022574463, 1839030562, -35309556,\n    -1530992060, 1272893353, -155497632, -1094730640, 681279174, -358537222,\n    -722521979, 76029189, -640364487, -421815835, 530742520, -995338651,\n    -198630844, 1126891415, -1416354905, -57434055, 1700485571, -1894986606,\n    -1051523, -2054922799, 1873313359, -30611744, -1560198380, 1309151649,\n    -145523070, -1120210379, 718787259, -343485551,\n  ]);\n\n  function hash(data, offset, length) {\n    let h0 = 1732584193,\n      h1 = -271733879,\n      h2 = -1732584194,\n      h3 = 271733878;\n    // pre-processing\n    const paddedLength = (length + 72) & ~63; // data + 9 extra bytes\n    const padded = new Uint8Array(paddedLength);\n    let i, j;\n    for (i = 0; i < length; ++i) {\n      padded[i] = data[offset++];\n    }\n    padded[i++] = 0x80;\n    const n = paddedLength - 8;\n    while (i < n) {\n      padded[i++] = 0;\n    }\n    padded[i++] = (length << 3) & 0xff;\n    padded[i++] = (length >> 5) & 0xff;\n    padded[i++] = (length >> 13) & 0xff;\n    padded[i++] = (length >> 21) & 0xff;\n    padded[i++] = (length >>> 29) & 0xff;\n    padded[i++] = 0;\n    padded[i++] = 0;\n    padded[i++] = 0;\n    const w = new Int32Array(16);\n    for (i = 0; i < paddedLength; ) {\n      for (j = 0; j < 16; ++j, i += 4) {\n        w[j] =\n          padded[i] |\n          (padded[i + 1] << 8) |\n          (padded[i + 2] << 16) |\n          (padded[i + 3] << 24);\n      }\n      let a = h0,\n        b = h1,\n        c = h2,\n        d = h3,\n        f,\n        g;\n      for (j = 0; j < 64; ++j) {\n        if (j < 16) {\n          f = (b & c) | (~b & d);\n          g = j;\n        } else if (j < 32) {\n          f = (d & b) | (~d & c);\n          g = (5 * j + 1) & 15;\n        } else if (j < 48) {\n          f = b ^ c ^ d;\n          g = (3 * j + 5) & 15;\n        } else {\n          f = c ^ (b | ~d);\n          g = (7 * j) & 15;\n        }\n        const tmp = d,\n          rotateArg = (a + f + k[j] + w[g]) | 0,\n          rotate = r[j];\n        d = c;\n        c = b;\n        b = (b + ((rotateArg << rotate) | (rotateArg >>> (32 - rotate)))) | 0;\n        a = tmp;\n      }\n      h0 = (h0 + a) | 0;\n      h1 = (h1 + b) | 0;\n      h2 = (h2 + c) | 0;\n      h3 = (h3 + d) | 0;\n    }\n    // prettier-ignore\n    return new Uint8Array([\n      h0 & 0xFF, (h0 >> 8) & 0xFF, (h0 >> 16) & 0xFF, (h0 >>> 24) & 0xFF,\n      h1 & 0xFF, (h1 >> 8) & 0xFF, (h1 >> 16) & 0xFF, (h1 >>> 24) & 0xFF,\n      h2 & 0xFF, (h2 >> 8) & 0xFF, (h2 >> 16) & 0xFF, (h2 >>> 24) & 0xFF,\n      h3 & 0xFF, (h3 >> 8) & 0xFF, (h3 >> 16) & 0xFF, (h3 >>> 24) & 0xFF\n    ]);\n  }\n\n  return hash;\n})();\n\nclass Word64 {\n  constructor(highInteger, lowInteger) {\n    this.high = highInteger | 0;\n    this.low = lowInteger | 0;\n  }\n\n  and(word) {\n    this.high &= word.high;\n    this.low &= word.low;\n  }\n\n  xor(word) {\n    this.high ^= word.high;\n    this.low ^= word.low;\n  }\n\n  or(word) {\n    this.high |= word.high;\n    this.low |= word.low;\n  }\n\n  shiftRight(places) {\n    if (places >= 32) {\n      this.low = (this.high >>> (places - 32)) | 0;\n      this.high = 0;\n    } else {\n      this.low = (this.low >>> places) | (this.high << (32 - places));\n      this.high = (this.high >>> places) | 0;\n    }\n  }\n\n  shiftLeft(places) {\n    if (places >= 32) {\n      this.high = this.low << (places - 32);\n      this.low = 0;\n    } else {\n      this.high = (this.high << places) | (this.low >>> (32 - places));\n      this.low <<= places;\n    }\n  }\n\n  rotateRight(places) {\n    let low, high;\n    if (places & 32) {\n      high = this.low;\n      low = this.high;\n    } else {\n      low = this.low;\n      high = this.high;\n    }\n    places &= 31;\n    this.low = (low >>> places) | (high << (32 - places));\n    this.high = (high >>> places) | (low << (32 - places));\n  }\n\n  not() {\n    this.high = ~this.high;\n    this.low = ~this.low;\n  }\n\n  add(word) {\n    const lowAdd = (this.low >>> 0) + (word.low >>> 0);\n    let highAdd = (this.high >>> 0) + (word.high >>> 0);\n    if (lowAdd > 0xffffffff) {\n      highAdd += 1;\n    }\n    this.low = lowAdd | 0;\n    this.high = highAdd | 0;\n  }\n\n  copyTo(bytes, offset) {\n    bytes[offset] = (this.high >>> 24) & 0xff;\n    bytes[offset + 1] = (this.high >> 16) & 0xff;\n    bytes[offset + 2] = (this.high >> 8) & 0xff;\n    bytes[offset + 3] = this.high & 0xff;\n    bytes[offset + 4] = (this.low >>> 24) & 0xff;\n    bytes[offset + 5] = (this.low >> 16) & 0xff;\n    bytes[offset + 6] = (this.low >> 8) & 0xff;\n    bytes[offset + 7] = this.low & 0xff;\n  }\n\n  assign(word) {\n    this.high = word.high;\n    this.low = word.low;\n  }\n}\n\nconst calculateSHA256 = (function calculateSHA256Closure() {\n  function rotr(x, n) {\n    return (x >>> n) | (x << (32 - n));\n  }\n\n  function ch(x, y, z) {\n    return (x & y) ^ (~x & z);\n  }\n\n  function maj(x, y, z) {\n    return (x & y) ^ (x & z) ^ (y & z);\n  }\n\n  function sigma(x) {\n    return rotr(x, 2) ^ rotr(x, 13) ^ rotr(x, 22);\n  }\n\n  function sigmaPrime(x) {\n    return rotr(x, 6) ^ rotr(x, 11) ^ rotr(x, 25);\n  }\n\n  function littleSigma(x) {\n    return rotr(x, 7) ^ rotr(x, 18) ^ (x >>> 3);\n  }\n\n  function littleSigmaPrime(x) {\n    return rotr(x, 17) ^ rotr(x, 19) ^ (x >>> 10);\n  }\n\n  const k = [\n    0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1,\n    0x923f82a4, 0xab1c5ed5, 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,\n    0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174, 0xe49b69c1, 0xefbe4786,\n    0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n    0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147,\n    0x06ca6351, 0x14292967, 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,\n    0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85, 0xa2bfe8a1, 0xa81a664b,\n    0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n    0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a,\n    0x5b9cca4f, 0x682e6ff3, 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,\n    0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2,\n  ];\n\n  function hash(data, offset, length) {\n    // initial hash values\n    let h0 = 0x6a09e667,\n      h1 = 0xbb67ae85,\n      h2 = 0x3c6ef372,\n      h3 = 0xa54ff53a,\n      h4 = 0x510e527f,\n      h5 = 0x9b05688c,\n      h6 = 0x1f83d9ab,\n      h7 = 0x5be0cd19;\n    // pre-processing\n    const paddedLength = Math.ceil((length + 9) / 64) * 64;\n    const padded = new Uint8Array(paddedLength);\n    let i, j;\n    for (i = 0; i < length; ++i) {\n      padded[i] = data[offset++];\n    }\n    padded[i++] = 0x80;\n    const n = paddedLength - 8;\n    while (i < n) {\n      padded[i++] = 0;\n    }\n    padded[i++] = 0;\n    padded[i++] = 0;\n    padded[i++] = 0;\n    padded[i++] = (length >>> 29) & 0xff;\n    padded[i++] = (length >> 21) & 0xff;\n    padded[i++] = (length >> 13) & 0xff;\n    padded[i++] = (length >> 5) & 0xff;\n    padded[i++] = (length << 3) & 0xff;\n    const w = new Uint32Array(64);\n    // for each 512 bit block\n    for (i = 0; i < paddedLength; ) {\n      for (j = 0; j < 16; ++j) {\n        w[j] =\n          (padded[i] << 24) |\n          (padded[i + 1] << 16) |\n          (padded[i + 2] << 8) |\n          padded[i + 3];\n        i += 4;\n      }\n\n      for (j = 16; j < 64; ++j) {\n        w[j] =\n          (littleSigmaPrime(w[j - 2]) +\n            w[j - 7] +\n            littleSigma(w[j - 15]) +\n            w[j - 16]) |\n          0;\n      }\n      let a = h0,\n        b = h1,\n        c = h2,\n        d = h3,\n        e = h4,\n        f = h5,\n        g = h6,\n        h = h7,\n        t1,\n        t2;\n      for (j = 0; j < 64; ++j) {\n        t1 = h + sigmaPrime(e) + ch(e, f, g) + k[j] + w[j];\n        t2 = sigma(a) + maj(a, b, c);\n        h = g;\n        g = f;\n        f = e;\n        e = (d + t1) | 0;\n        d = c;\n        c = b;\n        b = a;\n        a = (t1 + t2) | 0;\n      }\n      h0 = (h0 + a) | 0;\n      h1 = (h1 + b) | 0;\n      h2 = (h2 + c) | 0;\n      h3 = (h3 + d) | 0;\n      h4 = (h4 + e) | 0;\n      h5 = (h5 + f) | 0;\n      h6 = (h6 + g) | 0;\n      h7 = (h7 + h) | 0;\n    }\n    // prettier-ignore\n    return new Uint8Array([\n      (h0 >> 24) & 0xFF, (h0 >> 16) & 0xFF, (h0 >> 8) & 0xFF, (h0) & 0xFF,\n      (h1 >> 24) & 0xFF, (h1 >> 16) & 0xFF, (h1 >> 8) & 0xFF, (h1) & 0xFF,\n      (h2 >> 24) & 0xFF, (h2 >> 16) & 0xFF, (h2 >> 8) & 0xFF, (h2) & 0xFF,\n      (h3 >> 24) & 0xFF, (h3 >> 16) & 0xFF, (h3 >> 8) & 0xFF, (h3) & 0xFF,\n      (h4 >> 24) & 0xFF, (h4 >> 16) & 0xFF, (h4 >> 8) & 0xFF, (h4) & 0xFF,\n      (h5 >> 24) & 0xFF, (h5 >> 16) & 0xFF, (h5 >> 8) & 0xFF, (h5) & 0xFF,\n      (h6 >> 24) & 0xFF, (h6 >> 16) & 0xFF, (h6 >> 8) & 0xFF, (h6) & 0xFF,\n      (h7 >> 24) & 0xFF, (h7 >> 16) & 0xFF, (h7 >> 8) & 0xFF, (h7) & 0xFF\n    ]);\n  }\n\n  return hash;\n})();\n\nconst calculateSHA512 = (function calculateSHA512Closure() {\n  function ch(result, x, y, z, tmp) {\n    result.assign(x);\n    result.and(y);\n    tmp.assign(x);\n    tmp.not();\n    tmp.and(z);\n    result.xor(tmp);\n  }\n\n  function maj(result, x, y, z, tmp) {\n    result.assign(x);\n    result.and(y);\n    tmp.assign(x);\n    tmp.and(z);\n    result.xor(tmp);\n    tmp.assign(y);\n    tmp.and(z);\n    result.xor(tmp);\n  }\n\n  function sigma(result, x, tmp) {\n    result.assign(x);\n    result.rotateRight(28);\n    tmp.assign(x);\n    tmp.rotateRight(34);\n    result.xor(tmp);\n    tmp.assign(x);\n    tmp.rotateRight(39);\n    result.xor(tmp);\n  }\n\n  function sigmaPrime(result, x, tmp) {\n    result.assign(x);\n    result.rotateRight(14);\n    tmp.assign(x);\n    tmp.rotateRight(18);\n    result.xor(tmp);\n    tmp.assign(x);\n    tmp.rotateRight(41);\n    result.xor(tmp);\n  }\n\n  function littleSigma(result, x, tmp) {\n    result.assign(x);\n    result.rotateRight(1);\n    tmp.assign(x);\n    tmp.rotateRight(8);\n    result.xor(tmp);\n    tmp.assign(x);\n    tmp.shiftRight(7);\n    result.xor(tmp);\n  }\n\n  function littleSigmaPrime(result, x, tmp) {\n    result.assign(x);\n    result.rotateRight(19);\n    tmp.assign(x);\n    tmp.rotateRight(61);\n    result.xor(tmp);\n    tmp.assign(x);\n    tmp.shiftRight(6);\n    result.xor(tmp);\n  }\n\n  // prettier-ignore\n  const k = [\n    new Word64(0x428a2f98, 0xd728ae22), new Word64(0x71374491, 0x23ef65cd),\n    new Word64(0xb5c0fbcf, 0xec4d3b2f), new Word64(0xe9b5dba5, 0x8189dbbc),\n    new Word64(0x3956c25b, 0xf348b538), new Word64(0x59f111f1, 0xb605d019),\n    new Word64(0x923f82a4, 0xaf194f9b), new Word64(0xab1c5ed5, 0xda6d8118),\n    new Word64(0xd807aa98, 0xa3030242), new Word64(0x12835b01, 0x45706fbe),\n    new Word64(0x243185be, 0x4ee4b28c), new Word64(0x550c7dc3, 0xd5ffb4e2),\n    new Word64(0x72be5d74, 0xf27b896f), new Word64(0x80deb1fe, 0x3b1696b1),\n    new Word64(0x9bdc06a7, 0x25c71235), new Word64(0xc19bf174, 0xcf692694),\n    new Word64(0xe49b69c1, 0x9ef14ad2), new Word64(0xefbe4786, 0x384f25e3),\n    new Word64(0x0fc19dc6, 0x8b8cd5b5), new Word64(0x240ca1cc, 0x77ac9c65),\n    new Word64(0x2de92c6f, 0x592b0275), new Word64(0x4a7484aa, 0x6ea6e483),\n    new Word64(0x5cb0a9dc, 0xbd41fbd4), new Word64(0x76f988da, 0x831153b5),\n    new Word64(0x983e5152, 0xee66dfab), new Word64(0xa831c66d, 0x2db43210),\n    new Word64(0xb00327c8, 0x98fb213f), new Word64(0xbf597fc7, 0xbeef0ee4),\n    new Word64(0xc6e00bf3, 0x3da88fc2), new Word64(0xd5a79147, 0x930aa725),\n    new Word64(0x06ca6351, 0xe003826f), new Word64(0x14292967, 0x0a0e6e70),\n    new Word64(0x27b70a85, 0x46d22ffc), new Word64(0x2e1b2138, 0x5c26c926),\n    new Word64(0x4d2c6dfc, 0x5ac42aed), new Word64(0x53380d13, 0x9d95b3df),\n    new Word64(0x650a7354, 0x8baf63de), new Word64(0x766a0abb, 0x3c77b2a8),\n    new Word64(0x81c2c92e, 0x47edaee6), new Word64(0x92722c85, 0x1482353b),\n    new Word64(0xa2bfe8a1, 0x4cf10364), new Word64(0xa81a664b, 0xbc423001),\n    new Word64(0xc24b8b70, 0xd0f89791), new Word64(0xc76c51a3, 0x0654be30),\n    new Word64(0xd192e819, 0xd6ef5218), new Word64(0xd6990624, 0x5565a910),\n    new Word64(0xf40e3585, 0x5771202a), new Word64(0x106aa070, 0x32bbd1b8),\n    new Word64(0x19a4c116, 0xb8d2d0c8), new Word64(0x1e376c08, 0x5141ab53),\n    new Word64(0x2748774c, 0xdf8eeb99), new Word64(0x34b0bcb5, 0xe19b48a8),\n    new Word64(0x391c0cb3, 0xc5c95a63), new Word64(0x4ed8aa4a, 0xe3418acb),\n    new Word64(0x5b9cca4f, 0x7763e373), new Word64(0x682e6ff3, 0xd6b2b8a3),\n    new Word64(0x748f82ee, 0x5defb2fc), new Word64(0x78a5636f, 0x43172f60),\n    new Word64(0x84c87814, 0xa1f0ab72), new Word64(0x8cc70208, 0x1a6439ec),\n    new Word64(0x90befffa, 0x23631e28), new Word64(0xa4506ceb, 0xde82bde9),\n    new Word64(0xbef9a3f7, 0xb2c67915), new Word64(0xc67178f2, 0xe372532b),\n    new Word64(0xca273ece, 0xea26619c), new Word64(0xd186b8c7, 0x21c0c207),\n    new Word64(0xeada7dd6, 0xcde0eb1e), new Word64(0xf57d4f7f, 0xee6ed178),\n    new Word64(0x06f067aa, 0x72176fba), new Word64(0x0a637dc5, 0xa2c898a6),\n    new Word64(0x113f9804, 0xbef90dae), new Word64(0x1b710b35, 0x131c471b),\n    new Word64(0x28db77f5, 0x23047d84), new Word64(0x32caab7b, 0x40c72493),\n    new Word64(0x3c9ebe0a, 0x15c9bebc), new Word64(0x431d67c4, 0x9c100d4c),\n    new Word64(0x4cc5d4be, 0xcb3e42b6), new Word64(0x597f299c, 0xfc657e2a),\n    new Word64(0x5fcb6fab, 0x3ad6faec), new Word64(0x6c44198c, 0x4a475817)];\n\n  function hash(data, offset, length, mode384 = false) {\n    // initial hash values\n    let h0, h1, h2, h3, h4, h5, h6, h7;\n    if (!mode384) {\n      h0 = new Word64(0x6a09e667, 0xf3bcc908);\n      h1 = new Word64(0xbb67ae85, 0x84caa73b);\n      h2 = new Word64(0x3c6ef372, 0xfe94f82b);\n      h3 = new Word64(0xa54ff53a, 0x5f1d36f1);\n      h4 = new Word64(0x510e527f, 0xade682d1);\n      h5 = new Word64(0x9b05688c, 0x2b3e6c1f);\n      h6 = new Word64(0x1f83d9ab, 0xfb41bd6b);\n      h7 = new Word64(0x5be0cd19, 0x137e2179);\n    } else {\n      // SHA384 is exactly the same\n      // except with different starting values and a trimmed result\n      h0 = new Word64(0xcbbb9d5d, 0xc1059ed8);\n      h1 = new Word64(0x629a292a, 0x367cd507);\n      h2 = new Word64(0x9159015a, 0x3070dd17);\n      h3 = new Word64(0x152fecd8, 0xf70e5939);\n      h4 = new Word64(0x67332667, 0xffc00b31);\n      h5 = new Word64(0x8eb44a87, 0x68581511);\n      h6 = new Word64(0xdb0c2e0d, 0x64f98fa7);\n      h7 = new Word64(0x47b5481d, 0xbefa4fa4);\n    }\n\n    // pre-processing\n    const paddedLength = Math.ceil((length + 17) / 128) * 128;\n    const padded = new Uint8Array(paddedLength);\n    let i, j;\n    for (i = 0; i < length; ++i) {\n      padded[i] = data[offset++];\n    }\n    padded[i++] = 0x80;\n    const n = paddedLength - 16;\n    while (i < n) {\n      padded[i++] = 0;\n    }\n    padded[i++] = 0;\n    padded[i++] = 0;\n    padded[i++] = 0;\n    padded[i++] = 0;\n    padded[i++] = 0;\n    padded[i++] = 0;\n    padded[i++] = 0;\n    padded[i++] = 0;\n    padded[i++] = 0;\n    padded[i++] = 0;\n    padded[i++] = 0;\n    padded[i++] = (length >>> 29) & 0xff;\n    padded[i++] = (length >> 21) & 0xff;\n    padded[i++] = (length >> 13) & 0xff;\n    padded[i++] = (length >> 5) & 0xff;\n    padded[i++] = (length << 3) & 0xff;\n\n    const w = new Array(80);\n    for (i = 0; i < 80; i++) {\n      w[i] = new Word64(0, 0);\n    }\n    let a = new Word64(0, 0),\n      b = new Word64(0, 0),\n      c = new Word64(0, 0);\n    let d = new Word64(0, 0),\n      e = new Word64(0, 0),\n      f = new Word64(0, 0);\n    let g = new Word64(0, 0),\n      h = new Word64(0, 0);\n    const t1 = new Word64(0, 0),\n      t2 = new Word64(0, 0);\n    const tmp1 = new Word64(0, 0),\n      tmp2 = new Word64(0, 0);\n    let tmp3;\n\n    // for each 1024 bit block\n    for (i = 0; i < paddedLength; ) {\n      for (j = 0; j < 16; ++j) {\n        w[j].high =\n          (padded[i] << 24) |\n          (padded[i + 1] << 16) |\n          (padded[i + 2] << 8) |\n          padded[i + 3];\n        w[j].low =\n          (padded[i + 4] << 24) |\n          (padded[i + 5] << 16) |\n          (padded[i + 6] << 8) |\n          padded[i + 7];\n        i += 8;\n      }\n      for (j = 16; j < 80; ++j) {\n        tmp3 = w[j];\n        littleSigmaPrime(tmp3, w[j - 2], tmp2);\n        tmp3.add(w[j - 7]);\n        littleSigma(tmp1, w[j - 15], tmp2);\n        tmp3.add(tmp1);\n        tmp3.add(w[j - 16]);\n      }\n\n      a.assign(h0);\n      b.assign(h1);\n      c.assign(h2);\n      d.assign(h3);\n      e.assign(h4);\n      f.assign(h5);\n      g.assign(h6);\n      h.assign(h7);\n      for (j = 0; j < 80; ++j) {\n        t1.assign(h);\n        sigmaPrime(tmp1, e, tmp2);\n        t1.add(tmp1);\n        ch(tmp1, e, f, g, tmp2);\n        t1.add(tmp1);\n        t1.add(k[j]);\n        t1.add(w[j]);\n\n        sigma(t2, a, tmp2);\n        maj(tmp1, a, b, c, tmp2);\n        t2.add(tmp1);\n\n        tmp3 = h;\n        h = g;\n        g = f;\n        f = e;\n        d.add(t1);\n        e = d;\n        d = c;\n        c = b;\n        b = a;\n        tmp3.assign(t1);\n        tmp3.add(t2);\n        a = tmp3;\n      }\n      h0.add(a);\n      h1.add(b);\n      h2.add(c);\n      h3.add(d);\n      h4.add(e);\n      h5.add(f);\n      h6.add(g);\n      h7.add(h);\n    }\n\n    let result;\n    if (!mode384) {\n      result = new Uint8Array(64);\n      h0.copyTo(result, 0);\n      h1.copyTo(result, 8);\n      h2.copyTo(result, 16);\n      h3.copyTo(result, 24);\n      h4.copyTo(result, 32);\n      h5.copyTo(result, 40);\n      h6.copyTo(result, 48);\n      h7.copyTo(result, 56);\n    } else {\n      result = new Uint8Array(48);\n      h0.copyTo(result, 0);\n      h1.copyTo(result, 8);\n      h2.copyTo(result, 16);\n      h3.copyTo(result, 24);\n      h4.copyTo(result, 32);\n      h5.copyTo(result, 40);\n    }\n    return result;\n  }\n\n  return hash;\n})();\n\nfunction calculateSHA384(data, offset, length) {\n  return calculateSHA512(data, offset, length, /* mode384 = */ true);\n}\n\nclass NullCipher {\n  decryptBlock(data) {\n    return data;\n  }\n\n  encrypt(data) {\n    return data;\n  }\n}\n\nclass AESBaseCipher {\n  constructor() {\n    if (this.constructor === AESBaseCipher) {\n      unreachable(\"Cannot initialize AESBaseCipher.\");\n    }\n\n    this._s = new Uint8Array([\n      0x63, 0x7c, 0x77, 0x7b, 0xf2, 0x6b, 0x6f, 0xc5, 0x30, 0x01, 0x67, 0x2b,\n      0xfe, 0xd7, 0xab, 0x76, 0xca, 0x82, 0xc9, 0x7d, 0xfa, 0x59, 0x47, 0xf0,\n      0xad, 0xd4, 0xa2, 0xaf, 0x9c, 0xa4, 0x72, 0xc0, 0xb7, 0xfd, 0x93, 0x26,\n      0x36, 0x3f, 0xf7, 0xcc, 0x34, 0xa5, 0xe5, 0xf1, 0x71, 0xd8, 0x31, 0x15,\n      0x04, 0xc7, 0x23, 0xc3, 0x18, 0x96, 0x05, 0x9a, 0x07, 0x12, 0x80, 0xe2,\n      0xeb, 0x27, 0xb2, 0x75, 0x09, 0x83, 0x2c, 0x1a, 0x1b, 0x6e, 0x5a, 0xa0,\n      0x52, 0x3b, 0xd6, 0xb3, 0x29, 0xe3, 0x2f, 0x84, 0x53, 0xd1, 0x00, 0xed,\n      0x20, 0xfc, 0xb1, 0x5b, 0x6a, 0xcb, 0xbe, 0x39, 0x4a, 0x4c, 0x58, 0xcf,\n      0xd0, 0xef, 0xaa, 0xfb, 0x43, 0x4d, 0x33, 0x85, 0x45, 0xf9, 0x02, 0x7f,\n      0x50, 0x3c, 0x9f, 0xa8, 0x51, 0xa3, 0x40, 0x8f, 0x92, 0x9d, 0x38, 0xf5,\n      0xbc, 0xb6, 0xda, 0x21, 0x10, 0xff, 0xf3, 0xd2, 0xcd, 0x0c, 0x13, 0xec,\n      0x5f, 0x97, 0x44, 0x17, 0xc4, 0xa7, 0x7e, 0x3d, 0x64, 0x5d, 0x19, 0x73,\n      0x60, 0x81, 0x4f, 0xdc, 0x22, 0x2a, 0x90, 0x88, 0x46, 0xee, 0xb8, 0x14,\n      0xde, 0x5e, 0x0b, 0xdb, 0xe0, 0x32, 0x3a, 0x0a, 0x49, 0x06, 0x24, 0x5c,\n      0xc2, 0xd3, 0xac, 0x62, 0x91, 0x95, 0xe4, 0x79, 0xe7, 0xc8, 0x37, 0x6d,\n      0x8d, 0xd5, 0x4e, 0xa9, 0x6c, 0x56, 0xf4, 0xea, 0x65, 0x7a, 0xae, 0x08,\n      0xba, 0x78, 0x25, 0x2e, 0x1c, 0xa6, 0xb4, 0xc6, 0xe8, 0xdd, 0x74, 0x1f,\n      0x4b, 0xbd, 0x8b, 0x8a, 0x70, 0x3e, 0xb5, 0x66, 0x48, 0x03, 0xf6, 0x0e,\n      0x61, 0x35, 0x57, 0xb9, 0x86, 0xc1, 0x1d, 0x9e, 0xe1, 0xf8, 0x98, 0x11,\n      0x69, 0xd9, 0x8e, 0x94, 0x9b, 0x1e, 0x87, 0xe9, 0xce, 0x55, 0x28, 0xdf,\n      0x8c, 0xa1, 0x89, 0x0d, 0xbf, 0xe6, 0x42, 0x68, 0x41, 0x99, 0x2d, 0x0f,\n      0xb0, 0x54, 0xbb, 0x16,\n    ]);\n\n    this._inv_s = new Uint8Array([\n      0x52, 0x09, 0x6a, 0xd5, 0x30, 0x36, 0xa5, 0x38, 0xbf, 0x40, 0xa3, 0x9e,\n      0x81, 0xf3, 0xd7, 0xfb, 0x7c, 0xe3, 0x39, 0x82, 0x9b, 0x2f, 0xff, 0x87,\n      0x34, 0x8e, 0x43, 0x44, 0xc4, 0xde, 0xe9, 0xcb, 0x54, 0x7b, 0x94, 0x32,\n      0xa6, 0xc2, 0x23, 0x3d, 0xee, 0x4c, 0x95, 0x0b, 0x42, 0xfa, 0xc3, 0x4e,\n      0x08, 0x2e, 0xa1, 0x66, 0x28, 0xd9, 0x24, 0xb2, 0x76, 0x5b, 0xa2, 0x49,\n      0x6d, 0x8b, 0xd1, 0x25, 0x72, 0xf8, 0xf6, 0x64, 0x86, 0x68, 0x98, 0x16,\n      0xd4, 0xa4, 0x5c, 0xcc, 0x5d, 0x65, 0xb6, 0x92, 0x6c, 0x70, 0x48, 0x50,\n      0xfd, 0xed, 0xb9, 0xda, 0x5e, 0x15, 0x46, 0x57, 0xa7, 0x8d, 0x9d, 0x84,\n      0x90, 0xd8, 0xab, 0x00, 0x8c, 0xbc, 0xd3, 0x0a, 0xf7, 0xe4, 0x58, 0x05,\n      0xb8, 0xb3, 0x45, 0x06, 0xd0, 0x2c, 0x1e, 0x8f, 0xca, 0x3f, 0x0f, 0x02,\n      0xc1, 0xaf, 0xbd, 0x03, 0x01, 0x13, 0x8a, 0x6b, 0x3a, 0x91, 0x11, 0x41,\n      0x4f, 0x67, 0xdc, 0xea, 0x97, 0xf2, 0xcf, 0xce, 0xf0, 0xb4, 0xe6, 0x73,\n      0x96, 0xac, 0x74, 0x22, 0xe7, 0xad, 0x35, 0x85, 0xe2, 0xf9, 0x37, 0xe8,\n      0x1c, 0x75, 0xdf, 0x6e, 0x47, 0xf1, 0x1a, 0x71, 0x1d, 0x29, 0xc5, 0x89,\n      0x6f, 0xb7, 0x62, 0x0e, 0xaa, 0x18, 0xbe, 0x1b, 0xfc, 0x56, 0x3e, 0x4b,\n      0xc6, 0xd2, 0x79, 0x20, 0x9a, 0xdb, 0xc0, 0xfe, 0x78, 0xcd, 0x5a, 0xf4,\n      0x1f, 0xdd, 0xa8, 0x33, 0x88, 0x07, 0xc7, 0x31, 0xb1, 0x12, 0x10, 0x59,\n      0x27, 0x80, 0xec, 0x5f, 0x60, 0x51, 0x7f, 0xa9, 0x19, 0xb5, 0x4a, 0x0d,\n      0x2d, 0xe5, 0x7a, 0x9f, 0x93, 0xc9, 0x9c, 0xef, 0xa0, 0xe0, 0x3b, 0x4d,\n      0xae, 0x2a, 0xf5, 0xb0, 0xc8, 0xeb, 0xbb, 0x3c, 0x83, 0x53, 0x99, 0x61,\n      0x17, 0x2b, 0x04, 0x7e, 0xba, 0x77, 0xd6, 0x26, 0xe1, 0x69, 0x14, 0x63,\n      0x55, 0x21, 0x0c, 0x7d,\n    ]);\n\n    this._mix = new Uint32Array([\n      0x00000000, 0x0e090d0b, 0x1c121a16, 0x121b171d, 0x3824342c, 0x362d3927,\n      0x24362e3a, 0x2a3f2331, 0x70486858, 0x7e416553, 0x6c5a724e, 0x62537f45,\n      0x486c5c74, 0x4665517f, 0x547e4662, 0x5a774b69, 0xe090d0b0, 0xee99ddbb,\n      0xfc82caa6, 0xf28bc7ad, 0xd8b4e49c, 0xd6bde997, 0xc4a6fe8a, 0xcaaff381,\n      0x90d8b8e8, 0x9ed1b5e3, 0x8ccaa2fe, 0x82c3aff5, 0xa8fc8cc4, 0xa6f581cf,\n      0xb4ee96d2, 0xbae79bd9, 0xdb3bbb7b, 0xd532b670, 0xc729a16d, 0xc920ac66,\n      0xe31f8f57, 0xed16825c, 0xff0d9541, 0xf104984a, 0xab73d323, 0xa57ade28,\n      0xb761c935, 0xb968c43e, 0x9357e70f, 0x9d5eea04, 0x8f45fd19, 0x814cf012,\n      0x3bab6bcb, 0x35a266c0, 0x27b971dd, 0x29b07cd6, 0x038f5fe7, 0x0d8652ec,\n      0x1f9d45f1, 0x119448fa, 0x4be30393, 0x45ea0e98, 0x57f11985, 0x59f8148e,\n      0x73c737bf, 0x7dce3ab4, 0x6fd52da9, 0x61dc20a2, 0xad766df6, 0xa37f60fd,\n      0xb16477e0, 0xbf6d7aeb, 0x955259da, 0x9b5b54d1, 0x894043cc, 0x87494ec7,\n      0xdd3e05ae, 0xd33708a5, 0xc12c1fb8, 0xcf2512b3, 0xe51a3182, 0xeb133c89,\n      0xf9082b94, 0xf701269f, 0x4de6bd46, 0x43efb04d, 0x51f4a750, 0x5ffdaa5b,\n      0x75c2896a, 0x7bcb8461, 0x69d0937c, 0x67d99e77, 0x3daed51e, 0x33a7d815,\n      0x21bccf08, 0x2fb5c203, 0x058ae132, 0x0b83ec39, 0x1998fb24, 0x1791f62f,\n      0x764dd68d, 0x7844db86, 0x6a5fcc9b, 0x6456c190, 0x4e69e2a1, 0x4060efaa,\n      0x527bf8b7, 0x5c72f5bc, 0x0605bed5, 0x080cb3de, 0x1a17a4c3, 0x141ea9c8,\n      0x3e218af9, 0x302887f2, 0x223390ef, 0x2c3a9de4, 0x96dd063d, 0x98d40b36,\n      0x8acf1c2b, 0x84c61120, 0xaef93211, 0xa0f03f1a, 0xb2eb2807, 0xbce2250c,\n      0xe6956e65, 0xe89c636e, 0xfa877473, 0xf48e7978, 0xdeb15a49, 0xd0b85742,\n      0xc2a3405f, 0xccaa4d54, 0x41ecdaf7, 0x4fe5d7fc, 0x5dfec0e1, 0x53f7cdea,\n      0x79c8eedb, 0x77c1e3d0, 0x65daf4cd, 0x6bd3f9c6, 0x31a4b2af, 0x3fadbfa4,\n      0x2db6a8b9, 0x23bfa5b2, 0x09808683, 0x07898b88, 0x15929c95, 0x1b9b919e,\n      0xa17c0a47, 0xaf75074c, 0xbd6e1051, 0xb3671d5a, 0x99583e6b, 0x97513360,\n      0x854a247d, 0x8b432976, 0xd134621f, 0xdf3d6f14, 0xcd267809, 0xc32f7502,\n      0xe9105633, 0xe7195b38, 0xf5024c25, 0xfb0b412e, 0x9ad7618c, 0x94de6c87,\n      0x86c57b9a, 0x88cc7691, 0xa2f355a0, 0xacfa58ab, 0xbee14fb6, 0xb0e842bd,\n      0xea9f09d4, 0xe49604df, 0xf68d13c2, 0xf8841ec9, 0xd2bb3df8, 0xdcb230f3,\n      0xcea927ee, 0xc0a02ae5, 0x7a47b13c, 0x744ebc37, 0x6655ab2a, 0x685ca621,\n      0x42638510, 0x4c6a881b, 0x5e719f06, 0x5078920d, 0x0a0fd964, 0x0406d46f,\n      0x161dc372, 0x1814ce79, 0x322bed48, 0x3c22e043, 0x2e39f75e, 0x2030fa55,\n      0xec9ab701, 0xe293ba0a, 0xf088ad17, 0xfe81a01c, 0xd4be832d, 0xdab78e26,\n      0xc8ac993b, 0xc6a59430, 0x9cd2df59, 0x92dbd252, 0x80c0c54f, 0x8ec9c844,\n      0xa4f6eb75, 0xaaffe67e, 0xb8e4f163, 0xb6edfc68, 0x0c0a67b1, 0x02036aba,\n      0x10187da7, 0x1e1170ac, 0x342e539d, 0x3a275e96, 0x283c498b, 0x26354480,\n      0x7c420fe9, 0x724b02e2, 0x605015ff, 0x6e5918f4, 0x44663bc5, 0x4a6f36ce,\n      0x587421d3, 0x567d2cd8, 0x37a10c7a, 0x39a80171, 0x2bb3166c, 0x25ba1b67,\n      0x0f853856, 0x018c355d, 0x13972240, 0x1d9e2f4b, 0x47e96422, 0x49e06929,\n      0x5bfb7e34, 0x55f2733f, 0x7fcd500e, 0x71c45d05, 0x63df4a18, 0x6dd64713,\n      0xd731dcca, 0xd938d1c1, 0xcb23c6dc, 0xc52acbd7, 0xef15e8e6, 0xe11ce5ed,\n      0xf307f2f0, 0xfd0efffb, 0xa779b492, 0xa970b999, 0xbb6bae84, 0xb562a38f,\n      0x9f5d80be, 0x91548db5, 0x834f9aa8, 0x8d4697a3,\n    ]);\n\n    this._mixCol = new Uint8Array(256);\n    for (let i = 0; i < 256; i++) {\n      if (i < 128) {\n        this._mixCol[i] = i << 1;\n      } else {\n        this._mixCol[i] = (i << 1) ^ 0x1b;\n      }\n    }\n\n    this.buffer = new Uint8Array(16);\n    this.bufferPosition = 0;\n  }\n\n  _expandKey(cipherKey) {\n    unreachable(\"Cannot call `_expandKey` on the base class\");\n  }\n\n  _decrypt(input, key) {\n    let t, u, v;\n    const state = new Uint8Array(16);\n    state.set(input);\n\n    // AddRoundKey\n    for (let j = 0, k = this._keySize; j < 16; ++j, ++k) {\n      state[j] ^= key[k];\n    }\n    for (let i = this._cyclesOfRepetition - 1; i >= 1; --i) {\n      // InvShiftRows\n      t = state[13];\n      state[13] = state[9];\n      state[9] = state[5];\n      state[5] = state[1];\n      state[1] = t;\n      t = state[14];\n      u = state[10];\n      state[14] = state[6];\n      state[10] = state[2];\n      state[6] = t;\n      state[2] = u;\n      t = state[15];\n      u = state[11];\n      v = state[7];\n      state[15] = state[3];\n      state[11] = t;\n      state[7] = u;\n      state[3] = v;\n      // InvSubBytes\n      for (let j = 0; j < 16; ++j) {\n        state[j] = this._inv_s[state[j]];\n      }\n      // AddRoundKey\n      for (let j = 0, k = i * 16; j < 16; ++j, ++k) {\n        state[j] ^= key[k];\n      }\n      // InvMixColumns\n      for (let j = 0; j < 16; j += 4) {\n        const s0 = this._mix[state[j]];\n        const s1 = this._mix[state[j + 1]];\n        const s2 = this._mix[state[j + 2]];\n        const s3 = this._mix[state[j + 3]];\n        t =\n          s0 ^\n          (s1 >>> 8) ^\n          (s1 << 24) ^\n          (s2 >>> 16) ^\n          (s2 << 16) ^\n          (s3 >>> 24) ^\n          (s3 << 8);\n        state[j] = (t >>> 24) & 0xff;\n        state[j + 1] = (t >> 16) & 0xff;\n        state[j + 2] = (t >> 8) & 0xff;\n        state[j + 3] = t & 0xff;\n      }\n    }\n    // InvShiftRows\n    t = state[13];\n    state[13] = state[9];\n    state[9] = state[5];\n    state[5] = state[1];\n    state[1] = t;\n    t = state[14];\n    u = state[10];\n    state[14] = state[6];\n    state[10] = state[2];\n    state[6] = t;\n    state[2] = u;\n    t = state[15];\n    u = state[11];\n    v = state[7];\n    state[15] = state[3];\n    state[11] = t;\n    state[7] = u;\n    state[3] = v;\n    for (let j = 0; j < 16; ++j) {\n      // InvSubBytes\n      state[j] = this._inv_s[state[j]];\n      // AddRoundKey\n      state[j] ^= key[j];\n    }\n    return state;\n  }\n\n  _encrypt(input, key) {\n    const s = this._s;\n\n    let t, u, v;\n    const state = new Uint8Array(16);\n    state.set(input);\n\n    for (let j = 0; j < 16; ++j) {\n      // AddRoundKey\n      state[j] ^= key[j];\n    }\n\n    for (let i = 1; i < this._cyclesOfRepetition; i++) {\n      // SubBytes\n      for (let j = 0; j < 16; ++j) {\n        state[j] = s[state[j]];\n      }\n      // ShiftRows\n      v = state[1];\n      state[1] = state[5];\n      state[5] = state[9];\n      state[9] = state[13];\n      state[13] = v;\n      v = state[2];\n      u = state[6];\n      state[2] = state[10];\n      state[6] = state[14];\n      state[10] = v;\n      state[14] = u;\n      v = state[3];\n      u = state[7];\n      t = state[11];\n      state[3] = state[15];\n      state[7] = v;\n      state[11] = u;\n      state[15] = t;\n      // MixColumns\n      for (let j = 0; j < 16; j += 4) {\n        const s0 = state[j + 0];\n        const s1 = state[j + 1];\n        const s2 = state[j + 2];\n        const s3 = state[j + 3];\n        t = s0 ^ s1 ^ s2 ^ s3;\n        state[j + 0] ^= t ^ this._mixCol[s0 ^ s1];\n        state[j + 1] ^= t ^ this._mixCol[s1 ^ s2];\n        state[j + 2] ^= t ^ this._mixCol[s2 ^ s3];\n        state[j + 3] ^= t ^ this._mixCol[s3 ^ s0];\n      }\n      // AddRoundKey\n      for (let j = 0, k = i * 16; j < 16; ++j, ++k) {\n        state[j] ^= key[k];\n      }\n    }\n\n    // SubBytes\n    for (let j = 0; j < 16; ++j) {\n      state[j] = s[state[j]];\n    }\n    // ShiftRows\n    v = state[1];\n    state[1] = state[5];\n    state[5] = state[9];\n    state[9] = state[13];\n    state[13] = v;\n    v = state[2];\n    u = state[6];\n    state[2] = state[10];\n    state[6] = state[14];\n    state[10] = v;\n    state[14] = u;\n    v = state[3];\n    u = state[7];\n    t = state[11];\n    state[3] = state[15];\n    state[7] = v;\n    state[11] = u;\n    state[15] = t;\n    // AddRoundKey\n    for (let j = 0, k = this._keySize; j < 16; ++j, ++k) {\n      state[j] ^= key[k];\n    }\n    return state;\n  }\n\n  _decryptBlock2(data, finalize) {\n    const sourceLength = data.length;\n    let buffer = this.buffer,\n      bufferLength = this.bufferPosition;\n    const result = [];\n    let iv = this.iv;\n\n    for (let i = 0; i < sourceLength; ++i) {\n      buffer[bufferLength] = data[i];\n      ++bufferLength;\n      if (bufferLength < 16) {\n        continue;\n      }\n      // buffer is full, decrypting\n      const plain = this._decrypt(buffer, this._key);\n      // xor-ing the IV vector to get plain text\n      for (let j = 0; j < 16; ++j) {\n        plain[j] ^= iv[j];\n      }\n      iv = buffer;\n      result.push(plain);\n      buffer = new Uint8Array(16);\n      bufferLength = 0;\n    }\n    // saving incomplete buffer\n    this.buffer = buffer;\n    this.bufferLength = bufferLength;\n    this.iv = iv;\n    if (result.length === 0) {\n      return new Uint8Array(0);\n    }\n    // combining plain text blocks into one\n    let outputLength = 16 * result.length;\n    if (finalize) {\n      // undo a padding that is described in RFC 2898\n      const lastBlock = result[result.length - 1];\n      let psLen = lastBlock[15];\n      if (psLen <= 16) {\n        for (let i = 15, ii = 16 - psLen; i >= ii; --i) {\n          if (lastBlock[i] !== psLen) {\n            // Invalid padding, assume that the block has no padding.\n            psLen = 0;\n            break;\n          }\n        }\n        outputLength -= psLen;\n        result[result.length - 1] = lastBlock.subarray(0, 16 - psLen);\n      }\n    }\n    const output = new Uint8Array(outputLength);\n    for (let i = 0, j = 0, ii = result.length; i < ii; ++i, j += 16) {\n      output.set(result[i], j);\n    }\n    return output;\n  }\n\n  decryptBlock(data, finalize, iv = null) {\n    const sourceLength = data.length;\n    const buffer = this.buffer;\n    let bufferLength = this.bufferPosition;\n    // If an IV is not supplied, wait for IV values. They are at the start\n    // of the stream.\n    if (iv) {\n      this.iv = iv;\n    } else {\n      for (\n        let i = 0;\n        bufferLength < 16 && i < sourceLength;\n        ++i, ++bufferLength\n      ) {\n        buffer[bufferLength] = data[i];\n      }\n      if (bufferLength < 16) {\n        // Need more data.\n        this.bufferLength = bufferLength;\n        return new Uint8Array(0);\n      }\n      this.iv = buffer;\n      data = data.subarray(16);\n    }\n    this.buffer = new Uint8Array(16);\n    this.bufferLength = 0;\n    // starting decryption\n    this.decryptBlock = this._decryptBlock2;\n    return this.decryptBlock(data, finalize);\n  }\n\n  encrypt(data, iv) {\n    const sourceLength = data.length;\n    let buffer = this.buffer,\n      bufferLength = this.bufferPosition;\n    const result = [];\n\n    if (!iv) {\n      iv = new Uint8Array(16);\n    }\n    for (let i = 0; i < sourceLength; ++i) {\n      buffer[bufferLength] = data[i];\n      ++bufferLength;\n      if (bufferLength < 16) {\n        continue;\n      }\n\n      for (let j = 0; j < 16; ++j) {\n        buffer[j] ^= iv[j];\n      }\n\n      // buffer is full, encrypting\n      const cipher = this._encrypt(buffer, this._key);\n      iv = cipher;\n      result.push(cipher);\n      buffer = new Uint8Array(16);\n      bufferLength = 0;\n    }\n    // saving incomplete buffer\n    this.buffer = buffer;\n    this.bufferLength = bufferLength;\n    this.iv = iv;\n    if (result.length === 0) {\n      return new Uint8Array(0);\n    }\n    // combining plain text blocks into one\n    const outputLength = 16 * result.length;\n    const output = new Uint8Array(outputLength);\n    for (let i = 0, j = 0, ii = result.length; i < ii; ++i, j += 16) {\n      output.set(result[i], j);\n    }\n    return output;\n  }\n}\n\nclass AES128Cipher extends AESBaseCipher {\n  constructor(key) {\n    super();\n\n    this._cyclesOfRepetition = 10;\n    this._keySize = 160; // bits\n\n    this._rcon = new Uint8Array([\n      0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c,\n      0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a,\n      0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd,\n      0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a,\n      0x74, 0xe8, 0xcb, 0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80,\n      0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6,\n      0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72,\n      0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc,\n      0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb, 0x8d, 0x01, 0x02, 0x04, 0x08, 0x10,\n      0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e,\n      0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5,\n      0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94,\n      0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb, 0x8d, 0x01, 0x02,\n      0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d,\n      0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d,\n      0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f,\n      0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb,\n      0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c,\n      0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a,\n      0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd,\n      0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a,\n      0x74, 0xe8, 0xcb, 0x8d,\n    ]);\n\n    this._key = this._expandKey(key);\n  }\n\n  _expandKey(cipherKey) {\n    const b = 176;\n    const s = this._s;\n    const rcon = this._rcon;\n\n    const result = new Uint8Array(b);\n    result.set(cipherKey);\n\n    for (let j = 16, i = 1; j < b; ++i) {\n      // RotWord\n      let t1 = result[j - 3];\n      let t2 = result[j - 2];\n      let t3 = result[j - 1];\n      let t4 = result[j - 4];\n      // SubWord\n      t1 = s[t1];\n      t2 = s[t2];\n      t3 = s[t3];\n      t4 = s[t4];\n      // Rcon\n      t1 ^= rcon[i];\n      for (let n = 0; n < 4; ++n) {\n        result[j] = t1 ^= result[j - 16];\n        j++;\n        result[j] = t2 ^= result[j - 16];\n        j++;\n        result[j] = t3 ^= result[j - 16];\n        j++;\n        result[j] = t4 ^= result[j - 16];\n        j++;\n      }\n    }\n    return result;\n  }\n}\n\nclass AES256Cipher extends AESBaseCipher {\n  constructor(key) {\n    super();\n\n    this._cyclesOfRepetition = 14;\n    this._keySize = 224; // bits\n\n    this._key = this._expandKey(key);\n  }\n\n  _expandKey(cipherKey) {\n    const b = 240;\n    const s = this._s;\n\n    const result = new Uint8Array(b);\n    result.set(cipherKey);\n\n    let r = 1;\n    let t1, t2, t3, t4;\n    for (let j = 32, i = 1; j < b; ++i) {\n      if (j % 32 === 16) {\n        t1 = s[t1];\n        t2 = s[t2];\n        t3 = s[t3];\n        t4 = s[t4];\n      } else if (j % 32 === 0) {\n        // RotWord\n        t1 = result[j - 3];\n        t2 = result[j - 2];\n        t3 = result[j - 1];\n        t4 = result[j - 4];\n        // SubWord\n        t1 = s[t1];\n        t2 = s[t2];\n        t3 = s[t3];\n        t4 = s[t4];\n        // Rcon\n        t1 ^= r;\n        if ((r <<= 1) >= 256) {\n          r = (r ^ 0x1b) & 0xff;\n        }\n      }\n\n      for (let n = 0; n < 4; ++n) {\n        result[j] = t1 ^= result[j - 32];\n        j++;\n        result[j] = t2 ^= result[j - 32];\n        j++;\n        result[j] = t3 ^= result[j - 32];\n        j++;\n        result[j] = t4 ^= result[j - 32];\n        j++;\n      }\n    }\n    return result;\n  }\n}\n\nclass PDF17 {\n  checkOwnerPassword(password, ownerValidationSalt, userBytes, ownerPassword) {\n    const hashData = new Uint8Array(password.length + 56);\n    hashData.set(password, 0);\n    hashData.set(ownerValidationSalt, password.length);\n    hashData.set(userBytes, password.length + ownerValidationSalt.length);\n    const result = calculateSHA256(hashData, 0, hashData.length);\n    return isArrayEqual(result, ownerPassword);\n  }\n\n  checkUserPassword(password, userValidationSalt, userPassword) {\n    const hashData = new Uint8Array(password.length + 8);\n    hashData.set(password, 0);\n    hashData.set(userValidationSalt, password.length);\n    const result = calculateSHA256(hashData, 0, hashData.length);\n    return isArrayEqual(result, userPassword);\n  }\n\n  getOwnerKey(password, ownerKeySalt, userBytes, ownerEncryption) {\n    const hashData = new Uint8Array(password.length + 56);\n    hashData.set(password, 0);\n    hashData.set(ownerKeySalt, password.length);\n    hashData.set(userBytes, password.length + ownerKeySalt.length);\n    const key = calculateSHA256(hashData, 0, hashData.length);\n    const cipher = new AES256Cipher(key);\n    return cipher.decryptBlock(ownerEncryption, false, new Uint8Array(16));\n  }\n\n  getUserKey(password, userKeySalt, userEncryption) {\n    const hashData = new Uint8Array(password.length + 8);\n    hashData.set(password, 0);\n    hashData.set(userKeySalt, password.length);\n    // `key` is the decryption key for the UE string.\n    const key = calculateSHA256(hashData, 0, hashData.length);\n    const cipher = new AES256Cipher(key);\n    return cipher.decryptBlock(userEncryption, false, new Uint8Array(16));\n  }\n}\n\nconst PDF20 = (function PDF20Closure() {\n  function calculatePDF20Hash(password, input, userBytes) {\n    // This refers to Algorithm 2.B as defined in ISO 32000-2.\n    let k = calculateSHA256(input, 0, input.length).subarray(0, 32);\n    let e = [0];\n    let i = 0;\n    while (i < 64 || e[e.length - 1] > i - 32) {\n      const combinedLength = password.length + k.length + userBytes.length,\n        combinedArray = new Uint8Array(combinedLength);\n      let writeOffset = 0;\n      combinedArray.set(password, writeOffset);\n      writeOffset += password.length;\n      combinedArray.set(k, writeOffset);\n      writeOffset += k.length;\n      combinedArray.set(userBytes, writeOffset);\n\n      const k1 = new Uint8Array(combinedLength * 64);\n      for (let j = 0, pos = 0; j < 64; j++, pos += combinedLength) {\n        k1.set(combinedArray, pos);\n      }\n      // AES128 CBC NO PADDING with first 16 bytes of k as the key\n      // and the second 16 as the iv.\n      const cipher = new AES128Cipher(k.subarray(0, 16));\n      e = cipher.encrypt(k1, k.subarray(16, 32));\n      // Now we have to take the first 16 bytes of an unsigned big endian\n      // integer and compute the remainder modulo 3. That is a fairly large\n      // number and JavaScript isn't going to handle that well, so we're using\n      // a trick that allows us to perform modulo math byte by byte.\n      let remainder = 0;\n      for (let z = 0; z < 16; z++) {\n        remainder *= 256 % 3;\n        remainder %= 3;\n        remainder += (e[z] >>> 0) % 3;\n        remainder %= 3;\n      }\n      if (remainder === 0) {\n        k = calculateSHA256(e, 0, e.length);\n      } else if (remainder === 1) {\n        k = calculateSHA384(e, 0, e.length);\n      } else if (remainder === 2) {\n        k = calculateSHA512(e, 0, e.length);\n      }\n      i++;\n    }\n    return k.subarray(0, 32);\n  }\n\n  // eslint-disable-next-line no-shadow\n  class PDF20 {\n    hash(password, concatBytes, userBytes) {\n      return calculatePDF20Hash(password, concatBytes, userBytes);\n    }\n\n    checkOwnerPassword(\n      password,\n      ownerValidationSalt,\n      userBytes,\n      ownerPassword\n    ) {\n      const hashData = new Uint8Array(password.length + 56);\n      hashData.set(password, 0);\n      hashData.set(ownerValidationSalt, password.length);\n      hashData.set(userBytes, password.length + ownerValidationSalt.length);\n      const result = calculatePDF20Hash(password, hashData, userBytes);\n      return isArrayEqual(result, ownerPassword);\n    }\n\n    checkUserPassword(password, userValidationSalt, userPassword) {\n      const hashData = new Uint8Array(password.length + 8);\n      hashData.set(password, 0);\n      hashData.set(userValidationSalt, password.length);\n      const result = calculatePDF20Hash(password, hashData, []);\n      return isArrayEqual(result, userPassword);\n    }\n\n    getOwnerKey(password, ownerKeySalt, userBytes, ownerEncryption) {\n      const hashData = new Uint8Array(password.length + 56);\n      hashData.set(password, 0);\n      hashData.set(ownerKeySalt, password.length);\n      hashData.set(userBytes, password.length + ownerKeySalt.length);\n      const key = calculatePDF20Hash(password, hashData, userBytes);\n      const cipher = new AES256Cipher(key);\n      return cipher.decryptBlock(ownerEncryption, false, new Uint8Array(16));\n    }\n\n    getUserKey(password, userKeySalt, userEncryption) {\n      const hashData = new Uint8Array(password.length + 8);\n      hashData.set(password, 0);\n      hashData.set(userKeySalt, password.length);\n      // `key` is the decryption key for the UE string.\n      const key = calculatePDF20Hash(password, hashData, []);\n      const cipher = new AES256Cipher(key);\n      return cipher.decryptBlock(userEncryption, false, new Uint8Array(16));\n    }\n  }\n\n  return PDF20;\n})();\n\nclass CipherTransform {\n  constructor(stringCipherConstructor, streamCipherConstructor) {\n    this.StringCipherConstructor = stringCipherConstructor;\n    this.StreamCipherConstructor = streamCipherConstructor;\n  }\n\n  createStream(stream, length) {\n    const cipher = new this.StreamCipherConstructor();\n    return new DecryptStream(\n      stream,\n      length,\n      function cipherTransformDecryptStream(data, finalize) {\n        return cipher.decryptBlock(data, finalize);\n      }\n    );\n  }\n\n  decryptString(s) {\n    const cipher = new this.StringCipherConstructor();\n    let data = stringToBytes(s);\n    data = cipher.decryptBlock(data, true);\n    return bytesToString(data);\n  }\n\n  encryptString(s) {\n    const cipher = new this.StringCipherConstructor();\n    if (cipher instanceof AESBaseCipher) {\n      // Append some chars equal to \"16 - (M mod 16)\"\n      // where M is the string length (see section 7.6.2 in PDF specification)\n      // to have a final string where the length is a multiple of 16.\n      // Special note:\n      //   \"Note that the pad is present when M is evenly divisible by 16;\n      //   it contains 16 bytes of 0x10.\"\n      const strLen = s.length;\n      const pad = 16 - (strLen % 16);\n      s += String.fromCharCode(pad).repeat(pad);\n\n      // Generate an initialization vector\n      const iv = new Uint8Array(16);\n      if (typeof crypto !== \"undefined\") {\n        crypto.getRandomValues(iv);\n      } else {\n        for (let i = 0; i < 16; i++) {\n          iv[i] = Math.floor(256 * Math.random());\n        }\n      }\n\n      let data = stringToBytes(s);\n      data = cipher.encrypt(data, iv);\n\n      const buf = new Uint8Array(16 + data.length);\n      buf.set(iv);\n      buf.set(data, 16);\n\n      return bytesToString(buf);\n    }\n\n    let data = stringToBytes(s);\n    data = cipher.encrypt(data);\n    return bytesToString(data);\n  }\n}\n\nconst CipherTransformFactory = (function CipherTransformFactoryClosure() {\n  const defaultPasswordBytes = new Uint8Array([\n    0x28, 0xbf, 0x4e, 0x5e, 0x4e, 0x75, 0x8a, 0x41, 0x64, 0x00, 0x4e, 0x56,\n    0xff, 0xfa, 0x01, 0x08, 0x2e, 0x2e, 0x00, 0xb6, 0xd0, 0x68, 0x3e, 0x80,\n    0x2f, 0x0c, 0xa9, 0xfe, 0x64, 0x53, 0x69, 0x7a,\n  ]);\n\n  function createEncryptionKey20(\n    revision,\n    password,\n    ownerPassword,\n    ownerValidationSalt,\n    ownerKeySalt,\n    uBytes,\n    userPassword,\n    userValidationSalt,\n    userKeySalt,\n    ownerEncryption,\n    userEncryption,\n    perms\n  ) {\n    if (password) {\n      const passwordLength = Math.min(127, password.length);\n      password = password.subarray(0, passwordLength);\n    } else {\n      password = [];\n    }\n    let pdfAlgorithm;\n    if (revision === 6) {\n      pdfAlgorithm = new PDF20();\n    } else {\n      pdfAlgorithm = new PDF17();\n    }\n\n    if (\n      pdfAlgorithm.checkUserPassword(password, userValidationSalt, userPassword)\n    ) {\n      return pdfAlgorithm.getUserKey(password, userKeySalt, userEncryption);\n    } else if (\n      password.length &&\n      pdfAlgorithm.checkOwnerPassword(\n        password,\n        ownerValidationSalt,\n        uBytes,\n        ownerPassword\n      )\n    ) {\n      return pdfAlgorithm.getOwnerKey(\n        password,\n        ownerKeySalt,\n        uBytes,\n        ownerEncryption\n      );\n    }\n\n    return null;\n  }\n\n  function prepareKeyData(\n    fileId,\n    password,\n    ownerPassword,\n    userPassword,\n    flags,\n    revision,\n    keyLength,\n    encryptMetadata\n  ) {\n    const hashDataSize = 40 + ownerPassword.length + fileId.length;\n    const hashData = new Uint8Array(hashDataSize);\n    let i = 0,\n      j,\n      n;\n    if (password) {\n      n = Math.min(32, password.length);\n      for (; i < n; ++i) {\n        hashData[i] = password[i];\n      }\n    }\n    j = 0;\n    while (i < 32) {\n      hashData[i++] = defaultPasswordBytes[j++];\n    }\n    // as now the padded password in the hashData[0..i]\n    for (j = 0, n = ownerPassword.length; j < n; ++j) {\n      hashData[i++] = ownerPassword[j];\n    }\n    hashData[i++] = flags & 0xff;\n    hashData[i++] = (flags >> 8) & 0xff;\n    hashData[i++] = (flags >> 16) & 0xff;\n    hashData[i++] = (flags >>> 24) & 0xff;\n    for (j = 0, n = fileId.length; j < n; ++j) {\n      hashData[i++] = fileId[j];\n    }\n    if (revision >= 4 && !encryptMetadata) {\n      hashData[i++] = 0xff;\n      hashData[i++] = 0xff;\n      hashData[i++] = 0xff;\n      hashData[i++] = 0xff;\n    }\n    let hash = calculateMD5(hashData, 0, i);\n    const keyLengthInBytes = keyLength >> 3;\n    if (revision >= 3) {\n      for (j = 0; j < 50; ++j) {\n        hash = calculateMD5(hash, 0, keyLengthInBytes);\n      }\n    }\n    const encryptionKey = hash.subarray(0, keyLengthInBytes);\n    let cipher, checkData;\n\n    if (revision >= 3) {\n      for (i = 0; i < 32; ++i) {\n        hashData[i] = defaultPasswordBytes[i];\n      }\n      for (j = 0, n = fileId.length; j < n; ++j) {\n        hashData[i++] = fileId[j];\n      }\n      cipher = new ARCFourCipher(encryptionKey);\n      checkData = cipher.encryptBlock(calculateMD5(hashData, 0, i));\n      n = encryptionKey.length;\n      const derivedKey = new Uint8Array(n);\n      for (j = 1; j <= 19; ++j) {\n        for (let k = 0; k < n; ++k) {\n          derivedKey[k] = encryptionKey[k] ^ j;\n        }\n        cipher = new ARCFourCipher(derivedKey);\n        checkData = cipher.encryptBlock(checkData);\n      }\n      for (j = 0, n = checkData.length; j < n; ++j) {\n        if (userPassword[j] !== checkData[j]) {\n          return null;\n        }\n      }\n    } else {\n      cipher = new ARCFourCipher(encryptionKey);\n      checkData = cipher.encryptBlock(defaultPasswordBytes);\n      for (j = 0, n = checkData.length; j < n; ++j) {\n        if (userPassword[j] !== checkData[j]) {\n          return null;\n        }\n      }\n    }\n    return encryptionKey;\n  }\n\n  function decodeUserPassword(password, ownerPassword, revision, keyLength) {\n    const hashData = new Uint8Array(32);\n    let i = 0;\n    const n = Math.min(32, password.length);\n    for (; i < n; ++i) {\n      hashData[i] = password[i];\n    }\n    let j = 0;\n    while (i < 32) {\n      hashData[i++] = defaultPasswordBytes[j++];\n    }\n    let hash = calculateMD5(hashData, 0, i);\n    const keyLengthInBytes = keyLength >> 3;\n    if (revision >= 3) {\n      for (j = 0; j < 50; ++j) {\n        hash = calculateMD5(hash, 0, hash.length);\n      }\n    }\n\n    let cipher, userPassword;\n    if (revision >= 3) {\n      userPassword = ownerPassword;\n      const derivedKey = new Uint8Array(keyLengthInBytes);\n      for (j = 19; j >= 0; j--) {\n        for (let k = 0; k < keyLengthInBytes; ++k) {\n          derivedKey[k] = hash[k] ^ j;\n        }\n        cipher = new ARCFourCipher(derivedKey);\n        userPassword = cipher.encryptBlock(userPassword);\n      }\n    } else {\n      cipher = new ARCFourCipher(hash.subarray(0, keyLengthInBytes));\n      userPassword = cipher.encryptBlock(ownerPassword);\n    }\n    return userPassword;\n  }\n\n  const identityName = Name.get(\"Identity\");\n\n  function buildObjectKey(num, gen, encryptionKey, isAes = false) {\n    const key = new Uint8Array(encryptionKey.length + 9);\n    const n = encryptionKey.length;\n    let i;\n    for (i = 0; i < n; ++i) {\n      key[i] = encryptionKey[i];\n    }\n    key[i++] = num & 0xff;\n    key[i++] = (num >> 8) & 0xff;\n    key[i++] = (num >> 16) & 0xff;\n    key[i++] = gen & 0xff;\n    key[i++] = (gen >> 8) & 0xff;\n    if (isAes) {\n      key[i++] = 0x73;\n      key[i++] = 0x41;\n      key[i++] = 0x6c;\n      key[i++] = 0x54;\n    }\n    const hash = calculateMD5(key, 0, i);\n    return hash.subarray(0, Math.min(encryptionKey.length + 5, 16));\n  }\n\n  function buildCipherConstructor(cf, name, num, gen, key) {\n    if (!isName(name)) {\n      throw new FormatError(\"Invalid crypt filter name.\");\n    }\n    const cryptFilter = cf.get(name.name);\n    let cfm;\n    if (cryptFilter !== null && cryptFilter !== undefined) {\n      cfm = cryptFilter.get(\"CFM\");\n    }\n    if (!cfm || cfm.name === \"None\") {\n      return function cipherTransformFactoryBuildCipherConstructorNone() {\n        return new NullCipher();\n      };\n    }\n    if (cfm.name === \"V2\") {\n      return function cipherTransformFactoryBuildCipherConstructorV2() {\n        return new ARCFourCipher(\n          buildObjectKey(num, gen, key, /* isAes = */ false)\n        );\n      };\n    }\n    if (cfm.name === \"AESV2\") {\n      return function cipherTransformFactoryBuildCipherConstructorAESV2() {\n        return new AES128Cipher(\n          buildObjectKey(num, gen, key, /* isAes = */ true)\n        );\n      };\n    }\n    if (cfm.name === \"AESV3\") {\n      return function cipherTransformFactoryBuildCipherConstructorAESV3() {\n        return new AES256Cipher(key);\n      };\n    }\n    throw new FormatError(\"Unknown crypto method\");\n  }\n\n  // eslint-disable-next-line no-shadow\n  class CipherTransformFactory {\n    constructor(dict, fileId, password) {\n      const filter = dict.get(\"Filter\");\n      if (!isName(filter, \"Standard\")) {\n        throw new FormatError(\"unknown encryption method\");\n      }\n      this.filterName = filter.name;\n      this.dict = dict;\n      const algorithm = dict.get(\"V\");\n      if (\n        !Number.isInteger(algorithm) ||\n        (algorithm !== 1 &&\n          algorithm !== 2 &&\n          algorithm !== 4 &&\n          algorithm !== 5)\n      ) {\n        throw new FormatError(\"unsupported encryption algorithm\");\n      }\n      this.algorithm = algorithm;\n      let keyLength = dict.get(\"Length\");\n      if (!keyLength) {\n        // Spec asks to rely on encryption dictionary's Length entry, however\n        // some PDFs don't have it. Trying to recover.\n        if (algorithm <= 3) {\n          // For 1 and 2 it's fixed to 40-bit, for 3 40-bit is a minimal value.\n          keyLength = 40;\n        } else {\n          // Trying to find default handler -- it usually has Length.\n          const cfDict = dict.get(\"CF\");\n          const streamCryptoName = dict.get(\"StmF\");\n          if (isDict(cfDict) && isName(streamCryptoName)) {\n            cfDict.suppressEncryption = true; // See comment below.\n            const handlerDict = cfDict.get(streamCryptoName.name);\n            keyLength = (handlerDict && handlerDict.get(\"Length\")) || 128;\n            if (keyLength < 40) {\n              // Sometimes it's incorrect value of bits, generators specify\n              // bytes.\n              keyLength <<= 3;\n            }\n          }\n        }\n      }\n      if (\n        !Number.isInteger(keyLength) ||\n        keyLength < 40 ||\n        keyLength % 8 !== 0\n      ) {\n        throw new FormatError(\"invalid key length\");\n      }\n\n      // prepare keys\n      const ownerPassword = stringToBytes(dict.get(\"O\")).subarray(0, 32);\n      const userPassword = stringToBytes(dict.get(\"U\")).subarray(0, 32);\n      const flags = dict.get(\"P\");\n      const revision = dict.get(\"R\");\n      // meaningful when V is 4 or 5\n      const encryptMetadata =\n        (algorithm === 4 || algorithm === 5) &&\n        dict.get(\"EncryptMetadata\") !== false;\n      this.encryptMetadata = encryptMetadata;\n\n      const fileIdBytes = stringToBytes(fileId);\n      let passwordBytes;\n      if (password) {\n        if (revision === 6) {\n          try {\n            password = utf8StringToString(password);\n          } catch (ex) {\n            warn(\n              \"CipherTransformFactory: \" +\n                \"Unable to convert UTF8 encoded password.\"\n            );\n          }\n        }\n        passwordBytes = stringToBytes(password);\n      }\n\n      let encryptionKey;\n      if (algorithm !== 5) {\n        encryptionKey = prepareKeyData(\n          fileIdBytes,\n          passwordBytes,\n          ownerPassword,\n          userPassword,\n          flags,\n          revision,\n          keyLength,\n          encryptMetadata\n        );\n      } else {\n        const ownerValidationSalt = stringToBytes(dict.get(\"O\")).subarray(\n          32,\n          40\n        );\n        const ownerKeySalt = stringToBytes(dict.get(\"O\")).subarray(40, 48);\n        const uBytes = stringToBytes(dict.get(\"U\")).subarray(0, 48);\n        const userValidationSalt = stringToBytes(dict.get(\"U\")).subarray(\n          32,\n          40\n        );\n        const userKeySalt = stringToBytes(dict.get(\"U\")).subarray(40, 48);\n        const ownerEncryption = stringToBytes(dict.get(\"OE\"));\n        const userEncryption = stringToBytes(dict.get(\"UE\"));\n        const perms = stringToBytes(dict.get(\"Perms\"));\n        encryptionKey = createEncryptionKey20(\n          revision,\n          passwordBytes,\n          ownerPassword,\n          ownerValidationSalt,\n          ownerKeySalt,\n          uBytes,\n          userPassword,\n          userValidationSalt,\n          userKeySalt,\n          ownerEncryption,\n          userEncryption,\n          perms\n        );\n      }\n      if (!encryptionKey && !password) {\n        throw new PasswordException(\n          \"No password given\",\n          PasswordResponses.NEED_PASSWORD\n        );\n      } else if (!encryptionKey && password) {\n        // Attempting use the password as an owner password\n        const decodedPassword = decodeUserPassword(\n          passwordBytes,\n          ownerPassword,\n          revision,\n          keyLength\n        );\n        encryptionKey = prepareKeyData(\n          fileIdBytes,\n          decodedPassword,\n          ownerPassword,\n          userPassword,\n          flags,\n          revision,\n          keyLength,\n          encryptMetadata\n        );\n      }\n\n      if (!encryptionKey) {\n        throw new PasswordException(\n          \"Incorrect Password\",\n          PasswordResponses.INCORRECT_PASSWORD\n        );\n      }\n\n      this.encryptionKey = encryptionKey;\n\n      if (algorithm >= 4) {\n        const cf = dict.get(\"CF\");\n        if (isDict(cf)) {\n          // The 'CF' dictionary itself should not be encrypted, and by setting\n          // `suppressEncryption` we can prevent an infinite loop inside of\n          // `XRef_fetchUncompressed` if the dictionary contains indirect\n          // objects (fixes issue7665.pdf).\n          cf.suppressEncryption = true;\n        }\n        this.cf = cf;\n        this.stmf = dict.get(\"StmF\") || identityName;\n        this.strf = dict.get(\"StrF\") || identityName;\n        this.eff = dict.get(\"EFF\") || this.stmf;\n      }\n    }\n\n    createCipherTransform(num, gen) {\n      if (this.algorithm === 4 || this.algorithm === 5) {\n        return new CipherTransform(\n          buildCipherConstructor(\n            this.cf,\n            this.stmf,\n            num,\n            gen,\n            this.encryptionKey\n          ),\n          buildCipherConstructor(\n            this.cf,\n            this.strf,\n            num,\n            gen,\n            this.encryptionKey\n          )\n        );\n      }\n      // algorithms 1 and 2\n      const key = buildObjectKey(\n        num,\n        gen,\n        this.encryptionKey,\n        /* isAes = */ false\n      );\n      const cipherConstructor = function buildCipherCipherConstructor() {\n        return new ARCFourCipher(key);\n      };\n      return new CipherTransform(cipherConstructor, cipherConstructor);\n    }\n  }\n\n  return CipherTransformFactory;\n})();\n\nexport {\n  AES128Cipher,\n  AES256Cipher,\n  ARCFourCipher,\n  calculateMD5,\n  calculateSHA256,\n  calculateSHA384,\n  calculateSHA512,\n  CipherTransformFactory,\n  PDF17,\n  PDF20,\n};\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { DecodeStream } from \"./decode_stream.js\";\n\nconst chunkSize = 512;\n\nclass DecryptStream extends DecodeStream {\n  constructor(str, maybeLength, decrypt) {\n    super(maybeLength);\n\n    this.str = str;\n    this.dict = str.dict;\n    this.decrypt = decrypt;\n    this.nextChunk = null;\n    this.initialized = false;\n  }\n\n  readBlock() {\n    let chunk;\n    if (this.initialized) {\n      chunk = this.nextChunk;\n    } else {\n      chunk = this.str.getBytes(chunkSize);\n      this.initialized = true;\n    }\n    if (!chunk || chunk.length === 0) {\n      this.eof = true;\n      return;\n    }\n    this.nextChunk = this.str.getBytes(chunkSize);\n    const hasMoreData = this.nextChunk && this.nextChunk.length > 0;\n\n    const decrypt = this.decrypt;\n    chunk = decrypt(chunk, !hasMoreData);\n\n    let bufferLength = this.bufferLength;\n    const n = chunk.length,\n      buffer = this.ensureBuffer(bufferLength + n);\n    for (let i = 0; i < n; i++) {\n      buffer[bufferLength++] = chunk[i];\n    }\n    this.bufferLength = bufferLength;\n  }\n}\n\nexport { DecryptStream };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n  $appendChild,\n  $globalData,\n  $nodeName,\n  $text,\n  $toHTML,\n  $toPages,\n} from \"./xfa_object.js\";\nimport { Binder } from \"./bind.js\";\nimport { DataHandler } from \"./data.js\";\nimport { FontFinder } from \"./fonts.js\";\nimport { stripQuotes } from \"./utils.js\";\nimport { warn } from \"../../shared/util.js\";\nimport { XFAParser } from \"./parser.js\";\nimport { XhtmlNamespace } from \"./xhtml.js\";\n\nclass XFAFactory {\n  constructor(data) {\n    try {\n      this.root = new XFAParser().parse(XFAFactory._createDocument(data));\n      const binder = new Binder(this.root);\n      this.form = binder.bind();\n      this.dataHandler = new DataHandler(this.root, binder.getData());\n      this.form[$globalData].template = this.form;\n    } catch (e) {\n      warn(`XFA - an error occurred during parsing and binding: ${e}`);\n    }\n  }\n\n  isValid() {\n    return this.root && this.form;\n  }\n\n  /**\n   * In order to avoid to block the event loop, the conversion\n   * into pages is made asynchronously.\n   */\n  _createPagesHelper() {\n    const iterator = this.form[$toPages]();\n    return new Promise((resolve, reject) => {\n      const nextIteration = () => {\n        try {\n          const value = iterator.next();\n          if (value.done) {\n            resolve(value.value);\n          } else {\n            setTimeout(nextIteration, 0);\n          }\n        } catch (e) {\n          reject(e);\n        }\n      };\n      setTimeout(nextIteration, 0);\n    });\n  }\n\n  async _createPages() {\n    try {\n      this.pages = await this._createPagesHelper();\n      this.dims = this.pages.children.map(c => {\n        const { width, height } = c.attributes.style;\n        return [0, 0, parseInt(width), parseInt(height)];\n      });\n    } catch (e) {\n      warn(`XFA - an error occurred during layout: ${e}`);\n    }\n  }\n\n  getBoundingBox(pageIndex) {\n    return this.dims[pageIndex];\n  }\n\n  async getNumPages() {\n    if (!this.pages) {\n      await this._createPages();\n    }\n    return this.dims.length;\n  }\n\n  setImages(images) {\n    this.form[$globalData].images = images;\n  }\n\n  setFonts(fonts) {\n    this.form[$globalData].fontFinder = new FontFinder(fonts);\n    const missingFonts = [];\n    for (let typeface of this.form[$globalData].usedTypefaces) {\n      typeface = stripQuotes(typeface);\n      const font = this.form[$globalData].fontFinder.find(typeface);\n      if (!font) {\n        missingFonts.push(typeface);\n      }\n    }\n\n    if (missingFonts.length > 0) {\n      return missingFonts;\n    }\n\n    return null;\n  }\n\n  appendFonts(fonts, reallyMissingFonts) {\n    this.form[$globalData].fontFinder.add(fonts, reallyMissingFonts);\n  }\n\n  async getPages() {\n    if (!this.pages) {\n      await this._createPages();\n    }\n    const pages = this.pages;\n    this.pages = null;\n    return pages;\n  }\n\n  serializeData(storage) {\n    return this.dataHandler.serialize(storage);\n  }\n\n  static _createDocument(data) {\n    if (!data[\"/xdp:xdp\"]) {\n      return data[\"xdp:xdp\"];\n    }\n    return Object.values(data).join(\"\");\n  }\n\n  static getRichTextAsHtml(rc) {\n    if (!rc || typeof rc !== \"string\") {\n      return null;\n    }\n\n    try {\n      let root = new XFAParser(XhtmlNamespace, /* richText */ true).parse(rc);\n      if (![\"body\", \"xhtml\"].includes(root[$nodeName])) {\n        // No body, so create one.\n        const newRoot = XhtmlNamespace.body({});\n        newRoot[$appendChild](root);\n        root = newRoot;\n      }\n\n      const result = root[$toHTML]();\n      if (!result.success) {\n        return null;\n      }\n\n      const { html } = result;\n      const { attributes } = html;\n      if (attributes) {\n        if (attributes.class) {\n          attributes.class = attributes.class.filter(\n            attr => !attr.startsWith(\"xfa\")\n          );\n        }\n        attributes.dir = \"auto\";\n      }\n\n      return { html, str: root[$text]() };\n    } catch (e) {\n      warn(`XFA - an error occurred during parsing of rich text: ${e}`);\n    }\n    return null;\n  }\n}\n\nexport { XFAFactory };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { getInteger, getKeyword, HTMLResult } from \"./utils.js\";\nimport { shadow, utf8StringToString, warn } from \"../../shared/util.js\";\nimport { encodeToXmlString } from \"../core_utils.js\";\nimport { NamespaceIds } from \"./namespaces.js\";\nimport { searchNode } from \"./som.js\";\n\n// We use these symbols to avoid name conflict between tags\n// and properties/methods names.\nconst $acceptWhitespace = Symbol();\nconst $addHTML = Symbol();\nconst $appendChild = Symbol();\nconst $childrenToHTML = Symbol();\nconst $clean = Symbol();\nconst $cleanPage = Symbol();\nconst $cleanup = Symbol();\nconst $clone = Symbol();\nconst $consumed = Symbol();\nconst $content = Symbol(\"content\");\nconst $data = Symbol(\"data\");\nconst $dump = Symbol();\nconst $extra = Symbol(\"extra\");\nconst $finalize = Symbol();\nconst $flushHTML = Symbol();\nconst $getAttributeIt = Symbol();\nconst $getAttributes = Symbol();\nconst $getAvailableSpace = Symbol();\nconst $getChildrenByClass = Symbol();\nconst $getChildrenByName = Symbol();\nconst $getChildrenByNameIt = Symbol();\nconst $getDataValue = Symbol();\nconst $getExtra = Symbol();\nconst $getRealChildrenByNameIt = Symbol();\nconst $getChildren = Symbol();\nconst $getContainedChildren = Symbol();\nconst $getNextPage = Symbol();\nconst $getSubformParent = Symbol();\nconst $getParent = Symbol();\nconst $getTemplateRoot = Symbol();\nconst $globalData = Symbol();\nconst $hasSettableValue = Symbol();\nconst $ids = Symbol();\nconst $indexOf = Symbol();\nconst $insertAt = Symbol();\nconst $isCDATAXml = Symbol();\nconst $isBindable = Symbol();\nconst $isDataValue = Symbol();\nconst $isDescendent = Symbol();\nconst $isNsAgnostic = Symbol();\nconst $isSplittable = Symbol();\nconst $isThereMoreWidth = Symbol();\nconst $isTransparent = Symbol();\nconst $isUsable = Symbol();\nconst $lastAttribute = Symbol();\nconst $namespaceId = Symbol(\"namespaceId\");\nconst $nodeName = Symbol(\"nodeName\");\nconst $nsAttributes = Symbol();\nconst $onChild = Symbol();\nconst $onChildCheck = Symbol();\nconst $onText = Symbol();\nconst $pushGlyphs = Symbol();\nconst $popPara = Symbol();\nconst $pushPara = Symbol();\nconst $removeChild = Symbol();\nconst $root = Symbol(\"root\");\nconst $resolvePrototypes = Symbol();\nconst $searchNode = Symbol();\nconst $setId = Symbol();\nconst $setSetAttributes = Symbol();\nconst $setValue = Symbol();\nconst $tabIndex = Symbol();\nconst $text = Symbol();\nconst $toPages = Symbol();\nconst $toHTML = Symbol();\nconst $toString = Symbol();\nconst $toStyle = Symbol();\nconst $uid = Symbol(\"uid\");\n\nconst _applyPrototype = Symbol();\nconst _attributes = Symbol();\nconst _attributeNames = Symbol();\nconst _children = Symbol(\"_children\");\nconst _cloneAttribute = Symbol();\nconst _dataValue = Symbol();\nconst _defaultValue = Symbol();\nconst _filteredChildrenGenerator = Symbol();\nconst _getPrototype = Symbol();\nconst _getUnsetAttributes = Symbol();\nconst _hasChildren = Symbol();\nconst _max = Symbol();\nconst _options = Symbol();\nconst _parent = Symbol(\"parent\");\nconst _resolvePrototypesHelper = Symbol();\nconst _setAttributes = Symbol();\nconst _validator = Symbol();\n\nlet uid = 0;\n\nconst NS_DATASETS = NamespaceIds.datasets.id;\n\nclass XFAObject {\n  constructor(nsId, name, hasChildren = false) {\n    this[$namespaceId] = nsId;\n    this[$nodeName] = name;\n    this[_hasChildren] = hasChildren;\n    this[_parent] = null;\n    this[_children] = [];\n    this[$uid] = `${name}${uid++}`;\n    this[$globalData] = null;\n  }\n\n  [$onChild](child) {\n    if (!this[_hasChildren] || !this[$onChildCheck](child)) {\n      return false;\n    }\n\n    const name = child[$nodeName];\n    const node = this[name];\n\n    if (node instanceof XFAObjectArray) {\n      if (node.push(child)) {\n        this[$appendChild](child);\n        return true;\n      }\n    } else {\n      // IRL it's possible to already have a node.\n      // So just replace it with the last version.\n      if (node !== null) {\n        this[$removeChild](node);\n      }\n      this[name] = child;\n      this[$appendChild](child);\n      return true;\n    }\n\n    let id = \"\";\n    if (this.id) {\n      id = ` (id: ${this.id})`;\n    } else if (this.name) {\n      id = ` (name: ${this.name} ${this.h.value})`;\n    }\n    warn(`XFA - node \"${this[$nodeName]}\"${id} has already enough \"${name}\"!`);\n    return false;\n  }\n\n  [$onChildCheck](child) {\n    return (\n      this.hasOwnProperty(child[$nodeName]) &&\n      child[$namespaceId] === this[$namespaceId]\n    );\n  }\n\n  [$isNsAgnostic]() {\n    return false;\n  }\n\n  [$acceptWhitespace]() {\n    return false;\n  }\n\n  [$isCDATAXml]() {\n    return false;\n  }\n\n  [$isBindable]() {\n    return false;\n  }\n\n  [$popPara]() {\n    if (this.para) {\n      this[$getTemplateRoot]()[$extra].paraStack.pop();\n    }\n  }\n\n  [$pushPara]() {\n    this[$getTemplateRoot]()[$extra].paraStack.push(this.para);\n  }\n\n  [$setId](ids) {\n    if (this.id && this[$namespaceId] === NamespaceIds.template.id) {\n      ids.set(this.id, this);\n    }\n  }\n\n  [$getTemplateRoot]() {\n    return this[$globalData].template;\n  }\n\n  [$isSplittable]() {\n    return false;\n  }\n\n  /**\n     Return true if this node (typically a container)\n     can provide more width during layout.\n     The goal is to help to know what a descendant must\n     do in case of horizontal overflow.\n   */\n  [$isThereMoreWidth]() {\n    return false;\n  }\n\n  [$appendChild](child) {\n    child[_parent] = this;\n    this[_children].push(child);\n    if (!child[$globalData] && this[$globalData]) {\n      child[$globalData] = this[$globalData];\n    }\n  }\n\n  [$removeChild](child) {\n    const i = this[_children].indexOf(child);\n    this[_children].splice(i, 1);\n  }\n\n  [$hasSettableValue]() {\n    return this.hasOwnProperty(\"value\");\n  }\n\n  [$setValue](_) {}\n\n  [$onText](_) {}\n\n  [$finalize]() {}\n\n  [$clean](builder) {\n    delete this[_hasChildren];\n    if (this[$cleanup]) {\n      builder.clean(this[$cleanup]);\n      delete this[$cleanup];\n    }\n  }\n\n  [$indexOf](child) {\n    return this[_children].indexOf(child);\n  }\n\n  [$insertAt](i, child) {\n    child[_parent] = this;\n    this[_children].splice(i, 0, child);\n    if (!child[$globalData] && this[$globalData]) {\n      child[$globalData] = this[$globalData];\n    }\n  }\n\n  /**\n   * If true the element is transparent when searching a node using\n   * a SOM expression which means that looking for \"foo.bar\" in\n   * <... name=\"foo\"><toto><titi><... name=\"bar\"></titi></toto>...\n   * is fine because toto and titi are transparent.\n   */\n  [$isTransparent]() {\n    return !this.name;\n  }\n\n  [$lastAttribute]() {\n    return \"\";\n  }\n\n  [$text]() {\n    if (this[_children].length === 0) {\n      return this[$content];\n    }\n    return this[_children].map(c => c[$text]()).join(\"\");\n  }\n\n  get [_attributeNames]() {\n    // Lazily get attributes names\n    const proto = Object.getPrototypeOf(this);\n    if (!proto._attributes) {\n      const attributes = (proto._attributes = new Set());\n      for (const name of Object.getOwnPropertyNames(this)) {\n        if (\n          this[name] === null ||\n          this[name] instanceof XFAObject ||\n          this[name] instanceof XFAObjectArray\n        ) {\n          break;\n        }\n        attributes.add(name);\n      }\n    }\n    return shadow(this, _attributeNames, proto._attributes);\n  }\n\n  [$isDescendent](parent) {\n    let node = this;\n    while (node) {\n      if (node === parent) {\n        return true;\n      }\n      node = node[$getParent]();\n    }\n    return false;\n  }\n\n  [$getParent]() {\n    return this[_parent];\n  }\n\n  [$getSubformParent]() {\n    return this[$getParent]();\n  }\n\n  [$getChildren](name = null) {\n    if (!name) {\n      return this[_children];\n    }\n\n    return this[name];\n  }\n\n  [$dump]() {\n    const dumped = Object.create(null);\n    if (this[$content]) {\n      dumped.$content = this[$content];\n    }\n\n    for (const name of Object.getOwnPropertyNames(this)) {\n      const value = this[name];\n      if (value === null) {\n        continue;\n      }\n      if (value instanceof XFAObject) {\n        dumped[name] = value[$dump]();\n      } else if (value instanceof XFAObjectArray) {\n        if (!value.isEmpty()) {\n          dumped[name] = value.dump();\n        }\n      } else {\n        dumped[name] = value;\n      }\n    }\n\n    return dumped;\n  }\n\n  [$toStyle]() {\n    return null;\n  }\n\n  [$toHTML]() {\n    return HTMLResult.EMPTY;\n  }\n\n  *[$getContainedChildren]() {\n    // This function is overriden in Subform and SubformSet.\n    for (const node of this[$getChildren]()) {\n      yield node;\n    }\n  }\n\n  *[_filteredChildrenGenerator](filter, include) {\n    for (const node of this[$getContainedChildren]()) {\n      if (!filter || include === filter.has(node[$nodeName])) {\n        const availableSpace = this[$getAvailableSpace]();\n        const res = node[$toHTML](availableSpace);\n        if (!res.success) {\n          this[$extra].failingNode = node;\n        }\n        yield res;\n      }\n    }\n  }\n\n  [$flushHTML]() {\n    return null;\n  }\n\n  [$addHTML](html, bbox) {\n    this[$extra].children.push(html);\n  }\n\n  [$getAvailableSpace]() {}\n\n  [$childrenToHTML]({ filter = null, include = true }) {\n    if (!this[$extra].generator) {\n      this[$extra].generator = this[_filteredChildrenGenerator](\n        filter,\n        include\n      );\n    } else {\n      const availableSpace = this[$getAvailableSpace]();\n      const res = this[$extra].failingNode[$toHTML](availableSpace);\n      if (!res.success) {\n        return res;\n      }\n      if (res.html) {\n        this[$addHTML](res.html, res.bbox);\n      }\n      delete this[$extra].failingNode;\n    }\n\n    while (true) {\n      const gen = this[$extra].generator.next();\n      if (gen.done) {\n        break;\n      }\n      const res = gen.value;\n      if (!res.success) {\n        return res;\n      }\n      if (res.html) {\n        this[$addHTML](res.html, res.bbox);\n      }\n    }\n\n    this[$extra].generator = null;\n\n    return HTMLResult.EMPTY;\n  }\n\n  [$setSetAttributes](attributes) {\n    // Just keep set attributes because it can be used in a proto.\n    this[_setAttributes] = new Set(Object.keys(attributes));\n  }\n\n  /**\n   * Get attribute names which have been set in the proto but not in this.\n   */\n  [_getUnsetAttributes](protoAttributes) {\n    const allAttr = this[_attributeNames];\n    const setAttr = this[_setAttributes];\n    return [...protoAttributes].filter(x => allAttr.has(x) && !setAttr.has(x));\n  }\n\n  /**\n   * Update the node with properties coming from a prototype and apply\n   * this function recursivly to all children.\n   */\n  [$resolvePrototypes](ids, ancestors = new Set()) {\n    for (const child of this[_children]) {\n      child[_resolvePrototypesHelper](ids, ancestors);\n    }\n  }\n\n  [_resolvePrototypesHelper](ids, ancestors) {\n    const proto = this[_getPrototype](ids, ancestors);\n    if (proto) {\n      // _applyPrototype will apply $resolvePrototypes with correct ancestors\n      // to avoid infinite loop.\n      this[_applyPrototype](proto, ids, ancestors);\n    } else {\n      this[$resolvePrototypes](ids, ancestors);\n    }\n  }\n\n  [_getPrototype](ids, ancestors) {\n    const { use, usehref } = this;\n    if (!use && !usehref) {\n      return null;\n    }\n\n    let proto = null;\n    let somExpression = null;\n    let id = null;\n    let ref = use;\n\n    // If usehref and use are non-empty then use usehref.\n    if (usehref) {\n      ref = usehref;\n      // Href can be one of the following:\n      // - #ID\n      // - URI#ID\n      // - #som(expression)\n      // - URI#som(expression)\n      // - URI\n      // For now we don't handle URI other than \".\" (current document).\n      if (usehref.startsWith(\"#som(\") && usehref.endsWith(\")\")) {\n        somExpression = usehref.slice(\"#som(\".length, usehref.length - 1);\n      } else if (usehref.startsWith(\".#som(\") && usehref.endsWith(\")\")) {\n        somExpression = usehref.slice(\".#som(\".length, usehref.length - 1);\n      } else if (usehref.startsWith(\"#\")) {\n        id = usehref.slice(1);\n      } else if (usehref.startsWith(\".#\")) {\n        id = usehref.slice(2);\n      }\n    } else if (use.startsWith(\"#\")) {\n      id = use.slice(1);\n    } else {\n      somExpression = use;\n    }\n\n    this.use = this.usehref = \"\";\n    if (id) {\n      proto = ids.get(id);\n    } else {\n      proto = searchNode(\n        ids.get($root),\n        this,\n        somExpression,\n        true /* = dotDotAllowed */,\n        false /* = useCache */\n      );\n      if (proto) {\n        proto = proto[0];\n      }\n    }\n\n    if (!proto) {\n      warn(`XFA - Invalid prototype reference: ${ref}.`);\n      return null;\n    }\n\n    if (proto[$nodeName] !== this[$nodeName]) {\n      warn(\n        `XFA - Incompatible prototype: ${proto[$nodeName]} !== ${this[$nodeName]}.`\n      );\n      return null;\n    }\n\n    if (ancestors.has(proto)) {\n      // We've a cycle so break it.\n      warn(`XFA - Cycle detected in prototypes use.`);\n      return null;\n    }\n\n    ancestors.add(proto);\n\n    // The prototype can have a \"use\" attribute itself.\n    const protoProto = proto[_getPrototype](ids, ancestors);\n    if (protoProto) {\n      proto[_applyPrototype](protoProto, ids, ancestors);\n    }\n\n    // The prototype can have a child which itself has a \"use\" property.\n    proto[$resolvePrototypes](ids, ancestors);\n\n    ancestors.delete(proto);\n\n    return proto;\n  }\n\n  [_applyPrototype](proto, ids, ancestors) {\n    if (ancestors.has(proto)) {\n      // We've a cycle so break it.\n      warn(`XFA - Cycle detected in prototypes use.`);\n      return;\n    }\n\n    if (!this[$content] && proto[$content]) {\n      this[$content] = proto[$content];\n    }\n\n    const newAncestors = new Set(ancestors);\n    newAncestors.add(proto);\n\n    for (const unsetAttrName of this[_getUnsetAttributes](\n      proto[_setAttributes]\n    )) {\n      this[unsetAttrName] = proto[unsetAttrName];\n      if (this[_setAttributes]) {\n        this[_setAttributes].add(unsetAttrName);\n      }\n    }\n\n    for (const name of Object.getOwnPropertyNames(this)) {\n      if (this[_attributeNames].has(name)) {\n        continue;\n      }\n      const value = this[name];\n      const protoValue = proto[name];\n\n      if (value instanceof XFAObjectArray) {\n        for (const child of value[_children]) {\n          child[_resolvePrototypesHelper](ids, ancestors);\n        }\n\n        for (\n          let i = value[_children].length, ii = protoValue[_children].length;\n          i < ii;\n          i++\n        ) {\n          const child = proto[_children][i][$clone]();\n          if (value.push(child)) {\n            child[_parent] = this;\n            this[_children].push(child);\n            child[_resolvePrototypesHelper](ids, ancestors);\n          } else {\n            // No need to continue: other nodes will be rejected.\n            break;\n          }\n        }\n        continue;\n      }\n\n      if (value !== null) {\n        value[$resolvePrototypes](ids, ancestors);\n        if (protoValue) {\n          // protoValue must be treated as a prototype for value.\n          value[_applyPrototype](protoValue, ids, ancestors);\n        }\n        continue;\n      }\n\n      if (protoValue !== null) {\n        const child = protoValue[$clone]();\n        child[_parent] = this;\n        this[name] = child;\n        this[_children].push(child);\n        child[_resolvePrototypesHelper](ids, ancestors);\n      }\n    }\n  }\n\n  static [_cloneAttribute](obj) {\n    if (Array.isArray(obj)) {\n      return obj.map(x => XFAObject[_cloneAttribute](x));\n    }\n    if (typeof obj === \"object\" && obj !== null) {\n      return Object.assign({}, obj);\n    }\n    return obj;\n  }\n\n  [$clone]() {\n    const clone = Object.create(Object.getPrototypeOf(this));\n    for (const $symbol of Object.getOwnPropertySymbols(this)) {\n      try {\n        clone[$symbol] = this[$symbol];\n      } catch (_) {\n        shadow(clone, $symbol, this[$symbol]);\n      }\n    }\n    clone[$uid] = `${clone[$nodeName]}${uid++}`;\n    clone[_children] = [];\n\n    for (const name of Object.getOwnPropertyNames(this)) {\n      if (this[_attributeNames].has(name)) {\n        clone[name] = XFAObject[_cloneAttribute](this[name]);\n        continue;\n      }\n      const value = this[name];\n      if (value instanceof XFAObjectArray) {\n        clone[name] = new XFAObjectArray(value[_max]);\n      } else {\n        clone[name] = null;\n      }\n    }\n\n    for (const child of this[_children]) {\n      const name = child[$nodeName];\n      const clonedChild = child[$clone]();\n      clone[_children].push(clonedChild);\n      clonedChild[_parent] = clone;\n      if (clone[name] === null) {\n        clone[name] = clonedChild;\n      } else {\n        clone[name][_children].push(clonedChild);\n      }\n    }\n\n    return clone;\n  }\n\n  [$getChildren](name = null) {\n    if (!name) {\n      return this[_children];\n    }\n\n    return this[_children].filter(c => c[$nodeName] === name);\n  }\n\n  [$getChildrenByClass](name) {\n    return this[name];\n  }\n\n  [$getChildrenByName](name, allTransparent, first = true) {\n    return Array.from(this[$getChildrenByNameIt](name, allTransparent, first));\n  }\n\n  *[$getChildrenByNameIt](name, allTransparent, first = true) {\n    if (name === \"parent\") {\n      yield this[_parent];\n      return;\n    }\n\n    for (const child of this[_children]) {\n      if (child[$nodeName] === name) {\n        yield child;\n      }\n\n      if (child.name === name) {\n        yield child;\n      }\n\n      if (allTransparent || child[$isTransparent]()) {\n        yield* child[$getChildrenByNameIt](name, allTransparent, false);\n      }\n    }\n\n    if (first && this[_attributeNames].has(name)) {\n      yield new XFAAttribute(this, name, this[name]);\n    }\n  }\n}\n\nclass XFAObjectArray {\n  constructor(max = Infinity) {\n    this[_max] = max;\n    this[_children] = [];\n  }\n\n  push(child) {\n    const len = this[_children].length;\n    if (len <= this[_max]) {\n      this[_children].push(child);\n      return true;\n    }\n    warn(\n      `XFA - node \"${child[$nodeName]}\" accepts no more than ${this[_max]} children`\n    );\n    return false;\n  }\n\n  isEmpty() {\n    return this[_children].length === 0;\n  }\n\n  dump() {\n    return this[_children].length === 1\n      ? this[_children][0][$dump]()\n      : this[_children].map(x => x[$dump]());\n  }\n\n  [$clone]() {\n    const clone = new XFAObjectArray(this[_max]);\n    clone[_children] = this[_children].map(c => c[$clone]());\n    return clone;\n  }\n\n  get children() {\n    return this[_children];\n  }\n\n  clear() {\n    this[_children].length = 0;\n  }\n}\n\nclass XFAAttribute {\n  constructor(node, name, value) {\n    this[_parent] = node;\n    this[$nodeName] = name;\n    this[$content] = value;\n    this[$consumed] = false;\n    this[$uid] = `attribute${uid++}`;\n  }\n\n  [$getParent]() {\n    return this[_parent];\n  }\n\n  [$isDataValue]() {\n    return true;\n  }\n\n  [$getDataValue]() {\n    return this[$content].trim();\n  }\n\n  [$setValue](value) {\n    value = value.value || \"\";\n    this[$content] = value.toString();\n  }\n\n  [$text]() {\n    return this[$content];\n  }\n\n  [$isDescendent](parent) {\n    return this[_parent] === parent || this[_parent][$isDescendent](parent);\n  }\n}\n\nclass XmlObject extends XFAObject {\n  constructor(nsId, name, attributes = {}) {\n    super(nsId, name);\n    this[$content] = \"\";\n    this[_dataValue] = null;\n    if (name !== \"#text\") {\n      const map = new Map();\n      this[_attributes] = map;\n      for (const [attrName, value] of Object.entries(attributes)) {\n        map.set(attrName, new XFAAttribute(this, attrName, value));\n      }\n      if (attributes.hasOwnProperty($nsAttributes)) {\n        // XFA attributes.\n        const dataNode = attributes[$nsAttributes].xfa.dataNode;\n        if (dataNode !== undefined) {\n          if (dataNode === \"dataGroup\") {\n            this[_dataValue] = false;\n          } else if (dataNode === \"dataValue\") {\n            this[_dataValue] = true;\n          }\n        }\n      }\n    }\n    this[$consumed] = false;\n  }\n\n  [$toString](buf) {\n    const tagName = this[$nodeName];\n    if (tagName === \"#text\") {\n      buf.push(encodeToXmlString(this[$content]));\n      return;\n    }\n    const utf8TagName = utf8StringToString(tagName);\n    const prefix = this[$namespaceId] === NS_DATASETS ? \"xfa:\" : \"\";\n    buf.push(`<${prefix}${utf8TagName}`);\n    for (const [name, value] of this[_attributes].entries()) {\n      const utf8Name = utf8StringToString(name);\n      buf.push(` ${utf8Name}=\"${encodeToXmlString(value[$content])}\"`);\n    }\n    if (this[_dataValue] !== null) {\n      if (this[_dataValue]) {\n        buf.push(` xfa:dataNode=\"dataValue\"`);\n      } else {\n        buf.push(` xfa:dataNode=\"dataGroup\"`);\n      }\n    }\n    if (!this[$content] && this[_children].length === 0) {\n      buf.push(\"/>\");\n      return;\n    }\n\n    buf.push(\">\");\n    if (this[$content]) {\n      if (typeof this[$content] === \"string\") {\n        buf.push(encodeToXmlString(this[$content]));\n      } else {\n        this[$content][$toString](buf);\n      }\n    } else {\n      for (const child of this[_children]) {\n        child[$toString](buf);\n      }\n    }\n    buf.push(`</${prefix}${utf8TagName}>`);\n  }\n\n  [$onChild](child) {\n    if (this[$content]) {\n      const node = new XmlObject(this[$namespaceId], \"#text\");\n      this[$appendChild](node);\n      node[$content] = this[$content];\n      this[$content] = \"\";\n    }\n    this[$appendChild](child);\n    return true;\n  }\n\n  [$onText](str) {\n    this[$content] += str;\n  }\n\n  [$finalize]() {\n    if (this[$content] && this[_children].length > 0) {\n      const node = new XmlObject(this[$namespaceId], \"#text\");\n      this[$appendChild](node);\n      node[$content] = this[$content];\n      delete this[$content];\n    }\n  }\n\n  [$toHTML]() {\n    if (this[$nodeName] === \"#text\") {\n      return HTMLResult.success({\n        name: \"#text\",\n        value: this[$content],\n      });\n    }\n\n    return HTMLResult.EMPTY;\n  }\n\n  [$getChildren](name = null) {\n    if (!name) {\n      return this[_children];\n    }\n\n    return this[_children].filter(c => c[$nodeName] === name);\n  }\n\n  [$getAttributes]() {\n    return this[_attributes];\n  }\n\n  [$getChildrenByClass](name) {\n    const value = this[_attributes].get(name);\n    if (value !== undefined) {\n      return value;\n    }\n    return this[$getChildren](name);\n  }\n\n  *[$getChildrenByNameIt](name, allTransparent) {\n    const value = this[_attributes].get(name);\n    if (value) {\n      yield value;\n    }\n\n    for (const child of this[_children]) {\n      if (child[$nodeName] === name) {\n        yield child;\n      }\n\n      if (allTransparent) {\n        yield* child[$getChildrenByNameIt](name, allTransparent);\n      }\n    }\n  }\n\n  *[$getAttributeIt](name, skipConsumed) {\n    const value = this[_attributes].get(name);\n    if (value && (!skipConsumed || !value[$consumed])) {\n      yield value;\n    }\n    for (const child of this[_children]) {\n      yield* child[$getAttributeIt](name, skipConsumed);\n    }\n  }\n\n  *[$getRealChildrenByNameIt](name, allTransparent, skipConsumed) {\n    for (const child of this[_children]) {\n      if (child[$nodeName] === name && (!skipConsumed || !child[$consumed])) {\n        yield child;\n      }\n\n      if (allTransparent) {\n        yield* child[$getRealChildrenByNameIt](\n          name,\n          allTransparent,\n          skipConsumed\n        );\n      }\n    }\n  }\n\n  [$isDataValue]() {\n    if (this[_dataValue] === null) {\n      return (\n        this[_children].length === 0 ||\n        this[_children][0][$namespaceId] === NamespaceIds.xhtml.id\n      );\n    }\n    return this[_dataValue];\n  }\n\n  [$getDataValue]() {\n    if (this[_dataValue] === null) {\n      if (this[_children].length === 0) {\n        return this[$content].trim();\n      }\n      if (this[_children][0][$namespaceId] === NamespaceIds.xhtml.id) {\n        return this[_children][0][$text]().trim();\n      }\n      return null;\n    }\n    return this[$content].trim();\n  }\n\n  [$setValue](value) {\n    value = value.value || \"\";\n    this[$content] = value.toString();\n  }\n\n  [$dump](hasNS = false) {\n    const dumped = Object.create(null);\n    if (hasNS) {\n      dumped.$ns = this[$namespaceId];\n    }\n    if (this[$content]) {\n      dumped.$content = this[$content];\n    }\n    dumped.$name = this[$nodeName];\n\n    dumped.children = [];\n    for (const child of this[_children]) {\n      dumped.children.push(child[$dump](hasNS));\n    }\n\n    dumped.attributes = Object.create(null);\n    for (const [name, value] of this[_attributes]) {\n      dumped.attributes[name] = value[$content];\n    }\n\n    return dumped;\n  }\n}\n\nclass ContentObject extends XFAObject {\n  constructor(nsId, name) {\n    super(nsId, name);\n    this[$content] = \"\";\n  }\n\n  [$onText](text) {\n    this[$content] += text;\n  }\n\n  [$finalize]() {}\n}\n\nclass OptionObject extends ContentObject {\n  constructor(nsId, name, options) {\n    super(nsId, name);\n    this[_options] = options;\n  }\n\n  [$finalize]() {\n    this[$content] = getKeyword({\n      data: this[$content],\n      defaultValue: this[_options][0],\n      validate: k => this[_options].includes(k),\n    });\n  }\n\n  [$clean](builder) {\n    super[$clean](builder);\n    delete this[_options];\n  }\n}\n\nclass StringObject extends ContentObject {\n  [$finalize]() {\n    this[$content] = this[$content].trim();\n  }\n}\n\nclass IntegerObject extends ContentObject {\n  constructor(nsId, name, defaultValue, validator) {\n    super(nsId, name);\n    this[_defaultValue] = defaultValue;\n    this[_validator] = validator;\n  }\n\n  [$finalize]() {\n    this[$content] = getInteger({\n      data: this[$content],\n      defaultValue: this[_defaultValue],\n      validate: this[_validator],\n    });\n  }\n\n  [$clean](builder) {\n    super[$clean](builder);\n    delete this[_defaultValue];\n    delete this[_validator];\n  }\n}\n\nclass Option01 extends IntegerObject {\n  constructor(nsId, name) {\n    super(nsId, name, 0, n => n === 1);\n  }\n}\n\nclass Option10 extends IntegerObject {\n  constructor(nsId, name) {\n    super(nsId, name, 1, n => n === 0);\n  }\n}\n\nexport {\n  $acceptWhitespace,\n  $addHTML,\n  $appendChild,\n  $childrenToHTML,\n  $clean,\n  $cleanPage,\n  $cleanup,\n  $clone,\n  $consumed,\n  $content,\n  $data,\n  $dump,\n  $extra,\n  $finalize,\n  $flushHTML,\n  $getAttributeIt,\n  $getAttributes,\n  $getAvailableSpace,\n  $getChildren,\n  $getChildrenByClass,\n  $getChildrenByName,\n  $getChildrenByNameIt,\n  $getContainedChildren,\n  $getDataValue,\n  $getExtra,\n  $getNextPage,\n  $getParent,\n  $getRealChildrenByNameIt,\n  $getSubformParent,\n  $getTemplateRoot,\n  $globalData,\n  $hasSettableValue,\n  $ids,\n  $indexOf,\n  $insertAt,\n  $isBindable,\n  $isCDATAXml,\n  $isDataValue,\n  $isDescendent,\n  $isNsAgnostic,\n  $isSplittable,\n  $isThereMoreWidth,\n  $isTransparent,\n  $isUsable,\n  $namespaceId,\n  $nodeName,\n  $nsAttributes,\n  $onChild,\n  $onChildCheck,\n  $onText,\n  $popPara,\n  $pushGlyphs,\n  $pushPara,\n  $removeChild,\n  $resolvePrototypes,\n  $root,\n  $searchNode,\n  $setId,\n  $setSetAttributes,\n  $setValue,\n  $tabIndex,\n  $text,\n  $toHTML,\n  $toPages,\n  $toString,\n  $toStyle,\n  $uid,\n  ContentObject,\n  IntegerObject,\n  Option01,\n  Option10,\n  OptionObject,\n  StringObject,\n  XFAAttribute,\n  XFAObject,\n  XFAObjectArray,\n  XmlObject,\n};\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { shadow } from \"../../shared/util.js\";\n\nconst dimConverters = {\n  pt: x => x,\n  cm: x => (x / 2.54) * 72,\n  mm: x => (x / (10 * 2.54)) * 72,\n  in: x => x * 72,\n  px: x => x,\n};\nconst measurementPattern = /([+-]?\\d+\\.?\\d*)(.*)/;\n\nfunction stripQuotes(str) {\n  if (str.startsWith(\"'\") || str.startsWith('\"')) {\n    return str.slice(1, str.length - 1);\n  }\n  return str;\n}\n\nfunction getInteger({ data, defaultValue, validate }) {\n  if (!data) {\n    return defaultValue;\n  }\n  data = data.trim();\n  const n = parseInt(data, 10);\n  if (!isNaN(n) && validate(n)) {\n    return n;\n  }\n  return defaultValue;\n}\n\nfunction getFloat({ data, defaultValue, validate }) {\n  if (!data) {\n    return defaultValue;\n  }\n  data = data.trim();\n  const n = parseFloat(data);\n  if (!isNaN(n) && validate(n)) {\n    return n;\n  }\n  return defaultValue;\n}\n\nfunction getKeyword({ data, defaultValue, validate }) {\n  if (!data) {\n    return defaultValue;\n  }\n  data = data.trim();\n  if (validate(data)) {\n    return data;\n  }\n  return defaultValue;\n}\n\nfunction getStringOption(data, options) {\n  return getKeyword({\n    data,\n    defaultValue: options[0],\n    validate: k => options.includes(k),\n  });\n}\n\nfunction getMeasurement(str, def = \"0\") {\n  def = def || \"0\";\n  if (!str) {\n    return getMeasurement(def);\n  }\n  const match = str.trim().match(measurementPattern);\n  if (!match) {\n    return getMeasurement(def);\n  }\n  const [, valueStr, unit] = match;\n  const value = parseFloat(valueStr);\n  if (isNaN(value)) {\n    return getMeasurement(def);\n  }\n\n  if (value === 0) {\n    return 0;\n  }\n\n  const conv = dimConverters[unit];\n  if (conv) {\n    return conv(value);\n  }\n\n  return value;\n}\n\nfunction getRatio(data) {\n  if (!data) {\n    return { num: 1, den: 1 };\n  }\n  const ratio = data\n    .trim()\n    .split(/\\s*:\\s*/)\n    .map(x => parseFloat(x))\n    .filter(x => !isNaN(x));\n  if (ratio.length === 1) {\n    ratio.push(1);\n  }\n\n  if (ratio.length === 0) {\n    return { num: 1, den: 1 };\n  }\n\n  const [num, den] = ratio;\n  return { num, den };\n}\n\nfunction getRelevant(data) {\n  if (!data) {\n    return [];\n  }\n  return data\n    .trim()\n    .split(/\\s+/)\n    .map(e => {\n      return {\n        excluded: e[0] === \"-\",\n        viewname: e.substring(1),\n      };\n    });\n}\n\nfunction getColor(data, def = [0, 0, 0]) {\n  let [r, g, b] = def;\n  if (!data) {\n    return { r, g, b };\n  }\n  const color = data\n    .trim()\n    .split(/\\s*,\\s*/)\n    .map(c => Math.min(Math.max(0, parseInt(c.trim(), 10)), 255))\n    .map(c => (isNaN(c) ? 0 : c));\n\n  if (color.length < 3) {\n    return { r, g, b };\n  }\n\n  [r, g, b] = color;\n  return { r, g, b };\n}\n\nfunction getBBox(data) {\n  const def = -1;\n  if (!data) {\n    return { x: def, y: def, width: def, height: def };\n  }\n  const bbox = data\n    .trim()\n    .split(/\\s*,\\s*/)\n    .map(m => getMeasurement(m, \"-1\"));\n  if (bbox.length < 4 || bbox[2] < 0 || bbox[3] < 0) {\n    return { x: def, y: def, width: def, height: def };\n  }\n\n  const [x, y, width, height] = bbox;\n  return { x, y, width, height };\n}\n\nclass HTMLResult {\n  static get FAILURE() {\n    return shadow(this, \"FAILURE\", new HTMLResult(false, null, null, null));\n  }\n\n  static get EMPTY() {\n    return shadow(this, \"EMPTY\", new HTMLResult(true, null, null, null));\n  }\n\n  constructor(success, html, bbox, breakNode) {\n    this.success = success;\n    this.html = html;\n    this.bbox = bbox;\n    this.breakNode = breakNode;\n  }\n\n  isBreak() {\n    return !!this.breakNode;\n  }\n\n  static breakNode(node) {\n    return new HTMLResult(false, null, null, node);\n  }\n\n  static success(html, bbox = null) {\n    return new HTMLResult(true, html, bbox, null);\n  }\n}\n\nexport {\n  getBBox,\n  getColor,\n  getFloat,\n  getInteger,\n  getKeyword,\n  getMeasurement,\n  getRatio,\n  getRelevant,\n  getStringOption,\n  HTMLResult,\n  stripQuotes,\n};\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nconst $buildXFAObject = Symbol();\n\nconst NamespaceIds = {\n  config: {\n    id: 0,\n    check: ns => ns.startsWith(\"http://www.xfa.org/schema/xci/\"),\n  },\n  connectionSet: {\n    id: 1,\n    check: ns => ns.startsWith(\"http://www.xfa.org/schema/xfa-connection-set/\"),\n  },\n  datasets: {\n    id: 2,\n    check: ns => ns.startsWith(\"http://www.xfa.org/schema/xfa-data/\"),\n  },\n  form: {\n    id: 3,\n    check: ns => ns.startsWith(\"http://www.xfa.org/schema/xfa-form/\"),\n  },\n  localeSet: {\n    id: 4,\n    check: ns => ns.startsWith(\"http://www.xfa.org/schema/xfa-locale-set/\"),\n  },\n  pdf: {\n    id: 5,\n    check: ns => ns === \"http://ns.adobe.com/xdp/pdf/\",\n  },\n  signature: {\n    id: 6,\n    check: ns => ns === \"http://www.w3.org/2000/09/xmldsig#\",\n  },\n  sourceSet: {\n    id: 7,\n    check: ns => ns.startsWith(\"http://www.xfa.org/schema/xfa-source-set/\"),\n  },\n  stylesheet: {\n    id: 8,\n    check: ns => ns === \"http://www.w3.org/1999/XSL/Transform\",\n  },\n  template: {\n    id: 9,\n    check: ns => ns.startsWith(\"http://www.xfa.org/schema/xfa-template/\"),\n  },\n  xdc: {\n    id: 10,\n    check: ns => ns.startsWith(\"http://www.xfa.org/schema/xdc/\"),\n  },\n  xdp: {\n    id: 11,\n    check: ns => ns === \"http://ns.adobe.com/xdp/\",\n  },\n  xfdf: {\n    id: 12,\n    check: ns => ns === \"http://ns.adobe.com/xfdf/\",\n  },\n  xhtml: {\n    id: 13,\n    check: ns => ns === \"http://www.w3.org/1999/xhtml\",\n  },\n  xmpmeta: {\n    id: 14,\n    check: ns => ns === \"http://ns.adobe.com/xmpmeta/\",\n  },\n};\n\nexport { $buildXFAObject, NamespaceIds };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n  $appendChild,\n  $getChildren,\n  $getChildrenByClass,\n  $getChildrenByName,\n  $getParent,\n  $namespaceId,\n  XFAObject,\n  XFAObjectArray,\n  XmlObject,\n} from \"./xfa_object.js\";\nimport { NamespaceIds } from \"./namespaces.js\";\nimport { warn } from \"../../shared/util.js\";\n\nconst namePattern = /^[^.[]+/;\nconst indexPattern = /^[^\\]]+/;\nconst operators = {\n  dot: 0,\n  dotDot: 1,\n  dotHash: 2,\n  dotBracket: 3,\n  dotParen: 4,\n};\n\nconst shortcuts = new Map([\n  [\"$data\", (root, current) => (root.datasets ? root.datasets.data : root)],\n  [\n    \"$record\",\n    (root, current) =>\n      (root.datasets ? root.datasets.data : root)[$getChildren]()[0],\n  ],\n  [\"$template\", (root, current) => root.template],\n  [\"$connectionSet\", (root, current) => root.connectionSet],\n  [\"$form\", (root, current) => root.form],\n  [\"$layout\", (root, current) => root.layout],\n  [\"$host\", (root, current) => root.host],\n  [\"$dataWindow\", (root, current) => root.dataWindow],\n  [\"$event\", (root, current) => root.event],\n  [\"!\", (root, current) => root.datasets],\n  [\"$xfa\", (root, current) => root],\n  [\"xfa\", (root, current) => root],\n  [\"$\", (root, current) => current],\n]);\n\nconst somCache = new WeakMap();\nconst NS_DATASETS = NamespaceIds.datasets.id;\n\nfunction parseIndex(index) {\n  index = index.trim();\n  if (index === \"*\") {\n    return Infinity;\n  }\n  return parseInt(index, 10) || 0;\n}\n\n// For now expressions containaing .[...] or .(...) are not\n// evaluated so don't parse them.\n// TODO: implement that stuff and the remove the noExpr param.\nfunction parseExpression(expr, dotDotAllowed, noExpr = true) {\n  let match = expr.match(namePattern);\n  if (!match) {\n    return null;\n  }\n\n  let [name] = match;\n  const parsed = [\n    {\n      name,\n      cacheName: \".\" + name,\n      index: 0,\n      js: null,\n      formCalc: null,\n      operator: operators.dot,\n    },\n  ];\n\n  let pos = name.length;\n\n  while (pos < expr.length) {\n    const spos = pos;\n    const char = expr.charAt(pos++);\n    if (char === \"[\") {\n      match = expr.slice(pos).match(indexPattern);\n      if (!match) {\n        warn(\"XFA - Invalid index in SOM expression\");\n        return null;\n      }\n      parsed[parsed.length - 1].index = parseIndex(match[0]);\n      pos += match[0].length + 1;\n      continue;\n    }\n\n    let operator;\n    switch (expr.charAt(pos)) {\n      case \".\":\n        if (!dotDotAllowed) {\n          return null;\n        }\n        pos++;\n        operator = operators.dotDot;\n        break;\n      case \"#\":\n        pos++;\n        operator = operators.dotHash;\n        break;\n      case \"[\":\n        if (noExpr) {\n          warn(\n            \"XFA - SOM expression contains a FormCalc subexpression which is not supported for now.\"\n          );\n          return null;\n        }\n        // TODO: FormCalc expression so need to use the parser\n        operator = operators.dotBracket;\n        break;\n      case \"(\":\n        if (noExpr) {\n          warn(\n            \"XFA - SOM expression contains a JavaScript subexpression which is not supported for now.\"\n          );\n          return null;\n        }\n        // TODO:\n        // Javascript expression: should be a boolean operation with a path\n        // so maybe we can have our own parser for that stuff or\n        // maybe use the formcalc one.\n        operator = operators.dotParen;\n        break;\n      default:\n        operator = operators.dot;\n        break;\n    }\n\n    match = expr.slice(pos).match(namePattern);\n    if (!match) {\n      break;\n    }\n\n    [name] = match;\n    pos += name.length;\n    parsed.push({\n      name,\n      cacheName: expr.slice(spos, pos),\n      operator,\n      index: 0,\n      js: null,\n      formCalc: null,\n    });\n  }\n  return parsed;\n}\n\nfunction searchNode(\n  root,\n  container,\n  expr,\n  dotDotAllowed = true,\n  useCache = true\n) {\n  const parsed = parseExpression(expr, dotDotAllowed);\n  if (!parsed) {\n    return null;\n  }\n\n  const fn = shortcuts.get(parsed[0].name);\n  let i = 0;\n  let isQualified;\n  if (fn) {\n    isQualified = true;\n    root = [fn(root, container)];\n    i = 1;\n  } else {\n    isQualified = container === null;\n    root = [container || root];\n  }\n\n  for (let ii = parsed.length; i < ii; i++) {\n    const { name, cacheName, operator, index } = parsed[i];\n    const nodes = [];\n    for (const node of root) {\n      if (!(node instanceof XFAObject)) {\n        continue;\n      }\n\n      let children, cached;\n\n      if (useCache) {\n        cached = somCache.get(node);\n        if (!cached) {\n          cached = new Map();\n          somCache.set(node, cached);\n        }\n        children = cached.get(cacheName);\n      }\n\n      if (!children) {\n        switch (operator) {\n          case operators.dot:\n            children = node[$getChildrenByName](name, false);\n            break;\n          case operators.dotDot:\n            children = node[$getChildrenByName](name, true);\n            break;\n          case operators.dotHash:\n            children = node[$getChildrenByClass](name);\n            if (children instanceof XFAObjectArray) {\n              children = children.children;\n            } else {\n              children = [children];\n            }\n            break;\n          default:\n            break;\n        }\n        if (useCache) {\n          cached.set(cacheName, children);\n        }\n      }\n\n      if (children.length > 0) {\n        nodes.push(children);\n      }\n    }\n\n    if (nodes.length === 0 && !isQualified && i === 0) {\n      // We've an unqualified expression and we didn't find anything\n      // so look at container and siblings of container and so on.\n      // http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.364.2157&rep=rep1&type=pdf#page=114\n      const parent = container[$getParent]();\n      container = parent;\n      if (!container) {\n        return null;\n      }\n      i = -1;\n      root = [container];\n      continue;\n    }\n\n    if (isFinite(index)) {\n      root = nodes.filter(node => index < node.length).map(node => node[index]);\n    } else {\n      root = nodes.reduce((acc, node) => acc.concat(node), []);\n    }\n  }\n\n  if (root.length === 0) {\n    return null;\n  }\n\n  return root;\n}\n\nfunction createNodes(root, path) {\n  let node = null;\n  for (const { name, index } of path) {\n    for (let i = 0, ii = !isFinite(index) ? 0 : index; i <= ii; i++) {\n      const nsId = root[$namespaceId] === NS_DATASETS ? -1 : root[$namespaceId];\n      node = new XmlObject(nsId, name);\n      root[$appendChild](node);\n    }\n\n    root = node;\n  }\n  return node;\n}\n\nfunction createDataNode(root, container, expr) {\n  const parsed = parseExpression(expr);\n  if (!parsed) {\n    return null;\n  }\n\n  if (parsed.some(x => x.operator === operators.dotDot)) {\n    return null;\n  }\n\n  const fn = shortcuts.get(parsed[0].name);\n  let i = 0;\n  if (fn) {\n    root = fn(root, container);\n    i = 1;\n  } else {\n    root = container || root;\n  }\n\n  for (let ii = parsed.length; i < ii; i++) {\n    const { name, operator, index } = parsed[i];\n    if (!isFinite(index)) {\n      parsed[i].index = 0;\n      return createNodes(root, parsed.slice(i));\n    }\n\n    let children;\n    switch (operator) {\n      case operators.dot:\n        children = root[$getChildrenByName](name, false);\n        break;\n      case operators.dotDot:\n        children = root[$getChildrenByName](name, true);\n        break;\n      case operators.dotHash:\n        children = root[$getChildrenByClass](name);\n        if (children instanceof XFAObjectArray) {\n          children = children.children;\n        } else {\n          children = [children];\n        }\n        break;\n      default:\n        break;\n    }\n\n    if (children.length === 0) {\n      return createNodes(root, parsed.slice(i));\n    }\n\n    if (index < children.length) {\n      const child = children[index];\n      if (!(child instanceof XFAObject)) {\n        warn(`XFA - Cannot create a node.`);\n        return null;\n      }\n      root = child;\n    } else {\n      parsed[i].index = index - children.length;\n      return createNodes(root, parsed.slice(i));\n    }\n  }\n  return null;\n}\n\nexport { createDataNode, searchNode };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n  $appendChild,\n  $clone,\n  $consumed,\n  $content,\n  $data,\n  $finalize,\n  $getAttributeIt,\n  $getChildren,\n  $getDataValue,\n  $getParent,\n  $getRealChildrenByNameIt,\n  $hasSettableValue,\n  $indexOf,\n  $insertAt,\n  $isBindable,\n  $isDataValue,\n  $isDescendent,\n  $namespaceId,\n  $nodeName,\n  $removeChild,\n  $setValue,\n  $text,\n  XFAAttribute,\n  XFAObjectArray,\n  XmlObject,\n} from \"./xfa_object.js\";\nimport { BindItems, Field, Items, SetProperty, Text } from \"./template.js\";\nimport { createDataNode, searchNode } from \"./som.js\";\nimport { NamespaceIds } from \"./namespaces.js\";\nimport { warn } from \"../../shared/util.js\";\n\nconst NS_DATASETS = NamespaceIds.datasets.id;\n\nfunction createText(content) {\n  const node = new Text({});\n  node[$content] = content;\n  return node;\n}\n\nclass Binder {\n  constructor(root) {\n    this.root = root;\n    this.datasets = root.datasets;\n    if (root.datasets && root.datasets.data) {\n      this.data = root.datasets.data;\n    } else {\n      this.data = new XmlObject(NamespaceIds.datasets.id, \"data\");\n    }\n    this.emptyMerge = this.data[$getChildren]().length === 0;\n\n    this.root.form = this.form = root.template[$clone]();\n  }\n\n  _isConsumeData() {\n    return !this.emptyMerge && this._mergeMode;\n  }\n\n  _isMatchTemplate() {\n    return !this._isConsumeData();\n  }\n\n  bind() {\n    this._bindElement(this.form, this.data);\n    return this.form;\n  }\n\n  getData() {\n    return this.data;\n  }\n\n  _bindValue(formNode, data, picture) {\n    // Nodes must have the same \"type\": container or value.\n    // Here we make the link between form node and\n    // data node (through $data property): we'll use it\n    // to save form data.\n\n    formNode[$data] = data;\n    if (formNode[$hasSettableValue]()) {\n      if (data[$isDataValue]()) {\n        const value = data[$getDataValue]();\n        // TODO: use picture.\n        formNode[$setValue](createText(value));\n      } else if (\n        formNode instanceof Field &&\n        formNode.ui &&\n        formNode.ui.choiceList &&\n        formNode.ui.choiceList.open === \"multiSelect\"\n      ) {\n        const value = data[$getChildren]()\n          .map(child => child[$content].trim())\n          .join(\"\\n\");\n        formNode[$setValue](createText(value));\n      } else if (this._isConsumeData()) {\n        warn(`XFA - Nodes haven't the same type.`);\n      }\n    } else if (!data[$isDataValue]() || this._isMatchTemplate()) {\n      this._bindElement(formNode, data);\n    } else {\n      warn(`XFA - Nodes haven't the same type.`);\n    }\n  }\n\n  _findDataByNameToConsume(name, isValue, dataNode, global) {\n    if (!name) {\n      return null;\n    }\n\n    // Firstly, we try to find a node with the given name:\n    //  - in dataNode;\n    //  - if not found, then in parent;\n    //  - and if not in found, then in grand-parent.\n    let generator, match;\n    for (let i = 0; i < 3; i++) {\n      generator = dataNode[$getRealChildrenByNameIt](\n        name,\n        /* allTransparent = */ false,\n        /* skipConsumed = */ true\n      );\n      // Try to find a match of the same kind.\n      while (true) {\n        match = generator.next().value;\n        if (!match) {\n          break;\n        }\n\n        if (isValue === match[$isDataValue]()) {\n          return match;\n        }\n      }\n      if (\n        dataNode[$namespaceId] === NamespaceIds.datasets.id &&\n        dataNode[$nodeName] === \"data\"\n      ) {\n        break;\n      }\n      dataNode = dataNode[$getParent]();\n    }\n\n    if (!global) {\n      return null;\n    }\n\n    // Secondly, if global try to find it just under the root of datasets\n    // (which is the location of global variables).\n    generator = this.data[$getRealChildrenByNameIt](\n      name,\n      /* allTransparent = */ true,\n      /* skipConsumed = */ false\n    );\n\n    match = generator.next().value;\n    if (match) {\n      return match;\n    }\n\n    // Thirdly, try to find it in attributes.\n    generator = this.data[$getAttributeIt](name, /* skipConsumed = */ true);\n    match = generator.next().value;\n    if (match && match[$isDataValue]()) {\n      return match;\n    }\n\n    return null;\n  }\n\n  _setProperties(formNode, dataNode) {\n    // For example:\n    // <field name=\"LastName\" ...>\n    //   <setProperty ref=\"$data.Main.Style.NameFont\" target=\"font.typeface\"/>\n    //   <setProperty ref=\"$data.Main.Style.NameSize\" target=\"font.size\"/>\n    //   <setProperty ref=\"$data.Main.Help.LastName\" target=\"assist.toolTip\"/>\n    // </field>\n\n    if (!formNode.hasOwnProperty(\"setProperty\")) {\n      return;\n    }\n\n    for (const { ref, target, connection } of formNode.setProperty.children) {\n      if (connection) {\n        // TODO: evaluate if we should implement this feature.\n        // Skip for security reasons.\n        continue;\n      }\n      if (!ref) {\n        continue;\n      }\n\n      const nodes = searchNode(\n        this.root,\n        dataNode,\n        ref,\n        false /* = dotDotAllowed */,\n        false /* = useCache */\n      );\n      if (!nodes) {\n        warn(`XFA - Invalid reference: ${ref}.`);\n        continue;\n      }\n      const [node] = nodes;\n\n      if (!node[$isDescendent](this.data)) {\n        warn(`XFA - Invalid node: must be a data node.`);\n        continue;\n      }\n\n      const targetNodes = searchNode(\n        this.root,\n        formNode,\n        target,\n        false /* = dotDotAllowed */,\n        false /* = useCache */\n      );\n      if (!targetNodes) {\n        warn(`XFA - Invalid target: ${target}.`);\n        continue;\n      }\n      const [targetNode] = targetNodes;\n\n      if (!targetNode[$isDescendent](formNode)) {\n        warn(`XFA - Invalid target: must be a property or subproperty.`);\n        continue;\n      }\n\n      const targetParent = targetNode[$getParent]();\n      if (\n        targetNode instanceof SetProperty ||\n        targetParent instanceof SetProperty\n      ) {\n        warn(\n          `XFA - Invalid target: cannot be a setProperty or one of its properties.`\n        );\n        continue;\n      }\n\n      if (\n        targetNode instanceof BindItems ||\n        targetParent instanceof BindItems\n      ) {\n        warn(\n          `XFA - Invalid target: cannot be a bindItems or one of its properties.`\n        );\n        continue;\n      }\n\n      const content = node[$text]();\n      const name = targetNode[$nodeName];\n\n      if (targetNode instanceof XFAAttribute) {\n        const attrs = Object.create(null);\n        attrs[name] = content;\n        const obj = Reflect.construct(\n          Object.getPrototypeOf(targetParent).constructor,\n          [attrs]\n        );\n        targetParent[name] = obj[name];\n        continue;\n      }\n\n      if (!targetNode.hasOwnProperty($content)) {\n        warn(`XFA - Invalid node to use in setProperty`);\n        continue;\n      }\n\n      targetNode[$data] = node;\n      targetNode[$content] = content;\n      targetNode[$finalize]();\n    }\n  }\n\n  _bindItems(formNode, dataNode) {\n    // For example:\n    // <field name=\"CardName\"...>\n    //   <bindItems ref=\"$data.main.ccs.cc[*]\" labelRef=\"uiname\"\n    //              valueRef=\"token\"/>\n    //   <ui><choiceList/></ui>\n    // </field>\n\n    if (\n      !formNode.hasOwnProperty(\"items\") ||\n      !formNode.hasOwnProperty(\"bindItems\") ||\n      formNode.bindItems.isEmpty()\n    ) {\n      return;\n    }\n\n    for (const item of formNode.items.children) {\n      formNode[$removeChild](item);\n    }\n\n    formNode.items.clear();\n\n    const labels = new Items({});\n    const values = new Items({});\n\n    formNode[$appendChild](labels);\n    formNode.items.push(labels);\n\n    formNode[$appendChild](values);\n    formNode.items.push(values);\n\n    for (const { ref, labelRef, valueRef, connection } of formNode.bindItems\n      .children) {\n      if (connection) {\n        // TODO: evaluate if we should implement this feature.\n        // Skip for security reasons.\n        continue;\n      }\n      if (!ref) {\n        continue;\n      }\n\n      const nodes = searchNode(\n        this.root,\n        dataNode,\n        ref,\n        false /* = dotDotAllowed */,\n        false /* = useCache */\n      );\n      if (!nodes) {\n        warn(`XFA - Invalid reference: ${ref}.`);\n        continue;\n      }\n      for (const node of nodes) {\n        if (!node[$isDescendent](this.datasets)) {\n          warn(`XFA - Invalid ref (${ref}): must be a datasets child.`);\n          continue;\n        }\n\n        const labelNodes = searchNode(\n          this.root,\n          node,\n          labelRef,\n          true /* = dotDotAllowed */,\n          false /* = useCache */\n        );\n        if (!labelNodes) {\n          warn(`XFA - Invalid label: ${labelRef}.`);\n          continue;\n        }\n        const [labelNode] = labelNodes;\n\n        if (!labelNode[$isDescendent](this.datasets)) {\n          warn(`XFA - Invalid label: must be a datasets child.`);\n          continue;\n        }\n\n        const valueNodes = searchNode(\n          this.root,\n          node,\n          valueRef,\n          true /* = dotDotAllowed */,\n          false /* = useCache */\n        );\n        if (!valueNodes) {\n          warn(`XFA - Invalid value: ${valueRef}.`);\n          continue;\n        }\n        const [valueNode] = valueNodes;\n\n        if (!valueNode[$isDescendent](this.datasets)) {\n          warn(`XFA - Invalid value: must be a datasets child.`);\n          continue;\n        }\n\n        const label = createText(labelNode[$text]());\n        const value = createText(valueNode[$text]());\n\n        labels[$appendChild](label);\n        labels.text.push(label);\n\n        values[$appendChild](value);\n        values.text.push(value);\n      }\n    }\n  }\n\n  _bindOccurrences(formNode, matches, picture) {\n    // Insert nodes which are not in the template but reflect\n    // what we've in data tree.\n\n    let baseClone;\n    if (matches.length > 1) {\n      // Clone before binding to avoid bad state.\n      baseClone = formNode[$clone]();\n      baseClone[$removeChild](baseClone.occur);\n      baseClone.occur = null;\n    }\n\n    this._bindValue(formNode, matches[0], picture);\n    this._setProperties(formNode, matches[0]);\n    this._bindItems(formNode, matches[0]);\n\n    if (matches.length === 1) {\n      return;\n    }\n\n    const parent = formNode[$getParent]();\n    const name = formNode[$nodeName];\n    const pos = parent[$indexOf](formNode);\n\n    for (let i = 1, ii = matches.length; i < ii; i++) {\n      const match = matches[i];\n      const clone = baseClone[$clone]();\n      parent[name].push(clone);\n      parent[$insertAt](pos + i, clone);\n\n      this._bindValue(clone, match, picture);\n      this._setProperties(clone, match);\n      this._bindItems(clone, match);\n    }\n  }\n\n  _createOccurrences(formNode) {\n    if (!this.emptyMerge) {\n      return;\n    }\n\n    const { occur } = formNode;\n    if (!occur || occur.initial <= 1) {\n      return;\n    }\n\n    const parent = formNode[$getParent]();\n    const name = formNode[$nodeName];\n\n    if (!(parent[name] instanceof XFAObjectArray)) {\n      return;\n    }\n\n    let currentNumber;\n    if (formNode.name) {\n      currentNumber = parent[name].children.filter(\n        e => e.name === formNode.name\n      ).length;\n    } else {\n      currentNumber = parent[name].children.length;\n    }\n\n    const pos = parent[$indexOf](formNode) + 1;\n    const ii = occur.initial - currentNumber;\n    if (ii) {\n      const nodeClone = formNode[$clone]();\n      nodeClone[$removeChild](nodeClone.occur);\n      nodeClone.occur = null;\n      parent[name].push(nodeClone);\n      parent[$insertAt](pos, nodeClone);\n\n      for (let i = 1; i < ii; i++) {\n        const clone = nodeClone[$clone]();\n        parent[name].push(clone);\n        parent[$insertAt](pos + i, clone);\n      }\n    }\n  }\n\n  _getOccurInfo(formNode) {\n    const { name, occur } = formNode;\n    if (!occur || !name) {\n      return [1, 1];\n    }\n    const max = occur.max === -1 ? Infinity : occur.max;\n    return [occur.min, max];\n  }\n\n  _setAndBind(formNode, dataNode) {\n    this._setProperties(formNode, dataNode);\n    this._bindItems(formNode, dataNode);\n    this._bindElement(formNode, dataNode);\n  }\n\n  _bindElement(formNode, dataNode) {\n    // Some nodes can be useless because min=0 so remove them\n    // after the loop to avoid bad things.\n\n    const uselessNodes = [];\n\n    this._createOccurrences(formNode);\n\n    for (const child of formNode[$getChildren]()) {\n      if (child[$data]) {\n        // Already bound.\n        continue;\n      }\n\n      if (this._mergeMode === undefined && child[$nodeName] === \"subform\") {\n        this._mergeMode = child.mergeMode === \"consumeData\";\n\n        // XFA specs p. 182:\n        // The highest-level subform and the data node representing\n        // the current record are special; they are always\n        // bound even if their names don't match.\n        const dataChildren = dataNode[$getChildren]();\n        if (dataChildren.length > 0) {\n          this._bindOccurrences(child, [dataChildren[0]], null);\n        } else if (this.emptyMerge) {\n          const nsId =\n            dataNode[$namespaceId] === NS_DATASETS\n              ? -1\n              : dataNode[$namespaceId];\n          const dataChild = (child[$data] = new XmlObject(\n            nsId,\n            child.name || \"root\"\n          ));\n          dataNode[$appendChild](dataChild);\n          this._bindElement(child, dataChild);\n        }\n        continue;\n      }\n\n      if (!child[$isBindable]()) {\n        // The node cannot contain some new data so there is nothing\n        // to create in the data node.\n        continue;\n      }\n\n      let global = false;\n      let picture = null;\n      let ref = null;\n      let match = null;\n      if (child.bind) {\n        switch (child.bind.match) {\n          case \"none\":\n            this._setAndBind(child, dataNode);\n            continue;\n          case \"global\":\n            global = true;\n            break;\n          case \"dataRef\":\n            if (!child.bind.ref) {\n              warn(`XFA - ref is empty in node ${child[$nodeName]}.`);\n              this._setAndBind(child, dataNode);\n              continue;\n            }\n            ref = child.bind.ref;\n            break;\n          default:\n            break;\n        }\n        if (child.bind.picture) {\n          picture = child.bind.picture[$content];\n        }\n      }\n\n      const [min, max] = this._getOccurInfo(child);\n\n      if (ref) {\n        // Don't use a cache for searching: nodes can change during binding.\n        match = searchNode(\n          this.root,\n          dataNode,\n          ref,\n          true /* = dotDotAllowed */,\n          false /* = useCache */\n        );\n        if (match === null) {\n          // Nothing found: we must create some nodes in data in order\n          // to have something to match with the given expression.\n          // See http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.364.2157&rep=rep1&type=pdf#page=199\n          match = createDataNode(this.data, dataNode, ref);\n          if (!match) {\n            // For example if the node contains a .(...) then it isn't\n            // findable.\n            // TODO: remove this when .(...) is implemented.\n            continue;\n          }\n          if (this._isConsumeData()) {\n            match[$consumed] = true;\n          }\n\n          // Don't bind the value in newly created node because it's empty.\n          this._setAndBind(child, match);\n          continue;\n        } else {\n          if (this._isConsumeData()) {\n            // Filter out consumed nodes.\n            match = match.filter(node => !node[$consumed]);\n          }\n          if (match.length > max) {\n            match = match.slice(0, max);\n          } else if (match.length === 0) {\n            match = null;\n          }\n          if (match && this._isConsumeData()) {\n            match.forEach(node => {\n              node[$consumed] = true;\n            });\n          }\n        }\n      } else {\n        if (!child.name) {\n          this._setAndBind(child, dataNode);\n          continue;\n        }\n        if (this._isConsumeData()) {\n          // In consumeData mode, search for the next node with the given name.\n          // occurs.max gives us the max number of node to match.\n          const matches = [];\n          while (matches.length < max) {\n            const found = this._findDataByNameToConsume(\n              child.name,\n              child[$hasSettableValue](),\n              dataNode,\n              global\n            );\n\n            if (!found) {\n              break;\n            }\n            found[$consumed] = true;\n            matches.push(found);\n          }\n          match = matches.length > 0 ? matches : null;\n        } else {\n          // If we've an empty merge, there are no reason\n          // to make multiple bind so skip consumed nodes.\n          match = dataNode[$getRealChildrenByNameIt](\n            child.name,\n            /* allTransparent = */ false,\n            /* skipConsumed = */ this.emptyMerge\n          ).next().value;\n          if (!match) {\n            // If there is no match (no data) and `min === 0` then\n            // the container is entirely excluded.\n            // https://www.pdfa.org/norm-refs/XFA-3_3.pdf#G12.1428332\n            if (min === 0) {\n              uselessNodes.push(child);\n              continue;\n            }\n            // We're in matchTemplate mode so create a node in data to reflect\n            // what we've in template.\n            const nsId =\n              dataNode[$namespaceId] === NS_DATASETS\n                ? -1\n                : dataNode[$namespaceId];\n            match = child[$data] = new XmlObject(nsId, child.name);\n            if (this.emptyMerge) {\n              match[$consumed] = true;\n            }\n            dataNode[$appendChild](match);\n\n            // Don't bind the value in newly created node because it's empty.\n            this._setAndBind(child, match);\n            continue;\n          }\n          if (this.emptyMerge) {\n            match[$consumed] = true;\n          }\n          match = [match];\n        }\n      }\n\n      if (match) {\n        this._bindOccurrences(child, match, picture);\n      } else if (min > 0) {\n        this._setAndBind(child, dataNode);\n      } else {\n        uselessNodes.push(child);\n      }\n    }\n\n    uselessNodes.forEach(node => node[$getParent]()[$removeChild](node));\n  }\n}\n\nexport { Binder };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n  $acceptWhitespace,\n  $addHTML,\n  $appendChild,\n  $childrenToHTML,\n  $clean,\n  $cleanPage,\n  $content,\n  $data,\n  $extra,\n  $finalize,\n  $flushHTML,\n  $getAvailableSpace,\n  $getChildren,\n  $getContainedChildren,\n  $getExtra,\n  $getNextPage,\n  $getParent,\n  $getSubformParent,\n  $getTemplateRoot,\n  $globalData,\n  $hasSettableValue,\n  $ids,\n  $isBindable,\n  $isCDATAXml,\n  $isSplittable,\n  $isThereMoreWidth,\n  $isTransparent,\n  $isUsable,\n  $namespaceId,\n  $nodeName,\n  $onChild,\n  $onText,\n  $popPara,\n  $pushPara,\n  $removeChild,\n  $searchNode,\n  $setSetAttributes,\n  $setValue,\n  $tabIndex,\n  $text,\n  $toHTML,\n  $toPages,\n  $toStyle,\n  $uid,\n  ContentObject,\n  Option01,\n  OptionObject,\n  StringObject,\n  XFAObject,\n  XFAObjectArray,\n} from \"./xfa_object.js\";\nimport { $buildXFAObject, NamespaceIds } from \"./namespaces.js\";\nimport {\n  addHTML,\n  checkDimensions,\n  flushHTML,\n  getAvailableSpace,\n} from \"./layout.js\";\nimport {\n  computeBbox,\n  createWrapper,\n  fixDimensions,\n  fixTextIndent,\n  fixURL,\n  isPrintOnly,\n  layoutClass,\n  layoutNode,\n  measureToString,\n  setAccess,\n  setFontFamily,\n  setMinMaxDimensions,\n  setPara,\n  toStyle,\n} from \"./html_utils.js\";\nimport {\n  getBBox,\n  getColor,\n  getFloat,\n  getInteger,\n  getKeyword,\n  getMeasurement,\n  getRatio,\n  getRelevant,\n  getStringOption,\n  HTMLResult,\n} from \"./utils.js\";\nimport { stringToBytes, Util, warn } from \"../../shared/util.js\";\nimport { getMetrics } from \"./fonts.js\";\nimport { recoverJsURL } from \"../core_utils.js\";\nimport { searchNode } from \"./som.js\";\n\nconst TEMPLATE_NS_ID = NamespaceIds.template.id;\nconst SVG_NS = \"http://www.w3.org/2000/svg\";\n\n// In case of lr-tb (and rl-tb) layouts, we try:\n//  - to put the container at the end of a line\n//  - and if it fails we try on the next line.\n// If both tries failed then it's up to the parent\n// to handle the situation.\nconst MAX_ATTEMPTS_FOR_LRTB_LAYOUT = 2;\n\n// It's possible to have a bug in the layout and so as\n// a consequence we could loop for ever in Template::toHTML()\n// so in order to avoid that (and avoid a OOM crash) we break\n// the loop after having MAX_EMPTY_PAGES empty pages.\nconst MAX_EMPTY_PAGES = 3;\n\n// Default value to start with for the tabIndex property.\nconst DEFAULT_TAB_INDEX = 5000;\n\nconst HEADING_PATTERN = /^H(\\d+)$/;\n\n// Allowed mime types for images\nconst MIMES = new Set([\n  \"image/gif\",\n  \"image/jpeg\",\n  \"image/jpg\",\n  \"image/pjpeg\",\n  \"image/png\",\n  \"image/apng\",\n  \"image/x-png\",\n  \"image/bmp\",\n  \"image/x-ms-bmp\",\n  \"image/tiff\",\n  \"image/tif\",\n  \"application/octet-stream\",\n]);\n\nconst IMAGES_HEADERS = [\n  [[0x42, 0x4d], \"image/bmp\"],\n  [[0xff, 0xd8, 0xff], \"image/jpeg\"],\n  [[0x49, 0x49, 0x2a, 0x00], \"image/tiff\"],\n  [[0x4d, 0x4d, 0x00, 0x2a], \"image/tiff\"],\n  [[0x47, 0x49, 0x46, 0x38, 0x39, 0x61], \"image/gif\"],\n  [[0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a], \"image/png\"],\n];\n\nfunction getBorderDims(node) {\n  if (!node || !node.border) {\n    return { w: 0, h: 0 };\n  }\n\n  const borderExtra = node.border[$getExtra]();\n  if (!borderExtra) {\n    return { w: 0, h: 0 };\n  }\n\n  return {\n    w:\n      borderExtra.widths[0] +\n      borderExtra.widths[2] +\n      borderExtra.insets[0] +\n      borderExtra.insets[2],\n    h:\n      borderExtra.widths[1] +\n      borderExtra.widths[3] +\n      borderExtra.insets[1] +\n      borderExtra.insets[3],\n  };\n}\n\nfunction hasMargin(node) {\n  return (\n    node.margin &&\n    (node.margin.topInset ||\n      node.margin.rightInset ||\n      node.margin.bottomInset ||\n      node.margin.leftInset)\n  );\n}\n\nfunction _setValue(templateNode, value) {\n  if (!templateNode.value) {\n    const nodeValue = new Value({});\n    templateNode[$appendChild](nodeValue);\n    templateNode.value = nodeValue;\n  }\n  templateNode.value[$setValue](value);\n}\n\nfunction* getContainedChildren(node) {\n  for (const child of node[$getChildren]()) {\n    if (child instanceof SubformSet) {\n      yield* child[$getContainedChildren]();\n      continue;\n    }\n    yield child;\n  }\n}\n\nfunction setTabIndex(node) {\n  while (node) {\n    if (!node.traversal) {\n      node[$tabIndex] = node[$getParent]()[$tabIndex];\n      return;\n    }\n\n    if (node[$tabIndex]) {\n      return;\n    }\n\n    let next = null;\n    for (const child of node.traversal[$getChildren]()) {\n      if (child.operation === \"next\") {\n        next = child;\n        break;\n      }\n    }\n\n    if (!next || !next.ref) {\n      node[$tabIndex] = node[$getParent]()[$tabIndex];\n      return;\n    }\n\n    const root = node[$getTemplateRoot]();\n    node[$tabIndex] = ++root[$tabIndex];\n\n    const ref = root[$searchNode](next.ref, node);\n    if (!ref) {\n      return;\n    }\n\n    node = ref[0];\n  }\n}\n\nfunction applyAssist(obj, attributes) {\n  const assist = obj.assist;\n  if (assist) {\n    const assistTitle = assist[$toHTML]();\n    if (assistTitle) {\n      attributes.title = assistTitle;\n    }\n    const role = assist.role;\n    const match = role.match(HEADING_PATTERN);\n    if (match) {\n      const ariaRole = \"heading\";\n      const ariaLevel = match[1];\n      attributes.role = ariaRole;\n      attributes[\"aria-level\"] = ariaLevel;\n    }\n  }\n  // XXX: We could end up in a situation where the obj has a heading role and\n  // is also a table. For now prioritize the table role.\n  if (obj.layout === \"table\") {\n    attributes.role = \"table\";\n  } else if (obj.layout === \"row\") {\n    attributes.role = \"row\";\n  } else {\n    const parent = obj[$getParent]();\n    if (parent.layout === \"row\") {\n      if (parent.assist && parent.assist.role === \"TH\") {\n        attributes.role = \"columnheader\";\n      } else {\n        attributes.role = \"cell\";\n      }\n    }\n  }\n}\n\nfunction ariaLabel(obj) {\n  if (!obj.assist) {\n    return null;\n  }\n  const assist = obj.assist;\n  if (assist.speak && assist.speak[$content] !== \"\") {\n    return assist.speak[$content];\n  }\n  if (assist.toolTip) {\n    return assist.toolTip[$content];\n  }\n  // TODO: support finding the related caption element. See xfa_bug1718037.pdf\n  // for an example.\n  return null;\n}\n\nfunction valueToHtml(value) {\n  return HTMLResult.success({\n    name: \"div\",\n    attributes: {\n      class: [\"xfaRich\"],\n      style: Object.create(null),\n    },\n    children: [\n      {\n        name: \"span\",\n        attributes: {\n          style: Object.create(null),\n        },\n        value,\n      },\n    ],\n  });\n}\n\nfunction setFirstUnsplittable(node) {\n  const root = node[$getTemplateRoot]();\n  if (root[$extra].firstUnsplittable === null) {\n    root[$extra].firstUnsplittable = node;\n    root[$extra].noLayoutFailure = true;\n  }\n}\n\nfunction unsetFirstUnsplittable(node) {\n  const root = node[$getTemplateRoot]();\n  if (root[$extra].firstUnsplittable === node) {\n    root[$extra].noLayoutFailure = false;\n  }\n}\n\nfunction handleBreak(node) {\n  if (node[$extra]) {\n    return false;\n  }\n\n  node[$extra] = Object.create(null);\n\n  if (node.targetType === \"auto\") {\n    return false;\n  }\n\n  const root = node[$getTemplateRoot]();\n  let target = null;\n  if (node.target) {\n    target = root[$searchNode](node.target, node[$getParent]());\n    if (!target) {\n      return false;\n    }\n    target = target[0];\n  }\n\n  const { currentPageArea, currentContentArea } = root[$extra];\n\n  if (node.targetType === \"pageArea\") {\n    if (!(target instanceof PageArea)) {\n      target = null;\n    }\n\n    if (node.startNew) {\n      node[$extra].target = target || currentPageArea;\n      return true;\n    } else if (target && target !== currentPageArea) {\n      node[$extra].target = target;\n      return true;\n    }\n\n    return false;\n  }\n\n  if (!(target instanceof ContentArea)) {\n    target = null;\n  }\n\n  const pageArea = target && target[$getParent]();\n\n  let index;\n  let nextPageArea = pageArea;\n  if (node.startNew) {\n    // startNew === 1 so we must create a new container (pageArea or\n    // contentArea).\n    if (target) {\n      const contentAreas = pageArea.contentArea.children;\n      const indexForCurrent = contentAreas.indexOf(currentContentArea);\n      const indexForTarget = contentAreas.indexOf(target);\n      if (indexForCurrent !== -1 && indexForCurrent < indexForTarget) {\n        // The next container is after the current container so\n        // we can stay on the same page.\n        nextPageArea = null;\n      }\n      index = indexForTarget - 1;\n    } else {\n      index = currentPageArea.contentArea.children.indexOf(currentContentArea);\n    }\n  } else if (target && target !== currentContentArea) {\n    const contentAreas = pageArea.contentArea.children;\n    index = contentAreas.indexOf(target) - 1;\n    nextPageArea = pageArea === currentPageArea ? null : pageArea;\n  } else {\n    return false;\n  }\n\n  node[$extra].target = nextPageArea;\n  node[$extra].index = index;\n  return true;\n}\n\nfunction handleOverflow(node, extraNode, space) {\n  const root = node[$getTemplateRoot]();\n  const saved = root[$extra].noLayoutFailure;\n  const savedMethod = extraNode[$getSubformParent];\n\n  // Replace $getSubformParent to emulate that extraNode is just\n  // under node.\n  extraNode[$getSubformParent] = () => node;\n\n  root[$extra].noLayoutFailure = true;\n  const res = extraNode[$toHTML](space);\n  node[$addHTML](res.html, res.bbox);\n  root[$extra].noLayoutFailure = saved;\n  extraNode[$getSubformParent] = savedMethod;\n}\n\nclass AppearanceFilter extends StringObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"appearanceFilter\");\n    this.id = attributes.id || \"\";\n    this.type = getStringOption(attributes.type, [\"optional\", \"required\"]);\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n  }\n}\n\nclass Arc extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"arc\", /* hasChildren = */ true);\n    this.circular = getInteger({\n      data: attributes.circular,\n      defaultValue: 0,\n      validate: x => x === 1,\n    });\n    this.hand = getStringOption(attributes.hand, [\"even\", \"left\", \"right\"]);\n    this.id = attributes.id || \"\";\n    this.startAngle = getFloat({\n      data: attributes.startAngle,\n      defaultValue: 0,\n      validate: x => true,\n    });\n    this.sweepAngle = getFloat({\n      data: attributes.sweepAngle,\n      defaultValue: 360,\n      validate: x => true,\n    });\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.edge = null;\n    this.fill = null;\n  }\n\n  [$toHTML]() {\n    const edge = this.edge ? this.edge : new Edge({});\n    const edgeStyle = edge[$toStyle]();\n    const style = Object.create(null);\n    if (this.fill && this.fill.presence === \"visible\") {\n      Object.assign(style, this.fill[$toStyle]());\n    } else {\n      style.fill = \"transparent\";\n    }\n    style.strokeWidth = measureToString(\n      edge.presence === \"visible\" ? edge.thickness : 0\n    );\n    style.stroke = edgeStyle.color;\n    let arc;\n    const attributes = {\n      xmlns: SVG_NS,\n      style: {\n        width: \"100%\",\n        height: \"100%\",\n        overflow: \"visible\",\n      },\n    };\n\n    if (this.sweepAngle === 360) {\n      arc = {\n        name: \"ellipse\",\n        attributes: {\n          xmlns: SVG_NS,\n          cx: \"50%\",\n          cy: \"50%\",\n          rx: \"50%\",\n          ry: \"50%\",\n          style,\n        },\n      };\n    } else {\n      const startAngle = (this.startAngle * Math.PI) / 180;\n      const sweepAngle = (this.sweepAngle * Math.PI) / 180;\n      const largeArc = this.sweepAngle > 180 ? 1 : 0;\n      const [x1, y1, x2, y2] = [\n        50 * (1 + Math.cos(startAngle)),\n        50 * (1 - Math.sin(startAngle)),\n        50 * (1 + Math.cos(startAngle + sweepAngle)),\n        50 * (1 - Math.sin(startAngle + sweepAngle)),\n      ];\n\n      arc = {\n        name: \"path\",\n        attributes: {\n          xmlns: SVG_NS,\n          d: `M ${x1} ${y1} A 50 50 0 ${largeArc} 0 ${x2} ${y2}`,\n          vectorEffect: \"non-scaling-stroke\",\n          style,\n        },\n      };\n\n      Object.assign(attributes, {\n        viewBox: \"0 0 100 100\",\n        preserveAspectRatio: \"none\",\n      });\n    }\n\n    const svg = {\n      name: \"svg\",\n      children: [arc],\n      attributes,\n    };\n\n    const parent = this[$getParent]()[$getParent]();\n    if (hasMargin(parent)) {\n      return HTMLResult.success({\n        name: \"div\",\n        attributes: {\n          style: {\n            display: \"inline\",\n            width: \"100%\",\n            height: \"100%\",\n          },\n        },\n        children: [svg],\n      });\n    }\n\n    svg.attributes.style.position = \"absolute\";\n    return HTMLResult.success(svg);\n  }\n}\n\nclass Area extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"area\", /* hasChildren = */ true);\n    this.colSpan = getInteger({\n      data: attributes.colSpan,\n      defaultValue: 1,\n      validate: n => n >= 1 || n === -1,\n    });\n    this.id = attributes.id || \"\";\n    this.name = attributes.name || \"\";\n    this.relevant = getRelevant(attributes.relevant);\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.x = getMeasurement(attributes.x, \"0pt\");\n    this.y = getMeasurement(attributes.y, \"0pt\");\n    this.desc = null;\n    this.extras = null;\n    this.area = new XFAObjectArray();\n    this.draw = new XFAObjectArray();\n    this.exObject = new XFAObjectArray();\n    this.exclGroup = new XFAObjectArray();\n    this.field = new XFAObjectArray();\n    this.subform = new XFAObjectArray();\n    this.subformSet = new XFAObjectArray();\n  }\n\n  *[$getContainedChildren]() {\n    // This function is overriden in order to fake that subforms under\n    // this set are in fact under parent subform.\n    yield* getContainedChildren(this);\n  }\n\n  [$isTransparent]() {\n    return true;\n  }\n\n  [$isBindable]() {\n    return true;\n  }\n\n  [$addHTML](html, bbox) {\n    const [x, y, w, h] = bbox;\n    this[$extra].width = Math.max(this[$extra].width, x + w);\n    this[$extra].height = Math.max(this[$extra].height, y + h);\n\n    this[$extra].children.push(html);\n  }\n\n  [$getAvailableSpace]() {\n    return this[$extra].availableSpace;\n  }\n\n  [$toHTML](availableSpace) {\n    // TODO: incomplete.\n    const style = toStyle(this, \"position\");\n    const attributes = {\n      style,\n      id: this[$uid],\n      class: [\"xfaArea\"],\n    };\n\n    if (isPrintOnly(this)) {\n      attributes.class.push(\"xfaPrintOnly\");\n    }\n\n    if (this.name) {\n      attributes.xfaName = this.name;\n    }\n\n    const children = [];\n    this[$extra] = {\n      children,\n      width: 0,\n      height: 0,\n      availableSpace,\n    };\n\n    const result = this[$childrenToHTML]({\n      filter: new Set([\n        \"area\",\n        \"draw\",\n        \"field\",\n        \"exclGroup\",\n        \"subform\",\n        \"subformSet\",\n      ]),\n      include: true,\n    });\n\n    if (!result.success) {\n      if (result.isBreak()) {\n        return result;\n      }\n      // Nothing to propose for the element which doesn't fit the\n      // available space.\n      delete this[$extra];\n      return HTMLResult.FAILURE;\n    }\n\n    style.width = measureToString(this[$extra].width);\n    style.height = measureToString(this[$extra].height);\n\n    const html = {\n      name: \"div\",\n      attributes,\n      children,\n    };\n\n    const bbox = [this.x, this.y, this[$extra].width, this[$extra].height];\n    delete this[$extra];\n\n    return HTMLResult.success(html, bbox);\n  }\n}\n\nclass Assist extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"assist\", /* hasChildren = */ true);\n    this.id = attributes.id || \"\";\n    this.role = attributes.role || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.speak = null;\n    this.toolTip = null;\n  }\n\n  [$toHTML]() {\n    return this.toolTip && this.toolTip[$content]\n      ? this.toolTip[$content]\n      : null;\n  }\n}\n\nclass Barcode extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"barcode\", /* hasChildren = */ true);\n    this.charEncoding = getKeyword({\n      data: attributes.charEncoding\n        ? attributes.charEncoding.toLowerCase()\n        : \"\",\n      defaultValue: \"\",\n      validate: k =>\n        [\n          \"utf-8\",\n          \"big-five\",\n          \"fontspecific\",\n          \"gbk\",\n          \"gb-18030\",\n          \"gb-2312\",\n          \"ksc-5601\",\n          \"none\",\n          \"shift-jis\",\n          \"ucs-2\",\n          \"utf-16\",\n        ].includes(k) || k.match(/iso-8859-\\d{2}/),\n    });\n    this.checksum = getStringOption(attributes.checksum, [\n      \"none\",\n      \"1mod10\",\n      \"1mod10_1mod11\",\n      \"2mod10\",\n      \"auto\",\n    ]);\n    this.dataColumnCount = getInteger({\n      data: attributes.dataColumnCount,\n      defaultValue: -1,\n      validate: x => x >= 0,\n    });\n    this.dataLength = getInteger({\n      data: attributes.dataLength,\n      defaultValue: -1,\n      validate: x => x >= 0,\n    });\n    this.dataPrep = getStringOption(attributes.dataPrep, [\n      \"none\",\n      \"flateCompress\",\n    ]);\n    this.dataRowCount = getInteger({\n      data: attributes.dataRowCount,\n      defaultValue: -1,\n      validate: x => x >= 0,\n    });\n    this.endChar = attributes.endChar || \"\";\n    this.errorCorrectionLevel = getInteger({\n      data: attributes.errorCorrectionLevel,\n      defaultValue: -1,\n      validate: x => x >= 0 && x <= 8,\n    });\n    this.id = attributes.id || \"\";\n    this.moduleHeight = getMeasurement(attributes.moduleHeight, \"5mm\");\n    this.moduleWidth = getMeasurement(attributes.moduleWidth, \"0.25mm\");\n    this.printCheckDigit = getInteger({\n      data: attributes.printCheckDigit,\n      defaultValue: 0,\n      validate: x => x === 1,\n    });\n    this.rowColumnRatio = getRatio(attributes.rowColumnRatio);\n    this.startChar = attributes.startChar || \"\";\n    this.textLocation = getStringOption(attributes.textLocation, [\n      \"below\",\n      \"above\",\n      \"aboveEmbedded\",\n      \"belowEmbedded\",\n      \"none\",\n    ]);\n    this.truncate = getInteger({\n      data: attributes.truncate,\n      defaultValue: 0,\n      validate: x => x === 1,\n    });\n    this.type = getStringOption(\n      attributes.type ? attributes.type.toLowerCase() : \"\",\n      [\n        \"aztec\",\n        \"codabar\",\n        \"code2of5industrial\",\n        \"code2of5interleaved\",\n        \"code2of5matrix\",\n        \"code2of5standard\",\n        \"code3of9\",\n        \"code3of9extended\",\n        \"code11\",\n        \"code49\",\n        \"code93\",\n        \"code128\",\n        \"code128a\",\n        \"code128b\",\n        \"code128c\",\n        \"code128sscc\",\n        \"datamatrix\",\n        \"ean8\",\n        \"ean8add2\",\n        \"ean8add5\",\n        \"ean13\",\n        \"ean13add2\",\n        \"ean13add5\",\n        \"ean13pwcd\",\n        \"fim\",\n        \"logmars\",\n        \"maxicode\",\n        \"msi\",\n        \"pdf417\",\n        \"pdf417macro\",\n        \"plessey\",\n        \"postauscust2\",\n        \"postauscust3\",\n        \"postausreplypaid\",\n        \"postausstandard\",\n        \"postukrm4scc\",\n        \"postusdpbc\",\n        \"postusimb\",\n        \"postusstandard\",\n        \"postus5zip\",\n        \"qrcode\",\n        \"rfid\",\n        \"rss14\",\n        \"rss14expanded\",\n        \"rss14limited\",\n        \"rss14stacked\",\n        \"rss14stackedomni\",\n        \"rss14truncated\",\n        \"telepen\",\n        \"ucc128\",\n        \"ucc128random\",\n        \"ucc128sscc\",\n        \"upca\",\n        \"upcaadd2\",\n        \"upcaadd5\",\n        \"upcapwcd\",\n        \"upce\",\n        \"upceadd2\",\n        \"upceadd5\",\n        \"upcean2\",\n        \"upcean5\",\n        \"upsmaxicode\",\n      ]\n    );\n    this.upsMode = getStringOption(attributes.upsMode, [\n      \"usCarrier\",\n      \"internationalCarrier\",\n      \"secureSymbol\",\n      \"standardSymbol\",\n    ]);\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.wideNarrowRatio = getRatio(attributes.wideNarrowRatio);\n    this.encrypt = null;\n    this.extras = null;\n  }\n}\n\nclass Bind extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"bind\", /* hasChildren = */ true);\n    this.match = getStringOption(attributes.match, [\n      \"once\",\n      \"dataRef\",\n      \"global\",\n      \"none\",\n    ]);\n    this.ref = attributes.ref || \"\";\n    this.picture = null;\n  }\n}\n\nclass BindItems extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"bindItems\");\n    this.connection = attributes.connection || \"\";\n    this.labelRef = attributes.labelRef || \"\";\n    this.ref = attributes.ref || \"\";\n    this.valueRef = attributes.valueRef || \"\";\n  }\n}\n\nclass Bookend extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"bookend\");\n    this.id = attributes.id || \"\";\n    this.leader = attributes.leader || \"\";\n    this.trailer = attributes.trailer || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n  }\n}\n\nclass BooleanElement extends Option01 {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"boolean\");\n    this.id = attributes.id || \"\";\n    this.name = attributes.name || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n  }\n\n  [$toHTML](availableSpace) {\n    return valueToHtml(this[$content] === 1 ? \"1\" : \"0\");\n  }\n}\n\nclass Border extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"border\", /* hasChildren = */ true);\n    this.break = getStringOption(attributes.break, [\"close\", \"open\"]);\n    this.hand = getStringOption(attributes.hand, [\"even\", \"left\", \"right\"]);\n    this.id = attributes.id || \"\";\n    this.presence = getStringOption(attributes.presence, [\n      \"visible\",\n      \"hidden\",\n      \"inactive\",\n      \"invisible\",\n    ]);\n    this.relevant = getRelevant(attributes.relevant);\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.corner = new XFAObjectArray(4);\n    this.edge = new XFAObjectArray(4);\n    this.extras = null;\n    this.fill = null;\n    this.margin = null;\n  }\n\n  [$getExtra]() {\n    if (!this[$extra]) {\n      const edges = this.edge.children.slice();\n      if (edges.length < 4) {\n        const defaultEdge = edges[edges.length - 1] || new Edge({});\n        for (let i = edges.length; i < 4; i++) {\n          edges.push(defaultEdge);\n        }\n      }\n\n      const widths = edges.map(edge => edge.thickness);\n      const insets = [0, 0, 0, 0];\n      if (this.margin) {\n        insets[0] = this.margin.topInset;\n        insets[1] = this.margin.rightInset;\n        insets[2] = this.margin.bottomInset;\n        insets[3] = this.margin.leftInset;\n      }\n      this[$extra] = { widths, insets, edges };\n    }\n    return this[$extra];\n  }\n\n  [$toStyle]() {\n    // TODO: incomplete (hand).\n    const { edges } = this[$getExtra]();\n    const edgeStyles = edges.map(node => {\n      const style = node[$toStyle]();\n      style.color = style.color || \"#000000\";\n      return style;\n    });\n\n    const style = Object.create(null);\n    if (this.margin) {\n      Object.assign(style, this.margin[$toStyle]());\n    }\n\n    if (this.fill && this.fill.presence === \"visible\") {\n      Object.assign(style, this.fill[$toStyle]());\n    }\n\n    if (this.corner.children.some(node => node.radius !== 0)) {\n      const cornerStyles = this.corner.children.map(node => node[$toStyle]());\n      if (cornerStyles.length === 2 || cornerStyles.length === 3) {\n        const last = cornerStyles[cornerStyles.length - 1];\n        for (let i = cornerStyles.length; i < 4; i++) {\n          cornerStyles.push(last);\n        }\n      }\n\n      style.borderRadius = cornerStyles.map(s => s.radius).join(\" \");\n    }\n\n    switch (this.presence) {\n      case \"invisible\":\n      case \"hidden\":\n        style.borderStyle = \"\";\n        break;\n      case \"inactive\":\n        style.borderStyle = \"none\";\n        break;\n      default:\n        style.borderStyle = edgeStyles.map(s => s.style).join(\" \");\n        break;\n    }\n\n    style.borderWidth = edgeStyles.map(s => s.width).join(\" \");\n    style.borderColor = edgeStyles.map(s => s.color).join(\" \");\n\n    return style;\n  }\n}\n\nclass Break extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"break\", /* hasChildren = */ true);\n    this.after = getStringOption(attributes.after, [\n      \"auto\",\n      \"contentArea\",\n      \"pageArea\",\n      \"pageEven\",\n      \"pageOdd\",\n    ]);\n    this.afterTarget = attributes.afterTarget || \"\";\n    this.before = getStringOption(attributes.before, [\n      \"auto\",\n      \"contentArea\",\n      \"pageArea\",\n      \"pageEven\",\n      \"pageOdd\",\n    ]);\n    this.beforeTarget = attributes.beforeTarget || \"\";\n    this.bookendLeader = attributes.bookendLeader || \"\";\n    this.bookendTrailer = attributes.bookendTrailer || \"\";\n    this.id = attributes.id || \"\";\n    this.overflowLeader = attributes.overflowLeader || \"\";\n    this.overflowTarget = attributes.overflowTarget || \"\";\n    this.overflowTrailer = attributes.overflowTrailer || \"\";\n    this.startNew = getInteger({\n      data: attributes.startNew,\n      defaultValue: 0,\n      validate: x => x === 1,\n    });\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.extras = null;\n  }\n}\n\nclass BreakAfter extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"breakAfter\", /* hasChildren = */ true);\n    this.id = attributes.id || \"\";\n    this.leader = attributes.leader || \"\";\n    this.startNew = getInteger({\n      data: attributes.startNew,\n      defaultValue: 0,\n      validate: x => x === 1,\n    });\n    this.target = attributes.target || \"\";\n    this.targetType = getStringOption(attributes.targetType, [\n      \"auto\",\n      \"contentArea\",\n      \"pageArea\",\n    ]);\n    this.trailer = attributes.trailer || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.script = null;\n  }\n}\n\nclass BreakBefore extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"breakBefore\", /* hasChildren = */ true);\n    this.id = attributes.id || \"\";\n    this.leader = attributes.leader || \"\";\n    this.startNew = getInteger({\n      data: attributes.startNew,\n      defaultValue: 0,\n      validate: x => x === 1,\n    });\n    this.target = attributes.target || \"\";\n    this.targetType = getStringOption(attributes.targetType, [\n      \"auto\",\n      \"contentArea\",\n      \"pageArea\",\n    ]);\n    this.trailer = attributes.trailer || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.script = null;\n  }\n\n  [$toHTML](availableSpace) {\n    this[$extra] = {};\n    return HTMLResult.FAILURE;\n  }\n}\n\nclass Button extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"button\", /* hasChildren = */ true);\n    this.highlight = getStringOption(attributes.highlight, [\n      \"inverted\",\n      \"none\",\n      \"outline\",\n      \"push\",\n    ]);\n    this.id = attributes.id || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.extras = null;\n  }\n\n  [$toHTML](availableSpace) {\n    // TODO: highlight.\n\n    const parent = this[$getParent]();\n    const grandpa = parent[$getParent]();\n    const htmlButton = {\n      name: \"button\",\n      attributes: {\n        id: this[$uid],\n        class: [\"xfaButton\"],\n        style: {},\n      },\n      children: [],\n    };\n\n    for (const event of grandpa.event.children) {\n      // if (true) break;\n      if (event.activity !== \"click\" || !event.script) {\n        continue;\n      }\n      const jsURL = recoverJsURL(event.script[$content]);\n      if (!jsURL) {\n        continue;\n      }\n      const href = fixURL(jsURL.url);\n      if (!href) {\n        continue;\n      }\n\n      // we've an url so generate a <a>\n      htmlButton.children.push({\n        name: \"a\",\n        attributes: {\n          id: \"link\" + this[$uid],\n          href,\n          newWindow: jsURL.newWindow,\n          class: [\"xfaLink\"],\n          style: {},\n        },\n        children: [],\n      });\n    }\n\n    return HTMLResult.success(htmlButton);\n  }\n}\n\nclass Calculate extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"calculate\", /* hasChildren = */ true);\n    this.id = attributes.id || \"\";\n    this.override = getStringOption(attributes.override, [\n      \"disabled\",\n      \"error\",\n      \"ignore\",\n      \"warning\",\n    ]);\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.extras = null;\n    this.message = null;\n    this.script = null;\n  }\n}\n\nclass Caption extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"caption\", /* hasChildren = */ true);\n    this.id = attributes.id || \"\";\n    this.placement = getStringOption(attributes.placement, [\n      \"left\",\n      \"bottom\",\n      \"inline\",\n      \"right\",\n      \"top\",\n    ]);\n    this.presence = getStringOption(attributes.presence, [\n      \"visible\",\n      \"hidden\",\n      \"inactive\",\n      \"invisible\",\n    ]);\n    this.reserve = Math.ceil(getMeasurement(attributes.reserve));\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.extras = null;\n    this.font = null;\n    this.margin = null;\n    this.para = null;\n    this.value = null;\n  }\n\n  [$setValue](value) {\n    _setValue(this, value);\n  }\n\n  [$getExtra](availableSpace) {\n    if (!this[$extra]) {\n      let { width, height } = availableSpace;\n      switch (this.placement) {\n        case \"left\":\n        case \"right\":\n        case \"inline\":\n          width = this.reserve <= 0 ? width : this.reserve;\n          break;\n        case \"top\":\n        case \"bottom\":\n          height = this.reserve <= 0 ? height : this.reserve;\n          break;\n      }\n\n      this[$extra] = layoutNode(this, { width, height });\n    }\n    return this[$extra];\n  }\n\n  [$toHTML](availableSpace) {\n    // TODO: incomplete.\n    if (!this.value) {\n      return HTMLResult.EMPTY;\n    }\n\n    this[$pushPara]();\n    const value = this.value[$toHTML](availableSpace).html;\n\n    if (!value) {\n      this[$popPara]();\n      return HTMLResult.EMPTY;\n    }\n\n    const savedReserve = this.reserve;\n    if (this.reserve <= 0) {\n      const { w, h } = this[$getExtra](availableSpace);\n      switch (this.placement) {\n        case \"left\":\n        case \"right\":\n        case \"inline\":\n          this.reserve = w;\n          break;\n        case \"top\":\n        case \"bottom\":\n          this.reserve = h;\n          break;\n      }\n    }\n\n    const children = [];\n    if (typeof value === \"string\") {\n      children.push({\n        name: \"#text\",\n        value,\n      });\n    } else {\n      children.push(value);\n    }\n\n    const style = toStyle(this, \"font\", \"margin\", \"visibility\");\n    switch (this.placement) {\n      case \"left\":\n      case \"right\":\n        if (this.reserve > 0) {\n          style.width = measureToString(this.reserve);\n        }\n        break;\n      case \"top\":\n      case \"bottom\":\n        if (this.reserve > 0) {\n          style.height = measureToString(this.reserve);\n        }\n        break;\n    }\n\n    setPara(this, null, value);\n    this[$popPara]();\n\n    this.reserve = savedReserve;\n\n    return HTMLResult.success({\n      name: \"div\",\n      attributes: {\n        style,\n        class: [\"xfaCaption\"],\n      },\n      children,\n    });\n  }\n}\n\nclass Certificate extends StringObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"certificate\");\n    this.id = attributes.id || \"\";\n    this.name = attributes.name || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n  }\n}\n\nclass Certificates extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"certificates\", /* hasChildren = */ true);\n    this.credentialServerPolicy = getStringOption(\n      attributes.credentialServerPolicy,\n      [\"optional\", \"required\"]\n    );\n    this.id = attributes.id || \"\";\n    this.url = attributes.url || \"\";\n    this.urlPolicy = attributes.urlPolicy || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.encryption = null;\n    this.issuers = null;\n    this.keyUsage = null;\n    this.oids = null;\n    this.signing = null;\n    this.subjectDNs = null;\n  }\n}\n\nclass CheckButton extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"checkButton\", /* hasChildren = */ true);\n    this.id = attributes.id || \"\";\n    this.mark = getStringOption(attributes.mark, [\n      \"default\",\n      \"check\",\n      \"circle\",\n      \"cross\",\n      \"diamond\",\n      \"square\",\n      \"star\",\n    ]);\n    this.shape = getStringOption(attributes.shape, [\"square\", \"round\"]);\n    this.size = getMeasurement(attributes.size, \"10pt\");\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.border = null;\n    this.extras = null;\n    this.margin = null;\n  }\n\n  [$toHTML](availableSpace) {\n    // TODO: border, shape and mark.\n\n    const style = toStyle(\"margin\");\n    const size = measureToString(this.size);\n\n    style.width = style.height = size;\n\n    let type;\n    let className;\n    let groupId;\n    const field = this[$getParent]()[$getParent]();\n    const items =\n      (field.items.children.length &&\n        field.items.children[0][$toHTML]().html) ||\n      [];\n    const exportedValue = {\n      on: (items[0] !== undefined ? items[0] : \"on\").toString(),\n      off: (items[1] !== undefined ? items[1] : \"off\").toString(),\n    };\n\n    const value = (field.value && field.value[$text]()) || \"off\";\n    const checked = value === exportedValue.on || undefined;\n    const container = field[$getSubformParent]();\n    const fieldId = field[$uid];\n    let dataId;\n\n    if (container instanceof ExclGroup) {\n      groupId = container[$uid];\n      type = \"radio\";\n      className = \"xfaRadio\";\n      dataId = (container[$data] && container[$data][$uid]) || container[$uid];\n    } else {\n      type = \"checkbox\";\n      className = \"xfaCheckbox\";\n      dataId = (field[$data] && field[$data][$uid]) || field[$uid];\n    }\n\n    const input = {\n      name: \"input\",\n      attributes: {\n        class: [className],\n        style,\n        fieldId,\n        dataId,\n        type,\n        checked,\n        xfaOn: exportedValue.on,\n        xfaOff: exportedValue.off,\n        \"aria-label\": ariaLabel(field),\n      },\n    };\n\n    if (groupId) {\n      input.attributes.name = groupId;\n    }\n\n    return HTMLResult.success({\n      name: \"label\",\n      attributes: {\n        class: [\"xfaLabel\"],\n      },\n      children: [input],\n    });\n  }\n}\n\nclass ChoiceList extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"choiceList\", /* hasChildren = */ true);\n    this.commitOn = getStringOption(attributes.commitOn, [\"select\", \"exit\"]);\n    this.id = attributes.id || \"\";\n    this.open = getStringOption(attributes.open, [\n      \"userControl\",\n      \"always\",\n      \"multiSelect\",\n      \"onEntry\",\n    ]);\n    this.textEntry = getInteger({\n      data: attributes.textEntry,\n      defaultValue: 0,\n      validate: x => x === 1,\n    });\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.border = null;\n    this.extras = null;\n    this.margin = null;\n  }\n\n  [$toHTML](availableSpace) {\n    // TODO: incomplete.\n    const style = toStyle(this, \"border\", \"margin\");\n    const ui = this[$getParent]();\n    const field = ui[$getParent]();\n    const fontSize = (field.font && field.font.size) || 10;\n    const optionStyle = {\n      fontSize: `calc(${fontSize}px * var(--zoom-factor))`,\n    };\n    const children = [];\n\n    if (field.items.children.length > 0) {\n      const items = field.items;\n      let displayedIndex = 0;\n      let saveIndex = 0;\n      if (items.children.length === 2) {\n        displayedIndex = items.children[0].save;\n        saveIndex = 1 - displayedIndex;\n      }\n      const displayed = items.children[displayedIndex][$toHTML]().html;\n      const values = items.children[saveIndex][$toHTML]().html;\n\n      let selected = false;\n      const value = (field.value && field.value[$text]()) || \"\";\n      for (let i = 0, ii = displayed.length; i < ii; i++) {\n        const option = {\n          name: \"option\",\n          attributes: {\n            value: values[i] || displayed[i],\n            style: optionStyle,\n          },\n          value: displayed[i],\n        };\n        if (values[i] === value) {\n          option.attributes.selected = selected = true;\n        }\n        children.push(option);\n      }\n\n      if (!selected) {\n        children.splice(0, 0, {\n          name: \"option\",\n          attributes: {\n            hidden: true,\n            selected: true,\n          },\n          value: \" \",\n        });\n      }\n    }\n\n    const selectAttributes = {\n      class: [\"xfaSelect\"],\n      fieldId: field[$uid],\n      dataId: (field[$data] && field[$data][$uid]) || field[$uid],\n      style,\n      \"aria-label\": ariaLabel(field),\n    };\n\n    if (this.open === \"multiSelect\") {\n      selectAttributes.multiple = true;\n    }\n\n    return HTMLResult.success({\n      name: \"label\",\n      attributes: {\n        class: [\"xfaLabel\"],\n      },\n      children: [\n        {\n          name: \"select\",\n          children,\n          attributes: selectAttributes,\n        },\n      ],\n    });\n  }\n}\n\nclass Color extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"color\", /* hasChildren = */ true);\n    this.cSpace = getStringOption(attributes.cSpace, [\"SRGB\"]);\n    this.id = attributes.id || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.value = attributes.value ? getColor(attributes.value) : \"\";\n    this.extras = null;\n  }\n\n  [$hasSettableValue]() {\n    return false;\n  }\n\n  [$toStyle]() {\n    return this.value\n      ? Util.makeHexColor(this.value.r, this.value.g, this.value.b)\n      : null;\n  }\n}\n\nclass Comb extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"comb\");\n    this.id = attributes.id || \"\";\n    this.numberOfCells = getInteger({\n      data: attributes.numberOfCells,\n      defaultValue: 0,\n      validate: x => x >= 0,\n    });\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n  }\n}\n\nclass Connect extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"connect\", /* hasChildren = */ true);\n    this.connection = attributes.connection || \"\";\n    this.id = attributes.id || \"\";\n    this.ref = attributes.ref || \"\";\n    this.usage = getStringOption(attributes.usage, [\n      \"exportAndImport\",\n      \"exportOnly\",\n      \"importOnly\",\n    ]);\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.picture = null;\n  }\n}\n\nclass ContentArea extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"contentArea\", /* hasChildren = */ true);\n    this.h = getMeasurement(attributes.h);\n    this.id = attributes.id || \"\";\n    this.name = attributes.name || \"\";\n    this.relevant = getRelevant(attributes.relevant);\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.w = getMeasurement(attributes.w);\n    this.x = getMeasurement(attributes.x, \"0pt\");\n    this.y = getMeasurement(attributes.y, \"0pt\");\n    this.desc = null;\n    this.extras = null;\n  }\n\n  [$toHTML](availableSpace) {\n    // TODO: incomplete.\n    const left = measureToString(this.x);\n    const top = measureToString(this.y);\n\n    const style = {\n      left,\n      top,\n      width: measureToString(this.w),\n      height: measureToString(this.h),\n    };\n\n    const classNames = [\"xfaContentarea\"];\n\n    if (isPrintOnly(this)) {\n      classNames.push(\"xfaPrintOnly\");\n    }\n\n    return HTMLResult.success({\n      name: \"div\",\n      children: [],\n      attributes: {\n        style,\n        class: classNames,\n        id: this[$uid],\n      },\n    });\n  }\n}\n\nclass Corner extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"corner\", /* hasChildren = */ true);\n    this.id = attributes.id || \"\";\n    this.inverted = getInteger({\n      data: attributes.inverted,\n      defaultValue: 0,\n      validate: x => x === 1,\n    });\n    this.join = getStringOption(attributes.join, [\"square\", \"round\"]);\n    this.presence = getStringOption(attributes.presence, [\n      \"visible\",\n      \"hidden\",\n      \"inactive\",\n      \"invisible\",\n    ]);\n    this.radius = getMeasurement(attributes.radius);\n    this.stroke = getStringOption(attributes.stroke, [\n      \"solid\",\n      \"dashDot\",\n      \"dashDotDot\",\n      \"dashed\",\n      \"dotted\",\n      \"embossed\",\n      \"etched\",\n      \"lowered\",\n      \"raised\",\n    ]);\n    this.thickness = getMeasurement(attributes.thickness, \"0.5pt\");\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.color = null;\n    this.extras = null;\n  }\n\n  [$toStyle]() {\n    // In using CSS it's only possible to handle radius\n    // (at least with basic css).\n    // Is there a real use (interest ?) of all these properties ?\n    // Maybe it's possible to implement them using svg and border-image...\n    // TODO: implement all the missing properties.\n    const style = toStyle(this, \"visibility\");\n    style.radius = measureToString(this.join === \"square\" ? 0 : this.radius);\n    return style;\n  }\n}\n\nclass DateElement extends ContentObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"date\");\n    this.id = attributes.id || \"\";\n    this.name = attributes.name || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n  }\n\n  [$finalize]() {\n    const date = this[$content].trim();\n    this[$content] = date ? new Date(date) : null;\n  }\n\n  [$toHTML](availableSpace) {\n    return valueToHtml(this[$content] ? this[$content].toString() : \"\");\n  }\n}\n\nclass DateTime extends ContentObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"dateTime\");\n    this.id = attributes.id || \"\";\n    this.name = attributes.name || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n  }\n\n  [$finalize]() {\n    const date = this[$content].trim();\n    this[$content] = date ? new Date(date) : null;\n  }\n\n  [$toHTML](availableSpace) {\n    return valueToHtml(this[$content] ? this[$content].toString() : \"\");\n  }\n}\n\nclass DateTimeEdit extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"dateTimeEdit\", /* hasChildren = */ true);\n    this.hScrollPolicy = getStringOption(attributes.hScrollPolicy, [\n      \"auto\",\n      \"off\",\n      \"on\",\n    ]);\n    this.id = attributes.id || \"\";\n    this.picker = getStringOption(attributes.picker, [\"host\", \"none\"]);\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.border = null;\n    this.comb = null;\n    this.extras = null;\n    this.margin = null;\n  }\n\n  [$toHTML](availableSpace) {\n    // TODO: incomplete.\n    // When the picker is host we should use type=date for the input\n    // but we need to put the buttons outside the text-field.\n    const style = toStyle(this, \"border\", \"font\", \"margin\");\n    const field = this[$getParent]()[$getParent]();\n    const html = {\n      name: \"input\",\n      attributes: {\n        type: \"text\",\n        fieldId: field[$uid],\n        dataId: (field[$data] && field[$data][$uid]) || field[$uid],\n        class: [\"xfaTextfield\"],\n        style,\n        \"aria-label\": ariaLabel(field),\n      },\n    };\n\n    return HTMLResult.success({\n      name: \"label\",\n      attributes: {\n        class: [\"xfaLabel\"],\n      },\n      children: [html],\n    });\n  }\n}\n\nclass Decimal extends ContentObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"decimal\");\n    this.fracDigits = getInteger({\n      data: attributes.fracDigits,\n      defaultValue: 2,\n      validate: x => true,\n    });\n    this.id = attributes.id || \"\";\n    this.leadDigits = getInteger({\n      data: attributes.leadDigits,\n      defaultValue: -1,\n      validate: x => true,\n    });\n    this.name = attributes.name || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n  }\n\n  [$finalize]() {\n    const number = parseFloat(this[$content].trim());\n    this[$content] = isNaN(number) ? null : number;\n  }\n\n  [$toHTML](availableSpace) {\n    return valueToHtml(\n      this[$content] !== null ? this[$content].toString() : \"\"\n    );\n  }\n}\n\nclass DefaultUi extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"defaultUi\", /* hasChildren = */ true);\n    this.id = attributes.id || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.extras = null;\n  }\n}\n\nclass Desc extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"desc\", /* hasChildren = */ true);\n    this.id = attributes.id || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.boolean = new XFAObjectArray();\n    this.date = new XFAObjectArray();\n    this.dateTime = new XFAObjectArray();\n    this.decimal = new XFAObjectArray();\n    this.exData = new XFAObjectArray();\n    this.float = new XFAObjectArray();\n    this.image = new XFAObjectArray();\n    this.integer = new XFAObjectArray();\n    this.text = new XFAObjectArray();\n    this.time = new XFAObjectArray();\n  }\n}\n\nclass DigestMethod extends OptionObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"digestMethod\", [\n      \"\",\n      \"SHA1\",\n      \"SHA256\",\n      \"SHA512\",\n      \"RIPEMD160\",\n    ]);\n    this.id = attributes.id || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n  }\n}\n\nclass DigestMethods extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"digestMethods\", /* hasChildren = */ true);\n    this.id = attributes.id || \"\";\n    this.type = getStringOption(attributes.type, [\"optional\", \"required\"]);\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.digestMethod = new XFAObjectArray();\n  }\n}\n\nclass Draw extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"draw\", /* hasChildren = */ true);\n    this.anchorType = getStringOption(attributes.anchorType, [\n      \"topLeft\",\n      \"bottomCenter\",\n      \"bottomLeft\",\n      \"bottomRight\",\n      \"middleCenter\",\n      \"middleLeft\",\n      \"middleRight\",\n      \"topCenter\",\n      \"topRight\",\n    ]);\n    this.colSpan = getInteger({\n      data: attributes.colSpan,\n      defaultValue: 1,\n      validate: n => n >= 1 || n === -1,\n    });\n    this.h = attributes.h ? getMeasurement(attributes.h) : \"\";\n    this.hAlign = getStringOption(attributes.hAlign, [\n      \"left\",\n      \"center\",\n      \"justify\",\n      \"justifyAll\",\n      \"radix\",\n      \"right\",\n    ]);\n    this.id = attributes.id || \"\";\n    this.locale = attributes.locale || \"\";\n    this.maxH = getMeasurement(attributes.maxH, \"0pt\");\n    this.maxW = getMeasurement(attributes.maxW, \"0pt\");\n    this.minH = getMeasurement(attributes.minH, \"0pt\");\n    this.minW = getMeasurement(attributes.minW, \"0pt\");\n    this.name = attributes.name || \"\";\n    this.presence = getStringOption(attributes.presence, [\n      \"visible\",\n      \"hidden\",\n      \"inactive\",\n      \"invisible\",\n    ]);\n    this.relevant = getRelevant(attributes.relevant);\n    this.rotate = getInteger({\n      data: attributes.rotate,\n      defaultValue: 0,\n      validate: x => x % 90 === 0,\n    });\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.w = attributes.w ? getMeasurement(attributes.w) : \"\";\n    this.x = getMeasurement(attributes.x, \"0pt\");\n    this.y = getMeasurement(attributes.y, \"0pt\");\n    this.assist = null;\n    this.border = null;\n    this.caption = null;\n    this.desc = null;\n    this.extras = null;\n    this.font = null;\n    this.keep = null;\n    this.margin = null;\n    this.para = null;\n    this.traversal = null;\n    this.ui = null;\n    this.value = null;\n    this.setProperty = new XFAObjectArray();\n  }\n\n  [$setValue](value) {\n    _setValue(this, value);\n  }\n\n  [$toHTML](availableSpace) {\n    setTabIndex(this);\n\n    if (this.presence === \"hidden\" || this.presence === \"inactive\") {\n      return HTMLResult.EMPTY;\n    }\n\n    fixDimensions(this);\n    this[$pushPara]();\n\n    // If at least one dimension is missing and we've a text\n    // then we can guess it in laying out the text.\n    const savedW = this.w;\n    const savedH = this.h;\n    const { w, h, isBroken } = layoutNode(this, availableSpace);\n    if (w && this.w === \"\") {\n      // If the parent layout is lr-tb with a w=100 and we already have a child\n      // which takes 90 on the current line.\n      // If we have a text with a length (in px) equal to 100 then it'll be\n      // splitted into almost 10 chunks: so it won't be nice.\n      // So if we've potentially more width to provide in some parent containers\n      // let's increase it to give a chance to have a better rendering.\n      if (isBroken && this[$getSubformParent]()[$isThereMoreWidth]()) {\n        this[$popPara]();\n        return HTMLResult.FAILURE;\n      }\n\n      this.w = w;\n    }\n    if (h && this.h === \"\") {\n      this.h = h;\n    }\n\n    setFirstUnsplittable(this);\n    if (!checkDimensions(this, availableSpace)) {\n      this.w = savedW;\n      this.h = savedH;\n      this[$popPara]();\n      return HTMLResult.FAILURE;\n    }\n    unsetFirstUnsplittable(this);\n\n    const style = toStyle(\n      this,\n      \"font\",\n      \"hAlign\",\n      \"dimensions\",\n      \"position\",\n      \"presence\",\n      \"rotate\",\n      \"anchorType\",\n      \"border\",\n      \"margin\"\n    );\n\n    setMinMaxDimensions(this, style);\n\n    if (style.margin) {\n      style.padding = style.margin;\n      delete style.margin;\n    }\n\n    const classNames = [\"xfaDraw\"];\n    if (this.font) {\n      classNames.push(\"xfaFont\");\n    }\n    if (isPrintOnly(this)) {\n      classNames.push(\"xfaPrintOnly\");\n    }\n\n    const attributes = {\n      style,\n      id: this[$uid],\n      class: classNames,\n    };\n\n    if (this.name) {\n      attributes.xfaName = this.name;\n    }\n\n    const html = {\n      name: \"div\",\n      attributes,\n      children: [],\n    };\n\n    applyAssist(this, attributes);\n\n    const bbox = computeBbox(this, html, availableSpace);\n\n    const value = this.value ? this.value[$toHTML](availableSpace).html : null;\n    if (value === null) {\n      this.w = savedW;\n      this.h = savedH;\n      this[$popPara]();\n      return HTMLResult.success(createWrapper(this, html), bbox);\n    }\n\n    html.children.push(value);\n    setPara(this, style, value);\n\n    this.w = savedW;\n    this.h = savedH;\n\n    this[$popPara]();\n    return HTMLResult.success(createWrapper(this, html), bbox);\n  }\n}\n\nclass Edge extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"edge\", /* hasChildren = */ true);\n    this.cap = getStringOption(attributes.cap, [\"square\", \"butt\", \"round\"]);\n    this.id = attributes.id || \"\";\n    this.presence = getStringOption(attributes.presence, [\n      \"visible\",\n      \"hidden\",\n      \"inactive\",\n      \"invisible\",\n    ]);\n    this.stroke = getStringOption(attributes.stroke, [\n      \"solid\",\n      \"dashDot\",\n      \"dashDotDot\",\n      \"dashed\",\n      \"dotted\",\n      \"embossed\",\n      \"etched\",\n      \"lowered\",\n      \"raised\",\n    ]);\n    this.thickness = getMeasurement(attributes.thickness, \"0.5pt\");\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.color = null;\n    this.extras = null;\n  }\n\n  [$toStyle]() {\n    // TODO: dashDot & dashDotDot.\n    const style = toStyle(this, \"visibility\");\n    Object.assign(style, {\n      linecap: this.cap,\n      width: measureToString(this.thickness),\n      color: this.color ? this.color[$toStyle]() : \"#000000\",\n      style: \"\",\n    });\n\n    if (this.presence !== \"visible\") {\n      style.style = \"none\";\n    } else {\n      switch (this.stroke) {\n        case \"solid\":\n          style.style = \"solid\";\n          break;\n        case \"dashDot\":\n          style.style = \"dashed\";\n          break;\n        case \"dashDotDot\":\n          style.style = \"dashed\";\n          break;\n        case \"dashed\":\n          style.style = \"dashed\";\n          break;\n        case \"dotted\":\n          style.style = \"dotted\";\n          break;\n        case \"embossed\":\n          style.style = \"ridge\";\n          break;\n        case \"etched\":\n          style.style = \"groove\";\n          break;\n        case \"lowered\":\n          style.style = \"inset\";\n          break;\n        case \"raised\":\n          style.style = \"outset\";\n          break;\n      }\n    }\n    return style;\n  }\n}\n\nclass Encoding extends OptionObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"encoding\", [\n      \"adbe.x509.rsa_sha1\",\n      \"adbe.pkcs7.detached\",\n      \"adbe.pkcs7.sha1\",\n    ]);\n    this.id = attributes.id || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n  }\n}\n\nclass Encodings extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"encodings\", /* hasChildren = */ true);\n    this.id = attributes.id || \"\";\n    this.type = getStringOption(attributes.type, [\"optional\", \"required\"]);\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.encoding = new XFAObjectArray();\n  }\n}\n\nclass Encrypt extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"encrypt\", /* hasChildren = */ true);\n    this.id = attributes.id || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.certificate = null;\n  }\n}\n\nclass EncryptData extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"encryptData\", /* hasChildren = */ true);\n    this.id = attributes.id || \"\";\n    this.operation = getStringOption(attributes.operation, [\n      \"encrypt\",\n      \"decrypt\",\n    ]);\n    this.target = attributes.target || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.filter = null;\n    this.manifest = null;\n  }\n}\n\nclass Encryption extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"encryption\", /* hasChildren = */ true);\n    this.id = attributes.id || \"\";\n    this.type = getStringOption(attributes.type, [\"optional\", \"required\"]);\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.certificate = new XFAObjectArray();\n  }\n}\n\nclass EncryptionMethod extends OptionObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"encryptionMethod\", [\n      \"\",\n      \"AES256-CBC\",\n      \"TRIPLEDES-CBC\",\n      \"AES128-CBC\",\n      \"AES192-CBC\",\n    ]);\n    this.id = attributes.id || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n  }\n}\n\nclass EncryptionMethods extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"encryptionMethods\", /* hasChildren = */ true);\n    this.id = attributes.id || \"\";\n    this.type = getStringOption(attributes.type, [\"optional\", \"required\"]);\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.encryptionMethod = new XFAObjectArray();\n  }\n}\n\nclass Event extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"event\", /* hasChildren = */ true);\n    this.activity = getStringOption(attributes.activity, [\n      \"click\",\n      \"change\",\n      \"docClose\",\n      \"docReady\",\n      \"enter\",\n      \"exit\",\n      \"full\",\n      \"indexChange\",\n      \"initialize\",\n      \"mouseDown\",\n      \"mouseEnter\",\n      \"mouseExit\",\n      \"mouseUp\",\n      \"postExecute\",\n      \"postOpen\",\n      \"postPrint\",\n      \"postSave\",\n      \"postSign\",\n      \"postSubmit\",\n      \"preExecute\",\n      \"preOpen\",\n      \"prePrint\",\n      \"preSave\",\n      \"preSign\",\n      \"preSubmit\",\n      \"ready\",\n      \"validationState\",\n    ]);\n    this.id = attributes.id || \"\";\n    this.listen = getStringOption(attributes.listen, [\n      \"refOnly\",\n      \"refAndDescendents\",\n    ]);\n    this.name = attributes.name || \"\";\n    this.ref = attributes.ref || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.extras = null;\n\n    // One-of properties\n    this.encryptData = null;\n    this.execute = null;\n    this.script = null;\n    this.signData = null;\n    this.submit = null;\n  }\n}\n\nclass ExData extends ContentObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"exData\");\n    this.contentType = attributes.contentType || \"\";\n    this.href = attributes.href || \"\";\n    this.id = attributes.id || \"\";\n    this.maxLength = getInteger({\n      data: attributes.maxLength,\n      defaultValue: -1,\n      validate: x => x >= -1,\n    });\n    this.name = attributes.name || \"\";\n    this.rid = attributes.rid || \"\";\n    this.transferEncoding = getStringOption(attributes.transferEncoding, [\n      \"none\",\n      \"base64\",\n      \"package\",\n    ]);\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n  }\n\n  [$isCDATAXml]() {\n    return this.contentType === \"text/html\";\n  }\n\n  [$onChild](child) {\n    if (\n      this.contentType === \"text/html\" &&\n      child[$namespaceId] === NamespaceIds.xhtml.id\n    ) {\n      this[$content] = child;\n      return true;\n    }\n\n    if (this.contentType === \"text/xml\") {\n      this[$content] = child;\n      return true;\n    }\n\n    return false;\n  }\n\n  [$toHTML](availableSpace) {\n    if (this.contentType !== \"text/html\" || !this[$content]) {\n      // TODO: fix other cases.\n      return HTMLResult.EMPTY;\n    }\n\n    return this[$content][$toHTML](availableSpace);\n  }\n}\n\nclass ExObject extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"exObject\", /* hasChildren = */ true);\n    this.archive = attributes.archive || \"\";\n    this.classId = attributes.classId || \"\";\n    this.codeBase = attributes.codeBase || \"\";\n    this.codeType = attributes.codeType || \"\";\n    this.id = attributes.id || \"\";\n    this.name = attributes.name || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.extras = null;\n    this.boolean = new XFAObjectArray();\n    this.date = new XFAObjectArray();\n    this.dateTime = new XFAObjectArray();\n    this.decimal = new XFAObjectArray();\n    this.exData = new XFAObjectArray();\n    this.exObject = new XFAObjectArray();\n    this.float = new XFAObjectArray();\n    this.image = new XFAObjectArray();\n    this.integer = new XFAObjectArray();\n    this.text = new XFAObjectArray();\n    this.time = new XFAObjectArray();\n  }\n}\n\nclass ExclGroup extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"exclGroup\", /* hasChildren = */ true);\n    this.access = getStringOption(attributes.access, [\n      \"open\",\n      \"nonInteractive\",\n      \"protected\",\n      \"readOnly\",\n    ]);\n    this.accessKey = attributes.accessKey || \"\";\n    this.anchorType = getStringOption(attributes.anchorType, [\n      \"topLeft\",\n      \"bottomCenter\",\n      \"bottomLeft\",\n      \"bottomRight\",\n      \"middleCenter\",\n      \"middleLeft\",\n      \"middleRight\",\n      \"topCenter\",\n      \"topRight\",\n    ]);\n    this.colSpan = getInteger({\n      data: attributes.colSpan,\n      defaultValue: 1,\n      validate: n => n >= 1 || n === -1,\n    });\n    this.h = attributes.h ? getMeasurement(attributes.h) : \"\";\n    this.hAlign = getStringOption(attributes.hAlign, [\n      \"left\",\n      \"center\",\n      \"justify\",\n      \"justifyAll\",\n      \"radix\",\n      \"right\",\n    ]);\n    this.id = attributes.id || \"\";\n    this.layout = getStringOption(attributes.layout, [\n      \"position\",\n      \"lr-tb\",\n      \"rl-row\",\n      \"rl-tb\",\n      \"row\",\n      \"table\",\n      \"tb\",\n    ]);\n    this.maxH = getMeasurement(attributes.maxH, \"0pt\");\n    this.maxW = getMeasurement(attributes.maxW, \"0pt\");\n    this.minH = getMeasurement(attributes.minH, \"0pt\");\n    this.minW = getMeasurement(attributes.minW, \"0pt\");\n    this.name = attributes.name || \"\";\n    this.presence = getStringOption(attributes.presence, [\n      \"visible\",\n      \"hidden\",\n      \"inactive\",\n      \"invisible\",\n    ]);\n    this.relevant = getRelevant(attributes.relevant);\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.w = attributes.w ? getMeasurement(attributes.w) : \"\";\n    this.x = getMeasurement(attributes.x, \"0pt\");\n    this.y = getMeasurement(attributes.y, \"0pt\");\n    this.assist = null;\n    this.bind = null;\n    this.border = null;\n    this.calculate = null;\n    this.caption = null;\n    this.desc = null;\n    this.extras = null;\n    this.margin = null;\n    this.para = null;\n    this.traversal = null;\n    this.validate = null;\n    this.connect = new XFAObjectArray();\n    this.event = new XFAObjectArray();\n    this.field = new XFAObjectArray();\n    this.setProperty = new XFAObjectArray();\n  }\n\n  [$isBindable]() {\n    return true;\n  }\n\n  [$hasSettableValue]() {\n    return true;\n  }\n\n  [$setValue](value) {\n    for (const field of this.field.children) {\n      if (!field.value) {\n        const nodeValue = new Value({});\n        field[$appendChild](nodeValue);\n        field.value = nodeValue;\n      }\n\n      field.value[$setValue](value);\n    }\n  }\n\n  [$isThereMoreWidth]() {\n    return (\n      (this.layout.endsWith(\"-tb\") &&\n        this[$extra].attempt === 0 &&\n        this[$extra].numberInLine > 0) ||\n      this[$getParent]()[$isThereMoreWidth]()\n    );\n  }\n\n  [$isSplittable]() {\n    // We cannot cache the result here because the contentArea\n    // can change.\n    const parent = this[$getSubformParent]();\n    if (!parent[$isSplittable]()) {\n      return false;\n    }\n\n    if (this[$extra]._isSplittable !== undefined) {\n      return this[$extra]._isSplittable;\n    }\n\n    if (this.layout === \"position\" || this.layout.includes(\"row\")) {\n      this[$extra]._isSplittable = false;\n      return false;\n    }\n\n    if (\n      parent.layout &&\n      parent.layout.endsWith(\"-tb\") &&\n      parent[$extra].numberInLine !== 0\n    ) {\n      // See comment in Subform::[$isSplittable] for an explanation.\n      return false;\n    }\n\n    this[$extra]._isSplittable = true;\n    return true;\n  }\n\n  [$flushHTML]() {\n    return flushHTML(this);\n  }\n\n  [$addHTML](html, bbox) {\n    addHTML(this, html, bbox);\n  }\n\n  [$getAvailableSpace]() {\n    return getAvailableSpace(this);\n  }\n\n  [$toHTML](availableSpace) {\n    setTabIndex(this);\n    if (\n      this.presence === \"hidden\" ||\n      this.presence === \"inactive\" ||\n      this.h === 0 ||\n      this.w === 0\n    ) {\n      return HTMLResult.EMPTY;\n    }\n\n    fixDimensions(this);\n\n    const children = [];\n    const attributes = {\n      id: this[$uid],\n      class: [],\n    };\n\n    setAccess(this, attributes.class);\n\n    if (!this[$extra]) {\n      this[$extra] = Object.create(null);\n    }\n\n    Object.assign(this[$extra], {\n      children,\n      attributes,\n      attempt: 0,\n      line: null,\n      numberInLine: 0,\n      availableSpace: {\n        width: Math.min(this.w || Infinity, availableSpace.width),\n        height: Math.min(this.h || Infinity, availableSpace.height),\n      },\n      width: 0,\n      height: 0,\n      prevHeight: 0,\n      currentWidth: 0,\n    });\n\n    const isSplittable = this[$isSplittable]();\n    if (!isSplittable) {\n      setFirstUnsplittable(this);\n    }\n\n    if (!checkDimensions(this, availableSpace)) {\n      return HTMLResult.FAILURE;\n    }\n    const filter = new Set([\"field\"]);\n\n    if (this.layout.includes(\"row\")) {\n      const columnWidths = this[$getSubformParent]().columnWidths;\n      if (Array.isArray(columnWidths) && columnWidths.length > 0) {\n        this[$extra].columnWidths = columnWidths;\n        this[$extra].currentColumn = 0;\n      }\n    }\n\n    const style = toStyle(\n      this,\n      \"anchorType\",\n      \"dimensions\",\n      \"position\",\n      \"presence\",\n      \"border\",\n      \"margin\",\n      \"hAlign\"\n    );\n    const classNames = [\"xfaExclgroup\"];\n    const cl = layoutClass(this);\n    if (cl) {\n      classNames.push(cl);\n    }\n\n    if (isPrintOnly(this)) {\n      classNames.push(\"xfaPrintOnly\");\n    }\n\n    attributes.style = style;\n    attributes.class = classNames;\n\n    if (this.name) {\n      attributes.xfaName = this.name;\n    }\n\n    this[$pushPara]();\n    const isLrTb = this.layout === \"lr-tb\" || this.layout === \"rl-tb\";\n    const maxRun = isLrTb ? MAX_ATTEMPTS_FOR_LRTB_LAYOUT : 1;\n    for (; this[$extra].attempt < maxRun; this[$extra].attempt++) {\n      if (isLrTb && this[$extra].attempt === MAX_ATTEMPTS_FOR_LRTB_LAYOUT - 1) {\n        // If the layout is lr-tb then having attempt equals to\n        // MAX_ATTEMPTS_FOR_LRTB_LAYOUT-1 means that we're trying to layout\n        // on the next line so this on is empty.\n        this[$extra].numberInLine = 0;\n      }\n      const result = this[$childrenToHTML]({\n        filter,\n        include: true,\n      });\n      if (result.success) {\n        break;\n      }\n      if (result.isBreak()) {\n        this[$popPara]();\n        return result;\n      }\n      if (\n        isLrTb &&\n        this[$extra].attempt === 0 &&\n        this[$extra].numberInLine === 0 &&\n        !this[$getTemplateRoot]()[$extra].noLayoutFailure\n      ) {\n        // See comment in Subform::[$toHTML].\n        this[$extra].attempt = maxRun;\n        break;\n      }\n    }\n\n    this[$popPara]();\n\n    if (!isSplittable) {\n      unsetFirstUnsplittable(this);\n    }\n\n    if (this[$extra].attempt === maxRun) {\n      if (!isSplittable) {\n        delete this[$extra];\n      }\n      return HTMLResult.FAILURE;\n    }\n\n    let marginH = 0;\n    let marginV = 0;\n    if (this.margin) {\n      marginH = this.margin.leftInset + this.margin.rightInset;\n      marginV = this.margin.topInset + this.margin.bottomInset;\n    }\n\n    const width = Math.max(this[$extra].width + marginH, this.w || 0);\n    const height = Math.max(this[$extra].height + marginV, this.h || 0);\n    const bbox = [this.x, this.y, width, height];\n\n    if (this.w === \"\") {\n      style.width = measureToString(width);\n    }\n    if (this.h === \"\") {\n      style.height = measureToString(height);\n    }\n\n    const html = {\n      name: \"div\",\n      attributes,\n      children,\n    };\n\n    applyAssist(this, attributes);\n\n    delete this[$extra];\n\n    return HTMLResult.success(createWrapper(this, html), bbox);\n  }\n}\n\nclass Execute extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"execute\");\n    this.connection = attributes.connection || \"\";\n    this.executeType = getStringOption(attributes.executeType, [\n      \"import\",\n      \"remerge\",\n    ]);\n    this.id = attributes.id || \"\";\n    this.runAt = getStringOption(attributes.runAt, [\n      \"client\",\n      \"both\",\n      \"server\",\n    ]);\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n  }\n}\n\nclass Extras extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"extras\", /* hasChildren = */ true);\n    this.id = attributes.id || \"\";\n    this.name = attributes.name || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.boolean = new XFAObjectArray();\n    this.date = new XFAObjectArray();\n    this.dateTime = new XFAObjectArray();\n    this.decimal = new XFAObjectArray();\n    this.exData = new XFAObjectArray();\n    this.extras = new XFAObjectArray();\n    this.float = new XFAObjectArray();\n    this.image = new XFAObjectArray();\n    this.integer = new XFAObjectArray();\n    this.text = new XFAObjectArray();\n    this.time = new XFAObjectArray();\n  }\n\n  // (Spec) The XFA template grammar defines the extras and desc elements,\n  // which can be used to add human-readable or machine-readable\n  // data to a template.\n}\n\nclass Field extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"field\", /* hasChildren = */ true);\n    this.access = getStringOption(attributes.access, [\n      \"open\",\n      \"nonInteractive\",\n      \"protected\",\n      \"readOnly\",\n    ]);\n    this.accessKey = attributes.accessKey || \"\";\n    this.anchorType = getStringOption(attributes.anchorType, [\n      \"topLeft\",\n      \"bottomCenter\",\n      \"bottomLeft\",\n      \"bottomRight\",\n      \"middleCenter\",\n      \"middleLeft\",\n      \"middleRight\",\n      \"topCenter\",\n      \"topRight\",\n    ]);\n    this.colSpan = getInteger({\n      data: attributes.colSpan,\n      defaultValue: 1,\n      validate: n => n >= 1 || n === -1,\n    });\n    this.h = attributes.h ? getMeasurement(attributes.h) : \"\";\n    this.hAlign = getStringOption(attributes.hAlign, [\n      \"left\",\n      \"center\",\n      \"justify\",\n      \"justifyAll\",\n      \"radix\",\n      \"right\",\n    ]);\n    this.id = attributes.id || \"\";\n    this.locale = attributes.locale || \"\";\n    this.maxH = getMeasurement(attributes.maxH, \"0pt\");\n    this.maxW = getMeasurement(attributes.maxW, \"0pt\");\n    this.minH = getMeasurement(attributes.minH, \"0pt\");\n    this.minW = getMeasurement(attributes.minW, \"0pt\");\n    this.name = attributes.name || \"\";\n    this.presence = getStringOption(attributes.presence, [\n      \"visible\",\n      \"hidden\",\n      \"inactive\",\n      \"invisible\",\n    ]);\n    this.relevant = getRelevant(attributes.relevant);\n    this.rotate = getInteger({\n      data: attributes.rotate,\n      defaultValue: 0,\n      validate: x => x % 90 === 0,\n    });\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.w = attributes.w ? getMeasurement(attributes.w) : \"\";\n    this.x = getMeasurement(attributes.x, \"0pt\");\n    this.y = getMeasurement(attributes.y, \"0pt\");\n    this.assist = null;\n    this.bind = null;\n    this.border = null;\n    this.calculate = null;\n    this.caption = null;\n    this.desc = null;\n    this.extras = null;\n    this.font = null;\n    this.format = null;\n    // For a choice list, one list is used to have display entries\n    // and the other for the exported values\n    this.items = new XFAObjectArray(2);\n    this.keep = null;\n    this.margin = null;\n    this.para = null;\n    this.traversal = null;\n    this.ui = null;\n    this.validate = null;\n    this.value = null;\n    this.bindItems = new XFAObjectArray();\n    this.connect = new XFAObjectArray();\n    this.event = new XFAObjectArray();\n    this.setProperty = new XFAObjectArray();\n  }\n\n  [$isBindable]() {\n    return true;\n  }\n\n  [$setValue](value) {\n    _setValue(this, value);\n  }\n\n  [$toHTML](availableSpace) {\n    setTabIndex(this);\n\n    if (!this.ui) {\n      // It's allowed to not have an ui, specs say:\n      //   If the UI element contains no children or is not present,\n      //   the application chooses a default user interface for the\n      //   container, based on the type of the container's content.\n\n      this.ui = new Ui({});\n      this.ui[$globalData] = this[$globalData];\n      this[$appendChild](this.ui);\n      let node;\n\n      // The items element can have 2 element max and\n      // according to the items specs it's likely a good\n      // way to guess the correct ui type.\n      switch (this.items.children.length) {\n        case 0:\n          node = new TextEdit({});\n          this.ui.textEdit = node;\n          break;\n        case 1:\n          node = new CheckButton({});\n          this.ui.checkButton = node;\n          break;\n        case 2:\n          node = new ChoiceList({});\n          this.ui.choiceList = node;\n          break;\n      }\n      this.ui[$appendChild](node);\n    }\n\n    if (\n      !this.ui ||\n      this.presence === \"hidden\" ||\n      this.presence === \"inactive\" ||\n      this.h === 0 ||\n      this.w === 0\n    ) {\n      return HTMLResult.EMPTY;\n    }\n\n    if (this.caption) {\n      // Maybe we already tried to layout this field with\n      // another availableSpace, so to avoid to use the cached\n      // value just delete it.\n      delete this.caption[$extra];\n    }\n\n    this[$pushPara]();\n\n    const caption = this.caption\n      ? this.caption[$toHTML](availableSpace).html\n      : null;\n    const savedW = this.w;\n    const savedH = this.h;\n    let marginH = 0;\n    let marginV = 0;\n    if (this.margin) {\n      marginH = this.margin.leftInset + this.margin.rightInset;\n      marginV = this.margin.topInset + this.margin.bottomInset;\n    }\n\n    let borderDims = null;\n    if (this.w === \"\" || this.h === \"\") {\n      let width = null;\n      let height = null;\n\n      let uiW = 0;\n      let uiH = 0;\n      if (this.ui.checkButton) {\n        uiW = uiH = this.ui.checkButton.size;\n      } else {\n        const { w, h } = layoutNode(this, availableSpace);\n        if (w !== null) {\n          uiW = w;\n          uiH = h;\n        } else {\n          uiH = getMetrics(this.font, /* real = */ true).lineNoGap;\n        }\n      }\n\n      borderDims = getBorderDims(this.ui[$getExtra]());\n      uiW += borderDims.w;\n      uiH += borderDims.h;\n\n      if (this.caption) {\n        const { w, h, isBroken } = this.caption[$getExtra](availableSpace);\n        // See comment in Draw::[$toHTML] to have an explanation\n        // about this line.\n        if (isBroken && this[$getSubformParent]()[$isThereMoreWidth]()) {\n          this[$popPara]();\n          return HTMLResult.FAILURE;\n        }\n\n        width = w;\n        height = h;\n\n        switch (this.caption.placement) {\n          case \"left\":\n          case \"right\":\n          case \"inline\":\n            width += uiW;\n            break;\n          case \"top\":\n          case \"bottom\":\n            height += uiH;\n            break;\n        }\n      } else {\n        width = uiW;\n        height = uiH;\n      }\n\n      if (width && this.w === \"\") {\n        width += marginH;\n        this.w = Math.min(\n          this.maxW <= 0 ? Infinity : this.maxW,\n          this.minW + 1 < width ? width : this.minW\n        );\n      }\n\n      if (height && this.h === \"\") {\n        height += marginV;\n        this.h = Math.min(\n          this.maxH <= 0 ? Infinity : this.maxH,\n          this.minH + 1 < height ? height : this.minH\n        );\n      }\n    }\n\n    this[$popPara]();\n\n    fixDimensions(this);\n\n    setFirstUnsplittable(this);\n    if (!checkDimensions(this, availableSpace)) {\n      this.w = savedW;\n      this.h = savedH;\n      this[$popPara]();\n      return HTMLResult.FAILURE;\n    }\n    unsetFirstUnsplittable(this);\n\n    const style = toStyle(\n      this,\n      \"font\",\n      \"dimensions\",\n      \"position\",\n      \"rotate\",\n      \"anchorType\",\n      \"presence\",\n      \"margin\",\n      \"hAlign\"\n    );\n\n    setMinMaxDimensions(this, style);\n\n    const classNames = [\"xfaField\"];\n    // If no font, font properties are inherited.\n    if (this.font) {\n      classNames.push(\"xfaFont\");\n    }\n\n    if (isPrintOnly(this)) {\n      classNames.push(\"xfaPrintOnly\");\n    }\n\n    const attributes = {\n      style,\n      id: this[$uid],\n      class: classNames,\n    };\n\n    if (style.margin) {\n      style.padding = style.margin;\n      delete style.margin;\n    }\n\n    setAccess(this, classNames);\n\n    if (this.name) {\n      attributes.xfaName = this.name;\n    }\n\n    const children = [];\n    const html = {\n      name: \"div\",\n      attributes,\n      children,\n    };\n\n    applyAssist(this, attributes);\n\n    const borderStyle = this.border ? this.border[$toStyle]() : null;\n    const bbox = computeBbox(this, html, availableSpace);\n    const ui = this.ui[$toHTML]().html;\n    if (!ui) {\n      Object.assign(style, borderStyle);\n      return HTMLResult.success(createWrapper(this, html), bbox);\n    }\n\n    if (this[$tabIndex]) {\n      if (ui.children && ui.children[0]) {\n        ui.children[0].attributes.tabindex = this[$tabIndex];\n      } else {\n        ui.attributes.tabindex = this[$tabIndex];\n      }\n    }\n\n    if (!ui.attributes.style) {\n      ui.attributes.style = Object.create(null);\n    }\n\n    let aElement = null;\n\n    if (this.ui.button) {\n      if (ui.children.length === 1) {\n        [aElement] = ui.children.splice(0, 1);\n      }\n      Object.assign(ui.attributes.style, borderStyle);\n    } else {\n      Object.assign(style, borderStyle);\n    }\n\n    children.push(ui);\n\n    if (this.value) {\n      if (this.ui.imageEdit) {\n        ui.children.push(this.value[$toHTML]().html);\n      } else if (!this.ui.button) {\n        let value = \"\";\n        if (this.value.exData) {\n          value = this.value.exData[$text]();\n        } else if (this.value.text) {\n          value = this.value.text[$getExtra]();\n        } else {\n          const htmlValue = this.value[$toHTML]().html;\n          if (htmlValue !== null) {\n            value = htmlValue.children[0].value;\n          }\n        }\n        if (this.ui.textEdit && this.value.text && this.value.text.maxChars) {\n          ui.children[0].attributes.maxLength = this.value.text.maxChars;\n        }\n\n        if (value) {\n          if (this.ui.numericEdit) {\n            value = parseFloat(value);\n            value = isNaN(value) ? \"\" : value.toString();\n          }\n\n          if (ui.children[0].name === \"textarea\") {\n            ui.children[0].attributes.textContent = value;\n          } else {\n            ui.children[0].attributes.value = value;\n          }\n        }\n      }\n    }\n\n    if (!this.ui.imageEdit && ui.children && ui.children[0] && this.h) {\n      borderDims = borderDims || getBorderDims(this.ui[$getExtra]());\n\n      let captionHeight = 0;\n      if (this.caption && [\"top\", \"bottom\"].includes(this.caption.placement)) {\n        captionHeight = this.caption.reserve;\n        if (captionHeight <= 0) {\n          captionHeight = this.caption[$getExtra](availableSpace).h;\n        }\n        const inputHeight = this.h - captionHeight - marginV - borderDims.h;\n        ui.children[0].attributes.style.height = measureToString(inputHeight);\n      } else {\n        ui.children[0].attributes.style.height = \"100%\";\n      }\n    }\n\n    if (aElement) {\n      ui.children.push(aElement);\n    }\n\n    if (!caption) {\n      if (ui.attributes.class) {\n        // Even if no caption this class will help to center the ui.\n        ui.attributes.class.push(\"xfaLeft\");\n      }\n      this.w = savedW;\n      this.h = savedH;\n\n      return HTMLResult.success(createWrapper(this, html), bbox);\n    }\n\n    if (this.ui.button) {\n      if (style.padding) {\n        delete style.padding;\n      }\n      if (caption.name === \"div\") {\n        caption.name = \"span\";\n      }\n      ui.children.push(caption);\n      return HTMLResult.success(html, bbox);\n    } else if (this.ui.checkButton) {\n      caption.attributes.class[0] = \"xfaCaptionForCheckButton\";\n    }\n\n    if (!ui.attributes.class) {\n      ui.attributes.class = [];\n    }\n\n    ui.children.splice(0, 0, caption);\n\n    switch (this.caption.placement) {\n      case \"left\":\n        ui.attributes.class.push(\"xfaLeft\");\n        break;\n      case \"right\":\n        ui.attributes.class.push(\"xfaRight\");\n        break;\n      case \"top\":\n        ui.attributes.class.push(\"xfaTop\");\n        break;\n      case \"bottom\":\n        ui.attributes.class.push(\"xfaBottom\");\n        break;\n      case \"inline\":\n        // TODO;\n        ui.attributes.class.push(\"xfaLeft\");\n        break;\n    }\n\n    this.w = savedW;\n    this.h = savedH;\n    return HTMLResult.success(createWrapper(this, html), bbox);\n  }\n}\n\nclass Fill extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"fill\", /* hasChildren = */ true);\n    this.id = attributes.id || \"\";\n    this.presence = getStringOption(attributes.presence, [\n      \"visible\",\n      \"hidden\",\n      \"inactive\",\n      \"invisible\",\n    ]);\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.color = null;\n    this.extras = null;\n\n    // One-of properties or none\n    this.linear = null;\n    this.pattern = null;\n    this.radial = null;\n    this.solid = null;\n    this.stipple = null;\n  }\n\n  [$toStyle]() {\n    const parent = this[$getParent]();\n    const grandpa = parent[$getParent]();\n    const ggrandpa = grandpa[$getParent]();\n    const style = Object.create(null);\n\n    // Use for color, i.e. #...\n    let propName = \"color\";\n\n    // Use for non-color, i.e. gradient, radial-gradient...\n    let altPropName = propName;\n\n    if (parent instanceof Border) {\n      propName = \"background-color\";\n      altPropName = \"background\";\n      if (ggrandpa instanceof Ui) {\n        // The default fill color is white.\n        style.backgroundColor = \"white\";\n      }\n    }\n    if (parent instanceof Rectangle || parent instanceof Arc) {\n      propName = altPropName = \"fill\";\n      style.fill = \"white\";\n    }\n\n    for (const name of Object.getOwnPropertyNames(this)) {\n      if (name === \"extras\" || name === \"color\") {\n        continue;\n      }\n      const obj = this[name];\n      if (!(obj instanceof XFAObject)) {\n        continue;\n      }\n\n      const color = obj[$toStyle](this.color);\n      if (color) {\n        style[color.startsWith(\"#\") ? propName : altPropName] = color;\n      }\n      return style;\n    }\n\n    if (this.color && this.color.value) {\n      const color = this.color[$toStyle]();\n      style[color.startsWith(\"#\") ? propName : altPropName] = color;\n    }\n\n    return style;\n  }\n}\n\nclass Filter extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"filter\", /* hasChildren = */ true);\n    this.addRevocationInfo = getStringOption(attributes.addRevocationInfo, [\n      \"\",\n      \"required\",\n      \"optional\",\n      \"none\",\n    ]);\n    this.id = attributes.id || \"\";\n    this.name = attributes.name || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.version = getInteger({\n      data: this.version,\n      defaultValue: 5,\n      validate: x => x >= 1 && x <= 5,\n    });\n    this.appearanceFilter = null;\n    this.certificates = null;\n    this.digestMethods = null;\n    this.encodings = null;\n    this.encryptionMethods = null;\n    this.handler = null;\n    this.lockDocument = null;\n    this.mdp = null;\n    this.reasons = null;\n    this.timeStamp = null;\n  }\n}\n\nclass Float extends ContentObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"float\");\n    this.id = attributes.id || \"\";\n    this.name = attributes.name || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n  }\n\n  [$finalize]() {\n    const number = parseFloat(this[$content].trim());\n    this[$content] = isNaN(number) ? null : number;\n  }\n\n  [$toHTML](availableSpace) {\n    return valueToHtml(\n      this[$content] !== null ? this[$content].toString() : \"\"\n    );\n  }\n}\n\nclass Font extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"font\", /* hasChildren = */ true);\n    this.baselineShift = getMeasurement(attributes.baselineShift);\n    this.fontHorizontalScale = getFloat({\n      data: attributes.fontHorizontalScale,\n      defaultValue: 100,\n      validate: x => x >= 0,\n    });\n    this.fontVerticalScale = getFloat({\n      data: attributes.fontVerticalScale,\n      defaultValue: 100,\n      validate: x => x >= 0,\n    });\n    this.id = attributes.id || \"\";\n    this.kerningMode = getStringOption(attributes.kerningMode, [\n      \"none\",\n      \"pair\",\n    ]);\n    this.letterSpacing = getMeasurement(attributes.letterSpacing, \"0\");\n    this.lineThrough = getInteger({\n      data: attributes.lineThrough,\n      defaultValue: 0,\n      validate: x => x === 1 || x === 2,\n    });\n    this.lineThroughPeriod = getStringOption(attributes.lineThroughPeriod, [\n      \"all\",\n      \"word\",\n    ]);\n    this.overline = getInteger({\n      data: attributes.overline,\n      defaultValue: 0,\n      validate: x => x === 1 || x === 2,\n    });\n    this.overlinePeriod = getStringOption(attributes.overlinePeriod, [\n      \"all\",\n      \"word\",\n    ]);\n    this.posture = getStringOption(attributes.posture, [\"normal\", \"italic\"]);\n    this.size = getMeasurement(attributes.size, \"10pt\");\n    this.typeface = attributes.typeface || \"Courier\";\n    this.underline = getInteger({\n      data: attributes.underline,\n      defaultValue: 0,\n      validate: x => x === 1 || x === 2,\n    });\n    this.underlinePeriod = getStringOption(attributes.underlinePeriod, [\n      \"all\",\n      \"word\",\n    ]);\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.weight = getStringOption(attributes.weight, [\"normal\", \"bold\"]);\n    this.extras = null;\n    this.fill = null;\n  }\n\n  [$clean](builder) {\n    super[$clean](builder);\n    this[$globalData].usedTypefaces.add(this.typeface);\n  }\n\n  [$toStyle]() {\n    const style = toStyle(this, \"fill\");\n    const color = style.color;\n    if (color) {\n      if (color === \"#000000\") {\n        // Default font color.\n        delete style.color;\n      } else if (!color.startsWith(\"#\")) {\n        // We've a gradient which is not possible for a font color\n        // so use a workaround.\n        style.background = color;\n        style.backgroundClip = \"text\";\n        style.color = \"transparent\";\n      }\n    }\n\n    if (this.baselineShift) {\n      style.verticalAlign = measureToString(this.baselineShift);\n    }\n\n    // TODO: fontHorizontalScale\n    // TODO: fontVerticalScale\n\n    style.fontKerning = this.kerningMode === \"none\" ? \"none\" : \"normal\";\n    style.letterSpacing = measureToString(this.letterSpacing);\n\n    if (this.lineThrough !== 0) {\n      style.textDecoration = \"line-through\";\n      if (this.lineThrough === 2) {\n        style.textDecorationStyle = \"double\";\n      }\n    }\n\n    // TODO: lineThroughPeriod\n\n    if (this.overline !== 0) {\n      style.textDecoration = \"overline\";\n      if (this.overline === 2) {\n        style.textDecorationStyle = \"double\";\n      }\n    }\n\n    // TODO: overlinePeriod\n\n    style.fontStyle = this.posture;\n    style.fontSize = measureToString(0.99 * this.size);\n\n    setFontFamily(this, this, this[$globalData].fontFinder, style);\n\n    if (this.underline !== 0) {\n      style.textDecoration = \"underline\";\n      if (this.underline === 2) {\n        style.textDecorationStyle = \"double\";\n      }\n    }\n\n    // TODO: underlinePeriod\n\n    style.fontWeight = this.weight;\n\n    return style;\n  }\n}\n\nclass Format extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"format\", /* hasChildren = */ true);\n    this.id = attributes.id || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.extras = null;\n    this.picture = null;\n  }\n}\n\nclass Handler extends StringObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"handler\");\n    this.id = attributes.id || \"\";\n    this.type = getStringOption(attributes.type, [\"optional\", \"required\"]);\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n  }\n}\n\nclass Hyphenation extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"hyphenation\");\n    this.excludeAllCaps = getInteger({\n      data: attributes.excludeAllCaps,\n      defaultValue: 0,\n      validate: x => x === 1,\n    });\n    this.excludeInitialCap = getInteger({\n      data: attributes.excludeInitialCap,\n      defaultValue: 0,\n      validate: x => x === 1,\n    });\n    this.hyphenate = getInteger({\n      data: attributes.hyphenate,\n      defaultValue: 0,\n      validate: x => x === 1,\n    });\n    this.id = attributes.id || \"\";\n    this.pushCharacterCount = getInteger({\n      data: attributes.pushCharacterCount,\n      defaultValue: 3,\n      validate: x => x >= 0,\n    });\n    this.remainCharacterCount = getInteger({\n      data: attributes.remainCharacterCount,\n      defaultValue: 3,\n      validate: x => x >= 0,\n    });\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.wordCharacterCount = getInteger({\n      data: attributes.wordCharacterCount,\n      defaultValue: 7,\n      validate: x => x >= 0,\n    });\n  }\n}\n\nclass Image extends StringObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"image\");\n    this.aspect = getStringOption(attributes.aspect, [\n      \"fit\",\n      \"actual\",\n      \"height\",\n      \"none\",\n      \"width\",\n    ]);\n    this.contentType = attributes.contentType || \"\";\n    this.href = attributes.href || \"\";\n    this.id = attributes.id || \"\";\n    this.name = attributes.name || \"\";\n    this.transferEncoding = getStringOption(attributes.transferEncoding, [\n      \"base64\",\n      \"none\",\n      \"package\",\n    ]);\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n  }\n\n  [$toHTML]() {\n    if (this.contentType && !MIMES.has(this.contentType.toLowerCase())) {\n      return HTMLResult.EMPTY;\n    }\n\n    let buffer =\n      this[$globalData].images && this[$globalData].images.get(this.href);\n    if (!buffer && (this.href || !this[$content])) {\n      // In general, we don't get remote data and use what we have\n      // in the pdf itself, so no picture for non null href.\n      return HTMLResult.EMPTY;\n    }\n\n    if (!buffer && this.transferEncoding === \"base64\") {\n      buffer = stringToBytes(atob(this[$content]));\n    }\n\n    if (!buffer) {\n      return HTMLResult.EMPTY;\n    }\n\n    if (!this.contentType) {\n      for (const [header, type] of IMAGES_HEADERS) {\n        if (\n          buffer.length > header.length &&\n          header.every((x, i) => x === buffer[i])\n        ) {\n          this.contentType = type;\n          break;\n        }\n      }\n      if (!this.contentType) {\n        return HTMLResult.EMPTY;\n      }\n    }\n\n    // TODO: Firefox doesn't support natively tiff (and tif) format.\n    const blob = new Blob([buffer], { type: this.contentType });\n    let style;\n    switch (this.aspect) {\n      case \"fit\":\n      case \"actual\":\n        // TODO: check what to do with actual.\n        // Normally we should return {auto, auto} for it but\n        // it implies some wrong rendering (see xfa_bug1716816.pdf).\n        break;\n      case \"height\":\n        style = {\n          height: \"100%\",\n          objectFit: \"fill\",\n        };\n        break;\n      case \"none\":\n        style = {\n          width: \"100%\",\n          height: \"100%\",\n          objectFit: \"fill\",\n        };\n        break;\n      case \"width\":\n        style = {\n          width: \"100%\",\n          objectFit: \"fill\",\n        };\n        break;\n    }\n    const parent = this[$getParent]();\n    return HTMLResult.success({\n      name: \"img\",\n      attributes: {\n        class: [\"xfaImage\"],\n        style,\n        src: URL.createObjectURL(blob),\n        alt: parent ? ariaLabel(parent[$getParent]()) : null,\n      },\n    });\n  }\n}\n\nclass ImageEdit extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"imageEdit\", /* hasChildren = */ true);\n    this.data = getStringOption(attributes.data, [\"link\", \"embed\"]);\n    this.id = attributes.id || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.border = null;\n    this.extras = null;\n    this.margin = null;\n  }\n\n  [$toHTML](availableSpace) {\n    if (this.data === \"embed\") {\n      return HTMLResult.success({\n        name: \"div\",\n        children: [],\n        attributes: {},\n      });\n    }\n\n    return HTMLResult.EMPTY;\n  }\n}\n\nclass Integer extends ContentObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"integer\");\n    this.id = attributes.id || \"\";\n    this.name = attributes.name || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n  }\n\n  [$finalize]() {\n    const number = parseInt(this[$content].trim(), 10);\n    this[$content] = isNaN(number) ? null : number;\n  }\n\n  [$toHTML](availableSpace) {\n    return valueToHtml(\n      this[$content] !== null ? this[$content].toString() : \"\"\n    );\n  }\n}\n\nclass Issuers extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"issuers\", /* hasChildren = */ true);\n    this.id = attributes.id || \"\";\n    this.type = getStringOption(attributes.type, [\"optional\", \"required\"]);\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.certificate = new XFAObjectArray();\n  }\n}\n\nclass Items extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"items\", /* hasChildren = */ true);\n    this.id = attributes.id || \"\";\n    this.name = attributes.name || \"\";\n    this.presence = getStringOption(attributes.presence, [\n      \"visible\",\n      \"hidden\",\n      \"inactive\",\n      \"invisible\",\n    ]);\n    this.ref = attributes.ref || \"\";\n    this.save = getInteger({\n      data: attributes.save,\n      defaultValue: 0,\n      validate: x => x === 1,\n    });\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.boolean = new XFAObjectArray();\n    this.date = new XFAObjectArray();\n    this.dateTime = new XFAObjectArray();\n    this.decimal = new XFAObjectArray();\n    this.exData = new XFAObjectArray();\n    this.float = new XFAObjectArray();\n    this.image = new XFAObjectArray();\n    this.integer = new XFAObjectArray();\n    this.text = new XFAObjectArray();\n    this.time = new XFAObjectArray();\n  }\n\n  [$toHTML]() {\n    const output = [];\n    for (const child of this[$getChildren]()) {\n      output.push(child[$text]());\n    }\n    return HTMLResult.success(output);\n  }\n}\n\nclass Keep extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"keep\", /* hasChildren = */ true);\n    this.id = attributes.id || \"\";\n    const options = [\"none\", \"contentArea\", \"pageArea\"];\n    this.intact = getStringOption(attributes.intact, options);\n    this.next = getStringOption(attributes.next, options);\n    this.previous = getStringOption(attributes.previous, options);\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.extras = null;\n  }\n}\n\nclass KeyUsage extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"keyUsage\");\n    const options = [\"\", \"yes\", \"no\"];\n    this.crlSign = getStringOption(attributes.crlSign, options);\n    this.dataEncipherment = getStringOption(\n      attributes.dataEncipherment,\n      options\n    );\n    this.decipherOnly = getStringOption(attributes.decipherOnly, options);\n    this.digitalSignature = getStringOption(\n      attributes.digitalSignature,\n      options\n    );\n    this.encipherOnly = getStringOption(attributes.encipherOnly, options);\n    this.id = attributes.id || \"\";\n    this.keyAgreement = getStringOption(attributes.keyAgreement, options);\n    this.keyCertSign = getStringOption(attributes.keyCertSign, options);\n    this.keyEncipherment = getStringOption(attributes.keyEncipherment, options);\n    this.nonRepudiation = getStringOption(attributes.nonRepudiation, options);\n    this.type = getStringOption(attributes.type, [\"optional\", \"required\"]);\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n  }\n}\n\nclass Line extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"line\", /* hasChildren = */ true);\n    this.hand = getStringOption(attributes.hand, [\"even\", \"left\", \"right\"]);\n    this.id = attributes.id || \"\";\n    this.slope = getStringOption(attributes.slope, [\"\\\\\", \"/\"]);\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.edge = null;\n  }\n\n  [$toHTML]() {\n    const parent = this[$getParent]()[$getParent]();\n    const edge = this.edge ? this.edge : new Edge({});\n    const edgeStyle = edge[$toStyle]();\n    const style = Object.create(null);\n    const thickness = edge.presence === \"visible\" ? edge.thickness : 0;\n    style.strokeWidth = measureToString(thickness);\n    style.stroke = edgeStyle.color;\n    let x1, y1, x2, y2;\n    let width = \"100%\";\n    let height = \"100%\";\n\n    if (parent.w <= thickness) {\n      [x1, y1, x2, y2] = [\"50%\", 0, \"50%\", \"100%\"];\n      width = style.strokeWidth;\n    } else if (parent.h <= thickness) {\n      [x1, y1, x2, y2] = [0, \"50%\", \"100%\", \"50%\"];\n      height = style.strokeWidth;\n    } else {\n      if (this.slope === \"\\\\\") {\n        [x1, y1, x2, y2] = [0, 0, \"100%\", \"100%\"];\n      } else {\n        [x1, y1, x2, y2] = [0, \"100%\", \"100%\", 0];\n      }\n    }\n\n    const line = {\n      name: \"line\",\n      attributes: {\n        xmlns: SVG_NS,\n        x1,\n        y1,\n        x2,\n        y2,\n        style,\n      },\n    };\n\n    const svg = {\n      name: \"svg\",\n      children: [line],\n      attributes: {\n        xmlns: SVG_NS,\n        width,\n        height,\n        style: {\n          overflow: \"visible\",\n        },\n      },\n    };\n\n    if (hasMargin(parent)) {\n      return HTMLResult.success({\n        name: \"div\",\n        attributes: {\n          style: {\n            display: \"inline\",\n            width: \"100%\",\n            height: \"100%\",\n          },\n        },\n        children: [svg],\n      });\n    }\n\n    svg.attributes.style.position = \"absolute\";\n    return HTMLResult.success(svg);\n  }\n}\n\nclass Linear extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"linear\", /* hasChildren = */ true);\n    this.id = attributes.id || \"\";\n    this.type = getStringOption(attributes.type, [\n      \"toRight\",\n      \"toBottom\",\n      \"toLeft\",\n      \"toTop\",\n    ]);\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.color = null;\n    this.extras = null;\n  }\n\n  [$toStyle](startColor) {\n    startColor = startColor ? startColor[$toStyle]() : \"#FFFFFF\";\n    const transf = this.type.replace(/([RBLT])/, \" $1\").toLowerCase();\n    const endColor = this.color ? this.color[$toStyle]() : \"#000000\";\n    return `linear-gradient(${transf}, ${startColor}, ${endColor})`;\n  }\n}\n\nclass LockDocument extends ContentObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"lockDocument\");\n    this.id = attributes.id || \"\";\n    this.type = getStringOption(attributes.type, [\"optional\", \"required\"]);\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n  }\n\n  [$finalize]() {\n    this[$content] = getStringOption(this[$content], [\"auto\", \"0\", \"1\"]);\n  }\n}\n\nclass Manifest extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"manifest\", /* hasChildren = */ true);\n    this.action = getStringOption(attributes.action, [\n      \"include\",\n      \"all\",\n      \"exclude\",\n    ]);\n    this.id = attributes.id || \"\";\n    this.name = attributes.name || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.extras = null;\n    this.ref = new XFAObjectArray();\n  }\n}\n\nclass Margin extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"margin\", /* hasChildren = */ true);\n    this.bottomInset = getMeasurement(attributes.bottomInset, \"0\");\n    this.id = attributes.id || \"\";\n    this.leftInset = getMeasurement(attributes.leftInset, \"0\");\n    this.rightInset = getMeasurement(attributes.rightInset, \"0\");\n    this.topInset = getMeasurement(attributes.topInset, \"0\");\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.extras = null;\n  }\n\n  [$toStyle]() {\n    return {\n      margin:\n        measureToString(this.topInset) +\n        \" \" +\n        measureToString(this.rightInset) +\n        \" \" +\n        measureToString(this.bottomInset) +\n        \" \" +\n        measureToString(this.leftInset),\n    };\n  }\n}\n\nclass Mdp extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"mdp\");\n    this.id = attributes.id || \"\";\n    this.permissions = getInteger({\n      data: attributes.permissions,\n      defaultValue: 2,\n      validate: x => x === 1 || x === 3,\n    });\n    this.signatureType = getStringOption(attributes.signatureType, [\n      \"filler\",\n      \"author\",\n    ]);\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n  }\n}\n\nclass Medium extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"medium\");\n    this.id = attributes.id || \"\";\n    this.imagingBBox = getBBox(attributes.imagingBBox);\n    this.long = getMeasurement(attributes.long);\n    this.orientation = getStringOption(attributes.orientation, [\n      \"portrait\",\n      \"landscape\",\n    ]);\n    this.short = getMeasurement(attributes.short);\n    this.stock = attributes.stock || \"\";\n    this.trayIn = getStringOption(attributes.trayIn, [\n      \"auto\",\n      \"delegate\",\n      \"pageFront\",\n    ]);\n    this.trayOut = getStringOption(attributes.trayOut, [\"auto\", \"delegate\"]);\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n  }\n}\n\nclass Message extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"message\", /* hasChildren = */ true);\n    this.id = attributes.id || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.text = new XFAObjectArray();\n  }\n}\n\nclass NumericEdit extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"numericEdit\", /* hasChildren = */ true);\n    this.hScrollPolicy = getStringOption(attributes.hScrollPolicy, [\n      \"auto\",\n      \"off\",\n      \"on\",\n    ]);\n    this.id = attributes.id || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.border = null;\n    this.comb = null;\n    this.extras = null;\n    this.margin = null;\n  }\n\n  [$toHTML](availableSpace) {\n    // TODO: incomplete.\n    const style = toStyle(this, \"border\", \"font\", \"margin\");\n    const field = this[$getParent]()[$getParent]();\n    const html = {\n      name: \"input\",\n      attributes: {\n        type: \"text\",\n        fieldId: field[$uid],\n        dataId: (field[$data] && field[$data][$uid]) || field[$uid],\n        class: [\"xfaTextfield\"],\n        style,\n        \"aria-label\": ariaLabel(field),\n      },\n    };\n\n    return HTMLResult.success({\n      name: \"label\",\n      attributes: {\n        class: [\"xfaLabel\"],\n      },\n      children: [html],\n    });\n  }\n}\n\nclass Occur extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"occur\", /* hasChildren = */ true);\n    this.id = attributes.id || \"\";\n    this.initial =\n      attributes.initial !== \"\"\n        ? getInteger({\n            data: attributes.initial,\n            defaultValue: \"\",\n            validate: x => true,\n          })\n        : \"\";\n    this.max =\n      attributes.max !== \"\"\n        ? getInteger({\n            data: attributes.max,\n            defaultValue: 1,\n            validate: x => true,\n          })\n        : \"\";\n    this.min =\n      attributes.min !== \"\"\n        ? getInteger({\n            data: attributes.min,\n            defaultValue: 1,\n            validate: x => true,\n          })\n        : \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.extras = null;\n  }\n\n  [$clean]() {\n    const parent = this[$getParent]();\n    const originalMin = this.min;\n\n    if (this.min === \"\") {\n      this.min =\n        parent instanceof PageArea || parent instanceof PageSet ? 0 : 1;\n    }\n    if (this.max === \"\") {\n      if (originalMin === \"\") {\n        this.max =\n          parent instanceof PageArea || parent instanceof PageSet ? -1 : 1;\n      } else {\n        this.max = this.min;\n      }\n    }\n\n    if (this.max !== -1 && this.max < this.min) {\n      this.max = this.min;\n    }\n\n    if (this.initial === \"\") {\n      this.initial = parent instanceof Template ? 1 : this.min;\n    }\n  }\n}\n\nclass Oid extends StringObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"oid\");\n    this.id = attributes.id || \"\";\n    this.name = attributes.name || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n  }\n}\n\nclass Oids extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"oids\", /* hasChildren = */ true);\n    this.id = attributes.id || \"\";\n    this.type = getStringOption(attributes.type, [\"optional\", \"required\"]);\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.oid = new XFAObjectArray();\n  }\n}\n\nclass Overflow extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"overflow\");\n    this.id = attributes.id || \"\";\n    this.leader = attributes.leader || \"\";\n    this.target = attributes.target || \"\";\n    this.trailer = attributes.trailer || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n  }\n\n  [$getExtra]() {\n    if (!this[$extra]) {\n      const parent = this[$getParent]();\n      const root = this[$getTemplateRoot]();\n      const target = root[$searchNode](this.target, parent);\n      const leader = root[$searchNode](this.leader, parent);\n      const trailer = root[$searchNode](this.trailer, parent);\n      this[$extra] = {\n        target: (target && target[0]) || null,\n        leader: (leader && leader[0]) || null,\n        trailer: (trailer && trailer[0]) || null,\n        addLeader: false,\n        addTrailer: false,\n      };\n    }\n    return this[$extra];\n  }\n}\n\nclass PageArea extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"pageArea\", /* hasChildren = */ true);\n    this.blankOrNotBlank = getStringOption(attributes.blankOrNotBlank, [\n      \"any\",\n      \"blank\",\n      \"notBlank\",\n    ]);\n    this.id = attributes.id || \"\";\n    this.initialNumber = getInteger({\n      data: attributes.initialNumber,\n      defaultValue: 1,\n      validate: x => true,\n    });\n    this.name = attributes.name || \"\";\n    this.numbered = getInteger({\n      data: attributes.numbered,\n      defaultValue: 1,\n      validate: x => true,\n    });\n    this.oddOrEven = getStringOption(attributes.oddOrEven, [\n      \"any\",\n      \"even\",\n      \"odd\",\n    ]);\n    this.pagePosition = getStringOption(attributes.pagePosition, [\n      \"any\",\n      \"first\",\n      \"last\",\n      \"only\",\n      \"rest\",\n    ]);\n    this.relevant = getRelevant(attributes.relevant);\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.desc = null;\n    this.extras = null;\n    this.medium = null;\n    this.occur = null;\n    this.area = new XFAObjectArray();\n    this.contentArea = new XFAObjectArray();\n    this.draw = new XFAObjectArray();\n    this.exclGroup = new XFAObjectArray();\n    this.field = new XFAObjectArray();\n    this.subform = new XFAObjectArray();\n  }\n\n  [$isUsable]() {\n    if (!this[$extra]) {\n      this[$extra] = {\n        numberOfUse: 0,\n      };\n      return true;\n    }\n    return (\n      !this.occur ||\n      this.occur.max === -1 ||\n      this[$extra].numberOfUse < this.occur.max\n    );\n  }\n\n  [$cleanPage]() {\n    delete this[$extra];\n  }\n\n  [$getNextPage]() {\n    if (!this[$extra]) {\n      this[$extra] = {\n        numberOfUse: 0,\n      };\n    }\n\n    const parent = this[$getParent]();\n    if (parent.relation === \"orderedOccurrence\") {\n      if (this[$isUsable]()) {\n        this[$extra].numberOfUse += 1;\n        return this;\n      }\n    }\n\n    return parent[$getNextPage]();\n  }\n\n  [$getAvailableSpace]() {\n    return this[$extra].space || { width: 0, height: 0 };\n  }\n\n  [$toHTML]() {\n    // TODO: incomplete.\n    if (!this[$extra]) {\n      this[$extra] = {\n        numberOfUse: 1,\n      };\n    }\n\n    const children = [];\n    this[$extra].children = children;\n\n    const style = Object.create(null);\n    if (this.medium && this.medium.short && this.medium.long) {\n      style.width = measureToString(this.medium.short);\n      style.height = measureToString(this.medium.long);\n      this[$extra].space = {\n        width: this.medium.short,\n        height: this.medium.long,\n      };\n      if (this.medium.orientation === \"landscape\") {\n        const x = style.width;\n        style.width = style.height;\n        style.height = x;\n        this[$extra].space = {\n          width: this.medium.long,\n          height: this.medium.short,\n        };\n      }\n    } else {\n      warn(\"XFA - No medium specified in pageArea: please file a bug.\");\n    }\n\n    this[$childrenToHTML]({\n      filter: new Set([\"area\", \"draw\", \"field\", \"subform\"]),\n      include: true,\n    });\n\n    // contentarea must be the last container to be sure it is\n    // on top of the others.\n    this[$childrenToHTML]({\n      filter: new Set([\"contentArea\"]),\n      include: true,\n    });\n\n    return HTMLResult.success({\n      name: \"div\",\n      children,\n      attributes: {\n        class: [\"xfaPage\"],\n        id: this[$uid],\n        style,\n        xfaName: this.name,\n      },\n    });\n  }\n}\n\nclass PageSet extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"pageSet\", /* hasChildren = */ true);\n    this.duplexImposition = getStringOption(attributes.duplexImposition, [\n      \"longEdge\",\n      \"shortEdge\",\n    ]);\n    this.id = attributes.id || \"\";\n    this.name = attributes.name || \"\";\n    this.relation = getStringOption(attributes.relation, [\n      \"orderedOccurrence\",\n      \"duplexPaginated\",\n      \"simplexPaginated\",\n    ]);\n    this.relevant = getRelevant(attributes.relevant);\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.extras = null;\n    this.occur = null;\n    this.pageArea = new XFAObjectArray();\n    this.pageSet = new XFAObjectArray();\n  }\n\n  [$cleanPage]() {\n    for (const page of this.pageArea.children) {\n      page[$cleanPage]();\n    }\n    for (const page of this.pageSet.children) {\n      page[$cleanPage]();\n    }\n  }\n\n  [$isUsable]() {\n    return (\n      !this.occur ||\n      this.occur.max === -1 ||\n      this[$extra].numberOfUse < this.occur.max\n    );\n  }\n\n  [$getNextPage]() {\n    if (!this[$extra]) {\n      this[$extra] = {\n        numberOfUse: 1,\n        pageIndex: -1,\n        pageSetIndex: -1,\n      };\n    }\n\n    if (this.relation === \"orderedOccurrence\") {\n      if (this[$extra].pageIndex + 1 < this.pageArea.children.length) {\n        this[$extra].pageIndex += 1;\n        const pageArea = this.pageArea.children[this[$extra].pageIndex];\n        return pageArea[$getNextPage]();\n      }\n\n      if (this[$extra].pageSetIndex + 1 < this.pageSet.children.length) {\n        this[$extra].pageSetIndex += 1;\n        return this.pageSet.children[this[$extra].pageSetIndex][$getNextPage]();\n      }\n\n      if (this[$isUsable]()) {\n        this[$extra].numberOfUse += 1;\n        this[$extra].pageIndex = -1;\n        this[$extra].pageSetIndex = -1;\n        return this[$getNextPage]();\n      }\n\n      const parent = this[$getParent]();\n      if (parent instanceof PageSet) {\n        return parent[$getNextPage]();\n      }\n\n      this[$cleanPage]();\n      return this[$getNextPage]();\n    }\n    const pageNumber = this[$getTemplateRoot]()[$extra].pageNumber;\n    const parity = pageNumber % 2 === 0 ? \"even\" : \"odd\";\n    const position = pageNumber === 0 ? \"first\" : \"rest\";\n\n    let page = this.pageArea.children.find(\n      p => p.oddOrEven === parity && p.pagePosition === position\n    );\n    if (page) {\n      return page;\n    }\n\n    page = this.pageArea.children.find(\n      p => p.oddOrEven === \"any\" && p.pagePosition === position\n    );\n    if (page) {\n      return page;\n    }\n\n    page = this.pageArea.children.find(\n      p => p.oddOrEven === \"any\" && p.pagePosition === \"any\"\n    );\n    if (page) {\n      return page;\n    }\n\n    return this.pageArea.children[0];\n  }\n}\n\nclass Para extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"para\", /* hasChildren = */ true);\n    this.hAlign = getStringOption(attributes.hAlign, [\n      \"left\",\n      \"center\",\n      \"justify\",\n      \"justifyAll\",\n      \"radix\",\n      \"right\",\n    ]);\n    this.id = attributes.id || \"\";\n    this.lineHeight = attributes.lineHeight\n      ? getMeasurement(attributes.lineHeight, \"0pt\")\n      : \"\";\n    this.marginLeft = attributes.marginLeft\n      ? getMeasurement(attributes.marginLeft, \"0pt\")\n      : \"\";\n    this.marginRight = attributes.marginRight\n      ? getMeasurement(attributes.marginRight, \"0pt\")\n      : \"\";\n    this.orphans = getInteger({\n      data: attributes.orphans,\n      defaultValue: 0,\n      validate: x => x >= 0,\n    });\n    this.preserve = attributes.preserve || \"\";\n    this.radixOffset = attributes.radixOffset\n      ? getMeasurement(attributes.radixOffset, \"0pt\")\n      : \"\";\n    this.spaceAbove = attributes.spaceAbove\n      ? getMeasurement(attributes.spaceAbove, \"0pt\")\n      : \"\";\n    this.spaceBelow = attributes.spaceBelow\n      ? getMeasurement(attributes.spaceBelow, \"0pt\")\n      : \"\";\n    this.tabDefault = attributes.tabDefault\n      ? getMeasurement(this.tabDefault)\n      : \"\";\n    this.tabStops = (attributes.tabStops || \"\")\n      .trim()\n      .split(/\\s+/)\n      .map((x, i) => (i % 2 === 1 ? getMeasurement(x) : x));\n    this.textIndent = attributes.textIndent\n      ? getMeasurement(attributes.textIndent, \"0pt\")\n      : \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.vAlign = getStringOption(attributes.vAlign, [\n      \"top\",\n      \"bottom\",\n      \"middle\",\n    ]);\n    this.widows = getInteger({\n      data: attributes.widows,\n      defaultValue: 0,\n      validate: x => x >= 0,\n    });\n    this.hyphenation = null;\n  }\n\n  [$toStyle]() {\n    const style = toStyle(this, \"hAlign\");\n    if (this.marginLeft !== \"\") {\n      style.paddingLeft = measureToString(this.marginLeft);\n    }\n    if (this.marginRight !== \"\") {\n      style.paddingight = measureToString(this.marginRight);\n    }\n    if (this.spaceAbove !== \"\") {\n      style.paddingTop = measureToString(this.spaceAbove);\n    }\n    if (this.spaceBelow !== \"\") {\n      style.paddingBottom = measureToString(this.spaceBelow);\n    }\n    if (this.textIndent !== \"\") {\n      style.textIndent = measureToString(this.textIndent);\n      fixTextIndent(style);\n    }\n\n    if (this.lineHeight > 0) {\n      style.lineHeight = measureToString(this.lineHeight);\n    }\n\n    if (this.tabDefault !== \"\") {\n      style.tabSize = measureToString(this.tabDefault);\n    }\n\n    if (this.tabStops.length > 0) {\n      // TODO\n    }\n\n    if (this.hyphenatation) {\n      Object.assign(style, this.hyphenatation[$toStyle]());\n    }\n\n    return style;\n  }\n}\n\nclass PasswordEdit extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"passwordEdit\", /* hasChildren = */ true);\n    this.hScrollPolicy = getStringOption(attributes.hScrollPolicy, [\n      \"auto\",\n      \"off\",\n      \"on\",\n    ]);\n    this.id = attributes.id || \"\";\n    this.passwordChar = attributes.passwordChar || \"*\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.border = null;\n    this.extras = null;\n    this.margin = null;\n  }\n}\n\nclass Pattern extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"pattern\", /* hasChildren = */ true);\n    this.id = attributes.id || \"\";\n    this.type = getStringOption(attributes.type, [\n      \"crossHatch\",\n      \"crossDiagonal\",\n      \"diagonalLeft\",\n      \"diagonalRight\",\n      \"horizontal\",\n      \"vertical\",\n    ]);\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.color = null;\n    this.extras = null;\n  }\n\n  [$toStyle](startColor) {\n    startColor = startColor ? startColor[$toStyle]() : \"#FFFFFF\";\n    const endColor = this.color ? this.color[$toStyle]() : \"#000000\";\n    const width = 5;\n    const cmd = \"repeating-linear-gradient\";\n    const colors = `${startColor},${startColor} ${width}px,${endColor} ${width}px,${endColor} ${\n      2 * width\n    }px`;\n    switch (this.type) {\n      case \"crossHatch\":\n        return `${cmd}(to top,${colors}) ${cmd}(to right,${colors})`;\n      case \"crossDiagonal\":\n        return `${cmd}(45deg,${colors}) ${cmd}(-45deg,${colors})`;\n      case \"diagonalLeft\":\n        return `${cmd}(45deg,${colors})`;\n      case \"diagonalRight\":\n        return `${cmd}(-45deg,${colors})`;\n      case \"horizontal\":\n        return `${cmd}(to top,${colors})`;\n      case \"vertical\":\n        return `${cmd}(to right,${colors})`;\n    }\n\n    return \"\";\n  }\n}\n\nclass Picture extends StringObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"picture\");\n    this.id = attributes.id || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n  }\n}\n\nclass Proto extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"proto\", /* hasChildren = */ true);\n    this.appearanceFilter = new XFAObjectArray();\n    this.arc = new XFAObjectArray();\n    this.area = new XFAObjectArray();\n    this.assist = new XFAObjectArray();\n    this.barcode = new XFAObjectArray();\n    this.bindItems = new XFAObjectArray();\n    this.bookend = new XFAObjectArray();\n    this.boolean = new XFAObjectArray();\n    this.border = new XFAObjectArray();\n    this.break = new XFAObjectArray();\n    this.breakAfter = new XFAObjectArray();\n    this.breakBefore = new XFAObjectArray();\n    this.button = new XFAObjectArray();\n    this.calculate = new XFAObjectArray();\n    this.caption = new XFAObjectArray();\n    this.certificate = new XFAObjectArray();\n    this.certificates = new XFAObjectArray();\n    this.checkButton = new XFAObjectArray();\n    this.choiceList = new XFAObjectArray();\n    this.color = new XFAObjectArray();\n    this.comb = new XFAObjectArray();\n    this.connect = new XFAObjectArray();\n    this.contentArea = new XFAObjectArray();\n    this.corner = new XFAObjectArray();\n    this.date = new XFAObjectArray();\n    this.dateTime = new XFAObjectArray();\n    this.dateTimeEdit = new XFAObjectArray();\n    this.decimal = new XFAObjectArray();\n    this.defaultUi = new XFAObjectArray();\n    this.desc = new XFAObjectArray();\n    this.digestMethod = new XFAObjectArray();\n    this.digestMethods = new XFAObjectArray();\n    this.draw = new XFAObjectArray();\n    this.edge = new XFAObjectArray();\n    this.encoding = new XFAObjectArray();\n    this.encodings = new XFAObjectArray();\n    this.encrypt = new XFAObjectArray();\n    this.encryptData = new XFAObjectArray();\n    this.encryption = new XFAObjectArray();\n    this.encryptionMethod = new XFAObjectArray();\n    this.encryptionMethods = new XFAObjectArray();\n    this.event = new XFAObjectArray();\n    this.exData = new XFAObjectArray();\n    this.exObject = new XFAObjectArray();\n    this.exclGroup = new XFAObjectArray();\n    this.execute = new XFAObjectArray();\n    this.extras = new XFAObjectArray();\n    this.field = new XFAObjectArray();\n    this.fill = new XFAObjectArray();\n    this.filter = new XFAObjectArray();\n    this.float = new XFAObjectArray();\n    this.font = new XFAObjectArray();\n    this.format = new XFAObjectArray();\n    this.handler = new XFAObjectArray();\n    this.hyphenation = new XFAObjectArray();\n    this.image = new XFAObjectArray();\n    this.imageEdit = new XFAObjectArray();\n    this.integer = new XFAObjectArray();\n    this.issuers = new XFAObjectArray();\n    this.items = new XFAObjectArray();\n    this.keep = new XFAObjectArray();\n    this.keyUsage = new XFAObjectArray();\n    this.line = new XFAObjectArray();\n    this.linear = new XFAObjectArray();\n    this.lockDocument = new XFAObjectArray();\n    this.manifest = new XFAObjectArray();\n    this.margin = new XFAObjectArray();\n    this.mdp = new XFAObjectArray();\n    this.medium = new XFAObjectArray();\n    this.message = new XFAObjectArray();\n    this.numericEdit = new XFAObjectArray();\n    this.occur = new XFAObjectArray();\n    this.oid = new XFAObjectArray();\n    this.oids = new XFAObjectArray();\n    this.overflow = new XFAObjectArray();\n    this.pageArea = new XFAObjectArray();\n    this.pageSet = new XFAObjectArray();\n    this.para = new XFAObjectArray();\n    this.passwordEdit = new XFAObjectArray();\n    this.pattern = new XFAObjectArray();\n    this.picture = new XFAObjectArray();\n    this.radial = new XFAObjectArray();\n    this.reason = new XFAObjectArray();\n    this.reasons = new XFAObjectArray();\n    this.rectangle = new XFAObjectArray();\n    this.ref = new XFAObjectArray();\n    this.script = new XFAObjectArray();\n    this.setProperty = new XFAObjectArray();\n    this.signData = new XFAObjectArray();\n    this.signature = new XFAObjectArray();\n    this.signing = new XFAObjectArray();\n    this.solid = new XFAObjectArray();\n    this.speak = new XFAObjectArray();\n    this.stipple = new XFAObjectArray();\n    this.subform = new XFAObjectArray();\n    this.subformSet = new XFAObjectArray();\n    this.subjectDN = new XFAObjectArray();\n    this.subjectDNs = new XFAObjectArray();\n    this.submit = new XFAObjectArray();\n    this.text = new XFAObjectArray();\n    this.textEdit = new XFAObjectArray();\n    this.time = new XFAObjectArray();\n    this.timeStamp = new XFAObjectArray();\n    this.toolTip = new XFAObjectArray();\n    this.traversal = new XFAObjectArray();\n    this.traverse = new XFAObjectArray();\n    this.ui = new XFAObjectArray();\n    this.validate = new XFAObjectArray();\n    this.value = new XFAObjectArray();\n    this.variables = new XFAObjectArray();\n  }\n}\n\nclass Radial extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"radial\", /* hasChildren = */ true);\n    this.id = attributes.id || \"\";\n    this.type = getStringOption(attributes.type, [\"toEdge\", \"toCenter\"]);\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.color = null;\n    this.extras = null;\n  }\n\n  [$toStyle](startColor) {\n    startColor = startColor ? startColor[$toStyle]() : \"#FFFFFF\";\n    const endColor = this.color ? this.color[$toStyle]() : \"#000000\";\n    const colors =\n      this.type === \"toEdge\"\n        ? `${startColor},${endColor}`\n        : `${endColor},${startColor}`;\n    return `radial-gradient(circle at center, ${colors})`;\n  }\n}\n\nclass Reason extends StringObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"reason\");\n    this.id = attributes.id || \"\";\n    this.name = attributes.name || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n  }\n}\n\nclass Reasons extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"reasons\", /* hasChildren = */ true);\n    this.id = attributes.id || \"\";\n    this.type = getStringOption(attributes.type, [\"optional\", \"required\"]);\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.reason = new XFAObjectArray();\n  }\n}\n\nclass Rectangle extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"rectangle\", /* hasChildren = */ true);\n    this.hand = getStringOption(attributes.hand, [\"even\", \"left\", \"right\"]);\n    this.id = attributes.id || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.corner = new XFAObjectArray(4);\n    this.edge = new XFAObjectArray(4);\n    this.fill = null;\n  }\n\n  [$toHTML]() {\n    const edge = this.edge.children.length\n      ? this.edge.children[0]\n      : new Edge({});\n    const edgeStyle = edge[$toStyle]();\n    const style = Object.create(null);\n    if (this.fill && this.fill.presence === \"visible\") {\n      Object.assign(style, this.fill[$toStyle]());\n    } else {\n      style.fill = \"transparent\";\n    }\n    style.strokeWidth = measureToString(\n      edge.presence === \"visible\" ? edge.thickness : 0\n    );\n    style.stroke = edgeStyle.color;\n\n    const corner = this.corner.children.length\n      ? this.corner.children[0]\n      : new Corner({});\n    const cornerStyle = corner[$toStyle]();\n\n    const rect = {\n      name: \"rect\",\n      attributes: {\n        xmlns: SVG_NS,\n        width: \"100%\",\n        height: \"100%\",\n        x: 0,\n        y: 0,\n        rx: cornerStyle.radius,\n        ry: cornerStyle.radius,\n        style,\n      },\n    };\n\n    const svg = {\n      name: \"svg\",\n      children: [rect],\n      attributes: {\n        xmlns: SVG_NS,\n        style: {\n          overflow: \"visible\",\n        },\n        width: \"100%\",\n        height: \"100%\",\n      },\n    };\n\n    const parent = this[$getParent]()[$getParent]();\n    if (hasMargin(parent)) {\n      return HTMLResult.success({\n        name: \"div\",\n        attributes: {\n          style: {\n            display: \"inline\",\n            width: \"100%\",\n            height: \"100%\",\n          },\n        },\n        children: [svg],\n      });\n    }\n\n    svg.attributes.style.position = \"absolute\";\n    return HTMLResult.success(svg);\n  }\n}\n\nclass RefElement extends StringObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"ref\");\n    this.id = attributes.id || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n  }\n}\n\nclass Script extends StringObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"script\");\n    this.binding = attributes.binding || \"\";\n    this.contentType = attributes.contentType || \"\";\n    this.id = attributes.id || \"\";\n    this.name = attributes.name || \"\";\n    this.runAt = getStringOption(attributes.runAt, [\n      \"client\",\n      \"both\",\n      \"server\",\n    ]);\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n  }\n}\n\nclass SetProperty extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"setProperty\");\n    this.connection = attributes.connection || \"\";\n    this.ref = attributes.ref || \"\";\n    this.target = attributes.target || \"\";\n  }\n}\n\nclass SignData extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"signData\", /* hasChildren = */ true);\n    this.id = attributes.id || \"\";\n    this.operation = getStringOption(attributes.operation, [\n      \"sign\",\n      \"clear\",\n      \"verify\",\n    ]);\n    this.ref = attributes.ref || \"\";\n    this.target = attributes.target || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.filter = null;\n    this.manifest = null;\n  }\n}\n\nclass Signature extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"signature\", /* hasChildren = */ true);\n    this.id = attributes.id || \"\";\n    this.type = getStringOption(attributes.type, [\"PDF1.3\", \"PDF1.6\"]);\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.border = null;\n    this.extras = null;\n    this.filter = null;\n    this.manifest = null;\n    this.margin = null;\n  }\n}\n\nclass Signing extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"signing\", /* hasChildren = */ true);\n    this.id = attributes.id || \"\";\n    this.type = getStringOption(attributes.type, [\"optional\", \"required\"]);\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.certificate = new XFAObjectArray();\n  }\n}\n\nclass Solid extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"solid\", /* hasChildren = */ true);\n    this.id = attributes.id || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.extras = null;\n  }\n\n  [$toStyle](startColor) {\n    return startColor ? startColor[$toStyle]() : \"#FFFFFF\";\n  }\n}\n\nclass Speak extends StringObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"speak\");\n    this.disable = getInteger({\n      data: attributes.disable,\n      defaultValue: 0,\n      validate: x => x === 1,\n    });\n    this.id = attributes.id || \"\";\n    this.priority = getStringOption(attributes.priority, [\n      \"custom\",\n      \"caption\",\n      \"name\",\n      \"toolTip\",\n    ]);\n    this.rid = attributes.rid || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n  }\n}\n\nclass Stipple extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"stipple\", /* hasChildren = */ true);\n    this.id = attributes.id || \"\";\n    this.rate = getInteger({\n      data: attributes.rate,\n      defaultValue: 50,\n      validate: x => x >= 0 && x <= 100,\n    });\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.color = null;\n    this.extras = null;\n  }\n\n  [$toStyle](bgColor) {\n    const alpha = this.rate / 100;\n    return Util.makeHexColor(\n      Math.round(bgColor.value.r * (1 - alpha) + this.value.r * alpha),\n      Math.round(bgColor.value.g * (1 - alpha) + this.value.g * alpha),\n      Math.round(bgColor.value.b * (1 - alpha) + this.value.b * alpha)\n    );\n  }\n}\n\nclass Subform extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"subform\", /* hasChildren = */ true);\n    this.access = getStringOption(attributes.access, [\n      \"open\",\n      \"nonInteractive\",\n      \"protected\",\n      \"readOnly\",\n    ]);\n    this.allowMacro = getInteger({\n      data: attributes.allowMacro,\n      defaultValue: 0,\n      validate: x => x === 1,\n    });\n    this.anchorType = getStringOption(attributes.anchorType, [\n      \"topLeft\",\n      \"bottomCenter\",\n      \"bottomLeft\",\n      \"bottomRight\",\n      \"middleCenter\",\n      \"middleLeft\",\n      \"middleRight\",\n      \"topCenter\",\n      \"topRight\",\n    ]);\n    this.colSpan = getInteger({\n      data: attributes.colSpan,\n      defaultValue: 1,\n      validate: n => n >= 1 || n === -1,\n    });\n    this.columnWidths = (attributes.columnWidths || \"\")\n      .trim()\n      .split(/\\s+/)\n      .map(x => (x === \"-1\" ? -1 : getMeasurement(x)));\n    this.h = attributes.h ? getMeasurement(attributes.h) : \"\";\n    this.hAlign = getStringOption(attributes.hAlign, [\n      \"left\",\n      \"center\",\n      \"justify\",\n      \"justifyAll\",\n      \"radix\",\n      \"right\",\n    ]);\n    this.id = attributes.id || \"\";\n    this.layout = getStringOption(attributes.layout, [\n      \"position\",\n      \"lr-tb\",\n      \"rl-row\",\n      \"rl-tb\",\n      \"row\",\n      \"table\",\n      \"tb\",\n    ]);\n    this.locale = attributes.locale || \"\";\n    this.maxH = getMeasurement(attributes.maxH, \"0pt\");\n    this.maxW = getMeasurement(attributes.maxW, \"0pt\");\n    this.mergeMode = getStringOption(attributes.mergeMode, [\n      \"consumeData\",\n      \"matchTemplate\",\n    ]);\n    this.minH = getMeasurement(attributes.minH, \"0pt\");\n    this.minW = getMeasurement(attributes.minW, \"0pt\");\n    this.name = attributes.name || \"\";\n    this.presence = getStringOption(attributes.presence, [\n      \"visible\",\n      \"hidden\",\n      \"inactive\",\n      \"invisible\",\n    ]);\n    this.relevant = getRelevant(attributes.relevant);\n    this.restoreState = getStringOption(attributes.restoreState, [\n      \"manual\",\n      \"auto\",\n    ]);\n    this.scope = getStringOption(attributes.scope, [\"name\", \"none\"]);\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.w = attributes.w ? getMeasurement(attributes.w) : \"\";\n    this.x = getMeasurement(attributes.x, \"0pt\");\n    this.y = getMeasurement(attributes.y, \"0pt\");\n    this.assist = null;\n    this.bind = null;\n    this.bookend = null;\n    this.border = null;\n    this.break = null;\n    this.calculate = null;\n    this.desc = null;\n    this.extras = null;\n    this.keep = null;\n    this.margin = null;\n    this.occur = null;\n    this.overflow = null;\n    this.pageSet = null;\n    this.para = null;\n    this.traversal = null;\n    this.validate = null;\n    this.variables = null;\n    this.area = new XFAObjectArray();\n    this.breakAfter = new XFAObjectArray();\n    this.breakBefore = new XFAObjectArray();\n    this.connect = new XFAObjectArray();\n    this.draw = new XFAObjectArray();\n    this.event = new XFAObjectArray();\n    this.exObject = new XFAObjectArray();\n    this.exclGroup = new XFAObjectArray();\n    this.field = new XFAObjectArray();\n    this.proto = new XFAObjectArray();\n    this.setProperty = new XFAObjectArray();\n    this.subform = new XFAObjectArray();\n    this.subformSet = new XFAObjectArray();\n  }\n\n  [$getSubformParent]() {\n    const parent = this[$getParent]();\n    if (parent instanceof SubformSet) {\n      return parent[$getSubformParent]();\n    }\n    return parent;\n  }\n\n  [$isBindable]() {\n    return true;\n  }\n\n  [$isThereMoreWidth]() {\n    return (\n      (this.layout.endsWith(\"-tb\") &&\n        this[$extra].attempt === 0 &&\n        this[$extra].numberInLine > 0) ||\n      this[$getParent]()[$isThereMoreWidth]()\n    );\n  }\n\n  *[$getContainedChildren]() {\n    // This function is overriden in order to fake that subforms under\n    // this set are in fact under parent subform.\n    yield* getContainedChildren(this);\n  }\n\n  [$flushHTML]() {\n    return flushHTML(this);\n  }\n\n  [$addHTML](html, bbox) {\n    addHTML(this, html, bbox);\n  }\n\n  [$getAvailableSpace]() {\n    return getAvailableSpace(this);\n  }\n\n  [$isSplittable]() {\n    // We cannot cache the result here because the contentArea\n    // can change.\n    const parent = this[$getSubformParent]();\n    if (!parent[$isSplittable]()) {\n      return false;\n    }\n\n    if (this[$extra]._isSplittable !== undefined) {\n      return this[$extra]._isSplittable;\n    }\n\n    if (this.layout === \"position\" || this.layout.includes(\"row\")) {\n      this[$extra]._isSplittable = false;\n      return false;\n    }\n\n    if (this.keep && this.keep.intact !== \"none\") {\n      this[$extra]._isSplittable = false;\n      return false;\n    }\n\n    if (\n      parent.layout &&\n      parent.layout.endsWith(\"-tb\") &&\n      parent[$extra].numberInLine !== 0\n    ) {\n      // If parent can fit in w=100 and there's already an element which takes\n      // 90 then we've 10 for this element. Suppose this element has a tb layout\n      // and 5 elements have a width of 7 and the 6th has a width of 20:\n      // then this element (and all its content) must move on the next line.\n      // If this element is splittable then the first 5 children will stay\n      // at the end of the line: we don't want that.\n      return false;\n    }\n\n    this[$extra]._isSplittable = true;\n\n    return true;\n  }\n\n  [$toHTML](availableSpace) {\n    setTabIndex(this);\n\n    if (this.break) {\n      // break element is deprecated so plug it on one of its replacement\n      // breakBefore or breakAfter.\n      if (this.break.after !== \"auto\" || this.break.afterTarget !== \"\") {\n        const node = new BreakAfter({\n          targetType: this.break.after,\n          target: this.break.afterTarget,\n          startNew: this.break.startNew.toString(),\n        });\n        node[$globalData] = this[$globalData];\n        this[$appendChild](node);\n        this.breakAfter.push(node);\n      }\n\n      if (this.break.before !== \"auto\" || this.break.beforeTarget !== \"\") {\n        const node = new BreakBefore({\n          targetType: this.break.before,\n          target: this.break.beforeTarget,\n          startNew: this.break.startNew.toString(),\n        });\n        node[$globalData] = this[$globalData];\n        this[$appendChild](node);\n        this.breakBefore.push(node);\n      }\n\n      if (this.break.overflowTarget !== \"\") {\n        const node = new Overflow({\n          target: this.break.overflowTarget,\n          leader: this.break.overflowLeader,\n          trailer: this.break.overflowTrailer,\n        });\n        node[$globalData] = this[$globalData];\n        this[$appendChild](node);\n        this.overflow.push(node);\n      }\n\n      this[$removeChild](this.break);\n      this.break = null;\n    }\n\n    if (this.presence === \"hidden\" || this.presence === \"inactive\") {\n      return HTMLResult.EMPTY;\n    }\n\n    if (\n      this.breakBefore.children.length > 1 ||\n      this.breakAfter.children.length > 1\n    ) {\n      // Specs are always talking about the breakBefore element\n      // and it doesn't really make sense to have several ones.\n      warn(\n        \"XFA - Several breakBefore or breakAfter in subforms: please file a bug.\"\n      );\n    }\n\n    if (this.breakBefore.children.length >= 1) {\n      const breakBefore = this.breakBefore.children[0];\n      if (handleBreak(breakBefore)) {\n        return HTMLResult.breakNode(breakBefore);\n      }\n    }\n\n    if (this[$extra] && this[$extra].afterBreakAfter) {\n      return HTMLResult.EMPTY;\n    }\n\n    // TODO: incomplete.\n    fixDimensions(this);\n    const children = [];\n    const attributes = {\n      id: this[$uid],\n      class: [],\n    };\n\n    setAccess(this, attributes.class);\n\n    if (!this[$extra]) {\n      this[$extra] = Object.create(null);\n    }\n\n    Object.assign(this[$extra], {\n      children,\n      line: null,\n      attributes,\n      attempt: 0,\n      numberInLine: 0,\n      availableSpace: {\n        width: Math.min(this.w || Infinity, availableSpace.width),\n        height: Math.min(this.h || Infinity, availableSpace.height),\n      },\n      width: 0,\n      height: 0,\n      prevHeight: 0,\n      currentWidth: 0,\n    });\n\n    const root = this[$getTemplateRoot]();\n    const savedNoLayoutFailure = root[$extra].noLayoutFailure;\n\n    const isSplittable = this[$isSplittable]();\n    if (!isSplittable) {\n      setFirstUnsplittable(this);\n    }\n\n    if (!checkDimensions(this, availableSpace)) {\n      return HTMLResult.FAILURE;\n    }\n\n    const filter = new Set([\n      \"area\",\n      \"draw\",\n      \"exclGroup\",\n      \"field\",\n      \"subform\",\n      \"subformSet\",\n    ]);\n\n    if (this.layout.includes(\"row\")) {\n      const columnWidths = this[$getSubformParent]().columnWidths;\n      if (Array.isArray(columnWidths) && columnWidths.length > 0) {\n        this[$extra].columnWidths = columnWidths;\n        this[$extra].currentColumn = 0;\n      }\n    }\n\n    const style = toStyle(\n      this,\n      \"anchorType\",\n      \"dimensions\",\n      \"position\",\n      \"presence\",\n      \"border\",\n      \"margin\",\n      \"hAlign\"\n    );\n    const classNames = [\"xfaSubform\"];\n    const cl = layoutClass(this);\n    if (cl) {\n      classNames.push(cl);\n    }\n\n    attributes.style = style;\n    attributes.class = classNames;\n\n    if (this.name) {\n      attributes.xfaName = this.name;\n    }\n\n    if (this.overflow) {\n      const overflowExtra = this.overflow[$getExtra]();\n      if (overflowExtra.addLeader) {\n        overflowExtra.addLeader = false;\n        handleOverflow(this, overflowExtra.leader, availableSpace);\n      }\n    }\n\n    this[$pushPara]();\n    const isLrTb = this.layout === \"lr-tb\" || this.layout === \"rl-tb\";\n    const maxRun = isLrTb ? MAX_ATTEMPTS_FOR_LRTB_LAYOUT : 1;\n    for (; this[$extra].attempt < maxRun; this[$extra].attempt++) {\n      if (isLrTb && this[$extra].attempt === MAX_ATTEMPTS_FOR_LRTB_LAYOUT - 1) {\n        // If the layout is lr-tb then having attempt equals to\n        // MAX_ATTEMPTS_FOR_LRTB_LAYOUT-1 means that we're trying to layout\n        // on the next line so this on is empty.\n        this[$extra].numberInLine = 0;\n      }\n      const result = this[$childrenToHTML]({\n        filter,\n        include: true,\n      });\n      if (result.success) {\n        break;\n      }\n      if (result.isBreak()) {\n        this[$popPara]();\n        return result;\n      }\n      if (\n        isLrTb &&\n        this[$extra].attempt === 0 &&\n        this[$extra].numberInLine === 0 &&\n        !root[$extra].noLayoutFailure\n      ) {\n        // We're failing to put the first element on the line so no\n        // need to test on the next line.\n        // The goal is not only to avoid some useless checks but to avoid\n        // bugs too: if a descendant managed to put a node and failed\n        // on the next one, going to the next step here will imply to\n        // visit the descendant again, clear [$extra].children and restart\n        // on the failing node, consequently the first node just disappears\n        // because it has never been flushed.\n        this[$extra].attempt = maxRun;\n        break;\n      }\n    }\n\n    this[$popPara]();\n    if (!isSplittable) {\n      unsetFirstUnsplittable(this);\n    }\n    root[$extra].noLayoutFailure = savedNoLayoutFailure;\n\n    if (this[$extra].attempt === maxRun) {\n      if (this.overflow) {\n        this[$getTemplateRoot]()[$extra].overflowNode = this.overflow;\n      }\n\n      if (!isSplittable) {\n        // Since a new try will happen in a new container with maybe\n        // new dimensions, we invalidate already layed out components.\n        delete this[$extra];\n      }\n      return HTMLResult.FAILURE;\n    }\n\n    if (this.overflow) {\n      const overflowExtra = this.overflow[$getExtra]();\n      if (overflowExtra.addTrailer) {\n        overflowExtra.addTrailer = false;\n        handleOverflow(this, overflowExtra.trailer, availableSpace);\n      }\n    }\n\n    let marginH = 0;\n    let marginV = 0;\n    if (this.margin) {\n      marginH = this.margin.leftInset + this.margin.rightInset;\n      marginV = this.margin.topInset + this.margin.bottomInset;\n    }\n\n    const width = Math.max(this[$extra].width + marginH, this.w || 0);\n    const height = Math.max(this[$extra].height + marginV, this.h || 0);\n    const bbox = [this.x, this.y, width, height];\n\n    if (this.w === \"\") {\n      style.width = measureToString(width);\n    }\n    if (this.h === \"\") {\n      style.height = measureToString(height);\n    }\n\n    if (\n      (style.width === \"0px\" || style.height === \"0px\") &&\n      children.length === 0\n    ) {\n      return HTMLResult.EMPTY;\n    }\n\n    const html = {\n      name: \"div\",\n      attributes,\n      children,\n    };\n\n    applyAssist(this, attributes);\n\n    const result = HTMLResult.success(createWrapper(this, html), bbox);\n\n    if (this.breakAfter.children.length >= 1) {\n      const breakAfter = this.breakAfter.children[0];\n      if (handleBreak(breakAfter)) {\n        this[$extra].afterBreakAfter = result;\n        return HTMLResult.breakNode(breakAfter);\n      }\n    }\n\n    delete this[$extra];\n\n    return result;\n  }\n}\n\nclass SubformSet extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"subformSet\", /* hasChildren = */ true);\n    this.id = attributes.id || \"\";\n    this.name = attributes.name || \"\";\n    this.relation = getStringOption(attributes.relation, [\n      \"ordered\",\n      \"choice\",\n      \"unordered\",\n    ]);\n    this.relevant = getRelevant(attributes.relevant);\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.bookend = null;\n    this.break = null;\n    this.desc = null;\n    this.extras = null;\n    this.occur = null;\n    this.overflow = null;\n    this.breakAfter = new XFAObjectArray();\n    this.breakBefore = new XFAObjectArray();\n    this.subform = new XFAObjectArray();\n    this.subformSet = new XFAObjectArray();\n\n    // TODO: need to handle break stuff and relation.\n  }\n\n  *[$getContainedChildren]() {\n    // This function is overriden in order to fake that subforms under\n    // this set are in fact under parent subform.\n    yield* getContainedChildren(this);\n  }\n\n  [$getSubformParent]() {\n    let parent = this[$getParent]();\n    while (!(parent instanceof Subform)) {\n      parent = parent[$getParent]();\n    }\n    return parent;\n  }\n\n  [$isBindable]() {\n    return true;\n  }\n}\n\nclass SubjectDN extends ContentObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"subjectDN\");\n    this.delimiter = attributes.delimiter || \",\";\n    this.id = attributes.id || \"\";\n    this.name = attributes.name || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n  }\n\n  [$finalize]() {\n    this[$content] = new Map(\n      this[$content].split(this.delimiter).map(kv => {\n        kv = kv.split(\"=\", 2);\n        kv[0] = kv[0].trim();\n        return kv;\n      })\n    );\n  }\n}\n\nclass SubjectDNs extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"subjectDNs\", /* hasChildren = */ true);\n    this.id = attributes.id || \"\";\n    this.type = getStringOption(attributes.type, [\"optional\", \"required\"]);\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.subjectDN = new XFAObjectArray();\n  }\n}\n\nclass Submit extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"submit\", /* hasChildren = */ true);\n    this.embedPDF = getInteger({\n      data: attributes.embedPDF,\n      defaultValue: 0,\n      validate: x => x === 1,\n    });\n    this.format = getStringOption(attributes.format, [\n      \"xdp\",\n      \"formdata\",\n      \"pdf\",\n      \"urlencoded\",\n      \"xfd\",\n      \"xml\",\n    ]);\n    this.id = attributes.id || \"\";\n    this.target = attributes.target || \"\";\n    this.textEncoding = getKeyword({\n      data: attributes.textEncoding\n        ? attributes.textEncoding.toLowerCase()\n        : \"\",\n      defaultValue: \"\",\n      validate: k =>\n        [\n          \"utf-8\",\n          \"big-five\",\n          \"fontspecific\",\n          \"gbk\",\n          \"gb-18030\",\n          \"gb-2312\",\n          \"ksc-5601\",\n          \"none\",\n          \"shift-jis\",\n          \"ucs-2\",\n          \"utf-16\",\n        ].includes(k) || k.match(/iso-8859-\\d{2}/),\n    });\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.xdpContent = attributes.xdpContent || \"\";\n    this.encrypt = null;\n    this.encryptData = new XFAObjectArray();\n    this.signData = new XFAObjectArray();\n  }\n}\n\nclass Template extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"template\", /* hasChildren = */ true);\n    this.baseProfile = getStringOption(attributes.baseProfile, [\n      \"full\",\n      \"interactiveForms\",\n    ]);\n    this.extras = null;\n\n    // Spec is unclear:\n    //  A container element that describes a single subform capable of\n    //  enclosing other containers.\n    // Can we have more than one subform ?\n    this.subform = new XFAObjectArray();\n  }\n\n  [$finalize]() {\n    if (this.subform.children.length === 0) {\n      warn(\"XFA - No subforms in template node.\");\n    }\n    if (this.subform.children.length >= 2) {\n      warn(\"XFA - Several subforms in template node: please file a bug.\");\n    }\n    this[$tabIndex] = DEFAULT_TAB_INDEX;\n  }\n\n  [$isSplittable]() {\n    return true;\n  }\n\n  [$searchNode](expr, container) {\n    if (expr.startsWith(\"#\")) {\n      // This is an id.\n      return [this[$ids].get(expr.slice(1))];\n    }\n    return searchNode(this, container, expr, true, true);\n  }\n\n  /**\n   * This function is a generator because the conversion into\n   * pages is done asynchronously and we want to save the state\n   * of the function where we were in the previous iteration.\n   */\n  *[$toPages]() {\n    if (!this.subform.children.length) {\n      return HTMLResult.success({\n        name: \"div\",\n        children: [],\n      });\n    }\n    this[$extra] = {\n      overflowNode: null,\n      firstUnsplittable: null,\n      currentContentArea: null,\n      currentPageArea: null,\n      noLayoutFailure: false,\n      pageNumber: 1,\n      pagePosition: \"first\",\n      oddOrEven: \"odd\",\n      blankOrNotBlank: \"nonBlank\",\n      paraStack: [],\n    };\n\n    const root = this.subform.children[0];\n    root.pageSet[$cleanPage]();\n\n    const pageAreas = root.pageSet.pageArea.children;\n    const mainHtml = {\n      name: \"div\",\n      children: [],\n    };\n\n    let pageArea = null;\n    let breakBefore = null;\n    let breakBeforeTarget = null;\n    if (root.breakBefore.children.length >= 1) {\n      breakBefore = root.breakBefore.children[0];\n      breakBeforeTarget = breakBefore.target;\n    } else if (\n      root.subform.children.length >= 1 &&\n      root.subform.children[0].breakBefore.children.length >= 1\n    ) {\n      breakBefore = root.subform.children[0].breakBefore.children[0];\n      breakBeforeTarget = breakBefore.target;\n    } else if (root.break && root.break.beforeTarget) {\n      breakBefore = root.break;\n      breakBeforeTarget = breakBefore.beforeTarget;\n    } else if (\n      root.subform.children.length >= 1 &&\n      root.subform.children[0].break &&\n      root.subform.children[0].break.beforeTarget\n    ) {\n      breakBefore = root.subform.children[0].break;\n      breakBeforeTarget = breakBefore.beforeTarget;\n    }\n\n    if (breakBefore) {\n      const target = this[$searchNode](\n        breakBeforeTarget,\n        breakBefore[$getParent]()\n      );\n      if (target instanceof PageArea) {\n        pageArea = target;\n        // Consume breakBefore.\n        breakBefore[$extra] = {};\n      }\n    }\n\n    if (!pageArea) {\n      pageArea = pageAreas[0];\n    }\n\n    pageArea[$extra] = {\n      numberOfUse: 1,\n    };\n\n    const pageAreaParent = pageArea[$getParent]();\n    pageAreaParent[$extra] = {\n      numberOfUse: 1,\n      pageIndex: pageAreaParent.pageArea.children.indexOf(pageArea),\n      pageSetIndex: 0,\n    };\n\n    let targetPageArea;\n    let leader = null;\n    let trailer = null;\n    let hasSomething = true;\n    let hasSomethingCounter = 0;\n    let startIndex = 0;\n\n    while (true) {\n      if (!hasSomething) {\n        mainHtml.children.pop();\n        // Nothing has been added in the previous page\n        if (++hasSomethingCounter === MAX_EMPTY_PAGES) {\n          warn(\"XFA - Something goes wrong: please file a bug.\");\n          return mainHtml;\n        }\n      } else {\n        hasSomethingCounter = 0;\n      }\n\n      targetPageArea = null;\n      this[$extra].currentPageArea = pageArea;\n      const page = pageArea[$toHTML]().html;\n      mainHtml.children.push(page);\n\n      if (leader) {\n        this[$extra].noLayoutFailure = true;\n        page.children.push(leader[$toHTML](pageArea[$extra].space).html);\n        leader = null;\n      }\n\n      if (trailer) {\n        this[$extra].noLayoutFailure = true;\n        page.children.push(trailer[$toHTML](pageArea[$extra].space).html);\n        trailer = null;\n      }\n\n      const contentAreas = pageArea.contentArea.children;\n      const htmlContentAreas = page.children.filter(node =>\n        node.attributes.class.includes(\"xfaContentarea\")\n      );\n\n      hasSomething = false;\n      this[$extra].firstUnsplittable = null;\n      this[$extra].noLayoutFailure = false;\n\n      const flush = index => {\n        const html = root[$flushHTML]();\n        if (html) {\n          hasSomething =\n            hasSomething || (html.children && html.children.length !== 0);\n          htmlContentAreas[index].children.push(html);\n        }\n      };\n\n      for (let i = startIndex, ii = contentAreas.length; i < ii; i++) {\n        const contentArea = (this[$extra].currentContentArea = contentAreas[i]);\n        const space = { width: contentArea.w, height: contentArea.h };\n        startIndex = 0;\n\n        if (leader) {\n          htmlContentAreas[i].children.push(leader[$toHTML](space).html);\n          leader = null;\n        }\n\n        if (trailer) {\n          htmlContentAreas[i].children.push(trailer[$toHTML](space).html);\n          trailer = null;\n        }\n\n        const html = root[$toHTML](space);\n        if (html.success) {\n          if (html.html) {\n            hasSomething =\n              hasSomething ||\n              (html.html.children && html.html.children.length !== 0);\n            htmlContentAreas[i].children.push(html.html);\n          } else if (!hasSomething && mainHtml.children.length > 1) {\n            mainHtml.children.pop();\n          }\n          return mainHtml;\n        }\n\n        if (html.isBreak()) {\n          const node = html.breakNode;\n          flush(i);\n\n          if (node.targetType === \"auto\") {\n            continue;\n          }\n\n          if (node.leader) {\n            leader = this[$searchNode](node.leader, node[$getParent]());\n            leader = leader ? leader[0] : null;\n          }\n\n          if (node.trailer) {\n            trailer = this[$searchNode](node.trailer, node[$getParent]());\n            trailer = trailer ? trailer[0] : null;\n          }\n\n          if (node.targetType === \"pageArea\") {\n            targetPageArea = node[$extra].target;\n            i = Infinity;\n          } else if (!node[$extra].target) {\n            // We stay on the same page.\n            i = node[$extra].index;\n          } else {\n            targetPageArea = node[$extra].target;\n            startIndex = node[$extra].index + 1;\n            i = Infinity;\n          }\n\n          continue;\n        }\n\n        if (this[$extra].overflowNode) {\n          const node = this[$extra].overflowNode;\n          this[$extra].overflowNode = null;\n\n          const overflowExtra = node[$getExtra]();\n          const target = overflowExtra.target;\n          overflowExtra.addLeader = overflowExtra.leader !== null;\n          overflowExtra.addTrailer = overflowExtra.trailer !== null;\n\n          flush(i);\n\n          const currentIndex = i;\n\n          i = Infinity;\n          if (target instanceof PageArea) {\n            // We must stop the contentAreas filling and go to the next page.\n            targetPageArea = target;\n          } else if (target instanceof ContentArea) {\n            const index = contentAreas.findIndex(e => e === target);\n            if (index !== -1) {\n              if (index > currentIndex) {\n                // In the next loop iteration `i` will be incremented, note the\n                // `continue` just below, hence we need to subtract one here.\n                i = index - 1;\n              } else {\n                // The targetted contentArea has already been filled\n                // so create a new page.\n                startIndex = index;\n              }\n            } else {\n              targetPageArea = target[$getParent]();\n              startIndex = targetPageArea.contentArea.children.findIndex(\n                e => e === target\n              );\n            }\n          }\n          continue;\n        }\n\n        flush(i);\n      }\n\n      this[$extra].pageNumber += 1;\n      if (targetPageArea) {\n        if (targetPageArea[$isUsable]()) {\n          targetPageArea[$extra].numberOfUse += 1;\n        } else {\n          targetPageArea = null;\n        }\n      }\n      pageArea = targetPageArea || pageArea[$getNextPage]();\n      yield null;\n    }\n  }\n}\n\nclass Text extends ContentObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"text\");\n    this.id = attributes.id || \"\";\n    this.maxChars = getInteger({\n      data: attributes.maxChars,\n      defaultValue: 0,\n      validate: x => x >= 0,\n    });\n    this.name = attributes.name || \"\";\n    this.rid = attributes.rid || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n  }\n\n  [$acceptWhitespace]() {\n    return true;\n  }\n\n  [$onChild](child) {\n    if (child[$namespaceId] === NamespaceIds.xhtml.id) {\n      this[$content] = child;\n      return true;\n    }\n    warn(`XFA - Invalid content in Text: ${child[$nodeName]}.`);\n    return false;\n  }\n\n  [$onText](str) {\n    if (this[$content] instanceof XFAObject) {\n      return;\n    }\n    super[$onText](str);\n  }\n\n  [$finalize]() {\n    if (typeof this[$content] === \"string\") {\n      this[$content] = this[$content].replace(/\\r\\n/g, \"\\n\");\n    }\n  }\n\n  [$getExtra]() {\n    if (typeof this[$content] === \"string\") {\n      return this[$content]\n        .split(/[\\u2029\\u2028\\n]/)\n        .reduce((acc, line) => {\n          if (line) {\n            acc.push(line);\n          }\n          return acc;\n        }, [])\n        .join(\"\\n\");\n    }\n    return this[$content][$text]();\n  }\n\n  [$toHTML](availableSpace) {\n    if (typeof this[$content] === \"string\") {\n      // \\u2028 is a line separator.\n      // \\u2029 is a paragraph separator.\n      const html = valueToHtml(this[$content]).html;\n\n      if (this[$content].includes(\"\\u2029\")) {\n        // We've plain text containing a paragraph separator\n        // so convert it into a set of <p>.\n        html.name = \"div\";\n        html.children = [];\n        this[$content]\n          .split(\"\\u2029\")\n          .map(para =>\n            // Convert a paragraph into a set of <span> (for lines)\n            // separated by <br>.\n            para.split(/[\\u2028\\n]/).reduce((acc, line) => {\n              acc.push(\n                {\n                  name: \"span\",\n                  value: line,\n                },\n                {\n                  name: \"br\",\n                }\n              );\n              return acc;\n            }, [])\n          )\n          .forEach(lines => {\n            html.children.push({\n              name: \"p\",\n              children: lines,\n            });\n          });\n      } else if (/[\\u2028\\n]/.test(this[$content])) {\n        html.name = \"div\";\n        html.children = [];\n        // Convert plain text into a set of <span> (for lines)\n        // separated by <br>.\n        this[$content].split(/[\\u2028\\n]/).forEach(line => {\n          html.children.push(\n            {\n              name: \"span\",\n              value: line,\n            },\n            {\n              name: \"br\",\n            }\n          );\n        });\n      }\n\n      return HTMLResult.success(html);\n    }\n\n    return this[$content][$toHTML](availableSpace);\n  }\n}\n\nclass TextEdit extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"textEdit\", /* hasChildren = */ true);\n    this.allowRichText = getInteger({\n      data: attributes.allowRichText,\n      defaultValue: 0,\n      validate: x => x === 1,\n    });\n    this.hScrollPolicy = getStringOption(attributes.hScrollPolicy, [\n      \"auto\",\n      \"off\",\n      \"on\",\n    ]);\n    this.id = attributes.id || \"\";\n    this.multiLine = getInteger({\n      data: attributes.multiLine,\n      defaultValue: \"\",\n      validate: x => x === 0 || x === 1,\n    });\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.vScrollPolicy = getStringOption(attributes.vScrollPolicy, [\n      \"auto\",\n      \"off\",\n      \"on\",\n    ]);\n    this.border = null;\n    this.comb = null;\n    this.extras = null;\n    this.margin = null;\n  }\n\n  [$toHTML](availableSpace) {\n    // TODO: incomplete.\n    const style = toStyle(this, \"border\", \"font\", \"margin\");\n    let html;\n    const field = this[$getParent]()[$getParent]();\n    if (this.multiLine === \"\") {\n      this.multiLine = field instanceof Draw ? 1 : 0;\n    }\n    if (this.multiLine === 1) {\n      html = {\n        name: \"textarea\",\n        attributes: {\n          dataId: (field[$data] && field[$data][$uid]) || field[$uid],\n          fieldId: field[$uid],\n          class: [\"xfaTextfield\"],\n          style,\n          \"aria-label\": ariaLabel(field),\n        },\n      };\n    } else {\n      html = {\n        name: \"input\",\n        attributes: {\n          type: \"text\",\n          dataId: (field[$data] && field[$data][$uid]) || field[$uid],\n          fieldId: field[$uid],\n          class: [\"xfaTextfield\"],\n          style,\n          \"aria-label\": ariaLabel(field),\n        },\n      };\n    }\n\n    return HTMLResult.success({\n      name: \"label\",\n      attributes: {\n        class: [\"xfaLabel\"],\n      },\n      children: [html],\n    });\n  }\n}\n\nclass Time extends StringObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"time\");\n    this.id = attributes.id || \"\";\n    this.name = attributes.name || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n  }\n\n  [$finalize]() {\n    // TODO: need to handle the string as a time and not as a date.\n    const date = this[$content].trim();\n    this[$content] = date ? new Date(date) : null;\n  }\n\n  [$toHTML](availableSpace) {\n    return valueToHtml(this[$content] ? this[$content].toString() : \"\");\n  }\n}\n\nclass TimeStamp extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"timeStamp\");\n    this.id = attributes.id || \"\";\n    this.server = attributes.server || \"\";\n    this.type = getStringOption(attributes.type, [\"optional\", \"required\"]);\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n  }\n}\n\nclass ToolTip extends StringObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"toolTip\");\n    this.id = attributes.id || \"\";\n    this.rid = attributes.rid || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n  }\n}\n\nclass Traversal extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"traversal\", /* hasChildren = */ true);\n    this.id = attributes.id || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.extras = null;\n    this.traverse = new XFAObjectArray();\n  }\n}\n\nclass Traverse extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"traverse\", /* hasChildren = */ true);\n    this.id = attributes.id || \"\";\n    this.operation = getStringOption(attributes.operation, [\n      \"next\",\n      \"back\",\n      \"down\",\n      \"first\",\n      \"left\",\n      \"right\",\n      \"up\",\n    ]);\n    this.ref = attributes.ref || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.extras = null;\n    this.script = null;\n  }\n\n  get name() {\n    // SOM expression: see page 94\n    return this.operation;\n  }\n\n  [$isTransparent]() {\n    return false;\n  }\n}\n\nclass Ui extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"ui\", /* hasChildren = */ true);\n    this.id = attributes.id || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.extras = null;\n    this.picture = null;\n\n    // One-of properties\n    this.barcode = null;\n    this.button = null;\n    this.checkButton = null;\n    this.choiceList = null;\n    this.dateTimeEdit = null;\n    this.defaultUi = null;\n    this.imageEdit = null;\n    this.numericEdit = null;\n    this.passwordEdit = null;\n    this.signature = null;\n    this.textEdit = null;\n  }\n\n  [$getExtra]() {\n    if (this[$extra] === undefined) {\n      for (const name of Object.getOwnPropertyNames(this)) {\n        if (name === \"extras\" || name === \"picture\") {\n          continue;\n        }\n        const obj = this[name];\n        if (!(obj instanceof XFAObject)) {\n          continue;\n        }\n\n        this[$extra] = obj;\n        return obj;\n      }\n      this[$extra] = null;\n    }\n    return this[$extra];\n  }\n\n  [$toHTML](availableSpace) {\n    // TODO: picture.\n    const obj = this[$getExtra]();\n    if (obj) {\n      return obj[$toHTML](availableSpace);\n    }\n    return HTMLResult.EMPTY;\n  }\n}\n\nclass Validate extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"validate\", /* hasChildren = */ true);\n    this.formatTest = getStringOption(attributes.formatTest, [\n      \"warning\",\n      \"disabled\",\n      \"error\",\n    ]);\n    this.id = attributes.id || \"\";\n    this.nullTest = getStringOption(attributes.nullTest, [\n      \"disabled\",\n      \"error\",\n      \"warning\",\n    ]);\n    this.scriptTest = getStringOption(attributes.scriptTest, [\n      \"error\",\n      \"disabled\",\n      \"warning\",\n    ]);\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.extras = null;\n    this.message = null;\n    this.picture = null;\n    this.script = null;\n  }\n}\n\nclass Value extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"value\", /* hasChildren = */ true);\n    this.id = attributes.id || \"\";\n    this.override = getInteger({\n      data: attributes.override,\n      defaultValue: 0,\n      validate: x => x === 1,\n    });\n    this.relevant = getRelevant(attributes.relevant);\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n\n    // One-of properties\n    this.arc = null;\n    this.boolean = null;\n    this.date = null;\n    this.dateTime = null;\n    this.decimal = null;\n    this.exData = null;\n    this.float = null;\n    this.image = null;\n    this.integer = null;\n    this.line = null;\n    this.rectangle = null;\n    this.text = null;\n    this.time = null;\n  }\n\n  [$setValue](value) {\n    const parent = this[$getParent]();\n    if (parent instanceof Field) {\n      if (parent.ui && parent.ui.imageEdit) {\n        if (!this.image) {\n          this.image = new Image({});\n          this[$appendChild](this.image);\n        }\n        this.image[$content] = value[$content];\n        return;\n      }\n    }\n\n    const valueName = value[$nodeName];\n    if (this[valueName] !== null) {\n      this[valueName][$content] = value[$content];\n      return;\n    }\n\n    // Reset all the properties.\n    for (const name of Object.getOwnPropertyNames(this)) {\n      const obj = this[name];\n      if (obj instanceof XFAObject) {\n        this[name] = null;\n        this[$removeChild](obj);\n      }\n    }\n\n    this[value[$nodeName]] = value;\n    this[$appendChild](value);\n  }\n\n  [$text]() {\n    if (this.exData) {\n      if (typeof this.exData[$content] === \"string\") {\n        return this.exData[$content].trim();\n      }\n      return this.exData[$content][$text]().trim();\n    }\n    for (const name of Object.getOwnPropertyNames(this)) {\n      if (name === \"image\") {\n        continue;\n      }\n      const obj = this[name];\n      if (obj instanceof XFAObject) {\n        return (obj[$content] || \"\").toString().trim();\n      }\n    }\n    return null;\n  }\n\n  [$toHTML](availableSpace) {\n    for (const name of Object.getOwnPropertyNames(this)) {\n      const obj = this[name];\n      if (!(obj instanceof XFAObject)) {\n        continue;\n      }\n\n      return obj[$toHTML](availableSpace);\n    }\n\n    return HTMLResult.EMPTY;\n  }\n}\n\nclass Variables extends XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"variables\", /* hasChildren = */ true);\n    this.id = attributes.id || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.boolean = new XFAObjectArray();\n    this.date = new XFAObjectArray();\n    this.dateTime = new XFAObjectArray();\n    this.decimal = new XFAObjectArray();\n    this.exData = new XFAObjectArray();\n    this.float = new XFAObjectArray();\n    this.image = new XFAObjectArray();\n    this.integer = new XFAObjectArray();\n    this.manifest = new XFAObjectArray();\n    this.script = new XFAObjectArray();\n    this.text = new XFAObjectArray();\n    this.time = new XFAObjectArray();\n  }\n\n  [$isTransparent]() {\n    return true;\n  }\n}\n\nclass TemplateNamespace {\n  static [$buildXFAObject](name, attributes) {\n    if (TemplateNamespace.hasOwnProperty(name)) {\n      const node = TemplateNamespace[name](attributes);\n      node[$setSetAttributes](attributes);\n      return node;\n    }\n    return undefined;\n  }\n\n  static appearanceFilter(attrs) {\n    return new AppearanceFilter(attrs);\n  }\n\n  static arc(attrs) {\n    return new Arc(attrs);\n  }\n\n  static area(attrs) {\n    return new Area(attrs);\n  }\n\n  static assist(attrs) {\n    return new Assist(attrs);\n  }\n\n  static barcode(attrs) {\n    return new Barcode(attrs);\n  }\n\n  static bind(attrs) {\n    return new Bind(attrs);\n  }\n\n  static bindItems(attrs) {\n    return new BindItems(attrs);\n  }\n\n  static bookend(attrs) {\n    return new Bookend(attrs);\n  }\n\n  static boolean(attrs) {\n    return new BooleanElement(attrs);\n  }\n\n  static border(attrs) {\n    return new Border(attrs);\n  }\n\n  static break(attrs) {\n    return new Break(attrs);\n  }\n\n  static breakAfter(attrs) {\n    return new BreakAfter(attrs);\n  }\n\n  static breakBefore(attrs) {\n    return new BreakBefore(attrs);\n  }\n\n  static button(attrs) {\n    return new Button(attrs);\n  }\n\n  static calculate(attrs) {\n    return new Calculate(attrs);\n  }\n\n  static caption(attrs) {\n    return new Caption(attrs);\n  }\n\n  static certificate(attrs) {\n    return new Certificate(attrs);\n  }\n\n  static certificates(attrs) {\n    return new Certificates(attrs);\n  }\n\n  static checkButton(attrs) {\n    return new CheckButton(attrs);\n  }\n\n  static choiceList(attrs) {\n    return new ChoiceList(attrs);\n  }\n\n  static color(attrs) {\n    return new Color(attrs);\n  }\n\n  static comb(attrs) {\n    return new Comb(attrs);\n  }\n\n  static connect(attrs) {\n    return new Connect(attrs);\n  }\n\n  static contentArea(attrs) {\n    return new ContentArea(attrs);\n  }\n\n  static corner(attrs) {\n    return new Corner(attrs);\n  }\n\n  static date(attrs) {\n    return new DateElement(attrs);\n  }\n\n  static dateTime(attrs) {\n    return new DateTime(attrs);\n  }\n\n  static dateTimeEdit(attrs) {\n    return new DateTimeEdit(attrs);\n  }\n\n  static decimal(attrs) {\n    return new Decimal(attrs);\n  }\n\n  static defaultUi(attrs) {\n    return new DefaultUi(attrs);\n  }\n\n  static desc(attrs) {\n    return new Desc(attrs);\n  }\n\n  static digestMethod(attrs) {\n    return new DigestMethod(attrs);\n  }\n\n  static digestMethods(attrs) {\n    return new DigestMethods(attrs);\n  }\n\n  static draw(attrs) {\n    return new Draw(attrs);\n  }\n\n  static edge(attrs) {\n    return new Edge(attrs);\n  }\n\n  static encoding(attrs) {\n    return new Encoding(attrs);\n  }\n\n  static encodings(attrs) {\n    return new Encodings(attrs);\n  }\n\n  static encrypt(attrs) {\n    return new Encrypt(attrs);\n  }\n\n  static encryptData(attrs) {\n    return new EncryptData(attrs);\n  }\n\n  static encryption(attrs) {\n    return new Encryption(attrs);\n  }\n\n  static encryptionMethod(attrs) {\n    return new EncryptionMethod(attrs);\n  }\n\n  static encryptionMethods(attrs) {\n    return new EncryptionMethods(attrs);\n  }\n\n  static event(attrs) {\n    return new Event(attrs);\n  }\n\n  static exData(attrs) {\n    return new ExData(attrs);\n  }\n\n  static exObject(attrs) {\n    return new ExObject(attrs);\n  }\n\n  static exclGroup(attrs) {\n    return new ExclGroup(attrs);\n  }\n\n  static execute(attrs) {\n    return new Execute(attrs);\n  }\n\n  static extras(attrs) {\n    return new Extras(attrs);\n  }\n\n  static field(attrs) {\n    return new Field(attrs);\n  }\n\n  static fill(attrs) {\n    return new Fill(attrs);\n  }\n\n  static filter(attrs) {\n    return new Filter(attrs);\n  }\n\n  static float(attrs) {\n    return new Float(attrs);\n  }\n\n  static font(attrs) {\n    return new Font(attrs);\n  }\n\n  static format(attrs) {\n    return new Format(attrs);\n  }\n\n  static handler(attrs) {\n    return new Handler(attrs);\n  }\n\n  static hyphenation(attrs) {\n    return new Hyphenation(attrs);\n  }\n\n  static image(attrs) {\n    return new Image(attrs);\n  }\n\n  static imageEdit(attrs) {\n    return new ImageEdit(attrs);\n  }\n\n  static integer(attrs) {\n    return new Integer(attrs);\n  }\n\n  static issuers(attrs) {\n    return new Issuers(attrs);\n  }\n\n  static items(attrs) {\n    return new Items(attrs);\n  }\n\n  static keep(attrs) {\n    return new Keep(attrs);\n  }\n\n  static keyUsage(attrs) {\n    return new KeyUsage(attrs);\n  }\n\n  static line(attrs) {\n    return new Line(attrs);\n  }\n\n  static linear(attrs) {\n    return new Linear(attrs);\n  }\n\n  static lockDocument(attrs) {\n    return new LockDocument(attrs);\n  }\n\n  static manifest(attrs) {\n    return new Manifest(attrs);\n  }\n\n  static margin(attrs) {\n    return new Margin(attrs);\n  }\n\n  static mdp(attrs) {\n    return new Mdp(attrs);\n  }\n\n  static medium(attrs) {\n    return new Medium(attrs);\n  }\n\n  static message(attrs) {\n    return new Message(attrs);\n  }\n\n  static numericEdit(attrs) {\n    return new NumericEdit(attrs);\n  }\n\n  static occur(attrs) {\n    return new Occur(attrs);\n  }\n\n  static oid(attrs) {\n    return new Oid(attrs);\n  }\n\n  static oids(attrs) {\n    return new Oids(attrs);\n  }\n\n  static overflow(attrs) {\n    return new Overflow(attrs);\n  }\n\n  static pageArea(attrs) {\n    return new PageArea(attrs);\n  }\n\n  static pageSet(attrs) {\n    return new PageSet(attrs);\n  }\n\n  static para(attrs) {\n    return new Para(attrs);\n  }\n\n  static passwordEdit(attrs) {\n    return new PasswordEdit(attrs);\n  }\n\n  static pattern(attrs) {\n    return new Pattern(attrs);\n  }\n\n  static picture(attrs) {\n    return new Picture(attrs);\n  }\n\n  static proto(attrs) {\n    return new Proto(attrs);\n  }\n\n  static radial(attrs) {\n    return new Radial(attrs);\n  }\n\n  static reason(attrs) {\n    return new Reason(attrs);\n  }\n\n  static reasons(attrs) {\n    return new Reasons(attrs);\n  }\n\n  static rectangle(attrs) {\n    return new Rectangle(attrs);\n  }\n\n  static ref(attrs) {\n    return new RefElement(attrs);\n  }\n\n  static script(attrs) {\n    return new Script(attrs);\n  }\n\n  static setProperty(attrs) {\n    return new SetProperty(attrs);\n  }\n\n  static signData(attrs) {\n    return new SignData(attrs);\n  }\n\n  static signature(attrs) {\n    return new Signature(attrs);\n  }\n\n  static signing(attrs) {\n    return new Signing(attrs);\n  }\n\n  static solid(attrs) {\n    return new Solid(attrs);\n  }\n\n  static speak(attrs) {\n    return new Speak(attrs);\n  }\n\n  static stipple(attrs) {\n    return new Stipple(attrs);\n  }\n\n  static subform(attrs) {\n    return new Subform(attrs);\n  }\n\n  static subformSet(attrs) {\n    return new SubformSet(attrs);\n  }\n\n  static subjectDN(attrs) {\n    return new SubjectDN(attrs);\n  }\n\n  static subjectDNs(attrs) {\n    return new SubjectDNs(attrs);\n  }\n\n  static submit(attrs) {\n    return new Submit(attrs);\n  }\n\n  static template(attrs) {\n    return new Template(attrs);\n  }\n\n  static text(attrs) {\n    return new Text(attrs);\n  }\n\n  static textEdit(attrs) {\n    return new TextEdit(attrs);\n  }\n\n  static time(attrs) {\n    return new Time(attrs);\n  }\n\n  static timeStamp(attrs) {\n    return new TimeStamp(attrs);\n  }\n\n  static toolTip(attrs) {\n    return new ToolTip(attrs);\n  }\n\n  static traversal(attrs) {\n    return new Traversal(attrs);\n  }\n\n  static traverse(attrs) {\n    return new Traverse(attrs);\n  }\n\n  static ui(attrs) {\n    return new Ui(attrs);\n  }\n\n  static validate(attrs) {\n    return new Validate(attrs);\n  }\n\n  static value(attrs) {\n    return new Value(attrs);\n  }\n\n  static variables(attrs) {\n    return new Variables(attrs);\n  }\n}\n\nexport {\n  BindItems,\n  Field,\n  Items,\n  SetProperty,\n  Template,\n  TemplateNamespace,\n  Text,\n  Value,\n};\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n  $extra,\n  $flushHTML,\n  $getSubformParent,\n  $getTemplateRoot,\n  $isSplittable,\n  $isThereMoreWidth,\n} from \"./xfa_object.js\";\nimport { measureToString } from \"./html_utils.js\";\n\n// Subform and ExclGroup have a layout so they share these functions.\n\n/**\n * How layout works ?\n *\n * A container has an initial space (with a width and a height) to fit in,\n * which means that once all the children have been added then\n * the total width/height must be lower than the given ones in\n * the initial space.\n * So if the container has known dimensions and these ones are ok with the\n * space then continue else we return HTMLResult.FAILURE: it's up to the\n * parent to deal with this failure (e.g. if parent layout is lr-tb and\n * we fail to add a child at end of line (lr) then we try to add it on the\n * next line).\n * And then we run through the children, each child gets its initial space\n * in calling its parent $getAvailableSpace method\n * (see _filteredChildrenGenerator and $childrenToHTML in xfa_object.js)\n * then we try to layout child in its space. If everything is ok then we add\n * the result to its parent through $addHTML which will recompute the available\n * space in parent according to its layout property else we return\n * HTMLResult.Failure.\n * Before a failure some children may have been layed out: they've been saved in\n * [$extra].children and [$extra] has properties generator and failingNode\n * in order to save the state where we were before a failure.\n * This [$extra].children property is useful when a container has to be splited.\n * So if a container is unbreakable, we must delete its [$extra] property before\n * returning.\n */\n\nfunction createLine(node, children) {\n  return {\n    name: \"div\",\n    attributes: {\n      class: [node.layout === \"lr-tb\" ? \"xfaLr\" : \"xfaRl\"],\n    },\n    children,\n  };\n}\n\nfunction flushHTML(node) {\n  if (!node[$extra]) {\n    return null;\n  }\n\n  const attributes = node[$extra].attributes;\n  const html = {\n    name: \"div\",\n    attributes,\n    children: node[$extra].children,\n  };\n\n  if (node[$extra].failingNode) {\n    const htmlFromFailing = node[$extra].failingNode[$flushHTML]();\n    if (htmlFromFailing) {\n      if (node.layout.endsWith(\"-tb\")) {\n        html.children.push(createLine(node, [htmlFromFailing]));\n      } else {\n        html.children.push(htmlFromFailing);\n      }\n    }\n  }\n\n  if (html.children.length === 0) {\n    return null;\n  }\n\n  return html;\n}\n\nfunction addHTML(node, html, bbox) {\n  const extra = node[$extra];\n  const availableSpace = extra.availableSpace;\n\n  const [x, y, w, h] = bbox;\n  switch (node.layout) {\n    case \"position\": {\n      extra.width = Math.max(extra.width, x + w);\n      extra.height = Math.max(extra.height, y + h);\n      extra.children.push(html);\n      break;\n    }\n    case \"lr-tb\":\n    case \"rl-tb\":\n      if (!extra.line || extra.attempt === 1) {\n        extra.line = createLine(node, []);\n        extra.children.push(extra.line);\n        extra.numberInLine = 0;\n      }\n\n      extra.numberInLine += 1;\n      extra.line.children.push(html);\n\n      if (extra.attempt === 0) {\n        // Add the element on the line\n        extra.currentWidth += w;\n        extra.height = Math.max(extra.height, extra.prevHeight + h);\n      } else {\n        extra.currentWidth = w;\n        extra.prevHeight = extra.height;\n        extra.height += h;\n\n        // The element has been added on a new line so switch to line mode now.\n        extra.attempt = 0;\n      }\n      extra.width = Math.max(extra.width, extra.currentWidth);\n      break;\n    case \"rl-row\":\n    case \"row\": {\n      extra.children.push(html);\n      extra.width += w;\n      extra.height = Math.max(extra.height, h);\n      const height = measureToString(extra.height);\n      for (const child of extra.children) {\n        child.attributes.style.height = height;\n      }\n      break;\n    }\n    case \"table\": {\n      extra.width = Math.min(availableSpace.width, Math.max(extra.width, w));\n      extra.height += h;\n      extra.children.push(html);\n      break;\n    }\n    case \"tb\": {\n      // Even if the subform can possibly take all the available width,\n      // we must compute the final width as it is in order to be able\n      // for example to center the subform within its parent.\n      extra.width = Math.min(availableSpace.width, Math.max(extra.width, w));\n      extra.height += h;\n      extra.children.push(html);\n      break;\n    }\n  }\n}\n\nfunction getAvailableSpace(node) {\n  const availableSpace = node[$extra].availableSpace;\n  const marginV = node.margin\n    ? node.margin.topInset + node.margin.bottomInset\n    : 0;\n  const marginH = node.margin\n    ? node.margin.leftInset + node.margin.rightInset\n    : 0;\n\n  switch (node.layout) {\n    case \"lr-tb\":\n    case \"rl-tb\":\n      if (node[$extra].attempt === 0) {\n        return {\n          width: availableSpace.width - marginH - node[$extra].currentWidth,\n          height: availableSpace.height - marginV - node[$extra].prevHeight,\n        };\n      }\n      return {\n        width: availableSpace.width - marginH,\n        height: availableSpace.height - marginV - node[$extra].height,\n      };\n    case \"rl-row\":\n    case \"row\":\n      const width = node[$extra].columnWidths\n        .slice(node[$extra].currentColumn)\n        .reduce((a, x) => a + x);\n      return { width, height: availableSpace.height - marginH };\n    case \"table\":\n    case \"tb\":\n      return {\n        width: availableSpace.width - marginH,\n        height: availableSpace.height - marginV - node[$extra].height,\n      };\n    case \"position\":\n    default:\n      return availableSpace;\n  }\n}\n\nfunction getTransformedBBox(node) {\n  // Take into account rotation and anchor to get the real bounding box.\n  let w = node.w === \"\" ? NaN : node.w;\n  let h = node.h === \"\" ? NaN : node.h;\n  let [centerX, centerY] = [0, 0];\n  switch (node.anchorType || \"\") {\n    case \"bottomCenter\":\n      [centerX, centerY] = [w / 2, h];\n      break;\n    case \"bottomLeft\":\n      [centerX, centerY] = [0, h];\n      break;\n    case \"bottomRight\":\n      [centerX, centerY] = [w, h];\n      break;\n    case \"middleCenter\":\n      [centerX, centerY] = [w / 2, h / 2];\n      break;\n    case \"middleLeft\":\n      [centerX, centerY] = [0, h / 2];\n      break;\n    case \"middleRight\":\n      [centerX, centerY] = [w, h / 2];\n      break;\n    case \"topCenter\":\n      [centerX, centerY] = [w / 2, 0];\n      break;\n    case \"topRight\":\n      [centerX, centerY] = [w, 0];\n      break;\n  }\n\n  let x, y;\n  switch (node.rotate || 0) {\n    case 0:\n      [x, y] = [-centerX, -centerY];\n      break;\n    case 90:\n      [x, y] = [-centerY, centerX];\n      [w, h] = [h, -w];\n      break;\n    case 180:\n      [x, y] = [centerX, centerY];\n      [w, h] = [-w, -h];\n      break;\n    case 270:\n      [x, y] = [centerY, -centerX];\n      [w, h] = [-h, w];\n      break;\n  }\n\n  return [\n    node.x + x + Math.min(0, w),\n    node.y + y + Math.min(0, h),\n    Math.abs(w),\n    Math.abs(h),\n  ];\n}\n\n/**\n * Returning true means that the node will be layed out\n * else the layout will go to its next step (changing of line\n * in case of lr-tb or changing content area...).\n */\nfunction checkDimensions(node, space) {\n  if (node[$getTemplateRoot]()[$extra].firstUnsplittable === null) {\n    return true;\n  }\n\n  if (node.w === 0 || node.h === 0) {\n    return true;\n  }\n\n  const ERROR = 2;\n  const parent = node[$getSubformParent]();\n  const attempt = (parent[$extra] && parent[$extra].attempt) || 0;\n\n  const [, y, w, h] = getTransformedBBox(node);\n  switch (parent.layout) {\n    case \"lr-tb\":\n    case \"rl-tb\":\n      if (attempt === 0) {\n        // Try to put an element in the line.\n\n        if (!node[$getTemplateRoot]()[$extra].noLayoutFailure) {\n          if (node.h !== \"\" && Math.round(h - space.height) > ERROR) {\n            // Not enough height.\n            return false;\n          }\n\n          if (node.w !== \"\") {\n            if (Math.round(w - space.width) <= ERROR) {\n              return true;\n            }\n            if (parent[$extra].numberInLine === 0) {\n              return space.height > ERROR;\n            }\n\n            return false;\n          }\n\n          return space.width > ERROR;\n        }\n\n        // No layout failure.\n\n        // Put the element on the line but we can fail\n        // and then in the second step (next line) we'll accept.\n        if (node.w !== \"\") {\n          return Math.round(w - space.width) <= ERROR;\n        }\n\n        return space.width > ERROR;\n      }\n\n      // Second attempt: try to put the element on the next line.\n\n      if (node[$getTemplateRoot]()[$extra].noLayoutFailure) {\n        // We cannot fail.\n        return true;\n      }\n\n      if (node.h !== \"\" && Math.round(h - space.height) > ERROR) {\n        return false;\n      }\n\n      if (node.w === \"\" || Math.round(w - space.width) <= ERROR) {\n        return space.height > ERROR;\n      }\n\n      if (parent[$isThereMoreWidth]()) {\n        return false;\n      }\n\n      return space.height > ERROR;\n    case \"table\":\n    case \"tb\":\n      if (node[$getTemplateRoot]()[$extra].noLayoutFailure) {\n        return true;\n      }\n\n      // If the node has a height then check if it's fine with available height.\n      // If the node is breakable then we can return true.\n      if (node.h !== \"\" && !node[$isSplittable]()) {\n        return Math.round(h - space.height) <= ERROR;\n      }\n      // Else wait and see: this node will be layed out itself\n      // in the provided space and maybe a children won't fit.\n\n      if (node.w === \"\" || Math.round(w - space.width) <= ERROR) {\n        return space.height > ERROR;\n      }\n\n      if (parent[$isThereMoreWidth]()) {\n        return false;\n      }\n\n      return space.height > ERROR;\n    case \"position\":\n      if (node[$getTemplateRoot]()[$extra].noLayoutFailure) {\n        return true;\n      }\n\n      if (node.h === \"\" || Math.round(h + y - space.height) <= ERROR) {\n        return true;\n      }\n\n      const area = node[$getTemplateRoot]()[$extra].currentContentArea;\n      return h + y > area.h;\n    case \"rl-row\":\n    case \"row\":\n      if (node[$getTemplateRoot]()[$extra].noLayoutFailure) {\n        return true;\n      }\n\n      if (node.h !== \"\") {\n        return Math.round(h - space.height) <= ERROR;\n      }\n      return true;\n    default:\n      // No layout, so accept everything.\n      return true;\n  }\n}\n\nexport { addHTML, checkDimensions, flushHTML, getAvailableSpace };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n  $content,\n  $extra,\n  $getParent,\n  $getSubformParent,\n  $getTemplateRoot,\n  $globalData,\n  $nodeName,\n  $pushGlyphs,\n  $text,\n  $toStyle,\n  XFAObject,\n} from \"./xfa_object.js\";\nimport { createValidAbsoluteUrl, warn } from \"../../shared/util.js\";\nimport { getMeasurement, stripQuotes } from \"./utils.js\";\nimport { selectFont } from \"./fonts.js\";\nimport { TextMeasure } from \"./text.js\";\n\nfunction measureToString(m) {\n  if (typeof m === \"string\") {\n    return \"0px\";\n  }\n\n  return Number.isInteger(m) ? `${m}px` : `${m.toFixed(2)}px`;\n}\n\nconst converters = {\n  anchorType(node, style) {\n    const parent = node[$getSubformParent]();\n    if (!parent || (parent.layout && parent.layout !== \"position\")) {\n      // anchorType is only used in a positioned layout.\n      return;\n    }\n\n    if (!(\"transform\" in style)) {\n      style.transform = \"\";\n    }\n    switch (node.anchorType) {\n      case \"bottomCenter\":\n        style.transform += \"translate(-50%, -100%)\";\n        break;\n      case \"bottomLeft\":\n        style.transform += \"translate(0,-100%)\";\n        break;\n      case \"bottomRight\":\n        style.transform += \"translate(-100%,-100%)\";\n        break;\n      case \"middleCenter\":\n        style.transform += \"translate(-50%,-50%)\";\n        break;\n      case \"middleLeft\":\n        style.transform += \"translate(0,-50%)\";\n        break;\n      case \"middleRight\":\n        style.transform += \"translate(-100%,-50%)\";\n        break;\n      case \"topCenter\":\n        style.transform += \"translate(-50%,0)\";\n        break;\n      case \"topRight\":\n        style.transform += \"translate(-100%,0)\";\n        break;\n    }\n  },\n  dimensions(node, style) {\n    const parent = node[$getSubformParent]();\n    let width = node.w;\n    const height = node.h;\n    if (parent.layout && parent.layout.includes(\"row\")) {\n      const extra = parent[$extra];\n      const colSpan = node.colSpan;\n      let w;\n      if (colSpan === -1) {\n        w = extra.columnWidths\n          .slice(extra.currentColumn)\n          .reduce((a, x) => a + x, 0);\n        extra.currentColumn = 0;\n      } else {\n        w = extra.columnWidths\n          .slice(extra.currentColumn, extra.currentColumn + colSpan)\n          .reduce((a, x) => a + x, 0);\n        extra.currentColumn =\n          (extra.currentColumn + node.colSpan) % extra.columnWidths.length;\n      }\n\n      if (!isNaN(w)) {\n        width = node.w = w;\n      }\n    }\n\n    if (width !== \"\") {\n      style.width = measureToString(width);\n    } else {\n      style.width = \"auto\";\n    }\n\n    if (height !== \"\") {\n      style.height = measureToString(height);\n    } else {\n      style.height = \"auto\";\n    }\n  },\n  position(node, style) {\n    const parent = node[$getSubformParent]();\n    if (parent && parent.layout && parent.layout !== \"position\") {\n      // IRL, we've some x/y in tb layout.\n      // Specs say x/y is only used in positioned layout.\n      return;\n    }\n\n    style.position = \"absolute\";\n    style.left = measureToString(node.x);\n    style.top = measureToString(node.y);\n  },\n  rotate(node, style) {\n    if (node.rotate) {\n      if (!(\"transform\" in style)) {\n        style.transform = \"\";\n      }\n      style.transform += `rotate(-${node.rotate}deg)`;\n      style.transformOrigin = \"top left\";\n    }\n  },\n  presence(node, style) {\n    switch (node.presence) {\n      case \"invisible\":\n        style.visibility = \"hidden\";\n        break;\n      case \"hidden\":\n      case \"inactive\":\n        style.display = \"none\";\n        break;\n    }\n  },\n  hAlign(node, style) {\n    if (node[$nodeName] === \"para\") {\n      switch (node.hAlign) {\n        case \"justifyAll\":\n          style.textAlign = \"justify-all\";\n          break;\n        case \"radix\":\n          // TODO: implement this correctly !\n          style.textAlign = \"left\";\n          break;\n        default:\n          style.textAlign = node.hAlign;\n      }\n    } else {\n      switch (node.hAlign) {\n        case \"left\":\n          style.alignSelf = \"start\";\n          break;\n        case \"center\":\n          style.alignSelf = \"center\";\n          break;\n        case \"right\":\n          style.alignSelf = \"end\";\n          break;\n      }\n    }\n  },\n  margin(node, style) {\n    if (node.margin) {\n      style.margin = node.margin[$toStyle]().margin;\n    }\n  },\n};\n\nfunction setMinMaxDimensions(node, style) {\n  const parent = node[$getSubformParent]();\n  if (parent.layout === \"position\") {\n    if (node.minW > 0) {\n      style.minWidth = measureToString(node.minW);\n    }\n    if (node.maxW > 0) {\n      style.maxWidth = measureToString(node.maxW);\n    }\n    if (node.minH > 0) {\n      style.minHeight = measureToString(node.minH);\n    }\n    if (node.maxH > 0) {\n      style.maxHeight = measureToString(node.maxH);\n    }\n  }\n}\n\nfunction layoutText(text, xfaFont, margin, lineHeight, fontFinder, width) {\n  const measure = new TextMeasure(xfaFont, margin, lineHeight, fontFinder);\n  if (typeof text === \"string\") {\n    measure.addString(text);\n  } else {\n    text[$pushGlyphs](measure);\n  }\n\n  return measure.compute(width);\n}\n\nfunction layoutNode(node, availableSpace) {\n  let height = null;\n  let width = null;\n  let isBroken = false;\n\n  if ((!node.w || !node.h) && node.value) {\n    let marginH = 0;\n    let marginV = 0;\n    if (node.margin) {\n      marginH = node.margin.leftInset + node.margin.rightInset;\n      marginV = node.margin.topInset + node.margin.bottomInset;\n    }\n\n    let lineHeight = null;\n    let margin = null;\n    if (node.para) {\n      margin = Object.create(null);\n      lineHeight = node.para.lineHeight === \"\" ? null : node.para.lineHeight;\n      margin.top = node.para.spaceAbove === \"\" ? 0 : node.para.spaceAbove;\n      margin.bottom = node.para.spaceBelow === \"\" ? 0 : node.para.spaceBelow;\n      margin.left = node.para.marginLeft === \"\" ? 0 : node.para.marginLeft;\n      margin.right = node.para.marginRight === \"\" ? 0 : node.para.marginRight;\n    }\n\n    let font = node.font;\n    if (!font) {\n      const root = node[$getTemplateRoot]();\n      let parent = node[$getParent]();\n      while (parent && parent !== root) {\n        if (parent.font) {\n          font = parent.font;\n          break;\n        }\n        parent = parent[$getParent]();\n      }\n    }\n\n    const maxWidth = (!node.w ? availableSpace.width : node.w) - marginH;\n    const fontFinder = node[$globalData].fontFinder;\n    if (\n      node.value.exData &&\n      node.value.exData[$content] &&\n      node.value.exData.contentType === \"text/html\"\n    ) {\n      const res = layoutText(\n        node.value.exData[$content],\n        font,\n        margin,\n        lineHeight,\n        fontFinder,\n        maxWidth\n      );\n      width = res.width;\n      height = res.height;\n      isBroken = res.isBroken;\n    } else {\n      const text = node.value[$text]();\n      if (text) {\n        const res = layoutText(\n          text,\n          font,\n          margin,\n          lineHeight,\n          fontFinder,\n          maxWidth\n        );\n        width = res.width;\n        height = res.height;\n        isBroken = res.isBroken;\n      }\n    }\n\n    if (width !== null && !node.w) {\n      width += marginH;\n    }\n\n    if (height !== null && !node.h) {\n      height += marginV;\n    }\n  }\n  return { w: width, h: height, isBroken };\n}\n\nfunction computeBbox(node, html, availableSpace) {\n  let bbox;\n  if (node.w !== \"\" && node.h !== \"\") {\n    bbox = [node.x, node.y, node.w, node.h];\n  } else {\n    if (!availableSpace) {\n      return null;\n    }\n    let width = node.w;\n    if (width === \"\") {\n      if (node.maxW === 0) {\n        const parent = node[$getSubformParent]();\n        if (parent.layout === \"position\" && parent.w !== \"\") {\n          width = 0;\n        } else {\n          width = node.minW;\n        }\n      } else {\n        width = Math.min(node.maxW, availableSpace.width);\n      }\n      html.attributes.style.width = measureToString(width);\n    }\n\n    let height = node.h;\n    if (height === \"\") {\n      if (node.maxH === 0) {\n        const parent = node[$getSubformParent]();\n        if (parent.layout === \"position\" && parent.h !== \"\") {\n          height = 0;\n        } else {\n          height = node.minH;\n        }\n      } else {\n        height = Math.min(node.maxH, availableSpace.height);\n      }\n      html.attributes.style.height = measureToString(height);\n    }\n\n    bbox = [node.x, node.y, width, height];\n  }\n  return bbox;\n}\n\nfunction fixDimensions(node) {\n  const parent = node[$getSubformParent]();\n  if (parent.layout && parent.layout.includes(\"row\")) {\n    const extra = parent[$extra];\n    const colSpan = node.colSpan;\n    let width;\n    if (colSpan === -1) {\n      width = extra.columnWidths\n        .slice(extra.currentColumn)\n        .reduce((a, w) => a + w, 0);\n    } else {\n      width = extra.columnWidths\n        .slice(extra.currentColumn, extra.currentColumn + colSpan)\n        .reduce((a, w) => a + w, 0);\n    }\n    if (!isNaN(width)) {\n      node.w = width;\n    }\n  }\n\n  if (parent.layout && parent.layout !== \"position\") {\n    // Useless in this context.\n    node.x = node.y = 0;\n  }\n\n  if (node.layout === \"table\") {\n    if (node.w === \"\" && Array.isArray(node.columnWidths)) {\n      node.w = node.columnWidths.reduce((a, x) => a + x, 0);\n    }\n  }\n}\n\nfunction layoutClass(node) {\n  switch (node.layout) {\n    case \"position\":\n      return \"xfaPosition\";\n    case \"lr-tb\":\n      return \"xfaLrTb\";\n    case \"rl-row\":\n      return \"xfaRlRow\";\n    case \"rl-tb\":\n      return \"xfaRlTb\";\n    case \"row\":\n      return \"xfaRow\";\n    case \"table\":\n      return \"xfaTable\";\n    case \"tb\":\n      return \"xfaTb\";\n    default:\n      return \"xfaPosition\";\n  }\n}\n\nfunction toStyle(node, ...names) {\n  const style = Object.create(null);\n  for (const name of names) {\n    const value = node[name];\n    if (value === null) {\n      continue;\n    }\n    if (converters.hasOwnProperty(name)) {\n      converters[name](node, style);\n      continue;\n    }\n\n    if (value instanceof XFAObject) {\n      const newStyle = value[$toStyle]();\n      if (newStyle) {\n        Object.assign(style, newStyle);\n      } else {\n        warn(`(DEBUG) - XFA - style for ${name} not implemented yet`);\n      }\n    }\n  }\n  return style;\n}\n\nfunction createWrapper(node, html) {\n  const { attributes } = html;\n  const { style } = attributes;\n\n  const wrapper = {\n    name: \"div\",\n    attributes: {\n      class: [\"xfaWrapper\"],\n      style: Object.create(null),\n    },\n    children: [],\n  };\n\n  attributes.class.push(\"xfaWrapped\");\n\n  if (node.border) {\n    const { widths, insets } = node.border[$extra];\n    let width, height;\n    let top = insets[0];\n    let left = insets[3];\n    const insetsH = insets[0] + insets[2];\n    const insetsW = insets[1] + insets[3];\n    switch (node.border.hand) {\n      case \"even\":\n        top -= widths[0] / 2;\n        left -= widths[3] / 2;\n        width = `calc(100% + ${(widths[1] + widths[3]) / 2 - insetsW}px)`;\n        height = `calc(100% + ${(widths[0] + widths[2]) / 2 - insetsH}px)`;\n        break;\n      case \"left\":\n        top -= widths[0];\n        left -= widths[3];\n        width = `calc(100% + ${widths[1] + widths[3] - insetsW}px)`;\n        height = `calc(100% + ${widths[0] + widths[2] - insetsH}px)`;\n        break;\n      case \"right\":\n        width = insetsW ? `calc(100% - ${insetsW}px)` : \"100%\";\n        height = insetsH ? `calc(100% - ${insetsH}px)` : \"100%\";\n        break;\n    }\n    const classNames = [\"xfaBorder\"];\n    if (isPrintOnly(node.border)) {\n      classNames.push(\"xfaPrintOnly\");\n    }\n\n    const border = {\n      name: \"div\",\n      attributes: {\n        class: classNames,\n        style: {\n          top: `${top}px`,\n          left: `${left}px`,\n          width,\n          height,\n        },\n      },\n      children: [],\n    };\n\n    for (const key of [\n      \"border\",\n      \"borderWidth\",\n      \"borderColor\",\n      \"borderRadius\",\n      \"borderStyle\",\n    ]) {\n      if (style[key] !== undefined) {\n        border.attributes.style[key] = style[key];\n        delete style[key];\n      }\n    }\n    wrapper.children.push(border, html);\n  } else {\n    wrapper.children.push(html);\n  }\n\n  for (const key of [\n    \"background\",\n    \"backgroundClip\",\n    \"top\",\n    \"left\",\n    \"width\",\n    \"height\",\n    \"minWidth\",\n    \"minHeight\",\n    \"maxWidth\",\n    \"maxHeight\",\n    \"transform\",\n    \"transformOrigin\",\n    \"visibility\",\n  ]) {\n    if (style[key] !== undefined) {\n      wrapper.attributes.style[key] = style[key];\n      delete style[key];\n    }\n  }\n\n  if (style.position === \"absolute\") {\n    wrapper.attributes.style.position = \"absolute\";\n  } else {\n    wrapper.attributes.style.position = \"relative\";\n  }\n  delete style.position;\n\n  if (style.alignSelf) {\n    wrapper.attributes.style.alignSelf = style.alignSelf;\n    delete style.alignSelf;\n  }\n\n  return wrapper;\n}\n\nfunction fixTextIndent(styles) {\n  const indent = getMeasurement(styles.textIndent, \"0px\");\n  if (indent >= 0) {\n    return;\n  }\n\n  // If indent is negative then it's a hanging indent.\n  const align = styles.textAlign === \"right\" ? \"right\" : \"left\";\n  const name = \"padding\" + (align === \"left\" ? \"Left\" : \"Right\");\n  const padding = getMeasurement(styles[name], \"0px\");\n  styles[name] = `${padding - indent}px`;\n}\n\nfunction setAccess(node, classNames) {\n  switch (node.access) {\n    case \"nonInteractive\":\n      classNames.push(\"xfaNonInteractive\");\n      break;\n    case \"readOnly\":\n      classNames.push(\"xfaReadOnly\");\n      break;\n    case \"protected\":\n      classNames.push(\"xfaDisabled\");\n      break;\n  }\n}\n\nfunction isPrintOnly(node) {\n  return (\n    node.relevant.length > 0 &&\n    !node.relevant[0].excluded &&\n    node.relevant[0].viewname === \"print\"\n  );\n}\n\nfunction getCurrentPara(node) {\n  const stack = node[$getTemplateRoot]()[$extra].paraStack;\n  return stack.length ? stack[stack.length - 1] : null;\n}\n\nfunction setPara(node, nodeStyle, value) {\n  if (value.attributes.class && value.attributes.class.includes(\"xfaRich\")) {\n    if (nodeStyle) {\n      if (node.h === \"\") {\n        nodeStyle.height = \"auto\";\n      }\n      if (node.w === \"\") {\n        nodeStyle.width = \"auto\";\n      }\n    }\n\n    const para = getCurrentPara(node);\n    if (para) {\n      // By definition exData are external data so para\n      // has no effect on it.\n      const valueStyle = value.attributes.style;\n      valueStyle.display = \"flex\";\n      valueStyle.flexDirection = \"column\";\n      switch (para.vAlign) {\n        case \"top\":\n          valueStyle.justifyContent = \"start\";\n          break;\n        case \"bottom\":\n          valueStyle.justifyContent = \"end\";\n          break;\n        case \"middle\":\n          valueStyle.justifyContent = \"center\";\n          break;\n      }\n\n      const paraStyle = para[$toStyle]();\n      for (const [key, val] of Object.entries(paraStyle)) {\n        if (!(key in valueStyle)) {\n          valueStyle[key] = val;\n        }\n      }\n    }\n  }\n}\n\nfunction setFontFamily(xfaFont, node, fontFinder, style) {\n  if (!fontFinder) {\n    // The font cannot be found in the pdf so use the default one.\n    delete style.fontFamily;\n    return;\n  }\n\n  const name = stripQuotes(xfaFont.typeface);\n  style.fontFamily = `\"${name}\"`;\n\n  const typeface = fontFinder.find(name);\n  if (typeface) {\n    const { fontFamily } = typeface.regular.cssFontInfo;\n    if (fontFamily !== name) {\n      style.fontFamily = `\"${fontFamily}\"`;\n    }\n\n    const para = getCurrentPara(node);\n    if (para && para.lineHeight !== \"\") {\n      return;\n    }\n\n    if (style.lineHeight) {\n      // Already something so don't overwrite.\n      return;\n    }\n\n    const pdfFont = selectFont(xfaFont, typeface);\n    if (pdfFont) {\n      style.lineHeight = Math.max(1.2, pdfFont.lineHeight);\n    }\n  }\n}\n\nfunction fixURL(str) {\n  const absoluteUrl = createValidAbsoluteUrl(str, /* baseUrl = */ null, {\n    addDefaultProtocol: true,\n    tryConvertEncoding: true,\n  });\n  return absoluteUrl ? absoluteUrl.href : null;\n}\n\nexport {\n  computeBbox,\n  createWrapper,\n  fixDimensions,\n  fixTextIndent,\n  fixURL,\n  isPrintOnly,\n  layoutClass,\n  layoutNode,\n  measureToString,\n  setAccess,\n  setFontFamily,\n  setMinMaxDimensions,\n  setPara,\n  toStyle,\n};\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { $globalData } from \"./xfa_object.js\";\nimport { stripQuotes } from \"./utils.js\";\nimport { warn } from \"../../shared/util.js\";\n\nclass FontFinder {\n  constructor(pdfFonts) {\n    this.fonts = new Map();\n    this.cache = new Map();\n    this.warned = new Set();\n    this.defaultFont = null;\n    this.add(pdfFonts);\n  }\n\n  add(pdfFonts, reallyMissingFonts = null) {\n    for (const pdfFont of pdfFonts) {\n      this.addPdfFont(pdfFont);\n    }\n    for (const pdfFont of this.fonts.values()) {\n      if (!pdfFont.regular) {\n        pdfFont.regular = pdfFont.italic || pdfFont.bold || pdfFont.bolditalic;\n      }\n    }\n\n    if (!reallyMissingFonts || reallyMissingFonts.size === 0) {\n      return;\n    }\n    const myriad = this.fonts.get(\"PdfJS-Fallback-PdfJS-XFA\");\n    for (const missing of reallyMissingFonts) {\n      this.fonts.set(missing, myriad);\n    }\n  }\n\n  addPdfFont(pdfFont) {\n    const cssFontInfo = pdfFont.cssFontInfo;\n    const name = cssFontInfo.fontFamily;\n    let font = this.fonts.get(name);\n    if (!font) {\n      font = Object.create(null);\n      this.fonts.set(name, font);\n      if (!this.defaultFont) {\n        this.defaultFont = font;\n      }\n    }\n    let property = \"\";\n    const fontWeight = parseFloat(cssFontInfo.fontWeight);\n    if (parseFloat(cssFontInfo.italicAngle) !== 0) {\n      property = fontWeight >= 700 ? \"bolditalic\" : \"italic\";\n    } else if (fontWeight >= 700) {\n      property = \"bold\";\n    }\n\n    if (!property) {\n      if (\n        pdfFont.name.includes(\"Bold\") ||\n        (pdfFont.psName && pdfFont.psName.includes(\"Bold\"))\n      ) {\n        property = \"bold\";\n      }\n      if (\n        pdfFont.name.includes(\"Italic\") ||\n        pdfFont.name.endsWith(\"It\") ||\n        (pdfFont.psName &&\n          (pdfFont.psName.includes(\"Italic\") || pdfFont.psName.endsWith(\"It\")))\n      ) {\n        property += \"italic\";\n      }\n    }\n\n    if (!property) {\n      property = \"regular\";\n    }\n\n    font[property] = pdfFont;\n  }\n\n  getDefault() {\n    return this.defaultFont;\n  }\n\n  find(fontName, mustWarn = true) {\n    let font = this.fonts.get(fontName) || this.cache.get(fontName);\n    if (font) {\n      return font;\n    }\n\n    const pattern = /,|-|_| |bolditalic|bold|italic|regular|it/gi;\n    let name = fontName.replace(pattern, \"\");\n    font = this.fonts.get(name);\n    if (font) {\n      this.cache.set(fontName, font);\n      return font;\n    }\n    name = name.toLowerCase();\n\n    const maybe = [];\n    for (const [family, pdfFont] of this.fonts.entries()) {\n      if (family.replace(pattern, \"\").toLowerCase().startsWith(name)) {\n        maybe.push(pdfFont);\n      }\n    }\n\n    if (maybe.length === 0) {\n      for (const [, pdfFont] of this.fonts.entries()) {\n        if (\n          pdfFont.regular.name &&\n          pdfFont.regular.name\n            .replace(pattern, \"\")\n            .toLowerCase()\n            .startsWith(name)\n        ) {\n          maybe.push(pdfFont);\n        }\n      }\n    }\n\n    if (maybe.length === 0) {\n      name = name.replace(/psmt|mt/gi, \"\");\n      for (const [family, pdfFont] of this.fonts.entries()) {\n        if (family.replace(pattern, \"\").toLowerCase().startsWith(name)) {\n          maybe.push(pdfFont);\n        }\n      }\n    }\n\n    if (maybe.length === 0) {\n      for (const pdfFont of this.fonts.values()) {\n        if (\n          pdfFont.regular.name &&\n          pdfFont.regular.name\n            .replace(pattern, \"\")\n            .toLowerCase()\n            .startsWith(name)\n        ) {\n          maybe.push(pdfFont);\n        }\n      }\n    }\n\n    if (maybe.length >= 1) {\n      if (maybe.length !== 1 && mustWarn) {\n        warn(`XFA - Too many choices to guess the correct font: ${fontName}`);\n      }\n      this.cache.set(fontName, maybe[0]);\n      return maybe[0];\n    }\n\n    if (mustWarn && !this.warned.has(fontName)) {\n      this.warned.add(fontName);\n      warn(`XFA - Cannot find the font: ${fontName}`);\n    }\n    return null;\n  }\n}\n\nfunction selectFont(xfaFont, typeface) {\n  if (xfaFont.posture === \"italic\") {\n    if (xfaFont.weight === \"bold\") {\n      return typeface.bolditalic;\n    }\n    return typeface.italic;\n  } else if (xfaFont.weight === \"bold\") {\n    return typeface.bold;\n  }\n\n  return typeface.regular;\n}\n\nfunction getMetrics(xfaFont, real = false) {\n  let pdfFont = null;\n  if (xfaFont) {\n    const name = stripQuotes(xfaFont.typeface);\n    const typeface = xfaFont[$globalData].fontFinder.find(name);\n    pdfFont = selectFont(xfaFont, typeface);\n  }\n\n  if (!pdfFont) {\n    return {\n      lineHeight: 12,\n      lineGap: 2,\n      lineNoGap: 10,\n    };\n  }\n\n  const size = xfaFont.size || 10;\n  const lineHeight = pdfFont.lineHeight\n    ? Math.max(real ? 0 : 1.2, pdfFont.lineHeight)\n    : 1.2;\n  const lineGap = pdfFont.lineGap === undefined ? 0.2 : pdfFont.lineGap;\n  return {\n    lineHeight: lineHeight * size,\n    lineGap: lineGap * size,\n    lineNoGap: Math.max(1, lineHeight - lineGap) * size,\n  };\n}\n\nexport { FontFinder, getMetrics, selectFont };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { selectFont } from \"./fonts.js\";\n\nconst WIDTH_FACTOR = 1.02;\n\nclass FontInfo {\n  constructor(xfaFont, margin, lineHeight, fontFinder) {\n    this.lineHeight = lineHeight;\n    this.paraMargin = margin || {\n      top: 0,\n      bottom: 0,\n      left: 0,\n      right: 0,\n    };\n\n    if (!xfaFont) {\n      [this.pdfFont, this.xfaFont] = this.defaultFont(fontFinder);\n      return;\n    }\n\n    this.xfaFont = {\n      typeface: xfaFont.typeface,\n      posture: xfaFont.posture,\n      weight: xfaFont.weight,\n      size: xfaFont.size,\n      letterSpacing: xfaFont.letterSpacing,\n    };\n    const typeface = fontFinder.find(xfaFont.typeface);\n    if (!typeface) {\n      [this.pdfFont, this.xfaFont] = this.defaultFont(fontFinder);\n      return;\n    }\n\n    this.pdfFont = selectFont(xfaFont, typeface);\n\n    if (!this.pdfFont) {\n      [this.pdfFont, this.xfaFont] = this.defaultFont(fontFinder);\n    }\n  }\n\n  defaultFont(fontFinder) {\n    // TODO: Add a default font based on Liberation.\n    const font =\n      fontFinder.find(\"Helvetica\", false) ||\n      fontFinder.find(\"Myriad Pro\", false) ||\n      fontFinder.find(\"Arial\", false) ||\n      fontFinder.getDefault();\n    if (font && font.regular) {\n      const pdfFont = font.regular;\n      const info = pdfFont.cssFontInfo;\n      const xfaFont = {\n        typeface: info.fontFamily,\n        posture: \"normal\",\n        weight: \"normal\",\n        size: 10,\n        letterSpacing: 0,\n      };\n      return [pdfFont, xfaFont];\n    }\n\n    const xfaFont = {\n      typeface: \"Courier\",\n      posture: \"normal\",\n      weight: \"normal\",\n      size: 10,\n      letterSpacing: 0,\n    };\n    return [null, xfaFont];\n  }\n}\n\nclass FontSelector {\n  constructor(\n    defaultXfaFont,\n    defaultParaMargin,\n    defaultLineHeight,\n    fontFinder\n  ) {\n    this.fontFinder = fontFinder;\n    this.stack = [\n      new FontInfo(\n        defaultXfaFont,\n        defaultParaMargin,\n        defaultLineHeight,\n        fontFinder\n      ),\n    ];\n  }\n\n  pushData(xfaFont, margin, lineHeight) {\n    const lastFont = this.stack[this.stack.length - 1];\n    for (const name of [\n      \"typeface\",\n      \"posture\",\n      \"weight\",\n      \"size\",\n      \"letterSpacing\",\n    ]) {\n      if (!xfaFont[name]) {\n        xfaFont[name] = lastFont.xfaFont[name];\n      }\n    }\n\n    for (const name of [\"top\", \"bottom\", \"left\", \"right\"]) {\n      if (isNaN(margin[name])) {\n        margin[name] = lastFont.paraMargin[name];\n      }\n    }\n\n    const fontInfo = new FontInfo(\n      xfaFont,\n      margin,\n      lineHeight || lastFont.lineHeight,\n      this.fontFinder\n    );\n    if (!fontInfo.pdfFont) {\n      fontInfo.pdfFont = lastFont.pdfFont;\n    }\n\n    this.stack.push(fontInfo);\n  }\n\n  popFont() {\n    this.stack.pop();\n  }\n\n  topFont() {\n    return this.stack[this.stack.length - 1];\n  }\n}\n\n/**\n * Compute a text area dimensions based on font metrics.\n */\nclass TextMeasure {\n  constructor(defaultXfaFont, defaultParaMargin, defaultLineHeight, fonts) {\n    this.glyphs = [];\n    this.fontSelector = new FontSelector(\n      defaultXfaFont,\n      defaultParaMargin,\n      defaultLineHeight,\n      fonts\n    );\n    this.extraHeight = 0;\n  }\n\n  pushData(xfaFont, margin, lineHeight) {\n    this.fontSelector.pushData(xfaFont, margin, lineHeight);\n  }\n\n  popFont(xfaFont) {\n    return this.fontSelector.popFont();\n  }\n\n  addPara() {\n    const lastFont = this.fontSelector.topFont();\n    this.extraHeight += lastFont.paraMargin.top + lastFont.paraMargin.bottom;\n  }\n\n  addString(str) {\n    if (!str) {\n      return;\n    }\n\n    const lastFont = this.fontSelector.topFont();\n    const fontSize = lastFont.xfaFont.size;\n    if (lastFont.pdfFont) {\n      const letterSpacing = lastFont.xfaFont.letterSpacing;\n      const pdfFont = lastFont.pdfFont;\n      const fontLineHeight = pdfFont.lineHeight || 1.2;\n      const lineHeight =\n        lastFont.lineHeight || Math.max(1.2, fontLineHeight) * fontSize;\n      const lineGap = pdfFont.lineGap === undefined ? 0.2 : pdfFont.lineGap;\n      const noGap = fontLineHeight - lineGap;\n      const firstLineHeight = Math.max(1, noGap) * fontSize;\n      const scale = fontSize / 1000;\n      const fallbackWidth =\n        pdfFont.defaultWidth || pdfFont.charsToGlyphs(\" \")[0].width;\n\n      for (const line of str.split(/[\\u2029\\n]/)) {\n        const encodedLine = pdfFont.encodeString(line).join(\"\");\n        const glyphs = pdfFont.charsToGlyphs(encodedLine);\n\n        for (const glyph of glyphs) {\n          const width = glyph.width || fallbackWidth;\n          this.glyphs.push([\n            width * scale + letterSpacing,\n            lineHeight,\n            firstLineHeight,\n            glyph.unicode,\n            false,\n          ]);\n        }\n\n        this.glyphs.push([0, 0, 0, \"\\n\", true]);\n      }\n      this.glyphs.pop();\n      return;\n    }\n\n    // When we have no font in the pdf, just use the font size as default width.\n    for (const line of str.split(/[\\u2029\\n]/)) {\n      for (const char of line.split(\"\")) {\n        this.glyphs.push([fontSize, 1.2 * fontSize, fontSize, char, false]);\n      }\n\n      this.glyphs.push([0, 0, 0, \"\\n\", true]);\n    }\n    this.glyphs.pop();\n  }\n\n  compute(maxWidth) {\n    let lastSpacePos = -1,\n      lastSpaceWidth = 0,\n      width = 0,\n      height = 0,\n      currentLineWidth = 0,\n      currentLineHeight = 0;\n    let isBroken = false;\n    let isFirstLine = true;\n\n    for (let i = 0, ii = this.glyphs.length; i < ii; i++) {\n      const [glyphWidth, lineHeight, firstLineHeight, char, isEOL] =\n        this.glyphs[i];\n      const isSpace = char === \" \";\n      const glyphHeight = isFirstLine ? firstLineHeight : lineHeight;\n      if (isEOL) {\n        width = Math.max(width, currentLineWidth);\n        currentLineWidth = 0;\n        height += currentLineHeight;\n        currentLineHeight = glyphHeight;\n        lastSpacePos = -1;\n        lastSpaceWidth = 0;\n        isFirstLine = false;\n        continue;\n      }\n\n      if (isSpace) {\n        if (currentLineWidth + glyphWidth > maxWidth) {\n          // We can break here but the space is not taken into account.\n          width = Math.max(width, currentLineWidth);\n          currentLineWidth = 0;\n          height += currentLineHeight;\n          currentLineHeight = glyphHeight;\n          lastSpacePos = -1;\n          lastSpaceWidth = 0;\n          isBroken = true;\n          isFirstLine = false;\n        } else {\n          currentLineHeight = Math.max(glyphHeight, currentLineHeight);\n          lastSpaceWidth = currentLineWidth;\n          currentLineWidth += glyphWidth;\n          lastSpacePos = i;\n        }\n        continue;\n      }\n\n      if (currentLineWidth + glyphWidth > maxWidth) {\n        // We must break to the last white position (if available)\n        height += currentLineHeight;\n        currentLineHeight = glyphHeight;\n        if (lastSpacePos !== -1) {\n          i = lastSpacePos;\n          width = Math.max(width, lastSpaceWidth);\n          currentLineWidth = 0;\n          lastSpacePos = -1;\n          lastSpaceWidth = 0;\n        } else {\n          // Just break in the middle of the word\n          width = Math.max(width, currentLineWidth);\n          currentLineWidth = glyphWidth;\n        }\n        isBroken = true;\n        isFirstLine = false;\n\n        continue;\n      }\n\n      currentLineWidth += glyphWidth;\n      currentLineHeight = Math.max(glyphHeight, currentLineHeight);\n    }\n\n    width = Math.max(width, currentLineWidth);\n    height += currentLineHeight + this.extraHeight;\n\n    return { width: WIDTH_FACTOR * width, height, isBroken };\n  }\n}\n\nexport { TextMeasure };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n  $getAttributes,\n  $getChildren,\n  $nodeName,\n  $setValue,\n  $toString,\n  $uid,\n} from \"./xfa_object.js\";\n\nclass DataHandler {\n  constructor(root, data) {\n    this.data = data;\n    this.dataset = root.datasets || null;\n  }\n\n  serialize(storage) {\n    const stack = [[-1, this.data[$getChildren]()]];\n\n    while (stack.length > 0) {\n      const last = stack[stack.length - 1];\n      const [i, children] = last;\n      if (i + 1 === children.length) {\n        stack.pop();\n        continue;\n      }\n\n      const child = children[++last[0]];\n      const storageEntry = storage.get(child[$uid]);\n      if (storageEntry) {\n        child[$setValue](storageEntry);\n      } else {\n        const attributes = child[$getAttributes]();\n        for (const value of attributes.values()) {\n          const entry = storage.get(value[$uid]);\n          if (entry) {\n            value[$setValue](entry);\n            break;\n          }\n        }\n      }\n\n      const nodes = child[$getChildren]();\n      if (nodes.length > 0) {\n        stack.push([-1, nodes]);\n      }\n    }\n\n    const buf = [\n      `<xfa:datasets xmlns:xfa=\"http://www.xfa.org/schema/xfa-data/1.0/\">`,\n    ];\n    if (this.dataset) {\n      // Dump nodes other than data: they can contains for example\n      // some data for choice lists.\n      for (const child of this.dataset[$getChildren]()) {\n        if (child[$nodeName] !== \"data\") {\n          child[$toString](buf);\n        }\n      }\n    }\n    this.data[$toString](buf);\n    buf.push(\"</xfa:datasets>\");\n\n    return buf.join(\"\");\n  }\n}\n\nexport { DataHandler };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n  $acceptWhitespace,\n  $clean,\n  $content,\n  $finalize,\n  $globalData,\n  $isCDATAXml,\n  $nsAttributes,\n  $onChild,\n  $onText,\n  $setId,\n} from \"./xfa_object.js\";\nimport { XMLParserBase, XMLParserErrorCode } from \"../xml_parser.js\";\nimport { Builder } from \"./builder.js\";\nimport { warn } from \"../../shared/util.js\";\n\nclass XFAParser extends XMLParserBase {\n  constructor(rootNameSpace = null, richText = false) {\n    super();\n    this._builder = new Builder(rootNameSpace);\n    this._stack = [];\n    this._globalData = {\n      usedTypefaces: new Set(),\n    };\n    this._ids = new Map();\n    this._current = this._builder.buildRoot(this._ids);\n    this._errorCode = XMLParserErrorCode.NoError;\n    this._whiteRegex = /^\\s+$/;\n    this._nbsps = /\\xa0+/g;\n    this._richText = richText;\n  }\n\n  parse(data) {\n    this.parseXml(data);\n\n    if (this._errorCode !== XMLParserErrorCode.NoError) {\n      return undefined;\n    }\n\n    this._current[$finalize]();\n\n    return this._current.element;\n  }\n\n  onText(text) {\n    // Normally by definition a &nbsp is unbreakable\n    // but in real life Acrobat can break strings on &nbsp.\n    text = text.replace(this._nbsps, match => match.slice(1) + \" \");\n    if (this._richText || this._current[$acceptWhitespace]()) {\n      this._current[$onText](text, this._richText);\n      return;\n    }\n\n    if (this._whiteRegex.test(text)) {\n      return;\n    }\n    this._current[$onText](text.trim());\n  }\n\n  onCdata(text) {\n    this._current[$onText](text);\n  }\n\n  _mkAttributes(attributes, tagName) {\n    // Transform attributes into an object and get out\n    // namespaces information.\n    let namespace = null;\n    let prefixes = null;\n    const attributeObj = Object.create({});\n    for (const { name, value } of attributes) {\n      if (name === \"xmlns\") {\n        if (!namespace) {\n          namespace = value;\n        } else {\n          warn(`XFA - multiple namespace definition in <${tagName}>`);\n        }\n      } else if (name.startsWith(\"xmlns:\")) {\n        const prefix = name.substring(\"xmlns:\".length);\n        if (!prefixes) {\n          prefixes = [];\n        }\n        prefixes.push({ prefix, value });\n      } else {\n        const i = name.indexOf(\":\");\n        if (i === -1) {\n          attributeObj[name] = value;\n        } else {\n          // Attributes can have their own namespace.\n          // For example in data, we can have <foo xfa:dataNode=\"dataGroup\"/>\n          let nsAttrs = attributeObj[$nsAttributes];\n          if (!nsAttrs) {\n            nsAttrs = attributeObj[$nsAttributes] = Object.create(null);\n          }\n          const [ns, attrName] = [name.slice(0, i), name.slice(i + 1)];\n          let attrs = nsAttrs[ns];\n          if (!attrs) {\n            attrs = nsAttrs[ns] = Object.create(null);\n          }\n          attrs[attrName] = value;\n        }\n      }\n    }\n\n    return [namespace, prefixes, attributeObj];\n  }\n\n  _getNameAndPrefix(name, nsAgnostic) {\n    const i = name.indexOf(\":\");\n    if (i === -1) {\n      return [name, null];\n    }\n    return [name.substring(i + 1), nsAgnostic ? \"\" : name.substring(0, i)];\n  }\n\n  onBeginElement(tagName, attributes, isEmpty) {\n    const [namespace, prefixes, attributesObj] = this._mkAttributes(\n      attributes,\n      tagName\n    );\n    const [name, nsPrefix] = this._getNameAndPrefix(\n      tagName,\n      this._builder.isNsAgnostic()\n    );\n    const node = this._builder.build({\n      nsPrefix,\n      name,\n      attributes: attributesObj,\n      namespace,\n      prefixes,\n    });\n    node[$globalData] = this._globalData;\n\n    if (isEmpty) {\n      // No children: just push the node into its parent.\n      node[$finalize]();\n      if (this._current[$onChild](node)) {\n        node[$setId](this._ids);\n      }\n      node[$clean](this._builder);\n      return;\n    }\n\n    this._stack.push(this._current);\n    this._current = node;\n  }\n\n  onEndElement(name) {\n    const node = this._current;\n    if (node[$isCDATAXml]() && typeof node[$content] === \"string\") {\n      const parser = new XFAParser();\n      parser._globalData = this._globalData;\n      const root = parser.parse(node[$content]);\n      node[$content] = null;\n      node[$onChild](root);\n    }\n\n    node[$finalize]();\n    this._current = this._stack.pop();\n    if (this._current[$onChild](node)) {\n      node[$setId](this._ids);\n    }\n    node[$clean](this._builder);\n  }\n\n  onError(code) {\n    this._errorCode = code;\n  }\n}\n\nexport { XFAParser };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { $buildXFAObject, NamespaceIds } from \"./namespaces.js\";\nimport {\n  $cleanup,\n  $finalize,\n  $ids,\n  $isNsAgnostic,\n  $nsAttributes,\n  $onChild,\n  $resolvePrototypes,\n  $root,\n  XFAObject,\n} from \"./xfa_object.js\";\nimport { NamespaceSetUp } from \"./setup.js\";\nimport { Template } from \"./template.js\";\nimport { UnknownNamespace } from \"./unknown.js\";\nimport { warn } from \"../../shared/util.js\";\n\nclass Root extends XFAObject {\n  constructor(ids) {\n    super(-1, \"root\", Object.create(null));\n    this.element = null;\n    this[$ids] = ids;\n  }\n\n  [$onChild](child) {\n    this.element = child;\n    return true;\n  }\n\n  [$finalize]() {\n    super[$finalize]();\n    if (this.element.template instanceof Template) {\n      // Set the root element in $ids using a symbol in order\n      // to avoid conflict with real IDs.\n      this[$ids].set($root, this.element);\n\n      this.element.template[$resolvePrototypes](this[$ids]);\n      this.element.template[$ids] = this[$ids];\n    }\n  }\n}\n\nclass Empty extends XFAObject {\n  constructor() {\n    super(-1, \"\", Object.create(null));\n  }\n\n  [$onChild](_) {\n    return false;\n  }\n}\n\nclass Builder {\n  constructor(rootNameSpace = null) {\n    this._namespaceStack = [];\n    this._nsAgnosticLevel = 0;\n\n    // Each prefix has its own stack\n    this._namespacePrefixes = new Map();\n    this._namespaces = new Map();\n    this._nextNsId = Math.max(\n      ...Object.values(NamespaceIds).map(({ id }) => id)\n    );\n    this._currentNamespace =\n      rootNameSpace || new UnknownNamespace(++this._nextNsId);\n  }\n\n  buildRoot(ids) {\n    return new Root(ids);\n  }\n\n  build({ nsPrefix, name, attributes, namespace, prefixes }) {\n    const hasNamespaceDef = namespace !== null;\n    if (hasNamespaceDef) {\n      // Define the current namespace to use.\n      this._namespaceStack.push(this._currentNamespace);\n      this._currentNamespace = this._searchNamespace(namespace);\n    }\n\n    if (prefixes) {\n      // The xml node may have namespace prefix definitions\n      this._addNamespacePrefix(prefixes);\n    }\n\n    if (attributes.hasOwnProperty($nsAttributes)) {\n      // Only support xfa-data namespace.\n      const dataTemplate = NamespaceSetUp.datasets;\n      const nsAttrs = attributes[$nsAttributes];\n      let xfaAttrs = null;\n      for (const [ns, attrs] of Object.entries(nsAttrs)) {\n        const nsToUse = this._getNamespaceToUse(ns);\n        if (nsToUse === dataTemplate) {\n          xfaAttrs = { xfa: attrs };\n          break;\n        }\n      }\n      if (xfaAttrs) {\n        attributes[$nsAttributes] = xfaAttrs;\n      } else {\n        delete attributes[$nsAttributes];\n      }\n    }\n\n    const namespaceToUse = this._getNamespaceToUse(nsPrefix);\n    const node =\n      (namespaceToUse && namespaceToUse[$buildXFAObject](name, attributes)) ||\n      new Empty();\n\n    if (node[$isNsAgnostic]()) {\n      this._nsAgnosticLevel++;\n    }\n\n    // In case the node has some namespace things,\n    // we must pop the different stacks.\n    if (hasNamespaceDef || prefixes || node[$isNsAgnostic]()) {\n      node[$cleanup] = {\n        hasNamespace: hasNamespaceDef,\n        prefixes,\n        nsAgnostic: node[$isNsAgnostic](),\n      };\n    }\n\n    return node;\n  }\n\n  isNsAgnostic() {\n    return this._nsAgnosticLevel > 0;\n  }\n\n  _searchNamespace(nsName) {\n    let ns = this._namespaces.get(nsName);\n    if (ns) {\n      return ns;\n    }\n    for (const [name, { check }] of Object.entries(NamespaceIds)) {\n      if (check(nsName)) {\n        ns = NamespaceSetUp[name];\n        if (ns) {\n          this._namespaces.set(nsName, ns);\n          return ns;\n        }\n        // The namespace is known but not handled.\n        break;\n      }\n    }\n\n    ns = new UnknownNamespace(++this._nextNsId);\n    this._namespaces.set(nsName, ns);\n    return ns;\n  }\n\n  _addNamespacePrefix(prefixes) {\n    for (const { prefix, value } of prefixes) {\n      const namespace = this._searchNamespace(value);\n      let prefixStack = this._namespacePrefixes.get(prefix);\n      if (!prefixStack) {\n        prefixStack = [];\n        this._namespacePrefixes.set(prefix, prefixStack);\n      }\n      prefixStack.push(namespace);\n    }\n  }\n\n  _getNamespaceToUse(prefix) {\n    if (!prefix) {\n      return this._currentNamespace;\n    }\n    const prefixStack = this._namespacePrefixes.get(prefix);\n    if (prefixStack && prefixStack.length > 0) {\n      return prefixStack[prefixStack.length - 1];\n    }\n\n    warn(`Unknown namespace prefix: ${prefix}.`);\n    return null;\n  }\n\n  clean(data) {\n    const { hasNamespace, prefixes, nsAgnostic } = data;\n    if (hasNamespace) {\n      this._currentNamespace = this._namespaceStack.pop();\n    }\n    if (prefixes) {\n      prefixes.forEach(({ prefix }) => {\n        this._namespacePrefixes.get(prefix).pop();\n      });\n    }\n    if (nsAgnostic) {\n      this._nsAgnosticLevel--;\n    }\n  }\n}\n\nexport { Builder };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ConfigNamespace } from \"./config.js\";\nimport { ConnectionSetNamespace } from \"./connection_set.js\";\nimport { DatasetsNamespace } from \"./datasets.js\";\nimport { LocaleSetNamespace } from \"./locale_set.js\";\nimport { SignatureNamespace } from \"./signature.js\";\nimport { StylesheetNamespace } from \"./stylesheet.js\";\nimport { TemplateNamespace } from \"./template.js\";\nimport { XdpNamespace } from \"./xdp.js\";\nimport { XhtmlNamespace } from \"./xhtml.js\";\n\nconst NamespaceSetUp = {\n  config: ConfigNamespace,\n  connection: ConnectionSetNamespace,\n  datasets: DatasetsNamespace,\n  localeSet: LocaleSetNamespace,\n  signature: SignatureNamespace,\n  stylesheet: StylesheetNamespace,\n  template: TemplateNamespace,\n  xdp: XdpNamespace,\n  xhtml: XhtmlNamespace,\n};\n\nexport { NamespaceSetUp };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { $buildXFAObject, NamespaceIds } from \"./namespaces.js\";\nimport {\n  $content,\n  $finalize,\n  ContentObject,\n  IntegerObject,\n  Option01,\n  Option10,\n  OptionObject,\n  StringObject,\n  XFAObject,\n  XFAObjectArray,\n} from \"./xfa_object.js\";\nimport { getInteger, getStringOption } from \"./utils.js\";\nimport { shadow, warn } from \"../../shared/util.js\";\n\nconst CONFIG_NS_ID = NamespaceIds.config.id;\n\nclass Acrobat extends XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"acrobat\", /* hasChildren = */ true);\n    this.acrobat7 = null;\n    this.autoSave = null;\n    this.common = null;\n    this.validate = null;\n    this.validateApprovalSignatures = null;\n    this.submitUrl = new XFAObjectArray();\n  }\n}\n\nclass Acrobat7 extends XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"acrobat7\", /* hasChildren = */ true);\n    this.dynamicRender = null;\n  }\n}\n\nclass ADBE_JSConsole extends OptionObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"ADBE_JSConsole\", [\"delegate\", \"Enable\", \"Disable\"]);\n  }\n}\n\nclass ADBE_JSDebugger extends OptionObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"ADBE_JSDebugger\", [\"delegate\", \"Enable\", \"Disable\"]);\n  }\n}\n\nclass AddSilentPrint extends Option01 {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"addSilentPrint\");\n  }\n}\n\nclass AddViewerPreferences extends Option01 {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"addViewerPreferences\");\n  }\n}\n\nclass AdjustData extends Option10 {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"adjustData\");\n  }\n}\n\nclass AdobeExtensionLevel extends IntegerObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"adobeExtensionLevel\", 0, n => n >= 1 && n <= 8);\n  }\n}\n\nclass Agent extends XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"agent\", /* hasChildren = */ true);\n    this.name = attributes.name ? attributes.name.trim() : \"\";\n    this.common = new XFAObjectArray();\n  }\n}\n\nclass AlwaysEmbed extends ContentObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"alwaysEmbed\");\n  }\n}\n\nclass Amd extends StringObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"amd\");\n  }\n}\n\nclass Area extends XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"area\");\n    this.level = getInteger({\n      data: attributes.level,\n      defaultValue: 0,\n      validate: n => n >= 1 && n <= 3,\n    });\n    this.name = getStringOption(attributes.name, [\n      \"\",\n      \"barcode\",\n      \"coreinit\",\n      \"deviceDriver\",\n      \"font\",\n      \"general\",\n      \"layout\",\n      \"merge\",\n      \"script\",\n      \"signature\",\n      \"sourceSet\",\n      \"templateCache\",\n    ]);\n  }\n}\n\nclass Attributes extends OptionObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"attributes\", [\"preserve\", \"delegate\", \"ignore\"]);\n  }\n}\n\nclass AutoSave extends OptionObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"autoSave\", [\"disabled\", \"enabled\"]);\n  }\n}\n\nclass Base extends StringObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"base\");\n  }\n}\n\nclass BatchOutput extends XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"batchOutput\");\n    this.format = getStringOption(attributes.format, [\n      \"none\",\n      \"concat\",\n      \"zip\",\n      \"zipCompress\",\n    ]);\n  }\n}\n\nclass BehaviorOverride extends ContentObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"behaviorOverride\");\n  }\n\n  [$finalize]() {\n    this[$content] = new Map(\n      this[$content]\n        .trim()\n        .split(/\\s+/)\n        .filter(x => x.includes(\":\"))\n        .map(x => x.split(\":\", 2))\n    );\n  }\n}\n\nclass Cache extends XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"cache\", /* hasChildren = */ true);\n    this.templateCache = null;\n  }\n}\n\nclass Change extends Option01 {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"change\");\n  }\n}\n\nclass Common extends XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"common\", /* hasChildren = */ true);\n    this.data = null;\n    this.locale = null;\n    this.localeSet = null;\n    this.messaging = null;\n    this.suppressBanner = null;\n    this.template = null;\n    this.validationMessaging = null;\n    this.versionControl = null;\n    this.log = new XFAObjectArray();\n  }\n}\n\nclass Compress extends XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"compress\");\n    this.scope = getStringOption(attributes.scope, [\"imageOnly\", \"document\"]);\n  }\n}\n\nclass CompressLogicalStructure extends Option01 {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"compressLogicalStructure\");\n  }\n}\n\nclass CompressObjectStream extends Option10 {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"compressObjectStream\");\n  }\n}\n\nclass Compression extends XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"compression\", /* hasChildren = */ true);\n    this.compressLogicalStructure = null;\n    this.compressObjectStream = null;\n    this.level = null;\n    this.type = null;\n  }\n}\n\nclass Config extends XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"config\", /* hasChildren = */ true);\n    this.acrobat = null;\n    this.present = null;\n    this.trace = null;\n    this.agent = new XFAObjectArray();\n  }\n}\n\nclass Conformance extends OptionObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"conformance\", [\"A\", \"B\"]);\n  }\n}\n\nclass ContentCopy extends Option01 {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"contentCopy\");\n  }\n}\n\nclass Copies extends IntegerObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"copies\", 1, n => n >= 1);\n  }\n}\n\nclass Creator extends StringObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"creator\");\n  }\n}\n\nclass CurrentPage extends IntegerObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"currentPage\", 0, n => n >= 0);\n  }\n}\n\nclass Data extends XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"data\", /* hasChildren = */ true);\n    this.adjustData = null;\n    this.attributes = null;\n    this.incrementalLoad = null;\n    this.outputXSL = null;\n    this.range = null;\n    this.record = null;\n    this.startNode = null;\n    this.uri = null;\n    this.window = null;\n    this.xsl = null;\n    this.excludeNS = new XFAObjectArray();\n    this.transform = new XFAObjectArray();\n  }\n}\n\nclass Debug extends XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"debug\", /* hasChildren = */ true);\n    this.uri = null;\n  }\n}\n\nclass DefaultTypeface extends ContentObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"defaultTypeface\");\n    this.writingScript = getStringOption(attributes.writingScript, [\n      \"*\",\n      \"Arabic\",\n      \"Cyrillic\",\n      \"EastEuropeanRoman\",\n      \"Greek\",\n      \"Hebrew\",\n      \"Japanese\",\n      \"Korean\",\n      \"Roman\",\n      \"SimplifiedChinese\",\n      \"Thai\",\n      \"TraditionalChinese\",\n      \"Vietnamese\",\n    ]);\n  }\n}\n\nclass Destination extends OptionObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"destination\", [\n      \"pdf\",\n      \"pcl\",\n      \"ps\",\n      \"webClient\",\n      \"zpl\",\n    ]);\n  }\n}\n\nclass DocumentAssembly extends Option01 {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"documentAssembly\");\n  }\n}\n\nclass Driver extends XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"driver\", /* hasChildren = */ true);\n    this.name = attributes.name ? attributes.name.trim() : \"\";\n    this.fontInfo = null;\n    this.xdc = null;\n  }\n}\n\nclass DuplexOption extends OptionObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"duplexOption\", [\n      \"simplex\",\n      \"duplexFlipLongEdge\",\n      \"duplexFlipShortEdge\",\n    ]);\n  }\n}\n\nclass DynamicRender extends OptionObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"dynamicRender\", [\"forbidden\", \"required\"]);\n  }\n}\n\nclass Embed extends Option01 {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"embed\");\n  }\n}\n\nclass Encrypt extends Option01 {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"encrypt\");\n  }\n}\n\nclass Encryption extends XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"encryption\", /* hasChildren = */ true);\n    this.encrypt = null;\n    this.encryptionLevel = null;\n    this.permissions = null;\n  }\n}\n\nclass EncryptionLevel extends OptionObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"encryptionLevel\", [\"40bit\", \"128bit\"]);\n  }\n}\n\nclass Enforce extends StringObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"enforce\");\n  }\n}\n\nclass Equate extends XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"equate\");\n\n    this.force = getInteger({\n      data: attributes.force,\n      defaultValue: 1,\n      validate: n => n === 0,\n    });\n\n    this.from = attributes.from || \"\";\n    this.to = attributes.to || \"\";\n  }\n}\n\nclass EquateRange extends XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"equateRange\");\n\n    this.from = attributes.from || \"\";\n    this.to = attributes.to || \"\";\n    this._unicodeRange = attributes.unicodeRange || \"\";\n  }\n\n  get unicodeRange() {\n    const ranges = [];\n    const unicodeRegex = /U\\+([0-9a-fA-F]+)/;\n    const unicodeRange = this._unicodeRange;\n    for (let range of unicodeRange\n      .split(\",\")\n      .map(x => x.trim())\n      .filter(x => !!x)) {\n      range = range.split(\"-\", 2).map(x => {\n        const found = x.match(unicodeRegex);\n        if (!found) {\n          return 0;\n        }\n        return parseInt(found[1], 16);\n      });\n      if (range.length === 1) {\n        range.push(range[0]);\n      }\n      ranges.push(range);\n    }\n    return shadow(this, \"unicodeRange\", ranges);\n  }\n}\n\nclass Exclude extends ContentObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"exclude\");\n  }\n\n  [$finalize]() {\n    this[$content] = this[$content]\n      .trim()\n      .split(/\\s+/)\n      .filter(\n        x =>\n          x &&\n          [\n            \"calculate\",\n            \"close\",\n            \"enter\",\n            \"exit\",\n            \"initialize\",\n            \"ready\",\n            \"validate\",\n          ].includes(x)\n      );\n  }\n}\n\nclass ExcludeNS extends StringObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"excludeNS\");\n  }\n}\n\nclass FlipLabel extends OptionObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"flipLabel\", [\"usePrinterSetting\", \"on\", \"off\"]);\n  }\n}\n\nclass FontInfo extends XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"fontInfo\", /* hasChildren = */ true);\n    this.embed = null;\n    this.map = null;\n    this.subsetBelow = null;\n    this.alwaysEmbed = new XFAObjectArray();\n    this.defaultTypeface = new XFAObjectArray();\n    this.neverEmbed = new XFAObjectArray();\n  }\n}\n\nclass FormFieldFilling extends Option01 {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"formFieldFilling\");\n  }\n}\n\nclass GroupParent extends StringObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"groupParent\");\n  }\n}\n\nclass IfEmpty extends OptionObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"ifEmpty\", [\n      \"dataValue\",\n      \"dataGroup\",\n      \"ignore\",\n      \"remove\",\n    ]);\n  }\n}\n\nclass IncludeXDPContent extends StringObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"includeXDPContent\");\n  }\n}\n\nclass IncrementalLoad extends OptionObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"incrementalLoad\", [\"none\", \"forwardOnly\"]);\n  }\n}\n\nclass IncrementalMerge extends Option01 {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"incrementalMerge\");\n  }\n}\n\nclass Interactive extends Option01 {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"interactive\");\n  }\n}\n\nclass Jog extends OptionObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"jog\", [\"usePrinterSetting\", \"none\", \"pageSet\"]);\n  }\n}\n\nclass LabelPrinter extends XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"labelPrinter\", /* hasChildren = */ true);\n    this.name = getStringOption(attributes.name, [\"zpl\", \"dpl\", \"ipl\", \"tcpl\"]);\n    this.batchOutput = null;\n    this.flipLabel = null;\n    this.fontInfo = null;\n    this.xdc = null;\n  }\n}\n\nclass Layout extends OptionObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"layout\", [\"paginate\", \"panel\"]);\n  }\n}\n\nclass Level extends IntegerObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"level\", 0, n => n > 0);\n  }\n}\n\nclass Linearized extends Option01 {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"linearized\");\n  }\n}\n\nclass Locale extends StringObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"locale\");\n  }\n}\n\nclass LocaleSet extends StringObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"localeSet\");\n  }\n}\n\nclass Log extends XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"log\", /* hasChildren = */ true);\n    this.mode = null;\n    this.threshold = null;\n    this.to = null;\n    this.uri = null;\n  }\n}\n\n// Renamed in MapElement to avoid confusion with usual js Map.\nclass MapElement extends XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"map\", /* hasChildren = */ true);\n    this.equate = new XFAObjectArray();\n    this.equateRange = new XFAObjectArray();\n  }\n}\n\nclass MediumInfo extends XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"mediumInfo\", /* hasChildren = */ true);\n    this.map = null;\n  }\n}\n\nclass Message extends XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"message\", /* hasChildren = */ true);\n    this.msgId = null;\n    this.severity = null;\n  }\n}\n\nclass Messaging extends XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"messaging\", /* hasChildren = */ true);\n    this.message = new XFAObjectArray();\n  }\n}\n\nclass Mode extends OptionObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"mode\", [\"append\", \"overwrite\"]);\n  }\n}\n\nclass ModifyAnnots extends Option01 {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"modifyAnnots\");\n  }\n}\n\nclass MsgId extends IntegerObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"msgId\", 1, n => n >= 1);\n  }\n}\n\nclass NameAttr extends StringObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"nameAttr\");\n  }\n}\n\nclass NeverEmbed extends ContentObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"neverEmbed\");\n  }\n}\n\nclass NumberOfCopies extends IntegerObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"numberOfCopies\", null, n => n >= 2 && n <= 5);\n  }\n}\n\nclass OpenAction extends XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"openAction\", /* hasChildren = */ true);\n    this.destination = null;\n  }\n}\n\nclass Output extends XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"output\", /* hasChildren = */ true);\n    this.to = null;\n    this.type = null;\n    this.uri = null;\n  }\n}\n\nclass OutputBin extends StringObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"outputBin\");\n  }\n}\n\nclass OutputXSL extends XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"outputXSL\", /* hasChildren = */ true);\n    this.uri = null;\n  }\n}\n\nclass Overprint extends OptionObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"overprint\", [\"none\", \"both\", \"draw\", \"field\"]);\n  }\n}\n\nclass Packets extends StringObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"packets\");\n  }\n\n  [$finalize]() {\n    if (this[$content] === \"*\") {\n      return;\n    }\n    this[$content] = this[$content]\n      .trim()\n      .split(/\\s+/)\n      .filter(x =>\n        [\"config\", \"datasets\", \"template\", \"xfdf\", \"xslt\"].includes(x)\n      );\n  }\n}\n\nclass PageOffset extends XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"pageOffset\");\n    this.x = getInteger({\n      data: attributes.x,\n      defaultValue: \"useXDCSetting\",\n      validate: n => true,\n    });\n    this.y = getInteger({\n      data: attributes.y,\n      defaultValue: \"useXDCSetting\",\n      validate: n => true,\n    });\n  }\n}\n\nclass PageRange extends StringObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"pageRange\");\n  }\n\n  [$finalize]() {\n    const numbers = this[$content]\n      .trim()\n      .split(/\\s+/)\n      .map(x => parseInt(x, 10));\n    const ranges = [];\n    for (let i = 0, ii = numbers.length; i < ii; i += 2) {\n      ranges.push(numbers.slice(i, i + 2));\n    }\n    this[$content] = ranges;\n  }\n}\n\nclass Pagination extends OptionObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"pagination\", [\n      \"simplex\",\n      \"duplexShortEdge\",\n      \"duplexLongEdge\",\n    ]);\n  }\n}\n\nclass PaginationOverride extends OptionObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"paginationOverride\", [\n      \"none\",\n      \"forceDuplex\",\n      \"forceDuplexLongEdge\",\n      \"forceDuplexShortEdge\",\n      \"forceSimplex\",\n    ]);\n  }\n}\n\nclass Part extends IntegerObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"part\", 1, n => false);\n  }\n}\n\nclass Pcl extends XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"pcl\", /* hasChildren = */ true);\n    this.name = attributes.name || \"\";\n    this.batchOutput = null;\n    this.fontInfo = null;\n    this.jog = null;\n    this.mediumInfo = null;\n    this.outputBin = null;\n    this.pageOffset = null;\n    this.staple = null;\n    this.xdc = null;\n  }\n}\n\nclass Pdf extends XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"pdf\", /* hasChildren = */ true);\n    this.name = attributes.name || \"\";\n    this.adobeExtensionLevel = null;\n    this.batchOutput = null;\n    this.compression = null;\n    this.creator = null;\n    this.encryption = null;\n    this.fontInfo = null;\n    this.interactive = null;\n    this.linearized = null;\n    this.openAction = null;\n    this.pdfa = null;\n    this.producer = null;\n    this.renderPolicy = null;\n    this.scriptModel = null;\n    this.silentPrint = null;\n    this.submitFormat = null;\n    this.tagged = null;\n    this.version = null;\n    this.viewerPreferences = null;\n    this.xdc = null;\n  }\n}\n\nclass Pdfa extends XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"pdfa\", /* hasChildren = */ true);\n    this.amd = null;\n    this.conformance = null;\n    this.includeXDPContent = null;\n    this.part = null;\n  }\n}\n\nclass Permissions extends XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"permissions\", /* hasChildren = */ true);\n    this.accessibleContent = null;\n    this.change = null;\n    this.contentCopy = null;\n    this.documentAssembly = null;\n    this.formFieldFilling = null;\n    this.modifyAnnots = null;\n    this.plaintextMetadata = null;\n    this.print = null;\n    this.printHighQuality = null;\n  }\n}\n\nclass PickTrayByPDFSize extends Option01 {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"pickTrayByPDFSize\");\n  }\n}\n\nclass Picture extends StringObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"picture\");\n  }\n\n  // TODO: check the validity of the picture clause.\n  // See page 1150 in the spec.\n}\n\nclass PlaintextMetadata extends Option01 {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"plaintextMetadata\");\n  }\n}\n\nclass Presence extends OptionObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"presence\", [\n      \"preserve\",\n      \"dissolve\",\n      \"dissolveStructure\",\n      \"ignore\",\n      \"remove\",\n    ]);\n  }\n}\n\nclass Present extends XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"present\", /* hasChildren = */ true);\n    this.behaviorOverride = null;\n    this.cache = null;\n    this.common = null;\n    this.copies = null;\n    this.destination = null;\n    this.incrementalMerge = null;\n    this.layout = null;\n    this.output = null;\n    this.overprint = null;\n    this.pagination = null;\n    this.paginationOverride = null;\n    this.script = null;\n    this.validate = null;\n    this.xdp = null;\n    this.driver = new XFAObjectArray();\n    this.labelPrinter = new XFAObjectArray();\n    this.pcl = new XFAObjectArray();\n    this.pdf = new XFAObjectArray();\n    this.ps = new XFAObjectArray();\n    this.submitUrl = new XFAObjectArray();\n    this.webClient = new XFAObjectArray();\n    this.zpl = new XFAObjectArray();\n  }\n}\n\nclass Print extends Option01 {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"print\");\n  }\n}\n\nclass PrintHighQuality extends Option01 {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"printHighQuality\");\n  }\n}\n\nclass PrintScaling extends OptionObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"printScaling\", [\"appdefault\", \"noScaling\"]);\n  }\n}\n\nclass PrinterName extends StringObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"printerName\");\n  }\n}\n\nclass Producer extends StringObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"producer\");\n  }\n}\n\nclass Ps extends XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"ps\", /* hasChildren = */ true);\n    this.name = attributes.name || \"\";\n    this.batchOutput = null;\n    this.fontInfo = null;\n    this.jog = null;\n    this.mediumInfo = null;\n    this.outputBin = null;\n    this.staple = null;\n    this.xdc = null;\n  }\n}\n\nclass Range extends ContentObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"range\");\n  }\n\n  [$finalize]() {\n    this[$content] = this[$content]\n      .trim()\n      .split(/\\s*,\\s*/, 2)\n      .map(range => range.split(\"-\").map(x => parseInt(x.trim(), 10)))\n      .filter(range => range.every(x => !isNaN(x)))\n      .map(range => {\n        if (range.length === 1) {\n          range.push(range[0]);\n        }\n        return range;\n      });\n  }\n}\n\nclass Record extends ContentObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"record\");\n  }\n\n  [$finalize]() {\n    this[$content] = this[$content].trim();\n    const n = parseInt(this[$content], 10);\n    if (!isNaN(n) && n >= 0) {\n      this[$content] = n;\n    }\n  }\n}\n\nclass Relevant extends ContentObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"relevant\");\n  }\n\n  [$finalize]() {\n    this[$content] = this[$content].trim().split(/\\s+/);\n  }\n}\n\nclass Rename extends ContentObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"rename\");\n  }\n\n  [$finalize]() {\n    this[$content] = this[$content].trim();\n    // String must be a XFA name: same as XML one except that there\n    // is no colon.\n    if (\n      this[$content].toLowerCase().startsWith(\"xml\") ||\n      this[$content].match(new RegExp(\"[\\\\p{L}_][\\\\p{L}\\\\d._\\\\p{M}-]*\", \"u\"))\n    ) {\n      warn(\"XFA - Rename: invalid XFA name\");\n    }\n  }\n}\n\nclass RenderPolicy extends OptionObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"renderPolicy\", [\"server\", \"client\"]);\n  }\n}\n\nclass RunScripts extends OptionObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"runScripts\", [\"both\", \"client\", \"none\", \"server\"]);\n  }\n}\n\nclass Script extends XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"script\", /* hasChildren = */ true);\n    this.currentPage = null;\n    this.exclude = null;\n    this.runScripts = null;\n  }\n}\n\nclass ScriptModel extends OptionObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"scriptModel\", [\"XFA\", \"none\"]);\n  }\n}\n\nclass Severity extends OptionObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"severity\", [\n      \"ignore\",\n      \"error\",\n      \"information\",\n      \"trace\",\n      \"warning\",\n    ]);\n  }\n}\n\nclass SilentPrint extends XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"silentPrint\", /* hasChildren = */ true);\n    this.addSilentPrint = null;\n    this.printerName = null;\n  }\n}\n\nclass Staple extends XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"staple\");\n    this.mode = getStringOption(attributes.mode, [\n      \"usePrinterSetting\",\n      \"on\",\n      \"off\",\n    ]);\n  }\n}\n\nclass StartNode extends StringObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"startNode\");\n  }\n}\n\nclass StartPage extends IntegerObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"startPage\", 0, n => true);\n  }\n}\n\nclass SubmitFormat extends OptionObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"submitFormat\", [\n      \"html\",\n      \"delegate\",\n      \"fdf\",\n      \"xml\",\n      \"pdf\",\n    ]);\n  }\n}\n\nclass SubmitUrl extends StringObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"submitUrl\");\n  }\n}\n\nclass SubsetBelow extends IntegerObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"subsetBelow\", 100, n => n >= 0 && n <= 100);\n  }\n}\n\nclass SuppressBanner extends Option01 {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"suppressBanner\");\n  }\n}\n\nclass Tagged extends Option01 {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"tagged\");\n  }\n}\n\nclass Template extends XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"template\", /* hasChildren = */ true);\n    this.base = null;\n    this.relevant = null;\n    this.startPage = null;\n    this.uri = null;\n    this.xsl = null;\n  }\n}\n\nclass Threshold extends OptionObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"threshold\", [\n      \"trace\",\n      \"error\",\n      \"information\",\n      \"warning\",\n    ]);\n  }\n}\n\nclass To extends OptionObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"to\", [\n      \"null\",\n      \"memory\",\n      \"stderr\",\n      \"stdout\",\n      \"system\",\n      \"uri\",\n    ]);\n  }\n}\n\nclass TemplateCache extends XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"templateCache\");\n    this.maxEntries = getInteger({\n      data: attributes.maxEntries,\n      defaultValue: 5,\n      validate: n => n >= 0,\n    });\n  }\n}\n\nclass Trace extends XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"trace\", /* hasChildren = */ true);\n    this.area = new XFAObjectArray();\n  }\n}\n\nclass Transform extends XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"transform\", /* hasChildren = */ true);\n    this.groupParent = null;\n    this.ifEmpty = null;\n    this.nameAttr = null;\n    this.picture = null;\n    this.presence = null;\n    this.rename = null;\n    this.whitespace = null;\n  }\n}\n\nclass Type extends OptionObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"type\", [\n      \"none\",\n      \"ascii85\",\n      \"asciiHex\",\n      \"ccittfax\",\n      \"flate\",\n      \"lzw\",\n      \"runLength\",\n      \"native\",\n      \"xdp\",\n      \"mergedXDP\",\n    ]);\n  }\n}\n\nclass Uri extends StringObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"uri\");\n  }\n}\n\nclass Validate extends OptionObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"validate\", [\n      \"preSubmit\",\n      \"prePrint\",\n      \"preExecute\",\n      \"preSave\",\n    ]);\n  }\n}\n\nclass ValidateApprovalSignatures extends ContentObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"validateApprovalSignatures\");\n  }\n\n  [$finalize]() {\n    this[$content] = this[$content]\n      .trim()\n      .split(/\\s+/)\n      .filter(x => [\"docReady\", \"postSign\"].includes(x));\n  }\n}\n\nclass ValidationMessaging extends OptionObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"validationMessaging\", [\n      \"allMessagesIndividually\",\n      \"allMessagesTogether\",\n      \"firstMessageOnly\",\n      \"noMessages\",\n    ]);\n  }\n}\n\nclass Version extends OptionObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"version\", [\"1.7\", \"1.6\", \"1.5\", \"1.4\", \"1.3\", \"1.2\"]);\n  }\n}\n\nclass VersionControl extends XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"VersionControl\");\n    this.outputBelow = getStringOption(attributes.outputBelow, [\n      \"warn\",\n      \"error\",\n      \"update\",\n    ]);\n    this.sourceAbove = getStringOption(attributes.sourceAbove, [\n      \"warn\",\n      \"error\",\n    ]);\n    this.sourceBelow = getStringOption(attributes.sourceBelow, [\n      \"update\",\n      \"maintain\",\n    ]);\n  }\n}\n\nclass ViewerPreferences extends XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"viewerPreferences\", /* hasChildren = */ true);\n    this.ADBE_JSConsole = null;\n    this.ADBE_JSDebugger = null;\n    this.addViewerPreferences = null;\n    this.duplexOption = null;\n    this.enforce = null;\n    this.numberOfCopies = null;\n    this.pageRange = null;\n    this.pickTrayByPDFSize = null;\n    this.printScaling = null;\n  }\n}\n\nclass WebClient extends XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"webClient\", /* hasChildren = */ true);\n    this.name = attributes.name ? attributes.name.trim() : \"\";\n    this.fontInfo = null;\n    this.xdc = null;\n  }\n}\n\nclass Whitespace extends OptionObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"whitespace\", [\n      \"preserve\",\n      \"ltrim\",\n      \"normalize\",\n      \"rtrim\",\n      \"trim\",\n    ]);\n  }\n}\n\nclass Window extends ContentObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"window\");\n  }\n\n  [$finalize]() {\n    const pair = this[$content]\n      .trim()\n      .split(/\\s*,\\s*/, 2)\n      .map(x => parseInt(x, 10));\n    if (pair.some(x => isNaN(x))) {\n      this[$content] = [0, 0];\n      return;\n    }\n    if (pair.length === 1) {\n      pair.push(pair[0]);\n    }\n    this[$content] = pair;\n  }\n}\n\nclass Xdc extends XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"xdc\", /* hasChildren = */ true);\n    this.uri = new XFAObjectArray();\n    this.xsl = new XFAObjectArray();\n  }\n}\n\nclass Xdp extends XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"xdp\", /* hasChildren = */ true);\n    this.packets = null;\n  }\n}\n\nclass Xsl extends XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"xsl\", /* hasChildren = */ true);\n    this.debug = null;\n    this.uri = null;\n  }\n}\n\nclass Zpl extends XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"zpl\", /* hasChildren = */ true);\n    this.name = attributes.name ? attributes.name.trim() : \"\";\n    this.batchOutput = null;\n    this.flipLabel = null;\n    this.fontInfo = null;\n    this.xdc = null;\n  }\n}\n\nclass ConfigNamespace {\n  static [$buildXFAObject](name, attributes) {\n    if (ConfigNamespace.hasOwnProperty(name)) {\n      return ConfigNamespace[name](attributes);\n    }\n    return undefined;\n  }\n\n  static acrobat(attrs) {\n    return new Acrobat(attrs);\n  }\n\n  static acrobat7(attrs) {\n    return new Acrobat7(attrs);\n  }\n\n  static ADBE_JSConsole(attrs) {\n    return new ADBE_JSConsole(attrs);\n  }\n\n  static ADBE_JSDebugger(attrs) {\n    return new ADBE_JSDebugger(attrs);\n  }\n\n  static addSilentPrint(attrs) {\n    return new AddSilentPrint(attrs);\n  }\n\n  static addViewerPreferences(attrs) {\n    return new AddViewerPreferences(attrs);\n  }\n\n  static adjustData(attrs) {\n    return new AdjustData(attrs);\n  }\n\n  static adobeExtensionLevel(attrs) {\n    return new AdobeExtensionLevel(attrs);\n  }\n\n  static agent(attrs) {\n    return new Agent(attrs);\n  }\n\n  static alwaysEmbed(attrs) {\n    return new AlwaysEmbed(attrs);\n  }\n\n  static amd(attrs) {\n    return new Amd(attrs);\n  }\n\n  static area(attrs) {\n    return new Area(attrs);\n  }\n\n  static attributes(attrs) {\n    return new Attributes(attrs);\n  }\n\n  static autoSave(attrs) {\n    return new AutoSave(attrs);\n  }\n\n  static base(attrs) {\n    return new Base(attrs);\n  }\n\n  static batchOutput(attrs) {\n    return new BatchOutput(attrs);\n  }\n\n  static behaviorOverride(attrs) {\n    return new BehaviorOverride(attrs);\n  }\n\n  static cache(attrs) {\n    return new Cache(attrs);\n  }\n\n  static change(attrs) {\n    return new Change(attrs);\n  }\n\n  static common(attrs) {\n    return new Common(attrs);\n  }\n\n  static compress(attrs) {\n    return new Compress(attrs);\n  }\n\n  static compressLogicalStructure(attrs) {\n    return new CompressLogicalStructure(attrs);\n  }\n\n  static compressObjectStream(attrs) {\n    return new CompressObjectStream(attrs);\n  }\n\n  static compression(attrs) {\n    return new Compression(attrs);\n  }\n\n  static config(attrs) {\n    return new Config(attrs);\n  }\n\n  static conformance(attrs) {\n    return new Conformance(attrs);\n  }\n\n  static contentCopy(attrs) {\n    return new ContentCopy(attrs);\n  }\n\n  static copies(attrs) {\n    return new Copies(attrs);\n  }\n\n  static creator(attrs) {\n    return new Creator(attrs);\n  }\n\n  static currentPage(attrs) {\n    return new CurrentPage(attrs);\n  }\n\n  static data(attrs) {\n    return new Data(attrs);\n  }\n\n  static debug(attrs) {\n    return new Debug(attrs);\n  }\n\n  static defaultTypeface(attrs) {\n    return new DefaultTypeface(attrs);\n  }\n\n  static destination(attrs) {\n    return new Destination(attrs);\n  }\n\n  static documentAssembly(attrs) {\n    return new DocumentAssembly(attrs);\n  }\n\n  static driver(attrs) {\n    return new Driver(attrs);\n  }\n\n  static duplexOption(attrs) {\n    return new DuplexOption(attrs);\n  }\n\n  static dynamicRender(attrs) {\n    return new DynamicRender(attrs);\n  }\n\n  static embed(attrs) {\n    return new Embed(attrs);\n  }\n\n  static encrypt(attrs) {\n    return new Encrypt(attrs);\n  }\n\n  static encryption(attrs) {\n    return new Encryption(attrs);\n  }\n\n  static encryptionLevel(attrs) {\n    return new EncryptionLevel(attrs);\n  }\n\n  static enforce(attrs) {\n    return new Enforce(attrs);\n  }\n\n  static equate(attrs) {\n    return new Equate(attrs);\n  }\n\n  static equateRange(attrs) {\n    return new EquateRange(attrs);\n  }\n\n  static exclude(attrs) {\n    return new Exclude(attrs);\n  }\n\n  static excludeNS(attrs) {\n    return new ExcludeNS(attrs);\n  }\n\n  static flipLabel(attrs) {\n    return new FlipLabel(attrs);\n  }\n\n  static fontInfo(attrs) {\n    return new FontInfo(attrs);\n  }\n\n  static formFieldFilling(attrs) {\n    return new FormFieldFilling(attrs);\n  }\n\n  static groupParent(attrs) {\n    return new GroupParent(attrs);\n  }\n\n  static ifEmpty(attrs) {\n    return new IfEmpty(attrs);\n  }\n\n  static includeXDPContent(attrs) {\n    return new IncludeXDPContent(attrs);\n  }\n\n  static incrementalLoad(attrs) {\n    return new IncrementalLoad(attrs);\n  }\n\n  static incrementalMerge(attrs) {\n    return new IncrementalMerge(attrs);\n  }\n\n  static interactive(attrs) {\n    return new Interactive(attrs);\n  }\n\n  static jog(attrs) {\n    return new Jog(attrs);\n  }\n\n  static labelPrinter(attrs) {\n    return new LabelPrinter(attrs);\n  }\n\n  static layout(attrs) {\n    return new Layout(attrs);\n  }\n\n  static level(attrs) {\n    return new Level(attrs);\n  }\n\n  static linearized(attrs) {\n    return new Linearized(attrs);\n  }\n\n  static locale(attrs) {\n    return new Locale(attrs);\n  }\n\n  static localeSet(attrs) {\n    return new LocaleSet(attrs);\n  }\n\n  static log(attrs) {\n    return new Log(attrs);\n  }\n\n  static map(attrs) {\n    return new MapElement(attrs);\n  }\n\n  static mediumInfo(attrs) {\n    return new MediumInfo(attrs);\n  }\n\n  static message(attrs) {\n    return new Message(attrs);\n  }\n\n  static messaging(attrs) {\n    return new Messaging(attrs);\n  }\n\n  static mode(attrs) {\n    return new Mode(attrs);\n  }\n\n  static modifyAnnots(attrs) {\n    return new ModifyAnnots(attrs);\n  }\n\n  static msgId(attrs) {\n    return new MsgId(attrs);\n  }\n\n  static nameAttr(attrs) {\n    return new NameAttr(attrs);\n  }\n\n  static neverEmbed(attrs) {\n    return new NeverEmbed(attrs);\n  }\n\n  static numberOfCopies(attrs) {\n    return new NumberOfCopies(attrs);\n  }\n\n  static openAction(attrs) {\n    return new OpenAction(attrs);\n  }\n\n  static output(attrs) {\n    return new Output(attrs);\n  }\n\n  static outputBin(attrs) {\n    return new OutputBin(attrs);\n  }\n\n  static outputXSL(attrs) {\n    return new OutputXSL(attrs);\n  }\n\n  static overprint(attrs) {\n    return new Overprint(attrs);\n  }\n\n  static packets(attrs) {\n    return new Packets(attrs);\n  }\n\n  static pageOffset(attrs) {\n    return new PageOffset(attrs);\n  }\n\n  static pageRange(attrs) {\n    return new PageRange(attrs);\n  }\n\n  static pagination(attrs) {\n    return new Pagination(attrs);\n  }\n\n  static paginationOverride(attrs) {\n    return new PaginationOverride(attrs);\n  }\n\n  static part(attrs) {\n    return new Part(attrs);\n  }\n\n  static pcl(attrs) {\n    return new Pcl(attrs);\n  }\n\n  static pdf(attrs) {\n    return new Pdf(attrs);\n  }\n\n  static pdfa(attrs) {\n    return new Pdfa(attrs);\n  }\n\n  static permissions(attrs) {\n    return new Permissions(attrs);\n  }\n\n  static pickTrayByPDFSize(attrs) {\n    return new PickTrayByPDFSize(attrs);\n  }\n\n  static picture(attrs) {\n    return new Picture(attrs);\n  }\n\n  static plaintextMetadata(attrs) {\n    return new PlaintextMetadata(attrs);\n  }\n\n  static presence(attrs) {\n    return new Presence(attrs);\n  }\n\n  static present(attrs) {\n    return new Present(attrs);\n  }\n\n  static print(attrs) {\n    return new Print(attrs);\n  }\n\n  static printHighQuality(attrs) {\n    return new PrintHighQuality(attrs);\n  }\n\n  static printScaling(attrs) {\n    return new PrintScaling(attrs);\n  }\n\n  static printerName(attrs) {\n    return new PrinterName(attrs);\n  }\n\n  static producer(attrs) {\n    return new Producer(attrs);\n  }\n\n  static ps(attrs) {\n    return new Ps(attrs);\n  }\n\n  static range(attrs) {\n    return new Range(attrs);\n  }\n\n  static record(attrs) {\n    return new Record(attrs);\n  }\n\n  static relevant(attrs) {\n    return new Relevant(attrs);\n  }\n\n  static rename(attrs) {\n    return new Rename(attrs);\n  }\n\n  static renderPolicy(attrs) {\n    return new RenderPolicy(attrs);\n  }\n\n  static runScripts(attrs) {\n    return new RunScripts(attrs);\n  }\n\n  static script(attrs) {\n    return new Script(attrs);\n  }\n\n  static scriptModel(attrs) {\n    return new ScriptModel(attrs);\n  }\n\n  static severity(attrs) {\n    return new Severity(attrs);\n  }\n\n  static silentPrint(attrs) {\n    return new SilentPrint(attrs);\n  }\n\n  static staple(attrs) {\n    return new Staple(attrs);\n  }\n\n  static startNode(attrs) {\n    return new StartNode(attrs);\n  }\n\n  static startPage(attrs) {\n    return new StartPage(attrs);\n  }\n\n  static submitFormat(attrs) {\n    return new SubmitFormat(attrs);\n  }\n\n  static submitUrl(attrs) {\n    return new SubmitUrl(attrs);\n  }\n\n  static subsetBelow(attrs) {\n    return new SubsetBelow(attrs);\n  }\n\n  static suppressBanner(attrs) {\n    return new SuppressBanner(attrs);\n  }\n\n  static tagged(attrs) {\n    return new Tagged(attrs);\n  }\n\n  static template(attrs) {\n    return new Template(attrs);\n  }\n\n  static templateCache(attrs) {\n    return new TemplateCache(attrs);\n  }\n\n  static threshold(attrs) {\n    return new Threshold(attrs);\n  }\n\n  static to(attrs) {\n    return new To(attrs);\n  }\n\n  static trace(attrs) {\n    return new Trace(attrs);\n  }\n\n  static transform(attrs) {\n    return new Transform(attrs);\n  }\n\n  static type(attrs) {\n    return new Type(attrs);\n  }\n\n  static uri(attrs) {\n    return new Uri(attrs);\n  }\n\n  static validate(attrs) {\n    return new Validate(attrs);\n  }\n\n  static validateApprovalSignatures(attrs) {\n    return new ValidateApprovalSignatures(attrs);\n  }\n\n  static validationMessaging(attrs) {\n    return new ValidationMessaging(attrs);\n  }\n\n  static version(attrs) {\n    return new Version(attrs);\n  }\n\n  static versionControl(attrs) {\n    return new VersionControl(attrs);\n  }\n\n  static viewerPreferences(attrs) {\n    return new ViewerPreferences(attrs);\n  }\n\n  static webClient(attrs) {\n    return new WebClient(attrs);\n  }\n\n  static whitespace(attrs) {\n    return new Whitespace(attrs);\n  }\n\n  static window(attrs) {\n    return new Window(attrs);\n  }\n\n  static xdc(attrs) {\n    return new Xdc(attrs);\n  }\n\n  static xdp(attrs) {\n    return new Xdp(attrs);\n  }\n\n  static xsl(attrs) {\n    return new Xsl(attrs);\n  }\n\n  static zpl(attrs) {\n    return new Zpl(attrs);\n  }\n}\n\nexport { ConfigNamespace };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { $buildXFAObject, NamespaceIds } from \"./namespaces.js\";\nimport { StringObject, XFAObject, XFAObjectArray } from \"./xfa_object.js\";\n\nconst CONNECTION_SET_NS_ID = NamespaceIds.connectionSet.id;\n\nclass ConnectionSet extends XFAObject {\n  constructor(attributes) {\n    super(CONNECTION_SET_NS_ID, \"connectionSet\", /* hasChildren = */ true);\n    this.wsdlConnection = new XFAObjectArray();\n    this.xmlConnection = new XFAObjectArray();\n    this.xsdConnection = new XFAObjectArray();\n  }\n}\n\nclass EffectiveInputPolicy extends XFAObject {\n  constructor(attributes) {\n    super(CONNECTION_SET_NS_ID, \"effectiveInputPolicy\");\n    this.id = attributes.id || \"\";\n    this.name = attributes.name || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n  }\n}\n\nclass EffectiveOutputPolicy extends XFAObject {\n  constructor(attributes) {\n    super(CONNECTION_SET_NS_ID, \"effectiveOutputPolicy\");\n    this.id = attributes.id || \"\";\n    this.name = attributes.name || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n  }\n}\n\nclass Operation extends StringObject {\n  constructor(attributes) {\n    super(CONNECTION_SET_NS_ID, \"operation\");\n    this.id = attributes.id || \"\";\n    this.input = attributes.input || \"\";\n    this.name = attributes.name || \"\";\n    this.output = attributes.output || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n  }\n}\n\nclass RootElement extends StringObject {\n  constructor(attributes) {\n    super(CONNECTION_SET_NS_ID, \"rootElement\");\n    this.id = attributes.id || \"\";\n    this.name = attributes.name || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n  }\n}\n\nclass SoapAction extends StringObject {\n  constructor(attributes) {\n    super(CONNECTION_SET_NS_ID, \"soapAction\");\n    this.id = attributes.id || \"\";\n    this.name = attributes.name || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n  }\n}\n\nclass SoapAddress extends StringObject {\n  constructor(attributes) {\n    super(CONNECTION_SET_NS_ID, \"soapAddress\");\n    this.id = attributes.id || \"\";\n    this.name = attributes.name || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n  }\n}\n\nclass Uri extends StringObject {\n  constructor(attributes) {\n    super(CONNECTION_SET_NS_ID, \"uri\");\n    this.id = attributes.id || \"\";\n    this.name = attributes.name || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n  }\n}\n\nclass WsdlAddress extends StringObject {\n  constructor(attributes) {\n    super(CONNECTION_SET_NS_ID, \"wsdlAddress\");\n    this.id = attributes.id || \"\";\n    this.name = attributes.name || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n  }\n}\n\nclass WsdlConnection extends XFAObject {\n  constructor(attributes) {\n    super(CONNECTION_SET_NS_ID, \"wsdlConnection\", /* hasChildren = */ true);\n    this.dataDescription = attributes.dataDescription || \"\";\n    this.name = attributes.name || \"\";\n    this.effectiveInputPolicy = null;\n    this.effectiveOutputPolicy = null;\n    this.operation = null;\n    this.soapAction = null;\n    this.soapAddress = null;\n    this.wsdlAddress = null;\n  }\n}\n\nclass XmlConnection extends XFAObject {\n  constructor(attributes) {\n    super(CONNECTION_SET_NS_ID, \"xmlConnection\", /* hasChildren = */ true);\n    this.dataDescription = attributes.dataDescription || \"\";\n    this.name = attributes.name || \"\";\n    this.uri = null;\n  }\n}\n\nclass XsdConnection extends XFAObject {\n  constructor(attributes) {\n    super(CONNECTION_SET_NS_ID, \"xsdConnection\", /* hasChildren = */ true);\n    this.dataDescription = attributes.dataDescription || \"\";\n    this.name = attributes.name || \"\";\n    this.rootElement = null;\n    this.uri = null;\n  }\n}\n\nclass ConnectionSetNamespace {\n  static [$buildXFAObject](name, attributes) {\n    if (ConnectionSetNamespace.hasOwnProperty(name)) {\n      return ConnectionSetNamespace[name](attributes);\n    }\n    return undefined;\n  }\n\n  static connectionSet(attrs) {\n    return new ConnectionSet(attrs);\n  }\n\n  static effectiveInputPolicy(attrs) {\n    return new EffectiveInputPolicy(attrs);\n  }\n\n  static effectiveOutputPolicy(attrs) {\n    return new EffectiveOutputPolicy(attrs);\n  }\n\n  static operation(attrs) {\n    return new Operation(attrs);\n  }\n\n  static rootElement(attrs) {\n    return new RootElement(attrs);\n  }\n\n  static soapAction(attrs) {\n    return new SoapAction(attrs);\n  }\n\n  static soapAddress(attrs) {\n    return new SoapAddress(attrs);\n  }\n\n  static uri(attrs) {\n    return new Uri(attrs);\n  }\n\n  static wsdlAddress(attrs) {\n    return new WsdlAddress(attrs);\n  }\n\n  static wsdlConnection(attrs) {\n    return new WsdlConnection(attrs);\n  }\n\n  static xmlConnection(attrs) {\n    return new XmlConnection(attrs);\n  }\n\n  static xsdConnection(attrs) {\n    return new XsdConnection(attrs);\n  }\n}\n\nexport { ConnectionSetNamespace };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n  $appendChild,\n  $isNsAgnostic,\n  $namespaceId,\n  $nodeName,\n  $onChild,\n  XFAObject,\n  XmlObject,\n} from \"./xfa_object.js\";\nimport { $buildXFAObject, NamespaceIds } from \"./namespaces.js\";\n\nconst DATASETS_NS_ID = NamespaceIds.datasets.id;\n\nclass Data extends XmlObject {\n  constructor(attributes) {\n    super(DATASETS_NS_ID, \"data\", attributes);\n  }\n\n  [$isNsAgnostic]() {\n    return true;\n  }\n}\n\nclass Datasets extends XFAObject {\n  constructor(attributes) {\n    super(DATASETS_NS_ID, \"datasets\", /* hasChildren = */ true);\n    this.data = null;\n    this.Signature = null;\n  }\n\n  [$onChild](child) {\n    const name = child[$nodeName];\n    if (\n      (name === \"data\" && child[$namespaceId] === DATASETS_NS_ID) ||\n      (name === \"Signature\" &&\n        child[$namespaceId] === NamespaceIds.signature.id)\n    ) {\n      this[name] = child;\n    }\n    this[$appendChild](child);\n  }\n}\n\nclass DatasetsNamespace {\n  static [$buildXFAObject](name, attributes) {\n    if (DatasetsNamespace.hasOwnProperty(name)) {\n      return DatasetsNamespace[name](attributes);\n    }\n    return undefined;\n  }\n\n  static datasets(attributes) {\n    return new Datasets(attributes);\n  }\n\n  static data(attributes) {\n    return new Data(attributes);\n  }\n}\n\nexport { DatasetsNamespace };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { $buildXFAObject, NamespaceIds } from \"./namespaces.js\";\nimport {\n  ContentObject,\n  StringObject,\n  XFAObject,\n  XFAObjectArray,\n} from \"./xfa_object.js\";\nimport { getInteger, getStringOption } from \"./utils.js\";\n\nconst LOCALE_SET_NS_ID = NamespaceIds.localeSet.id;\n\nclass CalendarSymbols extends XFAObject {\n  constructor(attributes) {\n    super(LOCALE_SET_NS_ID, \"calendarSymbols\", /* hasChildren = */ true);\n    this.name = \"gregorian\";\n    this.dayNames = new XFAObjectArray(2);\n    this.eraNames = null;\n    this.meridiemNames = null;\n    this.monthNames = new XFAObjectArray(2);\n  }\n}\n\nclass CurrencySymbol extends StringObject {\n  constructor(attributes) {\n    super(LOCALE_SET_NS_ID, \"currencySymbol\");\n    this.name = getStringOption(attributes.name, [\n      \"symbol\",\n      \"isoname\",\n      \"decimal\",\n    ]);\n  }\n}\n\nclass CurrencySymbols extends XFAObject {\n  constructor(attributes) {\n    super(LOCALE_SET_NS_ID, \"currencySymbols\", /* hasChildren = */ true);\n    this.currencySymbol = new XFAObjectArray(3);\n  }\n}\n\nclass DatePattern extends StringObject {\n  constructor(attributes) {\n    super(LOCALE_SET_NS_ID, \"datePattern\");\n    this.name = getStringOption(attributes.name, [\n      \"full\",\n      \"long\",\n      \"med\",\n      \"short\",\n    ]);\n  }\n}\n\nclass DatePatterns extends XFAObject {\n  constructor(attributes) {\n    super(LOCALE_SET_NS_ID, \"datePatterns\", /* hasChildren = */ true);\n    this.datePattern = new XFAObjectArray(4);\n  }\n}\n\nclass DateTimeSymbols extends ContentObject {\n  // TODO: spec unclear about the format of the array.\n\n  constructor(attributes) {\n    super(LOCALE_SET_NS_ID, \"dateTimeSymbols\");\n  }\n}\n\nclass Day extends StringObject {\n  constructor(attributes) {\n    super(LOCALE_SET_NS_ID, \"day\");\n  }\n}\n\nclass DayNames extends XFAObject {\n  constructor(attributes) {\n    super(LOCALE_SET_NS_ID, \"dayNames\", /* hasChildren = */ true);\n    this.abbr = getInteger({\n      data: attributes.abbr,\n      defaultValue: 0,\n      validate: x => x === 1,\n    });\n    this.day = new XFAObjectArray(7);\n  }\n}\n\nclass Era extends StringObject {\n  constructor(attributes) {\n    super(LOCALE_SET_NS_ID, \"era\");\n  }\n}\n\nclass EraNames extends XFAObject {\n  constructor(attributes) {\n    super(LOCALE_SET_NS_ID, \"eraNames\", /* hasChildren = */ true);\n    this.era = new XFAObjectArray(2);\n  }\n}\n\nclass Locale extends XFAObject {\n  constructor(attributes) {\n    super(LOCALE_SET_NS_ID, \"locale\", /* hasChildren = */ true);\n    this.desc = attributes.desc || \"\";\n    this.name = \"isoname\";\n    this.calendarSymbols = null;\n    this.currencySymbols = null;\n    this.datePatterns = null;\n    this.dateTimeSymbols = null;\n    this.numberPatterns = null;\n    this.numberSymbols = null;\n    this.timePatterns = null;\n    this.typeFaces = null;\n  }\n}\n\nclass LocaleSet extends XFAObject {\n  constructor(attributes) {\n    super(LOCALE_SET_NS_ID, \"localeSet\", /* hasChildren = */ true);\n    this.locale = new XFAObjectArray();\n  }\n}\n\nclass Meridiem extends StringObject {\n  constructor(attributes) {\n    super(LOCALE_SET_NS_ID, \"meridiem\");\n  }\n}\n\nclass MeridiemNames extends XFAObject {\n  constructor(attributes) {\n    super(LOCALE_SET_NS_ID, \"meridiemNames\", /* hasChildren = */ true);\n    this.meridiem = new XFAObjectArray(2);\n  }\n}\n\nclass Month extends StringObject {\n  constructor(attributes) {\n    super(LOCALE_SET_NS_ID, \"month\");\n  }\n}\n\nclass MonthNames extends XFAObject {\n  constructor(attributes) {\n    super(LOCALE_SET_NS_ID, \"monthNames\", /* hasChildren = */ true);\n    this.abbr = getInteger({\n      data: attributes.abbr,\n      defaultValue: 0,\n      validate: x => x === 1,\n    });\n    this.month = new XFAObjectArray(12);\n  }\n}\n\nclass NumberPattern extends StringObject {\n  constructor(attributes) {\n    super(LOCALE_SET_NS_ID, \"numberPattern\");\n    this.name = getStringOption(attributes.name, [\n      \"full\",\n      \"long\",\n      \"med\",\n      \"short\",\n    ]);\n  }\n}\n\nclass NumberPatterns extends XFAObject {\n  constructor(attributes) {\n    super(LOCALE_SET_NS_ID, \"numberPatterns\", /* hasChildren = */ true);\n    this.numberPattern = new XFAObjectArray(4);\n  }\n}\n\nclass NumberSymbol extends StringObject {\n  constructor(attributes) {\n    super(LOCALE_SET_NS_ID, \"numberSymbol\");\n    this.name = getStringOption(attributes.name, [\n      \"decimal\",\n      \"grouping\",\n      \"percent\",\n      \"minus\",\n      \"zero\",\n    ]);\n  }\n}\n\nclass NumberSymbols extends XFAObject {\n  constructor(attributes) {\n    super(LOCALE_SET_NS_ID, \"numberSymbols\", /* hasChildren = */ true);\n    this.numberSymbol = new XFAObjectArray(5);\n  }\n}\n\nclass TimePattern extends StringObject {\n  constructor(attributes) {\n    super(LOCALE_SET_NS_ID, \"timePattern\");\n    this.name = getStringOption(attributes.name, [\n      \"full\",\n      \"long\",\n      \"med\",\n      \"short\",\n    ]);\n  }\n}\n\nclass TimePatterns extends XFAObject {\n  constructor(attributes) {\n    super(LOCALE_SET_NS_ID, \"timePatterns\", /* hasChildren = */ true);\n    this.timePattern = new XFAObjectArray(4);\n  }\n}\n\nclass TypeFace extends XFAObject {\n  constructor(attributes) {\n    super(LOCALE_SET_NS_ID, \"typeFace\", /* hasChildren = */ true);\n    this.name = attributes.name | \"\";\n  }\n}\n\nclass TypeFaces extends XFAObject {\n  constructor(attributes) {\n    super(LOCALE_SET_NS_ID, \"typeFaces\", /* hasChildren = */ true);\n    this.typeFace = new XFAObjectArray();\n  }\n}\n\nclass LocaleSetNamespace {\n  static [$buildXFAObject](name, attributes) {\n    if (LocaleSetNamespace.hasOwnProperty(name)) {\n      return LocaleSetNamespace[name](attributes);\n    }\n    return undefined;\n  }\n\n  static calendarSymbols(attrs) {\n    return new CalendarSymbols(attrs);\n  }\n\n  static currencySymbol(attrs) {\n    return new CurrencySymbol(attrs);\n  }\n\n  static currencySymbols(attrs) {\n    return new CurrencySymbols(attrs);\n  }\n\n  static datePattern(attrs) {\n    return new DatePattern(attrs);\n  }\n\n  static datePatterns(attrs) {\n    return new DatePatterns(attrs);\n  }\n\n  static dateTimeSymbols(attrs) {\n    return new DateTimeSymbols(attrs);\n  }\n\n  static day(attrs) {\n    return new Day(attrs);\n  }\n\n  static dayNames(attrs) {\n    return new DayNames(attrs);\n  }\n\n  static era(attrs) {\n    return new Era(attrs);\n  }\n\n  static eraNames(attrs) {\n    return new EraNames(attrs);\n  }\n\n  static locale(attrs) {\n    return new Locale(attrs);\n  }\n\n  static localeSet(attrs) {\n    return new LocaleSet(attrs);\n  }\n\n  static meridiem(attrs) {\n    return new Meridiem(attrs);\n  }\n\n  static meridiemNames(attrs) {\n    return new MeridiemNames(attrs);\n  }\n\n  static month(attrs) {\n    return new Month(attrs);\n  }\n\n  static monthNames(attrs) {\n    return new MonthNames(attrs);\n  }\n\n  static numberPattern(attrs) {\n    return new NumberPattern(attrs);\n  }\n\n  static numberPatterns(attrs) {\n    return new NumberPatterns(attrs);\n  }\n\n  static numberSymbol(attrs) {\n    return new NumberSymbol(attrs);\n  }\n\n  static numberSymbols(attrs) {\n    return new NumberSymbols(attrs);\n  }\n\n  static timePattern(attrs) {\n    return new TimePattern(attrs);\n  }\n\n  static timePatterns(attrs) {\n    return new TimePatterns(attrs);\n  }\n\n  static typeFace(attrs) {\n    return new TypeFace(attrs);\n  }\n\n  static typeFaces(attrs) {\n    return new TypeFaces(attrs);\n  }\n}\n\nexport { LocaleSetNamespace };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { $buildXFAObject, NamespaceIds } from \"./namespaces.js\";\nimport { XFAObject } from \"./xfa_object.js\";\n\nconst SIGNATURE_NS_ID = NamespaceIds.signature.id;\n\nclass Signature extends XFAObject {\n  constructor(attributes) {\n    super(SIGNATURE_NS_ID, \"signature\", /* hasChildren = */ true);\n  }\n}\n\nclass SignatureNamespace {\n  static [$buildXFAObject](name, attributes) {\n    if (SignatureNamespace.hasOwnProperty(name)) {\n      return SignatureNamespace[name](attributes);\n    }\n    return undefined;\n  }\n\n  static signature(attributes) {\n    return new Signature(attributes);\n  }\n}\n\nexport { SignatureNamespace };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { $buildXFAObject, NamespaceIds } from \"./namespaces.js\";\nimport { XFAObject } from \"./xfa_object.js\";\n\nconst STYLESHEET_NS_ID = NamespaceIds.stylesheet.id;\n\nclass Stylesheet extends XFAObject {\n  constructor(attributes) {\n    super(STYLESHEET_NS_ID, \"stylesheet\", /* hasChildren = */ true);\n  }\n}\n\nclass StylesheetNamespace {\n  static [$buildXFAObject](name, attributes) {\n    if (StylesheetNamespace.hasOwnProperty(name)) {\n      return StylesheetNamespace[name](attributes);\n    }\n    return undefined;\n  }\n\n  static stylesheet(attributes) {\n    return new Stylesheet(attributes);\n  }\n}\n\nexport { StylesheetNamespace };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { $buildXFAObject, NamespaceIds } from \"./namespaces.js\";\nimport {\n  $namespaceId,\n  $nodeName,\n  $onChildCheck,\n  XFAObject,\n  XFAObjectArray,\n} from \"./xfa_object.js\";\n\nconst XDP_NS_ID = NamespaceIds.xdp.id;\n\nclass Xdp extends XFAObject {\n  constructor(attributes) {\n    super(XDP_NS_ID, \"xdp\", /* hasChildren = */ true);\n    this.uuid = attributes.uuid || \"\";\n    this.timeStamp = attributes.timeStamp || \"\";\n    this.config = null;\n    this.connectionSet = null;\n    this.datasets = null;\n    this.localeSet = null;\n    this.stylesheet = new XFAObjectArray();\n    this.template = null;\n  }\n\n  [$onChildCheck](child) {\n    const ns = NamespaceIds[child[$nodeName]];\n    return ns && child[$namespaceId] === ns.id;\n  }\n}\n\nclass XdpNamespace {\n  static [$buildXFAObject](name, attributes) {\n    if (XdpNamespace.hasOwnProperty(name)) {\n      return XdpNamespace[name](attributes);\n    }\n    return undefined;\n  }\n\n  static xdp(attributes) {\n    return new Xdp(attributes);\n  }\n}\n\nexport { XdpNamespace };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n  $acceptWhitespace,\n  $childrenToHTML,\n  $clean,\n  $content,\n  $extra,\n  $getChildren,\n  $getParent,\n  $globalData,\n  $nodeName,\n  $onText,\n  $pushGlyphs,\n  $text,\n  $toHTML,\n  XmlObject,\n} from \"./xfa_object.js\";\nimport { $buildXFAObject, NamespaceIds } from \"./namespaces.js\";\nimport {\n  fixTextIndent,\n  fixURL,\n  measureToString,\n  setFontFamily,\n} from \"./html_utils.js\";\nimport { getMeasurement, HTMLResult, stripQuotes } from \"./utils.js\";\n\nconst XHTML_NS_ID = NamespaceIds.xhtml.id;\nconst $richText = Symbol();\n\nconst VALID_STYLES = new Set([\n  \"color\",\n  \"font\",\n  \"font-family\",\n  \"font-size\",\n  \"font-stretch\",\n  \"font-style\",\n  \"font-weight\",\n  \"margin\",\n  \"margin-bottom\",\n  \"margin-left\",\n  \"margin-right\",\n  \"margin-top\",\n  \"letter-spacing\",\n  \"line-height\",\n  \"orphans\",\n  \"page-break-after\",\n  \"page-break-before\",\n  \"page-break-inside\",\n  \"tab-interval\",\n  \"tab-stop\",\n  \"text-align\",\n  \"text-decoration\",\n  \"text-indent\",\n  \"vertical-align\",\n  \"widows\",\n  \"kerning-mode\",\n  \"xfa-font-horizontal-scale\",\n  \"xfa-font-vertical-scale\",\n  \"xfa-spacerun\",\n  \"xfa-tab-stops\",\n]);\n\nconst StyleMapping = new Map([\n  [\"page-break-after\", \"breakAfter\"],\n  [\"page-break-before\", \"breakBefore\"],\n  [\"page-break-inside\", \"breakInside\"],\n  [\"kerning-mode\", value => (value === \"none\" ? \"none\" : \"normal\")],\n  [\n    \"xfa-font-horizontal-scale\",\n    value =>\n      `scaleX(${Math.max(0, Math.min(parseInt(value) / 100)).toFixed(2)})`,\n  ],\n  [\n    \"xfa-font-vertical-scale\",\n    value =>\n      `scaleY(${Math.max(0, Math.min(parseInt(value) / 100)).toFixed(2)})`,\n  ],\n  [\"xfa-spacerun\", \"\"],\n  [\"xfa-tab-stops\", \"\"],\n  [\n    \"font-size\",\n    (value, original) => {\n      value = original.fontSize = getMeasurement(value);\n      return measureToString(0.99 * value);\n    },\n  ],\n  [\"letter-spacing\", value => measureToString(getMeasurement(value))],\n  [\"line-height\", value => measureToString(getMeasurement(value))],\n  [\"margin\", value => measureToString(getMeasurement(value))],\n  [\"margin-bottom\", value => measureToString(getMeasurement(value))],\n  [\"margin-left\", value => measureToString(getMeasurement(value))],\n  [\"margin-right\", value => measureToString(getMeasurement(value))],\n  [\"margin-top\", value => measureToString(getMeasurement(value))],\n  [\"text-indent\", value => measureToString(getMeasurement(value))],\n  [\"font-family\", value => value],\n  [\"vertical-align\", value => measureToString(getMeasurement(value))],\n]);\n\nconst spacesRegExp = /\\s+/g;\nconst crlfRegExp = /[\\r\\n]+/g;\nconst crlfForRichTextRegExp = /\\r\\n?/g;\n\nfunction mapStyle(styleStr, node, richText) {\n  const style = Object.create(null);\n  if (!styleStr) {\n    return style;\n  }\n  const original = Object.create(null);\n  for (const [key, value] of styleStr.split(\";\").map(s => s.split(\":\", 2))) {\n    const mapping = StyleMapping.get(key);\n    if (mapping === \"\") {\n      continue;\n    }\n    let newValue = value;\n    if (mapping) {\n      if (typeof mapping === \"string\") {\n        newValue = mapping;\n      } else {\n        newValue = mapping(value, original);\n      }\n    }\n    if (key.endsWith(\"scale\")) {\n      if (style.transform) {\n        style.transform = `${style[key]} ${newValue}`;\n      } else {\n        style.transform = newValue;\n      }\n    } else {\n      style[key.replaceAll(/-([a-zA-Z])/g, (_, x) => x.toUpperCase())] =\n        newValue;\n    }\n  }\n\n  if (style.fontFamily) {\n    setFontFamily(\n      {\n        typeface: style.fontFamily,\n        weight: style.fontWeight || \"normal\",\n        posture: style.fontStyle || \"normal\",\n        size: original.fontSize || 0,\n      },\n      node,\n      node[$globalData].fontFinder,\n      style\n    );\n  }\n\n  if (\n    richText &&\n    style.verticalAlign &&\n    style.verticalAlign !== \"0px\" &&\n    style.fontSize\n  ) {\n    // A non-zero verticalAlign means that we've a sub/super-script and\n    // consequently the font size must be decreased.\n    // https://www.adobe.com/content/dam/acom/en/devnet/pdf/pdfs/PDF32000_2008.pdf#G11.2097514\n    // And the two following factors to position the scripts have been\n    // found here:\n    // https://en.wikipedia.org/wiki/Subscript_and_superscript#Desktop_publishing\n    const SUB_SUPER_SCRIPT_FACTOR = 0.583;\n    const VERTICAL_FACTOR = 0.333;\n    const fontSize = getMeasurement(style.fontSize);\n    style.fontSize = measureToString(fontSize * SUB_SUPER_SCRIPT_FACTOR);\n    style.verticalAlign = measureToString(\n      Math.sign(getMeasurement(style.verticalAlign)) *\n        fontSize *\n        VERTICAL_FACTOR\n    );\n  }\n\n  fixTextIndent(style);\n  return style;\n}\n\nfunction checkStyle(node) {\n  if (!node.style) {\n    return \"\";\n  }\n\n  // Remove any non-allowed keys.\n  return node.style\n    .trim()\n    .split(/\\s*;\\s*/)\n    .filter(s => !!s)\n    .map(s => s.split(/\\s*:\\s*/, 2))\n    .filter(([key, value]) => {\n      if (key === \"font-family\") {\n        node[$globalData].usedTypefaces.add(value);\n      }\n      return VALID_STYLES.has(key);\n    })\n    .map(kv => kv.join(\":\"))\n    .join(\";\");\n}\n\nconst NoWhites = new Set([\"body\", \"html\"]);\n\nclass XhtmlObject extends XmlObject {\n  constructor(attributes, name) {\n    super(XHTML_NS_ID, name);\n    this[$richText] = false;\n    this.style = attributes.style || \"\";\n  }\n\n  [$clean](builder) {\n    super[$clean](builder);\n    this.style = checkStyle(this);\n  }\n\n  [$acceptWhitespace]() {\n    return !NoWhites.has(this[$nodeName]);\n  }\n\n  [$onText](str, richText = false) {\n    if (!richText) {\n      str = str.replace(crlfRegExp, \"\");\n      if (!this.style.includes(\"xfa-spacerun:yes\")) {\n        str = str.replace(spacesRegExp, \" \");\n      }\n    } else {\n      this[$richText] = true;\n    }\n\n    if (str) {\n      this[$content] += str;\n    }\n  }\n\n  [$pushGlyphs](measure, mustPop = true) {\n    const xfaFont = Object.create(null);\n    const margin = {\n      top: NaN,\n      bottom: NaN,\n      left: NaN,\n      right: NaN,\n    };\n    let lineHeight = null;\n    for (const [key, value] of this.style\n      .split(\";\")\n      .map(s => s.split(\":\", 2))) {\n      switch (key) {\n        case \"font-family\":\n          xfaFont.typeface = stripQuotes(value);\n          break;\n        case \"font-size\":\n          xfaFont.size = getMeasurement(value);\n          break;\n        case \"font-weight\":\n          xfaFont.weight = value;\n          break;\n        case \"font-style\":\n          xfaFont.posture = value;\n          break;\n        case \"letter-spacing\":\n          xfaFont.letterSpacing = getMeasurement(value);\n          break;\n        case \"margin\":\n          const values = value.split(/ \\t/).map(x => getMeasurement(x));\n          switch (values.length) {\n            case 1:\n              margin.top =\n                margin.bottom =\n                margin.left =\n                margin.right =\n                  values[0];\n              break;\n            case 2:\n              margin.top = margin.bottom = values[0];\n              margin.left = margin.right = values[1];\n              break;\n            case 3:\n              margin.top = values[0];\n              margin.bottom = values[2];\n              margin.left = margin.right = values[1];\n              break;\n            case 4:\n              margin.top = values[0];\n              margin.left = values[1];\n              margin.bottom = values[2];\n              margin.right = values[3];\n              break;\n          }\n          break;\n        case \"margin-top\":\n          margin.top = getMeasurement(value);\n          break;\n        case \"margin-bottom\":\n          margin.bottom = getMeasurement(value);\n          break;\n        case \"margin-left\":\n          margin.left = getMeasurement(value);\n          break;\n        case \"margin-right\":\n          margin.right = getMeasurement(value);\n          break;\n        case \"line-height\":\n          lineHeight = getMeasurement(value);\n          break;\n      }\n    }\n\n    measure.pushData(xfaFont, margin, lineHeight);\n\n    if (this[$content]) {\n      measure.addString(this[$content]);\n    } else {\n      for (const child of this[$getChildren]()) {\n        if (child[$nodeName] === \"#text\") {\n          measure.addString(child[$content]);\n          continue;\n        }\n        child[$pushGlyphs](measure);\n      }\n    }\n\n    if (mustPop) {\n      measure.popFont();\n    }\n  }\n\n  [$toHTML](availableSpace) {\n    const children = [];\n    this[$extra] = {\n      children,\n    };\n\n    this[$childrenToHTML]({});\n\n    if (children.length === 0 && !this[$content]) {\n      return HTMLResult.EMPTY;\n    }\n\n    let value;\n    if (this[$richText]) {\n      value = this[$content]\n        ? this[$content].replace(crlfForRichTextRegExp, \"\\n\")\n        : undefined;\n    } else {\n      value = this[$content] || undefined;\n    }\n\n    return HTMLResult.success({\n      name: this[$nodeName],\n      attributes: {\n        href: this.href,\n        style: mapStyle(this.style, this, this[$richText]),\n      },\n      children,\n      value,\n    });\n  }\n}\n\nclass A extends XhtmlObject {\n  constructor(attributes) {\n    super(attributes, \"a\");\n    this.href = fixURL(attributes.href) || \"\";\n  }\n}\n\nclass B extends XhtmlObject {\n  constructor(attributes) {\n    super(attributes, \"b\");\n  }\n\n  [$pushGlyphs](measure) {\n    measure.pushFont({ weight: \"bold\" });\n    super[$pushGlyphs](measure);\n    measure.popFont();\n  }\n}\n\nclass Body extends XhtmlObject {\n  constructor(attributes) {\n    super(attributes, \"body\");\n  }\n\n  [$toHTML](availableSpace) {\n    const res = super[$toHTML](availableSpace);\n    const { html } = res;\n    if (!html) {\n      return HTMLResult.EMPTY;\n    }\n    html.name = \"div\";\n    html.attributes.class = [\"xfaRich\"];\n    return res;\n  }\n}\n\nclass Br extends XhtmlObject {\n  constructor(attributes) {\n    super(attributes, \"br\");\n  }\n\n  [$text]() {\n    return \"\\n\";\n  }\n\n  [$pushGlyphs](measure) {\n    measure.addString(\"\\n\");\n  }\n\n  [$toHTML](availableSpace) {\n    return HTMLResult.success({\n      name: \"br\",\n    });\n  }\n}\n\nclass Html extends XhtmlObject {\n  constructor(attributes) {\n    super(attributes, \"html\");\n  }\n\n  [$toHTML](availableSpace) {\n    const children = [];\n    this[$extra] = {\n      children,\n    };\n\n    this[$childrenToHTML]({});\n    if (children.length === 0) {\n      return HTMLResult.success({\n        name: \"div\",\n        attributes: {\n          class: [\"xfaRich\"],\n          style: {},\n        },\n        value: this[$content] || \"\",\n      });\n    }\n\n    if (children.length === 1) {\n      const child = children[0];\n      if (child.attributes && child.attributes.class.includes(\"xfaRich\")) {\n        return HTMLResult.success(child);\n      }\n    }\n\n    return HTMLResult.success({\n      name: \"div\",\n      attributes: {\n        class: [\"xfaRich\"],\n        style: {},\n      },\n      children,\n    });\n  }\n}\n\nclass I extends XhtmlObject {\n  constructor(attributes) {\n    super(attributes, \"i\");\n  }\n\n  [$pushGlyphs](measure) {\n    measure.pushFont({ posture: \"italic\" });\n    super[$pushGlyphs](measure);\n    measure.popFont();\n  }\n}\n\nclass Li extends XhtmlObject {\n  constructor(attributes) {\n    super(attributes, \"li\");\n  }\n}\n\nclass Ol extends XhtmlObject {\n  constructor(attributes) {\n    super(attributes, \"ol\");\n  }\n}\n\nclass P extends XhtmlObject {\n  constructor(attributes) {\n    super(attributes, \"p\");\n  }\n\n  [$pushGlyphs](measure) {\n    super[$pushGlyphs](measure, /* mustPop = */ false);\n    measure.addString(\"\\n\");\n    measure.addPara();\n    measure.popFont();\n  }\n\n  [$text]() {\n    const siblings = this[$getParent]()[$getChildren]();\n    if (siblings[siblings.length - 1] === this) {\n      return super[$text]();\n    }\n    return super[$text]() + \"\\n\";\n  }\n}\n\nclass Span extends XhtmlObject {\n  constructor(attributes) {\n    super(attributes, \"span\");\n  }\n}\n\nclass Sub extends XhtmlObject {\n  constructor(attributes) {\n    super(attributes, \"sub\");\n  }\n}\n\nclass Sup extends XhtmlObject {\n  constructor(attributes) {\n    super(attributes, \"sup\");\n  }\n}\n\nclass Ul extends XhtmlObject {\n  constructor(attributes) {\n    super(attributes, \"ul\");\n  }\n}\n\nclass XhtmlNamespace {\n  static [$buildXFAObject](name, attributes) {\n    if (XhtmlNamespace.hasOwnProperty(name)) {\n      return XhtmlNamespace[name](attributes);\n    }\n    return undefined;\n  }\n\n  static a(attributes) {\n    return new A(attributes);\n  }\n\n  static b(attributes) {\n    return new B(attributes);\n  }\n\n  static body(attributes) {\n    return new Body(attributes);\n  }\n\n  static br(attributes) {\n    return new Br(attributes);\n  }\n\n  static html(attributes) {\n    return new Html(attributes);\n  }\n\n  static i(attributes) {\n    return new I(attributes);\n  }\n\n  static li(attributes) {\n    return new Li(attributes);\n  }\n\n  static ol(attributes) {\n    return new Ol(attributes);\n  }\n\n  static p(attributes) {\n    return new P(attributes);\n  }\n\n  static span(attributes) {\n    return new Span(attributes);\n  }\n\n  static sub(attributes) {\n    return new Sub(attributes);\n  }\n\n  static sup(attributes) {\n    return new Sup(attributes);\n  }\n\n  static ul(attributes) {\n    return new Ul(attributes);\n  }\n}\n\nexport { XhtmlNamespace };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { $buildXFAObject } from \"./namespaces.js\";\nimport { XmlObject } from \"./xfa_object.js\";\n\nclass UnknownNamespace {\n  constructor(nsId) {\n    this.namespaceId = nsId;\n  }\n\n  [$buildXFAObject](name, attributes) {\n    return new XmlObject(this.namespaceId, name, attributes);\n  }\n}\n\nexport { UnknownNamespace };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n  assert,\n  bytesToString,\n  FormatError,\n  info,\n  InvalidPDFException,\n  warn,\n} from \"../shared/util.js\";\nimport { CIRCULAR_REF, Cmd, Dict, isCmd, Ref, RefSet } from \"./primitives.js\";\nimport {\n  DocStats,\n  MissingDataException,\n  ParserEOFException,\n  XRefEntryException,\n  XRefParseException,\n} from \"./core_utils.js\";\nimport { Lexer, Parser } from \"./parser.js\";\nimport { BaseStream } from \"./base_stream.js\";\nimport { CipherTransformFactory } from \"./crypto.js\";\n\nclass XRef {\n  constructor(stream, pdfManager) {\n    this.stream = stream;\n    this.pdfManager = pdfManager;\n    this.entries = [];\n    this.xrefstms = Object.create(null);\n    this._cacheMap = new Map(); // Prepare the XRef cache.\n    this._pendingRefs = new RefSet();\n    this.stats = new DocStats(pdfManager.msgHandler);\n    this._newRefNum = null;\n  }\n\n  getNewRef() {\n    if (this._newRefNum === null) {\n      this._newRefNum = this.entries.length;\n    }\n    return Ref.get(this._newRefNum++, 0);\n  }\n\n  resetNewRef() {\n    this._newRefNum = null;\n  }\n\n  setStartXRef(startXRef) {\n    // Store the starting positions of xref tables as we process them\n    // so we can recover from missing data errors\n    this.startXRefQueue = [startXRef];\n  }\n\n  parse(recoveryMode = false) {\n    let trailerDict;\n    if (!recoveryMode) {\n      trailerDict = this.readXRef();\n    } else {\n      warn(\"Indexing all PDF objects\");\n      trailerDict = this.indexObjects();\n    }\n    trailerDict.assignXref(this);\n    this.trailer = trailerDict;\n\n    let encrypt;\n    try {\n      encrypt = trailerDict.get(\"Encrypt\");\n    } catch (ex) {\n      if (ex instanceof MissingDataException) {\n        throw ex;\n      }\n      warn(`XRef.parse - Invalid \"Encrypt\" reference: \"${ex}\".`);\n    }\n    if (encrypt instanceof Dict) {\n      const ids = trailerDict.get(\"ID\");\n      const fileId = ids && ids.length ? ids[0] : \"\";\n      // The 'Encrypt' dictionary itself should not be encrypted, and by\n      // setting `suppressEncryption` we can prevent an infinite loop inside\n      // of `XRef_fetchUncompressed` if the dictionary contains indirect\n      // objects (fixes issue7665.pdf).\n      encrypt.suppressEncryption = true;\n      this.encrypt = new CipherTransformFactory(\n        encrypt,\n        fileId,\n        this.pdfManager.password\n      );\n    }\n\n    // Get the root dictionary (catalog) object, and do some basic validation.\n    let root;\n    try {\n      root = trailerDict.get(\"Root\");\n    } catch (ex) {\n      if (ex instanceof MissingDataException) {\n        throw ex;\n      }\n      warn(`XRef.parse - Invalid \"Root\" reference: \"${ex}\".`);\n    }\n    if (root instanceof Dict) {\n      try {\n        const pages = root.get(\"Pages\");\n        if (pages instanceof Dict) {\n          this.root = root;\n          return;\n        }\n      } catch (ex) {\n        if (ex instanceof MissingDataException) {\n          throw ex;\n        }\n        warn(`XRef.parse - Invalid \"Pages\" reference: \"${ex}\".`);\n      }\n    }\n\n    if (!recoveryMode) {\n      throw new XRefParseException();\n    }\n    // Even recovery failed, there's nothing more we can do here.\n    throw new InvalidPDFException(\"Invalid Root reference.\");\n  }\n\n  processXRefTable(parser) {\n    if (!(\"tableState\" in this)) {\n      // Stores state of the table as we process it so we can resume\n      // from middle of table in case of missing data error\n      this.tableState = {\n        entryNum: 0,\n        streamPos: parser.lexer.stream.pos,\n        parserBuf1: parser.buf1,\n        parserBuf2: parser.buf2,\n      };\n    }\n\n    const obj = this.readXRefTable(parser);\n\n    // Sanity check\n    if (!isCmd(obj, \"trailer\")) {\n      throw new FormatError(\n        \"Invalid XRef table: could not find trailer dictionary\"\n      );\n    }\n    // Read trailer dictionary, e.g.\n    // trailer\n    //    << /Size 22\n    //      /Root 20R\n    //      /Info 10R\n    //      /ID [ <81b14aafa313db63dbd6f981e49f94f4> ]\n    //    >>\n    // The parser goes through the entire stream << ... >> and provides\n    // a getter interface for the key-value table\n    let dict = parser.getObj();\n\n    // The pdflib PDF generator can generate a nested trailer dictionary\n    if (!(dict instanceof Dict) && dict.dict) {\n      dict = dict.dict;\n    }\n    if (!(dict instanceof Dict)) {\n      throw new FormatError(\n        \"Invalid XRef table: could not parse trailer dictionary\"\n      );\n    }\n    delete this.tableState;\n\n    return dict;\n  }\n\n  readXRefTable(parser) {\n    // Example of cross-reference table:\n    // xref\n    // 0 1                    <-- subsection header (first obj #, obj count)\n    // 0000000000 65535 f     <-- actual object (offset, generation #, f/n)\n    // 23 2                   <-- subsection header ... and so on ...\n    // 0000025518 00002 n\n    // 0000025635 00000 n\n    // trailer\n    // ...\n\n    const stream = parser.lexer.stream;\n    const tableState = this.tableState;\n    stream.pos = tableState.streamPos;\n    parser.buf1 = tableState.parserBuf1;\n    parser.buf2 = tableState.parserBuf2;\n\n    // Outer loop is over subsection headers\n    let obj;\n\n    while (true) {\n      if (!(\"firstEntryNum\" in tableState) || !(\"entryCount\" in tableState)) {\n        if (isCmd((obj = parser.getObj()), \"trailer\")) {\n          break;\n        }\n        tableState.firstEntryNum = obj;\n        tableState.entryCount = parser.getObj();\n      }\n\n      let first = tableState.firstEntryNum;\n      const count = tableState.entryCount;\n      if (!Number.isInteger(first) || !Number.isInteger(count)) {\n        throw new FormatError(\n          \"Invalid XRef table: wrong types in subsection header\"\n        );\n      }\n      // Inner loop is over objects themselves\n      for (let i = tableState.entryNum; i < count; i++) {\n        tableState.streamPos = stream.pos;\n        tableState.entryNum = i;\n        tableState.parserBuf1 = parser.buf1;\n        tableState.parserBuf2 = parser.buf2;\n\n        const entry = {};\n        entry.offset = parser.getObj();\n        entry.gen = parser.getObj();\n        const type = parser.getObj();\n\n        if (type instanceof Cmd) {\n          switch (type.cmd) {\n            case \"f\":\n              entry.free = true;\n              break;\n            case \"n\":\n              entry.uncompressed = true;\n              break;\n          }\n        }\n\n        // Validate entry obj\n        if (\n          !Number.isInteger(entry.offset) ||\n          !Number.isInteger(entry.gen) ||\n          !(entry.free || entry.uncompressed)\n        ) {\n          throw new FormatError(\n            `Invalid entry in XRef subsection: ${first}, ${count}`\n          );\n        }\n\n        // The first xref table entry, i.e. obj 0, should be free. Attempting\n        // to adjust an incorrect first obj # (fixes issue 3248 and 7229).\n        if (i === 0 && entry.free && first === 1) {\n          first = 0;\n        }\n\n        if (!this.entries[i + first]) {\n          this.entries[i + first] = entry;\n        }\n      }\n\n      tableState.entryNum = 0;\n      tableState.streamPos = stream.pos;\n      tableState.parserBuf1 = parser.buf1;\n      tableState.parserBuf2 = parser.buf2;\n      delete tableState.firstEntryNum;\n      delete tableState.entryCount;\n    }\n\n    // Sanity check: as per spec, first object must be free\n    if (this.entries[0] && !this.entries[0].free) {\n      throw new FormatError(\"Invalid XRef table: unexpected first object\");\n    }\n    return obj;\n  }\n\n  processXRefStream(stream) {\n    if (!(\"streamState\" in this)) {\n      // Stores state of the stream as we process it so we can resume\n      // from middle of stream in case of missing data error\n      const streamParameters = stream.dict;\n      const byteWidths = streamParameters.get(\"W\");\n      let range = streamParameters.get(\"Index\");\n      if (!range) {\n        range = [0, streamParameters.get(\"Size\")];\n      }\n\n      this.streamState = {\n        entryRanges: range,\n        byteWidths,\n        entryNum: 0,\n        streamPos: stream.pos,\n      };\n    }\n    this.readXRefStream(stream);\n    delete this.streamState;\n\n    return stream.dict;\n  }\n\n  readXRefStream(stream) {\n    const streamState = this.streamState;\n    stream.pos = streamState.streamPos;\n\n    const [typeFieldWidth, offsetFieldWidth, generationFieldWidth] =\n      streamState.byteWidths;\n\n    const entryRanges = streamState.entryRanges;\n    while (entryRanges.length > 0) {\n      const [first, n] = entryRanges;\n\n      if (!Number.isInteger(first) || !Number.isInteger(n)) {\n        throw new FormatError(`Invalid XRef range fields: ${first}, ${n}`);\n      }\n      if (\n        !Number.isInteger(typeFieldWidth) ||\n        !Number.isInteger(offsetFieldWidth) ||\n        !Number.isInteger(generationFieldWidth)\n      ) {\n        throw new FormatError(\n          `Invalid XRef entry fields length: ${first}, ${n}`\n        );\n      }\n      for (let i = streamState.entryNum; i < n; ++i) {\n        streamState.entryNum = i;\n        streamState.streamPos = stream.pos;\n\n        let type = 0,\n          offset = 0,\n          generation = 0;\n        for (let j = 0; j < typeFieldWidth; ++j) {\n          const typeByte = stream.getByte();\n          if (typeByte === -1) {\n            throw new FormatError(\"Invalid XRef byteWidths 'type'.\");\n          }\n          type = (type << 8) | typeByte;\n        }\n        // if type field is absent, its default value is 1\n        if (typeFieldWidth === 0) {\n          type = 1;\n        }\n        for (let j = 0; j < offsetFieldWidth; ++j) {\n          const offsetByte = stream.getByte();\n          if (offsetByte === -1) {\n            throw new FormatError(\"Invalid XRef byteWidths 'offset'.\");\n          }\n          offset = (offset << 8) | offsetByte;\n        }\n        for (let j = 0; j < generationFieldWidth; ++j) {\n          const generationByte = stream.getByte();\n          if (generationByte === -1) {\n            throw new FormatError(\"Invalid XRef byteWidths 'generation'.\");\n          }\n          generation = (generation << 8) | generationByte;\n        }\n        const entry = {};\n        entry.offset = offset;\n        entry.gen = generation;\n        switch (type) {\n          case 0:\n            entry.free = true;\n            break;\n          case 1:\n            entry.uncompressed = true;\n            break;\n          case 2:\n            break;\n          default:\n            throw new FormatError(`Invalid XRef entry type: ${type}`);\n        }\n        if (!this.entries[first + i]) {\n          this.entries[first + i] = entry;\n        }\n      }\n\n      streamState.entryNum = 0;\n      streamState.streamPos = stream.pos;\n      entryRanges.splice(0, 2);\n    }\n  }\n\n  indexObjects() {\n    // Simple scan through the PDF content to find objects,\n    // trailers and XRef streams.\n    const TAB = 0x9,\n      LF = 0xa,\n      CR = 0xd,\n      SPACE = 0x20;\n    const PERCENT = 0x25,\n      LT = 0x3c;\n\n    function readToken(data, offset) {\n      let token = \"\",\n        ch = data[offset];\n      while (ch !== LF && ch !== CR && ch !== LT) {\n        if (++offset >= data.length) {\n          break;\n        }\n        token += String.fromCharCode(ch);\n        ch = data[offset];\n      }\n      return token;\n    }\n    function skipUntil(data, offset, what) {\n      const length = what.length,\n        dataLength = data.length;\n      let skipped = 0;\n      // finding byte sequence\n      while (offset < dataLength) {\n        let i = 0;\n        while (i < length && data[offset + i] === what[i]) {\n          ++i;\n        }\n        if (i >= length) {\n          break; // sequence found\n        }\n        offset++;\n        skipped++;\n      }\n      return skipped;\n    }\n    const objRegExp = /^(\\d+)\\s+(\\d+)\\s+obj\\b/;\n    const endobjRegExp = /\\bendobj[\\b\\s]$/;\n    const nestedObjRegExp = /\\s+(\\d+\\s+\\d+\\s+obj[\\b\\s<])$/;\n    const CHECK_CONTENT_LENGTH = 25;\n\n    const trailerBytes = new Uint8Array([116, 114, 97, 105, 108, 101, 114]);\n    const startxrefBytes = new Uint8Array([\n      115, 116, 97, 114, 116, 120, 114, 101, 102,\n    ]);\n    const objBytes = new Uint8Array([111, 98, 106]);\n    const xrefBytes = new Uint8Array([47, 88, 82, 101, 102]);\n\n    // Clear out any existing entries, since they may be bogus.\n    this.entries.length = 0;\n    this._cacheMap.clear();\n\n    const stream = this.stream;\n    stream.pos = 0;\n    const buffer = stream.getBytes(),\n      length = buffer.length;\n    let position = stream.start;\n    const trailers = [],\n      xrefStms = [];\n    while (position < length) {\n      let ch = buffer[position];\n      if (ch === TAB || ch === LF || ch === CR || ch === SPACE) {\n        ++position;\n        continue;\n      }\n      if (ch === PERCENT) {\n        // %-comment\n        do {\n          ++position;\n          if (position >= length) {\n            break;\n          }\n          ch = buffer[position];\n        } while (ch !== LF && ch !== CR);\n        continue;\n      }\n      const token = readToken(buffer, position);\n      let m;\n      if (\n        token.startsWith(\"xref\") &&\n        (token.length === 4 || /\\s/.test(token[4]))\n      ) {\n        position += skipUntil(buffer, position, trailerBytes);\n        trailers.push(position);\n        position += skipUntil(buffer, position, startxrefBytes);\n      } else if ((m = objRegExp.exec(token))) {\n        const num = m[1] | 0,\n          gen = m[2] | 0;\n\n        let contentLength,\n          startPos = position + token.length,\n          updateEntries = false;\n        if (!this.entries[num]) {\n          updateEntries = true;\n        } else if (this.entries[num].gen === gen) {\n          // Before overwriting an existing entry, ensure that the new one won't\n          // cause *immediate* errors when it's accessed (fixes issue13783.pdf).\n          try {\n            const parser = new Parser({\n              lexer: new Lexer(stream.makeSubStream(startPos)),\n            });\n            parser.getObj();\n            updateEntries = true;\n          } catch (ex) {\n            if (ex instanceof ParserEOFException) {\n              warn(`indexObjects -- checking object (${token}): \"${ex}\".`);\n            } else {\n              // The error may come from the `Parser`-instance being initialized\n              // without an `XRef`-instance (we don't have a usable one yet).\n              updateEntries = true;\n            }\n          }\n        }\n        if (updateEntries) {\n          this.entries[num] = {\n            offset: position - stream.start,\n            gen,\n            uncompressed: true,\n          };\n        }\n\n        // Find the next \"obj\" string, rather than \"endobj\", to ensure that\n        // we won't skip over a new 'obj' operator in corrupt files where\n        // 'endobj' operators are missing (fixes issue9105_reduced.pdf).\n        while (startPos < buffer.length) {\n          const endPos = startPos + skipUntil(buffer, startPos, objBytes) + 4;\n          contentLength = endPos - position;\n\n          const checkPos = Math.max(endPos - CHECK_CONTENT_LENGTH, startPos);\n          const tokenStr = bytesToString(buffer.subarray(checkPos, endPos));\n\n          // Check if the current object ends with an 'endobj' operator.\n          if (endobjRegExp.test(tokenStr)) {\n            break;\n          } else {\n            // Check if an \"obj\" occurrence is actually a new object,\n            // i.e. the current object is missing the 'endobj' operator.\n            const objToken = nestedObjRegExp.exec(tokenStr);\n\n            if (objToken && objToken[1]) {\n              warn(\n                'indexObjects: Found new \"obj\" inside of another \"obj\", ' +\n                  'caused by missing \"endobj\" -- trying to recover.'\n              );\n              contentLength -= objToken[1].length;\n              break;\n            }\n          }\n          startPos = endPos;\n        }\n        const content = buffer.subarray(position, position + contentLength);\n\n        // checking XRef stream suspect\n        // (it shall have '/XRef' and next char is not a letter)\n        const xrefTagOffset = skipUntil(content, 0, xrefBytes);\n        if (xrefTagOffset < contentLength && content[xrefTagOffset + 5] < 64) {\n          xrefStms.push(position - stream.start);\n          this.xrefstms[position - stream.start] = 1; // Avoid recursion\n        }\n\n        position += contentLength;\n      } else if (\n        token.startsWith(\"trailer\") &&\n        (token.length === 7 || /\\s/.test(token[7]))\n      ) {\n        trailers.push(position);\n        position += skipUntil(buffer, position, startxrefBytes);\n      } else {\n        position += token.length + 1;\n      }\n    }\n    // reading XRef streams\n    for (let i = 0, ii = xrefStms.length; i < ii; ++i) {\n      this.startXRefQueue.push(xrefStms[i]);\n      this.readXRef(/* recoveryMode */ true);\n    }\n    // finding main trailer\n    let trailerDict;\n    for (let i = 0, ii = trailers.length; i < ii; ++i) {\n      stream.pos = trailers[i];\n      const parser = new Parser({\n        lexer: new Lexer(stream),\n        xref: this,\n        allowStreams: true,\n        recoveryMode: true,\n      });\n      const obj = parser.getObj();\n      if (!isCmd(obj, \"trailer\")) {\n        continue;\n      }\n      // read the trailer dictionary\n      const dict = parser.getObj();\n      if (!(dict instanceof Dict)) {\n        continue;\n      }\n      // Do some basic validation of the trailer/root dictionary candidate.\n      try {\n        const rootDict = dict.get(\"Root\");\n        if (!(rootDict instanceof Dict)) {\n          continue;\n        }\n        const pagesDict = rootDict.get(\"Pages\");\n        if (!(pagesDict instanceof Dict)) {\n          continue;\n        }\n        const pagesCount = pagesDict.get(\"Count\");\n        if (!Number.isInteger(pagesCount)) {\n          continue;\n        }\n        // The top-level /Pages dictionary isn't obviously corrupt.\n      } catch (ex) {\n        continue;\n      }\n      // taking the first one with 'ID'\n      if (dict.has(\"ID\")) {\n        return dict;\n      }\n      // The current dictionary is a candidate, but continue searching.\n      trailerDict = dict;\n    }\n    // No trailer with 'ID', taking last one (if exists).\n    if (trailerDict) {\n      return trailerDict;\n    }\n    // No trailer dictionary found, taking the \"top\"-dictionary (if exists).\n    if (this.topDict) {\n      return this.topDict;\n    }\n    // nothing helps\n    throw new InvalidPDFException(\"Invalid PDF structure.\");\n  }\n\n  readXRef(recoveryMode = false) {\n    const stream = this.stream;\n    // Keep track of already parsed XRef tables, to prevent an infinite loop\n    // when parsing corrupt PDF files where e.g. the /Prev entries create a\n    // circular dependency between tables (fixes bug1393476.pdf).\n    const startXRefParsedCache = new Set();\n\n    try {\n      while (this.startXRefQueue.length) {\n        const startXRef = this.startXRefQueue[0];\n\n        if (startXRefParsedCache.has(startXRef)) {\n          warn(\"readXRef - skipping XRef table since it was already parsed.\");\n          this.startXRefQueue.shift();\n          continue;\n        }\n        startXRefParsedCache.add(startXRef);\n\n        stream.pos = startXRef + stream.start;\n\n        const parser = new Parser({\n          lexer: new Lexer(stream),\n          xref: this,\n          allowStreams: true,\n        });\n        let obj = parser.getObj();\n        let dict;\n\n        // Get dictionary\n        if (isCmd(obj, \"xref\")) {\n          // Parse end-of-file XRef\n          dict = this.processXRefTable(parser);\n          if (!this.topDict) {\n            this.topDict = dict;\n          }\n\n          // Recursively get other XRefs 'XRefStm', if any\n          obj = dict.get(\"XRefStm\");\n          if (Number.isInteger(obj)) {\n            const pos = obj;\n            // ignore previously loaded xref streams\n            // (possible infinite recursion)\n            if (!(pos in this.xrefstms)) {\n              this.xrefstms[pos] = 1;\n              this.startXRefQueue.push(pos);\n            }\n          }\n        } else if (Number.isInteger(obj)) {\n          // Parse in-stream XRef\n          if (\n            !Number.isInteger(parser.getObj()) ||\n            !isCmd(parser.getObj(), \"obj\") ||\n            !((obj = parser.getObj()) instanceof BaseStream)\n          ) {\n            throw new FormatError(\"Invalid XRef stream\");\n          }\n          dict = this.processXRefStream(obj);\n          if (!this.topDict) {\n            this.topDict = dict;\n          }\n          if (!dict) {\n            throw new FormatError(\"Failed to read XRef stream\");\n          }\n        } else {\n          throw new FormatError(\"Invalid XRef stream header\");\n        }\n\n        // Recursively get previous dictionary, if any\n        obj = dict.get(\"Prev\");\n        if (Number.isInteger(obj)) {\n          this.startXRefQueue.push(obj);\n        } else if (obj instanceof Ref) {\n          // The spec says Prev must not be a reference, i.e. \"/Prev NNN\"\n          // This is a fallback for non-compliant PDFs, i.e. \"/Prev NNN 0 R\"\n          this.startXRefQueue.push(obj.num);\n        }\n\n        this.startXRefQueue.shift();\n      }\n\n      return this.topDict;\n    } catch (e) {\n      if (e instanceof MissingDataException) {\n        throw e;\n      }\n      info(\"(while reading XRef): \" + e);\n\n      this.startXRefQueue.shift();\n    }\n\n    if (recoveryMode) {\n      return undefined;\n    }\n    throw new XRefParseException();\n  }\n\n  getEntry(i) {\n    const xrefEntry = this.entries[i];\n    if (xrefEntry && !xrefEntry.free && xrefEntry.offset) {\n      return xrefEntry;\n    }\n    return null;\n  }\n\n  fetchIfRef(obj, suppressEncryption = false) {\n    if (obj instanceof Ref) {\n      return this.fetch(obj, suppressEncryption);\n    }\n    return obj;\n  }\n\n  fetch(ref, suppressEncryption = false) {\n    if (!(ref instanceof Ref)) {\n      throw new Error(\"ref object is not a reference\");\n    }\n    const num = ref.num;\n\n    // The XRef cache is populated with objects which are obtained through\n    // `Parser.getObj`, and indirectly via `Lexer.getObj`. Neither of these\n    // methods should ever return `undefined` (note the `assert` calls below).\n    const cacheEntry = this._cacheMap.get(num);\n    if (cacheEntry !== undefined) {\n      // In documents with Object Streams, it's possible that cached `Dict`s\n      // have not been assigned an `objId` yet (see e.g. issue3115r.pdf).\n      if (cacheEntry instanceof Dict && !cacheEntry.objId) {\n        cacheEntry.objId = ref.toString();\n      }\n      return cacheEntry;\n    }\n    let xrefEntry = this.getEntry(num);\n\n    if (xrefEntry === null) {\n      // The referenced entry can be free.\n      this._cacheMap.set(num, xrefEntry);\n      return xrefEntry;\n    }\n    // Prevent circular references, in corrupt PDF documents, from hanging the\n    // worker-thread. This relies, implicitly, on the parsing being synchronous.\n    if (this._pendingRefs.has(ref)) {\n      this._pendingRefs.remove(ref);\n\n      warn(`Ignoring circular reference: ${ref}.`);\n      return CIRCULAR_REF;\n    }\n    this._pendingRefs.put(ref);\n\n    try {\n      if (xrefEntry.uncompressed) {\n        xrefEntry = this.fetchUncompressed(ref, xrefEntry, suppressEncryption);\n      } else {\n        xrefEntry = this.fetchCompressed(ref, xrefEntry, suppressEncryption);\n      }\n      this._pendingRefs.remove(ref);\n    } catch (ex) {\n      this._pendingRefs.remove(ref);\n      throw ex;\n    }\n    if (xrefEntry instanceof Dict) {\n      xrefEntry.objId = ref.toString();\n    } else if (xrefEntry instanceof BaseStream) {\n      xrefEntry.dict.objId = ref.toString();\n    }\n    return xrefEntry;\n  }\n\n  fetchUncompressed(ref, xrefEntry, suppressEncryption = false) {\n    const gen = ref.gen;\n    let num = ref.num;\n    if (xrefEntry.gen !== gen) {\n      throw new XRefEntryException(`Inconsistent generation in XRef: ${ref}`);\n    }\n    const stream = this.stream.makeSubStream(\n      xrefEntry.offset + this.stream.start\n    );\n    const parser = new Parser({\n      lexer: new Lexer(stream),\n      xref: this,\n      allowStreams: true,\n    });\n    const obj1 = parser.getObj();\n    const obj2 = parser.getObj();\n    const obj3 = parser.getObj();\n\n    if (obj1 !== num || obj2 !== gen || !(obj3 instanceof Cmd)) {\n      throw new XRefEntryException(`Bad (uncompressed) XRef entry: ${ref}`);\n    }\n    if (obj3.cmd !== \"obj\") {\n      // some bad PDFs use \"obj1234\" and really mean 1234\n      if (obj3.cmd.startsWith(\"obj\")) {\n        num = parseInt(obj3.cmd.substring(3), 10);\n        if (!Number.isNaN(num)) {\n          return num;\n        }\n      }\n      throw new XRefEntryException(`Bad (uncompressed) XRef entry: ${ref}`);\n    }\n    if (this.encrypt && !suppressEncryption) {\n      xrefEntry = parser.getObj(this.encrypt.createCipherTransform(num, gen));\n    } else {\n      xrefEntry = parser.getObj();\n    }\n    if (!(xrefEntry instanceof BaseStream)) {\n      if (\n        typeof PDFJSDev === \"undefined\" ||\n        PDFJSDev.test(\"!PRODUCTION || TESTING\")\n      ) {\n        assert(\n          xrefEntry !== undefined,\n          'fetchUncompressed: The \"xrefEntry\" cannot be undefined.'\n        );\n      }\n      this._cacheMap.set(num, xrefEntry);\n    }\n    return xrefEntry;\n  }\n\n  fetchCompressed(ref, xrefEntry, suppressEncryption = false) {\n    const tableOffset = xrefEntry.offset;\n    const stream = this.fetch(Ref.get(tableOffset, 0));\n    if (!(stream instanceof BaseStream)) {\n      throw new FormatError(\"bad ObjStm stream\");\n    }\n    const first = stream.dict.get(\"First\");\n    const n = stream.dict.get(\"N\");\n    if (!Number.isInteger(first) || !Number.isInteger(n)) {\n      throw new FormatError(\"invalid first and n parameters for ObjStm stream\");\n    }\n    let parser = new Parser({\n      lexer: new Lexer(stream),\n      xref: this,\n      allowStreams: true,\n    });\n    const nums = new Array(n);\n    const offsets = new Array(n);\n    // read the object numbers to populate cache\n    for (let i = 0; i < n; ++i) {\n      const num = parser.getObj();\n      if (!Number.isInteger(num)) {\n        throw new FormatError(\n          `invalid object number in the ObjStm stream: ${num}`\n        );\n      }\n      const offset = parser.getObj();\n      if (!Number.isInteger(offset)) {\n        throw new FormatError(\n          `invalid object offset in the ObjStm stream: ${offset}`\n        );\n      }\n      nums[i] = num;\n      offsets[i] = offset;\n    }\n\n    const start = (stream.start || 0) + first;\n    const entries = new Array(n);\n    // read stream objects for cache\n    for (let i = 0; i < n; ++i) {\n      const length = i < n - 1 ? offsets[i + 1] - offsets[i] : undefined;\n      if (length < 0) {\n        throw new FormatError(\"Invalid offset in the ObjStm stream.\");\n      }\n      parser = new Parser({\n        lexer: new Lexer(\n          stream.makeSubStream(start + offsets[i], length, stream.dict)\n        ),\n        xref: this,\n        allowStreams: true,\n      });\n\n      const obj = parser.getObj();\n      entries[i] = obj;\n      if (obj instanceof BaseStream) {\n        continue;\n      }\n      const num = nums[i],\n        entry = this.entries[num];\n      if (entry && entry.offset === tableOffset && entry.gen === i) {\n        if (\n          typeof PDFJSDev === \"undefined\" ||\n          PDFJSDev.test(\"!PRODUCTION || TESTING\")\n        ) {\n          assert(\n            obj !== undefined,\n            'fetchCompressed: The \"obj\" cannot be undefined.'\n          );\n        }\n        this._cacheMap.set(num, obj);\n      }\n    }\n    xrefEntry = entries[xrefEntry.gen];\n    if (xrefEntry === undefined) {\n      throw new XRefEntryException(`Bad (compressed) XRef entry: ${ref}`);\n    }\n    return xrefEntry;\n  }\n\n  async fetchIfRefAsync(obj, suppressEncryption) {\n    if (obj instanceof Ref) {\n      return this.fetchAsync(obj, suppressEncryption);\n    }\n    return obj;\n  }\n\n  async fetchAsync(ref, suppressEncryption) {\n    try {\n      return this.fetch(ref, suppressEncryption);\n    } catch (ex) {\n      if (!(ex instanceof MissingDataException)) {\n        throw ex;\n      }\n      await this.pdfManager.requestRange(ex.begin, ex.end);\n      return this.fetchAsync(ref, suppressEncryption);\n    }\n  }\n\n  getCatalogObj() {\n    return this.root;\n  }\n}\n\nexport { XRef };\n","/* Copyright 2018 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n  AbortException,\n  assert,\n  createPromiseCapability,\n  MissingPDFException,\n  PasswordException,\n  UnexpectedResponseException,\n  UnknownErrorException,\n  warn,\n} from \"./util.js\";\n\nconst CallbackKind = {\n  UNKNOWN: 0,\n  DATA: 1,\n  ERROR: 2,\n};\n\nconst StreamKind = {\n  UNKNOWN: 0,\n  CANCEL: 1,\n  CANCEL_COMPLETE: 2,\n  CLOSE: 3,\n  ENQUEUE: 4,\n  ERROR: 5,\n  PULL: 6,\n  PULL_COMPLETE: 7,\n  START_COMPLETE: 8,\n};\n\nfunction wrapReason(reason) {\n  if (\n    !(\n      reason instanceof Error ||\n      (typeof reason === \"object\" && reason !== null)\n    )\n  ) {\n    if (\n      typeof PDFJSDev === \"undefined\" ||\n      PDFJSDev.test(\"!PRODUCTION || TESTING\")\n    ) {\n      throw new Error(\n        'wrapReason: Expected \"reason\" to be a (possibly cloned) Error.'\n      );\n    }\n    warn('wrapReason: Expected \"reason\" to be a (possibly cloned) Error.');\n    return reason;\n  }\n  switch (reason.name) {\n    case \"AbortException\":\n      return new AbortException(reason.message);\n    case \"MissingPDFException\":\n      return new MissingPDFException(reason.message);\n    case \"PasswordException\":\n      return new PasswordException(reason.message, reason.code);\n    case \"UnexpectedResponseException\":\n      return new UnexpectedResponseException(reason.message, reason.status);\n    case \"UnknownErrorException\":\n      return new UnknownErrorException(reason.message, reason.details);\n    default:\n      return new UnknownErrorException(reason.message, reason.toString());\n  }\n}\n\nclass MessageHandler {\n  constructor(sourceName, targetName, comObj) {\n    this.sourceName = sourceName;\n    this.targetName = targetName;\n    this.comObj = comObj;\n    this.callbackId = 1;\n    this.streamId = 1;\n    this.streamSinks = Object.create(null);\n    this.streamControllers = Object.create(null);\n    this.callbackCapabilities = Object.create(null);\n    this.actionHandler = Object.create(null);\n\n    this._onComObjOnMessage = event => {\n      const data = event.data;\n      if (data.targetName !== this.sourceName) {\n        return;\n      }\n      if (data.stream) {\n        this._processStreamMessage(data);\n        return;\n      }\n      if (data.callback) {\n        const callbackId = data.callbackId;\n        const capability = this.callbackCapabilities[callbackId];\n        if (!capability) {\n          throw new Error(`Cannot resolve callback ${callbackId}`);\n        }\n        delete this.callbackCapabilities[callbackId];\n\n        if (data.callback === CallbackKind.DATA) {\n          capability.resolve(data.data);\n        } else if (data.callback === CallbackKind.ERROR) {\n          capability.reject(wrapReason(data.reason));\n        } else {\n          throw new Error(\"Unexpected callback case\");\n        }\n        return;\n      }\n      const action = this.actionHandler[data.action];\n      if (!action) {\n        throw new Error(`Unknown action from worker: ${data.action}`);\n      }\n      if (data.callbackId) {\n        const cbSourceName = this.sourceName;\n        const cbTargetName = data.sourceName;\n\n        new Promise(function (resolve) {\n          resolve(action(data.data));\n        }).then(\n          function (result) {\n            comObj.postMessage({\n              sourceName: cbSourceName,\n              targetName: cbTargetName,\n              callback: CallbackKind.DATA,\n              callbackId: data.callbackId,\n              data: result,\n            });\n          },\n          function (reason) {\n            comObj.postMessage({\n              sourceName: cbSourceName,\n              targetName: cbTargetName,\n              callback: CallbackKind.ERROR,\n              callbackId: data.callbackId,\n              reason: wrapReason(reason),\n            });\n          }\n        );\n        return;\n      }\n      if (data.streamId) {\n        this._createStreamSink(data);\n        return;\n      }\n      action(data.data);\n    };\n    comObj.addEventListener(\"message\", this._onComObjOnMessage);\n  }\n\n  on(actionName, handler) {\n    if (\n      typeof PDFJSDev === \"undefined\" ||\n      PDFJSDev.test(\"!PRODUCTION || TESTING\")\n    ) {\n      assert(\n        typeof handler === \"function\",\n        'MessageHandler.on: Expected \"handler\" to be a function.'\n      );\n    }\n    const ah = this.actionHandler;\n    if (ah[actionName]) {\n      throw new Error(`There is already an actionName called \"${actionName}\"`);\n    }\n    ah[actionName] = handler;\n  }\n\n  /**\n   * Sends a message to the comObj to invoke the action with the supplied data.\n   * @param {string} actionName - Action to call.\n   * @param {JSON} data - JSON data to send.\n   * @param {Array} [transfers] - List of transfers/ArrayBuffers.\n   */\n  send(actionName, data, transfers) {\n    this.comObj.postMessage(\n      {\n        sourceName: this.sourceName,\n        targetName: this.targetName,\n        action: actionName,\n        data,\n      },\n      transfers\n    );\n  }\n\n  /**\n   * Sends a message to the comObj to invoke the action with the supplied data.\n   * Expects that the other side will callback with the response.\n   * @param {string} actionName - Action to call.\n   * @param {JSON} data - JSON data to send.\n   * @param {Array} [transfers] - List of transfers/ArrayBuffers.\n   * @returns {Promise} Promise to be resolved with response data.\n   */\n  sendWithPromise(actionName, data, transfers) {\n    const callbackId = this.callbackId++;\n    const capability = createPromiseCapability();\n    this.callbackCapabilities[callbackId] = capability;\n    try {\n      this.comObj.postMessage(\n        {\n          sourceName: this.sourceName,\n          targetName: this.targetName,\n          action: actionName,\n          callbackId,\n          data,\n        },\n        transfers\n      );\n    } catch (ex) {\n      capability.reject(ex);\n    }\n    return capability.promise;\n  }\n\n  /**\n   * Sends a message to the comObj to invoke the action with the supplied data.\n   * Expect that the other side will callback to signal 'start_complete'.\n   * @param {string} actionName - Action to call.\n   * @param {JSON} data - JSON data to send.\n   * @param {Object} queueingStrategy - Strategy to signal backpressure based on\n   *                 internal queue.\n   * @param {Array} [transfers] - List of transfers/ArrayBuffers.\n   * @returns {ReadableStream} ReadableStream to read data in chunks.\n   */\n  sendWithStream(actionName, data, queueingStrategy, transfers) {\n    const streamId = this.streamId++,\n      sourceName = this.sourceName,\n      targetName = this.targetName,\n      comObj = this.comObj;\n\n    return new ReadableStream(\n      {\n        start: controller => {\n          const startCapability = createPromiseCapability();\n          this.streamControllers[streamId] = {\n            controller,\n            startCall: startCapability,\n            pullCall: null,\n            cancelCall: null,\n            isClosed: false,\n          };\n          comObj.postMessage(\n            {\n              sourceName,\n              targetName,\n              action: actionName,\n              streamId,\n              data,\n              desiredSize: controller.desiredSize,\n            },\n            transfers\n          );\n          // Return Promise for Async process, to signal success/failure.\n          return startCapability.promise;\n        },\n\n        pull: controller => {\n          const pullCapability = createPromiseCapability();\n          this.streamControllers[streamId].pullCall = pullCapability;\n          comObj.postMessage({\n            sourceName,\n            targetName,\n            stream: StreamKind.PULL,\n            streamId,\n            desiredSize: controller.desiredSize,\n          });\n          // Returning Promise will not call \"pull\"\n          // again until current pull is resolved.\n          return pullCapability.promise;\n        },\n\n        cancel: reason => {\n          assert(reason instanceof Error, \"cancel must have a valid reason\");\n          const cancelCapability = createPromiseCapability();\n          this.streamControllers[streamId].cancelCall = cancelCapability;\n          this.streamControllers[streamId].isClosed = true;\n          comObj.postMessage({\n            sourceName,\n            targetName,\n            stream: StreamKind.CANCEL,\n            streamId,\n            reason: wrapReason(reason),\n          });\n          // Return Promise to signal success or failure.\n          return cancelCapability.promise;\n        },\n      },\n      queueingStrategy\n    );\n  }\n\n  /**\n   * @private\n   */\n  _createStreamSink(data) {\n    const streamId = data.streamId,\n      sourceName = this.sourceName,\n      targetName = data.sourceName,\n      comObj = this.comObj;\n    const self = this,\n      action = this.actionHandler[data.action];\n\n    const streamSink = {\n      enqueue(chunk, size = 1, transfers) {\n        if (this.isCancelled) {\n          return;\n        }\n        const lastDesiredSize = this.desiredSize;\n        this.desiredSize -= size;\n        // Enqueue decreases the desiredSize property of sink,\n        // so when it changes from positive to negative,\n        // set ready as unresolved promise.\n        if (lastDesiredSize > 0 && this.desiredSize <= 0) {\n          this.sinkCapability = createPromiseCapability();\n          this.ready = this.sinkCapability.promise;\n        }\n        comObj.postMessage(\n          {\n            sourceName,\n            targetName,\n            stream: StreamKind.ENQUEUE,\n            streamId,\n            chunk,\n          },\n          transfers\n        );\n      },\n\n      close() {\n        if (this.isCancelled) {\n          return;\n        }\n        this.isCancelled = true;\n        comObj.postMessage({\n          sourceName,\n          targetName,\n          stream: StreamKind.CLOSE,\n          streamId,\n        });\n        delete self.streamSinks[streamId];\n      },\n\n      error(reason) {\n        assert(reason instanceof Error, \"error must have a valid reason\");\n        if (this.isCancelled) {\n          return;\n        }\n        this.isCancelled = true;\n        comObj.postMessage({\n          sourceName,\n          targetName,\n          stream: StreamKind.ERROR,\n          streamId,\n          reason: wrapReason(reason),\n        });\n      },\n\n      sinkCapability: createPromiseCapability(),\n      onPull: null,\n      onCancel: null,\n      isCancelled: false,\n      desiredSize: data.desiredSize,\n      ready: null,\n    };\n\n    streamSink.sinkCapability.resolve();\n    streamSink.ready = streamSink.sinkCapability.promise;\n    this.streamSinks[streamId] = streamSink;\n\n    new Promise(function (resolve) {\n      resolve(action(data.data, streamSink));\n    }).then(\n      function () {\n        comObj.postMessage({\n          sourceName,\n          targetName,\n          stream: StreamKind.START_COMPLETE,\n          streamId,\n          success: true,\n        });\n      },\n      function (reason) {\n        comObj.postMessage({\n          sourceName,\n          targetName,\n          stream: StreamKind.START_COMPLETE,\n          streamId,\n          reason: wrapReason(reason),\n        });\n      }\n    );\n  }\n\n  /**\n   * @private\n   */\n  _processStreamMessage(data) {\n    const streamId = data.streamId,\n      sourceName = this.sourceName,\n      targetName = data.sourceName,\n      comObj = this.comObj;\n    const streamController = this.streamControllers[streamId],\n      streamSink = this.streamSinks[streamId];\n\n    switch (data.stream) {\n      case StreamKind.START_COMPLETE:\n        if (data.success) {\n          streamController.startCall.resolve();\n        } else {\n          streamController.startCall.reject(wrapReason(data.reason));\n        }\n        break;\n      case StreamKind.PULL_COMPLETE:\n        if (data.success) {\n          streamController.pullCall.resolve();\n        } else {\n          streamController.pullCall.reject(wrapReason(data.reason));\n        }\n        break;\n      case StreamKind.PULL:\n        // Ignore any pull after close is called.\n        if (!streamSink) {\n          comObj.postMessage({\n            sourceName,\n            targetName,\n            stream: StreamKind.PULL_COMPLETE,\n            streamId,\n            success: true,\n          });\n          break;\n        }\n        // Pull increases the desiredSize property of sink, so when it changes\n        // from negative to positive, set ready property as resolved promise.\n        if (streamSink.desiredSize <= 0 && data.desiredSize > 0) {\n          streamSink.sinkCapability.resolve();\n        }\n        // Reset desiredSize property of sink on every pull.\n        streamSink.desiredSize = data.desiredSize;\n\n        new Promise(function (resolve) {\n          resolve(streamSink.onPull && streamSink.onPull());\n        }).then(\n          function () {\n            comObj.postMessage({\n              sourceName,\n              targetName,\n              stream: StreamKind.PULL_COMPLETE,\n              streamId,\n              success: true,\n            });\n          },\n          function (reason) {\n            comObj.postMessage({\n              sourceName,\n              targetName,\n              stream: StreamKind.PULL_COMPLETE,\n              streamId,\n              reason: wrapReason(reason),\n            });\n          }\n        );\n        break;\n      case StreamKind.ENQUEUE:\n        assert(streamController, \"enqueue should have stream controller\");\n        if (streamController.isClosed) {\n          break;\n        }\n        streamController.controller.enqueue(data.chunk);\n        break;\n      case StreamKind.CLOSE:\n        assert(streamController, \"close should have stream controller\");\n        if (streamController.isClosed) {\n          break;\n        }\n        streamController.isClosed = true;\n        streamController.controller.close();\n        this._deleteStreamController(streamController, streamId);\n        break;\n      case StreamKind.ERROR:\n        assert(streamController, \"error should have stream controller\");\n        streamController.controller.error(wrapReason(data.reason));\n        this._deleteStreamController(streamController, streamId);\n        break;\n      case StreamKind.CANCEL_COMPLETE:\n        if (data.success) {\n          streamController.cancelCall.resolve();\n        } else {\n          streamController.cancelCall.reject(wrapReason(data.reason));\n        }\n        this._deleteStreamController(streamController, streamId);\n        break;\n      case StreamKind.CANCEL:\n        if (!streamSink) {\n          break;\n        }\n\n        new Promise(function (resolve) {\n          resolve(\n            streamSink.onCancel && streamSink.onCancel(wrapReason(data.reason))\n          );\n        }).then(\n          function () {\n            comObj.postMessage({\n              sourceName,\n              targetName,\n              stream: StreamKind.CANCEL_COMPLETE,\n              streamId,\n              success: true,\n            });\n          },\n          function (reason) {\n            comObj.postMessage({\n              sourceName,\n              targetName,\n              stream: StreamKind.CANCEL_COMPLETE,\n              streamId,\n              reason: wrapReason(reason),\n            });\n          }\n        );\n        streamSink.sinkCapability.reject(wrapReason(data.reason));\n        streamSink.isCancelled = true;\n        delete this.streamSinks[streamId];\n        break;\n      default:\n        throw new Error(\"Unexpected stream case\");\n    }\n  }\n\n  /**\n   * @private\n   */\n  async _deleteStreamController(streamController, streamId) {\n    // Delete the `streamController` only when the start, pull, and cancel\n    // capabilities have settled, to prevent `TypeError`s.\n    await Promise.allSettled([\n      streamController.startCall && streamController.startCall.promise,\n      streamController.pullCall && streamController.pullCall.promise,\n      streamController.cancelCall && streamController.cancelCall.promise,\n    ]);\n    delete this.streamControllers[streamId];\n  }\n\n  destroy() {\n    this.comObj.removeEventListener(\"message\", this._onComObjOnMessage);\n  }\n}\n\nexport { MessageHandler };\n","/* Copyright 2019 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { assert } from \"../shared/util.js\";\n\n/** @implements {IPDFStream} */\nclass PDFWorkerStream {\n  constructor(msgHandler) {\n    this._msgHandler = msgHandler;\n    this._contentLength = null;\n    this._fullRequestReader = null;\n    this._rangeRequestReaders = [];\n  }\n\n  getFullReader() {\n    assert(\n      !this._fullRequestReader,\n      \"PDFWorkerStream.getFullReader can only be called once.\"\n    );\n    this._fullRequestReader = new PDFWorkerStreamReader(this._msgHandler);\n    return this._fullRequestReader;\n  }\n\n  getRangeReader(begin, end) {\n    const reader = new PDFWorkerStreamRangeReader(begin, end, this._msgHandler);\n    this._rangeRequestReaders.push(reader);\n    return reader;\n  }\n\n  cancelAllRequests(reason) {\n    if (this._fullRequestReader) {\n      this._fullRequestReader.cancel(reason);\n    }\n    for (const reader of this._rangeRequestReaders.slice(0)) {\n      reader.cancel(reason);\n    }\n  }\n}\n\n/** @implements {IPDFStreamReader} */\nclass PDFWorkerStreamReader {\n  constructor(msgHandler) {\n    this._msgHandler = msgHandler;\n    this.onProgress = null;\n\n    this._contentLength = null;\n    this._isRangeSupported = false;\n    this._isStreamingSupported = false;\n\n    const readableStream = this._msgHandler.sendWithStream(\"GetReader\");\n    this._reader = readableStream.getReader();\n\n    this._headersReady = this._msgHandler\n      .sendWithPromise(\"ReaderHeadersReady\")\n      .then(data => {\n        this._isStreamingSupported = data.isStreamingSupported;\n        this._isRangeSupported = data.isRangeSupported;\n        this._contentLength = data.contentLength;\n      });\n  }\n\n  get headersReady() {\n    return this._headersReady;\n  }\n\n  get contentLength() {\n    return this._contentLength;\n  }\n\n  get isStreamingSupported() {\n    return this._isStreamingSupported;\n  }\n\n  get isRangeSupported() {\n    return this._isRangeSupported;\n  }\n\n  async read() {\n    const { value, done } = await this._reader.read();\n    if (done) {\n      return { value: undefined, done: true };\n    }\n    // `value` is wrapped into Uint8Array, we need to\n    // unwrap it to ArrayBuffer for further processing.\n    return { value: value.buffer, done: false };\n  }\n\n  cancel(reason) {\n    this._reader.cancel(reason);\n  }\n}\n\n/** @implements {IPDFStreamRangeReader} */\nclass PDFWorkerStreamRangeReader {\n  constructor(begin, end, msgHandler) {\n    this._msgHandler = msgHandler;\n    this.onProgress = null;\n\n    const readableStream = this._msgHandler.sendWithStream(\"GetRangeReader\", {\n      begin,\n      end,\n    });\n    this._reader = readableStream.getReader();\n  }\n\n  get isStreamingSupported() {\n    return false;\n  }\n\n  async read() {\n    const { value, done } = await this._reader.read();\n    if (done) {\n      return { value: undefined, done: true };\n    }\n    return { value: value.buffer, done: false };\n  }\n\n  cancel(reason) {\n    this._reader.cancel(reason);\n  }\n}\n\nexport { PDFWorkerStream };\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __w_pdfjs_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __w_pdfjs_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define getter functions for harmony exports\n__w_pdfjs_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__w_pdfjs_require__.o(definition, key) && !__w_pdfjs_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__w_pdfjs_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__w_pdfjs_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { WorkerMessageHandler } from \"./core/worker.js\";\n\n/* eslint-disable-next-line no-unused-vars */\nconst pdfjsVersion = PDFJSDev.eval(\"BUNDLE_VERSION\");\n/* eslint-disable-next-line no-unused-vars */\nconst pdfjsBuild = PDFJSDev.eval(\"BUNDLE_BUILD\");\n\nexport { WorkerMessageHandler };\n"],"names":["constructor","finished","finish","terminate","ensureNotTerminated","setup","testMessageProcessed","handler","data","setVerbosityLevel","WorkerMessageHandler","createDocumentHandler","terminated","cancelXHRs","WorkerTasks","verbosity","apiVersion","docParams","workerVersion","enumerableProperties","docId","docBaseUrl","workerHandlerName","task","i","pdfManager","isPureXfa","startWorkerTask","reason","finishWorkerTask","htmlForXfa","pdfManagerCapability","source","newPdfManager","cachedChunks","pdfStream","fullRequest","disableAutoFetch","msgHandler","password","length","rangeChunkSize","loaded","flushChunks","pdfFile","arraysToBytes","warn","readPromise","readChunk","arrayByteLength","total","Math","reject","pdfInfo","ex","pdfManagerReady","loadDocument","onFailure","evaluatorOptions","maxImageSize","disableFontFace","ignoreErrors","isEvalSupported","fontExtraProperties","useSystemFonts","cMapUrl","standardFontDataUrl","getPdfManager","stream","pageRef","Ref","ref","page","promises","pageIndex","newRefs","xfaData","refs","x","a","xfa","acroForm","xfaDatasetsRef","hasXfaDatasetsEntry","Array","ii","acroFormRef","xref","newXrefInfo","Object","infoObj","xrefInfo","isString","stringToPDFString","rootRef","encryptRef","newRef","infoRef","info","fileIds","originalData","hasXfa","start","VerbosityLevel","Date","intent","cacheKey","annotationStorage","operatorListInfo","sink","featureId","UNSUPPORTED_FEATURES","normalizeWhitespace","includeMarkedContent","combineTextItems","waitOn","cleanupPromise","setupDoc","initializeFromPort","maybePort","isMessagePort","IDENTITY_MATRIX","FONT_IDENTITY_MATRIX","RenderingIntentFlag","ANY","DISPLAY","PRINT","ANNOTATIONS_FORMS","ANNOTATIONS_STORAGE","ANNOTATIONS_DISABLE","OPLIST","AnnotationMode","DISABLE","ENABLE","ENABLE_FORMS","ENABLE_STORAGE","PermissionFlag","MODIFY_CONTENTS","COPY","MODIFY_ANNOTATIONS","FILL_INTERACTIVE_FORMS","COPY_FOR_ACCESSIBILITY","ASSEMBLE","PRINT_HIGH_QUALITY","TextRenderingMode","FILL","STROKE","FILL_STROKE","INVISIBLE","FILL_ADD_TO_PATH","STROKE_ADD_TO_PATH","FILL_STROKE_ADD_TO_PATH","ADD_TO_PATH","FILL_STROKE_MASK","ADD_TO_PATH_FLAG","ImageKind","GRAYSCALE_1BPP","RGB_24BPP","RGBA_32BPP","AnnotationType","TEXT","LINK","FREETEXT","LINE","SQUARE","CIRCLE","POLYGON","POLYLINE","HIGHLIGHT","UNDERLINE","SQUIGGLY","STRIKEOUT","STAMP","CARET","INK","POPUP","FILEATTACHMENT","SOUND","MOVIE","WIDGET","SCREEN","PRINTERMARK","TRAPNET","WATERMARK","THREED","REDACT","AnnotationStateModelType","MARKED","REVIEW","AnnotationMarkedState","UNMARKED","AnnotationReviewState","ACCEPTED","REJECTED","CANCELLED","COMPLETED","NONE","AnnotationReplyType","GROUP","REPLY","AnnotationFlag","HIDDEN","NOZOOM","NOROTATE","NOVIEW","READONLY","LOCKED","TOGGLENOVIEW","LOCKEDCONTENTS","AnnotationFieldFlag","REQUIRED","NOEXPORT","MULTILINE","PASSWORD","NOTOGGLETOOFF","RADIO","PUSHBUTTON","COMBO","EDIT","SORT","FILESELECT","MULTISELECT","DONOTSPELLCHECK","DONOTSCROLL","COMB","RICHTEXT","RADIOSINUNISON","COMMITONSELCHANGE","AnnotationBorderStyleType","SOLID","DASHED","BEVELED","INSET","AnnotationActionEventType","E","X","D","U","Fo","Bl","PO","PC","PV","PI","K","F","V","C","DocumentActionEventType","WC","WS","DS","WP","DP","PageActionEventType","O","StreamType","UNKNOWN","FLATE","LZW","DCT","JPX","JBIG","A85","AHX","CCF","RLX","FontType","TYPE1","TYPE1STANDARD","TYPE1C","CIDFONTTYPE0","CIDFONTTYPE0C","TRUETYPE","CIDFONTTYPE2","TYPE3","OPENTYPE","TYPE0","MMTYPE1","ERRORS","WARNINGS","INFOS","CMapCompressionType","BINARY","STREAM","OPS","dependency","setLineWidth","setLineCap","setLineJoin","setMiterLimit","setDash","setRenderingIntent","setFlatness","setGState","save","restore","transform","moveTo","lineTo","curveTo","curveTo2","curveTo3","closePath","rectangle","stroke","closeStroke","fill","eoFill","fillStroke","eoFillStroke","closeFillStroke","closeEOFillStroke","endPath","clip","eoClip","beginText","endText","setCharSpacing","setWordSpacing","setHScale","setLeading","setFont","setTextRenderingMode","setTextRise","moveText","setLeadingMoveText","setTextMatrix","nextLine","showText","showSpacedText","nextLineShowText","nextLineSetSpacingShowText","setCharWidth","setCharWidthAndBounds","setStrokeColorSpace","setFillColorSpace","setStrokeColor","setStrokeColorN","setFillColor","setFillColorN","setStrokeGray","setFillGray","setStrokeRGBColor","setFillRGBColor","setStrokeCMYKColor","setFillCMYKColor","shadingFill","beginInlineImage","beginImageData","endInlineImage","paintXObject","markPoint","markPointProps","beginMarkedContent","beginMarkedContentProps","endMarkedContent","beginCompat","endCompat","paintFormXObjectBegin","paintFormXObjectEnd","beginGroup","endGroup","beginAnnotations","endAnnotations","beginAnnotation","endAnnotation","paintJpegXObject","paintImageMaskXObject","paintImageMaskXObjectGroup","paintImageXObject","paintInlineImageXObject","paintInlineImageXObjectGroup","paintImageXObjectRepeat","paintImageMaskXObjectRepeat","paintSolidColorImageMask","constructPath","unknown","forms","javaScript","signatures","smask","shadingPattern","font","errorTilingPattern","errorExtGState","errorXObject","errorFontLoadType3","errorFontState","errorFontMissing","errorFontTranslate","errorColorSpace","errorOperatorList","errorFontToUnicode","errorFontLoadNative","errorFontBuildPath","errorFontGetPath","errorMarkedContent","errorContentSubStream","PasswordResponses","NEED_PASSWORD","INCORRECT_PASSWORD","Number","console","unreachable","base","other","url","baseUrl","options","dots","stringToUTF8String","absoluteUrl","_isValidProtocol","enumerable","configurable","writable","BaseException","NullCharactersRegExp","InvisibleCharactersRegExp","replaceInvisible","str","assert","bytes","MAX_ARGUMENT_COUNT","String","strBuf","chunkEnd","chunk","arr","resultLength","pos","item","stringToBytes","itemLength","value","obj","buffer8","view32","IsLittleEndianCached","shadow","isLittleEndian","IsEvalSupportedCached","hexNumbers","n","makeHexColor","m1","m2","applyTransform","xt","p","m","yt","applyInverseTransform","d","getAxialAlignedBoundingBox","p1","Util","p2","r","p3","p4","inverseTransform","apply3dTransform","v","singularValueDecompose2dScale","transpose","b","c","first","second","sx","sy","normalizeRect","rect","intersect","orderedX","rect1","rect2","orderedY","result","bezierBoundingBox","tvalues","bounds","t","b2ac","sqrtb2ac","t1","t2","j","jlen","mt","PDFStringTranslateTable","code","match","buf","char","decodeURIComponent","escape","unescape","encodeURIComponent","arr1","arr2","date","buffer","capability","isSettled","get","resolve","contentType","forceDataSchema","URL","type","digits","b1","b2","b3","d1","d2","d3","d4","isNodeJS","process","CIRCULAR_REF","Symbol","EOF","Name","nameCache","nameValue","_clearCache","Cmd","cmdCache","cmdValue","nonSerializable","assignXref","size","key2","key3","getAsync","getArray","getRaw","getKeys","getRawValues","set","has","forEach","callback","empty","emptyDict","merge","mergeSubDicts","mergedDict","properties","dict","property","values","subDict","Dict","refCache","toString","key","gen","refValue","parent","put","remove","clear","putAlias","isName","v1","v2","isEmpty","isDataLoaded","getByte","getBytes","forceClamped","peekByte","peekedByte","peekBytes","getUint16","b0","getInt32","getByteRange","getString","bytesToString","skip","reset","moveStart","makeSubStream","getBaseStreams","createValidAbsoluteUrl","onLoadedStream","ensureDoc","ensureXRef","ensureCatalog","getPage","fontFallback","loadXfaFonts","loadXfaImages","serializeXfaData","cleanup","manuallyTriggered","ensure","requestRange","requestLoadedStream","sendProgressiveData","updatePassword","parseDocBaseUrl","Promise","args","getMissingChunks","chunks","numChunksLoaded","onReceiveData","chunkSize","begin","end","beginChunk","endChunk","curChunk","onReceiveProgressiveData","position","ensureByte","ensureRange","nextEmptyChunk","numChunks","hasChunk","strEnd","subarray","ChunkedStreamSubstream","missingChunks","subStream","sendRequest","rangeReader","chunkData","requestAllChunks","_requestChunks","requestId","chunksNeeded","chunksToRequest","requestIds","groupedChunksToRequest","groupedChunk","getStream","requestRanges","ranges","range","groupChunks","groupedChunks","prevChunk","onProgress","isProgressive","loadedRequests","lastChunk","onError","getBeginChunk","getEndChunk","abort","lookup","initializer","_send","streamTypes","fontTypes","addStreamType","addFontType","stopWhenFound","visited","ROMAN_NUMBER_MAP","lowerCase","number","romanBuf","romanStr","offset","ch","positionPattern","component","name","parseInt","isRef","parents","entry","_collectJS","js","isStream","list","actions","additionalActionsDicts","additionalActions","action","eventType","actionDict","objectSize","XMLEntities","entity","DEFAULT_CSS_FONT_OBLIQUE","DEFAULT_CSS_FONT_WEIGHT","CSS_FONT_WEIGHT_VALUES","fontFamily","weight","fontWeight","cssFontInfo","angle","parseFloat","isNaN","italicAngle","URL_OPEN_METHODS","regex","jsUrl","newWindow","arrayBuffer","DEFAULT_USER_UNIT","LETTER_SIZE_MEDIABOX","idCounters","createObjId","getPageObjId","_getInheritableProperty","isDict","dictArray","content","resources","_getBoundingBox","box","mediaBox","cropBox","userUnit","isNum","view","isArrayEqual","rotate","_onSubStreamError","getContentStream","bbox","partialEvaluator","idFactory","fontCache","builtInCMapCache","standardFontDataCache","globalImageCache","newRefsPromises","annotation","loadResources","objectLoader","getOperatorList","contentStreamPromise","resourcesPromise","dataPromises","pageListPromise","opList","transparency","operatorList","annotations","pageOpList","renderForms","intentAny","intentDisplay","intentPrint","opListPromises","extractTextContent","getStructTree","structTreeRoot","structTree","_parseStructTree","tree","getAnnotationsData","annotationsData","annots","_parsedAnnotations","parsedAnnotations","annotationPromises","jsActions","collectActions","PDF_HEADER_SIGNATURE","STARTXREF_SIGNATURE","ENDOBJ_SIGNATURE","FINGERPRINT_FIRST_BYTES","EMPTY_FINGERPRINT","PDF_HEADER_VERSION_REGEXP","limit","backwards","signatureLength","signature","scanBytes","scanLength","signatureEnd","isArrayBuffer","getDocId","createFontId","parse","linearization","Linearization","err","startXRef","find","step","startXRefLength","found","isWhiteSpace","checkHeader","MAX_PDF_VERSION_LENGTH","version","parseStartXRef","numPages","num","_hasOnlyDocumentSignatures","recursionDepth","RECURSION_LIMIT","field","isSignature","isInvisible","entries","template","datasets","config","connectionSet","localeSet","stylesheet","xfaFactory","xfaImagesDict","keys","xfaImages","fontRes","pdfFonts","initialState","clone","fonts","descriptor","validateCSSFont","missingFonts","reallyMissingFonts","getXfaFontName","fontInfo","getXfaFontDict","formInfo","hasFields","hasAcroForm","hasSignatures","fields","sigFlags","hasOnlyDocumentSignatures","documentInfo","DocumentInfoValidators","Title","Author","Subject","Keywords","Creator","Producer","CreationDate","ModDate","Trapped","docInfo","PDFFormatVersion","Language","EncryptFilterName","IsLinearized","IsAcroFormPresent","IsXFAPresent","IsCollectionPresent","IsSignaturesPresent","infoDict","customValue","isBool","fingerprints","hash","hex","idArray","validate","hashOriginal","hashModified","calculateMD5","hexString","_getLinearizationPage","catalog","cachedPromise","promise","globalIdFactory","nonBlendModesSet","checkFirstPage","recoveryMode","checkLastPage","pagesTree","reasonAll","pageDict","_collectFieldObjects","partName","kids","fieldObjects","allFields","fieldPromises","allPromises","hasJSActions","_parseHasJSActions","fieldObject","object","calculationOrderIds","calculationOrder","ids","getXFAFontMap","factors","baseWidths","baseMapping","metrics","fontName","normalizeFontName","fontMap","rescaledBaseWidths","w","currentCode","newWidths","unicode1","unicode","currentArray","widths","getXfaFontWidths","systemInfo","CalibriBoldFactors","CalibriBoldMetrics","lineHeight","lineGap","CalibriBoldItalicFactors","CalibriBoldItalicMetrics","CalibriItalicFactors","CalibriItalicMetrics","CalibriRegularFactors","CalibriRegularMetrics","HelveticaBoldFactors","HelveticaBoldMetrics","HelveticaBoldItalicFactors","HelveticaBoldItalicMetrics","HelveticaItalicFactors","HelveticaItalicMetrics","HelveticaRegularFactors","HelveticaRegularMetrics","LiberationSansBoldWidths","LiberationSansBoldMapping","LiberationSansBoldItalicWidths","LiberationSansBoldItalicMapping","LiberationSansItalicWidths","LiberationSansItalicMapping","LiberationSansRegularWidths","LiberationSansRegularMapping","MyriadProBoldFactors","MyriadProBoldMetrics","MyriadProBoldItalicFactors","MyriadProBoldItalicMetrics","MyriadProItalicFactors","MyriadProItalicMetrics","MyriadProRegularFactors","MyriadProRegularMetrics","SegoeuiBoldFactors","SegoeuiBoldMetrics","SegoeuiBoldItalicFactors","SegoeuiBoldItalicMetrics","SegoeuiItalicFactors","SegoeuiItalicMetrics","SegoeuiRegularFactors","SegoeuiRegularMetrics","SEAC_ANALYSIS_ENABLED","FontFlags","FixedPitch","Serif","Symbolic","Script","Nonsymbolic","Italic","AllCap","SmallCap","ForceBold","MacStandardGlyphOrdering","isStandardFont","subtype","glyphsUnicodeMap","getUnicodeForGlyph","charCodeToGlyphId","isSymbolicFont","baseEncoding","charCode","glyphId","glyphNames","getEncoding","builtInEncoding","differences","glyphName","standardGlyphName","recoverGlyphName","ExpertEncoding","MacExpertEncoding","MacRomanEncoding","StandardEncoding","WinAnsiEncoding","SymbolSetEncoding","ZapfDingbatsEncoding","getGlyphsUnicode","getArrayLookupTableFactory","getDingbatsGlyphsUnicode","getSpecialPUASymbols","getLookupTableFactory","mapSpecialUnicodeValues","undefined","nameLen","hexStr","substring","toUpperCase","UnicodeRanges","getUnicodeRangeFor","isRTLRangeFor","getNormalizedUnicodes","reverseIfRtl","chars","charsLength","charCodeAt","push","join","create","collectFields","_create","id","parameters","fieldType","_getPageIndex","annotDict","defaultColor","rgbColor","color","ColorSpace","quadPoints","quadPointsLists","jj","y","quadPointsList","quadPoint","minX","minY","xRatio","yRatio","params","annotationFlags","borderStyle","backgroundColor","borderColor","contentsObj","hasAppearance","modificationDate","hasOwnCanvas","kidIds","kid","_hasFlag","_isViewable","_isPrintable","mustBeViewed","storageEntry","mustBePrinted","viewable","printable","_parseStringHelper","dir","bidi","setTitle","setContents","setModificationDate","setFlags","flags","hasFlag","setRectangle","setColor","getRgbColor","setBorderAndBackgroundColors","mk","setBorderStyle","dictType","array","setAppearance","appearanceStates","normalAppearanceState","as","appearance","isUsingOwnCanvas","appearanceDict","matrix","getTransformMatrix","fallbackFontDict","getFieldObject","strokeColor","fillColor","_constructFieldName","fieldName","loopDict","setWidth","width","maxWidth","maxHeight","setStyle","style","setDashArray","forceStyle","dashArray","isValid","allZeros","validNumber","element","setHorizontalCornerRadius","setVerticalCornerRadius","rawIRT","rt","XFAFactory","setCreationDate","_setDefaultAppearance","maxX","maxY","pointsArray","pointsCallback","formDict","appearanceStreamDict","appearanceStream","gsDict","stateDict","fieldValue","defaultFieldValue","defaultAppearance","parseDefaultAppearance","localResources","acroFormResources","appearanceResources","mergedResources","_decodeFormValue","formValue","hasFieldFlag","path","AP","encrypt","originalTransform","newTransform","isAscii","stringToUTF16BEString","bufferOriginal","writeDict","bufferNew","_getAppearance","isPassword","lineCount","defaultPadding","hPadding","totalHeight","totalWidth","descent","vPadding","alignment","encodedString","escapeString","renderedText","_getFontData","_computeFontSize","roundWithOneDigit","FONT_FACTOR","fontSize","numberOfLines","height","_renderText","glyphs","scale","glyph","shift","_getSaveFieldResources","localFont","acroFormFont","subFontDict","subResourcesDict","maximumLength","_getCombAppearance","combWidth","positions","text","renderedComb","_getMultilineAppearance","lines","padding","_splitLine","line","lastSpacePosInStringStart","lastSpacePosInStringEnd","lastSpacePos","startChunk","currentWidth","glyphWidth","defaultValue","multiline","charLimit","comb","editable","hidden","savedAppearance","_saveCheckbox","evaluator","_saveRadioButton","parentBuffer","parentTransform","_getDefaultCheckedAppearance","FONT_RATIO","xShift","yShift","_processCheckBox","customAppearance","normalAppearance","asValue","yes","exportValues","otherYes","_processRadioButton","fieldParent","fieldParentValue","_processPushButton","Catalog","destDict","resultObj","option","isOptionArray","exportValue","displayValue","numItems","multipleSelection","items","DEFAULT_ICON_SIZE","getQuadPoints","parentItem","parentSubtype","rawParent","parentRect","parentFlags","lineCoordinates","strokeAlpha","interiorColor","fillAlpha","borderWidth","borderAdjust","extra","points","controlPointsDistance","x0","y0","x1","y1","xMid","yMid","xOffset","yOffset","rawVertices","vertex","vertices","rawInkLists","inkList","blendMode","dy","xEnd","file","operation","fn","fontColor","colorCmd","escapePDFName","COMPONENTS","alpha01","w1","h1","newIndex","xScaled","w1Scanline","py","oldIndex","dest","src","getRgb","rgb","getRgbItem","getRgbBuffer","getOutputLength","isPassthrough","isDefaultDecode","fillRgb","count","originalWidth","rgbBuf","numComponentColors","needsResizing","originalHeight","allColors","bpc","colorMap","destPos","comps","rgbPos","resizeRgbImage","usesZeroToOneRange","_cache","csRef","csName","localColorSpaceCache","getCached","localColorSpace","parseAsync","parsedColorSpace","cachedColorSpace","_parse","cs","colorSpaces","resourcesCS","mode","whitePoint","blackPoint","gamma","numComps","alt","altCS","baseCS","hiVal","tintFn","pdfFunctionFactory","decode","singletons","tmpBuf","baseNumComps","baseBuf","scaled","tinted","srcOffset","inputLength","outputDelta","lookupPos","destOffset","decodeMap","q","bits","DeviceCmykCS","k","convertToRgb","CalGrayCS","A","AG","L","val","CalRGBCS","BRADFORD_SCALE_MATRIX","BRADFORD_SCALE_INVERSE_MATRIX","SRGB_D65_XYZ_TO_RGB_MATRIX","FLAT_WHITEPOINT_MATRIX","tempNormalizeMatrix","tempConvertMatrix1","tempConvertMatrix2","DECODE_L_CONSTANT","LMS","sourceWhitePoint","D65X","D65Y","D65Z","adjustToRange","decodeL","sourceBlackPoint","XYZ_Flat","zeroDecodeL","X_DST","X_SRC","Y_DST","Y_SRC","Z_DST","Z_SRC","X_Scale","X_Offset","Y_Scale","Y_Offset","Z_Scale","Z_Offset","XYZ_In","matrixProduct","LMS_Flat","convertToFlat","LMS_D65","convertToD65","B","AGR","BGG","CGB","Y","Z","XYZ","normalizeWhitePointToFlat","XYZ_Black","compensateBlackPoint","XYZ_D65","normalizeWhitePointToD65","SRGB","sRGBTransferFunction","XW","YW","ZW","XB","YB","ZB","LabCS","low2","Ls","bs","maxVal","M","N","fn_g","g","DefaultPartialEvaluatorOptions","PatternType","TILING","SHADING","TEXT_CHUNK_BATCH_SIZE","deferred","parsingArray","maybeBM","normalizeBlendMode","TIME_SLOT_DURATION_MS","CHECK_TIME_EVERY","check","TimeSlotManager","_pdfFunctionFactory","newOptions","newEvaluator","hasBlendModes","processed","nodes","node","graphicStates","graphicState","bm","xObjects","xObject","xResources","fetchBuiltInCMap","cachedData","response","fetch","cMapData","compressionType","fetchStandardFontData","standardFontNameToFileName","filename","buildFormXObject","xobj","optionalContent","group","groupOptions","isolated","knockout","groupSubtype","colorSpace","_sendImgData","cacheGlobally","transfers","imgData","buildPaintImageXObject","isInline","image","imageRef","h","imageMask","interpolate","bitStrideLength","imgArray","imageIsFromDecodeStream","inverseDecode","localImageCache","softMask","mask","SMALL_IMAGE_DIMENSIONS","imageObj","res","objId","PDFImage","byteSize","handleSMask","smaskContent","smaskOptions","backdrop","transferObj","isPDFFunction","transferFn","transferMap","tmp","stateManager","handleTransferFunction","transferArray","transferMaps","numFns","numEffectfulFns","handleTilingType","tilingOpList","patternResources","patternDict","operatorListIR","tilingPatternIR","getTilingPatternIR","localTilingPatternCache","handleSetFont","fontArgs","translated","loadedName","state","handleText","isAddToPathSet","PartialEvaluator","ensureStateFont","gStateRef","gState","isSimpleGState","gStateObj","gStateKeys","localGStateCache","loadFont","errorFont","fontRef","partialMsg","fontCapability","preEvaluatedFont","fontRefIsRef","fontID","fontAliases","aliasFontRef","translatedFont","fontFile3","fontType","getFontType","buildPath","parsingText","lastIndex","opArgs","parseColorSpace","parseShading","localShadingPatternCache","Pattern","patternIR","handleColorN","patternName","rawPattern","patterns","localTilingPattern","pattern","typeNum","shading","_parseVisibilityExpression","MAX_NESTING","operator","currentResult","raw","nestedResult","parseMarkedContentProps","contentProperties","optionalContentType","expression","optionalContentGroups","groupIds","ocg","policy","self","xobjs","preprocessor","timeSlotManager","next","promiseBody","isValidName","localImage","resolveXObject","globalImage","combinedGlyphs","arrLength","arrItem","shadingRes","patternId","localGStateObj","extGState","closePendingRestoreOPS","getTextContent","seenStyles","WhitespaceRegexp","DiacriticRegExp","NormalizedUnicodes","textContent","styles","textContentItem","initialized","vertical","prevTransform","textAdvanceScale","spaceInFlowMin","spaceInFlowMax","trackingSpaceMin","negativeSpaceMax","hasEOL","TRACKING_SPACE_FACTOR","NEGATIVE_SPACE_FACTOR","SPACE_IN_FLOW_MIN_FACTOR","SPACE_IN_FLOW_MAX_FACTOR","showSpacedTextBuffer","emptyXObjectCache","emptyGStateCache","textState","tsm","glyphHeight","ascent","trm","getCurrentTextTransform","scaleLineX","scaleCtmX","scaleFactor","textChunk","bidiResult","replaceWhitespace","currentTransform","posX","posY","lastPosX","lastPosY","advanceY","advanceX","appendEOL","flushTextContentItem","addFakeSpaces","charSpacing","scaledDim","glyphUnicode","compareWithLastPosition","ensureTextContentItem","transf","runBidiTransform","batch","enqueueChunk","fontNameArg","fontSizeArg","updateAdvanceScale","spaceFactor","elements","buildTextContentItem","extraSpacing","currentState","xObjStateManager","sinkWrapper","enqueueInvoked","enqueue","gStateFont","resolveGState","tag","mcid","stop","extractDataStructures","toUnicodePromise","baseDict","cidSystemInfo","registry","ordering","supplement","cidToGidMap","cidToGidBytes","baseEncodingName","encoding","diffEncoding","index","isNonsymbolicFont","readToUnicode","builtToUnicode","_simpleFontToUnicode","forceGlyphs","toUnicode","codeStr","buildToUnicode","ucs2CMapName","ucs2CMap","useCMap","cid","ucs2","cmap","map","token","w2","readCidToGidMap","glyphsData","glyphID","extractWidths","glyphsWidths","defaultWidth","glyphsVMetrics","vmetrics","defaultVMetrics","vmetric","firstChar","baseFontName","isMonospace","firstWidth","isSerifFont","fontNameWoStyle","getBaseFontMetrics","monospace","stdFontMap","lookupName","Metrics","glyphWidths","buildCharCodeToWidth","widthsByGlyphName","preEvaluateFont","composite","df","lastChar","diffLength","diffBuf","diffEntry","uint8array","widthsBuf","compositeWidths","subWidthsBuf","translateFont","isType3Font","isSimulatedFlags","xHeight","capHeight","standardFontName","getStandardFontName","newProperties","baseFont","fontNameStr","baseFontStr","fontFile","isInternalFont","glyphScaleFactors","subtypeEntry","length1","length2","length3","fixedPitch","fontMatrix","scaleFactors","cidEncoding","cMap","buildFontPaths","accent","send","fallback","loadType3Data","type3Evaluator","type3Dependencies","loadCharProcsPromise","charProcs","fontResources","charProcOperatorList","isEmptyBBox","glyphStream","dummyOperatorList","_removeType3ColorOperators","charBBox","old","prev","setTextLineMatrix","translateTextMatrix","translateTextLineMatrix","carriageReturn","opMap","getOPMap","numArgs","variableArgs","MAX_INVALID_PATH_OPS","lexer","EvaluatorPreprocessor","savedStatesDepth","read","cmd","opSpec","argsLength","nonProcessedArgs","preprocessCommand","BUILT_IN_CMAPS","MAX_MAP_RANGE","builtInCMap","addCodespaceRange","mapCidRange","high","low","dstLow","mapBfRange","lastByte","nextCharCode","mapBfRangeToArray","mapOne","contains","charCodeOf","getMap","readCharCode","codespaceRanges","nn","codespaceRange","kk","out","getCharCodeLength","isIdentityCMap","BinaryCMapReader","MAX_NUM_SIZE","MAX_ENCODED_NUM_SIZE","readByte","readNumber","last","readSigned","readHex","readHexNumber","stack","sp","bufferSize","readHexSigned","sign","readString","len","s","header","sequence","dataSize","ucs2DataSize","subitemsCount","addHex","hexToInt","incHex","hexToStr","extend","CMapFactory","isCmd","expectString","strToInt","dst","expectInt","parseWMode","parseCMapName","previous","embeddedUseCMap","parseCodespaceRange","parseBfChar","parseCidChar","parseBfRange","parseCidRange","extendCMap","createBuiltInCMap","useCodespaceRanges","parseCMap","parsedCMap","MAX_LENGTH_TO_CACHE","MAX_ADLER32_LENGTH","bytesLength","allowStreams","refill","tryShift","e","getObj","cipherTransform","buf1","findDefaultInlineStreamEnd","I","SPACE","LF","CR","NUL","startPos","maybeEIPos","followingBytes","nextObj","endOffset","findDCTDecodeInlineStreamEnd","foundEOI","markerLength","findASCII85DecodeInlineStreamEnd","TILDE","GT","tildePos","maybeEI","findASCIIHexDecodeInlineStreamEnd","inlineStreamSkipEI","makeInlineImage","dictLength","filter","filterName","filterZero","imageStream","imageBytes","initialStreamPos","dictBytes","computeAdler32","cacheEntry","_findStreamLength","SCAN_BLOCK_LENGTH","makeStream","ENDSTREAM_SIGNATURE","actualLength","MAX_TRUNCATION","TRUNCATED_SIGNATURE","maybeLength","filterArray","paramsArray","makeFilter","xrefStats","earlyChange","specialChars","knownCommands","nextChar","peekChar","getNumber","eNotation","divideBy","baseValue","powerValue","powerValueSign","currentDigit","numParen","done","charBuffered","getName","toHexDigit","previousCh","x2","_hexStringWarn","MAX_HEX_STRING_NUM_WARN","getHexString","isFirstHex","firstDigit","secondDigit","comment","nextCh","knownCommandFound","possibleCommand","peekObj","streamPos","currentChar","beginInlineImagePos","skipToNextLine","allowZeroValue","linDict","hints","hintsLength","hint","parser","obj1","obj2","obj3","getInt","getHints","objectNumberFirst","endFirst","mainXRefEntriesOffset","pageFirst","readBlock","TILDA_CHAR","Z_LOWER_CHAR","bufferLength","input","emptyBuffer","maybeMinBufferLength","ensureBuffer","requested","buffer2","bufEnd","streams","newLength","baseStreamsBuf","baseStreams","UPSTREAM_BLOCK_SIZE","maxDecodeLength","digit","EndOfLine","EncodedByteAlign","Columns","Rows","EndOfBlock","BlackIs1","ccittEOL","ccittEOF","twoDimPass","twoDimHoriz","twoDimVert0","twoDimVertR1","twoDimVertL1","twoDimVertR2","twoDimVertL2","twoDimVertR3","twoDimVertL3","twoDimTable","whiteTable1","whiteTable2","blackTable1","blackTable2","blackTable3","eoblock","code1","readNextChar","refLine","codingLine","columns","refPos","blackPixels","code2","code3","gotEOL","_addPixels","codingPos","a1","_addPixelsNeg","_findTableCode","limitValue","table","_getTwoDimCode","_getWhiteCode","_getBlackCode","_lookBits","_eatBits","codeLenCodeMap","lengthDecode","distDecode","fixedLitCodeTab","fixedDistCodeTab","cmf","flg","getBits","codeSize","codeBuf","getCode","codes","maxLen","codeLen","codeVal","generateHuffmanTable","lengths","hdr","blockLen","block","litCodeTable","distCodeTable","numLitCodes","numDistCodes","numCodeLenCodes","codeLenCodeLengths","codeLenCodeTab","codeLengths","bitsLength","bitsOffset","what","repeatLength","dist","jbig2Image","globalsStream","globals","dataLength","getContexts","decoder","contextCache","cache","contexts","bit","readBits","codeLength","SegmentTypes","CodingTemplates","RefinementTemplates","coding","reference","ReusedContexts","RefinementReusedContexts","decodingContext","bitmap","OLD_PIXEL_MASK","row","row1","row2","contextLabel","pixel","decodeMMRBitmap","templateIndex","at","decodeBitmapTemplate0","useskip","templateLength","templateX","templateY","changingTemplateEntries","reuseMask","changingEntriesLength","changingTemplateX","changingTemplateY","changingTemplateBit","sbb_left","sbb_top","sbb_right","pseudoPixelContext","ltp","sltp","i0","j0","codingTemplate","codingTemplateLength","codingTemplateX","codingTemplateY","referenceTemplate","referenceTemplateLength","referenceTemplateX","referenceTemplateY","referenceWidth","referenceBitmap","referenceHeight","huffman","newSymbols","currentHeight","symbolCodeLength","log2","symbols","tableB1","getStandardTable","symbolWidths","deltaHeight","huffmanTables","decodeInteger","firstSymbol","deltaWidth","numberOfInstances","decodeTextRegion","symbolId","decodeIAID","rdx","rdy","symbol","decodeRefinement","decodeBitmap","bitmapSize","huffmanInput","collectiveBitmap","readUncompressedBitmap","originalEnd","bitmapEnd","numberOfSymbolsDecoded","xMin","bitmapWidth","xMax","symbolBitmap","exportedSymbols","currentFlag","totalSymbolsLength","runLength","stripT","firstS","deltaT","deltaFirstS","currentS","currentT","stripSize","applyRefinement","refinement","inputSymbols","symbolWidth","symbolHeight","rdw","rdh","offsetT","offsetS","s2","symbolRow","deltaS","collectiveWidth","patternBitmap","patternWidth","combinationOperator","regionBitmap","numberOfPatterns","pattern0","patternHeight","bitsPerValue","grayScaleBitPlanes","mmrInput","mg","ng","patternIndex","gridOffsetX","gridOffsetY","regionRow","patternRow","regionY","regionX","segmentHeader","readUint32","segmentType","pageAssociationFieldSize","referredFlags","referredToCount","retainBits","referredToSegmentNumberSize","referredTo","readUint16","genericRegionInfo","readRegionSegmentInformation","genericRegionSegmentFlags","genericRegionMmr","searchPatternLength","searchPattern","segments","readSegmentHeader","segment","RegionSegmentInformationFieldLength","dictionary","dictionaryFlags","atLength","readInt8","textRegion","textRegionSegmentFlags","textRegionHuffmanFlags","patternDictionary","patternDictionaryFlags","halftoneRegion","halftoneRegionFlags","genericRegion","pageInfo","resolutionX","resolutionY","pageSegmentFlags","callbackName","visitor","processSegment","readSegments","processSegments","bitPacked","onPageInformation","rowSize","drawBitmap","regionInfo","mask0","offset0","onImmediateGenericRegion","region","onImmediateLosslessGenericRegion","onSymbolDictionary","getSymbolDictionaryHuffmanTables","referredSegments","referredSymbols","decodeSymbolDictionary","onImmediateTextRegion","getTextRegionHuffmanTables","onImmediateLosslessTextRegion","onPatternDictionary","decodePatternDictionary","onImmediateHalftoneRegion","decodeHalftoneRegion","onImmediateLosslessHalftoneRegion","onTables","customTables","decodeTablesSegment","lineData","buildTree","decodeNode","htOffset","reader","assignPrefixCodes","linesLength","prefixLengthMax","histogram","currentLength","firstCode","currentTemp","lowestValue","highestValue","prefixSizeBits","rangeSizeBits","currentRangeLow","prefixLength","rangeLength","standardTablesCache","readBit","numBits","byteAlign","currentIndex","runCodesTable","numberOfRepeats","repeatedLength","symbolIDTable","customIndex","tableFirstS","getCustomHuffmanTable","tableDeltaS","tableDeltaT","tableDeltaHeight","tableDeltaWidth","tableBitmapSize","tableAggregateInstances","eof","currentByte","endOfBlock","lookForEOFLimit","parseChunks","parseJbig2Chunks","parseJbig2","QeTable","qe","nmps","nlps","switchFlag","byteIn","bp","cx_index","cx_mps","qeTableIcx","qeIcx","jpegOptions","decodeTransform","colorTransform","decodeArr","bitsPerComponent","decodeArrLength","transformNeeded","maxValue","jpegImage","forceRGB","isSourcePDF","dctZigZag","dctCos1","dctSin1","dctCos3","dctSin3","dctCos6","dctSin6","dctSqrt2","dctSqrt1d2","children","parseDNLMarker","mcusPerLine","frame","progressive","startOffset","bitsData","bitsCount","nextByte","scanLines","maybeScanLines","blockRow","receive","decodeHuffman","diff","receiveAndExtend","rs","z","blockOffset","eobrun","successiveACState","offsetZ","successiveACNextValue","mcuRow","mcu","mcuCol","blockCol","getBlockBufferOffset","componentsLength","components","spectralStart","decodeFn","successivePrev","mcuExpected","mcuToRead","resetInterval","decodeBlock","decodeMcu","fileMarker","findNextFileMarker","qt","blockData","p0","blockBufferOffset","p5","p6","p7","v0","v3","v4","v7","v5","v6","col","blocksPerLine","blocksPerColumn","computationBuffer","quantizeAndInverse","maxPos","newPos","currentPos","currentMarker","invalid","marker","newMarker","dnlScanLines","mcusPerColumn","blocksPerLineForMcu","blocksPerColumnForMcu","blocksBufferSize","jfif","adobe","numSOSMarkers","quantizationTables","huffmanTablesAC","huffmanTablesDC","appData","readDataBlock","major","minor","densityUnits","xDensity","yDensity","thumbWidth","thumbHeight","thumbData","flags0","flags1","transformCode","quantizationTablesLength","quantizationTablesEnd","quantizationTableSpec","tableData","sofScanLines","componentsCount","maxH","maxV","componentId","qId","l","quantizationId","quantizationTable","prepareComponents","huffmanLength","huffmanTableSpec","codeLengthSum","huffmanValues","buildHuffmanTable","selectorsCount","componentIndex","tableSpec","spectralEnd","successiveApproximation","decodeScan","nextFileMarker","output","buildComponentData","scaleX","scaleY","_getLinearizedBlockData","numComponents","xScaleBlockOffset","mask3LSB","componentScaleX","componentScaleY","blocksPerScanline","lastComponentScaleX","_isColorConversionNeeded","_convertYccToRgb","Cb","Cr","_convertYcckToRgb","_convertYcckToCmyk","_convertCmykToRgb","getData","rgbData","grayColor","jpxImage","tileCount","tileComponents","tileWidth","tileHeight","tileLeft","tileTop","srcPosition","dataPosition","imgRowSize","tileRowSize","rowBytes","SubbandsGainLog2","LL","LH","HL","HH","head","headerSize","lbox","tbox","jumpDataLength","method","colorspace","headerType","parseImageProperties","newByte","oldByte","Xsiz","Ysiz","XOsiz","YOsiz","Csiz","parseCodestream","context","doNotRecover","siz","precision","isSigned","XRsiz","YRsiz","calculateComponentDimensions","calculateTileGrids","qcd","sqcd","spqcdSize","scalarExpounded","spqcds","spqcd","qcc","cqcc","cod","scod","blockStyle","precinctsSizes","precinctsSize","PPx","PPy","unsupported","tile","initializeTile","buildPackets","parseTilePackets","transformComponents","tiles","numXtiles","numYtiles","tileComponent","codOrCoc","precinctWidth","dimensions","precinctHeight","isZeroRes","resolution","precinctWidthInSubband","precinctHeightInSubband","numprecinctswide","numprecinctshigh","numprecincts","xcb_","ycb_","codeblockWidth","codeblockHeight","cbx0","subband","cby0","cbx1","cby1","precinctParameters","codeblocks","precincts","codeblock","cbx","cby","tbx0","tby0","tbx1","tby1","pi","pj","precinctNumber","precinct","cbxMin","cbyMin","cbxMax","cbyMax","numcodeblockwide","numcodeblockhigh","precinctCodeblocks","subbands","tileIndex","layersCount","maxDecompositionLevelsCount","packet","createPacket","maxNumPrecinctsInLevel","maxNumPrecincts","resolutions","getPrecinctSizesInImageScale","precinctsIterationSizes","px","decompositionLevelsCount","sizeInImageScale","getPrecinctIndexIfExist","pxIndex","precinctIterationSizes","pyIndex","startPrecinctRowIndex","minWidth","minHeight","maxNumWide","maxNumHigh","sizePerComponent","sizePerResolution","minWidthCurrentComponent","minHeightCurrentComponent","maxNumWideCurrentComponent","maxNumHighCurrentComponent","widthCurrentResolution","heightCurrentResolution","blocksDimensions","getBlocksDimensions","buildPrecincts","buildCodeblocks","bscale","resolutionSubbands","progressionOrder","skipNextBit","skipBytes","sopMarkerUsed","ephMarkerUsed","packetsIterator","alignToByte","skipMarkerIfEqual","layerNumber","queue","codeblockColumn","codeblockRow","codeblockIncluded","firstTimeInclusion","inclusionTree","zeroBitPlanesTree","valueReady","codingpasses","readCodingpasses","codingpassesLog2","codedDataLength","packetItem","right","bottom","blockWidth","blockHeight","bitModel","currentCodingpassType","totalLength","dataItem","encodedData","magnitude","bitsDecoded","magnitudeCorrection","reversible","interleave","levelOffset","nb","coefficients","mb","codingStyleParameters","quantizationParameters","guardBits","segmentationSymbolUsed","subbandCoefficients","mu","epsilon","gainLog2","delta","copyCoefficients","left","top","resultImages","transformedTiles","transformTile","tile0","fourComponents","y0items","y1items","y2items","y3items","component0","y2","qcdOrQcc","levelsLength","level","currentLevel","incrementValue","nextLevel","stopValue","propagateValues","levelIndex","currentValue","BitModel","UNIFORM_CONTEXT","RUNLENGTH_CONTEXT","LLAndLHContextsLabel","HLContextLabel","HHContextLabel","contextLabelTable","coefficientCount","coefficentsMagnitude","zeroBitPlanes","setDecoder","setNeighborsSignificance","neighborsSignificance","column","runSignificancePropagationPass","coefficentsSign","processingFlags","labels","processedInverseMask","processedMask","firstMagnitudeBitMask","i1","decision","decodeSignBit","significance1","sign1","sign0","contribution","horizontalContribution","decoded","runMagnitudeRefinementPass","width4","index0","indexNext","significance","runCleanupPass","oneRowDown","twoRowsDown","threeRowsDown","iNext","indexBase","checkAllEmpty","allEmpty","hasSignificantCoefficent","i2","checkSegmentationSymbol","calculate","ll","j1","j2","iterate","llWidth","llHeight","llItems","hl_lh_hh","bufferPadding","rowBuffer","numBuffers","colBuffers","currentBuffer","u","alpha","beta","K_","current","maxLzwDictionarySize","lzwState","nextCode","dictionaryValues","dictionaryLengths","dictionaryPrevCodes","currentSequence","currentSequenceLength","bitsCached","blockSize","decodedSizeDelta","estimatedDecodedSize","prevCode","decodedLength","currentBufferLength","hasPrev","predictor","colors","readBlockTiff","rawBytes","inbuf","outbuf","inbits","outbits","bytesPerPixel","sum","compArray","bitMask","readBlockPng","pixBytes","prevRow","up","upLeft","pa","pb","pc","repeatHeader","PRIVATE_USE_AREAS","PDF_GLYPH_SPACE_UNITS","EXPORT_DATA_PROPERTIES","EXPORT_DATA_EXTRA_PROPERTIES","matchesForCache","isTrueTypeFile","isTrueTypeCollectionFile","fileType","isOpenTypeFile","isType1File","isCFFFile","fileSubtype","glyphMap","toFontChar","shouldThrow","msg","newMap","privateUseAreaIndex","nextAvailableFontCharCode","privateUseOffetEnd","originalCharCode","hasGlyph","fontCharCode","codeIndices","getRanges","numTables","string16","string32","bmpLength","trailingRangesCount","segCount","searchParams","OpenTypeFileBuilder","startCount","endCount","idDeltas","idRangeOffsets","glyphsIds","bias","contiguous","startCode","format314","format31012","header31012","os2","selection","usWinAscent","override","unitsPerEm","yMax","yMin","ulUnicodeRange1","ulUnicodeRange2","ulUnicodeRange3","ulUnicodeRange4","firstCharIndex","lastCharIndex","typoAscent","typoDescent","winAscent","winDescent","proto","strings","createPostscriptName","stringsUnicode","strBufUnicode","names","platforms","encodings","languages","namesRecordCount","nameTable","strOffset","strs","nameRecord","baseName","serifFonts","fallbackName","getFontFileType","cff","adjustWidths","amendFallbackToUnicode","renderer","FontRendererFactory","exportData","extraProperties","exportDataProperties","fallbackToSystemFont","nonStdFontMap","isMappedToStandardFont","isNarrow","applyStandardFontGlyphMap","buildToFontChar","unicodeCharCode","checkAndRepair","VALID_TABLES","tables","readTableEntry","checksum","previousPosition","ttf","searchRange","entrySelector","rangeShift","ttcTag","ttc","majorVersion","minorVersion","numFonts","offsetTable","readTrueTypeCollectionHeader","fontNameParts","potentialHeader","readOpenTypeHeader","potentialTables","readTables","readNameTable","nameEntry","fallbackData","platformId","encodingId","mappings","hasShortCmap","canBreak","useTable","potentialTable","correctlySorted","nextBytes","nextPlatformId","int16","format","subHeaderKeys","maxSubHeaderKey","subHeaderKey","subHeaders","entryCount","idDelta","signedInt16","idRangePos","segIndex","offsetsCount","rangeOffset","offsetIndex","offsets","caretOffset","numOfMetrics","macStyle","headTable","numOfSidebearings","numGlyphs","numMissing","glyphProfile","sizeOfInstructions","sourceEnd","glyf","contoursCount","writeSignedInt16","flagsCount","endPoint","instructionsStart","instructionsLength","instructionsEnd","coordinatesLength","flag","xLength","yLength","xyLength","repeat","glyphDataLength","destStart","int32","indexToLocFormat","numGlyphsPlusOne","locaLength","itemSize","itemDecode","itemEncode","numGlyphsOut","dupFirstEntry","locaDataSize","locaData","loca","oldGlyfData","oldGlyfDataLength","newGlyfData","locaEntries","missingGlyphs","writeOffset","sanitizeGlyph","maxSizeOfInstructions","simpleGlyph","firstEntryLength","post","valid","glyphNameIndexes","customNames","stringLength","propertiesObj","FORMAT_0_HEADER_LENGTH","numRecords","stringsStart","records","NAME_RECORD_LENGTH","platform","language","record","nameIndex","TTOpsStackDeltas","lastEndf","lastDeff","callstack","functionsCalled","tooComplexToFollowFunctions","ttContext","inFDEF","ifLevel","inELSE","op","funcId","newStackLength","stackTop","stackDelta","foldTTTable","functionsDefined","functionsUsed","functionsStackDeltas","hintsValid","sanitizeTTProgram","checkInvalidFunctions","cvt","cvtData","ttcData","readTrueTypeCollectionData","isTrueType","isComposite","cffFile","isGlyphLocationsLong","glyfTable","locaTable","isLocationLong","advanceWidth","lsb","maxFunctionDefs","maxZones","sanitizeTTPrograms","sanitizeMetrics","sanitizeHead","glyphsInfo","sanitizeGlyphLocations","metricsOverride","readPostScriptTable","createPostTable","isCidToGidMapEmpty","convertCidString","cmapTable","readCmapTable","cmapPlatformId","cmapEncodingId","cmapMappings","cmapMappingsLength","forcePostTable","unicodeOrCharCode","glyphZeroId","newMapping","adjustMapping","createCmapTable","validateOS2Table","createOS2Table","compiler","createNameTable","namePrototype","builder","convert","adjustToUnicode","mapping","newCharCodeToGlyphId","charCodes","seacs","charset","seacMap","seac","baseGlyphName","accentGlyphName","baseGlyphId","accentGlyphId","accentOffset","getCharCodes","baseFontCharCode","createCharCode","accentFontCharCode","safeString16","charstrings","cffWidths","hmtx","charstring","spaceWidth","possibleSpaceReplacements","charcode","_charToGlyph","isSpace","widthCode","isInFont","operatorListId","fontChar","charsToGlyphs","getCharPositions","glyphCacheValues","encodeString","buffers","currentBuf","hasCurrentBufErrors","getCharCode","charCodeLength","error","MAX_SUBR_NESTING","CFFStandardStrings","NUM_STANDARD_CFF_STRINGS","CFFParser","CharstringValidationData","min","stackClearing","stem","resetStack","undefStack","CharstringValidationData12","stackFn","topDictIndex","stringIndex","globalSubrIndex","topDictParsed","topDict","charStringOffset","charStringIndex","fontBBox","fdArrayIndex","dictRaw","fontDict","charStringsAndSeacs","charStrings","localSubrIndex","fdSelect","fdArray","privateDict","parseHeader","hdrSize","offSize","endPos","parseDict","parseFloatOperand","operands","parseOperand","parseIndex","cffIndex","offsetSize","offsetStart","offsetEnd","parseNameIndex","parseStringIndex","createDict","cffDict","pair","parseCharString","stackSize","validationCommand","subrsIndex","subrNumber","parseCharStrings","callDepth","firstStackClearing","hasVStems","localSubrToUse","privateDictToUse","fdIndex","nominalWidth","emptyPrivateDictionary","parentDict","parsePrivateDict","privateOffset","privateDictEnd","dictData","subrsOffset","relativeOffset","parseCharsets","CFFCharsetPredefinedTypes","parseEncoding","predefined","supplementsCount","sid","dataStart","glyphsCount","rangesCount","gid","dataEnd","readSupplement","parseFDSelect","duplicateFirstGlyph","glyphZero","hasGlyphId","getSID","add","setByKey","valueLength","setByName","hasName","getByName","removeByName","createTables","keyToNameMap","nameToKeyMap","defaults","types","opcodes","order","layout","CFFTopDict","CFFDict","CFFPrivateDict","ISO_ADOBE","EXPERT","EXPERT_SUBSET","getFDIndex","glyphIndex","isTracking","track","setEntryLocation","dataOffset","offset1","offset2","offset3","offset4","compile","xuid","compiled","topDictTracker","fontDictTrackers","encodeNumber","EncodeFloatRegExp","encodeFloat","CFFCompiler","nibbles","encodeInteger","compileHeader","compileNameIndex","sanitizedName","compileTopDicts","dicts","fontDictTracker","fontDictData","trackers","compilePrivateDicts","privateDictTracker","privateDictData","outputLength","subrs","compileDict","offsetTracker","compileStringIndex","compileGlobalSubrIndex","compileCharStrings","charStringsIndex","compileCharset","numGlyphsLessNotDef","charsetIndex","numCharsets","warned","compileEncoding","compileFDSelect","lastFD","currentFD","numRanges","compileTypedArray","compileIndex","objects","lastOffset","ISOAdobeCharset","ExpertCharset","ExpertSubsetCharset","getStdFontMap","getFontNameToFileMap","getNonStdFontMap","getSerifFonts","getSymbolsFonts","getGlyphMapForStandardFonts","getSupplementalGlyphMapForArialBlack","getSupplementalGlyphMapForCalibri","amend","getCharset","getGlyphMapping","charsets","type1FontGlyphMapping","_createBuiltInEncoding","numSubrs","getUshort","getLong","idOffset","groups","gsubrs","isCFFCIDFont","cmds","numberOfContours","arg1","arg2","scale01","scale10","subglyph","compileGlyf","endPtsOfContours","instructionLength","numberOfPoints","startPoint","contour","quadraticCurveTo","stems","stackClean","xa","ya","xb","yb","bezierCurveTo","subrCode","getSubroutineBias","y3","achar","bchar","lookupCmap","compileCharString","NOOP","getPathJs","compileGlyph","compileGlyphImpl","hasBuiltPath","cffInfo","glyphNameMap","parseCmap","parseCff","parseGlyfTable","ON_CURVE_POINT","X_SHORT_VECTOR","Y_SHORT_VECTOR","REPEAT_FLAG","X_IS_SAME_OR_POSITIVE_X_SHORT_VECTOR","Y_IS_SAME_OR_POSITIVE_Y_SHORT_VECTOR","OVERLAP_SIMPLE","ARG_1_AND_2_ARE_WORDS","ARGS_ARE_XY_VALUES","WE_HAVE_A_SCALE","MORE_COMPONENTS","WE_HAVE_AN_X_AND_Y_SCALE","WE_HAVE_A_TWO_BY_TWO","WE_HAVE_INSTRUCTIONS","Glyph","getSize","write","totalSize","locaIndex","simple","composites","GlyphHeader","CompositeGlyph","SimpleGlyph","spos","xMiddle","endPt","numberOfPt","instructions","allXCoordinates","xCoordinates","yCoordinates","pointFlags","contours","endPtsOfContoursIndex","lastCoordinate","lastX","lastY","abs","argument1","argument2","abs1","abs2","OTF_HEADER_SIZE","OTF_TABLE_ENTRY_SIZE","getSearchParams","maxPower2","entrySize","toArray","sfnt","tablesNames","tableOffsets","paddedLength","writeData","writeInt16","tableName","quad","writeInt32","addTable","streamBytesLength","streamBytes","EEXEC_SIGNATURE","streamStartPos","headerBytes","headerBytesLength","findBlock","suggestedLength","eexecBytes","PFB_HEADER_SIZE","headerBlockLength","eexecBlockLength","pfbHeader","pfbHeaderPresent","headerBlock","getHeaderBlock","headerBlockParser","eexecBlock","getEexecBlock","eexecBlockParser","type2Charstrings","charstringsLen","getSeacs","getType2Charstrings","type1Charstrings","getType2Subrs","type1Subrs","type2Subrs","wrap","charsetArray","subrIndex","HINTING_ENABLED","Type1CharString","COMMAND_MAP","hstem","vstem","vmoveto","rlineto","hlineto","vlineto","rrcurveto","callsubr","flex","drop","endchar","rmoveto","hmoveto","vhcurveto","hvcurveto","encoded","wx","sbx","asb","sby","num2","num1","flexArgs","executeCommand","stackLength","howManyArgs","Type1Parser","EEXEC_ENCRYPT_KEY","CHAR_STRS_ENCRYPT_KEY","discardNumber","c1","c2","decrypted","digit1","isHexDigit","digit2","isBinary","decrypt","decryptAscii","readNumberArray","readInt","readBoolean","getToken","isSpecial","readCharStrings","lenIV","extractFontProgram","privateData","program","blueArray","charString","charStringObject","extractFontHeader","encodingArg","ShadingType","FUNCTION_BASED","AXIAL","RADIAL","FREE_FORM_MESH","LATTICE_FORM_MESH","COONS_PATCH_MESH","TENSOR_PATCH_MESH","SMALL_NUMBER","getIR","t0","domainArr","extendStart","extendEnd","extendArr","distance","r1","r2","fnObj","NUMBER_OF_SAMPLES","colorStops","ratio","cssColor","background","BaseShading","coordsArr","shadingType","r0","csNumComps","hasData","align","readFlag","readCoordinate","bitsPerCoordinate","xi","yi","readComponents","ci","getB","lut","t_","buildB","MIN_SPLIT_PATCH_CHUNKS_AMOUNT","MAX_SPLIT_PATCH_CHUNKS_AMOUNT","TRIANGLE_DENSITY","decodeContext","bitsPerFlag","colorFn","patchMesh","verticesPerRow","_decodeType4Shading","coords","operators","ps","verticesLeft","f","coord","_decodeType5Shading","_decodeType6Shading","tmp1","tmp2","tmp3","tmp4","_decodeType7Shading","_buildFigureFromPatch","figure","figureMinX","figureMinY","figureMaxX","figureMaxY","splitXBy","MeshShading","splitYBy","figureCoords","figureColors","cl","cr","c0","c3","bRow","bCol","newColor","_updateBounds","_packData","coordsPacked","xy","colorsPacked","figures","xstep","ystep","paintType","tilingType","cachedFunction","parsedFunction","createFromArray","fnRef","localFunction","_localFunctionCache","getSampleArray","sampleMul","strBytes","strIdx","parseArray","fnArray","constructSampled","ymin","domain","toNumberArray","inputSize","outputSize","toMultiArray","bps","encode","samples","cubeVertices","cubeN","cubeVertex","domain_2i","domain_2i_1","size_i","e0","n0","n1","rj","constructInterpolated","constructStiched","fnRefs","fns","dmin","dmax","rmin","rmax","constructPostScript","numOutputs","numInputs","MAX_CACHE_SIZE","cache_available","cachedValue","stackIndex","bound","fnDict","MAX_STACK_SIZE","PostScriptStack","pop","copy","roll","execute","counter","PostScriptCompiler","visit","arg","visitArgument","visitVariable","variable","visitLiteral","literal","visitBinaryOperation","visitVariableDefinition","definition","visitMin","max","lastRegister","buildAddOperation","buildMulOperation","buildSubOperation","ast1","ast2","tmpVar","buildMinOperation","statementBuilder","instruction","expr","nextToken","accept","expect","PostScriptTokenTypes","parseBlock","parseCondition","conditionLocation","jumpLocation","endOfTrue","LBRACE","RBRACE","NUMBER","OPERATOR","IF","IFELSE","opCache","getOperator","opValue","PostScriptToken","getByRef","onlyRefs","NUM_PAGES_THRESHOLD","MIN_IMAGES_TO_CACHE","MAX_BYTE_SIZE","_byteSize","imageData","_cacheLimitReached","GlobalImageCache","shouldCache","pageIndexSet","addPageIndex","addByteSize","setData","onlyData","baseTypes","arabicTypes","temp","startLevel","isLTR","strLength","createBidiText","numBidi","charType","levels","isOdd","sor","eor","lastType","findUnequal","before","after","setValues","isEven","highestLevel","lowestOddLevel","reverseValues","getMetrics","SEED","MASK_HIGH","MASK_LOW","seed","update","blockCounts","tailLength","dataUint32","k1","k2","h2","C1","C2","C1_LOW","C2_LOW","hexdigest","hex1","hex2","iFirstPIMXO","iFirstSave","argsArray","InitialState","addState","MIN_IMAGES_IN_INLINE_IMAGES_BLOCK","MAX_IMAGES_IN_INLINE_IMAGES_BLOCK","MAX_WIDTH","IMAGE_PADDING","curr","iFirstTransform","iFirstPIIXO","maxLineHeight","currentX","currentY","img","imgWidth","imgHeight","kind","MIN_IMAGES_IN_MASKS_BLOCK","MAX_IMAGES_IN_MASKS_BLOCK","MAX_SAME_IMAGES_IN_MASKS_BLOCK","handlePaintSolidColorImageMask","isSameImage","firstPIMXOArg0","firstTransformArg0","firstTransformArg1","firstTransformArg2","firstTransformArg3","iTransform","iPIMXO","transformArgs","images","maskParams","iFirstPIXO","firstPIXOArg0","MIN_IMAGES_IN_BLOCK","MAX_IMAGES_IN_BLOCK","iFirstSetFont","firstSetFontArg0","firstSetFontArg1","MIN_CHARS_IN_BLOCK","MAX_CHARS_IN_BLOCK","iFirstBeginText","iFirstSetTextMatrix","iFirstShowText","iFirstEndText","iFirst","iEndText","_optimize","flush","iCurr","CHUNK_SIZE","CHUNK_SIZE_ABOUT","streamSink","ready","addOp","OperatorList","addDependency","addDependencies","addOpList","_transfers","addend","isMask","isIndexed","maskDict","buildImage","smaskData","maskData","createMask","computedLength","haveFullData","drawWidth","drawHeight","decodeBuffer","decodeAddends","decodeCoefficients","decodeAndClamp","getComponents","bufferPos","rowComps","loop1End","loop2End","remainingBits","fillOpacity","sw","sh","alphaBuf","resizeImageMask","opacity","imageOffset","maskOffset","rgbaBuf","undoPreblend","matte","matteRgb","matteR","matteG","matteB","createImageData","forceRGBA","newArray","imageLength","actualHeight","maybeUndoPreblend","fillGrayBuffer","getImageBytes","lang","needsRendering","collection","metadata","streamRef","suppressEncryption","markInfo","_readMarkInfo","Marked","UserProperties","Suspects","_readStructTreeRoot","root","toplevelPagesDict","pagesObj","documentOutline","_readDocumentOutline","blackColor","outlineDict","title","outlineItem","unsafeUrl","bold","italic","permissions","_readPermissions","optionalContentConfig","defaultConfig","groupsData","groupRefs","groupRef","_readOptionalContentConfig","onParsed","contentGroupRefs","nestedLevels","parsedOrderRefs","nestedOrder","parseNestedOrder","hiddenGroups","nestedName","parseOrder","MAX_NESTED_LEVELS","creator","baseState","on","parseOnOff","off","setActualNumPages","hasActualNumPages","_pagesCount","destinations","dests","fetchDestination","getDestination","allDest","_readDests","pageLabels","_readPageLabels","prefix","numberTree","nums","currentLabel","labelDict","st","toRomanNumerals","LIMIT","A_UPPER_CASE","A_LOWER_CASE","baseCharCode","letterIndex","character","charBuf","pageLayout","pageMode","viewerPreferences","ViewerPreferencesValidators","HideToolbar","HideMenubar","HideWindowUI","FitWindow","CenterWindow","DisplayDocTitle","NonFullScreenPageMode","Direction","ViewArea","ViewClip","PrintArea","PrintClip","PrintScaling","Duplex","PickTrayByPDFSize","PrintPageRange","NumCopies","prefs","prefValue","openAction","attachments","nameTree","fs","_collectJavaScript","jsDict","appendIfJavaScriptDict","translatedFonts","getPageDict","nodesToVisit","visitedNodes","pagesRef","pageKidsCountCache","currentPageIndex","currentNode","getAllPageDicts","posInKids","queueItem","addPageError","kidObj","addPageDict","getPageIndex","cachedPageIndex","isRefsEqual","parentRef","kidPromises","parseDestDictionary","actionType","actionName","include","urlDict","remoteDest","JSON","namedAction","jsAction","jsURL","recoverJsURL","addDefaultProtocol","tryConvertEncoding","getAll","kidsOrEntries","loopCount","MAX_LEVELS","limits","currentKey","pickPlatformItem","fileObj","serializable","lowerCaseName","xmlDocument","_repair","_getSequence","_parseArray","rdf","desc","parsedData","rawData","XMLParserErrorCode","NoError","EndOfDocument","UnterminatedCdat","UnterminatedXmlDeclaration","UnterminatedDoctypeDeclaration","UnterminatedComment","MalformedElement","OutOfMemory","UnterminatedAttributeValue","UnterminatedElement","ElementNeverBegun","isWhitespace","_resolveEntities","_parseContent","attributes","skipWs","attrName","attrValue","attrEndChar","attrEndIndex","parsed","_parseProcessingInstruction","attrStart","parseXml","ch2","q2","complexDoctype","doctypeContent","isClosed","onResolveEntity","onPi","onComment","onCdata","onDoctype","onText","onBeginElement","onEndElement","firstChild","nextSibling","childNodes","child","hasChildNodes","searchNode","paths","siblingPos","dump","encodeToXmlString","attribute","hasAttributes","parseFromString","isWhitespaceString","lastElement","MAX_DEPTH","StructElementType","PAGE_CONTENT","STREAM_CONTENT","OBJECT","ELEMENT","init","readRoleMap","roleMapDict","role","nameObj","parseKids","pageObjId","objRef","parseKid","kidDict","refObjId","parentTree","parentArray","addNode","parentNode","addTopLevelNode","kidRef","kidElement","nodeToSerializable","mayHaveChildren","load","rawValue","_walk","nodesToRevisit","pendingRequests","manager","foundMissingData","addChildren","writeValue","string","roundedValue","writeArray","numberToString","writeStream","time","md5Buffer","filesize","md5BufferLen","writeString","xml","parseXFAPath","oldXfa","newXfa","writeXFADataForAcroform","updateXFA","newXref","refForXrefTable","baseOffset","xrefTableData","indexes","maxOffset","md5","computeMD5","sizes","structSize","tableLength","bufferLen","footer","writeInt","keyLength","encryptBlock","decryptBlock","h0","h3","padded","rotateArg","highInteger","lowInteger","and","word","xor","or","shiftRight","places","shiftLeft","rotateRight","not","lowAdd","highAdd","copyTo","assign","calculateSHA256","rotr","h4","h5","h6","h7","littleSigmaPrime","littleSigma","sigmaPrime","sigma","maj","calculateSHA512","mode384","_expandKey","_decrypt","s0","s1","s3","_encrypt","_decryptBlock2","sourceLength","iv","plain","lastBlock","psLen","cipher","rcon","t3","t4","checkOwnerPassword","hashData","ownerValidationSalt","checkUserPassword","getOwnerKey","ownerKeySalt","getUserKey","PDF20","combinedLength","userBytes","combinedArray","remainder","calculateSHA384","calculatePDF20Hash","createStream","decryptString","encryptString","strLen","pad","crypto","CipherTransformFactory","defaultPasswordBytes","passwordLength","revision","pdfAlgorithm","hashDataSize","ownerPassword","fileId","keyLengthInBytes","encryptionKey","checkData","derivedKey","userPassword","identityName","isAes","cryptFilter","cf","cfm","buildObjectKey","algorithm","cfDict","streamCryptoName","handlerDict","encryptMetadata","fileIdBytes","utf8StringToString","passwordBytes","prepareKeyData","uBytes","userValidationSalt","userKeySalt","ownerEncryption","userEncryption","perms","createEncryptionKey20","decodedPassword","decodeUserPassword","createCipherTransform","buildCipherConstructor","cipherConstructor","hasMoreData","binder","_createPagesHelper","iterator","nextIteration","setTimeout","_createPages","getBoundingBox","getNumPages","setImages","setFonts","typeface","stripQuotes","appendFonts","getPages","pages","serializeData","_createDocument","getRichTextAsHtml","newRoot","XhtmlNamespace","attr","$acceptWhitespace","$addHTML","$appendChild","$childrenToHTML","$clean","$cleanPage","$cleanup","$clone","$consumed","$content","$data","$dump","$extra","$finalize","$flushHTML","$getAttributeIt","$getAttributes","$getAvailableSpace","$getChildrenByClass","$getChildrenByName","$getChildrenByNameIt","$getDataValue","$getExtra","$getRealChildrenByNameIt","$getChildren","$getContainedChildren","$getNextPage","$getSubformParent","$getParent","$getTemplateRoot","$globalData","$hasSettableValue","$ids","$indexOf","$insertAt","$isCDATAXml","$isBindable","$isDataValue","$isDescendent","$isNsAgnostic","$isSplittable","$isThereMoreWidth","$isTransparent","$isUsable","$lastAttribute","$namespaceId","$nodeName","$nsAttributes","$onChild","$onChildCheck","$onText","$pushGlyphs","$popPara","$pushPara","$removeChild","$root","$resolvePrototypes","$searchNode","$setId","$setSetAttributes","$setValue","$tabIndex","$text","$toPages","$toHTML","$toString","$toStyle","$uid","_applyPrototype","_attributes","_attributeNames","_children","_cloneAttribute","_dataValue","_defaultValue","_filteredChildrenGenerator","_getPrototype","_getUnsetAttributes","_hasChildren","_max","_options","_parent","_resolvePrototypesHelper","_setAttributes","_validator","uid","NS_DATASETS","NamespaceIds","hasChildren","dumped","HTMLResult","availableSpace","allAttr","setAttr","ancestors","somExpression","usehref","use","protoProto","newAncestors","protoValue","XFAObject","clonedChild","allTransparent","dataNode","tagName","utf8TagName","utf8Name","hasNS","dimConverters","pt","cm","mm","in","measurementPattern","def","getMeasurement","conv","den","excluded","viewname","FAILURE","EMPTY","isBreak","breakNode","success","$buildXFAObject","ns","form","pdf","sourceSet","xdc","xdp","xfdf","xhtml","xmpmeta","namePattern","indexPattern","dot","dotDot","dotHash","dotBracket","dotParen","shortcuts","somCache","noExpr","cacheName","formCalc","dotDotAllowed","useCache","parseExpression","isQualified","container","cached","isFinite","acc","nsId","createNodes","_isConsumeData","_isMatchTemplate","bind","_bindValue","formNode","createText","_findDataByNameToConsume","generator","isValue","_setProperties","targetNodes","targetNode","targetParent","attrs","Reflect","_bindItems","labelNodes","labelNode","valueNodes","valueNode","label","_bindOccurrences","matches","baseClone","_createOccurrences","occur","currentNumber","nodeClone","_getOccurInfo","_setAndBind","_bindElement","uselessNodes","dataChildren","dataChild","global","picture","createDataNode","TEMPLATE_NS_ID","SVG_NS","MAX_ATTEMPTS_FOR_LRTB_LAYOUT","MAX_EMPTY_PAGES","DEFAULT_TAB_INDEX","HEADING_PATTERN","MIMES","IMAGES_HEADERS","borderExtra","templateNode","nodeValue","assist","assistTitle","ariaRole","ariaLevel","class","target","pageArea","nextPageArea","contentAreas","indexForCurrent","indexForTarget","currentPageArea","saved","savedMethod","extraNode","edge","edgeStyle","measureToString","xmlns","overflow","arc","cx","cy","rx","ry","startAngle","sweepAngle","largeArc","vectorEffect","viewBox","preserveAspectRatio","svg","hasMargin","display","getRelevant","getContainedChildren","toStyle","isPrintOnly","html","getRatio","valueToHtml","edges","defaultEdge","insets","edgeStyles","cornerStyles","grandpa","htmlButton","event","href","fixURL","_setValue","savedReserve","setPara","exportedValue","checked","fieldId","groupId","className","dataId","xfaOn","xfaOff","ariaLabel","ui","optionStyle","displayedIndex","saveIndex","displayed","selected","selectAttributes","getStringOption","getColor","classNames","setTabIndex","fixDimensions","savedW","savedH","layoutNode","isBroken","setFirstUnsplittable","checkDimensions","unsetFirstUnsplittable","setMinMaxDimensions","applyAssist","computeBbox","createWrapper","linecap","flushHTML","addHTML","getAvailableSpace","setAccess","attempt","numberInLine","prevHeight","isSplittable","columnWidths","layoutClass","isLrTb","maxRun","marginH","marginV","caption","borderDims","uiW","uiH","getBorderDims","aElement","htmlValue","captionHeight","inputHeight","ggrandpa","propName","altPropName","setFontFamily","atob","blob","objectFit","thickness","startColor","endColor","margin","getBBox","originalMin","leader","trailer","addLeader","addTrailer","numberOfUse","xfaName","pageSetIndex","pageNumber","parity","fixTextIndent","corner","cornerStyle","bgColor","targetType","startNew","breakBefore","handleBreak","savedNoLayoutFailure","overflowExtra","handleOverflow","breakAfter","kv","overflowNode","firstUnsplittable","currentContentArea","noLayoutFailure","pagePosition","oddOrEven","blankOrNotBlank","paraStack","pageAreas","mainHtml","breakBeforeTarget","pageAreaParent","hasSomething","hasSomethingCounter","startIndex","targetPageArea","htmlContentAreas","contentArea","space","para","valueName","TemplateNamespace","appearanceFilter","area","barcode","bindItems","bookend","boolean","border","break","button","certificate","certificates","checkButton","choiceList","connect","dateTime","dateTimeEdit","decimal","defaultUi","digestMethod","digestMethods","draw","encryptData","encryption","encryptionMethod","encryptionMethods","exData","exObject","exclGroup","extras","float","hyphenation","imageEdit","integer","issuers","keep","keyUsage","linear","lockDocument","manifest","mdp","medium","message","numericEdit","oid","oids","pageSet","passwordEdit","radial","reasons","script","setProperty","signData","signing","solid","speak","stipple","subform","subformSet","subjectDN","subjectDNs","submit","textEdit","timeStamp","toolTip","traversal","traverse","variables","htmlFromFailing","createLine","ERROR","getTransformedBBox","converters","anchorType","colSpan","presence","hAlign","measure","fontFinder","layoutText","newStyle","wrapper","insetsH","insetsW","indent","nodeStyle","getCurrentPara","valueStyle","paraStyle","xfaFont","pdfFont","selectFont","myriad","addPdfFont","getDefault","mustWarn","maybe","family","real","lineNoGap","WIDTH_FACTOR","posture","letterSpacing","defaultFont","pushData","lastFont","popFont","topFont","addPara","addString","fontLineHeight","noGap","firstLineHeight","fallbackWidth","encodedLine","compute","lastSpaceWidth","currentLineWidth","currentLineHeight","isFirstLine","serialize","storage","rootNameSpace","richText","usedTypefaces","_mkAttributes","namespace","prefixes","attributeObj","nsAttrs","_getNameAndPrefix","nsAgnostic","buildRoot","build","hasNamespaceDef","dataTemplate","NamespaceSetUp","xfaAttrs","nsToUse","namespaceToUse","hasNamespace","isNsAgnostic","_searchNamespace","_addNamespacePrefix","prefixStack","_getNamespaceToUse","clean","connection","CONFIG_NS_ID","unicodeRange","unicodeRegex","numbers","ConfigNamespace","acrobat","acrobat7","ADBE_JSConsole","ADBE_JSDebugger","addSilentPrint","addViewerPreferences","adjustData","adobeExtensionLevel","agent","alwaysEmbed","amd","autoSave","batchOutput","behaviorOverride","change","common","compress","compressLogicalStructure","compressObjectStream","compression","conformance","contentCopy","copies","currentPage","debug","defaultTypeface","destination","documentAssembly","driver","duplexOption","dynamicRender","embed","encryptionLevel","enforce","equate","equateRange","exclude","excludeNS","flipLabel","formFieldFilling","groupParent","ifEmpty","includeXDPContent","incrementalLoad","incrementalMerge","interactive","jog","labelPrinter","linearized","locale","log","mediumInfo","messaging","modifyAnnots","msgId","nameAttr","neverEmbed","numberOfCopies","outputBin","outputXSL","overprint","packets","pageOffset","pageRange","pagination","paginationOverride","part","pcl","pdfa","pickTrayByPDFSize","plaintextMetadata","present","print","printHighQuality","printScaling","printerName","producer","relevant","rename","renderPolicy","runScripts","scriptModel","severity","silentPrint","staple","startNode","startPage","submitFormat","submitUrl","subsetBelow","suppressBanner","tagged","templateCache","threshold","to","trace","uri","validateApprovalSignatures","validationMessaging","versionControl","webClient","whitespace","window","xsl","zpl","CONNECTION_SET_NS_ID","ConnectionSetNamespace","effectiveInputPolicy","effectiveOutputPolicy","rootElement","soapAction","soapAddress","wsdlAddress","wsdlConnection","xmlConnection","xsdConnection","DATASETS_NS_ID","DatasetsNamespace","LOCALE_SET_NS_ID","LocaleSetNamespace","calendarSymbols","currencySymbol","currencySymbols","datePattern","datePatterns","dateTimeSymbols","day","dayNames","era","eraNames","meridiem","meridiemNames","month","monthNames","numberPattern","numberPatterns","numberSymbol","numberSymbols","timePattern","timePatterns","typeFace","typeFaces","SIGNATURE_NS_ID","SignatureNamespace","STYLESHEET_NS_ID","StylesheetNamespace","XDP_NS_ID","XdpNamespace","XHTML_NS_ID","$richText","VALID_STYLES","StyleMapping","original","spacesRegExp","crlfRegExp","crlfForRichTextRegExp","styleStr","newValue","SUB_SUPER_SCRIPT_FACTOR","VERTICAL_FACTOR","NoWhites","checkStyle","mustPop","mapStyle","siblings","body","br","li","ol","span","sub","sup","ul","getNewRef","resetNewRef","setStartXRef","trailerDict","processXRefTable","entryNum","parserBuf1","parserBuf2","readXRefTable","tableState","processXRefStream","streamParameters","byteWidths","entryRanges","readXRefStream","streamState","generation","typeByte","typeFieldWidth","offsetByte","generationByte","indexObjects","TAB","PERCENT","LT","skipped","objRegExp","endobjRegExp","nestedObjRegExp","CHECK_CONTENT_LENGTH","trailerBytes","startxrefBytes","objBytes","xrefBytes","trailers","xrefStms","readToken","skipUntil","updateEntries","uncompressed","contentLength","checkPos","tokenStr","objToken","xrefTagOffset","rootDict","pagesDict","pagesCount","readXRef","startXRefParsedCache","getEntry","xrefEntry","fetchIfRef","fetchUncompressed","fetchCompressed","tableOffset","fetchIfRefAsync","fetchAsync","getCatalogObj","CallbackKind","DATA","StreamKind","CANCEL","CANCEL_COMPLETE","CLOSE","ENQUEUE","PULL","PULL_COMPLETE","START_COMPLETE","callbackId","wrapReason","cbSourceName","cbTargetName","comObj","sourceName","targetName","ah","sendWithPromise","sendWithStream","streamId","controller","startCapability","startCall","pullCall","cancelCall","desiredSize","pull","pullCapability","cancel","cancelCapability","_createStreamSink","lastDesiredSize","close","sinkCapability","onPull","onCancel","isCancelled","_processStreamMessage","streamController","_deleteStreamController","destroy","getFullReader","getRangeReader","cancelAllRequests","readableStream","headersReady","isStreamingSupported","isRangeSupported","pdfjsVersion","pdfjsBuild"],"sourceRoot":""}