diff --git a/static/js/pdf.js b/static/js/pdf.js new file mode 100644 index 0000000..38c3c9b --- /dev/null +++ b/static/js/pdf.js @@ -0,0 +1,16425 @@ +/** + * @licstart The following is the entire license notice for the + * JavaScript code in this page + * + * Copyright 2022 Mozilla Foundation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * @licend The above is the entire license notice for the + * JavaScript code in this page + */ + +(function webpackUniversalModuleDefinition(root, factory) { + if(typeof exports === 'object' && typeof module === 'object') + module.exports = factory(); + else if(typeof define === 'function' && define.amd) + define("pdfjs-dist/build/pdf", [], factory); + else if(typeof exports === 'object') + exports["pdfjs-dist/build/pdf"] = factory(); + else + root["pdfjs-dist/build/pdf"] = root.pdfjsLib = factory(); +})(this, () => { +return /******/ (() => { // webpackBootstrap +/******/ "use strict"; +/******/ var __webpack_modules__ = ([ +/* 0 */, +/* 1 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.VerbosityLevel = exports.Util = exports.UnknownErrorException = exports.UnexpectedResponseException = exports.UNSUPPORTED_FEATURES = exports.TextRenderingMode = exports.StreamType = exports.RenderingIntentFlag = exports.PermissionFlag = exports.PasswordResponses = exports.PasswordException = exports.PageActionEventType = exports.OPS = exports.MissingPDFException = exports.InvalidPDFException = exports.ImageKind = exports.IDENTITY_MATRIX = exports.FormatError = exports.FontType = exports.FeatureTest = exports.FONT_IDENTITY_MATRIX = exports.DocumentActionEventType = exports.CMapCompressionType = exports.BaseException = exports.AnnotationType = exports.AnnotationStateModelType = exports.AnnotationReviewState = exports.AnnotationReplyType = exports.AnnotationMode = exports.AnnotationMarkedState = exports.AnnotationFlag = exports.AnnotationFieldFlag = exports.AnnotationBorderStyleType = exports.AnnotationActionEventType = exports.AbortException = void 0; +exports.arrayByteLength = arrayByteLength; +exports.arraysToBytes = arraysToBytes; +exports.assert = assert; +exports.bytesToString = bytesToString; +exports.createPromiseCapability = createPromiseCapability; +exports.createValidAbsoluteUrl = createValidAbsoluteUrl; +exports.escapeString = escapeString; +exports.getModificationDate = getModificationDate; +exports.getVerbosityLevel = getVerbosityLevel; +exports.info = info; +exports.isArrayBuffer = isArrayBuffer; +exports.isArrayEqual = isArrayEqual; +exports.isAscii = isAscii; +exports.objectFromMap = objectFromMap; +exports.objectSize = objectSize; +exports.setVerbosityLevel = setVerbosityLevel; +exports.shadow = shadow; +exports.string32 = string32; +exports.stringToBytes = stringToBytes; +exports.stringToPDFString = stringToPDFString; +exports.stringToUTF16BEString = stringToUTF16BEString; +exports.stringToUTF8String = stringToUTF8String; +exports.unreachable = unreachable; +exports.utf8StringToString = utf8StringToString; +exports.warn = warn; + +__w_pdfjs_require__(2); + +const IDENTITY_MATRIX = [1, 0, 0, 1, 0, 0]; +exports.IDENTITY_MATRIX = IDENTITY_MATRIX; +const FONT_IDENTITY_MATRIX = [0.001, 0, 0, 0.001, 0, 0]; +exports.FONT_IDENTITY_MATRIX = FONT_IDENTITY_MATRIX; +const RenderingIntentFlag = { + ANY: 0x01, + DISPLAY: 0x02, + PRINT: 0x04, + ANNOTATIONS_FORMS: 0x10, + ANNOTATIONS_STORAGE: 0x20, + ANNOTATIONS_DISABLE: 0x40, + OPLIST: 0x100 +}; +exports.RenderingIntentFlag = RenderingIntentFlag; +const AnnotationMode = { + DISABLE: 0, + ENABLE: 1, + ENABLE_FORMS: 2, + ENABLE_STORAGE: 3 +}; +exports.AnnotationMode = AnnotationMode; +const PermissionFlag = { + PRINT: 0x04, + MODIFY_CONTENTS: 0x08, + COPY: 0x10, + MODIFY_ANNOTATIONS: 0x20, + FILL_INTERACTIVE_FORMS: 0x100, + COPY_FOR_ACCESSIBILITY: 0x200, + ASSEMBLE: 0x400, + PRINT_HIGH_QUALITY: 0x800 +}; +exports.PermissionFlag = PermissionFlag; +const TextRenderingMode = { + FILL: 0, + STROKE: 1, + FILL_STROKE: 2, + INVISIBLE: 3, + FILL_ADD_TO_PATH: 4, + STROKE_ADD_TO_PATH: 5, + FILL_STROKE_ADD_TO_PATH: 6, + ADD_TO_PATH: 7, + FILL_STROKE_MASK: 3, + ADD_TO_PATH_FLAG: 4 +}; +exports.TextRenderingMode = TextRenderingMode; +const ImageKind = { + GRAYSCALE_1BPP: 1, + RGB_24BPP: 2, + RGBA_32BPP: 3 +}; +exports.ImageKind = ImageKind; +const AnnotationType = { + TEXT: 1, + LINK: 2, + FREETEXT: 3, + LINE: 4, + SQUARE: 5, + CIRCLE: 6, + POLYGON: 7, + POLYLINE: 8, + HIGHLIGHT: 9, + UNDERLINE: 10, + SQUIGGLY: 11, + STRIKEOUT: 12, + STAMP: 13, + CARET: 14, + INK: 15, + POPUP: 16, + FILEATTACHMENT: 17, + SOUND: 18, + MOVIE: 19, + WIDGET: 20, + SCREEN: 21, + PRINTERMARK: 22, + TRAPNET: 23, + WATERMARK: 24, + THREED: 25, + REDACT: 26 +}; +exports.AnnotationType = AnnotationType; +const AnnotationStateModelType = { + MARKED: "Marked", + REVIEW: "Review" +}; +exports.AnnotationStateModelType = AnnotationStateModelType; +const AnnotationMarkedState = { + MARKED: "Marked", + UNMARKED: "Unmarked" +}; +exports.AnnotationMarkedState = AnnotationMarkedState; +const AnnotationReviewState = { + ACCEPTED: "Accepted", + REJECTED: "Rejected", + CANCELLED: "Cancelled", + COMPLETED: "Completed", + NONE: "None" +}; +exports.AnnotationReviewState = AnnotationReviewState; +const AnnotationReplyType = { + GROUP: "Group", + REPLY: "R" +}; +exports.AnnotationReplyType = AnnotationReplyType; +const AnnotationFlag = { + INVISIBLE: 0x01, + HIDDEN: 0x02, + PRINT: 0x04, + NOZOOM: 0x08, + NOROTATE: 0x10, + NOVIEW: 0x20, + READONLY: 0x40, + LOCKED: 0x80, + TOGGLENOVIEW: 0x100, + LOCKEDCONTENTS: 0x200 +}; +exports.AnnotationFlag = AnnotationFlag; +const AnnotationFieldFlag = { + READONLY: 0x0000001, + REQUIRED: 0x0000002, + NOEXPORT: 0x0000004, + MULTILINE: 0x0001000, + PASSWORD: 0x0002000, + NOTOGGLETOOFF: 0x0004000, + RADIO: 0x0008000, + PUSHBUTTON: 0x0010000, + COMBO: 0x0020000, + EDIT: 0x0040000, + SORT: 0x0080000, + FILESELECT: 0x0100000, + MULTISELECT: 0x0200000, + DONOTSPELLCHECK: 0x0400000, + DONOTSCROLL: 0x0800000, + COMB: 0x1000000, + RICHTEXT: 0x2000000, + RADIOSINUNISON: 0x2000000, + COMMITONSELCHANGE: 0x4000000 +}; +exports.AnnotationFieldFlag = AnnotationFieldFlag; +const AnnotationBorderStyleType = { + SOLID: 1, + DASHED: 2, + BEVELED: 3, + INSET: 4, + UNDERLINE: 5 +}; +exports.AnnotationBorderStyleType = AnnotationBorderStyleType; +const AnnotationActionEventType = { + E: "Mouse Enter", + X: "Mouse Exit", + D: "Mouse Down", + U: "Mouse Up", + Fo: "Focus", + Bl: "Blur", + PO: "PageOpen", + PC: "PageClose", + PV: "PageVisible", + PI: "PageInvisible", + K: "Keystroke", + F: "Format", + V: "Validate", + C: "Calculate" +}; +exports.AnnotationActionEventType = AnnotationActionEventType; +const DocumentActionEventType = { + WC: "WillClose", + WS: "WillSave", + DS: "DidSave", + WP: "WillPrint", + DP: "DidPrint" +}; +exports.DocumentActionEventType = DocumentActionEventType; +const PageActionEventType = { + O: "PageOpen", + C: "PageClose" +}; +exports.PageActionEventType = PageActionEventType; +const StreamType = { + UNKNOWN: "UNKNOWN", + FLATE: "FLATE", + LZW: "LZW", + DCT: "DCT", + JPX: "JPX", + JBIG: "JBIG", + A85: "A85", + AHX: "AHX", + CCF: "CCF", + RLX: "RLX" +}; +exports.StreamType = StreamType; +const FontType = { + UNKNOWN: "UNKNOWN", + TYPE1: "TYPE1", + TYPE1STANDARD: "TYPE1STANDARD", + TYPE1C: "TYPE1C", + CIDFONTTYPE0: "CIDFONTTYPE0", + CIDFONTTYPE0C: "CIDFONTTYPE0C", + TRUETYPE: "TRUETYPE", + CIDFONTTYPE2: "CIDFONTTYPE2", + TYPE3: "TYPE3", + OPENTYPE: "OPENTYPE", + TYPE0: "TYPE0", + MMTYPE1: "MMTYPE1" +}; +exports.FontType = FontType; +const VerbosityLevel = { + ERRORS: 0, + WARNINGS: 1, + INFOS: 5 +}; +exports.VerbosityLevel = VerbosityLevel; +const CMapCompressionType = { + NONE: 0, + BINARY: 1, + STREAM: 2 +}; +exports.CMapCompressionType = CMapCompressionType; +const OPS = { + dependency: 1, + setLineWidth: 2, + setLineCap: 3, + setLineJoin: 4, + setMiterLimit: 5, + setDash: 6, + setRenderingIntent: 7, + setFlatness: 8, + setGState: 9, + save: 10, + restore: 11, + transform: 12, + moveTo: 13, + lineTo: 14, + curveTo: 15, + curveTo2: 16, + curveTo3: 17, + closePath: 18, + rectangle: 19, + stroke: 20, + closeStroke: 21, + fill: 22, + eoFill: 23, + fillStroke: 24, + eoFillStroke: 25, + closeFillStroke: 26, + closeEOFillStroke: 27, + endPath: 28, + clip: 29, + eoClip: 30, + beginText: 31, + endText: 32, + setCharSpacing: 33, + setWordSpacing: 34, + setHScale: 35, + setLeading: 36, + setFont: 37, + setTextRenderingMode: 38, + setTextRise: 39, + moveText: 40, + setLeadingMoveText: 41, + setTextMatrix: 42, + nextLine: 43, + showText: 44, + showSpacedText: 45, + nextLineShowText: 46, + nextLineSetSpacingShowText: 47, + setCharWidth: 48, + setCharWidthAndBounds: 49, + setStrokeColorSpace: 50, + setFillColorSpace: 51, + setStrokeColor: 52, + setStrokeColorN: 53, + setFillColor: 54, + setFillColorN: 55, + setStrokeGray: 56, + setFillGray: 57, + setStrokeRGBColor: 58, + setFillRGBColor: 59, + setStrokeCMYKColor: 60, + setFillCMYKColor: 61, + shadingFill: 62, + beginInlineImage: 63, + beginImageData: 64, + endInlineImage: 65, + paintXObject: 66, + markPoint: 67, + markPointProps: 68, + beginMarkedContent: 69, + beginMarkedContentProps: 70, + endMarkedContent: 71, + beginCompat: 72, + endCompat: 73, + paintFormXObjectBegin: 74, + paintFormXObjectEnd: 75, + beginGroup: 76, + endGroup: 77, + beginAnnotations: 78, + endAnnotations: 79, + beginAnnotation: 80, + endAnnotation: 81, + paintJpegXObject: 82, + paintImageMaskXObject: 83, + paintImageMaskXObjectGroup: 84, + paintImageXObject: 85, + paintInlineImageXObject: 86, + paintInlineImageXObjectGroup: 87, + paintImageXObjectRepeat: 88, + paintImageMaskXObjectRepeat: 89, + paintSolidColorImageMask: 90, + constructPath: 91 +}; +exports.OPS = OPS; +const UNSUPPORTED_FEATURES = { + unknown: "unknown", + forms: "forms", + javaScript: "javaScript", + signatures: "signatures", + smask: "smask", + shadingPattern: "shadingPattern", + font: "font", + errorTilingPattern: "errorTilingPattern", + errorExtGState: "errorExtGState", + errorXObject: "errorXObject", + errorFontLoadType3: "errorFontLoadType3", + errorFontState: "errorFontState", + errorFontMissing: "errorFontMissing", + errorFontTranslate: "errorFontTranslate", + errorColorSpace: "errorColorSpace", + errorOperatorList: "errorOperatorList", + errorFontToUnicode: "errorFontToUnicode", + errorFontLoadNative: "errorFontLoadNative", + errorFontBuildPath: "errorFontBuildPath", + errorFontGetPath: "errorFontGetPath", + errorMarkedContent: "errorMarkedContent", + errorContentSubStream: "errorContentSubStream" +}; +exports.UNSUPPORTED_FEATURES = UNSUPPORTED_FEATURES; +const PasswordResponses = { + NEED_PASSWORD: 1, + INCORRECT_PASSWORD: 2 +}; +exports.PasswordResponses = PasswordResponses; +let verbosity = VerbosityLevel.WARNINGS; + +function setVerbosityLevel(level) { + if (Number.isInteger(level)) { + verbosity = level; + } +} + +function getVerbosityLevel() { + return verbosity; +} + +function info(msg) { + if (verbosity >= VerbosityLevel.INFOS) { + console.log(`Info: ${msg}`); + } +} + +function warn(msg) { + if (verbosity >= VerbosityLevel.WARNINGS) { + console.log(`Warning: ${msg}`); + } +} + +function unreachable(msg) { + throw new Error(msg); +} + +function assert(cond, msg) { + if (!cond) { + unreachable(msg); + } +} + +function _isValidProtocol(url) { + if (!url) { + return false; + } + + switch (url.protocol) { + case "http:": + case "https:": + case "ftp:": + case "mailto:": + case "tel:": + return true; + + default: + return false; + } +} + +function createValidAbsoluteUrl(url, baseUrl = null, options = null) { + if (!url) { + return null; + } + + try { + if (options && typeof url === "string") { + if (options.addDefaultProtocol && url.startsWith("www.")) { + const dots = url.match(/\./g); + + if (dots && dots.length >= 2) { + url = `http://${url}`; + } + } + + if (options.tryConvertEncoding) { + try { + url = stringToUTF8String(url); + } catch (ex) {} + } + } + + const absoluteUrl = baseUrl ? new URL(url, baseUrl) : new URL(url); + + if (_isValidProtocol(absoluteUrl)) { + return absoluteUrl; + } + } catch (ex) {} + + return null; +} + +function shadow(obj, prop, value) { + Object.defineProperty(obj, prop, { + value, + enumerable: true, + configurable: true, + writable: false + }); + return value; +} + +const BaseException = function BaseExceptionClosure() { + function BaseException(message, name) { + if (this.constructor === BaseException) { + unreachable("Cannot initialize BaseException."); + } + + this.message = message; + this.name = name; + } + + BaseException.prototype = new Error(); + BaseException.constructor = BaseException; + return BaseException; +}(); + +exports.BaseException = BaseException; + +class PasswordException extends BaseException { + constructor(msg, code) { + super(msg, "PasswordException"); + this.code = code; + } + +} + +exports.PasswordException = PasswordException; + +class UnknownErrorException extends BaseException { + constructor(msg, details) { + super(msg, "UnknownErrorException"); + this.details = details; + } + +} + +exports.UnknownErrorException = UnknownErrorException; + +class InvalidPDFException extends BaseException { + constructor(msg) { + super(msg, "InvalidPDFException"); + } + +} + +exports.InvalidPDFException = InvalidPDFException; + +class MissingPDFException extends BaseException { + constructor(msg) { + super(msg, "MissingPDFException"); + } + +} + +exports.MissingPDFException = MissingPDFException; + +class UnexpectedResponseException extends BaseException { + constructor(msg, status) { + super(msg, "UnexpectedResponseException"); + this.status = status; + } + +} + +exports.UnexpectedResponseException = UnexpectedResponseException; + +class FormatError extends BaseException { + constructor(msg) { + super(msg, "FormatError"); + } + +} + +exports.FormatError = FormatError; + +class AbortException extends BaseException { + constructor(msg) { + super(msg, "AbortException"); + } + +} + +exports.AbortException = AbortException; + +function bytesToString(bytes) { + if (typeof bytes !== "object" || bytes === null || bytes.length === undefined) { + unreachable("Invalid argument for bytesToString"); + } + + const length = bytes.length; + const MAX_ARGUMENT_COUNT = 8192; + + if (length < MAX_ARGUMENT_COUNT) { + return String.fromCharCode.apply(null, bytes); + } + + const strBuf = []; + + for (let i = 0; i < length; i += MAX_ARGUMENT_COUNT) { + const chunkEnd = Math.min(i + MAX_ARGUMENT_COUNT, length); + const chunk = bytes.subarray(i, chunkEnd); + strBuf.push(String.fromCharCode.apply(null, chunk)); + } + + return strBuf.join(""); +} + +function stringToBytes(str) { + if (typeof str !== "string") { + unreachable("Invalid argument for stringToBytes"); + } + + const length = str.length; + const bytes = new Uint8Array(length); + + for (let i = 0; i < length; ++i) { + bytes[i] = str.charCodeAt(i) & 0xff; + } + + return bytes; +} + +function arrayByteLength(arr) { + if (arr.length !== undefined) { + return arr.length; + } + + if (arr.byteLength !== undefined) { + return arr.byteLength; + } + + unreachable("Invalid argument for arrayByteLength"); +} + +function arraysToBytes(arr) { + const length = arr.length; + + if (length === 1 && arr[0] instanceof Uint8Array) { + return arr[0]; + } + + let resultLength = 0; + + for (let i = 0; i < length; i++) { + resultLength += arrayByteLength(arr[i]); + } + + let pos = 0; + const data = new Uint8Array(resultLength); + + for (let i = 0; i < length; i++) { + let item = arr[i]; + + if (!(item instanceof Uint8Array)) { + if (typeof item === "string") { + item = stringToBytes(item); + } else { + item = new Uint8Array(item); + } + } + + const itemLength = item.byteLength; + data.set(item, pos); + pos += itemLength; + } + + return data; +} + +function string32(value) { + return String.fromCharCode(value >> 24 & 0xff, value >> 16 & 0xff, value >> 8 & 0xff, value & 0xff); +} + +function objectSize(obj) { + return Object.keys(obj).length; +} + +function objectFromMap(map) { + const obj = Object.create(null); + + for (const [key, value] of map) { + obj[key] = value; + } + + return obj; +} + +function isLittleEndian() { + const buffer8 = new Uint8Array(4); + buffer8[0] = 1; + const view32 = new Uint32Array(buffer8.buffer, 0, 1); + return view32[0] === 1; +} + +function isEvalSupported() { + try { + new Function(""); + return true; + } catch (e) { + return false; + } +} + +class FeatureTest { + static get isLittleEndian() { + return shadow(this, "isLittleEndian", isLittleEndian()); + } + + static get isEvalSupported() { + return shadow(this, "isEvalSupported", isEvalSupported()); + } + + static get isOffscreenCanvasSupported() { + return shadow(this, "isOffscreenCanvasSupported", typeof OffscreenCanvas !== "undefined"); + } + +} + +exports.FeatureTest = FeatureTest; +const hexNumbers = [...Array(256).keys()].map(n => n.toString(16).padStart(2, "0")); + +class Util { + static makeHexColor(r, g, b) { + return `#${hexNumbers[r]}${hexNumbers[g]}${hexNumbers[b]}`; + } + + static scaleMinMax(transform, minMax) { + let temp; + + if (transform[0]) { + if (transform[0] < 0) { + temp = minMax[0]; + minMax[0] = minMax[1]; + minMax[1] = temp; + } + + minMax[0] *= transform[0]; + minMax[1] *= transform[0]; + + if (transform[3] < 0) { + temp = minMax[2]; + minMax[2] = minMax[3]; + minMax[3] = temp; + } + + minMax[2] *= transform[3]; + minMax[3] *= transform[3]; + } else { + temp = minMax[0]; + minMax[0] = minMax[2]; + minMax[2] = temp; + temp = minMax[1]; + minMax[1] = minMax[3]; + minMax[3] = temp; + + if (transform[1] < 0) { + temp = minMax[2]; + minMax[2] = minMax[3]; + minMax[3] = temp; + } + + minMax[2] *= transform[1]; + minMax[3] *= transform[1]; + + if (transform[2] < 0) { + temp = minMax[0]; + minMax[0] = minMax[1]; + minMax[1] = temp; + } + + minMax[0] *= transform[2]; + minMax[1] *= transform[2]; + } + + minMax[0] += transform[4]; + minMax[1] += transform[4]; + minMax[2] += transform[5]; + minMax[3] += transform[5]; + } + + static transform(m1, m2) { + return [m1[0] * m2[0] + m1[2] * m2[1], m1[1] * m2[0] + m1[3] * m2[1], m1[0] * m2[2] + m1[2] * m2[3], m1[1] * m2[2] + m1[3] * m2[3], m1[0] * m2[4] + m1[2] * m2[5] + m1[4], m1[1] * m2[4] + m1[3] * m2[5] + m1[5]]; + } + + static applyTransform(p, m) { + const xt = p[0] * m[0] + p[1] * m[2] + m[4]; + const yt = p[0] * m[1] + p[1] * m[3] + m[5]; + return [xt, yt]; + } + + static applyInverseTransform(p, m) { + const d = m[0] * m[3] - m[1] * m[2]; + const xt = (p[0] * m[3] - p[1] * m[2] + m[2] * m[5] - m[4] * m[3]) / d; + const yt = (-p[0] * m[1] + p[1] * m[0] + m[4] * m[1] - m[5] * m[0]) / d; + return [xt, yt]; + } + + static getAxialAlignedBoundingBox(r, m) { + const p1 = Util.applyTransform(r, m); + const p2 = Util.applyTransform(r.slice(2, 4), m); + const p3 = Util.applyTransform([r[0], r[3]], m); + const p4 = Util.applyTransform([r[2], r[1]], m); + return [Math.min(p1[0], p2[0], p3[0], p4[0]), Math.min(p1[1], p2[1], p3[1], p4[1]), Math.max(p1[0], p2[0], p3[0], p4[0]), Math.max(p1[1], p2[1], p3[1], p4[1])]; + } + + static inverseTransform(m) { + const d = m[0] * m[3] - m[1] * m[2]; + return [m[3] / d, -m[1] / d, -m[2] / d, m[0] / d, (m[2] * m[5] - m[4] * m[3]) / d, (m[4] * m[1] - m[5] * m[0]) / d]; + } + + static apply3dTransform(m, v) { + return [m[0] * v[0] + m[1] * v[1] + m[2] * v[2], m[3] * v[0] + m[4] * v[1] + m[5] * v[2], m[6] * v[0] + m[7] * v[1] + m[8] * v[2]]; + } + + static singularValueDecompose2dScale(m) { + const transpose = [m[0], m[2], m[1], m[3]]; + const a = m[0] * transpose[0] + m[1] * transpose[2]; + const b = m[0] * transpose[1] + m[1] * transpose[3]; + const c = m[2] * transpose[0] + m[3] * transpose[2]; + const d = m[2] * transpose[1] + m[3] * transpose[3]; + const first = (a + d) / 2; + const second = Math.sqrt((a + d) ** 2 - 4 * (a * d - c * b)) / 2; + const sx = first + second || 1; + const sy = first - second || 1; + return [Math.sqrt(sx), Math.sqrt(sy)]; + } + + static normalizeRect(rect) { + const r = rect.slice(0); + + if (rect[0] > rect[2]) { + r[0] = rect[2]; + r[2] = rect[0]; + } + + if (rect[1] > rect[3]) { + r[1] = rect[3]; + r[3] = rect[1]; + } + + return r; + } + + static intersect(rect1, rect2) { + const xLow = Math.max(Math.min(rect1[0], rect1[2]), Math.min(rect2[0], rect2[2])); + const xHigh = Math.min(Math.max(rect1[0], rect1[2]), Math.max(rect2[0], rect2[2])); + + if (xLow > xHigh) { + return null; + } + + const yLow = Math.max(Math.min(rect1[1], rect1[3]), Math.min(rect2[1], rect2[3])); + const yHigh = Math.min(Math.max(rect1[1], rect1[3]), Math.max(rect2[1], rect2[3])); + + if (yLow > yHigh) { + return null; + } + + return [xLow, yLow, xHigh, yHigh]; + } + + static bezierBoundingBox(x0, y0, x1, y1, x2, y2, x3, y3) { + const tvalues = [], + bounds = [[], []]; + let a, b, c, t, t1, t2, b2ac, sqrtb2ac; + + for (let i = 0; i < 2; ++i) { + if (i === 0) { + b = 6 * x0 - 12 * x1 + 6 * x2; + a = -3 * x0 + 9 * x1 - 9 * x2 + 3 * x3; + c = 3 * x1 - 3 * x0; + } else { + b = 6 * y0 - 12 * y1 + 6 * y2; + a = -3 * y0 + 9 * y1 - 9 * y2 + 3 * y3; + c = 3 * y1 - 3 * y0; + } + + if (Math.abs(a) < 1e-12) { + if (Math.abs(b) < 1e-12) { + continue; + } + + t = -c / b; + + if (0 < t && t < 1) { + tvalues.push(t); + } + + continue; + } + + b2ac = b * b - 4 * c * a; + sqrtb2ac = Math.sqrt(b2ac); + + if (b2ac < 0) { + continue; + } + + t1 = (-b + sqrtb2ac) / (2 * a); + + if (0 < t1 && t1 < 1) { + tvalues.push(t1); + } + + t2 = (-b - sqrtb2ac) / (2 * a); + + if (0 < t2 && t2 < 1) { + tvalues.push(t2); + } + } + + let j = tvalues.length, + mt; + const jlen = j; + + while (j--) { + t = tvalues[j]; + mt = 1 - t; + bounds[0][j] = mt * mt * mt * x0 + 3 * mt * mt * t * x1 + 3 * mt * t * t * x2 + t * t * t * x3; + bounds[1][j] = mt * mt * mt * y0 + 3 * mt * mt * t * y1 + 3 * mt * t * t * y2 + t * t * t * y3; + } + + bounds[0][jlen] = x0; + bounds[1][jlen] = y0; + bounds[0][jlen + 1] = x3; + bounds[1][jlen + 1] = y3; + bounds[0].length = bounds[1].length = jlen + 2; + return [Math.min(...bounds[0]), Math.min(...bounds[1]), Math.max(...bounds[0]), Math.max(...bounds[1])]; + } + +} + +exports.Util = Util; +const PDFStringTranslateTable = [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, 0x2c7, 0x2c6, 0x2d9, 0x2dd, 0x2db, 0x2da, 0x2dc, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2022, 0x2020, 0x2021, 0x2026, 0x2014, 0x2013, 0x192, 0x2044, 0x2039, 0x203a, 0x2212, 0x2030, 0x201e, 0x201c, 0x201d, 0x2018, 0x2019, 0x201a, 0x2122, 0xfb01, 0xfb02, 0x141, 0x152, 0x160, 0x178, 0x17d, 0x131, 0x142, 0x153, 0x161, 0x17e, 0, 0x20ac]; + +function stringToPDFString(str) { + if (str[0] >= "\xEF") { + let encoding; + + if (str[0] === "\xFE" && str[1] === "\xFF") { + encoding = "utf-16be"; + } else if (str[0] === "\xFF" && str[1] === "\xFE") { + encoding = "utf-16le"; + } else if (str[0] === "\xEF" && str[1] === "\xBB" && str[2] === "\xBF") { + encoding = "utf-8"; + } + + if (encoding) { + try { + const decoder = new TextDecoder(encoding, { + fatal: true + }); + const buffer = stringToBytes(str); + return decoder.decode(buffer); + } catch (ex) { + warn(`stringToPDFString: "${ex}".`); + } + } + } + + const strBuf = []; + + for (let i = 0, ii = str.length; i < ii; i++) { + const code = PDFStringTranslateTable[str.charCodeAt(i)]; + strBuf.push(code ? String.fromCharCode(code) : str.charAt(i)); + } + + return strBuf.join(""); +} + +function escapeString(str) { + return str.replace(/([()\\\n\r])/g, match => { + if (match === "\n") { + return "\\n"; + } else if (match === "\r") { + return "\\r"; + } + + return `\\${match}`; + }); +} + +function isAscii(str) { + return /^[\x00-\x7F]*$/.test(str); +} + +function stringToUTF16BEString(str) { + const buf = ["\xFE\xFF"]; + + for (let i = 0, ii = str.length; i < ii; i++) { + const char = str.charCodeAt(i); + buf.push(String.fromCharCode(char >> 8 & 0xff), String.fromCharCode(char & 0xff)); + } + + return buf.join(""); +} + +function stringToUTF8String(str) { + return decodeURIComponent(escape(str)); +} + +function utf8StringToString(str) { + return unescape(encodeURIComponent(str)); +} + +function isArrayBuffer(v) { + return typeof v === "object" && v !== null && v.byteLength !== undefined; +} + +function isArrayEqual(arr1, arr2) { + if (arr1.length !== arr2.length) { + return false; + } + + for (let i = 0, ii = arr1.length; i < ii; i++) { + if (arr1[i] !== arr2[i]) { + return false; + } + } + + return true; +} + +function getModificationDate(date = new Date()) { + const buffer = [date.getUTCFullYear().toString(), (date.getUTCMonth() + 1).toString().padStart(2, "0"), date.getUTCDate().toString().padStart(2, "0"), date.getUTCHours().toString().padStart(2, "0"), date.getUTCMinutes().toString().padStart(2, "0"), date.getUTCSeconds().toString().padStart(2, "0")]; + return buffer.join(""); +} + +function createPromiseCapability() { + const capability = Object.create(null); + let isSettled = false; + Object.defineProperty(capability, "settled", { + get() { + return isSettled; + } + + }); + capability.promise = new Promise(function (resolve, reject) { + capability.resolve = function (data) { + isSettled = true; + resolve(data); + }; + + capability.reject = function (reason) { + isSettled = true; + reject(reason); + }; + }); + return capability; +} + +/***/ }), +/* 2 */ +/***/ ((__unused_webpack_module, __unused_webpack_exports, __w_pdfjs_require__) => { + + + +var _is_node = __w_pdfjs_require__(3); + +; + +/***/ }), +/* 3 */ +/***/ ((__unused_webpack_module, exports) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.isNodeJS = void 0; +const isNodeJS = typeof process === "object" && process + "" === "[object process]" && !process.versions.nw && !(process.versions.electron && process.type && process.type !== "browser"); +exports.isNodeJS = isNodeJS; + +/***/ }), +/* 4 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.build = exports.RenderTask = exports.PDFWorkerUtil = exports.PDFWorker = exports.PDFPageProxy = exports.PDFDocumentProxy = exports.PDFDocumentLoadingTask = exports.PDFDataRangeTransport = exports.LoopbackPort = exports.DefaultStandardFontDataFactory = exports.DefaultCanvasFactory = exports.DefaultCMapReaderFactory = void 0; +exports.getDocument = getDocument; +exports.setPDFNetworkStreamFactory = setPDFNetworkStreamFactory; +exports.version = void 0; + +var _util = __w_pdfjs_require__(1); + +var _display_utils = __w_pdfjs_require__(5); + +var _font_loader = __w_pdfjs_require__(7); + +var _annotation_storage = __w_pdfjs_require__(8); + +var _canvas = __w_pdfjs_require__(10); + +var _worker_options = __w_pdfjs_require__(13); + +var _is_node = __w_pdfjs_require__(3); + +var _message_handler = __w_pdfjs_require__(14); + +var _metadata = __w_pdfjs_require__(15); + +var _optional_content_config = __w_pdfjs_require__(16); + +var _transport_stream = __w_pdfjs_require__(17); + +var _xfa_text = __w_pdfjs_require__(18); + +const DEFAULT_RANGE_CHUNK_SIZE = 65536; +const RENDERING_CANCELLED_TIMEOUT = 100; +let DefaultCanvasFactory = _display_utils.DOMCanvasFactory; +exports.DefaultCanvasFactory = DefaultCanvasFactory; +let DefaultCMapReaderFactory = _display_utils.DOMCMapReaderFactory; +exports.DefaultCMapReaderFactory = DefaultCMapReaderFactory; +let DefaultStandardFontDataFactory = _display_utils.DOMStandardFontDataFactory; +exports.DefaultStandardFontDataFactory = DefaultStandardFontDataFactory; + +if (_is_node.isNodeJS) { + const { + NodeCanvasFactory, + NodeCMapReaderFactory, + NodeStandardFontDataFactory + } = __w_pdfjs_require__(19); + + exports.DefaultCanvasFactory = DefaultCanvasFactory = NodeCanvasFactory; + exports.DefaultCMapReaderFactory = DefaultCMapReaderFactory = NodeCMapReaderFactory; + exports.DefaultStandardFontDataFactory = DefaultStandardFontDataFactory = NodeStandardFontDataFactory; +} + +let createPDFNetworkStream; + +function setPDFNetworkStreamFactory(pdfNetworkStreamFactory) { + createPDFNetworkStream = pdfNetworkStreamFactory; +} + +function getDocument(src) { + const task = new PDFDocumentLoadingTask(); + let source; + + if (typeof src === "string" || src instanceof URL) { + source = { + url: src + }; + } else if ((0, _util.isArrayBuffer)(src)) { + source = { + data: src + }; + } else if (src instanceof PDFDataRangeTransport) { + source = { + range: src + }; + } else { + if (typeof src !== "object") { + throw new Error("Invalid parameter in getDocument, " + "need either string, URL, Uint8Array, or parameter object."); + } + + if (!src.url && !src.data && !src.range) { + throw new Error("Invalid parameter object: need either .data, .range or .url"); + } + + source = src; + } + + const params = Object.create(null); + let rangeTransport = null, + worker = null; + + for (const key in source) { + const value = source[key]; + + switch (key) { + case "url": + if (typeof window !== "undefined") { + try { + params[key] = new URL(value, window.location).href; + continue; + } catch (ex) { + (0, _util.warn)(`Cannot create valid URL: "${ex}".`); + } + } else if (typeof value === "string" || value instanceof URL) { + params[key] = value.toString(); + continue; + } + + throw new Error("Invalid PDF url data: " + "either string or URL-object is expected in the url property."); + + case "range": + rangeTransport = value; + continue; + + case "worker": + worker = value; + continue; + + case "data": + if (_is_node.isNodeJS && typeof Buffer !== "undefined" && value instanceof Buffer) { + params[key] = new Uint8Array(value); + } else if (value instanceof Uint8Array) { + break; + } else if (typeof value === "string") { + params[key] = (0, _util.stringToBytes)(value); + } else if (typeof value === "object" && value !== null && !isNaN(value.length)) { + params[key] = new Uint8Array(value); + } else if ((0, _util.isArrayBuffer)(value)) { + params[key] = new Uint8Array(value); + } else { + throw new Error("Invalid PDF binary data: either typed array, " + "string, or array-like object is expected in the data property."); + } + + continue; + } + + params[key] = value; + } + + params.CMapReaderFactory = params.CMapReaderFactory || DefaultCMapReaderFactory; + params.StandardFontDataFactory = params.StandardFontDataFactory || DefaultStandardFontDataFactory; + params.ignoreErrors = params.stopAtErrors !== true; + params.fontExtraProperties = params.fontExtraProperties === true; + params.pdfBug = params.pdfBug === true; + params.enableXfa = params.enableXfa === true; + + if (!Number.isInteger(params.rangeChunkSize) || params.rangeChunkSize < 1) { + params.rangeChunkSize = DEFAULT_RANGE_CHUNK_SIZE; + } + + if (typeof params.docBaseUrl !== "string" || (0, _display_utils.isDataScheme)(params.docBaseUrl)) { + params.docBaseUrl = null; + } + + if (!Number.isInteger(params.maxImageSize) || params.maxImageSize < -1) { + params.maxImageSize = -1; + } + + if (typeof params.cMapUrl !== "string") { + params.cMapUrl = null; + } + + if (typeof params.standardFontDataUrl !== "string") { + params.standardFontDataUrl = null; + } + + if (typeof params.useWorkerFetch !== "boolean") { + params.useWorkerFetch = params.CMapReaderFactory === _display_utils.DOMCMapReaderFactory && params.StandardFontDataFactory === _display_utils.DOMStandardFontDataFactory; + } + + if (typeof params.isEvalSupported !== "boolean") { + params.isEvalSupported = true; + } + + if (typeof params.disableFontFace !== "boolean") { + params.disableFontFace = _is_node.isNodeJS; + } + + if (typeof params.useSystemFonts !== "boolean") { + params.useSystemFonts = !_is_node.isNodeJS && !params.disableFontFace; + } + + if (typeof params.ownerDocument !== "object" || params.ownerDocument === null) { + params.ownerDocument = globalThis.document; + } + + if (typeof params.disableRange !== "boolean") { + params.disableRange = false; + } + + if (typeof params.disableStream !== "boolean") { + params.disableStream = false; + } + + if (typeof params.disableAutoFetch !== "boolean") { + params.disableAutoFetch = false; + } + + (0, _util.setVerbosityLevel)(params.verbosity); + + if (!worker) { + const workerParams = { + verbosity: params.verbosity, + port: _worker_options.GlobalWorkerOptions.workerPort + }; + worker = workerParams.port ? PDFWorker.fromPort(workerParams) : new PDFWorker(workerParams); + task._worker = worker; + } + + const docId = task.docId; + worker.promise.then(function () { + if (task.destroyed) { + throw new Error("Loading aborted"); + } + + const workerIdPromise = _fetchDocument(worker, params, rangeTransport, docId); + + const networkStreamPromise = new Promise(function (resolve) { + let networkStream; + + if (rangeTransport) { + networkStream = new _transport_stream.PDFDataTransportStream({ + length: params.length, + initialData: params.initialData, + progressiveDone: params.progressiveDone, + contentDispositionFilename: params.contentDispositionFilename, + disableRange: params.disableRange, + disableStream: params.disableStream + }, rangeTransport); + } else if (!params.data) { + networkStream = createPDFNetworkStream({ + url: params.url, + length: params.length, + httpHeaders: params.httpHeaders, + withCredentials: params.withCredentials, + rangeChunkSize: params.rangeChunkSize, + disableRange: params.disableRange, + disableStream: params.disableStream + }); + } + + resolve(networkStream); + }); + return Promise.all([workerIdPromise, networkStreamPromise]).then(function ([workerId, networkStream]) { + if (task.destroyed) { + throw new Error("Loading aborted"); + } + + const messageHandler = new _message_handler.MessageHandler(docId, workerId, worker.port); + const transport = new WorkerTransport(messageHandler, task, networkStream, params); + task._transport = transport; + messageHandler.send("Ready", null); + }); + }).catch(task._capability.reject); + return task; +} + +async function _fetchDocument(worker, source, pdfDataRangeTransport, docId) { + if (worker.destroyed) { + throw new Error("Worker was destroyed"); + } + + if (pdfDataRangeTransport) { + source.length = pdfDataRangeTransport.length; + source.initialData = pdfDataRangeTransport.initialData; + source.progressiveDone = pdfDataRangeTransport.progressiveDone; + source.contentDispositionFilename = pdfDataRangeTransport.contentDispositionFilename; + } + + const workerId = await worker.messageHandler.sendWithPromise("GetDocRequest", { + docId, + apiVersion: '2.14.305', + source: { + data: source.data, + url: source.url, + password: source.password, + disableAutoFetch: source.disableAutoFetch, + rangeChunkSize: source.rangeChunkSize, + length: source.length + }, + maxImageSize: source.maxImageSize, + disableFontFace: source.disableFontFace, + docBaseUrl: source.docBaseUrl, + ignoreErrors: source.ignoreErrors, + isEvalSupported: source.isEvalSupported, + fontExtraProperties: source.fontExtraProperties, + enableXfa: source.enableXfa, + useSystemFonts: source.useSystemFonts, + cMapUrl: source.useWorkerFetch ? source.cMapUrl : null, + standardFontDataUrl: source.useWorkerFetch ? source.standardFontDataUrl : null + }); + + if (worker.destroyed) { + throw new Error("Worker was destroyed"); + } + + return workerId; +} + +class PDFDocumentLoadingTask { + static #docId = 0; + + constructor() { + this._capability = (0, _util.createPromiseCapability)(); + this._transport = null; + this._worker = null; + this.docId = `d${PDFDocumentLoadingTask.#docId++}`; + this.destroyed = false; + this.onPassword = null; + this.onProgress = null; + this.onUnsupportedFeature = null; + } + + get promise() { + return this._capability.promise; + } + + async destroy() { + this.destroyed = true; + await this._transport?.destroy(); + this._transport = null; + + if (this._worker) { + this._worker.destroy(); + + this._worker = null; + } + } + +} + +exports.PDFDocumentLoadingTask = PDFDocumentLoadingTask; + +class PDFDataRangeTransport { + constructor(length, initialData, progressiveDone = false, contentDispositionFilename = null) { + this.length = length; + this.initialData = initialData; + this.progressiveDone = progressiveDone; + this.contentDispositionFilename = contentDispositionFilename; + this._rangeListeners = []; + this._progressListeners = []; + this._progressiveReadListeners = []; + this._progressiveDoneListeners = []; + this._readyCapability = (0, _util.createPromiseCapability)(); + } + + addRangeListener(listener) { + this._rangeListeners.push(listener); + } + + addProgressListener(listener) { + this._progressListeners.push(listener); + } + + addProgressiveReadListener(listener) { + this._progressiveReadListeners.push(listener); + } + + addProgressiveDoneListener(listener) { + this._progressiveDoneListeners.push(listener); + } + + onDataRange(begin, chunk) { + for (const listener of this._rangeListeners) { + listener(begin, chunk); + } + } + + onDataProgress(loaded, total) { + this._readyCapability.promise.then(() => { + for (const listener of this._progressListeners) { + listener(loaded, total); + } + }); + } + + onDataProgressiveRead(chunk) { + this._readyCapability.promise.then(() => { + for (const listener of this._progressiveReadListeners) { + listener(chunk); + } + }); + } + + onDataProgressiveDone() { + this._readyCapability.promise.then(() => { + for (const listener of this._progressiveDoneListeners) { + listener(); + } + }); + } + + transportReady() { + this._readyCapability.resolve(); + } + + requestDataRange(begin, end) { + (0, _util.unreachable)("Abstract method PDFDataRangeTransport.requestDataRange"); + } + + abort() {} + +} + +exports.PDFDataRangeTransport = PDFDataRangeTransport; + +class PDFDocumentProxy { + constructor(pdfInfo, transport) { + this._pdfInfo = pdfInfo; + this._transport = transport; + Object.defineProperty(this, "fingerprint", { + get() { + (0, _display_utils.deprecated)("`PDFDocumentProxy.fingerprint`, " + "please use `PDFDocumentProxy.fingerprints` instead."); + return this.fingerprints[0]; + } + + }); + Object.defineProperty(this, "getStats", { + value: async () => { + (0, _display_utils.deprecated)("`PDFDocumentProxy.getStats`, " + "please use the `PDFDocumentProxy.stats`-getter instead."); + return this.stats || { + streamTypes: {}, + fontTypes: {} + }; + } + }); + } + + get annotationStorage() { + return this._transport.annotationStorage; + } + + get numPages() { + return this._pdfInfo.numPages; + } + + get fingerprints() { + return this._pdfInfo.fingerprints; + } + + get stats() { + return this._transport.stats; + } + + get isPureXfa() { + return !!this._transport._htmlForXfa; + } + + get allXfaHtml() { + return this._transport._htmlForXfa; + } + + getPage(pageNumber) { + return this._transport.getPage(pageNumber); + } + + getPageIndex(ref) { + return this._transport.getPageIndex(ref); + } + + getDestinations() { + return this._transport.getDestinations(); + } + + getDestination(id) { + return this._transport.getDestination(id); + } + + getPageLabels() { + return this._transport.getPageLabels(); + } + + getPageLayout() { + return this._transport.getPageLayout(); + } + + getPageMode() { + return this._transport.getPageMode(); + } + + getViewerPreferences() { + return this._transport.getViewerPreferences(); + } + + getOpenAction() { + return this._transport.getOpenAction(); + } + + getAttachments() { + return this._transport.getAttachments(); + } + + getJavaScript() { + return this._transport.getJavaScript(); + } + + getJSActions() { + return this._transport.getDocJSActions(); + } + + getOutline() { + return this._transport.getOutline(); + } + + getOptionalContentConfig() { + return this._transport.getOptionalContentConfig(); + } + + getPermissions() { + return this._transport.getPermissions(); + } + + getMetadata() { + return this._transport.getMetadata(); + } + + getMarkInfo() { + return this._transport.getMarkInfo(); + } + + getData() { + return this._transport.getData(); + } + + getDownloadInfo() { + return this._transport.downloadInfoCapability.promise; + } + + cleanup(keepLoadedFonts = false) { + return this._transport.startCleanup(keepLoadedFonts || this.isPureXfa); + } + + destroy() { + return this.loadingTask.destroy(); + } + + get loadingParams() { + return this._transport.loadingParams; + } + + get loadingTask() { + return this._transport.loadingTask; + } + + saveDocument() { + if (this._transport.annotationStorage.size <= 0) { + (0, _display_utils.deprecated)("saveDocument called while `annotationStorage` is empty, " + "please use the getData-method instead."); + } + + return this._transport.saveDocument(); + } + + getFieldObjects() { + return this._transport.getFieldObjects(); + } + + hasJSActions() { + return this._transport.hasJSActions(); + } + + getCalculationOrderIds() { + return this._transport.getCalculationOrderIds(); + } + +} + +exports.PDFDocumentProxy = PDFDocumentProxy; + +class PDFPageProxy { + constructor(pageIndex, pageInfo, transport, ownerDocument, pdfBug = false) { + this._pageIndex = pageIndex; + this._pageInfo = pageInfo; + this._ownerDocument = ownerDocument; + this._transport = transport; + this._stats = pdfBug ? new _display_utils.StatTimer() : null; + this._pdfBug = pdfBug; + this.commonObjs = transport.commonObjs; + this.objs = new PDFObjects(); + this._bitmaps = new Set(); + this.cleanupAfterRender = false; + this.pendingCleanup = false; + this._intentStates = new Map(); + this._annotationPromises = new Map(); + this.destroyed = false; + } + + get pageNumber() { + return this._pageIndex + 1; + } + + get rotate() { + return this._pageInfo.rotate; + } + + get ref() { + return this._pageInfo.ref; + } + + get userUnit() { + return this._pageInfo.userUnit; + } + + get view() { + return this._pageInfo.view; + } + + getViewport({ + scale, + rotation = this.rotate, + offsetX = 0, + offsetY = 0, + dontFlip = false + } = {}) { + return new _display_utils.PageViewport({ + viewBox: this.view, + scale, + rotation, + offsetX, + offsetY, + dontFlip + }); + } + + getAnnotations({ + intent = "display" + } = {}) { + const intentArgs = this._transport.getRenderingIntent(intent); + + let promise = this._annotationPromises.get(intentArgs.cacheKey); + + if (!promise) { + promise = this._transport.getAnnotations(this._pageIndex, intentArgs.renderingIntent); + + this._annotationPromises.set(intentArgs.cacheKey, promise); + + promise = promise.then(annotations => { + for (const annotation of annotations) { + if (annotation.titleObj !== undefined) { + Object.defineProperty(annotation, "title", { + get() { + (0, _display_utils.deprecated)("`title`-property on annotation, please use `titleObj` instead."); + return annotation.titleObj.str; + } + + }); + } + + if (annotation.contentsObj !== undefined) { + Object.defineProperty(annotation, "contents", { + get() { + (0, _display_utils.deprecated)("`contents`-property on annotation, please use `contentsObj` instead."); + return annotation.contentsObj.str; + } + + }); + } + } + + return annotations; + }); + } + + return promise; + } + + getJSActions() { + return this._jsActionsPromise ||= this._transport.getPageJSActions(this._pageIndex); + } + + async getXfa() { + return this._transport._htmlForXfa?.children[this._pageIndex] || null; + } + + render({ + canvasContext, + viewport, + intent = "display", + annotationMode = _util.AnnotationMode.ENABLE, + transform = null, + imageLayer = null, + canvasFactory = null, + background = null, + optionalContentConfigPromise = null, + annotationCanvasMap = null, + pageColors = null + }) { + if (arguments[0]?.renderInteractiveForms !== undefined) { + (0, _display_utils.deprecated)("render no longer accepts the `renderInteractiveForms`-option, " + "please use the `annotationMode`-option instead."); + + if (arguments[0].renderInteractiveForms === true && annotationMode === _util.AnnotationMode.ENABLE) { + annotationMode = _util.AnnotationMode.ENABLE_FORMS; + } + } + + if (arguments[0]?.includeAnnotationStorage !== undefined) { + (0, _display_utils.deprecated)("render no longer accepts the `includeAnnotationStorage`-option, " + "please use the `annotationMode`-option instead."); + + if (arguments[0].includeAnnotationStorage === true && annotationMode === _util.AnnotationMode.ENABLE) { + annotationMode = _util.AnnotationMode.ENABLE_STORAGE; + } + } + + if (this._stats) { + this._stats.time("Overall"); + } + + const intentArgs = this._transport.getRenderingIntent(intent, annotationMode); + + this.pendingCleanup = false; + + if (!optionalContentConfigPromise) { + optionalContentConfigPromise = this._transport.getOptionalContentConfig(); + } + + let intentState = this._intentStates.get(intentArgs.cacheKey); + + if (!intentState) { + intentState = Object.create(null); + + this._intentStates.set(intentArgs.cacheKey, intentState); + } + + if (intentState.streamReaderCancelTimeout) { + clearTimeout(intentState.streamReaderCancelTimeout); + intentState.streamReaderCancelTimeout = null; + } + + const canvasFactoryInstance = canvasFactory || new DefaultCanvasFactory({ + ownerDocument: this._ownerDocument + }); + const intentPrint = !!(intentArgs.renderingIntent & _util.RenderingIntentFlag.PRINT); + + if (!intentState.displayReadyCapability) { + intentState.displayReadyCapability = (0, _util.createPromiseCapability)(); + intentState.operatorList = { + fnArray: [], + argsArray: [], + lastChunk: false + }; + + if (this._stats) { + this._stats.time("Page Request"); + } + + this._pumpOperatorList(intentArgs); + } + + const complete = error => { + intentState.renderTasks.delete(internalRenderTask); + + if (this.cleanupAfterRender || intentPrint) { + this.pendingCleanup = true; + } + + this._tryCleanup(); + + if (error) { + internalRenderTask.capability.reject(error); + + this._abortOperatorList({ + intentState, + reason: error instanceof Error ? error : new Error(error) + }); + } else { + internalRenderTask.capability.resolve(); + } + + if (this._stats) { + this._stats.timeEnd("Rendering"); + + this._stats.timeEnd("Overall"); + } + }; + + const internalRenderTask = new InternalRenderTask({ + callback: complete, + params: { + canvasContext, + viewport, + transform, + imageLayer, + background + }, + objs: this.objs, + commonObjs: this.commonObjs, + annotationCanvasMap, + operatorList: intentState.operatorList, + pageIndex: this._pageIndex, + canvasFactory: canvasFactoryInstance, + useRequestAnimationFrame: !intentPrint, + pdfBug: this._pdfBug, + pageColors + }); + (intentState.renderTasks ||= new Set()).add(internalRenderTask); + const renderTask = internalRenderTask.task; + Promise.all([intentState.displayReadyCapability.promise, optionalContentConfigPromise]).then(([transparency, optionalContentConfig]) => { + if (this.pendingCleanup) { + complete(); + return; + } + + if (this._stats) { + this._stats.time("Rendering"); + } + + internalRenderTask.initializeGraphics({ + transparency, + optionalContentConfig + }); + internalRenderTask.operatorListChanged(); + }).catch(complete); + return renderTask; + } + + getOperatorList({ + intent = "display", + annotationMode = _util.AnnotationMode.ENABLE + } = {}) { + function operatorListChanged() { + if (intentState.operatorList.lastChunk) { + intentState.opListReadCapability.resolve(intentState.operatorList); + intentState.renderTasks.delete(opListTask); + } + } + + const intentArgs = this._transport.getRenderingIntent(intent, annotationMode, true); + + let intentState = this._intentStates.get(intentArgs.cacheKey); + + if (!intentState) { + intentState = Object.create(null); + + this._intentStates.set(intentArgs.cacheKey, intentState); + } + + let opListTask; + + if (!intentState.opListReadCapability) { + opListTask = Object.create(null); + opListTask.operatorListChanged = operatorListChanged; + intentState.opListReadCapability = (0, _util.createPromiseCapability)(); + (intentState.renderTasks ||= new Set()).add(opListTask); + intentState.operatorList = { + fnArray: [], + argsArray: [], + lastChunk: false + }; + + if (this._stats) { + this._stats.time("Page Request"); + } + + this._pumpOperatorList(intentArgs); + } + + return intentState.opListReadCapability.promise; + } + + streamTextContent({ + disableCombineTextItems = false, + includeMarkedContent = false + } = {}) { + const TEXT_CONTENT_CHUNK_SIZE = 100; + return this._transport.messageHandler.sendWithStream("GetTextContent", { + pageIndex: this._pageIndex, + combineTextItems: disableCombineTextItems !== true, + includeMarkedContent: includeMarkedContent === true + }, { + highWaterMark: TEXT_CONTENT_CHUNK_SIZE, + + size(textContent) { + return textContent.items.length; + } + + }); + } + + getTextContent(params = {}) { + if (this._transport._htmlForXfa) { + return this.getXfa().then(xfa => { + return _xfa_text.XfaText.textContent(xfa); + }); + } + + const readableStream = this.streamTextContent(params); + return new Promise(function (resolve, reject) { + function pump() { + reader.read().then(function ({ + value, + done + }) { + if (done) { + resolve(textContent); + return; + } + + Object.assign(textContent.styles, value.styles); + textContent.items.push(...value.items); + pump(); + }, reject); + } + + const reader = readableStream.getReader(); + const textContent = { + items: [], + styles: Object.create(null) + }; + pump(); + }); + } + + getStructTree() { + return this._structTreePromise ||= this._transport.getStructTree(this._pageIndex); + } + + _destroy() { + this.destroyed = true; + const waitOn = []; + + for (const intentState of this._intentStates.values()) { + this._abortOperatorList({ + intentState, + reason: new Error("Page was destroyed."), + force: true + }); + + if (intentState.opListReadCapability) { + continue; + } + + for (const internalRenderTask of intentState.renderTasks) { + waitOn.push(internalRenderTask.completed); + internalRenderTask.cancel(); + } + } + + this.objs.clear(); + + for (const bitmap of this._bitmaps) { + bitmap.close(); + } + + this._bitmaps.clear(); + + this._annotationPromises.clear(); + + this._jsActionsPromise = null; + this._structTreePromise = null; + this.pendingCleanup = false; + return Promise.all(waitOn); + } + + cleanup(resetStats = false) { + this.pendingCleanup = true; + return this._tryCleanup(resetStats); + } + + _tryCleanup(resetStats = false) { + if (!this.pendingCleanup) { + return false; + } + + for (const { + renderTasks, + operatorList + } of this._intentStates.values()) { + if (renderTasks.size > 0 || !operatorList.lastChunk) { + return false; + } + } + + this._intentStates.clear(); + + this.objs.clear(); + + this._annotationPromises.clear(); + + this._jsActionsPromise = null; + this._structTreePromise = null; + + if (resetStats && this._stats) { + this._stats = new _display_utils.StatTimer(); + } + + for (const bitmap of this._bitmaps) { + bitmap.close(); + } + + this._bitmaps.clear(); + + this.pendingCleanup = false; + return true; + } + + _startRenderPage(transparency, cacheKey) { + const intentState = this._intentStates.get(cacheKey); + + if (!intentState) { + return; + } + + if (this._stats) { + this._stats.timeEnd("Page Request"); + } + + if (intentState.displayReadyCapability) { + intentState.displayReadyCapability.resolve(transparency); + } + } + + _renderPageChunk(operatorListChunk, intentState) { + for (let i = 0, ii = operatorListChunk.length; i < ii; i++) { + intentState.operatorList.fnArray.push(operatorListChunk.fnArray[i]); + intentState.operatorList.argsArray.push(operatorListChunk.argsArray[i]); + } + + intentState.operatorList.lastChunk = operatorListChunk.lastChunk; + + for (const internalRenderTask of intentState.renderTasks) { + internalRenderTask.operatorListChanged(); + } + + if (operatorListChunk.lastChunk) { + this._tryCleanup(); + } + } + + _pumpOperatorList({ + renderingIntent, + cacheKey + }) { + const readableStream = this._transport.messageHandler.sendWithStream("GetOperatorList", { + pageIndex: this._pageIndex, + intent: renderingIntent, + cacheKey, + annotationStorage: renderingIntent & _util.RenderingIntentFlag.ANNOTATIONS_STORAGE ? this._transport.annotationStorage.serializable : null + }); + + const reader = readableStream.getReader(); + + const intentState = this._intentStates.get(cacheKey); + + intentState.streamReader = reader; + + const pump = () => { + reader.read().then(({ + value, + done + }) => { + if (done) { + intentState.streamReader = null; + return; + } + + if (this._transport.destroyed) { + return; + } + + this._renderPageChunk(value, intentState); + + pump(); + }, reason => { + intentState.streamReader = null; + + if (this._transport.destroyed) { + return; + } + + if (intentState.operatorList) { + intentState.operatorList.lastChunk = true; + + for (const internalRenderTask of intentState.renderTasks) { + internalRenderTask.operatorListChanged(); + } + + this._tryCleanup(); + } + + if (intentState.displayReadyCapability) { + intentState.displayReadyCapability.reject(reason); + } else if (intentState.opListReadCapability) { + intentState.opListReadCapability.reject(reason); + } else { + throw reason; + } + }); + }; + + pump(); + } + + _abortOperatorList({ + intentState, + reason, + force = false + }) { + if (!intentState.streamReader) { + return; + } + + if (!force) { + if (intentState.renderTasks.size > 0) { + return; + } + + if (reason instanceof _display_utils.RenderingCancelledException) { + intentState.streamReaderCancelTimeout = setTimeout(() => { + this._abortOperatorList({ + intentState, + reason, + force: true + }); + + intentState.streamReaderCancelTimeout = null; + }, RENDERING_CANCELLED_TIMEOUT); + return; + } + } + + intentState.streamReader.cancel(new _util.AbortException(reason.message)).catch(() => {}); + intentState.streamReader = null; + + if (this._transport.destroyed) { + return; + } + + for (const [curCacheKey, curIntentState] of this._intentStates) { + if (curIntentState === intentState) { + this._intentStates.delete(curCacheKey); + + break; + } + } + + this.cleanup(); + } + + get stats() { + return this._stats; + } + +} + +exports.PDFPageProxy = PDFPageProxy; + +class LoopbackPort { + constructor() { + this._listeners = []; + this._deferred = Promise.resolve(); + } + + postMessage(obj, transfers) { + const event = { + data: structuredClone(obj, transfers) + }; + + this._deferred.then(() => { + for (const listener of this._listeners) { + listener.call(this, event); + } + }); + } + + addEventListener(name, listener) { + this._listeners.push(listener); + } + + removeEventListener(name, listener) { + const i = this._listeners.indexOf(listener); + + this._listeners.splice(i, 1); + } + + terminate() { + this._listeners.length = 0; + } + +} + +exports.LoopbackPort = LoopbackPort; +const PDFWorkerUtil = { + isWorkerDisabled: false, + fallbackWorkerSrc: null, + fakeWorkerId: 0 +}; +exports.PDFWorkerUtil = PDFWorkerUtil; +{ + if (_is_node.isNodeJS && typeof require === "function") { + PDFWorkerUtil.isWorkerDisabled = true; + PDFWorkerUtil.fallbackWorkerSrc = "./pdf.worker.js"; + } else if (typeof document === "object") { + const pdfjsFilePath = document?.currentScript?.src; + + if (pdfjsFilePath) { + PDFWorkerUtil.fallbackWorkerSrc = pdfjsFilePath.replace(/(\.(?:min\.)?js)(\?.*)?$/i, ".worker$1$2"); + } + } + + PDFWorkerUtil.isSameOrigin = function (baseUrl, otherUrl) { + let base; + + try { + base = new URL(baseUrl); + + if (!base.origin || base.origin === "null") { + return false; + } + } catch (e) { + return false; + } + + const other = new URL(otherUrl, base); + return base.origin === other.origin; + }; + + PDFWorkerUtil.createCDNWrapper = function (url) { + const wrapper = `importScripts("${url}");`; + return URL.createObjectURL(new Blob([wrapper])); + }; +} + +class PDFWorker { + static #workerPorts = new WeakMap(); + + constructor({ + name = null, + port = null, + verbosity = (0, _util.getVerbosityLevel)() + } = {}) { + if (port && PDFWorker.#workerPorts.has(port)) { + throw new Error("Cannot use more than one PDFWorker per port."); + } + + this.name = name; + this.destroyed = false; + this.verbosity = verbosity; + this._readyCapability = (0, _util.createPromiseCapability)(); + this._port = null; + this._webWorker = null; + this._messageHandler = null; + + if (port) { + PDFWorker.#workerPorts.set(port, this); + + this._initializeFromPort(port); + + return; + } + + this._initialize(); + } + + get promise() { + return this._readyCapability.promise; + } + + get port() { + return this._port; + } + + get messageHandler() { + return this._messageHandler; + } + + _initializeFromPort(port) { + this._port = port; + this._messageHandler = new _message_handler.MessageHandler("main", "worker", port); + + this._messageHandler.on("ready", function () {}); + + this._readyCapability.resolve(); + } + + _initialize() { + if (typeof Worker !== "undefined" && !PDFWorkerUtil.isWorkerDisabled && !PDFWorker._mainThreadWorkerMessageHandler) { + let workerSrc = PDFWorker.workerSrc; + + try { + if (!PDFWorkerUtil.isSameOrigin(window.location.href, workerSrc)) { + workerSrc = PDFWorkerUtil.createCDNWrapper(new URL(workerSrc, window.location).href); + } + + const worker = new Worker(workerSrc); + const messageHandler = new _message_handler.MessageHandler("main", "worker", worker); + + const terminateEarly = () => { + worker.removeEventListener("error", onWorkerError); + messageHandler.destroy(); + worker.terminate(); + + if (this.destroyed) { + this._readyCapability.reject(new Error("Worker was destroyed")); + } else { + this._setupFakeWorker(); + } + }; + + const onWorkerError = () => { + if (!this._webWorker) { + terminateEarly(); + } + }; + + worker.addEventListener("error", onWorkerError); + messageHandler.on("test", data => { + worker.removeEventListener("error", onWorkerError); + + if (this.destroyed) { + terminateEarly(); + return; + } + + if (data) { + this._messageHandler = messageHandler; + this._port = worker; + this._webWorker = worker; + + this._readyCapability.resolve(); + + messageHandler.send("configure", { + verbosity: this.verbosity + }); + } else { + this._setupFakeWorker(); + + messageHandler.destroy(); + worker.terminate(); + } + }); + messageHandler.on("ready", data => { + worker.removeEventListener("error", onWorkerError); + + if (this.destroyed) { + terminateEarly(); + return; + } + + try { + sendTest(); + } catch (e) { + this._setupFakeWorker(); + } + }); + + const sendTest = () => { + const testObj = new Uint8Array(); + messageHandler.send("test", testObj, [testObj.buffer]); + }; + + sendTest(); + return; + } catch (e) { + (0, _util.info)("The worker has been disabled."); + } + } + + this._setupFakeWorker(); + } + + _setupFakeWorker() { + if (!PDFWorkerUtil.isWorkerDisabled) { + (0, _util.warn)("Setting up fake worker."); + PDFWorkerUtil.isWorkerDisabled = true; + } + + PDFWorker._setupFakeWorkerGlobal.then(WorkerMessageHandler => { + if (this.destroyed) { + this._readyCapability.reject(new Error("Worker was destroyed")); + + return; + } + + const port = new LoopbackPort(); + this._port = port; + const id = `fake${PDFWorkerUtil.fakeWorkerId++}`; + const workerHandler = new _message_handler.MessageHandler(id + "_worker", id, port); + WorkerMessageHandler.setup(workerHandler, port); + const messageHandler = new _message_handler.MessageHandler(id, id + "_worker", port); + this._messageHandler = messageHandler; + + this._readyCapability.resolve(); + + messageHandler.send("configure", { + verbosity: this.verbosity + }); + }).catch(reason => { + this._readyCapability.reject(new Error(`Setting up fake worker failed: "${reason.message}".`)); + }); + } + + destroy() { + this.destroyed = true; + + if (this._webWorker) { + this._webWorker.terminate(); + + this._webWorker = null; + } + + PDFWorker.#workerPorts.delete(this._port); + this._port = null; + + if (this._messageHandler) { + this._messageHandler.destroy(); + + this._messageHandler = null; + } + } + + static fromPort(params) { + if (!params?.port) { + throw new Error("PDFWorker.fromPort - invalid method signature."); + } + + if (this.#workerPorts.has(params.port)) { + return this.#workerPorts.get(params.port); + } + + return new PDFWorker(params); + } + + static get workerSrc() { + if (_worker_options.GlobalWorkerOptions.workerSrc) { + return _worker_options.GlobalWorkerOptions.workerSrc; + } + + if (PDFWorkerUtil.fallbackWorkerSrc !== null) { + if (!_is_node.isNodeJS) { + (0, _display_utils.deprecated)('No "GlobalWorkerOptions.workerSrc" specified.'); + } + + return PDFWorkerUtil.fallbackWorkerSrc; + } + + throw new Error('No "GlobalWorkerOptions.workerSrc" specified.'); + } + + static get _mainThreadWorkerMessageHandler() { + try { + return globalThis.pdfjsWorker?.WorkerMessageHandler || null; + } catch (ex) { + return null; + } + } + + static get _setupFakeWorkerGlobal() { + const loader = async () => { + const mainWorkerMessageHandler = this._mainThreadWorkerMessageHandler; + + if (mainWorkerMessageHandler) { + return mainWorkerMessageHandler; + } + + if (_is_node.isNodeJS && typeof require === "function") { + const worker = eval("require")(this.workerSrc); + return worker.WorkerMessageHandler; + } + + await (0, _display_utils.loadScript)(this.workerSrc); + return window.pdfjsWorker.WorkerMessageHandler; + }; + + return (0, _util.shadow)(this, "_setupFakeWorkerGlobal", loader()); + } + +} + +exports.PDFWorker = PDFWorker; +{ + PDFWorker.getWorkerSrc = function () { + (0, _display_utils.deprecated)("`PDFWorker.getWorkerSrc()`, please use `PDFWorker.workerSrc` instead."); + return this.workerSrc; + }; +} + +class WorkerTransport { + #docStats = null; + #pageCache = new Map(); + #pagePromises = new Map(); + #metadataPromise = null; + + constructor(messageHandler, loadingTask, networkStream, params) { + this.messageHandler = messageHandler; + this.loadingTask = loadingTask; + this.commonObjs = new PDFObjects(); + this.fontLoader = new _font_loader.FontLoader({ + docId: loadingTask.docId, + onUnsupportedFeature: this._onUnsupportedFeature.bind(this), + ownerDocument: params.ownerDocument, + styleElement: params.styleElement + }); + this._params = params; + + if (!params.useWorkerFetch) { + this.CMapReaderFactory = new params.CMapReaderFactory({ + baseUrl: params.cMapUrl, + isCompressed: params.cMapPacked + }); + this.StandardFontDataFactory = new params.StandardFontDataFactory({ + baseUrl: params.standardFontDataUrl + }); + } + + this.destroyed = false; + this.destroyCapability = null; + this._passwordCapability = null; + this._networkStream = networkStream; + this._fullReader = null; + this._lastProgress = null; + this.downloadInfoCapability = (0, _util.createPromiseCapability)(); + this.setupMessageHandler(); + } + + get annotationStorage() { + return (0, _util.shadow)(this, "annotationStorage", new _annotation_storage.AnnotationStorage()); + } + + get stats() { + return this.#docStats; + } + + getRenderingIntent(intent, annotationMode = _util.AnnotationMode.ENABLE, isOpList = false) { + let renderingIntent = _util.RenderingIntentFlag.DISPLAY; + let annotationHash = ""; + + switch (intent) { + case "any": + renderingIntent = _util.RenderingIntentFlag.ANY; + break; + + case "display": + break; + + case "print": + renderingIntent = _util.RenderingIntentFlag.PRINT; + break; + + default: + (0, _util.warn)(`getRenderingIntent - invalid intent: ${intent}`); + } + + switch (annotationMode) { + case _util.AnnotationMode.DISABLE: + renderingIntent += _util.RenderingIntentFlag.ANNOTATIONS_DISABLE; + break; + + case _util.AnnotationMode.ENABLE: + break; + + case _util.AnnotationMode.ENABLE_FORMS: + renderingIntent += _util.RenderingIntentFlag.ANNOTATIONS_FORMS; + break; + + case _util.AnnotationMode.ENABLE_STORAGE: + renderingIntent += _util.RenderingIntentFlag.ANNOTATIONS_STORAGE; + annotationHash = this.annotationStorage.hash; + break; + + default: + (0, _util.warn)(`getRenderingIntent - invalid annotationMode: ${annotationMode}`); + } + + if (isOpList) { + renderingIntent += _util.RenderingIntentFlag.OPLIST; + } + + return { + renderingIntent, + cacheKey: `${renderingIntent}_${annotationHash}` + }; + } + + destroy() { + if (this.destroyCapability) { + return this.destroyCapability.promise; + } + + this.destroyed = true; + this.destroyCapability = (0, _util.createPromiseCapability)(); + + if (this._passwordCapability) { + this._passwordCapability.reject(new Error("Worker was destroyed during onPassword callback")); + } + + const waitOn = []; + + for (const page of this.#pageCache.values()) { + waitOn.push(page._destroy()); + } + + this.#pageCache.clear(); + this.#pagePromises.clear(); + + if (this.hasOwnProperty("annotationStorage")) { + this.annotationStorage.resetModified(); + } + + const terminated = this.messageHandler.sendWithPromise("Terminate", null); + waitOn.push(terminated); + Promise.all(waitOn).then(() => { + this.commonObjs.clear(); + this.fontLoader.clear(); + this.#metadataPromise = null; + this._getFieldObjectsPromise = null; + this._hasJSActionsPromise = null; + + if (this._networkStream) { + this._networkStream.cancelAllRequests(new _util.AbortException("Worker was terminated.")); + } + + if (this.messageHandler) { + this.messageHandler.destroy(); + this.messageHandler = null; + } + + this.destroyCapability.resolve(); + }, this.destroyCapability.reject); + return this.destroyCapability.promise; + } + + setupMessageHandler() { + const { + messageHandler, + loadingTask + } = this; + messageHandler.on("GetReader", (data, sink) => { + (0, _util.assert)(this._networkStream, "GetReader - no `IPDFStream` instance available."); + this._fullReader = this._networkStream.getFullReader(); + + this._fullReader.onProgress = evt => { + this._lastProgress = { + loaded: evt.loaded, + total: evt.total + }; + }; + + sink.onPull = () => { + this._fullReader.read().then(function ({ + value, + done + }) { + if (done) { + sink.close(); + return; + } + + (0, _util.assert)((0, _util.isArrayBuffer)(value), "GetReader - expected an ArrayBuffer."); + sink.enqueue(new Uint8Array(value), 1, [value]); + }).catch(reason => { + sink.error(reason); + }); + }; + + sink.onCancel = reason => { + this._fullReader.cancel(reason); + + sink.ready.catch(readyReason => { + if (this.destroyed) { + return; + } + + throw readyReason; + }); + }; + }); + messageHandler.on("ReaderHeadersReady", data => { + const headersCapability = (0, _util.createPromiseCapability)(); + const fullReader = this._fullReader; + fullReader.headersReady.then(() => { + if (!fullReader.isStreamingSupported || !fullReader.isRangeSupported) { + if (this._lastProgress) { + loadingTask.onProgress?.(this._lastProgress); + } + + fullReader.onProgress = evt => { + loadingTask.onProgress?.({ + loaded: evt.loaded, + total: evt.total + }); + }; + } + + headersCapability.resolve({ + isStreamingSupported: fullReader.isStreamingSupported, + isRangeSupported: fullReader.isRangeSupported, + contentLength: fullReader.contentLength + }); + }, headersCapability.reject); + return headersCapability.promise; + }); + messageHandler.on("GetRangeReader", (data, sink) => { + (0, _util.assert)(this._networkStream, "GetRangeReader - no `IPDFStream` instance available."); + + const rangeReader = this._networkStream.getRangeReader(data.begin, data.end); + + if (!rangeReader) { + sink.close(); + return; + } + + sink.onPull = () => { + rangeReader.read().then(function ({ + value, + done + }) { + if (done) { + sink.close(); + return; + } + + (0, _util.assert)((0, _util.isArrayBuffer)(value), "GetRangeReader - expected an ArrayBuffer."); + sink.enqueue(new Uint8Array(value), 1, [value]); + }).catch(reason => { + sink.error(reason); + }); + }; + + sink.onCancel = reason => { + rangeReader.cancel(reason); + sink.ready.catch(readyReason => { + if (this.destroyed) { + return; + } + + throw readyReason; + }); + }; + }); + messageHandler.on("GetDoc", ({ + pdfInfo + }) => { + this._numPages = pdfInfo.numPages; + this._htmlForXfa = pdfInfo.htmlForXfa; + delete pdfInfo.htmlForXfa; + + loadingTask._capability.resolve(new PDFDocumentProxy(pdfInfo, this)); + }); + messageHandler.on("DocException", function (ex) { + let reason; + + switch (ex.name) { + case "PasswordException": + reason = new _util.PasswordException(ex.message, ex.code); + break; + + case "InvalidPDFException": + reason = new _util.InvalidPDFException(ex.message); + break; + + case "MissingPDFException": + reason = new _util.MissingPDFException(ex.message); + break; + + case "UnexpectedResponseException": + reason = new _util.UnexpectedResponseException(ex.message, ex.status); + break; + + case "UnknownErrorException": + reason = new _util.UnknownErrorException(ex.message, ex.details); + break; + + default: + (0, _util.unreachable)("DocException - expected a valid Error."); + } + + loadingTask._capability.reject(reason); + }); + messageHandler.on("PasswordRequest", exception => { + this._passwordCapability = (0, _util.createPromiseCapability)(); + + if (loadingTask.onPassword) { + const updatePassword = password => { + if (password instanceof Error) { + this._passwordCapability.reject(password); + } else { + this._passwordCapability.resolve({ + password + }); + } + }; + + try { + loadingTask.onPassword(updatePassword, exception.code); + } catch (ex) { + this._passwordCapability.reject(ex); + } + } else { + this._passwordCapability.reject(new _util.PasswordException(exception.message, exception.code)); + } + + return this._passwordCapability.promise; + }); + messageHandler.on("DataLoaded", data => { + loadingTask.onProgress?.({ + loaded: data.length, + total: data.length + }); + this.downloadInfoCapability.resolve(data); + }); + messageHandler.on("StartRenderPage", data => { + if (this.destroyed) { + return; + } + + const page = this.#pageCache.get(data.pageIndex); + + page._startRenderPage(data.transparency, data.cacheKey); + }); + messageHandler.on("commonobj", ([id, type, exportedData]) => { + if (this.destroyed) { + return; + } + + if (this.commonObjs.has(id)) { + return; + } + + switch (type) { + case "Font": + const params = this._params; + + if ("error" in exportedData) { + const exportedError = exportedData.error; + (0, _util.warn)(`Error during font loading: ${exportedError}`); + this.commonObjs.resolve(id, exportedError); + break; + } + + let fontRegistry = null; + + if (params.pdfBug && globalThis.FontInspector?.enabled) { + fontRegistry = { + registerFont(font, url) { + globalThis.FontInspector.fontAdded(font, url); + } + + }; + } + + const font = new _font_loader.FontFaceObject(exportedData, { + isEvalSupported: params.isEvalSupported, + disableFontFace: params.disableFontFace, + ignoreErrors: params.ignoreErrors, + onUnsupportedFeature: this._onUnsupportedFeature.bind(this), + fontRegistry + }); + this.fontLoader.bind(font).catch(reason => { + return messageHandler.sendWithPromise("FontFallback", { + id + }); + }).finally(() => { + if (!params.fontExtraProperties && font.data) { + font.data = null; + } + + this.commonObjs.resolve(id, font); + }); + break; + + case "FontPath": + case "Image": + this.commonObjs.resolve(id, exportedData); + break; + + default: + throw new Error(`Got unknown common object type ${type}`); + } + }); + messageHandler.on("obj", ([id, pageIndex, type, imageData]) => { + if (this.destroyed) { + return; + } + + const pageProxy = this.#pageCache.get(pageIndex); + + if (pageProxy.objs.has(id)) { + return; + } + + switch (type) { + case "Image": + pageProxy.objs.resolve(id, imageData); + const MAX_IMAGE_SIZE_TO_STORE = 8000000; + + if (imageData) { + let length; + + if (imageData.bitmap) { + const { + bitmap, + width, + height + } = imageData; + length = width * height * 4; + + pageProxy._bitmaps.add(bitmap); + } else { + length = imageData.data?.length || 0; + } + + if (length > MAX_IMAGE_SIZE_TO_STORE) { + pageProxy.cleanupAfterRender = true; + } + } + + break; + + case "Pattern": + pageProxy.objs.resolve(id, imageData); + break; + + default: + throw new Error(`Got unknown object type ${type}`); + } + }); + messageHandler.on("DocProgress", data => { + if (this.destroyed) { + return; + } + + loadingTask.onProgress?.({ + loaded: data.loaded, + total: data.total + }); + }); + messageHandler.on("DocStats", data => { + if (this.destroyed) { + return; + } + + this.#docStats = Object.freeze({ + streamTypes: Object.freeze(data.streamTypes), + fontTypes: Object.freeze(data.fontTypes) + }); + }); + messageHandler.on("UnsupportedFeature", this._onUnsupportedFeature.bind(this)); + messageHandler.on("FetchBuiltInCMap", data => { + if (this.destroyed) { + return Promise.reject(new Error("Worker was destroyed.")); + } + + if (!this.CMapReaderFactory) { + return Promise.reject(new Error("CMapReaderFactory not initialized, see the `useWorkerFetch` parameter.")); + } + + return this.CMapReaderFactory.fetch(data); + }); + messageHandler.on("FetchStandardFontData", data => { + if (this.destroyed) { + return Promise.reject(new Error("Worker was destroyed.")); + } + + if (!this.StandardFontDataFactory) { + return Promise.reject(new Error("StandardFontDataFactory not initialized, see the `useWorkerFetch` parameter.")); + } + + return this.StandardFontDataFactory.fetch(data); + }); + } + + _onUnsupportedFeature({ + featureId + }) { + if (this.destroyed) { + return; + } + + this.loadingTask.onUnsupportedFeature?.(featureId); + } + + getData() { + return this.messageHandler.sendWithPromise("GetData", null); + } + + getPage(pageNumber) { + if (!Number.isInteger(pageNumber) || pageNumber <= 0 || pageNumber > this._numPages) { + return Promise.reject(new Error("Invalid page request.")); + } + + const pageIndex = pageNumber - 1, + cachedPromise = this.#pagePromises.get(pageIndex); + + if (cachedPromise) { + return cachedPromise; + } + + const promise = this.messageHandler.sendWithPromise("GetPage", { + pageIndex + }).then(pageInfo => { + if (this.destroyed) { + throw new Error("Transport destroyed"); + } + + const page = new PDFPageProxy(pageIndex, pageInfo, this, this._params.ownerDocument, this._params.pdfBug); + this.#pageCache.set(pageIndex, page); + return page; + }); + this.#pagePromises.set(pageIndex, promise); + return promise; + } + + getPageIndex(ref) { + if (typeof ref !== "object" || ref === null || !Number.isInteger(ref.num) || ref.num < 0 || !Number.isInteger(ref.gen) || ref.gen < 0) { + return Promise.reject(new Error("Invalid pageIndex request.")); + } + + return this.messageHandler.sendWithPromise("GetPageIndex", { + num: ref.num, + gen: ref.gen + }); + } + + getAnnotations(pageIndex, intent) { + return this.messageHandler.sendWithPromise("GetAnnotations", { + pageIndex, + intent + }); + } + + saveDocument() { + return this.messageHandler.sendWithPromise("SaveDocument", { + isPureXfa: !!this._htmlForXfa, + numPages: this._numPages, + annotationStorage: this.annotationStorage.serializable, + filename: this._fullReader?.filename ?? null + }).finally(() => { + this.annotationStorage.resetModified(); + }); + } + + getFieldObjects() { + return this._getFieldObjectsPromise ||= this.messageHandler.sendWithPromise("GetFieldObjects", null); + } + + hasJSActions() { + return this._hasJSActionsPromise ||= this.messageHandler.sendWithPromise("HasJSActions", null); + } + + getCalculationOrderIds() { + return this.messageHandler.sendWithPromise("GetCalculationOrderIds", null); + } + + getDestinations() { + return this.messageHandler.sendWithPromise("GetDestinations", null); + } + + getDestination(id) { + if (typeof id !== "string") { + return Promise.reject(new Error("Invalid destination request.")); + } + + return this.messageHandler.sendWithPromise("GetDestination", { + id + }); + } + + getPageLabels() { + return this.messageHandler.sendWithPromise("GetPageLabels", null); + } + + getPageLayout() { + return this.messageHandler.sendWithPromise("GetPageLayout", null); + } + + getPageMode() { + return this.messageHandler.sendWithPromise("GetPageMode", null); + } + + getViewerPreferences() { + return this.messageHandler.sendWithPromise("GetViewerPreferences", null); + } + + getOpenAction() { + return this.messageHandler.sendWithPromise("GetOpenAction", null); + } + + getAttachments() { + return this.messageHandler.sendWithPromise("GetAttachments", null); + } + + getJavaScript() { + return this.messageHandler.sendWithPromise("GetJavaScript", null); + } + + getDocJSActions() { + return this.messageHandler.sendWithPromise("GetDocJSActions", null); + } + + getPageJSActions(pageIndex) { + return this.messageHandler.sendWithPromise("GetPageJSActions", { + pageIndex + }); + } + + getStructTree(pageIndex) { + return this.messageHandler.sendWithPromise("GetStructTree", { + pageIndex + }); + } + + getOutline() { + return this.messageHandler.sendWithPromise("GetOutline", null); + } + + getOptionalContentConfig() { + return this.messageHandler.sendWithPromise("GetOptionalContentConfig", null).then(results => { + return new _optional_content_config.OptionalContentConfig(results); + }); + } + + getPermissions() { + return this.messageHandler.sendWithPromise("GetPermissions", null); + } + + getMetadata() { + return this.#metadataPromise ||= this.messageHandler.sendWithPromise("GetMetadata", null).then(results => { + return { + info: results[0], + metadata: results[1] ? new _metadata.Metadata(results[1]) : null, + contentDispositionFilename: this._fullReader?.filename ?? null, + contentLength: this._fullReader?.contentLength ?? null + }; + }); + } + + getMarkInfo() { + return this.messageHandler.sendWithPromise("GetMarkInfo", null); + } + + async startCleanup(keepLoadedFonts = false) { + await this.messageHandler.sendWithPromise("Cleanup", null); + + if (this.destroyed) { + return; + } + + for (const page of this.#pageCache.values()) { + const cleanupSuccessful = page.cleanup(); + + if (!cleanupSuccessful) { + throw new Error(`startCleanup: Page ${page.pageNumber} is currently rendering.`); + } + } + + this.commonObjs.clear(); + + if (!keepLoadedFonts) { + this.fontLoader.clear(); + } + + this.#metadataPromise = null; + this._getFieldObjectsPromise = null; + this._hasJSActionsPromise = null; + } + + get loadingParams() { + const params = this._params; + return (0, _util.shadow)(this, "loadingParams", { + disableAutoFetch: params.disableAutoFetch, + enableXfa: params.enableXfa + }); + } + +} + +class PDFObjects { + #objs = Object.create(null); + + #ensureObj(objId) { + const obj = this.#objs[objId]; + + if (obj) { + return obj; + } + + return this.#objs[objId] = { + capability: (0, _util.createPromiseCapability)(), + data: null + }; + } + + get(objId, callback = null) { + if (callback) { + const obj = this.#ensureObj(objId); + obj.capability.promise.then(() => callback(obj.data)); + return null; + } + + const obj = this.#objs[objId]; + + if (!obj?.capability.settled) { + throw new Error(`Requesting object that isn't resolved yet ${objId}.`); + } + + return obj.data; + } + + has(objId) { + const obj = this.#objs[objId]; + return obj?.capability.settled || false; + } + + resolve(objId, data = null) { + const obj = this.#ensureObj(objId); + obj.data = data; + obj.capability.resolve(); + } + + clear() { + this.#objs = Object.create(null); + } + +} + +class RenderTask { + constructor(internalRenderTask) { + this._internalRenderTask = internalRenderTask; + this.onContinue = null; + } + + get promise() { + return this._internalRenderTask.capability.promise; + } + + cancel() { + this._internalRenderTask.cancel(); + } + +} + +exports.RenderTask = RenderTask; + +class InternalRenderTask { + static #canvasInUse = new WeakSet(); + + constructor({ + callback, + params, + objs, + commonObjs, + annotationCanvasMap, + operatorList, + pageIndex, + canvasFactory, + useRequestAnimationFrame = false, + pdfBug = false, + pageColors = null + }) { + this.callback = callback; + this.params = params; + this.objs = objs; + this.commonObjs = commonObjs; + this.annotationCanvasMap = annotationCanvasMap; + this.operatorListIdx = null; + this.operatorList = operatorList; + this._pageIndex = pageIndex; + this.canvasFactory = canvasFactory; + this._pdfBug = pdfBug; + this.pageColors = pageColors; + this.running = false; + this.graphicsReadyCallback = null; + this.graphicsReady = false; + this._useRequestAnimationFrame = useRequestAnimationFrame === true && typeof window !== "undefined"; + this.cancelled = false; + this.capability = (0, _util.createPromiseCapability)(); + this.task = new RenderTask(this); + this._cancelBound = this.cancel.bind(this); + this._continueBound = this._continue.bind(this); + this._scheduleNextBound = this._scheduleNext.bind(this); + this._nextBound = this._next.bind(this); + this._canvas = params.canvasContext.canvas; + } + + get completed() { + return this.capability.promise.catch(function () {}); + } + + initializeGraphics({ + transparency = false, + optionalContentConfig + }) { + if (this.cancelled) { + return; + } + + if (this._canvas) { + if (InternalRenderTask.#canvasInUse.has(this._canvas)) { + throw new Error("Cannot use the same canvas during multiple render() operations. " + "Use different canvas or ensure previous operations were " + "cancelled or completed."); + } + + InternalRenderTask.#canvasInUse.add(this._canvas); + } + + if (this._pdfBug && globalThis.StepperManager?.enabled) { + this.stepper = globalThis.StepperManager.create(this._pageIndex); + this.stepper.init(this.operatorList); + this.stepper.nextBreakPoint = this.stepper.getNextBreakPoint(); + } + + const { + canvasContext, + viewport, + transform, + imageLayer, + background + } = this.params; + this.gfx = new _canvas.CanvasGraphics(canvasContext, this.commonObjs, this.objs, this.canvasFactory, imageLayer, optionalContentConfig, this.annotationCanvasMap, this.pageColors); + this.gfx.beginDrawing({ + transform, + viewport, + transparency, + background + }); + this.operatorListIdx = 0; + this.graphicsReady = true; + + if (this.graphicsReadyCallback) { + this.graphicsReadyCallback(); + } + } + + cancel(error = null) { + this.running = false; + this.cancelled = true; + + if (this.gfx) { + this.gfx.endDrawing(); + } + + if (this._canvas) { + InternalRenderTask.#canvasInUse.delete(this._canvas); + } + + this.callback(error || new _display_utils.RenderingCancelledException(`Rendering cancelled, page ${this._pageIndex + 1}`, "canvas")); + } + + operatorListChanged() { + if (!this.graphicsReady) { + if (!this.graphicsReadyCallback) { + this.graphicsReadyCallback = this._continueBound; + } + + return; + } + + if (this.stepper) { + this.stepper.updateOperatorList(this.operatorList); + } + + if (this.running) { + return; + } + + this._continue(); + } + + _continue() { + this.running = true; + + if (this.cancelled) { + return; + } + + if (this.task.onContinue) { + this.task.onContinue(this._scheduleNextBound); + } else { + this._scheduleNext(); + } + } + + _scheduleNext() { + if (this._useRequestAnimationFrame) { + window.requestAnimationFrame(() => { + this._nextBound().catch(this._cancelBound); + }); + } else { + Promise.resolve().then(this._nextBound).catch(this._cancelBound); + } + } + + async _next() { + if (this.cancelled) { + return; + } + + this.operatorListIdx = this.gfx.executeOperatorList(this.operatorList, this.operatorListIdx, this._continueBound, this.stepper); + + if (this.operatorListIdx === this.operatorList.argsArray.length) { + this.running = false; + + if (this.operatorList.lastChunk) { + this.gfx.endDrawing(); + + if (this._canvas) { + InternalRenderTask.#canvasInUse.delete(this._canvas); + } + + this.callback(); + } + } + } + +} + +const version = '2.14.305'; +exports.version = version; +const build = 'eaaa8b4ad'; +exports.build = build; + +/***/ }), +/* 5 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.StatTimer = exports.RenderingCancelledException = exports.PixelsPerInch = exports.PageViewport = exports.PDFDateString = exports.DOMStandardFontDataFactory = exports.DOMSVGFactory = exports.DOMCanvasFactory = exports.DOMCMapReaderFactory = void 0; +exports.deprecated = deprecated; +exports.getFilenameFromUrl = getFilenameFromUrl; +exports.getPdfFilenameFromUrl = getPdfFilenameFromUrl; +exports.getXfaPageViewport = getXfaPageViewport; +exports.isDataScheme = isDataScheme; +exports.isPdfFile = isPdfFile; +exports.isValidFetchUrl = isValidFetchUrl; +exports.loadScript = loadScript; + +var _base_factory = __w_pdfjs_require__(6); + +var _util = __w_pdfjs_require__(1); + +const SVG_NS = "http://www.w3.org/2000/svg"; + +class PixelsPerInch { + static CSS = 96.0; + static PDF = 72.0; + static PDF_TO_CSS_UNITS = this.CSS / this.PDF; +} + +exports.PixelsPerInch = PixelsPerInch; + +class DOMCanvasFactory extends _base_factory.BaseCanvasFactory { + constructor({ + ownerDocument = globalThis.document + } = {}) { + super(); + this._document = ownerDocument; + } + + _createCanvas(width, height) { + const canvas = this._document.createElement("canvas"); + + canvas.width = width; + canvas.height = height; + return canvas; + } + +} + +exports.DOMCanvasFactory = DOMCanvasFactory; + +async function fetchData(url, asTypedArray = false) { + if (isValidFetchUrl(url, document.baseURI)) { + const response = await fetch(url); + + if (!response.ok) { + throw new Error(response.statusText); + } + + return asTypedArray ? new Uint8Array(await response.arrayBuffer()) : (0, _util.stringToBytes)(await response.text()); + } + + return new Promise((resolve, reject) => { + const request = new XMLHttpRequest(); + request.open("GET", url, true); + + if (asTypedArray) { + request.responseType = "arraybuffer"; + } + + request.onreadystatechange = () => { + if (request.readyState !== XMLHttpRequest.DONE) { + return; + } + + if (request.status === 200 || request.status === 0) { + let data; + + if (asTypedArray && request.response) { + data = new Uint8Array(request.response); + } else if (!asTypedArray && request.responseText) { + data = (0, _util.stringToBytes)(request.responseText); + } + + if (data) { + resolve(data); + return; + } + } + + reject(new Error(request.statusText)); + }; + + request.send(null); + }); +} + +class DOMCMapReaderFactory extends _base_factory.BaseCMapReaderFactory { + _fetchData(url, compressionType) { + return fetchData(url, this.isCompressed).then(data => { + return { + cMapData: data, + compressionType + }; + }); + } + +} + +exports.DOMCMapReaderFactory = DOMCMapReaderFactory; + +class DOMStandardFontDataFactory extends _base_factory.BaseStandardFontDataFactory { + _fetchData(url) { + return fetchData(url, true); + } + +} + +exports.DOMStandardFontDataFactory = DOMStandardFontDataFactory; + +class DOMSVGFactory extends _base_factory.BaseSVGFactory { + _createSVG(type) { + return document.createElementNS(SVG_NS, type); + } + +} + +exports.DOMSVGFactory = DOMSVGFactory; + +class PageViewport { + constructor({ + viewBox, + scale, + rotation, + offsetX = 0, + offsetY = 0, + dontFlip = false + }) { + this.viewBox = viewBox; + this.scale = scale; + this.rotation = rotation; + this.offsetX = offsetX; + this.offsetY = offsetY; + const centerX = (viewBox[2] + viewBox[0]) / 2; + const centerY = (viewBox[3] + viewBox[1]) / 2; + let rotateA, rotateB, rotateC, rotateD; + rotation %= 360; + + if (rotation < 0) { + rotation += 360; + } + + switch (rotation) { + case 180: + rotateA = -1; + rotateB = 0; + rotateC = 0; + rotateD = 1; + break; + + case 90: + rotateA = 0; + rotateB = 1; + rotateC = 1; + rotateD = 0; + break; + + case 270: + rotateA = 0; + rotateB = -1; + rotateC = -1; + rotateD = 0; + break; + + case 0: + rotateA = 1; + rotateB = 0; + rotateC = 0; + rotateD = -1; + break; + + default: + throw new Error("PageViewport: Invalid rotation, must be a multiple of 90 degrees."); + } + + if (dontFlip) { + rotateC = -rotateC; + rotateD = -rotateD; + } + + let offsetCanvasX, offsetCanvasY; + let width, height; + + if (rotateA === 0) { + offsetCanvasX = Math.abs(centerY - viewBox[1]) * scale + offsetX; + offsetCanvasY = Math.abs(centerX - viewBox[0]) * scale + offsetY; + width = Math.abs(viewBox[3] - viewBox[1]) * scale; + height = Math.abs(viewBox[2] - viewBox[0]) * scale; + } else { + offsetCanvasX = Math.abs(centerX - viewBox[0]) * scale + offsetX; + offsetCanvasY = Math.abs(centerY - viewBox[1]) * scale + offsetY; + width = Math.abs(viewBox[2] - viewBox[0]) * scale; + height = Math.abs(viewBox[3] - viewBox[1]) * scale; + } + + this.transform = [rotateA * scale, rotateB * scale, rotateC * scale, rotateD * scale, offsetCanvasX - rotateA * scale * centerX - rotateC * scale * centerY, offsetCanvasY - rotateB * scale * centerX - rotateD * scale * centerY]; + this.width = width; + this.height = height; + } + + clone({ + scale = this.scale, + rotation = this.rotation, + offsetX = this.offsetX, + offsetY = this.offsetY, + dontFlip = false + } = {}) { + return new PageViewport({ + viewBox: this.viewBox.slice(), + scale, + rotation, + offsetX, + offsetY, + dontFlip + }); + } + + convertToViewportPoint(x, y) { + return _util.Util.applyTransform([x, y], this.transform); + } + + convertToViewportRectangle(rect) { + const topLeft = _util.Util.applyTransform([rect[0], rect[1]], this.transform); + + const bottomRight = _util.Util.applyTransform([rect[2], rect[3]], this.transform); + + return [topLeft[0], topLeft[1], bottomRight[0], bottomRight[1]]; + } + + convertToPdfPoint(x, y) { + return _util.Util.applyInverseTransform([x, y], this.transform); + } + +} + +exports.PageViewport = PageViewport; + +class RenderingCancelledException extends _util.BaseException { + constructor(msg, type) { + super(msg, "RenderingCancelledException"); + this.type = type; + } + +} + +exports.RenderingCancelledException = RenderingCancelledException; + +function isDataScheme(url) { + const ii = url.length; + let i = 0; + + while (i < ii && url[i].trim() === "") { + i++; + } + + return url.substring(i, i + 5).toLowerCase() === "data:"; +} + +function isPdfFile(filename) { + return typeof filename === "string" && /\.pdf$/i.test(filename); +} + +function getFilenameFromUrl(url) { + const anchor = url.indexOf("#"); + const query = url.indexOf("?"); + const end = Math.min(anchor > 0 ? anchor : url.length, query > 0 ? query : url.length); + return url.substring(url.lastIndexOf("/", end) + 1, end); +} + +function getPdfFilenameFromUrl(url, defaultFilename = "document.pdf") { + if (typeof url !== "string") { + return defaultFilename; + } + + if (isDataScheme(url)) { + (0, _util.warn)('getPdfFilenameFromUrl: ignore "data:"-URL for performance reasons.'); + return defaultFilename; + } + + const reURI = /^(?:(?:[^:]+:)?\/\/[^/]+)?([^?#]*)(\?[^#]*)?(#.*)?$/; + const reFilename = /[^/?#=]+\.pdf\b(?!.*\.pdf\b)/i; + const splitURI = reURI.exec(url); + let suggestedFilename = reFilename.exec(splitURI[1]) || reFilename.exec(splitURI[2]) || reFilename.exec(splitURI[3]); + + if (suggestedFilename) { + suggestedFilename = suggestedFilename[0]; + + if (suggestedFilename.includes("%")) { + try { + suggestedFilename = reFilename.exec(decodeURIComponent(suggestedFilename))[0]; + } catch (ex) {} + } + } + + return suggestedFilename || defaultFilename; +} + +class StatTimer { + constructor() { + this.started = Object.create(null); + this.times = []; + } + + time(name) { + if (name in this.started) { + (0, _util.warn)(`Timer is already running for ${name}`); + } + + this.started[name] = Date.now(); + } + + timeEnd(name) { + if (!(name in this.started)) { + (0, _util.warn)(`Timer has not been started for ${name}`); + } + + this.times.push({ + name, + start: this.started[name], + end: Date.now() + }); + delete this.started[name]; + } + + toString() { + const outBuf = []; + let longest = 0; + + for (const time of this.times) { + const name = time.name; + + if (name.length > longest) { + longest = name.length; + } + } + + for (const time of this.times) { + const duration = time.end - time.start; + outBuf.push(`${time.name.padEnd(longest)} ${duration}ms\n`); + } + + return outBuf.join(""); + } + +} + +exports.StatTimer = StatTimer; + +function isValidFetchUrl(url, baseUrl) { + try { + const { + protocol + } = baseUrl ? new URL(url, baseUrl) : new URL(url); + return protocol === "http:" || protocol === "https:"; + } catch (ex) { + return false; + } +} + +function loadScript(src, removeScriptElement = false) { + return new Promise((resolve, reject) => { + const script = document.createElement("script"); + script.src = src; + + script.onload = function (evt) { + if (removeScriptElement) { + script.remove(); + } + + resolve(evt); + }; + + script.onerror = function () { + reject(new Error(`Cannot load script at: ${script.src}`)); + }; + + (document.head || document.documentElement).appendChild(script); + }); +} + +function deprecated(details) { + console.log("Deprecated API usage: " + details); +} + +let pdfDateStringRegex; + +class PDFDateString { + static toDateObject(input) { + if (!input || typeof input !== "string") { + return null; + } + + if (!pdfDateStringRegex) { + pdfDateStringRegex = new RegExp("^D:" + "(\\d{4})" + "(\\d{2})?" + "(\\d{2})?" + "(\\d{2})?" + "(\\d{2})?" + "(\\d{2})?" + "([Z|+|-])?" + "(\\d{2})?" + "'?" + "(\\d{2})?" + "'?"); + } + + const matches = pdfDateStringRegex.exec(input); + + if (!matches) { + return null; + } + + const year = parseInt(matches[1], 10); + let month = parseInt(matches[2], 10); + month = month >= 1 && month <= 12 ? month - 1 : 0; + let day = parseInt(matches[3], 10); + day = day >= 1 && day <= 31 ? day : 1; + let hour = parseInt(matches[4], 10); + hour = hour >= 0 && hour <= 23 ? hour : 0; + let minute = parseInt(matches[5], 10); + minute = minute >= 0 && minute <= 59 ? minute : 0; + let second = parseInt(matches[6], 10); + second = second >= 0 && second <= 59 ? second : 0; + const universalTimeRelation = matches[7] || "Z"; + let offsetHour = parseInt(matches[8], 10); + offsetHour = offsetHour >= 0 && offsetHour <= 23 ? offsetHour : 0; + let offsetMinute = parseInt(matches[9], 10) || 0; + offsetMinute = offsetMinute >= 0 && offsetMinute <= 59 ? offsetMinute : 0; + + if (universalTimeRelation === "-") { + hour += offsetHour; + minute += offsetMinute; + } else if (universalTimeRelation === "+") { + hour -= offsetHour; + minute -= offsetMinute; + } + + return new Date(Date.UTC(year, month, day, hour, minute, second)); + } + +} + +exports.PDFDateString = PDFDateString; + +function getXfaPageViewport(xfaPage, { + scale = 1, + rotation = 0 +}) { + const { + width, + height + } = xfaPage.attributes.style; + const viewBox = [0, 0, parseInt(width), parseInt(height)]; + return new PageViewport({ + viewBox, + scale, + rotation + }); +} + +/***/ }), +/* 6 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.BaseStandardFontDataFactory = exports.BaseSVGFactory = exports.BaseCanvasFactory = exports.BaseCMapReaderFactory = void 0; + +var _util = __w_pdfjs_require__(1); + +class BaseCanvasFactory { + constructor() { + if (this.constructor === BaseCanvasFactory) { + (0, _util.unreachable)("Cannot initialize BaseCanvasFactory."); + } + } + + create(width, height) { + if (width <= 0 || height <= 0) { + throw new Error("Invalid canvas size"); + } + + const canvas = this._createCanvas(width, height); + + return { + canvas, + context: canvas.getContext("2d") + }; + } + + reset(canvasAndContext, width, height) { + if (!canvasAndContext.canvas) { + throw new Error("Canvas is not specified"); + } + + if (width <= 0 || height <= 0) { + throw new Error("Invalid canvas size"); + } + + canvasAndContext.canvas.width = width; + canvasAndContext.canvas.height = height; + } + + destroy(canvasAndContext) { + if (!canvasAndContext.canvas) { + throw new Error("Canvas is not specified"); + } + + canvasAndContext.canvas.width = 0; + canvasAndContext.canvas.height = 0; + canvasAndContext.canvas = null; + canvasAndContext.context = null; + } + + _createCanvas(width, height) { + (0, _util.unreachable)("Abstract method `_createCanvas` called."); + } + +} + +exports.BaseCanvasFactory = BaseCanvasFactory; + +class BaseCMapReaderFactory { + constructor({ + baseUrl = null, + isCompressed = false + }) { + if (this.constructor === BaseCMapReaderFactory) { + (0, _util.unreachable)("Cannot initialize BaseCMapReaderFactory."); + } + + this.baseUrl = baseUrl; + this.isCompressed = isCompressed; + } + + async fetch({ + name + }) { + if (!this.baseUrl) { + throw new Error('The CMap "baseUrl" parameter must be specified, ensure that ' + 'the "cMapUrl" and "cMapPacked" API parameters are provided.'); + } + + if (!name) { + throw new Error("CMap name must be specified."); + } + + const url = this.baseUrl + name + (this.isCompressed ? ".bcmap" : ""); + const compressionType = this.isCompressed ? _util.CMapCompressionType.BINARY : _util.CMapCompressionType.NONE; + return this._fetchData(url, compressionType).catch(reason => { + throw new Error(`Unable to load ${this.isCompressed ? "binary " : ""}CMap at: ${url}`); + }); + } + + _fetchData(url, compressionType) { + (0, _util.unreachable)("Abstract method `_fetchData` called."); + } + +} + +exports.BaseCMapReaderFactory = BaseCMapReaderFactory; + +class BaseStandardFontDataFactory { + constructor({ + baseUrl = null + }) { + if (this.constructor === BaseStandardFontDataFactory) { + (0, _util.unreachable)("Cannot initialize BaseStandardFontDataFactory."); + } + + this.baseUrl = baseUrl; + } + + async fetch({ + filename + }) { + if (!this.baseUrl) { + throw new Error('The standard font "baseUrl" parameter must be specified, ensure that ' + 'the "standardFontDataUrl" API parameter is provided.'); + } + + if (!filename) { + throw new Error("Font filename must be specified."); + } + + const url = `${this.baseUrl}${filename}`; + return this._fetchData(url).catch(reason => { + throw new Error(`Unable to load font data at: ${url}`); + }); + } + + _fetchData(url) { + (0, _util.unreachable)("Abstract method `_fetchData` called."); + } + +} + +exports.BaseStandardFontDataFactory = BaseStandardFontDataFactory; + +class BaseSVGFactory { + constructor() { + if (this.constructor === BaseSVGFactory) { + (0, _util.unreachable)("Cannot initialize BaseSVGFactory."); + } + } + + create(width, height) { + if (width <= 0 || height <= 0) { + throw new Error("Invalid SVG dimensions"); + } + + const svg = this._createSVG("svg:svg"); + + svg.setAttribute("version", "1.1"); + svg.setAttribute("width", `${width}px`); + svg.setAttribute("height", `${height}px`); + svg.setAttribute("preserveAspectRatio", "none"); + svg.setAttribute("viewBox", `0 0 ${width} ${height}`); + return svg; + } + + createElement(type) { + if (typeof type !== "string") { + throw new Error("Invalid SVG element type"); + } + + return this._createSVG(type); + } + + _createSVG(type) { + (0, _util.unreachable)("Abstract method `_createSVG` called."); + } + +} + +exports.BaseSVGFactory = BaseSVGFactory; + +/***/ }), +/* 7 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.FontLoader = exports.FontFaceObject = void 0; + +var _util = __w_pdfjs_require__(1); + +class BaseFontLoader { + constructor({ + docId, + onUnsupportedFeature, + ownerDocument = globalThis.document, + styleElement = null + }) { + if (this.constructor === BaseFontLoader) { + (0, _util.unreachable)("Cannot initialize BaseFontLoader."); + } + + this.docId = docId; + this._onUnsupportedFeature = onUnsupportedFeature; + this._document = ownerDocument; + this.nativeFontFaces = []; + this.styleElement = null; + } + + addNativeFontFace(nativeFontFace) { + this.nativeFontFaces.push(nativeFontFace); + + this._document.fonts.add(nativeFontFace); + } + + insertRule(rule) { + let styleElement = this.styleElement; + + if (!styleElement) { + styleElement = this.styleElement = this._document.createElement("style"); + styleElement.id = `PDFJS_FONT_STYLE_TAG_${this.docId}`; + + this._document.documentElement.getElementsByTagName("head")[0].appendChild(styleElement); + } + + const styleSheet = styleElement.sheet; + styleSheet.insertRule(rule, styleSheet.cssRules.length); + } + + clear() { + for (const nativeFontFace of this.nativeFontFaces) { + this._document.fonts.delete(nativeFontFace); + } + + this.nativeFontFaces.length = 0; + + if (this.styleElement) { + this.styleElement.remove(); + this.styleElement = null; + } + } + + async bind(font) { + if (font.attached || font.missingFile) { + return; + } + + font.attached = true; + + if (this.isFontLoadingAPISupported) { + const nativeFontFace = font.createNativeFontFace(); + + if (nativeFontFace) { + this.addNativeFontFace(nativeFontFace); + + try { + await nativeFontFace.loaded; + } catch (ex) { + this._onUnsupportedFeature({ + featureId: _util.UNSUPPORTED_FEATURES.errorFontLoadNative + }); + + (0, _util.warn)(`Failed to load font '${nativeFontFace.family}': '${ex}'.`); + font.disableFontFace = true; + throw ex; + } + } + + return; + } + + const rule = font.createFontFaceRule(); + + if (rule) { + this.insertRule(rule); + + if (this.isSyncFontLoadingSupported) { + return; + } + + await new Promise(resolve => { + const request = this._queueLoadingCallback(resolve); + + this._prepareFontLoadEvent([rule], [font], request); + }); + } + } + + _queueLoadingCallback(callback) { + (0, _util.unreachable)("Abstract method `_queueLoadingCallback`."); + } + + get isFontLoadingAPISupported() { + const hasFonts = !!this._document?.fonts; + return (0, _util.shadow)(this, "isFontLoadingAPISupported", hasFonts); + } + + get isSyncFontLoadingSupported() { + (0, _util.unreachable)("Abstract method `isSyncFontLoadingSupported`."); + } + + get _loadTestFont() { + (0, _util.unreachable)("Abstract method `_loadTestFont`."); + } + + _prepareFontLoadEvent(rules, fontsToLoad, request) { + (0, _util.unreachable)("Abstract method `_prepareFontLoadEvent`."); + } + +} + +let FontLoader; +exports.FontLoader = FontLoader; +{ + exports.FontLoader = FontLoader = class GenericFontLoader extends BaseFontLoader { + constructor(params) { + super(params); + this.loadingContext = { + requests: [], + nextRequestId: 0 + }; + this.loadTestFontId = 0; + } + + get isSyncFontLoadingSupported() { + let supported = false; + + if (typeof navigator === "undefined") { + supported = true; + } else { + const m = /Mozilla\/5.0.*?rv:(\d+).*? Gecko/.exec(navigator.userAgent); + + if (m?.[1] >= 14) { + supported = true; + } + } + + return (0, _util.shadow)(this, "isSyncFontLoadingSupported", supported); + } + + _queueLoadingCallback(callback) { + function completeRequest() { + (0, _util.assert)(!request.done, "completeRequest() cannot be called twice."); + request.done = true; + + while (context.requests.length > 0 && context.requests[0].done) { + const otherRequest = context.requests.shift(); + setTimeout(otherRequest.callback, 0); + } + } + + const context = this.loadingContext; + const request = { + id: `pdfjs-font-loading-${context.nextRequestId++}`, + done: false, + complete: completeRequest, + callback + }; + context.requests.push(request); + return request; + } + + get _loadTestFont() { + const getLoadTestFont = function () { + return atob("T1RUTwALAIAAAwAwQ0ZGIDHtZg4AAAOYAAAAgUZGVE1lkzZwAAAEHAAAABxHREVGABQA" + "FQAABDgAAAAeT1MvMlYNYwkAAAEgAAAAYGNtYXABDQLUAAACNAAAAUJoZWFk/xVFDQAA" + "ALwAAAA2aGhlYQdkA+oAAAD0AAAAJGhtdHgD6AAAAAAEWAAAAAZtYXhwAAJQAAAAARgA" + "AAAGbmFtZVjmdH4AAAGAAAAAsXBvc3T/hgAzAAADeAAAACAAAQAAAAEAALZRFsRfDzz1" + "AAsD6AAAAADOBOTLAAAAAM4KHDwAAAAAA+gDIQAAAAgAAgAAAAAAAAABAAADIQAAAFoD" + "6AAAAAAD6AABAAAAAAAAAAAAAAAAAAAAAQAAUAAAAgAAAAQD6AH0AAUAAAKKArwAAACM" + "AooCvAAAAeAAMQECAAACAAYJAAAAAAAAAAAAAQAAAAAAAAAAAAAAAFBmRWQAwAAuAC4D" + "IP84AFoDIQAAAAAAAQAAAAAAAAAAACAAIAABAAAADgCuAAEAAAAAAAAAAQAAAAEAAAAA" + "AAEAAQAAAAEAAAAAAAIAAQAAAAEAAAAAAAMAAQAAAAEAAAAAAAQAAQAAAAEAAAAAAAUA" + "AQAAAAEAAAAAAAYAAQAAAAMAAQQJAAAAAgABAAMAAQQJAAEAAgABAAMAAQQJAAIAAgAB" + "AAMAAQQJAAMAAgABAAMAAQQJAAQAAgABAAMAAQQJAAUAAgABAAMAAQQJAAYAAgABWABY" + "AAAAAAAAAwAAAAMAAAAcAAEAAAAAADwAAwABAAAAHAAEACAAAAAEAAQAAQAAAC7//wAA" + "AC7////TAAEAAAAAAAABBgAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + "AAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAD/gwAyAAAAAQAAAAAAAAAAAAAAAAAA" + "AAABAAQEAAEBAQJYAAEBASH4DwD4GwHEAvgcA/gXBIwMAYuL+nz5tQXkD5j3CBLnEQAC" + "AQEBIVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYAAABAQAADwACAQEEE/t3" + "Dov6fAH6fAT+fPp8+nwHDosMCvm1Cvm1DAz6fBQAAAAAAAABAAAAAMmJbzEAAAAAzgTj" + "FQAAAADOBOQpAAEAAAAAAAAADAAUAAQAAAABAAAAAgABAAAAAAAAAAAD6AAAAAAAAA=="); + }; + + return (0, _util.shadow)(this, "_loadTestFont", getLoadTestFont()); + } + + _prepareFontLoadEvent(rules, fonts, request) { + function int32(data, offset) { + return data.charCodeAt(offset) << 24 | data.charCodeAt(offset + 1) << 16 | data.charCodeAt(offset + 2) << 8 | data.charCodeAt(offset + 3) & 0xff; + } + + function spliceString(s, offset, remove, insert) { + const chunk1 = s.substring(0, offset); + const chunk2 = s.substring(offset + remove); + return chunk1 + insert + chunk2; + } + + let i, ii; + + const canvas = this._document.createElement("canvas"); + + canvas.width = 1; + canvas.height = 1; + const ctx = canvas.getContext("2d"); + let called = 0; + + function isFontReady(name, callback) { + called++; + + if (called > 30) { + (0, _util.warn)("Load test font never loaded."); + callback(); + return; + } + + ctx.font = "30px " + name; + ctx.fillText(".", 0, 20); + const imageData = ctx.getImageData(0, 0, 1, 1); + + if (imageData.data[3] > 0) { + callback(); + return; + } + + setTimeout(isFontReady.bind(null, name, callback)); + } + + const loadTestFontId = `lt${Date.now()}${this.loadTestFontId++}`; + let data = this._loadTestFont; + const COMMENT_OFFSET = 976; + data = spliceString(data, COMMENT_OFFSET, loadTestFontId.length, loadTestFontId); + const CFF_CHECKSUM_OFFSET = 16; + const XXXX_VALUE = 0x58585858; + let checksum = int32(data, CFF_CHECKSUM_OFFSET); + + for (i = 0, ii = loadTestFontId.length - 3; i < ii; i += 4) { + checksum = checksum - XXXX_VALUE + int32(loadTestFontId, i) | 0; + } + + if (i < loadTestFontId.length) { + checksum = checksum - XXXX_VALUE + int32(loadTestFontId + "XXX", i) | 0; + } + + data = spliceString(data, CFF_CHECKSUM_OFFSET, 4, (0, _util.string32)(checksum)); + const url = `url(data:font/opentype;base64,${btoa(data)});`; + const rule = `@font-face {font-family:"${loadTestFontId}";src:${url}}`; + this.insertRule(rule); + const names = []; + + for (const font of fonts) { + names.push(font.loadedName); + } + + names.push(loadTestFontId); + + const div = this._document.createElement("div"); + + div.style.visibility = "hidden"; + div.style.width = div.style.height = "10px"; + div.style.position = "absolute"; + div.style.top = div.style.left = "0px"; + + for (const name of names) { + const span = this._document.createElement("span"); + + span.textContent = "Hi"; + span.style.fontFamily = name; + div.appendChild(span); + } + + this._document.body.appendChild(div); + + isFontReady(loadTestFontId, () => { + div.remove(); + request.complete(); + }); + } + + }; +} + +class FontFaceObject { + constructor(translatedData, { + isEvalSupported = true, + disableFontFace = false, + ignoreErrors = false, + onUnsupportedFeature, + fontRegistry = null + }) { + this.compiledGlyphs = Object.create(null); + + for (const i in translatedData) { + this[i] = translatedData[i]; + } + + this.isEvalSupported = isEvalSupported !== false; + this.disableFontFace = disableFontFace === true; + this.ignoreErrors = ignoreErrors === true; + this._onUnsupportedFeature = onUnsupportedFeature; + this.fontRegistry = fontRegistry; + } + + createNativeFontFace() { + if (!this.data || this.disableFontFace) { + return null; + } + + let nativeFontFace; + + if (!this.cssFontInfo) { + nativeFontFace = new FontFace(this.loadedName, this.data, {}); + } else { + const css = { + weight: this.cssFontInfo.fontWeight + }; + + if (this.cssFontInfo.italicAngle) { + css.style = `oblique ${this.cssFontInfo.italicAngle}deg`; + } + + nativeFontFace = new FontFace(this.cssFontInfo.fontFamily, this.data, css); + } + + if (this.fontRegistry) { + this.fontRegistry.registerFont(this); + } + + return nativeFontFace; + } + + createFontFaceRule() { + if (!this.data || this.disableFontFace) { + return null; + } + + const data = (0, _util.bytesToString)(this.data); + const url = `url(data:${this.mimetype};base64,${btoa(data)});`; + let rule; + + if (!this.cssFontInfo) { + rule = `@font-face {font-family:"${this.loadedName}";src:${url}}`; + } else { + let css = `font-weight: ${this.cssFontInfo.fontWeight};`; + + if (this.cssFontInfo.italicAngle) { + css += `font-style: oblique ${this.cssFontInfo.italicAngle}deg;`; + } + + rule = `@font-face {font-family:"${this.cssFontInfo.fontFamily}";${css}src:${url}}`; + } + + if (this.fontRegistry) { + this.fontRegistry.registerFont(this, url); + } + + return rule; + } + + getPathGenerator(objs, character) { + if (this.compiledGlyphs[character] !== undefined) { + return this.compiledGlyphs[character]; + } + + let cmds; + + try { + cmds = objs.get(this.loadedName + "_path_" + character); + } catch (ex) { + if (!this.ignoreErrors) { + throw ex; + } + + this._onUnsupportedFeature({ + featureId: _util.UNSUPPORTED_FEATURES.errorFontGetPath + }); + + (0, _util.warn)(`getPathGenerator - ignoring character: "${ex}".`); + return this.compiledGlyphs[character] = function (c, size) {}; + } + + if (this.isEvalSupported && _util.FeatureTest.isEvalSupported) { + const jsBuf = []; + + for (const current of cmds) { + const args = current.args !== undefined ? current.args.join(",") : ""; + jsBuf.push("c.", current.cmd, "(", args, ");\n"); + } + + return this.compiledGlyphs[character] = new Function("c", "size", jsBuf.join("")); + } + + return this.compiledGlyphs[character] = function (c, size) { + for (const current of cmds) { + if (current.cmd === "scale") { + current.args = [size, -size]; + } + + c[current.cmd].apply(c, current.args); + } + }; + } + +} + +exports.FontFaceObject = FontFaceObject; + +/***/ }), +/* 8 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.AnnotationStorage = void 0; + +var _murmurhash = __w_pdfjs_require__(9); + +var _util = __w_pdfjs_require__(1); + +class AnnotationStorage { + constructor() { + this._storage = new Map(); + this._modified = false; + this.onSetModified = null; + this.onResetModified = null; + } + + getValue(key, defaultValue) { + const value = this._storage.get(key); + + if (value === undefined) { + return defaultValue; + } + + return Object.assign(defaultValue, value); + } + + getRawValue(key) { + return this._storage.get(key); + } + + setValue(key, value) { + const obj = this._storage.get(key); + + let modified = false; + + if (obj !== undefined) { + for (const [entry, val] of Object.entries(value)) { + if (obj[entry] !== val) { + modified = true; + obj[entry] = val; + } + } + } else { + modified = true; + + this._storage.set(key, value); + } + + if (modified) { + this._setModified(); + } + } + + getAll() { + return this._storage.size > 0 ? (0, _util.objectFromMap)(this._storage) : null; + } + + get size() { + return this._storage.size; + } + + _setModified() { + if (!this._modified) { + this._modified = true; + + if (typeof this.onSetModified === "function") { + this.onSetModified(); + } + } + } + + resetModified() { + if (this._modified) { + this._modified = false; + + if (typeof this.onResetModified === "function") { + this.onResetModified(); + } + } + } + + get serializable() { + return this._storage.size > 0 ? this._storage : null; + } + + get hash() { + const hash = new _murmurhash.MurmurHash3_64(); + + for (const [key, value] of this._storage) { + hash.update(`${key}:${JSON.stringify(value)}`); + } + + return hash.hexdigest(); + } + +} + +exports.AnnotationStorage = AnnotationStorage; + +/***/ }), +/* 9 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.MurmurHash3_64 = void 0; + +var _util = __w_pdfjs_require__(1); + +const SEED = 0xc3d2e1f0; +const MASK_HIGH = 0xffff0000; +const MASK_LOW = 0xffff; + +class MurmurHash3_64 { + constructor(seed) { + this.h1 = seed ? seed & 0xffffffff : SEED; + this.h2 = seed ? seed & 0xffffffff : SEED; + } + + update(input) { + let data, length; + + if (typeof input === "string") { + data = new Uint8Array(input.length * 2); + length = 0; + + for (let i = 0, ii = input.length; i < ii; i++) { + const code = input.charCodeAt(i); + + if (code <= 0xff) { + data[length++] = code; + } else { + data[length++] = code >>> 8; + data[length++] = code & 0xff; + } + } + } else if ((0, _util.isArrayBuffer)(input)) { + data = input.slice(); + length = data.byteLength; + } else { + throw new Error("Wrong data format in MurmurHash3_64_update. " + "Input must be a string or array."); + } + + const blockCounts = length >> 2; + const tailLength = length - blockCounts * 4; + const dataUint32 = new Uint32Array(data.buffer, 0, blockCounts); + let k1 = 0, + k2 = 0; + let h1 = this.h1, + h2 = this.h2; + const C1 = 0xcc9e2d51, + C2 = 0x1b873593; + const C1_LOW = C1 & MASK_LOW, + C2_LOW = C2 & MASK_LOW; + + for (let i = 0; i < blockCounts; i++) { + if (i & 1) { + k1 = dataUint32[i]; + k1 = k1 * C1 & MASK_HIGH | k1 * C1_LOW & MASK_LOW; + k1 = k1 << 15 | k1 >>> 17; + k1 = k1 * C2 & MASK_HIGH | k1 * C2_LOW & MASK_LOW; + h1 ^= k1; + h1 = h1 << 13 | h1 >>> 19; + h1 = h1 * 5 + 0xe6546b64; + } else { + k2 = dataUint32[i]; + k2 = k2 * C1 & MASK_HIGH | k2 * C1_LOW & MASK_LOW; + k2 = k2 << 15 | k2 >>> 17; + k2 = k2 * C2 & MASK_HIGH | k2 * C2_LOW & MASK_LOW; + h2 ^= k2; + h2 = h2 << 13 | h2 >>> 19; + h2 = h2 * 5 + 0xe6546b64; + } + } + + k1 = 0; + + switch (tailLength) { + case 3: + k1 ^= data[blockCounts * 4 + 2] << 16; + + case 2: + k1 ^= data[blockCounts * 4 + 1] << 8; + + case 1: + k1 ^= data[blockCounts * 4]; + k1 = k1 * C1 & MASK_HIGH | k1 * C1_LOW & MASK_LOW; + k1 = k1 << 15 | k1 >>> 17; + k1 = k1 * C2 & MASK_HIGH | k1 * C2_LOW & MASK_LOW; + + if (blockCounts & 1) { + h1 ^= k1; + } else { + h2 ^= k1; + } + + } + + this.h1 = h1; + this.h2 = h2; + } + + hexdigest() { + let h1 = this.h1, + h2 = this.h2; + h1 ^= h2 >>> 1; + h1 = h1 * 0xed558ccd & MASK_HIGH | h1 * 0x8ccd & MASK_LOW; + h2 = h2 * 0xff51afd7 & MASK_HIGH | ((h2 << 16 | h1 >>> 16) * 0xafd7ed55 & MASK_HIGH) >>> 16; + h1 ^= h2 >>> 1; + h1 = h1 * 0x1a85ec53 & MASK_HIGH | h1 * 0xec53 & MASK_LOW; + h2 = h2 * 0xc4ceb9fe & MASK_HIGH | ((h2 << 16 | h1 >>> 16) * 0xb9fe1a85 & MASK_HIGH) >>> 16; + h1 ^= h2 >>> 1; + const hex1 = (h1 >>> 0).toString(16), + hex2 = (h2 >>> 0).toString(16); + return hex1.padStart(8, "0") + hex2.padStart(8, "0"); + } + +} + +exports.MurmurHash3_64 = MurmurHash3_64; + +/***/ }), +/* 10 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.CanvasGraphics = void 0; + +var _util = __w_pdfjs_require__(1); + +var _pattern_helper = __w_pdfjs_require__(11); + +var _image_utils = __w_pdfjs_require__(12); + +var _is_node = __w_pdfjs_require__(3); + +var _display_utils = __w_pdfjs_require__(5); + +const MIN_FONT_SIZE = 16; +const MAX_FONT_SIZE = 100; +const MAX_GROUP_SIZE = 4096; +const EXECUTION_TIME = 15; +const EXECUTION_STEPS = 10; +const COMPILE_TYPE3_GLYPHS = true; +const MAX_SIZE_TO_COMPILE = 1000; +const FULL_CHUNK_HEIGHT = 16; +const LINEWIDTH_SCALE_FACTOR = 1.000001; + +function mirrorContextOperations(ctx, destCtx) { + if (ctx._removeMirroring) { + throw new Error("Context is already forwarding operations."); + } + + ctx.__originalSave = ctx.save; + ctx.__originalRestore = ctx.restore; + ctx.__originalRotate = ctx.rotate; + ctx.__originalScale = ctx.scale; + ctx.__originalTranslate = ctx.translate; + ctx.__originalTransform = ctx.transform; + ctx.__originalSetTransform = ctx.setTransform; + ctx.__originalResetTransform = ctx.resetTransform; + ctx.__originalClip = ctx.clip; + ctx.__originalMoveTo = ctx.moveTo; + ctx.__originalLineTo = ctx.lineTo; + ctx.__originalBezierCurveTo = ctx.bezierCurveTo; + ctx.__originalRect = ctx.rect; + ctx.__originalClosePath = ctx.closePath; + ctx.__originalBeginPath = ctx.beginPath; + + ctx._removeMirroring = () => { + ctx.save = ctx.__originalSave; + ctx.restore = ctx.__originalRestore; + ctx.rotate = ctx.__originalRotate; + ctx.scale = ctx.__originalScale; + ctx.translate = ctx.__originalTranslate; + ctx.transform = ctx.__originalTransform; + ctx.setTransform = ctx.__originalSetTransform; + ctx.resetTransform = ctx.__originalResetTransform; + ctx.clip = ctx.__originalClip; + ctx.moveTo = ctx.__originalMoveTo; + ctx.lineTo = ctx.__originalLineTo; + ctx.bezierCurveTo = ctx.__originalBezierCurveTo; + ctx.rect = ctx.__originalRect; + ctx.closePath = ctx.__originalClosePath; + ctx.beginPath = ctx.__originalBeginPath; + delete ctx._removeMirroring; + }; + + ctx.save = function ctxSave() { + destCtx.save(); + + this.__originalSave(); + }; + + ctx.restore = function ctxRestore() { + destCtx.restore(); + + this.__originalRestore(); + }; + + ctx.translate = function ctxTranslate(x, y) { + destCtx.translate(x, y); + + this.__originalTranslate(x, y); + }; + + ctx.scale = function ctxScale(x, y) { + destCtx.scale(x, y); + + this.__originalScale(x, y); + }; + + ctx.transform = function ctxTransform(a, b, c, d, e, f) { + destCtx.transform(a, b, c, d, e, f); + + this.__originalTransform(a, b, c, d, e, f); + }; + + ctx.setTransform = function ctxSetTransform(a, b, c, d, e, f) { + destCtx.setTransform(a, b, c, d, e, f); + + this.__originalSetTransform(a, b, c, d, e, f); + }; + + ctx.resetTransform = function ctxResetTransform() { + destCtx.resetTransform(); + + this.__originalResetTransform(); + }; + + ctx.rotate = function ctxRotate(angle) { + destCtx.rotate(angle); + + this.__originalRotate(angle); + }; + + ctx.clip = function ctxRotate(rule) { + destCtx.clip(rule); + + this.__originalClip(rule); + }; + + ctx.moveTo = function (x, y) { + destCtx.moveTo(x, y); + + this.__originalMoveTo(x, y); + }; + + ctx.lineTo = function (x, y) { + destCtx.lineTo(x, y); + + this.__originalLineTo(x, y); + }; + + ctx.bezierCurveTo = function (cp1x, cp1y, cp2x, cp2y, x, y) { + destCtx.bezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y); + + this.__originalBezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y); + }; + + ctx.rect = function (x, y, width, height) { + destCtx.rect(x, y, width, height); + + this.__originalRect(x, y, width, height); + }; + + ctx.closePath = function () { + destCtx.closePath(); + + this.__originalClosePath(); + }; + + ctx.beginPath = function () { + destCtx.beginPath(); + + this.__originalBeginPath(); + }; +} + +function addContextCurrentTransform(ctx) { + if (ctx._transformStack) { + ctx._transformStack = []; + } + + if (ctx.mozCurrentTransform) { + return; + } + + ctx._originalSave = ctx.save; + ctx._originalRestore = ctx.restore; + ctx._originalRotate = ctx.rotate; + ctx._originalScale = ctx.scale; + ctx._originalTranslate = ctx.translate; + ctx._originalTransform = ctx.transform; + ctx._originalSetTransform = ctx.setTransform; + ctx._originalResetTransform = ctx.resetTransform; + ctx._transformMatrix = ctx._transformMatrix || [1, 0, 0, 1, 0, 0]; + ctx._transformStack = []; + + try { + const desc = Object.getOwnPropertyDescriptor(Object.getPrototypeOf(ctx), "lineWidth"); + ctx._setLineWidth = desc.set; + ctx._getLineWidth = desc.get; + Object.defineProperty(ctx, "lineWidth", { + set: function setLineWidth(width) { + this._setLineWidth(width * LINEWIDTH_SCALE_FACTOR); + }, + get: function getLineWidth() { + return this._getLineWidth(); + } + }); + } catch (_) {} + + Object.defineProperty(ctx, "mozCurrentTransform", { + get: function getCurrentTransform() { + return this._transformMatrix; + } + }); + Object.defineProperty(ctx, "mozCurrentTransformInverse", { + get: function getCurrentTransformInverse() { + const [a, b, c, d, e, f] = this._transformMatrix; + const ad_bc = a * d - b * c; + const bc_ad = b * c - a * d; + return [d / ad_bc, b / bc_ad, c / bc_ad, a / ad_bc, (d * e - c * f) / bc_ad, (b * e - a * f) / ad_bc]; + } + }); + + ctx.save = function ctxSave() { + const old = this._transformMatrix; + + this._transformStack.push(old); + + this._transformMatrix = old.slice(0, 6); + + this._originalSave(); + }; + + ctx.restore = function ctxRestore() { + if (this._transformStack.length === 0) { + (0, _util.warn)("Tried to restore a ctx when the stack was already empty."); + } + + const prev = this._transformStack.pop(); + + if (prev) { + this._transformMatrix = prev; + + this._originalRestore(); + } + }; + + ctx.translate = function ctxTranslate(x, y) { + const m = this._transformMatrix; + m[4] = m[0] * x + m[2] * y + m[4]; + m[5] = m[1] * x + m[3] * y + m[5]; + + this._originalTranslate(x, y); + }; + + ctx.scale = function ctxScale(x, y) { + const m = this._transformMatrix; + m[0] *= x; + m[1] *= x; + m[2] *= y; + m[3] *= y; + + this._originalScale(x, y); + }; + + ctx.transform = function ctxTransform(a, b, c, d, e, f) { + const m = this._transformMatrix; + this._transformMatrix = [m[0] * a + m[2] * b, m[1] * a + m[3] * b, m[0] * c + m[2] * d, m[1] * c + m[3] * d, m[0] * e + m[2] * f + m[4], m[1] * e + m[3] * f + m[5]]; + + ctx._originalTransform(a, b, c, d, e, f); + }; + + ctx.setTransform = function ctxSetTransform(a, b, c, d, e, f) { + this._transformMatrix = [a, b, c, d, e, f]; + + ctx._originalSetTransform(a, b, c, d, e, f); + }; + + ctx.resetTransform = function ctxResetTransform() { + this._transformMatrix = [1, 0, 0, 1, 0, 0]; + + ctx._originalResetTransform(); + }; + + ctx.rotate = function ctxRotate(angle) { + const cosValue = Math.cos(angle); + const sinValue = Math.sin(angle); + const m = this._transformMatrix; + this._transformMatrix = [m[0] * cosValue + m[2] * sinValue, m[1] * cosValue + m[3] * sinValue, m[0] * -sinValue + m[2] * cosValue, m[1] * -sinValue + m[3] * cosValue, m[4], m[5]]; + + this._originalRotate(angle); + }; +} + +class CachedCanvases { + constructor(canvasFactory) { + this.canvasFactory = canvasFactory; + this.cache = Object.create(null); + } + + getCanvas(id, width, height, trackTransform) { + let canvasEntry; + + if (this.cache[id] !== undefined) { + canvasEntry = this.cache[id]; + this.canvasFactory.reset(canvasEntry, width, height); + canvasEntry.context.setTransform(1, 0, 0, 1, 0, 0); + } else { + canvasEntry = this.canvasFactory.create(width, height); + this.cache[id] = canvasEntry; + } + + if (trackTransform) { + addContextCurrentTransform(canvasEntry.context); + } + + return canvasEntry; + } + + delete(id) { + delete this.cache[id]; + } + + clear() { + for (const id in this.cache) { + const canvasEntry = this.cache[id]; + this.canvasFactory.destroy(canvasEntry); + delete this.cache[id]; + } + } + +} + +function drawImageAtIntegerCoords(ctx, srcImg, srcX, srcY, srcW, srcH, destX, destY, destW, destH) { + const [a, b, c, d, tx, ty] = ctx.mozCurrentTransform; + + if (b === 0 && c === 0) { + const tlX = destX * a + tx; + const rTlX = Math.round(tlX); + const tlY = destY * d + ty; + const rTlY = Math.round(tlY); + const brX = (destX + destW) * a + tx; + const rWidth = Math.abs(Math.round(brX) - rTlX) || 1; + const brY = (destY + destH) * d + ty; + const rHeight = Math.abs(Math.round(brY) - rTlY) || 1; + ctx.setTransform(Math.sign(a), 0, 0, Math.sign(d), rTlX, rTlY); + ctx.drawImage(srcImg, srcX, srcY, srcW, srcH, 0, 0, rWidth, rHeight); + ctx.setTransform(a, b, c, d, tx, ty); + return [rWidth, rHeight]; + } + + if (a === 0 && d === 0) { + const tlX = destY * c + tx; + const rTlX = Math.round(tlX); + const tlY = destX * b + ty; + const rTlY = Math.round(tlY); + const brX = (destY + destH) * c + tx; + const rWidth = Math.abs(Math.round(brX) - rTlX) || 1; + const brY = (destX + destW) * b + ty; + const rHeight = Math.abs(Math.round(brY) - rTlY) || 1; + ctx.setTransform(0, Math.sign(b), Math.sign(c), 0, rTlX, rTlY); + ctx.drawImage(srcImg, srcX, srcY, srcW, srcH, 0, 0, rHeight, rWidth); + ctx.setTransform(a, b, c, d, tx, ty); + return [rHeight, rWidth]; + } + + ctx.drawImage(srcImg, srcX, srcY, srcW, srcH, destX, destY, destW, destH); + const scaleX = Math.hypot(a, b); + const scaleY = Math.hypot(c, d); + return [scaleX * destW, scaleY * destH]; +} + +function compileType3Glyph(imgData) { + const { + width, + height + } = imgData; + + if (!COMPILE_TYPE3_GLYPHS || width > MAX_SIZE_TO_COMPILE || height > MAX_SIZE_TO_COMPILE) { + return null; + } + + const POINT_TO_PROCESS_LIMIT = 1000; + const POINT_TYPES = new Uint8Array([0, 2, 4, 0, 1, 0, 5, 4, 8, 10, 0, 8, 0, 2, 1, 0]); + const width1 = width + 1; + let points = new Uint8Array(width1 * (height + 1)); + let i, j, j0; + const lineSize = width + 7 & ~7; + let data = new Uint8Array(lineSize * height), + pos = 0; + + for (const elem of imgData.data) { + let mask = 128; + + while (mask > 0) { + data[pos++] = elem & mask ? 0 : 255; + mask >>= 1; + } + } + + let count = 0; + pos = 0; + + if (data[pos] !== 0) { + points[0] = 1; + ++count; + } + + for (j = 1; j < width; j++) { + if (data[pos] !== data[pos + 1]) { + points[j] = data[pos] ? 2 : 1; + ++count; + } + + pos++; + } + + if (data[pos] !== 0) { + points[j] = 2; + ++count; + } + + for (i = 1; i < height; i++) { + pos = i * lineSize; + j0 = i * width1; + + if (data[pos - lineSize] !== data[pos]) { + points[j0] = data[pos] ? 1 : 8; + ++count; + } + + let sum = (data[pos] ? 4 : 0) + (data[pos - lineSize] ? 8 : 0); + + for (j = 1; j < width; j++) { + sum = (sum >> 2) + (data[pos + 1] ? 4 : 0) + (data[pos - lineSize + 1] ? 8 : 0); + + if (POINT_TYPES[sum]) { + points[j0 + j] = POINT_TYPES[sum]; + ++count; + } + + pos++; + } + + if (data[pos - lineSize] !== data[pos]) { + points[j0 + j] = data[pos] ? 2 : 4; + ++count; + } + + if (count > POINT_TO_PROCESS_LIMIT) { + return null; + } + } + + pos = lineSize * (height - 1); + j0 = i * width1; + + if (data[pos] !== 0) { + points[j0] = 8; + ++count; + } + + for (j = 1; j < width; j++) { + if (data[pos] !== data[pos + 1]) { + points[j0 + j] = data[pos] ? 4 : 8; + ++count; + } + + pos++; + } + + if (data[pos] !== 0) { + points[j0 + j] = 4; + ++count; + } + + if (count > POINT_TO_PROCESS_LIMIT) { + return null; + } + + const steps = new Int32Array([0, width1, -1, 0, -width1, 0, 0, 0, 1]); + let path, outlines, coords; + + if (!_is_node.isNodeJS) { + path = new Path2D(); + } else { + outlines = []; + } + + for (i = 0; count && i <= height; i++) { + let p = i * width1; + const end = p + width; + + while (p < end && !points[p]) { + p++; + } + + if (p === end) { + continue; + } + + if (path) { + path.moveTo(p % width1, i); + } else { + coords = [p % width1, i]; + } + + const p0 = p; + let type = points[p]; + + do { + const step = steps[type]; + + do { + p += step; + } while (!points[p]); + + const pp = points[p]; + + if (pp !== 5 && pp !== 10) { + type = pp; + points[p] = 0; + } else { + type = pp & 0x33 * type >> 4; + points[p] &= type >> 2 | type << 2; + } + + if (path) { + path.lineTo(p % width1, p / width1 | 0); + } else { + coords.push(p % width1, p / width1 | 0); + } + + if (!points[p]) { + --count; + } + } while (p0 !== p); + + if (!path) { + outlines.push(coords); + } + + --i; + } + + data = null; + points = null; + + const drawOutline = function (c) { + c.save(); + c.scale(1 / width, -1 / height); + c.translate(0, -height); + + if (path) { + c.fill(path); + } else { + c.beginPath(); + + for (const o of outlines) { + c.moveTo(o[0], o[1]); + + for (let l = 2, ll = o.length; l < ll; l += 2) { + c.lineTo(o[l], o[l + 1]); + } + } + + c.fill(); + } + + c.beginPath(); + c.restore(); + }; + + return drawOutline; +} + +class CanvasExtraState { + constructor(width, height) { + this.alphaIsShape = false; + this.fontSize = 0; + this.fontSizeScale = 1; + this.textMatrix = _util.IDENTITY_MATRIX; + this.textMatrixScale = 1; + this.fontMatrix = _util.FONT_IDENTITY_MATRIX; + this.leading = 0; + this.x = 0; + this.y = 0; + this.lineX = 0; + this.lineY = 0; + this.charSpacing = 0; + this.wordSpacing = 0; + this.textHScale = 1; + this.textRenderingMode = _util.TextRenderingMode.FILL; + this.textRise = 0; + this.fillColor = "#000000"; + this.strokeColor = "#000000"; + this.patternFill = false; + this.fillAlpha = 1; + this.strokeAlpha = 1; + this.lineWidth = 1; + this.activeSMask = null; + this.transferMaps = null; + this.startNewPathAndClipBox([0, 0, width, height]); + } + + clone() { + const clone = Object.create(this); + clone.clipBox = this.clipBox.slice(); + return clone; + } + + setCurrentPoint(x, y) { + this.x = x; + this.y = y; + } + + updatePathMinMax(transform, x, y) { + [x, y] = _util.Util.applyTransform([x, y], transform); + this.minX = Math.min(this.minX, x); + this.minY = Math.min(this.minY, y); + this.maxX = Math.max(this.maxX, x); + this.maxY = Math.max(this.maxY, y); + } + + updateRectMinMax(transform, rect) { + const p1 = _util.Util.applyTransform(rect, transform); + + const p2 = _util.Util.applyTransform(rect.slice(2), transform); + + this.minX = Math.min(this.minX, p1[0], p2[0]); + this.minY = Math.min(this.minY, p1[1], p2[1]); + this.maxX = Math.max(this.maxX, p1[0], p2[0]); + this.maxY = Math.max(this.maxY, p1[1], p2[1]); + } + + updateScalingPathMinMax(transform, minMax) { + _util.Util.scaleMinMax(transform, minMax); + + this.minX = Math.min(this.minX, minMax[0]); + this.maxX = Math.max(this.maxX, minMax[1]); + this.minY = Math.min(this.minY, minMax[2]); + this.maxY = Math.max(this.maxY, minMax[3]); + } + + updateCurvePathMinMax(transform, x0, y0, x1, y1, x2, y2, x3, y3, minMax) { + const box = _util.Util.bezierBoundingBox(x0, y0, x1, y1, x2, y2, x3, y3); + + if (minMax) { + minMax[0] = Math.min(minMax[0], box[0], box[2]); + minMax[1] = Math.max(minMax[1], box[0], box[2]); + minMax[2] = Math.min(minMax[2], box[1], box[3]); + minMax[3] = Math.max(minMax[3], box[1], box[3]); + return; + } + + this.updateRectMinMax(transform, box); + } + + getPathBoundingBox(pathType = _pattern_helper.PathType.FILL, transform = null) { + const box = [this.minX, this.minY, this.maxX, this.maxY]; + + if (pathType === _pattern_helper.PathType.STROKE) { + if (!transform) { + (0, _util.unreachable)("Stroke bounding box must include transform."); + } + + const scale = _util.Util.singularValueDecompose2dScale(transform); + + const xStrokePad = scale[0] * this.lineWidth / 2; + const yStrokePad = scale[1] * this.lineWidth / 2; + box[0] -= xStrokePad; + box[1] -= yStrokePad; + box[2] += xStrokePad; + box[3] += yStrokePad; + } + + return box; + } + + updateClipFromPath() { + const intersect = _util.Util.intersect(this.clipBox, this.getPathBoundingBox()); + + this.startNewPathAndClipBox(intersect || [0, 0, 0, 0]); + } + + isEmptyClip() { + return this.minX === Infinity; + } + + startNewPathAndClipBox(box) { + this.clipBox = box; + this.minX = Infinity; + this.minY = Infinity; + this.maxX = 0; + this.maxY = 0; + } + + getClippedPathBoundingBox(pathType = _pattern_helper.PathType.FILL, transform = null) { + return _util.Util.intersect(this.clipBox, this.getPathBoundingBox(pathType, transform)); + } + +} + +function putBinaryImageData(ctx, imgData, transferMaps = null) { + if (typeof ImageData !== "undefined" && imgData instanceof ImageData) { + ctx.putImageData(imgData, 0, 0); + return; + } + + const height = imgData.height, + width = imgData.width; + const partialChunkHeight = height % FULL_CHUNK_HEIGHT; + const fullChunks = (height - partialChunkHeight) / FULL_CHUNK_HEIGHT; + const totalChunks = partialChunkHeight === 0 ? fullChunks : fullChunks + 1; + const chunkImgData = ctx.createImageData(width, FULL_CHUNK_HEIGHT); + let srcPos = 0, + destPos; + const src = imgData.data; + const dest = chunkImgData.data; + let i, j, thisChunkHeight, elemsInThisChunk; + let transferMapRed, transferMapGreen, transferMapBlue, transferMapGray; + + if (transferMaps) { + switch (transferMaps.length) { + case 1: + transferMapRed = transferMaps[0]; + transferMapGreen = transferMaps[0]; + transferMapBlue = transferMaps[0]; + transferMapGray = transferMaps[0]; + break; + + case 4: + transferMapRed = transferMaps[0]; + transferMapGreen = transferMaps[1]; + transferMapBlue = transferMaps[2]; + transferMapGray = transferMaps[3]; + break; + } + } + + if (imgData.kind === _util.ImageKind.GRAYSCALE_1BPP) { + const srcLength = src.byteLength; + const dest32 = new Uint32Array(dest.buffer, 0, dest.byteLength >> 2); + const dest32DataLength = dest32.length; + const fullSrcDiff = width + 7 >> 3; + let white = 0xffffffff; + let black = _util.FeatureTest.isLittleEndian ? 0xff000000 : 0x000000ff; + + if (transferMapGray) { + if (transferMapGray[0] === 0xff && transferMapGray[0xff] === 0) { + [white, black] = [black, white]; + } + } + + for (i = 0; i < totalChunks; i++) { + thisChunkHeight = i < fullChunks ? FULL_CHUNK_HEIGHT : partialChunkHeight; + destPos = 0; + + for (j = 0; j < thisChunkHeight; j++) { + const srcDiff = srcLength - srcPos; + let k = 0; + const kEnd = srcDiff > fullSrcDiff ? width : srcDiff * 8 - 7; + const kEndUnrolled = kEnd & ~7; + let mask = 0; + let srcByte = 0; + + for (; k < kEndUnrolled; k += 8) { + srcByte = src[srcPos++]; + dest32[destPos++] = srcByte & 128 ? white : black; + dest32[destPos++] = srcByte & 64 ? white : black; + dest32[destPos++] = srcByte & 32 ? white : black; + dest32[destPos++] = srcByte & 16 ? white : black; + dest32[destPos++] = srcByte & 8 ? white : black; + dest32[destPos++] = srcByte & 4 ? white : black; + dest32[destPos++] = srcByte & 2 ? white : black; + dest32[destPos++] = srcByte & 1 ? white : black; + } + + for (; k < kEnd; k++) { + if (mask === 0) { + srcByte = src[srcPos++]; + mask = 128; + } + + dest32[destPos++] = srcByte & mask ? white : black; + mask >>= 1; + } + } + + while (destPos < dest32DataLength) { + dest32[destPos++] = 0; + } + + ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT); + } + } else if (imgData.kind === _util.ImageKind.RGBA_32BPP) { + const hasTransferMaps = !!(transferMapRed || transferMapGreen || transferMapBlue); + j = 0; + elemsInThisChunk = width * FULL_CHUNK_HEIGHT * 4; + + for (i = 0; i < fullChunks; i++) { + dest.set(src.subarray(srcPos, srcPos + elemsInThisChunk)); + srcPos += elemsInThisChunk; + + if (hasTransferMaps) { + for (let k = 0; k < elemsInThisChunk; k += 4) { + if (transferMapRed) { + dest[k + 0] = transferMapRed[dest[k + 0]]; + } + + if (transferMapGreen) { + dest[k + 1] = transferMapGreen[dest[k + 1]]; + } + + if (transferMapBlue) { + dest[k + 2] = transferMapBlue[dest[k + 2]]; + } + } + } + + ctx.putImageData(chunkImgData, 0, j); + j += FULL_CHUNK_HEIGHT; + } + + if (i < totalChunks) { + elemsInThisChunk = width * partialChunkHeight * 4; + dest.set(src.subarray(srcPos, srcPos + elemsInThisChunk)); + + if (hasTransferMaps) { + for (let k = 0; k < elemsInThisChunk; k += 4) { + if (transferMapRed) { + dest[k + 0] = transferMapRed[dest[k + 0]]; + } + + if (transferMapGreen) { + dest[k + 1] = transferMapGreen[dest[k + 1]]; + } + + if (transferMapBlue) { + dest[k + 2] = transferMapBlue[dest[k + 2]]; + } + } + } + + ctx.putImageData(chunkImgData, 0, j); + } + } else if (imgData.kind === _util.ImageKind.RGB_24BPP) { + const hasTransferMaps = !!(transferMapRed || transferMapGreen || transferMapBlue); + thisChunkHeight = FULL_CHUNK_HEIGHT; + elemsInThisChunk = width * thisChunkHeight; + + for (i = 0; i < totalChunks; i++) { + if (i >= fullChunks) { + thisChunkHeight = partialChunkHeight; + elemsInThisChunk = width * thisChunkHeight; + } + + destPos = 0; + + for (j = elemsInThisChunk; j--;) { + dest[destPos++] = src[srcPos++]; + dest[destPos++] = src[srcPos++]; + dest[destPos++] = src[srcPos++]; + dest[destPos++] = 255; + } + + if (hasTransferMaps) { + for (let k = 0; k < destPos; k += 4) { + if (transferMapRed) { + dest[k + 0] = transferMapRed[dest[k + 0]]; + } + + if (transferMapGreen) { + dest[k + 1] = transferMapGreen[dest[k + 1]]; + } + + if (transferMapBlue) { + dest[k + 2] = transferMapBlue[dest[k + 2]]; + } + } + } + + ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT); + } + } else { + throw new Error(`bad image kind: ${imgData.kind}`); + } +} + +function putBinaryImageMask(ctx, imgData) { + if (imgData.bitmap) { + ctx.drawImage(imgData.bitmap, 0, 0); + return; + } + + const height = imgData.height, + width = imgData.width; + const partialChunkHeight = height % FULL_CHUNK_HEIGHT; + const fullChunks = (height - partialChunkHeight) / FULL_CHUNK_HEIGHT; + const totalChunks = partialChunkHeight === 0 ? fullChunks : fullChunks + 1; + const chunkImgData = ctx.createImageData(width, FULL_CHUNK_HEIGHT); + let srcPos = 0; + const src = imgData.data; + const dest = chunkImgData.data; + + for (let i = 0; i < totalChunks; i++) { + const thisChunkHeight = i < fullChunks ? FULL_CHUNK_HEIGHT : partialChunkHeight; + ({ + srcPos + } = (0, _image_utils.applyMaskImageData)({ + src, + srcPos, + dest, + width, + height: thisChunkHeight + })); + ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT); + } +} + +function copyCtxState(sourceCtx, destCtx) { + const properties = ["strokeStyle", "fillStyle", "fillRule", "globalAlpha", "lineWidth", "lineCap", "lineJoin", "miterLimit", "globalCompositeOperation", "font"]; + + for (let i = 0, ii = properties.length; i < ii; i++) { + const property = properties[i]; + + if (sourceCtx[property] !== undefined) { + destCtx[property] = sourceCtx[property]; + } + } + + if (sourceCtx.setLineDash !== undefined) { + destCtx.setLineDash(sourceCtx.getLineDash()); + destCtx.lineDashOffset = sourceCtx.lineDashOffset; + } +} + +function resetCtxToDefault(ctx, foregroundColor) { + ctx.strokeStyle = ctx.fillStyle = foregroundColor || "#000000"; + ctx.fillRule = "nonzero"; + ctx.globalAlpha = 1; + ctx.lineWidth = 1; + ctx.lineCap = "butt"; + ctx.lineJoin = "miter"; + ctx.miterLimit = 10; + ctx.globalCompositeOperation = "source-over"; + ctx.font = "10px sans-serif"; + + if (ctx.setLineDash !== undefined) { + ctx.setLineDash([]); + ctx.lineDashOffset = 0; + } +} + +function composeSMaskBackdrop(bytes, r0, g0, b0) { + const length = bytes.length; + + for (let i = 3; i < length; i += 4) { + const alpha = bytes[i]; + + if (alpha === 0) { + bytes[i - 3] = r0; + bytes[i - 2] = g0; + bytes[i - 1] = b0; + } else if (alpha < 255) { + const alpha_ = 255 - alpha; + bytes[i - 3] = bytes[i - 3] * alpha + r0 * alpha_ >> 8; + bytes[i - 2] = bytes[i - 2] * alpha + g0 * alpha_ >> 8; + bytes[i - 1] = bytes[i - 1] * alpha + b0 * alpha_ >> 8; + } + } +} + +function composeSMaskAlpha(maskData, layerData, transferMap) { + const length = maskData.length; + const scale = 1 / 255; + + for (let i = 3; i < length; i += 4) { + const alpha = transferMap ? transferMap[maskData[i]] : maskData[i]; + layerData[i] = layerData[i] * alpha * scale | 0; + } +} + +function composeSMaskLuminosity(maskData, layerData, transferMap) { + const length = maskData.length; + + for (let i = 3; i < length; i += 4) { + const y = maskData[i - 3] * 77 + maskData[i - 2] * 152 + maskData[i - 1] * 28; + layerData[i] = transferMap ? layerData[i] * transferMap[y >> 8] >> 8 : layerData[i] * y >> 16; + } +} + +function genericComposeSMask(maskCtx, layerCtx, width, height, subtype, backdrop, transferMap, layerOffsetX, layerOffsetY, maskOffsetX, maskOffsetY) { + const hasBackdrop = !!backdrop; + const r0 = hasBackdrop ? backdrop[0] : 0; + const g0 = hasBackdrop ? backdrop[1] : 0; + const b0 = hasBackdrop ? backdrop[2] : 0; + let composeFn; + + if (subtype === "Luminosity") { + composeFn = composeSMaskLuminosity; + } else { + composeFn = composeSMaskAlpha; + } + + const PIXELS_TO_PROCESS = 1048576; + const chunkSize = Math.min(height, Math.ceil(PIXELS_TO_PROCESS / width)); + + for (let row = 0; row < height; row += chunkSize) { + const chunkHeight = Math.min(chunkSize, height - row); + const maskData = maskCtx.getImageData(layerOffsetX - maskOffsetX, row + (layerOffsetY - maskOffsetY), width, chunkHeight); + const layerData = layerCtx.getImageData(layerOffsetX, row + layerOffsetY, width, chunkHeight); + + if (hasBackdrop) { + composeSMaskBackdrop(maskData.data, r0, g0, b0); + } + + composeFn(maskData.data, layerData.data, transferMap); + layerCtx.putImageData(layerData, layerOffsetX, row + layerOffsetY); + } +} + +function composeSMask(ctx, smask, layerCtx, layerBox) { + const layerOffsetX = layerBox[0]; + const layerOffsetY = layerBox[1]; + const layerWidth = layerBox[2] - layerOffsetX; + const layerHeight = layerBox[3] - layerOffsetY; + + if (layerWidth === 0 || layerHeight === 0) { + return; + } + + genericComposeSMask(smask.context, layerCtx, layerWidth, layerHeight, smask.subtype, smask.backdrop, smask.transferMap, layerOffsetX, layerOffsetY, smask.offsetX, smask.offsetY); + ctx.save(); + ctx.globalAlpha = 1; + ctx.globalCompositeOperation = "source-over"; + ctx.setTransform(1, 0, 0, 1, 0, 0); + ctx.drawImage(layerCtx.canvas, 0, 0); + ctx.restore(); +} + +function getImageSmoothingEnabled(transform, interpolate) { + const scale = _util.Util.singularValueDecompose2dScale(transform); + + scale[0] = Math.fround(scale[0]); + scale[1] = Math.fround(scale[1]); + const actualScale = Math.fround((globalThis.devicePixelRatio || 1) * _display_utils.PixelsPerInch.PDF_TO_CSS_UNITS); + + if (interpolate !== undefined) { + return interpolate; + } else if (scale[0] <= actualScale || scale[1] <= actualScale) { + return true; + } + + return false; +} + +const LINE_CAP_STYLES = ["butt", "round", "square"]; +const LINE_JOIN_STYLES = ["miter", "round", "bevel"]; +const NORMAL_CLIP = {}; +const EO_CLIP = {}; + +class CanvasGraphics { + constructor(canvasCtx, commonObjs, objs, canvasFactory, imageLayer, optionalContentConfig, annotationCanvasMap, pageColors) { + this.ctx = canvasCtx; + this.current = new CanvasExtraState(this.ctx.canvas.width, this.ctx.canvas.height); + this.stateStack = []; + this.pendingClip = null; + this.pendingEOFill = false; + this.res = null; + this.xobjs = null; + this.commonObjs = commonObjs; + this.objs = objs; + this.canvasFactory = canvasFactory; + this.imageLayer = imageLayer; + this.groupStack = []; + this.processingType3 = null; + this.baseTransform = null; + this.baseTransformStack = []; + this.groupLevel = 0; + this.smaskStack = []; + this.smaskCounter = 0; + this.tempSMask = null; + this.suspendedCtx = null; + this.contentVisible = true; + this.markedContentStack = []; + this.optionalContentConfig = optionalContentConfig; + this.cachedCanvases = new CachedCanvases(this.canvasFactory); + this.cachedPatterns = new Map(); + this.annotationCanvasMap = annotationCanvasMap; + this.viewportScale = 1; + this.outputScaleX = 1; + this.outputScaleY = 1; + this.backgroundColor = pageColors?.background || null; + this.foregroundColor = pageColors?.foreground || null; + + if (canvasCtx) { + addContextCurrentTransform(canvasCtx); + } + + this._cachedScaleForStroking = null; + this._cachedGetSinglePixelWidth = null; + this._cachedBitmapsMap = new Map(); + } + + getObject(data, fallback = null) { + if (typeof data === "string") { + return data.startsWith("g_") ? this.commonObjs.get(data) : this.objs.get(data); + } + + return fallback; + } + + beginDrawing({ + transform, + viewport, + transparency = false, + background = null + }) { + const width = this.ctx.canvas.width; + const height = this.ctx.canvas.height; + const defaultBackgroundColor = background || "#ffffff"; + this.ctx.save(); + + if (this.foregroundColor && this.backgroundColor) { + this.ctx.fillStyle = this.foregroundColor; + const fg = this.foregroundColor = this.ctx.fillStyle; + this.ctx.fillStyle = this.backgroundColor; + const bg = this.backgroundColor = this.ctx.fillStyle; + let isValidDefaultBg = true; + let defaultBg = defaultBackgroundColor; + this.ctx.fillStyle = defaultBackgroundColor; + defaultBg = this.ctx.fillStyle; + isValidDefaultBg = typeof defaultBg === "string" && /^#[0-9A-Fa-f]{6}$/.test(defaultBg); + + if (fg === "#000000" && bg === "#ffffff" || fg === bg || !isValidDefaultBg) { + this.foregroundColor = this.backgroundColor = null; + } else { + const cB = parseInt(defaultBg.slice(1), 16); + const rB = (cB && 0xff0000) >> 16; + const gB = (cB && 0x00ff00) >> 8; + const bB = cB && 0x0000ff; + + const newComp = x => { + x /= 255; + return x <= 0.03928 ? x / 12.92 : ((x + 0.055) / 1.055) ** 2.4; + }; + + const lumB = Math.round(0.2126 * newComp(rB) + 0.7152 * newComp(gB) + 0.0722 * newComp(bB)); + + this.selectColor = (r, g, b) => { + const lumC = 0.2126 * newComp(r) + 0.7152 * newComp(g) + 0.0722 * newComp(b); + return Math.round(lumC) === lumB ? bg : fg; + }; + } + } + + this.ctx.fillStyle = this.backgroundColor || defaultBackgroundColor; + this.ctx.fillRect(0, 0, width, height); + this.ctx.restore(); + + if (transparency) { + const transparentCanvas = this.cachedCanvases.getCanvas("transparent", width, height, true); + this.compositeCtx = this.ctx; + this.transparentCanvas = transparentCanvas.canvas; + this.ctx = transparentCanvas.context; + this.ctx.save(); + this.ctx.transform.apply(this.ctx, this.compositeCtx.mozCurrentTransform); + } + + this.ctx.save(); + resetCtxToDefault(this.ctx, this.foregroundColor); + + if (transform) { + this.ctx.transform.apply(this.ctx, transform); + this.outputScaleX = transform[0]; + this.outputScaleY = transform[0]; + } + + this.ctx.transform.apply(this.ctx, viewport.transform); + this.viewportScale = viewport.scale; + this.baseTransform = this.ctx.mozCurrentTransform.slice(); + + if (this.imageLayer) { + this.imageLayer.beginLayout(); + } + } + + executeOperatorList(operatorList, executionStartIdx, continueCallback, stepper) { + const argsArray = operatorList.argsArray; + const fnArray = operatorList.fnArray; + let i = executionStartIdx || 0; + const argsArrayLen = argsArray.length; + + if (argsArrayLen === i) { + return i; + } + + const chunkOperations = argsArrayLen - i > EXECUTION_STEPS && typeof continueCallback === "function"; + const endTime = chunkOperations ? Date.now() + EXECUTION_TIME : 0; + let steps = 0; + const commonObjs = this.commonObjs; + const objs = this.objs; + let fnId; + + while (true) { + if (stepper !== undefined && i === stepper.nextBreakPoint) { + stepper.breakIt(i, continueCallback); + return i; + } + + fnId = fnArray[i]; + + if (fnId !== _util.OPS.dependency) { + this[fnId].apply(this, argsArray[i]); + } else { + for (const depObjId of argsArray[i]) { + const objsPool = depObjId.startsWith("g_") ? commonObjs : objs; + + if (!objsPool.has(depObjId)) { + objsPool.get(depObjId, continueCallback); + return i; + } + } + } + + i++; + + if (i === argsArrayLen) { + return i; + } + + if (chunkOperations && ++steps > EXECUTION_STEPS) { + if (Date.now() > endTime) { + continueCallback(); + return i; + } + + steps = 0; + } + } + } + + endDrawing() { + while (this.stateStack.length || this.inSMaskMode) { + this.restore(); + } + + this.ctx.restore(); + + if (this.transparentCanvas) { + this.ctx = this.compositeCtx; + this.ctx.save(); + this.ctx.setTransform(1, 0, 0, 1, 0, 0); + this.ctx.drawImage(this.transparentCanvas, 0, 0); + this.ctx.restore(); + this.transparentCanvas = null; + } + + this.cachedCanvases.clear(); + this.cachedPatterns.clear(); + + for (const cache of this._cachedBitmapsMap.values()) { + for (const canvas of cache.values()) { + if (typeof HTMLCanvasElement !== "undefined" && canvas instanceof HTMLCanvasElement) { + canvas.width = canvas.height = 0; + } + } + + cache.clear(); + } + + this._cachedBitmapsMap.clear(); + + if (this.imageLayer) { + this.imageLayer.endLayout(); + } + } + + _scaleImage(img, inverseTransform) { + const width = img.width; + const height = img.height; + let widthScale = Math.max(Math.hypot(inverseTransform[0], inverseTransform[1]), 1); + let heightScale = Math.max(Math.hypot(inverseTransform[2], inverseTransform[3]), 1); + let paintWidth = width, + paintHeight = height; + let tmpCanvasId = "prescale1"; + let tmpCanvas, tmpCtx; + + while (widthScale > 2 && paintWidth > 1 || heightScale > 2 && paintHeight > 1) { + let newWidth = paintWidth, + newHeight = paintHeight; + + if (widthScale > 2 && paintWidth > 1) { + newWidth = Math.ceil(paintWidth / 2); + widthScale /= paintWidth / newWidth; + } + + if (heightScale > 2 && paintHeight > 1) { + newHeight = Math.ceil(paintHeight / 2); + heightScale /= paintHeight / newHeight; + } + + tmpCanvas = this.cachedCanvases.getCanvas(tmpCanvasId, newWidth, newHeight, false); + tmpCtx = tmpCanvas.context; + tmpCtx.clearRect(0, 0, newWidth, newHeight); + tmpCtx.drawImage(img, 0, 0, paintWidth, paintHeight, 0, 0, newWidth, newHeight); + img = tmpCanvas.canvas; + paintWidth = newWidth; + paintHeight = newHeight; + tmpCanvasId = tmpCanvasId === "prescale1" ? "prescale2" : "prescale1"; + } + + return { + img, + paintWidth, + paintHeight + }; + } + + _createMaskCanvas(img) { + const ctx = this.ctx; + const { + width, + height + } = img; + const fillColor = this.current.fillColor; + const isPatternFill = this.current.patternFill; + const currentTransform = ctx.mozCurrentTransform; + let cache, cacheKey, scaled, maskCanvas; + + if ((img.bitmap || img.data) && img.count > 1) { + const mainKey = img.bitmap || img.data.buffer; + const withoutTranslation = currentTransform.slice(0, 4); + cacheKey = JSON.stringify(isPatternFill ? withoutTranslation : [withoutTranslation, fillColor]); + cache = this._cachedBitmapsMap.get(mainKey); + + if (!cache) { + cache = new Map(); + + this._cachedBitmapsMap.set(mainKey, cache); + } + + const cachedImage = cache.get(cacheKey); + + if (cachedImage && !isPatternFill) { + const offsetX = Math.round(Math.min(currentTransform[0], currentTransform[2]) + currentTransform[4]); + const offsetY = Math.round(Math.min(currentTransform[1], currentTransform[3]) + currentTransform[5]); + return { + canvas: cachedImage, + offsetX, + offsetY + }; + } + + scaled = cachedImage; + } + + if (!scaled) { + maskCanvas = this.cachedCanvases.getCanvas("maskCanvas", width, height, false); + putBinaryImageMask(maskCanvas.context, img); + } + + let maskToCanvas = _util.Util.transform(currentTransform, [1 / width, 0, 0, -1 / height, 0, 0]); + + maskToCanvas = _util.Util.transform(maskToCanvas, [1, 0, 0, 1, 0, -height]); + + const cord1 = _util.Util.applyTransform([0, 0], maskToCanvas); + + const cord2 = _util.Util.applyTransform([width, height], maskToCanvas); + + const rect = _util.Util.normalizeRect([cord1[0], cord1[1], cord2[0], cord2[1]]); + + const drawnWidth = Math.round(rect[2] - rect[0]) || 1; + const drawnHeight = Math.round(rect[3] - rect[1]) || 1; + const fillCanvas = this.cachedCanvases.getCanvas("fillCanvas", drawnWidth, drawnHeight, true); + const fillCtx = fillCanvas.context; + const offsetX = Math.min(cord1[0], cord2[0]); + const offsetY = Math.min(cord1[1], cord2[1]); + fillCtx.translate(-offsetX, -offsetY); + fillCtx.transform.apply(fillCtx, maskToCanvas); + + if (!scaled) { + scaled = this._scaleImage(maskCanvas.canvas, fillCtx.mozCurrentTransformInverse); + scaled = scaled.img; + + if (cache && isPatternFill) { + cache.set(cacheKey, scaled); + } + } + + fillCtx.imageSmoothingEnabled = getImageSmoothingEnabled(fillCtx.mozCurrentTransform, img.interpolate); + drawImageAtIntegerCoords(fillCtx, scaled, 0, 0, scaled.width, scaled.height, 0, 0, width, height); + fillCtx.globalCompositeOperation = "source-in"; + + const inverse = _util.Util.transform(fillCtx.mozCurrentTransformInverse, [1, 0, 0, 1, -offsetX, -offsetY]); + + fillCtx.fillStyle = isPatternFill ? fillColor.getPattern(ctx, this, inverse, _pattern_helper.PathType.FILL) : fillColor; + fillCtx.fillRect(0, 0, width, height); + + if (cache && !isPatternFill) { + this.cachedCanvases.delete("fillCanvas"); + cache.set(cacheKey, fillCanvas.canvas); + } + + return { + canvas: fillCanvas.canvas, + offsetX: Math.round(offsetX), + offsetY: Math.round(offsetY) + }; + } + + setLineWidth(width) { + if (width !== this.current.lineWidth) { + this._cachedScaleForStroking = null; + } + + this.current.lineWidth = width; + this.ctx.lineWidth = width; + } + + setLineCap(style) { + this.ctx.lineCap = LINE_CAP_STYLES[style]; + } + + setLineJoin(style) { + this.ctx.lineJoin = LINE_JOIN_STYLES[style]; + } + + setMiterLimit(limit) { + this.ctx.miterLimit = limit; + } + + setDash(dashArray, dashPhase) { + const ctx = this.ctx; + + if (ctx.setLineDash !== undefined) { + ctx.setLineDash(dashArray); + ctx.lineDashOffset = dashPhase; + } + } + + setRenderingIntent(intent) {} + + setFlatness(flatness) {} + + setGState(states) { + for (let i = 0, ii = states.length; i < ii; i++) { + const state = states[i]; + const key = state[0]; + const value = state[1]; + + switch (key) { + case "LW": + this.setLineWidth(value); + break; + + case "LC": + this.setLineCap(value); + break; + + case "LJ": + this.setLineJoin(value); + break; + + case "ML": + this.setMiterLimit(value); + break; + + case "D": + this.setDash(value[0], value[1]); + break; + + case "RI": + this.setRenderingIntent(value); + break; + + case "FL": + this.setFlatness(value); + break; + + case "Font": + this.setFont(value[0], value[1]); + break; + + case "CA": + this.current.strokeAlpha = state[1]; + break; + + case "ca": + this.current.fillAlpha = state[1]; + this.ctx.globalAlpha = state[1]; + break; + + case "BM": + this.ctx.globalCompositeOperation = value; + break; + + case "SMask": + this.current.activeSMask = value ? this.tempSMask : null; + this.tempSMask = null; + this.checkSMaskState(); + break; + + case "TR": + this.current.transferMaps = value; + } + } + } + + get inSMaskMode() { + return !!this.suspendedCtx; + } + + checkSMaskState() { + const inSMaskMode = this.inSMaskMode; + + if (this.current.activeSMask && !inSMaskMode) { + this.beginSMaskMode(); + } else if (!this.current.activeSMask && inSMaskMode) { + this.endSMaskMode(); + } + } + + beginSMaskMode() { + if (this.inSMaskMode) { + throw new Error("beginSMaskMode called while already in smask mode"); + } + + const drawnWidth = this.ctx.canvas.width; + const drawnHeight = this.ctx.canvas.height; + const cacheId = "smaskGroupAt" + this.groupLevel; + const scratchCanvas = this.cachedCanvases.getCanvas(cacheId, drawnWidth, drawnHeight, true); + this.suspendedCtx = this.ctx; + this.ctx = scratchCanvas.context; + const ctx = this.ctx; + ctx.setTransform.apply(ctx, this.suspendedCtx.mozCurrentTransform); + copyCtxState(this.suspendedCtx, ctx); + mirrorContextOperations(ctx, this.suspendedCtx); + this.setGState([["BM", "source-over"], ["ca", 1], ["CA", 1]]); + } + + endSMaskMode() { + if (!this.inSMaskMode) { + throw new Error("endSMaskMode called while not in smask mode"); + } + + this.ctx._removeMirroring(); + + copyCtxState(this.ctx, this.suspendedCtx); + this.ctx = this.suspendedCtx; + this.suspendedCtx = null; + } + + compose(dirtyBox) { + if (!this.current.activeSMask) { + return; + } + + if (!dirtyBox) { + dirtyBox = [0, 0, this.ctx.canvas.width, this.ctx.canvas.height]; + } else { + dirtyBox[0] = Math.floor(dirtyBox[0]); + dirtyBox[1] = Math.floor(dirtyBox[1]); + dirtyBox[2] = Math.ceil(dirtyBox[2]); + dirtyBox[3] = Math.ceil(dirtyBox[3]); + } + + const smask = this.current.activeSMask; + const suspendedCtx = this.suspendedCtx; + composeSMask(suspendedCtx, smask, this.ctx, dirtyBox); + this.ctx.save(); + this.ctx.setTransform(1, 0, 0, 1, 0, 0); + this.ctx.clearRect(0, 0, this.ctx.canvas.width, this.ctx.canvas.height); + this.ctx.restore(); + } + + save() { + if (this.inSMaskMode) { + copyCtxState(this.ctx, this.suspendedCtx); + this.suspendedCtx.save(); + } else { + this.ctx.save(); + } + + const old = this.current; + this.stateStack.push(old); + this.current = old.clone(); + } + + restore() { + if (this.stateStack.length === 0 && this.inSMaskMode) { + this.endSMaskMode(); + } + + if (this.stateStack.length !== 0) { + this.current = this.stateStack.pop(); + + if (this.inSMaskMode) { + this.suspendedCtx.restore(); + copyCtxState(this.suspendedCtx, this.ctx); + } else { + this.ctx.restore(); + } + + this.checkSMaskState(); + this.pendingClip = null; + this._cachedScaleForStroking = null; + this._cachedGetSinglePixelWidth = null; + } + } + + transform(a, b, c, d, e, f) { + this.ctx.transform(a, b, c, d, e, f); + this._cachedScaleForStroking = null; + this._cachedGetSinglePixelWidth = null; + } + + constructPath(ops, args, minMax) { + const ctx = this.ctx; + const current = this.current; + let x = current.x, + y = current.y; + let startX, startY; + const currentTransform = ctx.mozCurrentTransform; + const isScalingMatrix = currentTransform[0] === 0 && currentTransform[3] === 0 || currentTransform[1] === 0 && currentTransform[2] === 0; + const minMaxForBezier = isScalingMatrix ? minMax.slice(0) : null; + + for (let i = 0, j = 0, ii = ops.length; i < ii; i++) { + switch (ops[i] | 0) { + case _util.OPS.rectangle: + x = args[j++]; + y = args[j++]; + const width = args[j++]; + const height = args[j++]; + const xw = x + width; + const yh = y + height; + ctx.moveTo(x, y); + + if (width === 0 || height === 0) { + ctx.lineTo(xw, yh); + } else { + ctx.lineTo(xw, y); + ctx.lineTo(xw, yh); + ctx.lineTo(x, yh); + } + + if (!isScalingMatrix) { + current.updateRectMinMax(currentTransform, [x, y, xw, yh]); + } + + ctx.closePath(); + break; + + case _util.OPS.moveTo: + x = args[j++]; + y = args[j++]; + ctx.moveTo(x, y); + + if (!isScalingMatrix) { + current.updatePathMinMax(currentTransform, x, y); + } + + break; + + case _util.OPS.lineTo: + x = args[j++]; + y = args[j++]; + ctx.lineTo(x, y); + + if (!isScalingMatrix) { + current.updatePathMinMax(currentTransform, x, y); + } + + break; + + case _util.OPS.curveTo: + startX = x; + startY = y; + x = args[j + 4]; + y = args[j + 5]; + ctx.bezierCurveTo(args[j], args[j + 1], args[j + 2], args[j + 3], x, y); + current.updateCurvePathMinMax(currentTransform, startX, startY, args[j], args[j + 1], args[j + 2], args[j + 3], x, y, minMaxForBezier); + j += 6; + break; + + case _util.OPS.curveTo2: + startX = x; + startY = y; + ctx.bezierCurveTo(x, y, args[j], args[j + 1], args[j + 2], args[j + 3]); + current.updateCurvePathMinMax(currentTransform, startX, startY, x, y, args[j], args[j + 1], args[j + 2], args[j + 3], minMaxForBezier); + x = args[j + 2]; + y = args[j + 3]; + j += 4; + break; + + case _util.OPS.curveTo3: + startX = x; + startY = y; + x = args[j + 2]; + y = args[j + 3]; + ctx.bezierCurveTo(args[j], args[j + 1], x, y, x, y); + current.updateCurvePathMinMax(currentTransform, startX, startY, args[j], args[j + 1], x, y, x, y, minMaxForBezier); + j += 4; + break; + + case _util.OPS.closePath: + ctx.closePath(); + break; + } + } + + if (isScalingMatrix) { + current.updateScalingPathMinMax(currentTransform, minMaxForBezier); + } + + current.setCurrentPoint(x, y); + } + + closePath() { + this.ctx.closePath(); + } + + stroke(consumePath) { + consumePath = typeof consumePath !== "undefined" ? consumePath : true; + const ctx = this.ctx; + const strokeColor = this.current.strokeColor; + ctx.globalAlpha = this.current.strokeAlpha; + + if (this.contentVisible) { + if (typeof strokeColor === "object" && strokeColor?.getPattern) { + ctx.save(); + ctx.strokeStyle = strokeColor.getPattern(ctx, this, ctx.mozCurrentTransformInverse, _pattern_helper.PathType.STROKE); + this.rescaleAndStroke(false); + ctx.restore(); + } else { + this.rescaleAndStroke(true); + } + } + + if (consumePath) { + this.consumePath(this.current.getClippedPathBoundingBox()); + } + + ctx.globalAlpha = this.current.fillAlpha; + } + + closeStroke() { + this.closePath(); + this.stroke(); + } + + fill(consumePath) { + consumePath = typeof consumePath !== "undefined" ? consumePath : true; + const ctx = this.ctx; + const fillColor = this.current.fillColor; + const isPatternFill = this.current.patternFill; + let needRestore = false; + + if (isPatternFill) { + ctx.save(); + ctx.fillStyle = fillColor.getPattern(ctx, this, ctx.mozCurrentTransformInverse, _pattern_helper.PathType.FILL); + needRestore = true; + } + + const intersect = this.current.getClippedPathBoundingBox(); + + if (this.contentVisible && intersect !== null) { + if (this.pendingEOFill) { + ctx.fill("evenodd"); + this.pendingEOFill = false; + } else { + ctx.fill(); + } + } + + if (needRestore) { + ctx.restore(); + } + + if (consumePath) { + this.consumePath(intersect); + } + } + + eoFill() { + this.pendingEOFill = true; + this.fill(); + } + + fillStroke() { + this.fill(false); + this.stroke(false); + this.consumePath(); + } + + eoFillStroke() { + this.pendingEOFill = true; + this.fillStroke(); + } + + closeFillStroke() { + this.closePath(); + this.fillStroke(); + } + + closeEOFillStroke() { + this.pendingEOFill = true; + this.closePath(); + this.fillStroke(); + } + + endPath() { + this.consumePath(); + } + + clip() { + this.pendingClip = NORMAL_CLIP; + } + + eoClip() { + this.pendingClip = EO_CLIP; + } + + beginText() { + this.current.textMatrix = _util.IDENTITY_MATRIX; + this.current.textMatrixScale = 1; + this.current.x = this.current.lineX = 0; + this.current.y = this.current.lineY = 0; + } + + endText() { + const paths = this.pendingTextPaths; + const ctx = this.ctx; + + if (paths === undefined) { + ctx.beginPath(); + return; + } + + ctx.save(); + ctx.beginPath(); + + for (let i = 0; i < paths.length; i++) { + const path = paths[i]; + ctx.setTransform.apply(ctx, path.transform); + ctx.translate(path.x, path.y); + path.addToPath(ctx, path.fontSize); + } + + ctx.restore(); + ctx.clip(); + ctx.beginPath(); + delete this.pendingTextPaths; + } + + setCharSpacing(spacing) { + this.current.charSpacing = spacing; + } + + setWordSpacing(spacing) { + this.current.wordSpacing = spacing; + } + + setHScale(scale) { + this.current.textHScale = scale / 100; + } + + setLeading(leading) { + this.current.leading = -leading; + } + + setFont(fontRefName, size) { + const fontObj = this.commonObjs.get(fontRefName); + const current = this.current; + + if (!fontObj) { + throw new Error(`Can't find font for ${fontRefName}`); + } + + current.fontMatrix = fontObj.fontMatrix || _util.FONT_IDENTITY_MATRIX; + + if (current.fontMatrix[0] === 0 || current.fontMatrix[3] === 0) { + (0, _util.warn)("Invalid font matrix for font " + fontRefName); + } + + if (size < 0) { + size = -size; + current.fontDirection = -1; + } else { + current.fontDirection = 1; + } + + this.current.font = fontObj; + this.current.fontSize = size; + + if (fontObj.isType3Font) { + return; + } + + const name = fontObj.loadedName || "sans-serif"; + let bold = "normal"; + + if (fontObj.black) { + bold = "900"; + } else if (fontObj.bold) { + bold = "bold"; + } + + const italic = fontObj.italic ? "italic" : "normal"; + const typeface = `"${name}", ${fontObj.fallbackName}`; + let browserFontSize = size; + + if (size < MIN_FONT_SIZE) { + browserFontSize = MIN_FONT_SIZE; + } else if (size > MAX_FONT_SIZE) { + browserFontSize = MAX_FONT_SIZE; + } + + this.current.fontSizeScale = size / browserFontSize; + this.ctx.font = `${italic} ${bold} ${browserFontSize}px ${typeface}`; + } + + setTextRenderingMode(mode) { + this.current.textRenderingMode = mode; + } + + setTextRise(rise) { + this.current.textRise = rise; + } + + moveText(x, y) { + this.current.x = this.current.lineX += x; + this.current.y = this.current.lineY += y; + } + + setLeadingMoveText(x, y) { + this.setLeading(-y); + this.moveText(x, y); + } + + setTextMatrix(a, b, c, d, e, f) { + this.current.textMatrix = [a, b, c, d, e, f]; + this.current.textMatrixScale = Math.hypot(a, b); + this.current.x = this.current.lineX = 0; + this.current.y = this.current.lineY = 0; + } + + nextLine() { + this.moveText(0, this.current.leading); + } + + paintChar(character, x, y, patternTransform) { + const ctx = this.ctx; + const current = this.current; + const font = current.font; + const textRenderingMode = current.textRenderingMode; + const fontSize = current.fontSize / current.fontSizeScale; + const fillStrokeMode = textRenderingMode & _util.TextRenderingMode.FILL_STROKE_MASK; + const isAddToPathSet = !!(textRenderingMode & _util.TextRenderingMode.ADD_TO_PATH_FLAG); + const patternFill = current.patternFill && !font.missingFile; + let addToPath; + + if (font.disableFontFace || isAddToPathSet || patternFill) { + addToPath = font.getPathGenerator(this.commonObjs, character); + } + + if (font.disableFontFace || patternFill) { + ctx.save(); + ctx.translate(x, y); + ctx.beginPath(); + addToPath(ctx, fontSize); + + if (patternTransform) { + ctx.setTransform.apply(ctx, patternTransform); + } + + if (fillStrokeMode === _util.TextRenderingMode.FILL || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) { + ctx.fill(); + } + + if (fillStrokeMode === _util.TextRenderingMode.STROKE || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) { + ctx.stroke(); + } + + ctx.restore(); + } else { + if (fillStrokeMode === _util.TextRenderingMode.FILL || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) { + ctx.fillText(character, x, y); + } + + if (fillStrokeMode === _util.TextRenderingMode.STROKE || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) { + ctx.strokeText(character, x, y); + } + } + + if (isAddToPathSet) { + const paths = this.pendingTextPaths || (this.pendingTextPaths = []); + paths.push({ + transform: ctx.mozCurrentTransform, + x, + y, + fontSize, + addToPath + }); + } + } + + get isFontSubpixelAAEnabled() { + const { + context: ctx + } = this.cachedCanvases.getCanvas("isFontSubpixelAAEnabled", 10, 10, false); + ctx.scale(1.5, 1); + ctx.fillText("I", 0, 10); + const data = ctx.getImageData(0, 0, 10, 10).data; + let enabled = false; + + for (let i = 3; i < data.length; i += 4) { + if (data[i] > 0 && data[i] < 255) { + enabled = true; + break; + } + } + + return (0, _util.shadow)(this, "isFontSubpixelAAEnabled", enabled); + } + + showText(glyphs) { + const current = this.current; + const font = current.font; + + if (font.isType3Font) { + return this.showType3Text(glyphs); + } + + const fontSize = current.fontSize; + + if (fontSize === 0) { + return undefined; + } + + const ctx = this.ctx; + const fontSizeScale = current.fontSizeScale; + const charSpacing = current.charSpacing; + const wordSpacing = current.wordSpacing; + const fontDirection = current.fontDirection; + const textHScale = current.textHScale * fontDirection; + const glyphsLength = glyphs.length; + const vertical = font.vertical; + const spacingDir = vertical ? 1 : -1; + const defaultVMetrics = font.defaultVMetrics; + const widthAdvanceScale = fontSize * current.fontMatrix[0]; + const simpleFillText = current.textRenderingMode === _util.TextRenderingMode.FILL && !font.disableFontFace && !current.patternFill; + ctx.save(); + ctx.transform.apply(ctx, current.textMatrix); + ctx.translate(current.x, current.y + current.textRise); + + if (fontDirection > 0) { + ctx.scale(textHScale, -1); + } else { + ctx.scale(textHScale, 1); + } + + let patternTransform; + + if (current.patternFill) { + ctx.save(); + const pattern = current.fillColor.getPattern(ctx, this, ctx.mozCurrentTransformInverse, _pattern_helper.PathType.FILL); + patternTransform = ctx.mozCurrentTransform; + ctx.restore(); + ctx.fillStyle = pattern; + } + + let lineWidth = current.lineWidth; + const scale = current.textMatrixScale; + + if (scale === 0 || lineWidth === 0) { + const fillStrokeMode = current.textRenderingMode & _util.TextRenderingMode.FILL_STROKE_MASK; + + if (fillStrokeMode === _util.TextRenderingMode.STROKE || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) { + lineWidth = this.getSinglePixelWidth(); + } + } else { + lineWidth /= scale; + } + + if (fontSizeScale !== 1.0) { + ctx.scale(fontSizeScale, fontSizeScale); + lineWidth /= fontSizeScale; + } + + ctx.lineWidth = lineWidth; + let x = 0, + i; + + for (i = 0; i < glyphsLength; ++i) { + const glyph = glyphs[i]; + + if (typeof glyph === "number") { + x += spacingDir * glyph * fontSize / 1000; + continue; + } + + let restoreNeeded = false; + const spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing; + const character = glyph.fontChar; + const accent = glyph.accent; + let scaledX, scaledY; + let width = glyph.width; + + if (vertical) { + const vmetric = glyph.vmetric || defaultVMetrics; + const vx = -(glyph.vmetric ? vmetric[1] : width * 0.5) * widthAdvanceScale; + const vy = vmetric[2] * widthAdvanceScale; + width = vmetric ? -vmetric[0] : width; + scaledX = vx / fontSizeScale; + scaledY = (x + vy) / fontSizeScale; + } else { + scaledX = x / fontSizeScale; + scaledY = 0; + } + + if (font.remeasure && width > 0) { + const measuredWidth = ctx.measureText(character).width * 1000 / fontSize * fontSizeScale; + + if (width < measuredWidth && this.isFontSubpixelAAEnabled) { + const characterScaleX = width / measuredWidth; + restoreNeeded = true; + ctx.save(); + ctx.scale(characterScaleX, 1); + scaledX /= characterScaleX; + } else if (width !== measuredWidth) { + scaledX += (width - measuredWidth) / 2000 * fontSize / fontSizeScale; + } + } + + if (this.contentVisible && (glyph.isInFont || font.missingFile)) { + if (simpleFillText && !accent) { + ctx.fillText(character, scaledX, scaledY); + } else { + this.paintChar(character, scaledX, scaledY, patternTransform); + + if (accent) { + const scaledAccentX = scaledX + fontSize * accent.offset.x / fontSizeScale; + const scaledAccentY = scaledY - fontSize * accent.offset.y / fontSizeScale; + this.paintChar(accent.fontChar, scaledAccentX, scaledAccentY, patternTransform); + } + } + } + + let charWidth; + + if (vertical) { + charWidth = width * widthAdvanceScale - spacing * fontDirection; + } else { + charWidth = width * widthAdvanceScale + spacing * fontDirection; + } + + x += charWidth; + + if (restoreNeeded) { + ctx.restore(); + } + } + + if (vertical) { + current.y -= x; + } else { + current.x += x * textHScale; + } + + ctx.restore(); + this.compose(); + return undefined; + } + + showType3Text(glyphs) { + const ctx = this.ctx; + const current = this.current; + const font = current.font; + const fontSize = current.fontSize; + const fontDirection = current.fontDirection; + const spacingDir = font.vertical ? 1 : -1; + const charSpacing = current.charSpacing; + const wordSpacing = current.wordSpacing; + const textHScale = current.textHScale * fontDirection; + const fontMatrix = current.fontMatrix || _util.FONT_IDENTITY_MATRIX; + const glyphsLength = glyphs.length; + const isTextInvisible = current.textRenderingMode === _util.TextRenderingMode.INVISIBLE; + let i, glyph, width, spacingLength; + + if (isTextInvisible || fontSize === 0) { + return; + } + + this._cachedScaleForStroking = null; + this._cachedGetSinglePixelWidth = null; + ctx.save(); + ctx.transform.apply(ctx, current.textMatrix); + ctx.translate(current.x, current.y); + ctx.scale(textHScale, fontDirection); + + for (i = 0; i < glyphsLength; ++i) { + glyph = glyphs[i]; + + if (typeof glyph === "number") { + spacingLength = spacingDir * glyph * fontSize / 1000; + this.ctx.translate(spacingLength, 0); + current.x += spacingLength * textHScale; + continue; + } + + const spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing; + const operatorList = font.charProcOperatorList[glyph.operatorListId]; + + if (!operatorList) { + (0, _util.warn)(`Type3 character "${glyph.operatorListId}" is not available.`); + continue; + } + + if (this.contentVisible) { + this.processingType3 = glyph; + this.save(); + ctx.scale(fontSize, fontSize); + ctx.transform.apply(ctx, fontMatrix); + this.executeOperatorList(operatorList); + this.restore(); + } + + const transformed = _util.Util.applyTransform([glyph.width, 0], fontMatrix); + + width = transformed[0] * fontSize + spacing; + ctx.translate(width, 0); + current.x += width * textHScale; + } + + ctx.restore(); + this.processingType3 = null; + } + + setCharWidth(xWidth, yWidth) {} + + setCharWidthAndBounds(xWidth, yWidth, llx, lly, urx, ury) { + this.ctx.rect(llx, lly, urx - llx, ury - lly); + this.ctx.clip(); + this.endPath(); + } + + getColorN_Pattern(IR) { + let pattern; + + if (IR[0] === "TilingPattern") { + const color = IR[1]; + const baseTransform = this.baseTransform || this.ctx.mozCurrentTransform.slice(); + const canvasGraphicsFactory = { + createCanvasGraphics: ctx => { + return new CanvasGraphics(ctx, this.commonObjs, this.objs, this.canvasFactory); + } + }; + pattern = new _pattern_helper.TilingPattern(IR, color, this.ctx, canvasGraphicsFactory, baseTransform); + } else { + pattern = this._getPattern(IR[1], IR[2]); + } + + return pattern; + } + + setStrokeColorN() { + this.current.strokeColor = this.getColorN_Pattern(arguments); + } + + setFillColorN() { + this.current.fillColor = this.getColorN_Pattern(arguments); + this.current.patternFill = true; + } + + setStrokeRGBColor(r, g, b) { + const color = this.selectColor?.(r, g, b) || _util.Util.makeHexColor(r, g, b); + + this.ctx.strokeStyle = color; + this.current.strokeColor = color; + } + + setFillRGBColor(r, g, b) { + const color = this.selectColor?.(r, g, b) || _util.Util.makeHexColor(r, g, b); + + this.ctx.fillStyle = color; + this.current.fillColor = color; + this.current.patternFill = false; + } + + _getPattern(objId, matrix = null) { + let pattern; + + if (this.cachedPatterns.has(objId)) { + pattern = this.cachedPatterns.get(objId); + } else { + pattern = (0, _pattern_helper.getShadingPattern)(this.objs.get(objId)); + this.cachedPatterns.set(objId, pattern); + } + + if (matrix) { + pattern.matrix = matrix; + } + + return pattern; + } + + shadingFill(objId) { + if (!this.contentVisible) { + return; + } + + const ctx = this.ctx; + this.save(); + + const pattern = this._getPattern(objId); + + ctx.fillStyle = pattern.getPattern(ctx, this, ctx.mozCurrentTransformInverse, _pattern_helper.PathType.SHADING); + const inv = ctx.mozCurrentTransformInverse; + + if (inv) { + const canvas = ctx.canvas; + const width = canvas.width; + const height = canvas.height; + + const bl = _util.Util.applyTransform([0, 0], inv); + + const br = _util.Util.applyTransform([0, height], inv); + + const ul = _util.Util.applyTransform([width, 0], inv); + + const ur = _util.Util.applyTransform([width, height], inv); + + const x0 = Math.min(bl[0], br[0], ul[0], ur[0]); + const y0 = Math.min(bl[1], br[1], ul[1], ur[1]); + const x1 = Math.max(bl[0], br[0], ul[0], ur[0]); + const y1 = Math.max(bl[1], br[1], ul[1], ur[1]); + this.ctx.fillRect(x0, y0, x1 - x0, y1 - y0); + } else { + this.ctx.fillRect(-1e10, -1e10, 2e10, 2e10); + } + + this.compose(this.current.getClippedPathBoundingBox()); + this.restore(); + } + + beginInlineImage() { + (0, _util.unreachable)("Should not call beginInlineImage"); + } + + beginImageData() { + (0, _util.unreachable)("Should not call beginImageData"); + } + + paintFormXObjectBegin(matrix, bbox) { + if (!this.contentVisible) { + return; + } + + this.save(); + this.baseTransformStack.push(this.baseTransform); + + if (Array.isArray(matrix) && matrix.length === 6) { + this.transform.apply(this, matrix); + } + + this.baseTransform = this.ctx.mozCurrentTransform; + + if (bbox) { + const width = bbox[2] - bbox[0]; + const height = bbox[3] - bbox[1]; + this.ctx.rect(bbox[0], bbox[1], width, height); + this.current.updateRectMinMax(this.ctx.mozCurrentTransform, bbox); + this.clip(); + this.endPath(); + } + } + + paintFormXObjectEnd() { + if (!this.contentVisible) { + return; + } + + this.restore(); + this.baseTransform = this.baseTransformStack.pop(); + } + + beginGroup(group) { + if (!this.contentVisible) { + return; + } + + this.save(); + + if (this.inSMaskMode) { + this.endSMaskMode(); + this.current.activeSMask = null; + } + + const currentCtx = this.ctx; + + if (!group.isolated) { + (0, _util.info)("TODO: Support non-isolated groups."); + } + + if (group.knockout) { + (0, _util.warn)("Knockout groups not supported."); + } + + const currentTransform = currentCtx.mozCurrentTransform; + + if (group.matrix) { + currentCtx.transform.apply(currentCtx, group.matrix); + } + + if (!group.bbox) { + throw new Error("Bounding box is required."); + } + + let bounds = _util.Util.getAxialAlignedBoundingBox(group.bbox, currentCtx.mozCurrentTransform); + + const canvasBounds = [0, 0, currentCtx.canvas.width, currentCtx.canvas.height]; + bounds = _util.Util.intersect(bounds, canvasBounds) || [0, 0, 0, 0]; + const offsetX = Math.floor(bounds[0]); + const offsetY = Math.floor(bounds[1]); + let drawnWidth = Math.max(Math.ceil(bounds[2]) - offsetX, 1); + let drawnHeight = Math.max(Math.ceil(bounds[3]) - offsetY, 1); + let scaleX = 1, + scaleY = 1; + + if (drawnWidth > MAX_GROUP_SIZE) { + scaleX = drawnWidth / MAX_GROUP_SIZE; + drawnWidth = MAX_GROUP_SIZE; + } + + if (drawnHeight > MAX_GROUP_SIZE) { + scaleY = drawnHeight / MAX_GROUP_SIZE; + drawnHeight = MAX_GROUP_SIZE; + } + + this.current.startNewPathAndClipBox([0, 0, drawnWidth, drawnHeight]); + let cacheId = "groupAt" + this.groupLevel; + + if (group.smask) { + cacheId += "_smask_" + this.smaskCounter++ % 2; + } + + const scratchCanvas = this.cachedCanvases.getCanvas(cacheId, drawnWidth, drawnHeight, true); + const groupCtx = scratchCanvas.context; + groupCtx.scale(1 / scaleX, 1 / scaleY); + groupCtx.translate(-offsetX, -offsetY); + groupCtx.transform.apply(groupCtx, currentTransform); + + if (group.smask) { + this.smaskStack.push({ + canvas: scratchCanvas.canvas, + context: groupCtx, + offsetX, + offsetY, + scaleX, + scaleY, + subtype: group.smask.subtype, + backdrop: group.smask.backdrop, + transferMap: group.smask.transferMap || null, + startTransformInverse: null + }); + } else { + currentCtx.setTransform(1, 0, 0, 1, 0, 0); + currentCtx.translate(offsetX, offsetY); + currentCtx.scale(scaleX, scaleY); + currentCtx.save(); + } + + copyCtxState(currentCtx, groupCtx); + this.ctx = groupCtx; + this.setGState([["BM", "source-over"], ["ca", 1], ["CA", 1]]); + this.groupStack.push(currentCtx); + this.groupLevel++; + } + + endGroup(group) { + if (!this.contentVisible) { + return; + } + + this.groupLevel--; + const groupCtx = this.ctx; + const ctx = this.groupStack.pop(); + this.ctx = ctx; + this.ctx.imageSmoothingEnabled = false; + + if (group.smask) { + this.tempSMask = this.smaskStack.pop(); + this.restore(); + } else { + this.ctx.restore(); + const currentMtx = this.ctx.mozCurrentTransform; + this.restore(); + this.ctx.save(); + this.ctx.setTransform.apply(this.ctx, currentMtx); + + const dirtyBox = _util.Util.getAxialAlignedBoundingBox([0, 0, groupCtx.canvas.width, groupCtx.canvas.height], currentMtx); + + this.ctx.drawImage(groupCtx.canvas, 0, 0); + this.ctx.restore(); + this.compose(dirtyBox); + } + } + + beginAnnotations() { + this.save(); + + if (this.baseTransform) { + this.ctx.setTransform.apply(this.ctx, this.baseTransform); + } + } + + endAnnotations() { + this.restore(); + } + + beginAnnotation(id, rect, transform, matrix, hasOwnCanvas) { + this.save(); + + if (Array.isArray(rect) && rect.length === 4) { + const width = rect[2] - rect[0]; + const height = rect[3] - rect[1]; + + if (hasOwnCanvas && this.annotationCanvasMap) { + transform = transform.slice(); + transform[4] -= rect[0]; + transform[5] -= rect[1]; + rect = rect.slice(); + rect[0] = rect[1] = 0; + rect[2] = width; + rect[3] = height; + + const [scaleX, scaleY] = _util.Util.singularValueDecompose2dScale(this.ctx.mozCurrentTransform); + + const { + viewportScale + } = this; + const canvasWidth = Math.ceil(width * this.outputScaleX * viewportScale); + const canvasHeight = Math.ceil(height * this.outputScaleY * viewportScale); + this.annotationCanvas = this.canvasFactory.create(canvasWidth, canvasHeight); + const { + canvas, + context + } = this.annotationCanvas; + const viewportScaleFactorStr = `var(--zoom-factor) * ${_display_utils.PixelsPerInch.PDF_TO_CSS_UNITS}`; + canvas.style.width = `calc(${width}px * ${viewportScaleFactorStr})`; + canvas.style.height = `calc(${height}px * ${viewportScaleFactorStr})`; + this.annotationCanvasMap.set(id, canvas); + this.annotationCanvas.savedCtx = this.ctx; + this.ctx = context; + this.ctx.setTransform(scaleX, 0, 0, -scaleY, 0, height * scaleY); + addContextCurrentTransform(this.ctx); + resetCtxToDefault(this.ctx, this.foregroundColor); + } else { + resetCtxToDefault(this.ctx, this.foregroundColor); + this.ctx.rect(rect[0], rect[1], width, height); + this.ctx.clip(); + this.endPath(); + } + } + + this.current = new CanvasExtraState(this.ctx.canvas.width, this.ctx.canvas.height); + this.transform.apply(this, transform); + this.transform.apply(this, matrix); + } + + endAnnotation() { + if (this.annotationCanvas) { + this.ctx = this.annotationCanvas.savedCtx; + delete this.annotationCanvas.savedCtx; + delete this.annotationCanvas; + } + + this.restore(); + } + + paintImageMaskXObject(img) { + if (!this.contentVisible) { + return; + } + + const count = img.count; + img = this.getObject(img.data, img); + img.count = count; + const ctx = this.ctx; + const glyph = this.processingType3; + + if (glyph) { + if (glyph.compiled === undefined) { + glyph.compiled = compileType3Glyph(img); + } + + if (glyph.compiled) { + glyph.compiled(ctx); + return; + } + } + + const mask = this._createMaskCanvas(img); + + const maskCanvas = mask.canvas; + ctx.save(); + ctx.setTransform(1, 0, 0, 1, 0, 0); + ctx.drawImage(maskCanvas, mask.offsetX, mask.offsetY); + ctx.restore(); + this.compose(); + } + + paintImageMaskXObjectRepeat(img, scaleX, skewX = 0, skewY = 0, scaleY, positions) { + if (!this.contentVisible) { + return; + } + + img = this.getObject(img.data, img); + const ctx = this.ctx; + ctx.save(); + const currentTransform = ctx.mozCurrentTransform; + ctx.transform(scaleX, skewX, skewY, scaleY, 0, 0); + + const mask = this._createMaskCanvas(img); + + ctx.setTransform(1, 0, 0, 1, 0, 0); + + for (let i = 0, ii = positions.length; i < ii; i += 2) { + const trans = _util.Util.transform(currentTransform, [scaleX, skewX, skewY, scaleY, positions[i], positions[i + 1]]); + + const [x, y] = _util.Util.applyTransform([0, 0], trans); + + ctx.drawImage(mask.canvas, x, y); + } + + ctx.restore(); + this.compose(); + } + + paintImageMaskXObjectGroup(images) { + if (!this.contentVisible) { + return; + } + + const ctx = this.ctx; + const fillColor = this.current.fillColor; + const isPatternFill = this.current.patternFill; + + for (let i = 0, ii = images.length; i < ii; i++) { + const image = images[i]; + const width = image.width, + height = image.height; + const maskCanvas = this.cachedCanvases.getCanvas("maskCanvas", width, height, false); + const maskCtx = maskCanvas.context; + maskCtx.save(); + putBinaryImageMask(maskCtx, image); + maskCtx.globalCompositeOperation = "source-in"; + maskCtx.fillStyle = isPatternFill ? fillColor.getPattern(maskCtx, this, ctx.mozCurrentTransformInverse, _pattern_helper.PathType.FILL) : fillColor; + maskCtx.fillRect(0, 0, width, height); + maskCtx.restore(); + ctx.save(); + ctx.transform.apply(ctx, image.transform); + ctx.scale(1, -1); + drawImageAtIntegerCoords(ctx, maskCanvas.canvas, 0, 0, width, height, 0, -1, 1, 1); + ctx.restore(); + } + + this.compose(); + } + + paintImageXObject(objId) { + if (!this.contentVisible) { + return; + } + + const imgData = this.getObject(objId); + + if (!imgData) { + (0, _util.warn)("Dependent image isn't ready yet"); + return; + } + + this.paintInlineImageXObject(imgData); + } + + paintImageXObjectRepeat(objId, scaleX, scaleY, positions) { + if (!this.contentVisible) { + return; + } + + const imgData = this.getObject(objId); + + if (!imgData) { + (0, _util.warn)("Dependent image isn't ready yet"); + return; + } + + const width = imgData.width; + const height = imgData.height; + const map = []; + + for (let i = 0, ii = positions.length; i < ii; i += 2) { + map.push({ + transform: [scaleX, 0, 0, scaleY, positions[i], positions[i + 1]], + x: 0, + y: 0, + w: width, + h: height + }); + } + + this.paintInlineImageXObjectGroup(imgData, map); + } + + paintInlineImageXObject(imgData) { + if (!this.contentVisible) { + return; + } + + const width = imgData.width; + const height = imgData.height; + const ctx = this.ctx; + this.save(); + ctx.scale(1 / width, -1 / height); + let imgToPaint; + + if (typeof HTMLElement === "function" && imgData instanceof HTMLElement || !imgData.data) { + imgToPaint = imgData; + } else { + const tmpCanvas = this.cachedCanvases.getCanvas("inlineImage", width, height, false); + const tmpCtx = tmpCanvas.context; + putBinaryImageData(tmpCtx, imgData, this.current.transferMaps); + imgToPaint = tmpCanvas.canvas; + } + + const scaled = this._scaleImage(imgToPaint, ctx.mozCurrentTransformInverse); + + ctx.imageSmoothingEnabled = getImageSmoothingEnabled(ctx.mozCurrentTransform, imgData.interpolate); + const [rWidth, rHeight] = drawImageAtIntegerCoords(ctx, scaled.img, 0, 0, scaled.paintWidth, scaled.paintHeight, 0, -height, width, height); + + if (this.imageLayer) { + const position = this.getCanvasPosition(0, -height); + this.imageLayer.appendImage({ + imgData, + left: position[0], + top: position[1], + width: rWidth, + height: rHeight + }); + } + + this.compose(); + this.restore(); + } + + paintInlineImageXObjectGroup(imgData, map) { + if (!this.contentVisible) { + return; + } + + const ctx = this.ctx; + const w = imgData.width; + const h = imgData.height; + const tmpCanvas = this.cachedCanvases.getCanvas("inlineImage", w, h, false); + const tmpCtx = tmpCanvas.context; + putBinaryImageData(tmpCtx, imgData, this.current.transferMaps); + + for (let i = 0, ii = map.length; i < ii; i++) { + const entry = map[i]; + ctx.save(); + ctx.transform.apply(ctx, entry.transform); + ctx.scale(1, -1); + drawImageAtIntegerCoords(ctx, tmpCanvas.canvas, entry.x, entry.y, entry.w, entry.h, 0, -1, 1, 1); + + if (this.imageLayer) { + const position = this.getCanvasPosition(entry.x, entry.y); + this.imageLayer.appendImage({ + imgData, + left: position[0], + top: position[1], + width: w, + height: h + }); + } + + ctx.restore(); + } + + this.compose(); + } + + paintSolidColorImageMask() { + if (!this.contentVisible) { + return; + } + + this.ctx.fillRect(0, 0, 1, 1); + this.compose(); + } + + markPoint(tag) {} + + markPointProps(tag, properties) {} + + beginMarkedContent(tag) { + this.markedContentStack.push({ + visible: true + }); + } + + beginMarkedContentProps(tag, properties) { + if (tag === "OC") { + this.markedContentStack.push({ + visible: this.optionalContentConfig.isVisible(properties) + }); + } else { + this.markedContentStack.push({ + visible: true + }); + } + + this.contentVisible = this.isContentVisible(); + } + + endMarkedContent() { + this.markedContentStack.pop(); + this.contentVisible = this.isContentVisible(); + } + + beginCompat() {} + + endCompat() {} + + consumePath(clipBox) { + const isEmpty = this.current.isEmptyClip(); + + if (this.pendingClip) { + this.current.updateClipFromPath(); + } + + if (!this.pendingClip) { + this.compose(clipBox); + } + + const ctx = this.ctx; + + if (this.pendingClip) { + if (!isEmpty) { + if (this.pendingClip === EO_CLIP) { + ctx.clip("evenodd"); + } else { + ctx.clip(); + } + } + + this.pendingClip = null; + } + + this.current.startNewPathAndClipBox(this.current.clipBox); + ctx.beginPath(); + } + + getSinglePixelWidth() { + if (!this._cachedGetSinglePixelWidth) { + const m = this.ctx.mozCurrentTransform; + + if (m[1] === 0 && m[2] === 0) { + this._cachedGetSinglePixelWidth = 1 / Math.min(Math.abs(m[0]), Math.abs(m[3])); + } else { + const absDet = Math.abs(m[0] * m[3] - m[2] * m[1]); + const normX = Math.hypot(m[0], m[2]); + const normY = Math.hypot(m[1], m[3]); + this._cachedGetSinglePixelWidth = Math.max(normX, normY) / absDet; + } + } + + return this._cachedGetSinglePixelWidth; + } + + getScaleForStroking() { + if (!this._cachedScaleForStroking) { + const { + lineWidth + } = this.current; + const m = this.ctx.mozCurrentTransform; + let scaleX, scaleY; + + if (m[1] === 0 && m[2] === 0) { + const normX = Math.abs(m[0]); + const normY = Math.abs(m[3]); + + if (lineWidth === 0) { + scaleX = 1 / normX; + scaleY = 1 / normY; + } else { + const scaledXLineWidth = normX * lineWidth; + const scaledYLineWidth = normY * lineWidth; + scaleX = scaledXLineWidth < 1 ? 1 / scaledXLineWidth : 1; + scaleY = scaledYLineWidth < 1 ? 1 / scaledYLineWidth : 1; + } + } else { + const absDet = Math.abs(m[0] * m[3] - m[2] * m[1]); + const normX = Math.hypot(m[0], m[1]); + const normY = Math.hypot(m[2], m[3]); + + if (lineWidth === 0) { + scaleX = normY / absDet; + scaleY = normX / absDet; + } else { + const baseArea = lineWidth * absDet; + scaleX = normY > baseArea ? normY / baseArea : 1; + scaleY = normX > baseArea ? normX / baseArea : 1; + } + } + + this._cachedScaleForStroking = [scaleX, scaleY]; + } + + return this._cachedScaleForStroking; + } + + rescaleAndStroke(saveRestore) { + const { + ctx + } = this; + const { + lineWidth + } = this.current; + const [scaleX, scaleY] = this.getScaleForStroking(); + ctx.lineWidth = lineWidth || 1; + + if (scaleX === 1 && scaleY === 1) { + ctx.stroke(); + return; + } + + let savedMatrix, savedDashes, savedDashOffset; + + if (saveRestore) { + savedMatrix = ctx.mozCurrentTransform.slice(); + savedDashes = ctx.getLineDash().slice(); + savedDashOffset = ctx.lineDashOffset; + } + + ctx.scale(scaleX, scaleY); + const scale = Math.max(scaleX, scaleY); + ctx.setLineDash(ctx.getLineDash().map(x => x / scale)); + ctx.lineDashOffset /= scale; + ctx.stroke(); + + if (saveRestore) { + ctx.setTransform(...savedMatrix); + ctx.setLineDash(savedDashes); + ctx.lineDashOffset = savedDashOffset; + } + } + + getCanvasPosition(x, y) { + const transform = this.ctx.mozCurrentTransform; + return [transform[0] * x + transform[2] * y + transform[4], transform[1] * x + transform[3] * y + transform[5]]; + } + + isContentVisible() { + for (let i = this.markedContentStack.length - 1; i >= 0; i--) { + if (!this.markedContentStack[i].visible) { + return false; + } + } + + return true; + } + +} + +exports.CanvasGraphics = CanvasGraphics; + +for (const op in _util.OPS) { + if (CanvasGraphics.prototype[op] !== undefined) { + CanvasGraphics.prototype[_util.OPS[op]] = CanvasGraphics.prototype[op]; + } +} + +/***/ }), +/* 11 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.TilingPattern = exports.PathType = void 0; +exports.getShadingPattern = getShadingPattern; + +var _util = __w_pdfjs_require__(1); + +var _is_node = __w_pdfjs_require__(3); + +const PathType = { + FILL: "Fill", + STROKE: "Stroke", + SHADING: "Shading" +}; +exports.PathType = PathType; + +function applyBoundingBox(ctx, bbox) { + if (!bbox || _is_node.isNodeJS) { + return; + } + + const width = bbox[2] - bbox[0]; + const height = bbox[3] - bbox[1]; + const region = new Path2D(); + region.rect(bbox[0], bbox[1], width, height); + ctx.clip(region); +} + +class BaseShadingPattern { + constructor() { + if (this.constructor === BaseShadingPattern) { + (0, _util.unreachable)("Cannot initialize BaseShadingPattern."); + } + } + + getPattern() { + (0, _util.unreachable)("Abstract method `getPattern` called."); + } + +} + +class RadialAxialShadingPattern extends BaseShadingPattern { + constructor(IR) { + super(); + this._type = IR[1]; + this._bbox = IR[2]; + this._colorStops = IR[3]; + this._p0 = IR[4]; + this._p1 = IR[5]; + this._r0 = IR[6]; + this._r1 = IR[7]; + this.matrix = null; + } + + _createGradient(ctx) { + let grad; + + if (this._type === "axial") { + grad = ctx.createLinearGradient(this._p0[0], this._p0[1], this._p1[0], this._p1[1]); + } else if (this._type === "radial") { + grad = ctx.createRadialGradient(this._p0[0], this._p0[1], this._r0, this._p1[0], this._p1[1], this._r1); + } + + for (const colorStop of this._colorStops) { + grad.addColorStop(colorStop[0], colorStop[1]); + } + + return grad; + } + + getPattern(ctx, owner, inverse, pathType) { + let pattern; + + if (pathType === PathType.STROKE || pathType === PathType.FILL) { + const ownerBBox = owner.current.getClippedPathBoundingBox(pathType, ctx.mozCurrentTransform) || [0, 0, 0, 0]; + const width = Math.ceil(ownerBBox[2] - ownerBBox[0]) || 1; + const height = Math.ceil(ownerBBox[3] - ownerBBox[1]) || 1; + const tmpCanvas = owner.cachedCanvases.getCanvas("pattern", width, height, true); + const tmpCtx = tmpCanvas.context; + tmpCtx.clearRect(0, 0, tmpCtx.canvas.width, tmpCtx.canvas.height); + tmpCtx.beginPath(); + tmpCtx.rect(0, 0, tmpCtx.canvas.width, tmpCtx.canvas.height); + tmpCtx.translate(-ownerBBox[0], -ownerBBox[1]); + inverse = _util.Util.transform(inverse, [1, 0, 0, 1, ownerBBox[0], ownerBBox[1]]); + tmpCtx.transform.apply(tmpCtx, owner.baseTransform); + + if (this.matrix) { + tmpCtx.transform.apply(tmpCtx, this.matrix); + } + + applyBoundingBox(tmpCtx, this._bbox); + tmpCtx.fillStyle = this._createGradient(tmpCtx); + tmpCtx.fill(); + pattern = ctx.createPattern(tmpCanvas.canvas, "no-repeat"); + const domMatrix = new DOMMatrix(inverse); + + try { + pattern.setTransform(domMatrix); + } catch (ex) { + (0, _util.warn)(`RadialAxialShadingPattern.getPattern: "${ex?.message}".`); + } + } else { + applyBoundingBox(ctx, this._bbox); + pattern = this._createGradient(ctx); + } + + return pattern; + } + +} + +function drawTriangle(data, context, p1, p2, p3, c1, c2, c3) { + const coords = context.coords, + colors = context.colors; + const bytes = data.data, + rowSize = data.width * 4; + let tmp; + + if (coords[p1 + 1] > coords[p2 + 1]) { + tmp = p1; + p1 = p2; + p2 = tmp; + tmp = c1; + c1 = c2; + c2 = tmp; + } + + if (coords[p2 + 1] > coords[p3 + 1]) { + tmp = p2; + p2 = p3; + p3 = tmp; + tmp = c2; + c2 = c3; + c3 = tmp; + } + + if (coords[p1 + 1] > coords[p2 + 1]) { + tmp = p1; + p1 = p2; + p2 = tmp; + tmp = c1; + c1 = c2; + c2 = tmp; + } + + const x1 = (coords[p1] + context.offsetX) * context.scaleX; + const y1 = (coords[p1 + 1] + context.offsetY) * context.scaleY; + const x2 = (coords[p2] + context.offsetX) * context.scaleX; + const y2 = (coords[p2 + 1] + context.offsetY) * context.scaleY; + const x3 = (coords[p3] + context.offsetX) * context.scaleX; + const y3 = (coords[p3 + 1] + context.offsetY) * context.scaleY; + + if (y1 >= y3) { + return; + } + + const c1r = colors[c1], + c1g = colors[c1 + 1], + c1b = colors[c1 + 2]; + const c2r = colors[c2], + c2g = colors[c2 + 1], + c2b = colors[c2 + 2]; + const c3r = colors[c3], + c3g = colors[c3 + 1], + c3b = colors[c3 + 2]; + const minY = Math.round(y1), + maxY = Math.round(y3); + let xa, car, cag, cab; + let xb, cbr, cbg, cbb; + + for (let y = minY; y <= maxY; y++) { + if (y < y2) { + let k; + + if (y < y1) { + k = 0; + } else { + k = (y1 - y) / (y1 - y2); + } + + xa = x1 - (x1 - x2) * k; + car = c1r - (c1r - c2r) * k; + cag = c1g - (c1g - c2g) * k; + cab = c1b - (c1b - c2b) * k; + } else { + let k; + + if (y > y3) { + k = 1; + } else if (y2 === y3) { + k = 0; + } else { + k = (y2 - y) / (y2 - y3); + } + + xa = x2 - (x2 - x3) * k; + car = c2r - (c2r - c3r) * k; + cag = c2g - (c2g - c3g) * k; + cab = c2b - (c2b - c3b) * k; + } + + let k; + + if (y < y1) { + k = 0; + } else if (y > y3) { + k = 1; + } else { + k = (y1 - y) / (y1 - y3); + } + + xb = x1 - (x1 - x3) * k; + cbr = c1r - (c1r - c3r) * k; + cbg = c1g - (c1g - c3g) * k; + cbb = c1b - (c1b - c3b) * k; + const x1_ = Math.round(Math.min(xa, xb)); + const x2_ = Math.round(Math.max(xa, xb)); + let j = rowSize * y + x1_ * 4; + + for (let x = x1_; x <= x2_; x++) { + k = (xa - x) / (xa - xb); + + if (k < 0) { + k = 0; + } else if (k > 1) { + k = 1; + } + + bytes[j++] = car - (car - cbr) * k | 0; + bytes[j++] = cag - (cag - cbg) * k | 0; + bytes[j++] = cab - (cab - cbb) * k | 0; + bytes[j++] = 255; + } + } +} + +function drawFigure(data, figure, context) { + const ps = figure.coords; + const cs = figure.colors; + let i, ii; + + switch (figure.type) { + case "lattice": + const verticesPerRow = figure.verticesPerRow; + const rows = Math.floor(ps.length / verticesPerRow) - 1; + const cols = verticesPerRow - 1; + + for (i = 0; i < rows; i++) { + let q = i * verticesPerRow; + + for (let j = 0; j < cols; j++, q++) { + drawTriangle(data, context, ps[q], ps[q + 1], ps[q + verticesPerRow], cs[q], cs[q + 1], cs[q + verticesPerRow]); + drawTriangle(data, context, ps[q + verticesPerRow + 1], ps[q + 1], ps[q + verticesPerRow], cs[q + verticesPerRow + 1], cs[q + 1], cs[q + verticesPerRow]); + } + } + + break; + + case "triangles": + for (i = 0, ii = ps.length; i < ii; i += 3) { + drawTriangle(data, context, ps[i], ps[i + 1], ps[i + 2], cs[i], cs[i + 1], cs[i + 2]); + } + + break; + + default: + throw new Error("illegal figure"); + } +} + +class MeshShadingPattern extends BaseShadingPattern { + constructor(IR) { + super(); + this._coords = IR[2]; + this._colors = IR[3]; + this._figures = IR[4]; + this._bounds = IR[5]; + this._bbox = IR[7]; + this._background = IR[8]; + this.matrix = null; + } + + _createMeshCanvas(combinedScale, backgroundColor, cachedCanvases) { + const EXPECTED_SCALE = 1.1; + const MAX_PATTERN_SIZE = 3000; + const BORDER_SIZE = 2; + const offsetX = Math.floor(this._bounds[0]); + const offsetY = Math.floor(this._bounds[1]); + const boundsWidth = Math.ceil(this._bounds[2]) - offsetX; + const boundsHeight = Math.ceil(this._bounds[3]) - offsetY; + const width = Math.min(Math.ceil(Math.abs(boundsWidth * combinedScale[0] * EXPECTED_SCALE)), MAX_PATTERN_SIZE); + const height = Math.min(Math.ceil(Math.abs(boundsHeight * combinedScale[1] * EXPECTED_SCALE)), MAX_PATTERN_SIZE); + const scaleX = boundsWidth / width; + const scaleY = boundsHeight / height; + const context = { + coords: this._coords, + colors: this._colors, + offsetX: -offsetX, + offsetY: -offsetY, + scaleX: 1 / scaleX, + scaleY: 1 / scaleY + }; + const paddedWidth = width + BORDER_SIZE * 2; + const paddedHeight = height + BORDER_SIZE * 2; + const tmpCanvas = cachedCanvases.getCanvas("mesh", paddedWidth, paddedHeight, false); + const tmpCtx = tmpCanvas.context; + const data = tmpCtx.createImageData(width, height); + + if (backgroundColor) { + const bytes = data.data; + + for (let i = 0, ii = bytes.length; i < ii; i += 4) { + bytes[i] = backgroundColor[0]; + bytes[i + 1] = backgroundColor[1]; + bytes[i + 2] = backgroundColor[2]; + bytes[i + 3] = 255; + } + } + + for (const figure of this._figures) { + drawFigure(data, figure, context); + } + + tmpCtx.putImageData(data, BORDER_SIZE, BORDER_SIZE); + const canvas = tmpCanvas.canvas; + return { + canvas, + offsetX: offsetX - BORDER_SIZE * scaleX, + offsetY: offsetY - BORDER_SIZE * scaleY, + scaleX, + scaleY + }; + } + + getPattern(ctx, owner, inverse, pathType) { + applyBoundingBox(ctx, this._bbox); + let scale; + + if (pathType === PathType.SHADING) { + scale = _util.Util.singularValueDecompose2dScale(ctx.mozCurrentTransform); + } else { + scale = _util.Util.singularValueDecompose2dScale(owner.baseTransform); + + if (this.matrix) { + const matrixScale = _util.Util.singularValueDecompose2dScale(this.matrix); + + scale = [scale[0] * matrixScale[0], scale[1] * matrixScale[1]]; + } + } + + const temporaryPatternCanvas = this._createMeshCanvas(scale, pathType === PathType.SHADING ? null : this._background, owner.cachedCanvases); + + if (pathType !== PathType.SHADING) { + ctx.setTransform.apply(ctx, owner.baseTransform); + + if (this.matrix) { + ctx.transform.apply(ctx, this.matrix); + } + } + + ctx.translate(temporaryPatternCanvas.offsetX, temporaryPatternCanvas.offsetY); + ctx.scale(temporaryPatternCanvas.scaleX, temporaryPatternCanvas.scaleY); + return ctx.createPattern(temporaryPatternCanvas.canvas, "no-repeat"); + } + +} + +class DummyShadingPattern extends BaseShadingPattern { + getPattern() { + return "hotpink"; + } + +} + +function getShadingPattern(IR) { + switch (IR[0]) { + case "RadialAxial": + return new RadialAxialShadingPattern(IR); + + case "Mesh": + return new MeshShadingPattern(IR); + + case "Dummy": + return new DummyShadingPattern(); + } + + throw new Error(`Unknown IR type: ${IR[0]}`); +} + +const PaintType = { + COLORED: 1, + UNCOLORED: 2 +}; + +class TilingPattern { + static get MAX_PATTERN_SIZE() { + return (0, _util.shadow)(this, "MAX_PATTERN_SIZE", 3000); + } + + constructor(IR, color, ctx, canvasGraphicsFactory, baseTransform) { + this.operatorList = IR[2]; + this.matrix = IR[3] || [1, 0, 0, 1, 0, 0]; + this.bbox = IR[4]; + this.xstep = IR[5]; + this.ystep = IR[6]; + this.paintType = IR[7]; + this.tilingType = IR[8]; + this.color = color; + this.ctx = ctx; + this.canvasGraphicsFactory = canvasGraphicsFactory; + this.baseTransform = baseTransform; + } + + createPatternCanvas(owner) { + const operatorList = this.operatorList; + const bbox = this.bbox; + const xstep = this.xstep; + const ystep = this.ystep; + const paintType = this.paintType; + const tilingType = this.tilingType; + const color = this.color; + const canvasGraphicsFactory = this.canvasGraphicsFactory; + (0, _util.info)("TilingType: " + tilingType); + const x0 = bbox[0], + y0 = bbox[1], + x1 = bbox[2], + y1 = bbox[3]; + + const matrixScale = _util.Util.singularValueDecompose2dScale(this.matrix); + + const curMatrixScale = _util.Util.singularValueDecompose2dScale(this.baseTransform); + + const combinedScale = [matrixScale[0] * curMatrixScale[0], matrixScale[1] * curMatrixScale[1]]; + const dimx = this.getSizeAndScale(xstep, this.ctx.canvas.width, combinedScale[0]); + const dimy = this.getSizeAndScale(ystep, this.ctx.canvas.height, combinedScale[1]); + const tmpCanvas = owner.cachedCanvases.getCanvas("pattern", dimx.size, dimy.size, true); + const tmpCtx = tmpCanvas.context; + const graphics = canvasGraphicsFactory.createCanvasGraphics(tmpCtx); + graphics.groupLevel = owner.groupLevel; + this.setFillAndStrokeStyleToContext(graphics, paintType, color); + let adjustedX0 = x0; + let adjustedY0 = y0; + let adjustedX1 = x1; + let adjustedY1 = y1; + + if (x0 < 0) { + adjustedX0 = 0; + adjustedX1 += Math.abs(x0); + } + + if (y0 < 0) { + adjustedY0 = 0; + adjustedY1 += Math.abs(y0); + } + + tmpCtx.translate(-(dimx.scale * adjustedX0), -(dimy.scale * adjustedY0)); + graphics.transform(dimx.scale, 0, 0, dimy.scale, 0, 0); + tmpCtx.save(); + this.clipBbox(graphics, adjustedX0, adjustedY0, adjustedX1, adjustedY1); + graphics.baseTransform = graphics.ctx.mozCurrentTransform.slice(); + graphics.executeOperatorList(operatorList); + graphics.endDrawing(); + return { + canvas: tmpCanvas.canvas, + scaleX: dimx.scale, + scaleY: dimy.scale, + offsetX: adjustedX0, + offsetY: adjustedY0 + }; + } + + getSizeAndScale(step, realOutputSize, scale) { + step = Math.abs(step); + const maxSize = Math.max(TilingPattern.MAX_PATTERN_SIZE, realOutputSize); + let size = Math.ceil(step * scale); + + if (size >= maxSize) { + size = maxSize; + } else { + scale = size / step; + } + + return { + scale, + size + }; + } + + clipBbox(graphics, x0, y0, x1, y1) { + const bboxWidth = x1 - x0; + const bboxHeight = y1 - y0; + graphics.ctx.rect(x0, y0, bboxWidth, bboxHeight); + graphics.current.updateRectMinMax(graphics.ctx.mozCurrentTransform, [x0, y0, x1, y1]); + graphics.clip(); + graphics.endPath(); + } + + setFillAndStrokeStyleToContext(graphics, paintType, color) { + const context = graphics.ctx, + current = graphics.current; + + switch (paintType) { + case PaintType.COLORED: + const ctx = this.ctx; + context.fillStyle = ctx.fillStyle; + context.strokeStyle = ctx.strokeStyle; + current.fillColor = ctx.fillStyle; + current.strokeColor = ctx.strokeStyle; + break; + + case PaintType.UNCOLORED: + const cssColor = _util.Util.makeHexColor(color[0], color[1], color[2]); + + context.fillStyle = cssColor; + context.strokeStyle = cssColor; + current.fillColor = cssColor; + current.strokeColor = cssColor; + break; + + default: + throw new _util.FormatError(`Unsupported paint type: ${paintType}`); + } + } + + getPattern(ctx, owner, inverse, pathType) { + let matrix = inverse; + + if (pathType !== PathType.SHADING) { + matrix = _util.Util.transform(matrix, owner.baseTransform); + + if (this.matrix) { + matrix = _util.Util.transform(matrix, this.matrix); + } + } + + const temporaryPatternCanvas = this.createPatternCanvas(owner); + let domMatrix = new DOMMatrix(matrix); + domMatrix = domMatrix.translate(temporaryPatternCanvas.offsetX, temporaryPatternCanvas.offsetY); + domMatrix = domMatrix.scale(1 / temporaryPatternCanvas.scaleX, 1 / temporaryPatternCanvas.scaleY); + const pattern = ctx.createPattern(temporaryPatternCanvas.canvas, "repeat"); + + try { + pattern.setTransform(domMatrix); + } catch (ex) { + (0, _util.warn)(`TilingPattern.getPattern: "${ex?.message}".`); + } + + return pattern; + } + +} + +exports.TilingPattern = TilingPattern; + +/***/ }), +/* 12 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.applyMaskImageData = applyMaskImageData; + +var _util = __w_pdfjs_require__(1); + +function applyMaskImageData({ + src, + srcPos = 0, + dest, + destPos = 0, + width, + height, + inverseDecode = false +}) { + const opaque = _util.FeatureTest.isLittleEndian ? 0xff000000 : 0x000000ff; + const [zeroMapping, oneMapping] = !inverseDecode ? [opaque, 0] : [0, opaque]; + const widthInSource = width >> 3; + const widthRemainder = width & 7; + const srcLength = src.length; + dest = new Uint32Array(dest.buffer); + + for (let i = 0; i < height; i++) { + for (const max = srcPos + widthInSource; srcPos < max; srcPos++) { + const elem = srcPos < srcLength ? src[srcPos] : 255; + dest[destPos++] = elem & 0b10000000 ? oneMapping : zeroMapping; + dest[destPos++] = elem & 0b1000000 ? oneMapping : zeroMapping; + dest[destPos++] = elem & 0b100000 ? oneMapping : zeroMapping; + dest[destPos++] = elem & 0b10000 ? oneMapping : zeroMapping; + dest[destPos++] = elem & 0b1000 ? oneMapping : zeroMapping; + dest[destPos++] = elem & 0b100 ? oneMapping : zeroMapping; + dest[destPos++] = elem & 0b10 ? oneMapping : zeroMapping; + dest[destPos++] = elem & 0b1 ? oneMapping : zeroMapping; + } + + if (widthRemainder === 0) { + continue; + } + + const elem = srcPos < srcLength ? src[srcPos++] : 255; + + for (let j = 0; j < widthRemainder; j++) { + dest[destPos++] = elem & 1 << 7 - j ? oneMapping : zeroMapping; + } + } + + return { + srcPos, + destPos + }; +} + +/***/ }), +/* 13 */ +/***/ ((__unused_webpack_module, exports) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.GlobalWorkerOptions = void 0; +const GlobalWorkerOptions = Object.create(null); +exports.GlobalWorkerOptions = GlobalWorkerOptions; +GlobalWorkerOptions.workerPort = GlobalWorkerOptions.workerPort === undefined ? null : GlobalWorkerOptions.workerPort; +GlobalWorkerOptions.workerSrc = GlobalWorkerOptions.workerSrc === undefined ? "" : GlobalWorkerOptions.workerSrc; + +/***/ }), +/* 14 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.MessageHandler = void 0; + +var _util = __w_pdfjs_require__(1); + +const CallbackKind = { + UNKNOWN: 0, + DATA: 1, + ERROR: 2 +}; +const StreamKind = { + UNKNOWN: 0, + CANCEL: 1, + CANCEL_COMPLETE: 2, + CLOSE: 3, + ENQUEUE: 4, + ERROR: 5, + PULL: 6, + PULL_COMPLETE: 7, + START_COMPLETE: 8 +}; + +function wrapReason(reason) { + if (!(reason instanceof Error || typeof reason === "object" && reason !== null)) { + (0, _util.unreachable)('wrapReason: Expected "reason" to be a (possibly cloned) Error.'); + } + + switch (reason.name) { + case "AbortException": + return new _util.AbortException(reason.message); + + case "MissingPDFException": + return new _util.MissingPDFException(reason.message); + + case "PasswordException": + return new _util.PasswordException(reason.message, reason.code); + + case "UnexpectedResponseException": + return new _util.UnexpectedResponseException(reason.message, reason.status); + + case "UnknownErrorException": + return new _util.UnknownErrorException(reason.message, reason.details); + + default: + return new _util.UnknownErrorException(reason.message, reason.toString()); + } +} + +class MessageHandler { + constructor(sourceName, targetName, comObj) { + this.sourceName = sourceName; + this.targetName = targetName; + this.comObj = comObj; + this.callbackId = 1; + this.streamId = 1; + this.streamSinks = Object.create(null); + this.streamControllers = Object.create(null); + this.callbackCapabilities = Object.create(null); + this.actionHandler = Object.create(null); + + this._onComObjOnMessage = event => { + const data = event.data; + + if (data.targetName !== this.sourceName) { + return; + } + + if (data.stream) { + this._processStreamMessage(data); + + return; + } + + if (data.callback) { + const callbackId = data.callbackId; + const capability = this.callbackCapabilities[callbackId]; + + if (!capability) { + throw new Error(`Cannot resolve callback ${callbackId}`); + } + + delete this.callbackCapabilities[callbackId]; + + if (data.callback === CallbackKind.DATA) { + capability.resolve(data.data); + } else if (data.callback === CallbackKind.ERROR) { + capability.reject(wrapReason(data.reason)); + } else { + throw new Error("Unexpected callback case"); + } + + return; + } + + const action = this.actionHandler[data.action]; + + if (!action) { + throw new Error(`Unknown action from worker: ${data.action}`); + } + + if (data.callbackId) { + const cbSourceName = this.sourceName; + const cbTargetName = data.sourceName; + new Promise(function (resolve) { + resolve(action(data.data)); + }).then(function (result) { + comObj.postMessage({ + sourceName: cbSourceName, + targetName: cbTargetName, + callback: CallbackKind.DATA, + callbackId: data.callbackId, + data: result + }); + }, function (reason) { + comObj.postMessage({ + sourceName: cbSourceName, + targetName: cbTargetName, + callback: CallbackKind.ERROR, + callbackId: data.callbackId, + reason: wrapReason(reason) + }); + }); + return; + } + + if (data.streamId) { + this._createStreamSink(data); + + return; + } + + action(data.data); + }; + + comObj.addEventListener("message", this._onComObjOnMessage); + } + + on(actionName, handler) { + const ah = this.actionHandler; + + if (ah[actionName]) { + throw new Error(`There is already an actionName called "${actionName}"`); + } + + ah[actionName] = handler; + } + + send(actionName, data, transfers) { + this.comObj.postMessage({ + sourceName: this.sourceName, + targetName: this.targetName, + action: actionName, + data + }, transfers); + } + + sendWithPromise(actionName, data, transfers) { + const callbackId = this.callbackId++; + const capability = (0, _util.createPromiseCapability)(); + this.callbackCapabilities[callbackId] = capability; + + try { + this.comObj.postMessage({ + sourceName: this.sourceName, + targetName: this.targetName, + action: actionName, + callbackId, + data + }, transfers); + } catch (ex) { + capability.reject(ex); + } + + return capability.promise; + } + + sendWithStream(actionName, data, queueingStrategy, transfers) { + const streamId = this.streamId++, + sourceName = this.sourceName, + targetName = this.targetName, + comObj = this.comObj; + return new ReadableStream({ + start: controller => { + const startCapability = (0, _util.createPromiseCapability)(); + this.streamControllers[streamId] = { + controller, + startCall: startCapability, + pullCall: null, + cancelCall: null, + isClosed: false + }; + comObj.postMessage({ + sourceName, + targetName, + action: actionName, + streamId, + data, + desiredSize: controller.desiredSize + }, transfers); + return startCapability.promise; + }, + pull: controller => { + const pullCapability = (0, _util.createPromiseCapability)(); + this.streamControllers[streamId].pullCall = pullCapability; + comObj.postMessage({ + sourceName, + targetName, + stream: StreamKind.PULL, + streamId, + desiredSize: controller.desiredSize + }); + return pullCapability.promise; + }, + cancel: reason => { + (0, _util.assert)(reason instanceof Error, "cancel must have a valid reason"); + const cancelCapability = (0, _util.createPromiseCapability)(); + this.streamControllers[streamId].cancelCall = cancelCapability; + this.streamControllers[streamId].isClosed = true; + comObj.postMessage({ + sourceName, + targetName, + stream: StreamKind.CANCEL, + streamId, + reason: wrapReason(reason) + }); + return cancelCapability.promise; + } + }, queueingStrategy); + } + + _createStreamSink(data) { + const streamId = data.streamId, + sourceName = this.sourceName, + targetName = data.sourceName, + comObj = this.comObj; + const self = this, + action = this.actionHandler[data.action]; + const streamSink = { + enqueue(chunk, size = 1, transfers) { + if (this.isCancelled) { + return; + } + + const lastDesiredSize = this.desiredSize; + this.desiredSize -= size; + + if (lastDesiredSize > 0 && this.desiredSize <= 0) { + this.sinkCapability = (0, _util.createPromiseCapability)(); + this.ready = this.sinkCapability.promise; + } + + comObj.postMessage({ + sourceName, + targetName, + stream: StreamKind.ENQUEUE, + streamId, + chunk + }, transfers); + }, + + close() { + if (this.isCancelled) { + return; + } + + this.isCancelled = true; + comObj.postMessage({ + sourceName, + targetName, + stream: StreamKind.CLOSE, + streamId + }); + delete self.streamSinks[streamId]; + }, + + error(reason) { + (0, _util.assert)(reason instanceof Error, "error must have a valid reason"); + + if (this.isCancelled) { + return; + } + + this.isCancelled = true; + comObj.postMessage({ + sourceName, + targetName, + stream: StreamKind.ERROR, + streamId, + reason: wrapReason(reason) + }); + }, + + sinkCapability: (0, _util.createPromiseCapability)(), + onPull: null, + onCancel: null, + isCancelled: false, + desiredSize: data.desiredSize, + ready: null + }; + streamSink.sinkCapability.resolve(); + streamSink.ready = streamSink.sinkCapability.promise; + this.streamSinks[streamId] = streamSink; + new Promise(function (resolve) { + resolve(action(data.data, streamSink)); + }).then(function () { + comObj.postMessage({ + sourceName, + targetName, + stream: StreamKind.START_COMPLETE, + streamId, + success: true + }); + }, function (reason) { + comObj.postMessage({ + sourceName, + targetName, + stream: StreamKind.START_COMPLETE, + streamId, + reason: wrapReason(reason) + }); + }); + } + + _processStreamMessage(data) { + const streamId = data.streamId, + sourceName = this.sourceName, + targetName = data.sourceName, + comObj = this.comObj; + const streamController = this.streamControllers[streamId], + streamSink = this.streamSinks[streamId]; + + switch (data.stream) { + case StreamKind.START_COMPLETE: + if (data.success) { + streamController.startCall.resolve(); + } else { + streamController.startCall.reject(wrapReason(data.reason)); + } + + break; + + case StreamKind.PULL_COMPLETE: + if (data.success) { + streamController.pullCall.resolve(); + } else { + streamController.pullCall.reject(wrapReason(data.reason)); + } + + break; + + case StreamKind.PULL: + if (!streamSink) { + comObj.postMessage({ + sourceName, + targetName, + stream: StreamKind.PULL_COMPLETE, + streamId, + success: true + }); + break; + } + + if (streamSink.desiredSize <= 0 && data.desiredSize > 0) { + streamSink.sinkCapability.resolve(); + } + + streamSink.desiredSize = data.desiredSize; + new Promise(function (resolve) { + resolve(streamSink.onPull && streamSink.onPull()); + }).then(function () { + comObj.postMessage({ + sourceName, + targetName, + stream: StreamKind.PULL_COMPLETE, + streamId, + success: true + }); + }, function (reason) { + comObj.postMessage({ + sourceName, + targetName, + stream: StreamKind.PULL_COMPLETE, + streamId, + reason: wrapReason(reason) + }); + }); + break; + + case StreamKind.ENQUEUE: + (0, _util.assert)(streamController, "enqueue should have stream controller"); + + if (streamController.isClosed) { + break; + } + + streamController.controller.enqueue(data.chunk); + break; + + case StreamKind.CLOSE: + (0, _util.assert)(streamController, "close should have stream controller"); + + if (streamController.isClosed) { + break; + } + + streamController.isClosed = true; + streamController.controller.close(); + + this._deleteStreamController(streamController, streamId); + + break; + + case StreamKind.ERROR: + (0, _util.assert)(streamController, "error should have stream controller"); + streamController.controller.error(wrapReason(data.reason)); + + this._deleteStreamController(streamController, streamId); + + break; + + case StreamKind.CANCEL_COMPLETE: + if (data.success) { + streamController.cancelCall.resolve(); + } else { + streamController.cancelCall.reject(wrapReason(data.reason)); + } + + this._deleteStreamController(streamController, streamId); + + break; + + case StreamKind.CANCEL: + if (!streamSink) { + break; + } + + new Promise(function (resolve) { + resolve(streamSink.onCancel && streamSink.onCancel(wrapReason(data.reason))); + }).then(function () { + comObj.postMessage({ + sourceName, + targetName, + stream: StreamKind.CANCEL_COMPLETE, + streamId, + success: true + }); + }, function (reason) { + comObj.postMessage({ + sourceName, + targetName, + stream: StreamKind.CANCEL_COMPLETE, + streamId, + reason: wrapReason(reason) + }); + }); + streamSink.sinkCapability.reject(wrapReason(data.reason)); + streamSink.isCancelled = true; + delete this.streamSinks[streamId]; + break; + + default: + throw new Error("Unexpected stream case"); + } + } + + async _deleteStreamController(streamController, streamId) { + await Promise.allSettled([streamController.startCall && streamController.startCall.promise, streamController.pullCall && streamController.pullCall.promise, streamController.cancelCall && streamController.cancelCall.promise]); + delete this.streamControllers[streamId]; + } + + destroy() { + this.comObj.removeEventListener("message", this._onComObjOnMessage); + } + +} + +exports.MessageHandler = MessageHandler; + +/***/ }), +/* 15 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.Metadata = void 0; + +var _util = __w_pdfjs_require__(1); + +class Metadata { + #metadataMap; + #data; + + constructor({ + parsedData, + rawData + }) { + this.#metadataMap = parsedData; + this.#data = rawData; + } + + getRaw() { + return this.#data; + } + + get(name) { + return this.#metadataMap.get(name) ?? null; + } + + getAll() { + return (0, _util.objectFromMap)(this.#metadataMap); + } + + has(name) { + return this.#metadataMap.has(name); + } + +} + +exports.Metadata = Metadata; + +/***/ }), +/* 16 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.OptionalContentConfig = void 0; + +var _util = __w_pdfjs_require__(1); + +class OptionalContentGroup { + constructor(name, intent) { + this.visible = true; + this.name = name; + this.intent = intent; + } + +} + +class OptionalContentConfig { + constructor(data) { + this.name = null; + this.creator = null; + this._order = null; + this._groups = new Map(); + + if (data === null) { + return; + } + + this.name = data.name; + this.creator = data.creator; + this._order = data.order; + + for (const group of data.groups) { + this._groups.set(group.id, new OptionalContentGroup(group.name, group.intent)); + } + + if (data.baseState === "OFF") { + for (const group of this._groups) { + group.visible = false; + } + } + + for (const on of data.on) { + this._groups.get(on).visible = true; + } + + for (const off of data.off) { + this._groups.get(off).visible = false; + } + } + + _evaluateVisibilityExpression(array) { + const length = array.length; + + if (length < 2) { + return true; + } + + const operator = array[0]; + + for (let i = 1; i < length; i++) { + const element = array[i]; + let state; + + if (Array.isArray(element)) { + state = this._evaluateVisibilityExpression(element); + } else if (this._groups.has(element)) { + state = this._groups.get(element).visible; + } else { + (0, _util.warn)(`Optional content group not found: ${element}`); + return true; + } + + switch (operator) { + case "And": + if (!state) { + return false; + } + + break; + + case "Or": + if (state) { + return true; + } + + break; + + case "Not": + return !state; + + default: + return true; + } + } + + return operator === "And"; + } + + isVisible(group) { + if (this._groups.size === 0) { + return true; + } + + if (!group) { + (0, _util.warn)("Optional content group not defined."); + return true; + } + + if (group.type === "OCG") { + if (!this._groups.has(group.id)) { + (0, _util.warn)(`Optional content group not found: ${group.id}`); + return true; + } + + return this._groups.get(group.id).visible; + } else if (group.type === "OCMD") { + if (group.expression) { + return this._evaluateVisibilityExpression(group.expression); + } + + if (!group.policy || group.policy === "AnyOn") { + for (const id of group.ids) { + if (!this._groups.has(id)) { + (0, _util.warn)(`Optional content group not found: ${id}`); + return true; + } + + if (this._groups.get(id).visible) { + return true; + } + } + + return false; + } else if (group.policy === "AllOn") { + for (const id of group.ids) { + if (!this._groups.has(id)) { + (0, _util.warn)(`Optional content group not found: ${id}`); + return true; + } + + if (!this._groups.get(id).visible) { + return false; + } + } + + return true; + } else if (group.policy === "AnyOff") { + for (const id of group.ids) { + if (!this._groups.has(id)) { + (0, _util.warn)(`Optional content group not found: ${id}`); + return true; + } + + if (!this._groups.get(id).visible) { + return true; + } + } + + return false; + } else if (group.policy === "AllOff") { + for (const id of group.ids) { + if (!this._groups.has(id)) { + (0, _util.warn)(`Optional content group not found: ${id}`); + return true; + } + + if (this._groups.get(id).visible) { + return false; + } + } + + return true; + } + + (0, _util.warn)(`Unknown optional content policy ${group.policy}.`); + return true; + } + + (0, _util.warn)(`Unknown group type ${group.type}.`); + return true; + } + + setVisibility(id, visible = true) { + if (!this._groups.has(id)) { + (0, _util.warn)(`Optional content group not found: ${id}`); + return; + } + + this._groups.get(id).visible = !!visible; + } + + getOrder() { + if (!this._groups.size) { + return null; + } + + if (this._order) { + return this._order.slice(); + } + + return Array.from(this._groups.keys()); + } + + getGroups() { + return this._groups.size > 0 ? (0, _util.objectFromMap)(this._groups) : null; + } + + getGroup(id) { + return this._groups.get(id) || null; + } + +} + +exports.OptionalContentConfig = OptionalContentConfig; + +/***/ }), +/* 17 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.PDFDataTransportStream = void 0; + +var _util = __w_pdfjs_require__(1); + +var _display_utils = __w_pdfjs_require__(5); + +class PDFDataTransportStream { + constructor(params, pdfDataRangeTransport) { + (0, _util.assert)(pdfDataRangeTransport, 'PDFDataTransportStream - missing required "pdfDataRangeTransport" argument.'); + this._queuedChunks = []; + this._progressiveDone = params.progressiveDone || false; + this._contentDispositionFilename = params.contentDispositionFilename || null; + const initialData = params.initialData; + + if (initialData?.length > 0) { + const buffer = new Uint8Array(initialData).buffer; + + this._queuedChunks.push(buffer); + } + + this._pdfDataRangeTransport = pdfDataRangeTransport; + this._isStreamingSupported = !params.disableStream; + this._isRangeSupported = !params.disableRange; + this._contentLength = params.length; + this._fullRequestReader = null; + this._rangeReaders = []; + + this._pdfDataRangeTransport.addRangeListener((begin, chunk) => { + this._onReceiveData({ + begin, + chunk + }); + }); + + this._pdfDataRangeTransport.addProgressListener((loaded, total) => { + this._onProgress({ + loaded, + total + }); + }); + + this._pdfDataRangeTransport.addProgressiveReadListener(chunk => { + this._onReceiveData({ + chunk + }); + }); + + this._pdfDataRangeTransport.addProgressiveDoneListener(() => { + this._onProgressiveDone(); + }); + + this._pdfDataRangeTransport.transportReady(); + } + + _onReceiveData(args) { + const buffer = new Uint8Array(args.chunk).buffer; + + if (args.begin === undefined) { + if (this._fullRequestReader) { + this._fullRequestReader._enqueue(buffer); + } else { + this._queuedChunks.push(buffer); + } + } else { + const found = this._rangeReaders.some(function (rangeReader) { + if (rangeReader._begin !== args.begin) { + return false; + } + + rangeReader._enqueue(buffer); + + return true; + }); + + (0, _util.assert)(found, "_onReceiveData - no `PDFDataTransportStreamRangeReader` instance found."); + } + } + + get _progressiveDataLength() { + return this._fullRequestReader?._loaded ?? 0; + } + + _onProgress(evt) { + if (evt.total === undefined) { + const firstReader = this._rangeReaders[0]; + + if (firstReader?.onProgress) { + firstReader.onProgress({ + loaded: evt.loaded + }); + } + } else { + const fullReader = this._fullRequestReader; + + if (fullReader?.onProgress) { + fullReader.onProgress({ + loaded: evt.loaded, + total: evt.total + }); + } + } + } + + _onProgressiveDone() { + if (this._fullRequestReader) { + this._fullRequestReader.progressiveDone(); + } + + this._progressiveDone = true; + } + + _removeRangeReader(reader) { + const i = this._rangeReaders.indexOf(reader); + + if (i >= 0) { + this._rangeReaders.splice(i, 1); + } + } + + getFullReader() { + (0, _util.assert)(!this._fullRequestReader, "PDFDataTransportStream.getFullReader can only be called once."); + const queuedChunks = this._queuedChunks; + this._queuedChunks = null; + return new PDFDataTransportStreamReader(this, queuedChunks, this._progressiveDone, this._contentDispositionFilename); + } + + getRangeReader(begin, end) { + if (end <= this._progressiveDataLength) { + return null; + } + + const reader = new PDFDataTransportStreamRangeReader(this, begin, end); + + this._pdfDataRangeTransport.requestDataRange(begin, end); + + this._rangeReaders.push(reader); + + return reader; + } + + cancelAllRequests(reason) { + if (this._fullRequestReader) { + this._fullRequestReader.cancel(reason); + } + + for (const reader of this._rangeReaders.slice(0)) { + reader.cancel(reason); + } + + this._pdfDataRangeTransport.abort(); + } + +} + +exports.PDFDataTransportStream = PDFDataTransportStream; + +class PDFDataTransportStreamReader { + constructor(stream, queuedChunks, progressiveDone = false, contentDispositionFilename = null) { + this._stream = stream; + this._done = progressiveDone || false; + this._filename = (0, _display_utils.isPdfFile)(contentDispositionFilename) ? contentDispositionFilename : null; + this._queuedChunks = queuedChunks || []; + this._loaded = 0; + + for (const chunk of this._queuedChunks) { + this._loaded += chunk.byteLength; + } + + this._requests = []; + this._headersReady = Promise.resolve(); + stream._fullRequestReader = this; + this.onProgress = null; + } + + _enqueue(chunk) { + if (this._done) { + return; + } + + if (this._requests.length > 0) { + const requestCapability = this._requests.shift(); + + requestCapability.resolve({ + value: chunk, + done: false + }); + } else { + this._queuedChunks.push(chunk); + } + + this._loaded += chunk.byteLength; + } + + get headersReady() { + return this._headersReady; + } + + get filename() { + return this._filename; + } + + get isRangeSupported() { + return this._stream._isRangeSupported; + } + + get isStreamingSupported() { + return this._stream._isStreamingSupported; + } + + get contentLength() { + return this._stream._contentLength; + } + + async read() { + if (this._queuedChunks.length > 0) { + const chunk = this._queuedChunks.shift(); + + return { + value: chunk, + done: false + }; + } + + if (this._done) { + return { + value: undefined, + done: true + }; + } + + const requestCapability = (0, _util.createPromiseCapability)(); + + this._requests.push(requestCapability); + + return requestCapability.promise; + } + + cancel(reason) { + this._done = true; + + for (const requestCapability of this._requests) { + requestCapability.resolve({ + value: undefined, + done: true + }); + } + + this._requests.length = 0; + } + + progressiveDone() { + if (this._done) { + return; + } + + this._done = true; + } + +} + +class PDFDataTransportStreamRangeReader { + constructor(stream, begin, end) { + this._stream = stream; + this._begin = begin; + this._end = end; + this._queuedChunk = null; + this._requests = []; + this._done = false; + this.onProgress = null; + } + + _enqueue(chunk) { + if (this._done) { + return; + } + + if (this._requests.length === 0) { + this._queuedChunk = chunk; + } else { + const requestsCapability = this._requests.shift(); + + requestsCapability.resolve({ + value: chunk, + done: false + }); + + for (const requestCapability of this._requests) { + requestCapability.resolve({ + value: undefined, + done: true + }); + } + + this._requests.length = 0; + } + + this._done = true; + + this._stream._removeRangeReader(this); + } + + get isStreamingSupported() { + return false; + } + + async read() { + if (this._queuedChunk) { + const chunk = this._queuedChunk; + this._queuedChunk = null; + return { + value: chunk, + done: false + }; + } + + if (this._done) { + return { + value: undefined, + done: true + }; + } + + const requestCapability = (0, _util.createPromiseCapability)(); + + this._requests.push(requestCapability); + + return requestCapability.promise; + } + + cancel(reason) { + this._done = true; + + for (const requestCapability of this._requests) { + requestCapability.resolve({ + value: undefined, + done: true + }); + } + + this._requests.length = 0; + + this._stream._removeRangeReader(this); + } + +} + +/***/ }), +/* 18 */ +/***/ ((__unused_webpack_module, exports) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.XfaText = void 0; + +class XfaText { + static textContent(xfa) { + const items = []; + const output = { + items, + styles: Object.create(null) + }; + + function walk(node) { + if (!node) { + return; + } + + let str = null; + const name = node.name; + + if (name === "#text") { + str = node.value; + } else if (!XfaText.shouldBuildText(name)) { + return; + } else if (node?.attributes?.textContent) { + str = node.attributes.textContent; + } else if (node.value) { + str = node.value; + } + + if (str !== null) { + items.push({ + str + }); + } + + if (!node.children) { + return; + } + + for (const child of node.children) { + walk(child); + } + } + + walk(xfa); + return output; + } + + static shouldBuildText(name) { + return !(name === "textarea" || name === "input" || name === "option" || name === "select"); + } + +} + +exports.XfaText = XfaText; + +/***/ }), +/* 19 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.NodeStandardFontDataFactory = exports.NodeCanvasFactory = exports.NodeCMapReaderFactory = void 0; + +var _base_factory = __w_pdfjs_require__(6); + +; + +const fetchData = function (url) { + return new Promise((resolve, reject) => { + const fs = require("fs"); + + fs.readFile(url, (error, data) => { + if (error || !data) { + reject(new Error(error)); + return; + } + + resolve(new Uint8Array(data)); + }); + }); +}; + +class NodeCanvasFactory extends _base_factory.BaseCanvasFactory { + _createCanvas(width, height) { + const Canvas = require("canvas"); + + return Canvas.createCanvas(width, height); + } + +} + +exports.NodeCanvasFactory = NodeCanvasFactory; + +class NodeCMapReaderFactory extends _base_factory.BaseCMapReaderFactory { + _fetchData(url, compressionType) { + return fetchData(url).then(data => { + return { + cMapData: data, + compressionType + }; + }); + } + +} + +exports.NodeCMapReaderFactory = NodeCMapReaderFactory; + +class NodeStandardFontDataFactory extends _base_factory.BaseStandardFontDataFactory { + _fetchData(url) { + return fetchData(url); + } + +} + +exports.NodeStandardFontDataFactory = NodeStandardFontDataFactory; + +/***/ }), +/* 20 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.AnnotationLayer = void 0; + +var _util = __w_pdfjs_require__(1); + +var _display_utils = __w_pdfjs_require__(5); + +var _annotation_storage = __w_pdfjs_require__(8); + +var _scripting_utils = __w_pdfjs_require__(21); + +var _xfa_layer = __w_pdfjs_require__(22); + +const DEFAULT_TAB_INDEX = 1000; +const GetElementsByNameSet = new WeakSet(); + +function getRectDims(rect) { + return { + width: rect[2] - rect[0], + height: rect[3] - rect[1] + }; +} + +class AnnotationElementFactory { + static create(parameters) { + const subtype = parameters.data.annotationType; + + switch (subtype) { + case _util.AnnotationType.LINK: + return new LinkAnnotationElement(parameters); + + case _util.AnnotationType.TEXT: + return new TextAnnotationElement(parameters); + + case _util.AnnotationType.WIDGET: + const fieldType = parameters.data.fieldType; + + switch (fieldType) { + case "Tx": + return new TextWidgetAnnotationElement(parameters); + + case "Btn": + if (parameters.data.radioButton) { + return new RadioButtonWidgetAnnotationElement(parameters); + } else if (parameters.data.checkBox) { + return new CheckboxWidgetAnnotationElement(parameters); + } + + return new PushButtonWidgetAnnotationElement(parameters); + + case "Ch": + return new ChoiceWidgetAnnotationElement(parameters); + } + + return new WidgetAnnotationElement(parameters); + + case _util.AnnotationType.POPUP: + return new PopupAnnotationElement(parameters); + + case _util.AnnotationType.FREETEXT: + return new FreeTextAnnotationElement(parameters); + + case _util.AnnotationType.LINE: + return new LineAnnotationElement(parameters); + + case _util.AnnotationType.SQUARE: + return new SquareAnnotationElement(parameters); + + case _util.AnnotationType.CIRCLE: + return new CircleAnnotationElement(parameters); + + case _util.AnnotationType.POLYLINE: + return new PolylineAnnotationElement(parameters); + + case _util.AnnotationType.CARET: + return new CaretAnnotationElement(parameters); + + case _util.AnnotationType.INK: + return new InkAnnotationElement(parameters); + + case _util.AnnotationType.POLYGON: + return new PolygonAnnotationElement(parameters); + + case _util.AnnotationType.HIGHLIGHT: + return new HighlightAnnotationElement(parameters); + + case _util.AnnotationType.UNDERLINE: + return new UnderlineAnnotationElement(parameters); + + case _util.AnnotationType.SQUIGGLY: + return new SquigglyAnnotationElement(parameters); + + case _util.AnnotationType.STRIKEOUT: + return new StrikeOutAnnotationElement(parameters); + + case _util.AnnotationType.STAMP: + return new StampAnnotationElement(parameters); + + case _util.AnnotationType.FILEATTACHMENT: + return new FileAttachmentAnnotationElement(parameters); + + default: + return new AnnotationElement(parameters); + } + } + +} + +class AnnotationElement { + constructor(parameters, { + isRenderable = false, + ignoreBorder = false, + createQuadrilaterals = false + } = {}) { + this.isRenderable = isRenderable; + this.data = parameters.data; + this.layer = parameters.layer; + this.page = parameters.page; + this.viewport = parameters.viewport; + this.linkService = parameters.linkService; + this.downloadManager = parameters.downloadManager; + this.imageResourcesPath = parameters.imageResourcesPath; + this.renderForms = parameters.renderForms; + this.svgFactory = parameters.svgFactory; + this.annotationStorage = parameters.annotationStorage; + this.enableScripting = parameters.enableScripting; + this.hasJSActions = parameters.hasJSActions; + this._fieldObjects = parameters.fieldObjects; + this._mouseState = parameters.mouseState; + + if (isRenderable) { + this.container = this._createContainer(ignoreBorder); + } + + if (createQuadrilaterals) { + this.quadrilaterals = this._createQuadrilaterals(ignoreBorder); + } + } + + _createContainer(ignoreBorder = false) { + const data = this.data, + page = this.page, + viewport = this.viewport; + const container = document.createElement("section"); + let { + width, + height + } = getRectDims(data.rect); + container.setAttribute("data-annotation-id", data.id); + + const rect = _util.Util.normalizeRect([data.rect[0], page.view[3] - data.rect[1] + page.view[1], data.rect[2], page.view[3] - data.rect[3] + page.view[1]]); + + if (data.hasOwnCanvas) { + const transform = viewport.transform.slice(); + + const [scaleX, scaleY] = _util.Util.singularValueDecompose2dScale(transform); + + width = Math.ceil(width * scaleX); + height = Math.ceil(height * scaleY); + rect[0] *= scaleX; + rect[1] *= scaleY; + + for (let i = 0; i < 4; i++) { + transform[i] = Math.sign(transform[i]); + } + + container.style.transform = `matrix(${transform.join(",")})`; + } else { + container.style.transform = `matrix(${viewport.transform.join(",")})`; + } + + container.style.transformOrigin = `${-rect[0]}px ${-rect[1]}px`; + + if (!ignoreBorder && data.borderStyle.width > 0) { + container.style.borderWidth = `${data.borderStyle.width}px`; + + if (data.borderStyle.style !== _util.AnnotationBorderStyleType.UNDERLINE) { + width -= 2 * data.borderStyle.width; + height -= 2 * data.borderStyle.width; + } + + const horizontalRadius = data.borderStyle.horizontalCornerRadius; + const verticalRadius = data.borderStyle.verticalCornerRadius; + + if (horizontalRadius > 0 || verticalRadius > 0) { + const radius = `${horizontalRadius}px / ${verticalRadius}px`; + container.style.borderRadius = radius; + } + + switch (data.borderStyle.style) { + case _util.AnnotationBorderStyleType.SOLID: + container.style.borderStyle = "solid"; + break; + + case _util.AnnotationBorderStyleType.DASHED: + container.style.borderStyle = "dashed"; + break; + + case _util.AnnotationBorderStyleType.BEVELED: + (0, _util.warn)("Unimplemented border style: beveled"); + break; + + case _util.AnnotationBorderStyleType.INSET: + (0, _util.warn)("Unimplemented border style: inset"); + break; + + case _util.AnnotationBorderStyleType.UNDERLINE: + container.style.borderBottomStyle = "solid"; + break; + + default: + break; + } + + const borderColor = data.borderColor || data.color || null; + + if (borderColor) { + container.style.borderColor = _util.Util.makeHexColor(data.color[0] | 0, data.color[1] | 0, data.color[2] | 0); + } else { + container.style.borderWidth = 0; + } + } + + container.style.left = `${rect[0]}px`; + container.style.top = `${rect[1]}px`; + + if (data.hasOwnCanvas) { + container.style.width = container.style.height = "auto"; + } else { + container.style.width = `${width}px`; + container.style.height = `${height}px`; + } + + return container; + } + + get _commonActions() { + const setColor = (jsName, styleName, event) => { + const color = event.detail[jsName]; + event.target.style[styleName] = _scripting_utils.ColorConverters[`${color[0]}_HTML`](color.slice(1)); + }; + + return (0, _util.shadow)(this, "_commonActions", { + display: event => { + const hidden = event.detail.display % 2 === 1; + event.target.style.visibility = hidden ? "hidden" : "visible"; + this.annotationStorage.setValue(this.data.id, { + hidden, + print: event.detail.display === 0 || event.detail.display === 3 + }); + }, + print: event => { + this.annotationStorage.setValue(this.data.id, { + print: event.detail.print + }); + }, + hidden: event => { + event.target.style.visibility = event.detail.hidden ? "hidden" : "visible"; + this.annotationStorage.setValue(this.data.id, { + hidden: event.detail.hidden + }); + }, + focus: event => { + setTimeout(() => event.target.focus({ + preventScroll: false + }), 0); + }, + userName: event => { + event.target.title = event.detail.userName; + }, + readonly: event => { + if (event.detail.readonly) { + event.target.setAttribute("readonly", ""); + } else { + event.target.removeAttribute("readonly"); + } + }, + required: event => { + if (event.detail.required) { + event.target.setAttribute("required", ""); + } else { + event.target.removeAttribute("required"); + } + }, + bgColor: event => { + setColor("bgColor", "backgroundColor", event); + }, + fillColor: event => { + setColor("fillColor", "backgroundColor", event); + }, + fgColor: event => { + setColor("fgColor", "color", event); + }, + textColor: event => { + setColor("textColor", "color", event); + }, + borderColor: event => { + setColor("borderColor", "borderColor", event); + }, + strokeColor: event => { + setColor("strokeColor", "borderColor", event); + } + }); + } + + _dispatchEventFromSandbox(actions, jsEvent) { + const commonActions = this._commonActions; + + for (const name of Object.keys(jsEvent.detail)) { + const action = actions[name] || commonActions[name]; + + if (action) { + action(jsEvent); + } + } + } + + _setDefaultPropertiesFromJS(element) { + if (!this.enableScripting) { + return; + } + + const storedData = this.annotationStorage.getRawValue(this.data.id); + + if (!storedData) { + return; + } + + const commonActions = this._commonActions; + + for (const [actionName, detail] of Object.entries(storedData)) { + const action = commonActions[actionName]; + + if (action) { + action({ + detail, + target: element + }); + delete storedData[actionName]; + } + } + } + + _createQuadrilaterals(ignoreBorder = false) { + if (!this.data.quadPoints) { + return null; + } + + const quadrilaterals = []; + const savedRect = this.data.rect; + + for (const quadPoint of this.data.quadPoints) { + this.data.rect = [quadPoint[2].x, quadPoint[2].y, quadPoint[1].x, quadPoint[1].y]; + quadrilaterals.push(this._createContainer(ignoreBorder)); + } + + this.data.rect = savedRect; + return quadrilaterals; + } + + _createPopup(trigger, data) { + let container = this.container; + + if (this.quadrilaterals) { + trigger = trigger || this.quadrilaterals; + container = this.quadrilaterals[0]; + } + + if (!trigger) { + trigger = document.createElement("div"); + trigger.style.height = container.style.height; + trigger.style.width = container.style.width; + container.appendChild(trigger); + } + + const popupElement = new PopupElement({ + container, + trigger, + color: data.color, + titleObj: data.titleObj, + modificationDate: data.modificationDate, + contentsObj: data.contentsObj, + richText: data.richText, + hideWrapper: true + }); + const popup = popupElement.render(); + popup.style.left = container.style.width; + container.appendChild(popup); + } + + _renderQuadrilaterals(className) { + for (const quadrilateral of this.quadrilaterals) { + quadrilateral.className = className; + } + + return this.quadrilaterals; + } + + render() { + (0, _util.unreachable)("Abstract method `AnnotationElement.render` called"); + } + + _getElementsByName(name, skipId = null) { + const fields = []; + + if (this._fieldObjects) { + const fieldObj = this._fieldObjects[name]; + + if (fieldObj) { + for (const { + page, + id, + exportValues + } of fieldObj) { + if (page === -1) { + continue; + } + + if (id === skipId) { + continue; + } + + const exportValue = typeof exportValues === "string" ? exportValues : null; + const domElement = document.getElementById(id); + + if (domElement && !GetElementsByNameSet.has(domElement)) { + (0, _util.warn)(`_getElementsByName - element not allowed: ${id}`); + continue; + } + + fields.push({ + id, + exportValue, + domElement + }); + } + } + + return fields; + } + + for (const domElement of document.getElementsByName(name)) { + const { + id, + exportValue + } = domElement; + + if (id === skipId) { + continue; + } + + if (!GetElementsByNameSet.has(domElement)) { + continue; + } + + fields.push({ + id, + exportValue, + domElement + }); + } + + return fields; + } + + static get platform() { + const platform = typeof navigator !== "undefined" ? navigator.platform : ""; + return (0, _util.shadow)(this, "platform", { + isWin: platform.includes("Win"), + isMac: platform.includes("Mac") + }); + } + +} + +class LinkAnnotationElement extends AnnotationElement { + constructor(parameters, options = null) { + const isRenderable = !!(parameters.data.url || parameters.data.dest || parameters.data.action || parameters.data.isTooltipOnly || parameters.data.resetForm || parameters.data.actions && (parameters.data.actions.Action || parameters.data.actions["Mouse Up"] || parameters.data.actions["Mouse Down"])); + super(parameters, { + isRenderable, + ignoreBorder: !!options?.ignoreBorder, + createQuadrilaterals: true + }); + } + + render() { + const { + data, + linkService + } = this; + const link = document.createElement("a"); + + if (data.url) { + linkService.addLinkAttributes(link, data.url, data.newWindow); + } else if (data.action) { + this._bindNamedAction(link, data.action); + } else if (data.dest) { + this._bindLink(link, data.dest); + } else { + let hasClickAction = false; + + if (data.actions && (data.actions.Action || data.actions["Mouse Up"] || data.actions["Mouse Down"]) && this.enableScripting && this.hasJSActions) { + hasClickAction = true; + + this._bindJSAction(link, data); + } + + if (data.resetForm) { + this._bindResetFormAction(link, data.resetForm); + } else if (!hasClickAction) { + this._bindLink(link, ""); + } + } + + if (this.quadrilaterals) { + return this._renderQuadrilaterals("linkAnnotation").map((quadrilateral, index) => { + const linkElement = index === 0 ? link : link.cloneNode(); + quadrilateral.appendChild(linkElement); + return quadrilateral; + }); + } + + this.container.className = "linkAnnotation"; + this.container.appendChild(link); + return this.container; + } + + _bindLink(link, destination) { + link.href = this.linkService.getDestinationHash(destination); + + link.onclick = () => { + if (destination) { + this.linkService.goToDestination(destination); + } + + return false; + }; + + if (destination || destination === "") { + link.className = "internalLink"; + } + } + + _bindNamedAction(link, action) { + link.href = this.linkService.getAnchorUrl(""); + + link.onclick = () => { + this.linkService.executeNamedAction(action); + return false; + }; + + link.className = "internalLink"; + } + + _bindJSAction(link, data) { + link.href = this.linkService.getAnchorUrl(""); + const map = new Map([["Action", "onclick"], ["Mouse Up", "onmouseup"], ["Mouse Down", "onmousedown"]]); + + for (const name of Object.keys(data.actions)) { + const jsName = map.get(name); + + if (!jsName) { + continue; + } + + link[jsName] = () => { + this.linkService.eventBus?.dispatch("dispatcheventinsandbox", { + source: this, + detail: { + id: data.id, + name + } + }); + return false; + }; + } + + if (!link.onclick) { + link.onclick = () => false; + } + + link.className = "internalLink"; + } + + _bindResetFormAction(link, resetForm) { + const otherClickAction = link.onclick; + + if (!otherClickAction) { + link.href = this.linkService.getAnchorUrl(""); + } + + link.className = "internalLink"; + + if (!this._fieldObjects) { + (0, _util.warn)(`_bindResetFormAction - "resetForm" action not supported, ` + "ensure that the `fieldObjects` parameter is provided."); + + if (!otherClickAction) { + link.onclick = () => false; + } + + return; + } + + link.onclick = () => { + if (otherClickAction) { + otherClickAction(); + } + + const { + fields: resetFormFields, + refs: resetFormRefs, + include + } = resetForm; + const allFields = []; + + if (resetFormFields.length !== 0 || resetFormRefs.length !== 0) { + const fieldIds = new Set(resetFormRefs); + + for (const fieldName of resetFormFields) { + const fields = this._fieldObjects[fieldName] || []; + + for (const { + id + } of fields) { + fieldIds.add(id); + } + } + + for (const fields of Object.values(this._fieldObjects)) { + for (const field of fields) { + if (fieldIds.has(field.id) === include) { + allFields.push(field); + } + } + } + } else { + for (const fields of Object.values(this._fieldObjects)) { + allFields.push(...fields); + } + } + + const storage = this.annotationStorage; + const allIds = []; + + for (const field of allFields) { + const { + id + } = field; + allIds.push(id); + + switch (field.type) { + case "text": + { + const value = field.defaultValue || ""; + storage.setValue(id, { + value + }); + break; + } + + case "checkbox": + case "radiobutton": + { + const value = field.defaultValue === field.exportValues; + storage.setValue(id, { + value + }); + break; + } + + case "combobox": + case "listbox": + { + const value = field.defaultValue || ""; + storage.setValue(id, { + value + }); + break; + } + + default: + continue; + } + + const domElement = document.getElementById(id); + + if (!domElement || !GetElementsByNameSet.has(domElement)) { + continue; + } + + domElement.dispatchEvent(new Event("resetform")); + } + + if (this.enableScripting) { + this.linkService.eventBus?.dispatch("dispatcheventinsandbox", { + source: this, + detail: { + id: "app", + ids: allIds, + name: "ResetForm" + } + }); + } + + return false; + }; + } + +} + +class TextAnnotationElement extends AnnotationElement { + constructor(parameters) { + const isRenderable = !!(parameters.data.hasPopup || parameters.data.titleObj?.str || parameters.data.contentsObj?.str || parameters.data.richText?.str); + super(parameters, { + isRenderable + }); + } + + render() { + this.container.className = "textAnnotation"; + const image = document.createElement("img"); + image.style.height = this.container.style.height; + image.style.width = this.container.style.width; + image.src = this.imageResourcesPath + "annotation-" + this.data.name.toLowerCase() + ".svg"; + image.alt = "[{{type}} Annotation]"; + image.dataset.l10nId = "text_annotation_type"; + image.dataset.l10nArgs = JSON.stringify({ + type: this.data.name + }); + + if (!this.data.hasPopup) { + this._createPopup(image, this.data); + } + + this.container.appendChild(image); + return this.container; + } + +} + +class WidgetAnnotationElement extends AnnotationElement { + render() { + if (this.data.alternativeText) { + this.container.title = this.data.alternativeText; + } + + return this.container; + } + + _getKeyModifier(event) { + const { + isWin, + isMac + } = AnnotationElement.platform; + return isWin && event.ctrlKey || isMac && event.metaKey; + } + + _setEventListener(element, baseName, eventName, valueGetter) { + if (baseName.includes("mouse")) { + element.addEventListener(baseName, event => { + this.linkService.eventBus?.dispatch("dispatcheventinsandbox", { + source: this, + detail: { + id: this.data.id, + name: eventName, + value: valueGetter(event), + shift: event.shiftKey, + modifier: this._getKeyModifier(event) + } + }); + }); + } else { + element.addEventListener(baseName, event => { + this.linkService.eventBus?.dispatch("dispatcheventinsandbox", { + source: this, + detail: { + id: this.data.id, + name: eventName, + value: valueGetter(event) + } + }); + }); + } + } + + _setEventListeners(element, names, getter) { + for (const [baseName, eventName] of names) { + if (eventName === "Action" || this.data.actions?.[eventName]) { + this._setEventListener(element, baseName, eventName, getter); + } + } + } + + _setBackgroundColor(element) { + const color = this.data.backgroundColor || null; + element.style.backgroundColor = color === null ? "transparent" : _util.Util.makeHexColor(color[0], color[1], color[2]); + } + +} + +class TextWidgetAnnotationElement extends WidgetAnnotationElement { + constructor(parameters) { + const isRenderable = parameters.renderForms || !parameters.data.hasAppearance && !!parameters.data.fieldValue; + super(parameters, { + isRenderable + }); + } + + setPropertyOnSiblings(base, key, value, keyInStorage) { + const storage = this.annotationStorage; + + for (const element of this._getElementsByName(base.name, base.id)) { + if (element.domElement) { + element.domElement[key] = value; + } + + storage.setValue(element.id, { + [keyInStorage]: value + }); + } + } + + render() { + const storage = this.annotationStorage; + const id = this.data.id; + this.container.className = "textWidgetAnnotation"; + let element = null; + + if (this.renderForms) { + const storedData = storage.getValue(id, { + value: this.data.fieldValue + }); + const textContent = storedData.formattedValue || storedData.value || ""; + const elementData = { + userValue: null, + formattedValue: null, + valueOnFocus: "" + }; + + if (this.data.multiLine) { + element = document.createElement("textarea"); + element.textContent = textContent; + } else { + element = document.createElement("input"); + element.type = "text"; + element.setAttribute("value", textContent); + } + + GetElementsByNameSet.add(element); + element.disabled = this.data.readOnly; + element.name = this.data.fieldName; + element.tabIndex = DEFAULT_TAB_INDEX; + elementData.userValue = textContent; + element.setAttribute("id", id); + element.addEventListener("input", event => { + storage.setValue(id, { + value: event.target.value + }); + this.setPropertyOnSiblings(element, "value", event.target.value, "value"); + }); + element.addEventListener("resetform", event => { + const defaultValue = this.data.defaultFieldValue ?? ""; + element.value = elementData.userValue = defaultValue; + elementData.formattedValue = null; + }); + + let blurListener = event => { + const { + formattedValue + } = elementData; + + if (formattedValue !== null && formattedValue !== undefined) { + event.target.value = formattedValue; + } + + event.target.scrollLeft = 0; + }; + + if (this.enableScripting && this.hasJSActions) { + element.addEventListener("focus", event => { + if (elementData.userValue) { + event.target.value = elementData.userValue; + } + + elementData.valueOnFocus = event.target.value; + }); + element.addEventListener("updatefromsandbox", jsEvent => { + const actions = { + value(event) { + elementData.userValue = event.detail.value ?? ""; + storage.setValue(id, { + value: elementData.userValue.toString() + }); + event.target.value = elementData.userValue; + }, + + formattedValue(event) { + const { + formattedValue + } = event.detail; + elementData.formattedValue = formattedValue; + + if (formattedValue !== null && formattedValue !== undefined && event.target !== document.activeElement) { + event.target.value = formattedValue; + } + + storage.setValue(id, { + formattedValue + }); + }, + + selRange(event) { + event.target.setSelectionRange(...event.detail.selRange); + } + + }; + + this._dispatchEventFromSandbox(actions, jsEvent); + }); + element.addEventListener("keydown", event => { + let commitKey = -1; + + if (event.key === "Escape") { + commitKey = 0; + } else if (event.key === "Enter") { + commitKey = 2; + } else if (event.key === "Tab") { + commitKey = 3; + } + + if (commitKey === -1) { + return; + } + + const { + value + } = event.target; + + if (elementData.valueOnFocus === value) { + return; + } + + elementData.userValue = value; + this.linkService.eventBus?.dispatch("dispatcheventinsandbox", { + source: this, + detail: { + id, + name: "Keystroke", + value, + willCommit: true, + commitKey, + selStart: event.target.selectionStart, + selEnd: event.target.selectionEnd + } + }); + }); + const _blurListener = blurListener; + blurListener = null; + element.addEventListener("blur", event => { + const { + value + } = event.target; + elementData.userValue = value; + + if (this._mouseState.isDown && elementData.valueOnFocus !== value) { + this.linkService.eventBus?.dispatch("dispatcheventinsandbox", { + source: this, + detail: { + id, + name: "Keystroke", + value, + willCommit: true, + commitKey: 1, + selStart: event.target.selectionStart, + selEnd: event.target.selectionEnd + } + }); + } + + _blurListener(event); + }); + + if (this.data.actions?.Keystroke) { + element.addEventListener("beforeinput", event => { + const { + data, + target + } = event; + const { + value, + selectionStart, + selectionEnd + } = target; + let selStart = selectionStart, + selEnd = selectionEnd; + + switch (event.inputType) { + case "deleteWordBackward": + { + const match = value.substring(0, selectionStart).match(/\w*[^\w]*$/); + + if (match) { + selStart -= match[0].length; + } + + break; + } + + case "deleteWordForward": + { + const match = value.substring(selectionStart).match(/^[^\w]*\w*/); + + if (match) { + selEnd += match[0].length; + } + + break; + } + + case "deleteContentBackward": + if (selectionStart === selectionEnd) { + selStart -= 1; + } + + break; + + case "deleteContentForward": + if (selectionStart === selectionEnd) { + selEnd += 1; + } + + break; + } + + event.preventDefault(); + this.linkService.eventBus?.dispatch("dispatcheventinsandbox", { + source: this, + detail: { + id, + name: "Keystroke", + value, + change: data || "", + willCommit: false, + selStart, + selEnd + } + }); + }); + } + + this._setEventListeners(element, [["focus", "Focus"], ["blur", "Blur"], ["mousedown", "Mouse Down"], ["mouseenter", "Mouse Enter"], ["mouseleave", "Mouse Exit"], ["mouseup", "Mouse Up"]], event => event.target.value); + } + + if (blurListener) { + element.addEventListener("blur", blurListener); + } + + if (this.data.maxLen !== null) { + element.maxLength = this.data.maxLen; + } + + if (this.data.comb) { + const fieldWidth = this.data.rect[2] - this.data.rect[0]; + const combWidth = fieldWidth / this.data.maxLen; + element.classList.add("comb"); + element.style.letterSpacing = `calc(${combWidth}px - 1ch)`; + } + } else { + element = document.createElement("div"); + element.textContent = this.data.fieldValue; + element.style.verticalAlign = "middle"; + element.style.display = "table-cell"; + } + + this._setTextStyle(element); + + this._setBackgroundColor(element); + + this._setDefaultPropertiesFromJS(element); + + this.container.appendChild(element); + return this.container; + } + + _setTextStyle(element) { + const TEXT_ALIGNMENT = ["left", "center", "right"]; + const { + fontSize, + fontColor + } = this.data.defaultAppearanceData; + const style = element.style; + + if (fontSize) { + style.fontSize = `${fontSize}px`; + } + + style.color = _util.Util.makeHexColor(fontColor[0], fontColor[1], fontColor[2]); + + if (this.data.textAlignment !== null) { + style.textAlign = TEXT_ALIGNMENT[this.data.textAlignment]; + } + } + +} + +class CheckboxWidgetAnnotationElement extends WidgetAnnotationElement { + constructor(parameters) { + super(parameters, { + isRenderable: parameters.renderForms + }); + } + + render() { + const storage = this.annotationStorage; + const data = this.data; + const id = data.id; + let value = storage.getValue(id, { + value: data.exportValue === data.fieldValue + }).value; + + if (typeof value === "string") { + value = value !== "Off"; + storage.setValue(id, { + value + }); + } + + this.container.className = "buttonWidgetAnnotation checkBox"; + const element = document.createElement("input"); + GetElementsByNameSet.add(element); + element.disabled = data.readOnly; + element.type = "checkbox"; + element.name = data.fieldName; + + if (value) { + element.setAttribute("checked", true); + } + + element.setAttribute("id", id); + element.setAttribute("exportValue", data.exportValue); + element.tabIndex = DEFAULT_TAB_INDEX; + element.addEventListener("change", event => { + const { + name, + checked + } = event.target; + + for (const checkbox of this._getElementsByName(name, id)) { + const curChecked = checked && checkbox.exportValue === data.exportValue; + + if (checkbox.domElement) { + checkbox.domElement.checked = curChecked; + } + + storage.setValue(checkbox.id, { + value: curChecked + }); + } + + storage.setValue(id, { + value: checked + }); + }); + element.addEventListener("resetform", event => { + const defaultValue = data.defaultFieldValue || "Off"; + event.target.checked = defaultValue === data.exportValue; + }); + + if (this.enableScripting && this.hasJSActions) { + element.addEventListener("updatefromsandbox", jsEvent => { + const actions = { + value(event) { + event.target.checked = event.detail.value !== "Off"; + storage.setValue(id, { + value: event.target.checked + }); + } + + }; + + this._dispatchEventFromSandbox(actions, jsEvent); + }); + + this._setEventListeners(element, [["change", "Validate"], ["change", "Action"], ["focus", "Focus"], ["blur", "Blur"], ["mousedown", "Mouse Down"], ["mouseenter", "Mouse Enter"], ["mouseleave", "Mouse Exit"], ["mouseup", "Mouse Up"]], event => event.target.checked); + } + + this._setBackgroundColor(element); + + this._setDefaultPropertiesFromJS(element); + + this.container.appendChild(element); + return this.container; + } + +} + +class RadioButtonWidgetAnnotationElement extends WidgetAnnotationElement { + constructor(parameters) { + super(parameters, { + isRenderable: parameters.renderForms + }); + } + + render() { + this.container.className = "buttonWidgetAnnotation radioButton"; + const storage = this.annotationStorage; + const data = this.data; + const id = data.id; + let value = storage.getValue(id, { + value: data.fieldValue === data.buttonValue + }).value; + + if (typeof value === "string") { + value = value !== data.buttonValue; + storage.setValue(id, { + value + }); + } + + const element = document.createElement("input"); + GetElementsByNameSet.add(element); + element.disabled = data.readOnly; + element.type = "radio"; + element.name = data.fieldName; + + if (value) { + element.setAttribute("checked", true); + } + + element.setAttribute("id", id); + element.tabIndex = DEFAULT_TAB_INDEX; + element.addEventListener("change", event => { + const { + name, + checked + } = event.target; + + for (const radio of this._getElementsByName(name, id)) { + storage.setValue(radio.id, { + value: false + }); + } + + storage.setValue(id, { + value: checked + }); + }); + element.addEventListener("resetform", event => { + const defaultValue = data.defaultFieldValue; + event.target.checked = defaultValue !== null && defaultValue !== undefined && defaultValue === data.buttonValue; + }); + + if (this.enableScripting && this.hasJSActions) { + const pdfButtonValue = data.buttonValue; + element.addEventListener("updatefromsandbox", jsEvent => { + const actions = { + value: event => { + const checked = pdfButtonValue === event.detail.value; + + for (const radio of this._getElementsByName(event.target.name)) { + const curChecked = checked && radio.id === id; + + if (radio.domElement) { + radio.domElement.checked = curChecked; + } + + storage.setValue(radio.id, { + value: curChecked + }); + } + } + }; + + this._dispatchEventFromSandbox(actions, jsEvent); + }); + + this._setEventListeners(element, [["change", "Validate"], ["change", "Action"], ["focus", "Focus"], ["blur", "Blur"], ["mousedown", "Mouse Down"], ["mouseenter", "Mouse Enter"], ["mouseleave", "Mouse Exit"], ["mouseup", "Mouse Up"]], event => event.target.checked); + } + + this._setBackgroundColor(element); + + this._setDefaultPropertiesFromJS(element); + + this.container.appendChild(element); + return this.container; + } + +} + +class PushButtonWidgetAnnotationElement extends LinkAnnotationElement { + constructor(parameters) { + super(parameters, { + ignoreBorder: parameters.data.hasAppearance + }); + } + + render() { + const container = super.render(); + container.className = "buttonWidgetAnnotation pushButton"; + + if (this.data.alternativeText) { + container.title = this.data.alternativeText; + } + + this._setDefaultPropertiesFromJS(container); + + return container; + } + +} + +class ChoiceWidgetAnnotationElement extends WidgetAnnotationElement { + constructor(parameters) { + super(parameters, { + isRenderable: parameters.renderForms + }); + } + + render() { + this.container.className = "choiceWidgetAnnotation"; + const storage = this.annotationStorage; + const id = this.data.id; + const storedData = storage.getValue(id, { + value: this.data.fieldValue + }); + let { + fontSize + } = this.data.defaultAppearanceData; + + if (!fontSize) { + fontSize = 9; + } + + const fontSizeStyle = `calc(${fontSize}px * var(--zoom-factor))`; + const selectElement = document.createElement("select"); + GetElementsByNameSet.add(selectElement); + selectElement.disabled = this.data.readOnly; + selectElement.name = this.data.fieldName; + selectElement.setAttribute("id", id); + selectElement.tabIndex = DEFAULT_TAB_INDEX; + selectElement.style.fontSize = `${fontSize}px`; + + if (!this.data.combo) { + selectElement.size = this.data.options.length; + + if (this.data.multiSelect) { + selectElement.multiple = true; + } + } + + selectElement.addEventListener("resetform", event => { + const defaultValue = this.data.defaultFieldValue; + + for (const option of selectElement.options) { + option.selected = option.value === defaultValue; + } + }); + + for (const option of this.data.options) { + const optionElement = document.createElement("option"); + optionElement.textContent = option.displayValue; + optionElement.value = option.exportValue; + + if (this.data.combo) { + optionElement.style.fontSize = fontSizeStyle; + } + + if (storedData.value.includes(option.exportValue)) { + optionElement.setAttribute("selected", true); + } + + selectElement.appendChild(optionElement); + } + + const getValue = (event, isExport) => { + const name = isExport ? "value" : "textContent"; + const options = event.target.options; + + if (!event.target.multiple) { + return options.selectedIndex === -1 ? null : options[options.selectedIndex][name]; + } + + return Array.prototype.filter.call(options, option => option.selected).map(option => option[name]); + }; + + const getItems = event => { + const options = event.target.options; + return Array.prototype.map.call(options, option => { + return { + displayValue: option.textContent, + exportValue: option.value + }; + }); + }; + + if (this.enableScripting && this.hasJSActions) { + selectElement.addEventListener("updatefromsandbox", jsEvent => { + const actions = { + value(event) { + const value = event.detail.value; + const values = new Set(Array.isArray(value) ? value : [value]); + + for (const option of selectElement.options) { + option.selected = values.has(option.value); + } + + storage.setValue(id, { + value: getValue(event, true) + }); + }, + + multipleSelection(event) { + selectElement.multiple = true; + }, + + remove(event) { + const options = selectElement.options; + const index = event.detail.remove; + options[index].selected = false; + selectElement.remove(index); + + if (options.length > 0) { + const i = Array.prototype.findIndex.call(options, option => option.selected); + + if (i === -1) { + options[0].selected = true; + } + } + + storage.setValue(id, { + value: getValue(event, true), + items: getItems(event) + }); + }, + + clear(event) { + while (selectElement.length !== 0) { + selectElement.remove(0); + } + + storage.setValue(id, { + value: null, + items: [] + }); + }, + + insert(event) { + const { + index, + displayValue, + exportValue + } = event.detail.insert; + const optionElement = document.createElement("option"); + optionElement.textContent = displayValue; + optionElement.value = exportValue; + selectElement.insertBefore(optionElement, selectElement.children[index]); + storage.setValue(id, { + value: getValue(event, true), + items: getItems(event) + }); + }, + + items(event) { + const { + items + } = event.detail; + + while (selectElement.length !== 0) { + selectElement.remove(0); + } + + for (const item of items) { + const { + displayValue, + exportValue + } = item; + const optionElement = document.createElement("option"); + optionElement.textContent = displayValue; + optionElement.value = exportValue; + selectElement.appendChild(optionElement); + } + + if (selectElement.options.length > 0) { + selectElement.options[0].selected = true; + } + + storage.setValue(id, { + value: getValue(event, true), + items: getItems(event) + }); + }, + + indices(event) { + const indices = new Set(event.detail.indices); + + for (const option of event.target.options) { + option.selected = indices.has(option.index); + } + + storage.setValue(id, { + value: getValue(event, true) + }); + }, + + editable(event) { + event.target.disabled = !event.detail.editable; + } + + }; + + this._dispatchEventFromSandbox(actions, jsEvent); + }); + selectElement.addEventListener("input", event => { + const exportValue = getValue(event, true); + const value = getValue(event, false); + storage.setValue(id, { + value: exportValue + }); + this.linkService.eventBus?.dispatch("dispatcheventinsandbox", { + source: this, + detail: { + id, + name: "Keystroke", + value, + changeEx: exportValue, + willCommit: true, + commitKey: 1, + keyDown: false + } + }); + }); + + this._setEventListeners(selectElement, [["focus", "Focus"], ["blur", "Blur"], ["mousedown", "Mouse Down"], ["mouseenter", "Mouse Enter"], ["mouseleave", "Mouse Exit"], ["mouseup", "Mouse Up"], ["input", "Action"]], event => event.target.checked); + } else { + selectElement.addEventListener("input", function (event) { + storage.setValue(id, { + value: getValue(event, true) + }); + }); + } + + this._setBackgroundColor(selectElement); + + this._setDefaultPropertiesFromJS(selectElement); + + this.container.appendChild(selectElement); + return this.container; + } + +} + +class PopupAnnotationElement extends AnnotationElement { + constructor(parameters) { + const isRenderable = !!(parameters.data.titleObj?.str || parameters.data.contentsObj?.str || parameters.data.richText?.str); + super(parameters, { + isRenderable + }); + } + + render() { + const IGNORE_TYPES = ["Line", "Square", "Circle", "PolyLine", "Polygon", "Ink"]; + this.container.className = "popupAnnotation"; + + if (IGNORE_TYPES.includes(this.data.parentType)) { + return this.container; + } + + const selector = `[data-annotation-id="${this.data.parentId}"]`; + const parentElements = this.layer.querySelectorAll(selector); + + if (parentElements.length === 0) { + return this.container; + } + + const popup = new PopupElement({ + container: this.container, + trigger: Array.from(parentElements), + color: this.data.color, + titleObj: this.data.titleObj, + modificationDate: this.data.modificationDate, + contentsObj: this.data.contentsObj, + richText: this.data.richText + }); + const page = this.page; + + const rect = _util.Util.normalizeRect([this.data.parentRect[0], page.view[3] - this.data.parentRect[1] + page.view[1], this.data.parentRect[2], page.view[3] - this.data.parentRect[3] + page.view[1]]); + + const popupLeft = rect[0] + this.data.parentRect[2] - this.data.parentRect[0]; + const popupTop = rect[1]; + this.container.style.transformOrigin = `${-popupLeft}px ${-popupTop}px`; + this.container.style.left = `${popupLeft}px`; + this.container.style.top = `${popupTop}px`; + this.container.appendChild(popup.render()); + return this.container; + } + +} + +class PopupElement { + constructor(parameters) { + this.container = parameters.container; + this.trigger = parameters.trigger; + this.color = parameters.color; + this.titleObj = parameters.titleObj; + this.modificationDate = parameters.modificationDate; + this.contentsObj = parameters.contentsObj; + this.richText = parameters.richText; + this.hideWrapper = parameters.hideWrapper || false; + this.pinned = false; + } + + render() { + const BACKGROUND_ENLIGHT = 0.7; + const wrapper = document.createElement("div"); + wrapper.className = "popupWrapper"; + this.hideElement = this.hideWrapper ? wrapper : this.container; + this.hideElement.hidden = true; + const popup = document.createElement("div"); + popup.className = "popup"; + const color = this.color; + + if (color) { + const r = BACKGROUND_ENLIGHT * (255 - color[0]) + color[0]; + const g = BACKGROUND_ENLIGHT * (255 - color[1]) + color[1]; + const b = BACKGROUND_ENLIGHT * (255 - color[2]) + color[2]; + popup.style.backgroundColor = _util.Util.makeHexColor(r | 0, g | 0, b | 0); + } + + const title = document.createElement("h1"); + title.dir = this.titleObj.dir; + title.textContent = this.titleObj.str; + popup.appendChild(title); + + const dateObject = _display_utils.PDFDateString.toDateObject(this.modificationDate); + + if (dateObject) { + const modificationDate = document.createElement("span"); + modificationDate.className = "popupDate"; + modificationDate.textContent = "{{date}}, {{time}}"; + modificationDate.dataset.l10nId = "annotation_date_string"; + modificationDate.dataset.l10nArgs = JSON.stringify({ + date: dateObject.toLocaleDateString(), + time: dateObject.toLocaleTimeString() + }); + popup.appendChild(modificationDate); + } + + if (this.richText?.str && (!this.contentsObj?.str || this.contentsObj.str === this.richText.str)) { + _xfa_layer.XfaLayer.render({ + xfaHtml: this.richText.html, + intent: "richText", + div: popup + }); + + popup.lastChild.className = "richText popupContent"; + } else { + const contents = this._formatContents(this.contentsObj); + + popup.appendChild(contents); + } + + if (!Array.isArray(this.trigger)) { + this.trigger = [this.trigger]; + } + + for (const element of this.trigger) { + element.addEventListener("click", this._toggle.bind(this)); + element.addEventListener("mouseover", this._show.bind(this, false)); + element.addEventListener("mouseout", this._hide.bind(this, false)); + } + + popup.addEventListener("click", this._hide.bind(this, true)); + wrapper.appendChild(popup); + return wrapper; + } + + _formatContents({ + str, + dir + }) { + const p = document.createElement("p"); + p.className = "popupContent"; + p.dir = dir; + const lines = str.split(/(?:\r\n?|\n)/); + + for (let i = 0, ii = lines.length; i < ii; ++i) { + const line = lines[i]; + p.appendChild(document.createTextNode(line)); + + if (i < ii - 1) { + p.appendChild(document.createElement("br")); + } + } + + return p; + } + + _toggle() { + if (this.pinned) { + this._hide(true); + } else { + this._show(true); + } + } + + _show(pin = false) { + if (pin) { + this.pinned = true; + } + + if (this.hideElement.hidden) { + this.hideElement.hidden = false; + this.container.style.zIndex += 1; + } + } + + _hide(unpin = true) { + if (unpin) { + this.pinned = false; + } + + if (!this.hideElement.hidden && !this.pinned) { + this.hideElement.hidden = true; + this.container.style.zIndex -= 1; + } + } + +} + +class FreeTextAnnotationElement extends AnnotationElement { + constructor(parameters) { + const isRenderable = !!(parameters.data.hasPopup || parameters.data.titleObj?.str || parameters.data.contentsObj?.str || parameters.data.richText?.str); + super(parameters, { + isRenderable, + ignoreBorder: true + }); + } + + render() { + this.container.className = "freeTextAnnotation"; + + if (!this.data.hasPopup) { + this._createPopup(null, this.data); + } + + return this.container; + } + +} + +class LineAnnotationElement extends AnnotationElement { + constructor(parameters) { + const isRenderable = !!(parameters.data.hasPopup || parameters.data.titleObj?.str || parameters.data.contentsObj?.str || parameters.data.richText?.str); + super(parameters, { + isRenderable, + ignoreBorder: true + }); + } + + render() { + this.container.className = "lineAnnotation"; + const data = this.data; + const { + width, + height + } = getRectDims(data.rect); + const svg = this.svgFactory.create(width, height); + const line = this.svgFactory.createElement("svg:line"); + line.setAttribute("x1", data.rect[2] - data.lineCoordinates[0]); + line.setAttribute("y1", data.rect[3] - data.lineCoordinates[1]); + line.setAttribute("x2", data.rect[2] - data.lineCoordinates[2]); + line.setAttribute("y2", data.rect[3] - data.lineCoordinates[3]); + line.setAttribute("stroke-width", data.borderStyle.width || 1); + line.setAttribute("stroke", "transparent"); + line.setAttribute("fill", "transparent"); + svg.appendChild(line); + this.container.append(svg); + + this._createPopup(line, data); + + return this.container; + } + +} + +class SquareAnnotationElement extends AnnotationElement { + constructor(parameters) { + const isRenderable = !!(parameters.data.hasPopup || parameters.data.titleObj?.str || parameters.data.contentsObj?.str || parameters.data.richText?.str); + super(parameters, { + isRenderable, + ignoreBorder: true + }); + } + + render() { + this.container.className = "squareAnnotation"; + const data = this.data; + const { + width, + height + } = getRectDims(data.rect); + const svg = this.svgFactory.create(width, height); + const borderWidth = data.borderStyle.width; + const square = this.svgFactory.createElement("svg:rect"); + square.setAttribute("x", borderWidth / 2); + square.setAttribute("y", borderWidth / 2); + square.setAttribute("width", width - borderWidth); + square.setAttribute("height", height - borderWidth); + square.setAttribute("stroke-width", borderWidth || 1); + square.setAttribute("stroke", "transparent"); + square.setAttribute("fill", "transparent"); + svg.appendChild(square); + this.container.append(svg); + + this._createPopup(square, data); + + return this.container; + } + +} + +class CircleAnnotationElement extends AnnotationElement { + constructor(parameters) { + const isRenderable = !!(parameters.data.hasPopup || parameters.data.titleObj?.str || parameters.data.contentsObj?.str || parameters.data.richText?.str); + super(parameters, { + isRenderable, + ignoreBorder: true + }); + } + + render() { + this.container.className = "circleAnnotation"; + const data = this.data; + const { + width, + height + } = getRectDims(data.rect); + const svg = this.svgFactory.create(width, height); + const borderWidth = data.borderStyle.width; + const circle = this.svgFactory.createElement("svg:ellipse"); + circle.setAttribute("cx", width / 2); + circle.setAttribute("cy", height / 2); + circle.setAttribute("rx", width / 2 - borderWidth / 2); + circle.setAttribute("ry", height / 2 - borderWidth / 2); + circle.setAttribute("stroke-width", borderWidth || 1); + circle.setAttribute("stroke", "transparent"); + circle.setAttribute("fill", "transparent"); + svg.appendChild(circle); + this.container.append(svg); + + this._createPopup(circle, data); + + return this.container; + } + +} + +class PolylineAnnotationElement extends AnnotationElement { + constructor(parameters) { + const isRenderable = !!(parameters.data.hasPopup || parameters.data.titleObj?.str || parameters.data.contentsObj?.str || parameters.data.richText?.str); + super(parameters, { + isRenderable, + ignoreBorder: true + }); + this.containerClassName = "polylineAnnotation"; + this.svgElementName = "svg:polyline"; + } + + render() { + this.container.className = this.containerClassName; + const data = this.data; + const { + width, + height + } = getRectDims(data.rect); + const svg = this.svgFactory.create(width, height); + let points = []; + + for (const coordinate of data.vertices) { + const x = coordinate.x - data.rect[0]; + const y = data.rect[3] - coordinate.y; + points.push(x + "," + y); + } + + points = points.join(" "); + const polyline = this.svgFactory.createElement(this.svgElementName); + polyline.setAttribute("points", points); + polyline.setAttribute("stroke-width", data.borderStyle.width || 1); + polyline.setAttribute("stroke", "transparent"); + polyline.setAttribute("fill", "transparent"); + svg.appendChild(polyline); + this.container.append(svg); + + this._createPopup(polyline, data); + + return this.container; + } + +} + +class PolygonAnnotationElement extends PolylineAnnotationElement { + constructor(parameters) { + super(parameters); + this.containerClassName = "polygonAnnotation"; + this.svgElementName = "svg:polygon"; + } + +} + +class CaretAnnotationElement extends AnnotationElement { + constructor(parameters) { + const isRenderable = !!(parameters.data.hasPopup || parameters.data.titleObj?.str || parameters.data.contentsObj?.str || parameters.data.richText?.str); + super(parameters, { + isRenderable, + ignoreBorder: true + }); + } + + render() { + this.container.className = "caretAnnotation"; + + if (!this.data.hasPopup) { + this._createPopup(null, this.data); + } + + return this.container; + } + +} + +class InkAnnotationElement extends AnnotationElement { + constructor(parameters) { + const isRenderable = !!(parameters.data.hasPopup || parameters.data.titleObj?.str || parameters.data.contentsObj?.str || parameters.data.richText?.str); + super(parameters, { + isRenderable, + ignoreBorder: true + }); + this.containerClassName = "inkAnnotation"; + this.svgElementName = "svg:polyline"; + } + + render() { + this.container.className = this.containerClassName; + const data = this.data; + const { + width, + height + } = getRectDims(data.rect); + const svg = this.svgFactory.create(width, height); + + for (const inkList of data.inkLists) { + let points = []; + + for (const coordinate of inkList) { + const x = coordinate.x - data.rect[0]; + const y = data.rect[3] - coordinate.y; + points.push(`${x},${y}`); + } + + points = points.join(" "); + const polyline = this.svgFactory.createElement(this.svgElementName); + polyline.setAttribute("points", points); + polyline.setAttribute("stroke-width", data.borderStyle.width || 1); + polyline.setAttribute("stroke", "transparent"); + polyline.setAttribute("fill", "transparent"); + + this._createPopup(polyline, data); + + svg.appendChild(polyline); + } + + this.container.append(svg); + return this.container; + } + +} + +class HighlightAnnotationElement extends AnnotationElement { + constructor(parameters) { + const isRenderable = !!(parameters.data.hasPopup || parameters.data.titleObj?.str || parameters.data.contentsObj?.str || parameters.data.richText?.str); + super(parameters, { + isRenderable, + ignoreBorder: true, + createQuadrilaterals: true + }); + } + + render() { + if (!this.data.hasPopup) { + this._createPopup(null, this.data); + } + + if (this.quadrilaterals) { + return this._renderQuadrilaterals("highlightAnnotation"); + } + + this.container.className = "highlightAnnotation"; + return this.container; + } + +} + +class UnderlineAnnotationElement extends AnnotationElement { + constructor(parameters) { + const isRenderable = !!(parameters.data.hasPopup || parameters.data.titleObj?.str || parameters.data.contentsObj?.str || parameters.data.richText?.str); + super(parameters, { + isRenderable, + ignoreBorder: true, + createQuadrilaterals: true + }); + } + + render() { + if (!this.data.hasPopup) { + this._createPopup(null, this.data); + } + + if (this.quadrilaterals) { + return this._renderQuadrilaterals("underlineAnnotation"); + } + + this.container.className = "underlineAnnotation"; + return this.container; + } + +} + +class SquigglyAnnotationElement extends AnnotationElement { + constructor(parameters) { + const isRenderable = !!(parameters.data.hasPopup || parameters.data.titleObj?.str || parameters.data.contentsObj?.str || parameters.data.richText?.str); + super(parameters, { + isRenderable, + ignoreBorder: true, + createQuadrilaterals: true + }); + } + + render() { + if (!this.data.hasPopup) { + this._createPopup(null, this.data); + } + + if (this.quadrilaterals) { + return this._renderQuadrilaterals("squigglyAnnotation"); + } + + this.container.className = "squigglyAnnotation"; + return this.container; + } + +} + +class StrikeOutAnnotationElement extends AnnotationElement { + constructor(parameters) { + const isRenderable = !!(parameters.data.hasPopup || parameters.data.titleObj?.str || parameters.data.contentsObj?.str || parameters.data.richText?.str); + super(parameters, { + isRenderable, + ignoreBorder: true, + createQuadrilaterals: true + }); + } + + render() { + if (!this.data.hasPopup) { + this._createPopup(null, this.data); + } + + if (this.quadrilaterals) { + return this._renderQuadrilaterals("strikeoutAnnotation"); + } + + this.container.className = "strikeoutAnnotation"; + return this.container; + } + +} + +class StampAnnotationElement extends AnnotationElement { + constructor(parameters) { + const isRenderable = !!(parameters.data.hasPopup || parameters.data.titleObj?.str || parameters.data.contentsObj?.str || parameters.data.richText?.str); + super(parameters, { + isRenderable, + ignoreBorder: true + }); + } + + render() { + this.container.className = "stampAnnotation"; + + if (!this.data.hasPopup) { + this._createPopup(null, this.data); + } + + return this.container; + } + +} + +class FileAttachmentAnnotationElement extends AnnotationElement { + constructor(parameters) { + super(parameters, { + isRenderable: true + }); + const { + filename, + content + } = this.data.file; + this.filename = (0, _display_utils.getFilenameFromUrl)(filename); + this.content = content; + this.linkService.eventBus?.dispatch("fileattachmentannotation", { + source: this, + filename, + content + }); + } + + render() { + this.container.className = "fileAttachmentAnnotation"; + const trigger = document.createElement("div"); + trigger.style.height = this.container.style.height; + trigger.style.width = this.container.style.width; + trigger.addEventListener("dblclick", this._download.bind(this)); + + if (!this.data.hasPopup && (this.data.titleObj?.str || this.data.contentsObj?.str || this.data.richText)) { + this._createPopup(trigger, this.data); + } + + this.container.appendChild(trigger); + return this.container; + } + + _download() { + this.downloadManager?.openOrDownloadData(this.container, this.content, this.filename); + } + +} + +class AnnotationLayer { + static render(parameters) { + const sortedAnnotations = [], + popupAnnotations = []; + + for (const data of parameters.annotations) { + if (!data) { + continue; + } + + const { + width, + height + } = getRectDims(data.rect); + + if (width <= 0 || height <= 0) { + continue; + } + + if (data.annotationType === _util.AnnotationType.POPUP) { + popupAnnotations.push(data); + continue; + } + + sortedAnnotations.push(data); + } + + if (popupAnnotations.length) { + sortedAnnotations.push(...popupAnnotations); + } + + const div = parameters.div; + + for (const data of sortedAnnotations) { + const element = AnnotationElementFactory.create({ + data, + layer: div, + page: parameters.page, + viewport: parameters.viewport, + linkService: parameters.linkService, + downloadManager: parameters.downloadManager, + imageResourcesPath: parameters.imageResourcesPath || "", + renderForms: parameters.renderForms !== false, + svgFactory: new _display_utils.DOMSVGFactory(), + annotationStorage: parameters.annotationStorage || new _annotation_storage.AnnotationStorage(), + enableScripting: parameters.enableScripting, + hasJSActions: parameters.hasJSActions, + fieldObjects: parameters.fieldObjects, + mouseState: parameters.mouseState || { + isDown: false + } + }); + + if (element.isRenderable) { + const rendered = element.render(); + + if (data.hidden) { + rendered.style.visibility = "hidden"; + } + + if (Array.isArray(rendered)) { + for (const renderedElement of rendered) { + div.appendChild(renderedElement); + } + } else { + if (element instanceof PopupAnnotationElement) { + div.prepend(rendered); + } else { + div.appendChild(rendered); + } + } + } + } + + this.#setAnnotationCanvasMap(div, parameters.annotationCanvasMap); + } + + static update(parameters) { + const { + page, + viewport, + annotations, + annotationCanvasMap, + div + } = parameters; + const transform = viewport.transform; + const matrix = `matrix(${transform.join(",")})`; + let scale, ownMatrix; + + for (const data of annotations) { + const elements = div.querySelectorAll(`[data-annotation-id="${data.id}"]`); + + if (elements) { + for (const element of elements) { + if (data.hasOwnCanvas) { + const rect = _util.Util.normalizeRect([data.rect[0], page.view[3] - data.rect[1] + page.view[1], data.rect[2], page.view[3] - data.rect[3] + page.view[1]]); + + if (!ownMatrix) { + scale = Math.abs(transform[0] || transform[1]); + const ownTransform = transform.slice(); + + for (let i = 0; i < 4; i++) { + ownTransform[i] = Math.sign(ownTransform[i]); + } + + ownMatrix = `matrix(${ownTransform.join(",")})`; + } + + const left = rect[0] * scale; + const top = rect[1] * scale; + element.style.left = `${left}px`; + element.style.top = `${top}px`; + element.style.transformOrigin = `${-left}px ${-top}px`; + element.style.transform = ownMatrix; + } else { + element.style.transform = matrix; + } + } + } + } + + this.#setAnnotationCanvasMap(div, annotationCanvasMap); + div.hidden = false; + } + + static #setAnnotationCanvasMap(div, annotationCanvasMap) { + if (!annotationCanvasMap) { + return; + } + + for (const [id, canvas] of annotationCanvasMap) { + const element = div.querySelector(`[data-annotation-id="${id}"]`); + + if (!element) { + continue; + } + + const { + firstChild + } = element; + + if (firstChild.nodeName === "CANVAS") { + element.replaceChild(canvas, firstChild); + } else { + element.insertBefore(canvas, firstChild); + } + } + + annotationCanvasMap.clear(); + } + +} + +exports.AnnotationLayer = AnnotationLayer; + +/***/ }), +/* 21 */ +/***/ ((__unused_webpack_module, exports) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.ColorConverters = void 0; + +function makeColorComp(n) { + return Math.floor(Math.max(0, Math.min(1, n)) * 255).toString(16).padStart(2, "0"); +} + +class ColorConverters { + static CMYK_G([c, y, m, k]) { + return ["G", 1 - Math.min(1, 0.3 * c + 0.59 * m + 0.11 * y + k)]; + } + + static G_CMYK([g]) { + return ["CMYK", 0, 0, 0, 1 - g]; + } + + static G_RGB([g]) { + return ["RGB", g, g, g]; + } + + static G_HTML([g]) { + const G = makeColorComp(g); + return `#${G}${G}${G}`; + } + + static RGB_G([r, g, b]) { + return ["G", 0.3 * r + 0.59 * g + 0.11 * b]; + } + + static RGB_HTML([r, g, b]) { + const R = makeColorComp(r); + const G = makeColorComp(g); + const B = makeColorComp(b); + return `#${R}${G}${B}`; + } + + static T_HTML() { + return "#00000000"; + } + + static CMYK_RGB([c, y, m, k]) { + return ["RGB", 1 - Math.min(1, c + k), 1 - Math.min(1, m + k), 1 - Math.min(1, y + k)]; + } + + static CMYK_HTML(components) { + return this.RGB_HTML(this.CMYK_RGB(components)); + } + + static RGB_CMYK([r, g, b]) { + const c = 1 - r; + const m = 1 - g; + const y = 1 - b; + const k = Math.min(c, m, y); + return ["CMYK", c, m, y, k]; + } + +} + +exports.ColorConverters = ColorConverters; + +/***/ }), +/* 22 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.XfaLayer = void 0; + +var _xfa_text = __w_pdfjs_require__(18); + +class XfaLayer { + static setupStorage(html, id, element, storage, intent) { + const storedData = storage.getValue(id, { + value: null + }); + + switch (element.name) { + case "textarea": + if (storedData.value !== null) { + html.textContent = storedData.value; + } + + if (intent === "print") { + break; + } + + html.addEventListener("input", event => { + storage.setValue(id, { + value: event.target.value + }); + }); + break; + + case "input": + if (element.attributes.type === "radio" || element.attributes.type === "checkbox") { + if (storedData.value === element.attributes.xfaOn) { + html.setAttribute("checked", true); + } else if (storedData.value === element.attributes.xfaOff) { + html.removeAttribute("checked"); + } + + if (intent === "print") { + break; + } + + html.addEventListener("change", event => { + storage.setValue(id, { + value: event.target.checked ? event.target.getAttribute("xfaOn") : event.target.getAttribute("xfaOff") + }); + }); + } else { + if (storedData.value !== null) { + html.setAttribute("value", storedData.value); + } + + if (intent === "print") { + break; + } + + html.addEventListener("input", event => { + storage.setValue(id, { + value: event.target.value + }); + }); + } + + break; + + case "select": + if (storedData.value !== null) { + for (const option of element.children) { + if (option.attributes.value === storedData.value) { + option.attributes.selected = true; + } + } + } + + html.addEventListener("input", event => { + const options = event.target.options; + const value = options.selectedIndex === -1 ? "" : options[options.selectedIndex].value; + storage.setValue(id, { + value + }); + }); + break; + } + } + + static setAttributes({ + html, + element, + storage = null, + intent, + linkService + }) { + const { + attributes + } = element; + const isHTMLAnchorElement = html instanceof HTMLAnchorElement; + + if (attributes.type === "radio") { + attributes.name = `${attributes.name}-${intent}`; + } + + for (const [key, value] of Object.entries(attributes)) { + if (value === null || value === undefined || key === "dataId") { + continue; + } + + if (key !== "style") { + if (key === "textContent") { + html.textContent = value; + } else if (key === "class") { + if (value.length) { + html.setAttribute(key, value.join(" ")); + } + } else { + if (isHTMLAnchorElement && (key === "href" || key === "newWindow")) { + continue; + } + + html.setAttribute(key, value); + } + } else { + Object.assign(html.style, value); + } + } + + if (isHTMLAnchorElement) { + linkService.addLinkAttributes(html, attributes.href, attributes.newWindow); + } + + if (storage && attributes.dataId) { + this.setupStorage(html, attributes.dataId, element, storage); + } + } + + static render(parameters) { + const storage = parameters.annotationStorage; + const linkService = parameters.linkService; + const root = parameters.xfaHtml; + const intent = parameters.intent || "display"; + const rootHtml = document.createElement(root.name); + + if (root.attributes) { + this.setAttributes({ + html: rootHtml, + element: root, + intent, + linkService + }); + } + + const stack = [[root, -1, rootHtml]]; + const rootDiv = parameters.div; + rootDiv.appendChild(rootHtml); + + if (parameters.viewport) { + const transform = `matrix(${parameters.viewport.transform.join(",")})`; + rootDiv.style.transform = transform; + } + + if (intent !== "richText") { + rootDiv.setAttribute("class", "xfaLayer xfaFont"); + } + + const textDivs = []; + + while (stack.length > 0) { + const [parent, i, html] = stack[stack.length - 1]; + + if (i + 1 === parent.children.length) { + stack.pop(); + continue; + } + + const child = parent.children[++stack[stack.length - 1][1]]; + + if (child === null) { + continue; + } + + const { + name + } = child; + + if (name === "#text") { + const node = document.createTextNode(child.value); + textDivs.push(node); + html.appendChild(node); + continue; + } + + let childHtml; + + if (child?.attributes?.xmlns) { + childHtml = document.createElementNS(child.attributes.xmlns, name); + } else { + childHtml = document.createElement(name); + } + + html.appendChild(childHtml); + + if (child.attributes) { + this.setAttributes({ + html: childHtml, + element: child, + storage, + intent, + linkService + }); + } + + if (child.children && child.children.length > 0) { + stack.push([child, -1, childHtml]); + } else if (child.value) { + const node = document.createTextNode(child.value); + + if (_xfa_text.XfaText.shouldBuildText(name)) { + textDivs.push(node); + } + + childHtml.appendChild(node); + } + } + + for (const el of rootDiv.querySelectorAll(".xfaNonInteractive input, .xfaNonInteractive textarea")) { + el.setAttribute("readOnly", true); + } + + return { + textDivs + }; + } + + static update(parameters) { + const transform = `matrix(${parameters.viewport.transform.join(",")})`; + parameters.div.style.transform = transform; + parameters.div.hidden = false; + } + +} + +exports.XfaLayer = XfaLayer; + +/***/ }), +/* 23 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.renderTextLayer = renderTextLayer; + +var _util = __w_pdfjs_require__(1); + +const MAX_TEXT_DIVS_TO_RENDER = 100000; +const DEFAULT_FONT_SIZE = 30; +const DEFAULT_FONT_ASCENT = 0.8; +const ascentCache = new Map(); +const AllWhitespaceRegexp = /^\s+$/g; + +function getAscent(fontFamily, ctx) { + const cachedAscent = ascentCache.get(fontFamily); + + if (cachedAscent) { + return cachedAscent; + } + + ctx.save(); + ctx.font = `${DEFAULT_FONT_SIZE}px ${fontFamily}`; + const metrics = ctx.measureText(""); + let ascent = metrics.fontBoundingBoxAscent; + let descent = Math.abs(metrics.fontBoundingBoxDescent); + + if (ascent) { + ctx.restore(); + const ratio = ascent / (ascent + descent); + ascentCache.set(fontFamily, ratio); + return ratio; + } + + ctx.strokeStyle = "red"; + ctx.clearRect(0, 0, DEFAULT_FONT_SIZE, DEFAULT_FONT_SIZE); + ctx.strokeText("g", 0, 0); + let pixels = ctx.getImageData(0, 0, DEFAULT_FONT_SIZE, DEFAULT_FONT_SIZE).data; + descent = 0; + + for (let i = pixels.length - 1 - 3; i >= 0; i -= 4) { + if (pixels[i] > 0) { + descent = Math.ceil(i / 4 / DEFAULT_FONT_SIZE); + break; + } + } + + ctx.clearRect(0, 0, DEFAULT_FONT_SIZE, DEFAULT_FONT_SIZE); + ctx.strokeText("A", 0, DEFAULT_FONT_SIZE); + pixels = ctx.getImageData(0, 0, DEFAULT_FONT_SIZE, DEFAULT_FONT_SIZE).data; + ascent = 0; + + for (let i = 0, ii = pixels.length; i < ii; i += 4) { + if (pixels[i] > 0) { + ascent = DEFAULT_FONT_SIZE - Math.floor(i / 4 / DEFAULT_FONT_SIZE); + break; + } + } + + ctx.restore(); + + if (ascent) { + const ratio = ascent / (ascent + descent); + ascentCache.set(fontFamily, ratio); + return ratio; + } + + ascentCache.set(fontFamily, DEFAULT_FONT_ASCENT); + return DEFAULT_FONT_ASCENT; +} + +function appendText(task, geom, styles, ctx) { + const textDiv = document.createElement("span"); + const textDivProperties = task._enhanceTextSelection ? { + angle: 0, + canvasWidth: 0, + hasText: geom.str !== "", + hasEOL: geom.hasEOL, + originalTransform: null, + paddingBottom: 0, + paddingLeft: 0, + paddingRight: 0, + paddingTop: 0, + scale: 1 + } : { + angle: 0, + canvasWidth: 0, + hasText: geom.str !== "", + hasEOL: geom.hasEOL + }; + + task._textDivs.push(textDiv); + + const tx = _util.Util.transform(task._viewport.transform, geom.transform); + + let angle = Math.atan2(tx[1], tx[0]); + const style = styles[geom.fontName]; + + if (style.vertical) { + angle += Math.PI / 2; + } + + const fontHeight = Math.hypot(tx[2], tx[3]); + const fontAscent = fontHeight * getAscent(style.fontFamily, ctx); + let left, top; + + if (angle === 0) { + left = tx[4]; + top = tx[5] - fontAscent; + } else { + left = tx[4] + fontAscent * Math.sin(angle); + top = tx[5] - fontAscent * Math.cos(angle); + } + + textDiv.style.left = `${left}px`; + textDiv.style.top = `${top}px`; + textDiv.style.fontSize = `${fontHeight}px`; + textDiv.style.fontFamily = style.fontFamily; + textDiv.setAttribute("role", "presentation"); + textDiv.textContent = geom.str; + textDiv.dir = geom.dir; + + if (task._fontInspectorEnabled) { + textDiv.dataset.fontName = geom.fontName; + } + + if (angle !== 0) { + textDivProperties.angle = angle * (180 / Math.PI); + } + + let shouldScaleText = false; + + if (geom.str.length > 1 || task._enhanceTextSelection && AllWhitespaceRegexp.test(geom.str)) { + shouldScaleText = true; + } else if (geom.str !== " " && geom.transform[0] !== geom.transform[3]) { + const absScaleX = Math.abs(geom.transform[0]), + absScaleY = Math.abs(geom.transform[3]); + + if (absScaleX !== absScaleY && Math.max(absScaleX, absScaleY) / Math.min(absScaleX, absScaleY) > 1.5) { + shouldScaleText = true; + } + } + + if (shouldScaleText) { + if (style.vertical) { + textDivProperties.canvasWidth = geom.height * task._viewport.scale; + } else { + textDivProperties.canvasWidth = geom.width * task._viewport.scale; + } + } + + task._textDivProperties.set(textDiv, textDivProperties); + + if (task._textContentStream) { + task._layoutText(textDiv); + } + + if (task._enhanceTextSelection && textDivProperties.hasText) { + let angleCos = 1, + angleSin = 0; + + if (angle !== 0) { + angleCos = Math.cos(angle); + angleSin = Math.sin(angle); + } + + const divWidth = (style.vertical ? geom.height : geom.width) * task._viewport.scale; + const divHeight = fontHeight; + let m, b; + + if (angle !== 0) { + m = [angleCos, angleSin, -angleSin, angleCos, left, top]; + b = _util.Util.getAxialAlignedBoundingBox([0, 0, divWidth, divHeight], m); + } else { + b = [left, top, left + divWidth, top + divHeight]; + } + + task._bounds.push({ + left: b[0], + top: b[1], + right: b[2], + bottom: b[3], + div: textDiv, + size: [divWidth, divHeight], + m + }); + } +} + +function render(task) { + if (task._canceled) { + return; + } + + const textDivs = task._textDivs; + const capability = task._capability; + const textDivsLength = textDivs.length; + + if (textDivsLength > MAX_TEXT_DIVS_TO_RENDER) { + task._renderingDone = true; + capability.resolve(); + return; + } + + if (!task._textContentStream) { + for (let i = 0; i < textDivsLength; i++) { + task._layoutText(textDivs[i]); + } + } + + task._renderingDone = true; + capability.resolve(); +} + +function findPositiveMin(ts, offset, count) { + let result = 0; + + for (let i = 0; i < count; i++) { + const t = ts[offset++]; + + if (t > 0) { + result = result ? Math.min(t, result) : t; + } + } + + return result; +} + +function expand(task) { + const bounds = task._bounds; + const viewport = task._viewport; + const expanded = expandBounds(viewport.width, viewport.height, bounds); + + for (let i = 0; i < expanded.length; i++) { + const div = bounds[i].div; + + const divProperties = task._textDivProperties.get(div); + + if (divProperties.angle === 0) { + divProperties.paddingLeft = bounds[i].left - expanded[i].left; + divProperties.paddingTop = bounds[i].top - expanded[i].top; + divProperties.paddingRight = expanded[i].right - bounds[i].right; + divProperties.paddingBottom = expanded[i].bottom - bounds[i].bottom; + + task._textDivProperties.set(div, divProperties); + + continue; + } + + const e = expanded[i], + b = bounds[i]; + const m = b.m, + c = m[0], + s = m[1]; + const points = [[0, 0], [0, b.size[1]], [b.size[0], 0], b.size]; + const ts = new Float64Array(64); + + for (let j = 0, jj = points.length; j < jj; j++) { + const t = _util.Util.applyTransform(points[j], m); + + ts[j + 0] = c && (e.left - t[0]) / c; + ts[j + 4] = s && (e.top - t[1]) / s; + ts[j + 8] = c && (e.right - t[0]) / c; + ts[j + 12] = s && (e.bottom - t[1]) / s; + ts[j + 16] = s && (e.left - t[0]) / -s; + ts[j + 20] = c && (e.top - t[1]) / c; + ts[j + 24] = s && (e.right - t[0]) / -s; + ts[j + 28] = c && (e.bottom - t[1]) / c; + ts[j + 32] = c && (e.left - t[0]) / -c; + ts[j + 36] = s && (e.top - t[1]) / -s; + ts[j + 40] = c && (e.right - t[0]) / -c; + ts[j + 44] = s && (e.bottom - t[1]) / -s; + ts[j + 48] = s && (e.left - t[0]) / s; + ts[j + 52] = c && (e.top - t[1]) / -c; + ts[j + 56] = s && (e.right - t[0]) / s; + ts[j + 60] = c && (e.bottom - t[1]) / -c; + } + + const boxScale = 1 + Math.min(Math.abs(c), Math.abs(s)); + divProperties.paddingLeft = findPositiveMin(ts, 32, 16) / boxScale; + divProperties.paddingTop = findPositiveMin(ts, 48, 16) / boxScale; + divProperties.paddingRight = findPositiveMin(ts, 0, 16) / boxScale; + divProperties.paddingBottom = findPositiveMin(ts, 16, 16) / boxScale; + + task._textDivProperties.set(div, divProperties); + } +} + +function expandBounds(width, height, boxes) { + const bounds = boxes.map(function (box, i) { + return { + x1: box.left, + y1: box.top, + x2: box.right, + y2: box.bottom, + index: i, + x1New: undefined, + x2New: undefined + }; + }); + expandBoundsLTR(width, bounds); + const expanded = new Array(boxes.length); + + for (const b of bounds) { + const i = b.index; + expanded[i] = { + left: b.x1New, + top: 0, + right: b.x2New, + bottom: 0 + }; + } + + boxes.map(function (box, i) { + const e = expanded[i], + b = bounds[i]; + b.x1 = box.top; + b.y1 = width - e.right; + b.x2 = box.bottom; + b.y2 = width - e.left; + b.index = i; + b.x1New = undefined; + b.x2New = undefined; + }); + expandBoundsLTR(height, bounds); + + for (const b of bounds) { + const i = b.index; + expanded[i].top = b.x1New; + expanded[i].bottom = b.x2New; + } + + return expanded; +} + +function expandBoundsLTR(width, bounds) { + bounds.sort(function (a, b) { + return a.x1 - b.x1 || a.index - b.index; + }); + const fakeBoundary = { + x1: -Infinity, + y1: -Infinity, + x2: 0, + y2: Infinity, + index: -1, + x1New: 0, + x2New: 0 + }; + const horizon = [{ + start: -Infinity, + end: Infinity, + boundary: fakeBoundary + }]; + + for (const boundary of bounds) { + let i = 0; + + while (i < horizon.length && horizon[i].end <= boundary.y1) { + i++; + } + + let j = horizon.length - 1; + + while (j >= 0 && horizon[j].start >= boundary.y2) { + j--; + } + + let horizonPart, affectedBoundary; + let q, + k, + maxXNew = -Infinity; + + for (q = i; q <= j; q++) { + horizonPart = horizon[q]; + affectedBoundary = horizonPart.boundary; + let xNew; + + if (affectedBoundary.x2 > boundary.x1) { + xNew = affectedBoundary.index > boundary.index ? affectedBoundary.x1New : boundary.x1; + } else if (affectedBoundary.x2New === undefined) { + xNew = (affectedBoundary.x2 + boundary.x1) / 2; + } else { + xNew = affectedBoundary.x2New; + } + + if (xNew > maxXNew) { + maxXNew = xNew; + } + } + + boundary.x1New = maxXNew; + + for (q = i; q <= j; q++) { + horizonPart = horizon[q]; + affectedBoundary = horizonPart.boundary; + + if (affectedBoundary.x2New === undefined) { + if (affectedBoundary.x2 > boundary.x1) { + if (affectedBoundary.index > boundary.index) { + affectedBoundary.x2New = affectedBoundary.x2; + } + } else { + affectedBoundary.x2New = maxXNew; + } + } else if (affectedBoundary.x2New > maxXNew) { + affectedBoundary.x2New = Math.max(maxXNew, affectedBoundary.x2); + } + } + + const changedHorizon = []; + let lastBoundary = null; + + for (q = i; q <= j; q++) { + horizonPart = horizon[q]; + affectedBoundary = horizonPart.boundary; + const useBoundary = affectedBoundary.x2 > boundary.x2 ? affectedBoundary : boundary; + + if (lastBoundary === useBoundary) { + changedHorizon[changedHorizon.length - 1].end = horizonPart.end; + } else { + changedHorizon.push({ + start: horizonPart.start, + end: horizonPart.end, + boundary: useBoundary + }); + lastBoundary = useBoundary; + } + } + + if (horizon[i].start < boundary.y1) { + changedHorizon[0].start = boundary.y1; + changedHorizon.unshift({ + start: horizon[i].start, + end: boundary.y1, + boundary: horizon[i].boundary + }); + } + + if (boundary.y2 < horizon[j].end) { + changedHorizon[changedHorizon.length - 1].end = boundary.y2; + changedHorizon.push({ + start: boundary.y2, + end: horizon[j].end, + boundary: horizon[j].boundary + }); + } + + for (q = i; q <= j; q++) { + horizonPart = horizon[q]; + affectedBoundary = horizonPart.boundary; + + if (affectedBoundary.x2New !== undefined) { + continue; + } + + let used = false; + + for (k = i - 1; !used && k >= 0 && horizon[k].start >= affectedBoundary.y1; k--) { + used = horizon[k].boundary === affectedBoundary; + } + + for (k = j + 1; !used && k < horizon.length && horizon[k].end <= affectedBoundary.y2; k++) { + used = horizon[k].boundary === affectedBoundary; + } + + for (k = 0; !used && k < changedHorizon.length; k++) { + used = changedHorizon[k].boundary === affectedBoundary; + } + + if (!used) { + affectedBoundary.x2New = maxXNew; + } + } + + Array.prototype.splice.apply(horizon, [i, j - i + 1].concat(changedHorizon)); + } + + for (const horizonPart of horizon) { + const affectedBoundary = horizonPart.boundary; + + if (affectedBoundary.x2New === undefined) { + affectedBoundary.x2New = Math.max(width, affectedBoundary.x2); + } + } +} + +class TextLayerRenderTask { + constructor({ + textContent, + textContentStream, + container, + viewport, + textDivs, + textContentItemsStr, + enhanceTextSelection + }) { + this._textContent = textContent; + this._textContentStream = textContentStream; + this._container = container; + this._document = container.ownerDocument; + this._viewport = viewport; + this._textDivs = textDivs || []; + this._textContentItemsStr = textContentItemsStr || []; + this._enhanceTextSelection = !!enhanceTextSelection; + this._fontInspectorEnabled = !!globalThis.FontInspector?.enabled; + this._reader = null; + this._layoutTextLastFontSize = null; + this._layoutTextLastFontFamily = null; + this._layoutTextCtx = null; + this._textDivProperties = new WeakMap(); + this._renderingDone = false; + this._canceled = false; + this._capability = (0, _util.createPromiseCapability)(); + this._renderTimer = null; + this._bounds = []; + + this._capability.promise.finally(() => { + if (!this._enhanceTextSelection) { + this._textDivProperties = null; + } + + if (this._layoutTextCtx) { + this._layoutTextCtx.canvas.width = 0; + this._layoutTextCtx.canvas.height = 0; + this._layoutTextCtx = null; + } + }).catch(() => {}); + } + + get promise() { + return this._capability.promise; + } + + cancel() { + this._canceled = true; + + if (this._reader) { + this._reader.cancel(new _util.AbortException("TextLayer task cancelled.")).catch(() => {}); + + this._reader = null; + } + + if (this._renderTimer !== null) { + clearTimeout(this._renderTimer); + this._renderTimer = null; + } + + this._capability.reject(new Error("TextLayer task cancelled.")); + } + + _processItems(items, styleCache) { + for (let i = 0, len = items.length; i < len; i++) { + if (items[i].str === undefined) { + if (items[i].type === "beginMarkedContentProps" || items[i].type === "beginMarkedContent") { + const parent = this._container; + this._container = document.createElement("span"); + + this._container.classList.add("markedContent"); + + if (items[i].id !== null) { + this._container.setAttribute("id", `${items[i].id}`); + } + + parent.appendChild(this._container); + } else if (items[i].type === "endMarkedContent") { + this._container = this._container.parentNode; + } + + continue; + } + + this._textContentItemsStr.push(items[i].str); + + appendText(this, items[i], styleCache, this._layoutTextCtx); + } + } + + _layoutText(textDiv) { + const textDivProperties = this._textDivProperties.get(textDiv); + + let transform = ""; + + if (textDivProperties.canvasWidth !== 0 && textDivProperties.hasText) { + const { + fontSize, + fontFamily + } = textDiv.style; + + if (fontSize !== this._layoutTextLastFontSize || fontFamily !== this._layoutTextLastFontFamily) { + this._layoutTextCtx.font = `${fontSize} ${fontFamily}`; + this._layoutTextLastFontSize = fontSize; + this._layoutTextLastFontFamily = fontFamily; + } + + const { + width + } = this._layoutTextCtx.measureText(textDiv.textContent); + + if (width > 0) { + const scale = textDivProperties.canvasWidth / width; + + if (this._enhanceTextSelection) { + textDivProperties.scale = scale; + } + + transform = `scaleX(${scale})`; + } + } + + if (textDivProperties.angle !== 0) { + transform = `rotate(${textDivProperties.angle}deg) ${transform}`; + } + + if (transform.length > 0) { + if (this._enhanceTextSelection) { + textDivProperties.originalTransform = transform; + } + + textDiv.style.transform = transform; + } + + if (textDivProperties.hasText) { + this._container.appendChild(textDiv); + } + + if (textDivProperties.hasEOL) { + const br = document.createElement("br"); + br.setAttribute("role", "presentation"); + + this._container.appendChild(br); + } + } + + _render(timeout = 0) { + const capability = (0, _util.createPromiseCapability)(); + let styleCache = Object.create(null); + + const canvas = this._document.createElement("canvas"); + + canvas.height = canvas.width = DEFAULT_FONT_SIZE; + this._layoutTextCtx = canvas.getContext("2d", { + alpha: false + }); + + if (this._textContent) { + const textItems = this._textContent.items; + const textStyles = this._textContent.styles; + + this._processItems(textItems, textStyles); + + capability.resolve(); + } else if (this._textContentStream) { + const pump = () => { + this._reader.read().then(({ + value, + done + }) => { + if (done) { + capability.resolve(); + return; + } + + Object.assign(styleCache, value.styles); + + this._processItems(value.items, styleCache); + + pump(); + }, capability.reject); + }; + + this._reader = this._textContentStream.getReader(); + pump(); + } else { + throw new Error('Neither "textContent" nor "textContentStream" parameters specified.'); + } + + capability.promise.then(() => { + styleCache = null; + + if (!timeout) { + render(this); + } else { + this._renderTimer = setTimeout(() => { + render(this); + this._renderTimer = null; + }, timeout); + } + }, this._capability.reject); + } + + expandTextDivs(expandDivs = false) { + if (!this._enhanceTextSelection || !this._renderingDone) { + return; + } + + if (this._bounds !== null) { + expand(this); + this._bounds = null; + } + + const transformBuf = [], + paddingBuf = []; + + for (let i = 0, ii = this._textDivs.length; i < ii; i++) { + const div = this._textDivs[i]; + + const divProps = this._textDivProperties.get(div); + + if (!divProps.hasText) { + continue; + } + + if (expandDivs) { + transformBuf.length = 0; + paddingBuf.length = 0; + + if (divProps.originalTransform) { + transformBuf.push(divProps.originalTransform); + } + + if (divProps.paddingTop > 0) { + paddingBuf.push(`${divProps.paddingTop}px`); + transformBuf.push(`translateY(${-divProps.paddingTop}px)`); + } else { + paddingBuf.push(0); + } + + if (divProps.paddingRight > 0) { + paddingBuf.push(`${divProps.paddingRight / divProps.scale}px`); + } else { + paddingBuf.push(0); + } + + if (divProps.paddingBottom > 0) { + paddingBuf.push(`${divProps.paddingBottom}px`); + } else { + paddingBuf.push(0); + } + + if (divProps.paddingLeft > 0) { + paddingBuf.push(`${divProps.paddingLeft / divProps.scale}px`); + transformBuf.push(`translateX(${-divProps.paddingLeft / divProps.scale}px)`); + } else { + paddingBuf.push(0); + } + + div.style.padding = paddingBuf.join(" "); + + if (transformBuf.length) { + div.style.transform = transformBuf.join(" "); + } + } else { + div.style.padding = null; + div.style.transform = divProps.originalTransform; + } + } + } + +} + +function renderTextLayer(renderParameters) { + const task = new TextLayerRenderTask({ + textContent: renderParameters.textContent, + textContentStream: renderParameters.textContentStream, + container: renderParameters.container, + viewport: renderParameters.viewport, + textDivs: renderParameters.textDivs, + textContentItemsStr: renderParameters.textContentItemsStr, + enhanceTextSelection: renderParameters.enhanceTextSelection + }); + + task._render(renderParameters.timeout); + + return task; +} + +/***/ }), +/* 24 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.SVGGraphics = void 0; + +var _util = __w_pdfjs_require__(1); + +var _display_utils = __w_pdfjs_require__(5); + +var _is_node = __w_pdfjs_require__(3); + +let SVGGraphics = class { + constructor() { + (0, _util.unreachable)("Not implemented: SVGGraphics"); + } + +}; +exports.SVGGraphics = SVGGraphics; +{ + const SVG_DEFAULTS = { + fontStyle: "normal", + fontWeight: "normal", + fillColor: "#000000" + }; + const XML_NS = "http://www.w3.org/XML/1998/namespace"; + const XLINK_NS = "http://www.w3.org/1999/xlink"; + const LINE_CAP_STYLES = ["butt", "round", "square"]; + const LINE_JOIN_STYLES = ["miter", "round", "bevel"]; + + const createObjectURL = function (data, contentType = "", forceDataSchema = false) { + if (URL.createObjectURL && typeof Blob !== "undefined" && !forceDataSchema) { + return URL.createObjectURL(new Blob([data], { + type: contentType + })); + } + + const digits = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="; + let buffer = `data:${contentType};base64,`; + + for (let i = 0, ii = data.length; i < ii; i += 3) { + const b1 = data[i] & 0xff; + const b2 = data[i + 1] & 0xff; + const b3 = data[i + 2] & 0xff; + const d1 = b1 >> 2, + d2 = (b1 & 3) << 4 | b2 >> 4; + const d3 = i + 1 < ii ? (b2 & 0xf) << 2 | b3 >> 6 : 64; + const d4 = i + 2 < ii ? b3 & 0x3f : 64; + buffer += digits[d1] + digits[d2] + digits[d3] + digits[d4]; + } + + return buffer; + }; + + const convertImgDataToPng = function () { + const PNG_HEADER = new Uint8Array([0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a]); + const CHUNK_WRAPPER_SIZE = 12; + const crcTable = new Int32Array(256); + + for (let i = 0; i < 256; i++) { + let c = i; + + for (let h = 0; h < 8; h++) { + if (c & 1) { + c = 0xedb88320 ^ c >> 1 & 0x7fffffff; + } else { + c = c >> 1 & 0x7fffffff; + } + } + + crcTable[i] = c; + } + + function crc32(data, start, end) { + let crc = -1; + + for (let i = start; i < end; i++) { + const a = (crc ^ data[i]) & 0xff; + const b = crcTable[a]; + crc = crc >>> 8 ^ b; + } + + return crc ^ -1; + } + + function writePngChunk(type, body, data, offset) { + let p = offset; + const len = body.length; + data[p] = len >> 24 & 0xff; + data[p + 1] = len >> 16 & 0xff; + data[p + 2] = len >> 8 & 0xff; + data[p + 3] = len & 0xff; + p += 4; + data[p] = type.charCodeAt(0) & 0xff; + data[p + 1] = type.charCodeAt(1) & 0xff; + data[p + 2] = type.charCodeAt(2) & 0xff; + data[p + 3] = type.charCodeAt(3) & 0xff; + p += 4; + data.set(body, p); + p += body.length; + const crc = crc32(data, offset + 4, p); + data[p] = crc >> 24 & 0xff; + data[p + 1] = crc >> 16 & 0xff; + data[p + 2] = crc >> 8 & 0xff; + data[p + 3] = crc & 0xff; + } + + function adler32(data, start, end) { + let a = 1; + let b = 0; + + for (let i = start; i < end; ++i) { + a = (a + (data[i] & 0xff)) % 65521; + b = (b + a) % 65521; + } + + return b << 16 | a; + } + + function deflateSync(literals) { + if (!_is_node.isNodeJS) { + return deflateSyncUncompressed(literals); + } + + try { + let input; + + if (parseInt(process.versions.node) >= 8) { + input = literals; + } else { + input = Buffer.from(literals); + } + + const output = require("zlib").deflateSync(input, { + level: 9 + }); + + return output instanceof Uint8Array ? output : new Uint8Array(output); + } catch (e) { + (0, _util.warn)("Not compressing PNG because zlib.deflateSync is unavailable: " + e); + } + + return deflateSyncUncompressed(literals); + } + + function deflateSyncUncompressed(literals) { + let len = literals.length; + const maxBlockLength = 0xffff; + const deflateBlocks = Math.ceil(len / maxBlockLength); + const idat = new Uint8Array(2 + len + deflateBlocks * 5 + 4); + let pi = 0; + idat[pi++] = 0x78; + idat[pi++] = 0x9c; + let pos = 0; + + while (len > maxBlockLength) { + idat[pi++] = 0x00; + idat[pi++] = 0xff; + idat[pi++] = 0xff; + idat[pi++] = 0x00; + idat[pi++] = 0x00; + idat.set(literals.subarray(pos, pos + maxBlockLength), pi); + pi += maxBlockLength; + pos += maxBlockLength; + len -= maxBlockLength; + } + + idat[pi++] = 0x01; + idat[pi++] = len & 0xff; + idat[pi++] = len >> 8 & 0xff; + idat[pi++] = ~len & 0xffff & 0xff; + idat[pi++] = (~len & 0xffff) >> 8 & 0xff; + idat.set(literals.subarray(pos), pi); + pi += literals.length - pos; + const adler = adler32(literals, 0, literals.length); + idat[pi++] = adler >> 24 & 0xff; + idat[pi++] = adler >> 16 & 0xff; + idat[pi++] = adler >> 8 & 0xff; + idat[pi++] = adler & 0xff; + return idat; + } + + function encode(imgData, kind, forceDataSchema, isMask) { + const width = imgData.width; + const height = imgData.height; + let bitDepth, colorType, lineSize; + const bytes = imgData.data; + + switch (kind) { + case _util.ImageKind.GRAYSCALE_1BPP: + colorType = 0; + bitDepth = 1; + lineSize = width + 7 >> 3; + break; + + case _util.ImageKind.RGB_24BPP: + colorType = 2; + bitDepth = 8; + lineSize = width * 3; + break; + + case _util.ImageKind.RGBA_32BPP: + colorType = 6; + bitDepth = 8; + lineSize = width * 4; + break; + + default: + throw new Error("invalid format"); + } + + const literals = new Uint8Array((1 + lineSize) * height); + let offsetLiterals = 0, + offsetBytes = 0; + + for (let y = 0; y < height; ++y) { + literals[offsetLiterals++] = 0; + literals.set(bytes.subarray(offsetBytes, offsetBytes + lineSize), offsetLiterals); + offsetBytes += lineSize; + offsetLiterals += lineSize; + } + + if (kind === _util.ImageKind.GRAYSCALE_1BPP && isMask) { + offsetLiterals = 0; + + for (let y = 0; y < height; y++) { + offsetLiterals++; + + for (let i = 0; i < lineSize; i++) { + literals[offsetLiterals++] ^= 0xff; + } + } + } + + const ihdr = new Uint8Array([width >> 24 & 0xff, width >> 16 & 0xff, width >> 8 & 0xff, width & 0xff, height >> 24 & 0xff, height >> 16 & 0xff, height >> 8 & 0xff, height & 0xff, bitDepth, colorType, 0x00, 0x00, 0x00]); + const idat = deflateSync(literals); + const pngLength = PNG_HEADER.length + CHUNK_WRAPPER_SIZE * 3 + ihdr.length + idat.length; + const data = new Uint8Array(pngLength); + let offset = 0; + data.set(PNG_HEADER, offset); + offset += PNG_HEADER.length; + writePngChunk("IHDR", ihdr, data, offset); + offset += CHUNK_WRAPPER_SIZE + ihdr.length; + writePngChunk("IDATA", idat, data, offset); + offset += CHUNK_WRAPPER_SIZE + idat.length; + writePngChunk("IEND", new Uint8Array(0), data, offset); + return createObjectURL(data, "image/png", forceDataSchema); + } + + return function convertImgDataToPng(imgData, forceDataSchema, isMask) { + const kind = imgData.kind === undefined ? _util.ImageKind.GRAYSCALE_1BPP : imgData.kind; + return encode(imgData, kind, forceDataSchema, isMask); + }; + }(); + + class SVGExtraState { + constructor() { + this.fontSizeScale = 1; + this.fontWeight = SVG_DEFAULTS.fontWeight; + this.fontSize = 0; + this.textMatrix = _util.IDENTITY_MATRIX; + this.fontMatrix = _util.FONT_IDENTITY_MATRIX; + this.leading = 0; + this.textRenderingMode = _util.TextRenderingMode.FILL; + this.textMatrixScale = 1; + this.x = 0; + this.y = 0; + this.lineX = 0; + this.lineY = 0; + this.charSpacing = 0; + this.wordSpacing = 0; + this.textHScale = 1; + this.textRise = 0; + this.fillColor = SVG_DEFAULTS.fillColor; + this.strokeColor = "#000000"; + this.fillAlpha = 1; + this.strokeAlpha = 1; + this.lineWidth = 1; + this.lineJoin = ""; + this.lineCap = ""; + this.miterLimit = 0; + this.dashArray = []; + this.dashPhase = 0; + this.dependencies = []; + this.activeClipUrl = null; + this.clipGroup = null; + this.maskId = ""; + } + + clone() { + return Object.create(this); + } + + setCurrentPoint(x, y) { + this.x = x; + this.y = y; + } + + } + + function opListToTree(opList) { + let opTree = []; + const tmp = []; + + for (const opListElement of opList) { + if (opListElement.fn === "save") { + opTree.push({ + fnId: 92, + fn: "group", + items: [] + }); + tmp.push(opTree); + opTree = opTree[opTree.length - 1].items; + continue; + } + + if (opListElement.fn === "restore") { + opTree = tmp.pop(); + } else { + opTree.push(opListElement); + } + } + + return opTree; + } + + function pf(value) { + if (Number.isInteger(value)) { + return value.toString(); + } + + const s = value.toFixed(10); + let i = s.length - 1; + + if (s[i] !== "0") { + return s; + } + + do { + i--; + } while (s[i] === "0"); + + return s.substring(0, s[i] === "." ? i : i + 1); + } + + function pm(m) { + if (m[4] === 0 && m[5] === 0) { + if (m[1] === 0 && m[2] === 0) { + if (m[0] === 1 && m[3] === 1) { + return ""; + } + + return `scale(${pf(m[0])} ${pf(m[3])})`; + } + + if (m[0] === m[3] && m[1] === -m[2]) { + const a = Math.acos(m[0]) * 180 / Math.PI; + return `rotate(${pf(a)})`; + } + } else { + if (m[0] === 1 && m[1] === 0 && m[2] === 0 && m[3] === 1) { + return `translate(${pf(m[4])} ${pf(m[5])})`; + } + } + + return `matrix(${pf(m[0])} ${pf(m[1])} ${pf(m[2])} ${pf(m[3])} ${pf(m[4])} ` + `${pf(m[5])})`; + } + + let clipCount = 0; + let maskCount = 0; + let shadingCount = 0; + exports.SVGGraphics = SVGGraphics = class { + constructor(commonObjs, objs, forceDataSchema = false) { + this.svgFactory = new _display_utils.DOMSVGFactory(); + this.current = new SVGExtraState(); + this.transformMatrix = _util.IDENTITY_MATRIX; + this.transformStack = []; + this.extraStack = []; + this.commonObjs = commonObjs; + this.objs = objs; + this.pendingClip = null; + this.pendingEOFill = false; + this.embedFonts = false; + this.embeddedFonts = Object.create(null); + this.cssStyle = null; + this.forceDataSchema = !!forceDataSchema; + this._operatorIdMapping = []; + + for (const op in _util.OPS) { + this._operatorIdMapping[_util.OPS[op]] = op; + } + } + + save() { + this.transformStack.push(this.transformMatrix); + const old = this.current; + this.extraStack.push(old); + this.current = old.clone(); + } + + restore() { + this.transformMatrix = this.transformStack.pop(); + this.current = this.extraStack.pop(); + this.pendingClip = null; + this.tgrp = null; + } + + group(items) { + this.save(); + this.executeOpTree(items); + this.restore(); + } + + loadDependencies(operatorList) { + const fnArray = operatorList.fnArray; + const argsArray = operatorList.argsArray; + + for (let i = 0, ii = fnArray.length; i < ii; i++) { + if (fnArray[i] !== _util.OPS.dependency) { + continue; + } + + for (const obj of argsArray[i]) { + const objsPool = obj.startsWith("g_") ? this.commonObjs : this.objs; + const promise = new Promise(resolve => { + objsPool.get(obj, resolve); + }); + this.current.dependencies.push(promise); + } + } + + return Promise.all(this.current.dependencies); + } + + transform(a, b, c, d, e, f) { + const transformMatrix = [a, b, c, d, e, f]; + this.transformMatrix = _util.Util.transform(this.transformMatrix, transformMatrix); + this.tgrp = null; + } + + getSVG(operatorList, viewport) { + this.viewport = viewport; + + const svgElement = this._initialize(viewport); + + return this.loadDependencies(operatorList).then(() => { + this.transformMatrix = _util.IDENTITY_MATRIX; + this.executeOpTree(this.convertOpList(operatorList)); + return svgElement; + }); + } + + convertOpList(operatorList) { + const operatorIdMapping = this._operatorIdMapping; + const argsArray = operatorList.argsArray; + const fnArray = operatorList.fnArray; + const opList = []; + + for (let i = 0, ii = fnArray.length; i < ii; i++) { + const fnId = fnArray[i]; + opList.push({ + fnId, + fn: operatorIdMapping[fnId], + args: argsArray[i] + }); + } + + return opListToTree(opList); + } + + executeOpTree(opTree) { + for (const opTreeElement of opTree) { + const fn = opTreeElement.fn; + const fnId = opTreeElement.fnId; + const args = opTreeElement.args; + + switch (fnId | 0) { + case _util.OPS.beginText: + this.beginText(); + break; + + case _util.OPS.dependency: + break; + + case _util.OPS.setLeading: + this.setLeading(args); + break; + + case _util.OPS.setLeadingMoveText: + this.setLeadingMoveText(args[0], args[1]); + break; + + case _util.OPS.setFont: + this.setFont(args); + break; + + case _util.OPS.showText: + this.showText(args[0]); + break; + + case _util.OPS.showSpacedText: + this.showText(args[0]); + break; + + case _util.OPS.endText: + this.endText(); + break; + + case _util.OPS.moveText: + this.moveText(args[0], args[1]); + break; + + case _util.OPS.setCharSpacing: + this.setCharSpacing(args[0]); + break; + + case _util.OPS.setWordSpacing: + this.setWordSpacing(args[0]); + break; + + case _util.OPS.setHScale: + this.setHScale(args[0]); + break; + + case _util.OPS.setTextMatrix: + this.setTextMatrix(args[0], args[1], args[2], args[3], args[4], args[5]); + break; + + case _util.OPS.setTextRise: + this.setTextRise(args[0]); + break; + + case _util.OPS.setTextRenderingMode: + this.setTextRenderingMode(args[0]); + break; + + case _util.OPS.setLineWidth: + this.setLineWidth(args[0]); + break; + + case _util.OPS.setLineJoin: + this.setLineJoin(args[0]); + break; + + case _util.OPS.setLineCap: + this.setLineCap(args[0]); + break; + + case _util.OPS.setMiterLimit: + this.setMiterLimit(args[0]); + break; + + case _util.OPS.setFillRGBColor: + this.setFillRGBColor(args[0], args[1], args[2]); + break; + + case _util.OPS.setStrokeRGBColor: + this.setStrokeRGBColor(args[0], args[1], args[2]); + break; + + case _util.OPS.setStrokeColorN: + this.setStrokeColorN(args); + break; + + case _util.OPS.setFillColorN: + this.setFillColorN(args); + break; + + case _util.OPS.shadingFill: + this.shadingFill(args[0]); + break; + + case _util.OPS.setDash: + this.setDash(args[0], args[1]); + break; + + case _util.OPS.setRenderingIntent: + this.setRenderingIntent(args[0]); + break; + + case _util.OPS.setFlatness: + this.setFlatness(args[0]); + break; + + case _util.OPS.setGState: + this.setGState(args[0]); + break; + + case _util.OPS.fill: + this.fill(); + break; + + case _util.OPS.eoFill: + this.eoFill(); + break; + + case _util.OPS.stroke: + this.stroke(); + break; + + case _util.OPS.fillStroke: + this.fillStroke(); + break; + + case _util.OPS.eoFillStroke: + this.eoFillStroke(); + break; + + case _util.OPS.clip: + this.clip("nonzero"); + break; + + case _util.OPS.eoClip: + this.clip("evenodd"); + break; + + case _util.OPS.paintSolidColorImageMask: + this.paintSolidColorImageMask(); + break; + + case _util.OPS.paintImageXObject: + this.paintImageXObject(args[0]); + break; + + case _util.OPS.paintInlineImageXObject: + this.paintInlineImageXObject(args[0]); + break; + + case _util.OPS.paintImageMaskXObject: + this.paintImageMaskXObject(args[0]); + break; + + case _util.OPS.paintFormXObjectBegin: + this.paintFormXObjectBegin(args[0], args[1]); + break; + + case _util.OPS.paintFormXObjectEnd: + this.paintFormXObjectEnd(); + break; + + case _util.OPS.closePath: + this.closePath(); + break; + + case _util.OPS.closeStroke: + this.closeStroke(); + break; + + case _util.OPS.closeFillStroke: + this.closeFillStroke(); + break; + + case _util.OPS.closeEOFillStroke: + this.closeEOFillStroke(); + break; + + case _util.OPS.nextLine: + this.nextLine(); + break; + + case _util.OPS.transform: + this.transform(args[0], args[1], args[2], args[3], args[4], args[5]); + break; + + case _util.OPS.constructPath: + this.constructPath(args[0], args[1]); + break; + + case _util.OPS.endPath: + this.endPath(); + break; + + case 92: + this.group(opTreeElement.items); + break; + + default: + (0, _util.warn)(`Unimplemented operator ${fn}`); + break; + } + } + } + + setWordSpacing(wordSpacing) { + this.current.wordSpacing = wordSpacing; + } + + setCharSpacing(charSpacing) { + this.current.charSpacing = charSpacing; + } + + nextLine() { + this.moveText(0, this.current.leading); + } + + setTextMatrix(a, b, c, d, e, f) { + const current = this.current; + current.textMatrix = current.lineMatrix = [a, b, c, d, e, f]; + current.textMatrixScale = Math.hypot(a, b); + current.x = current.lineX = 0; + current.y = current.lineY = 0; + current.xcoords = []; + current.ycoords = []; + current.tspan = this.svgFactory.createElement("svg:tspan"); + current.tspan.setAttributeNS(null, "font-family", current.fontFamily); + current.tspan.setAttributeNS(null, "font-size", `${pf(current.fontSize)}px`); + current.tspan.setAttributeNS(null, "y", pf(-current.y)); + current.txtElement = this.svgFactory.createElement("svg:text"); + current.txtElement.appendChild(current.tspan); + } + + beginText() { + const current = this.current; + current.x = current.lineX = 0; + current.y = current.lineY = 0; + current.textMatrix = _util.IDENTITY_MATRIX; + current.lineMatrix = _util.IDENTITY_MATRIX; + current.textMatrixScale = 1; + current.tspan = this.svgFactory.createElement("svg:tspan"); + current.txtElement = this.svgFactory.createElement("svg:text"); + current.txtgrp = this.svgFactory.createElement("svg:g"); + current.xcoords = []; + current.ycoords = []; + } + + moveText(x, y) { + const current = this.current; + current.x = current.lineX += x; + current.y = current.lineY += y; + current.xcoords = []; + current.ycoords = []; + current.tspan = this.svgFactory.createElement("svg:tspan"); + current.tspan.setAttributeNS(null, "font-family", current.fontFamily); + current.tspan.setAttributeNS(null, "font-size", `${pf(current.fontSize)}px`); + current.tspan.setAttributeNS(null, "y", pf(-current.y)); + } + + showText(glyphs) { + const current = this.current; + const font = current.font; + const fontSize = current.fontSize; + + if (fontSize === 0) { + return; + } + + const fontSizeScale = current.fontSizeScale; + const charSpacing = current.charSpacing; + const wordSpacing = current.wordSpacing; + const fontDirection = current.fontDirection; + const textHScale = current.textHScale * fontDirection; + const vertical = font.vertical; + const spacingDir = vertical ? 1 : -1; + const defaultVMetrics = font.defaultVMetrics; + const widthAdvanceScale = fontSize * current.fontMatrix[0]; + let x = 0; + + for (const glyph of glyphs) { + if (glyph === null) { + x += fontDirection * wordSpacing; + continue; + } else if (typeof glyph === "number") { + x += spacingDir * glyph * fontSize / 1000; + continue; + } + + const spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing; + const character = glyph.fontChar; + let scaledX, scaledY; + let width = glyph.width; + + if (vertical) { + let vx; + const vmetric = glyph.vmetric || defaultVMetrics; + vx = glyph.vmetric ? vmetric[1] : width * 0.5; + vx = -vx * widthAdvanceScale; + const vy = vmetric[2] * widthAdvanceScale; + width = vmetric ? -vmetric[0] : width; + scaledX = vx / fontSizeScale; + scaledY = (x + vy) / fontSizeScale; + } else { + scaledX = x / fontSizeScale; + scaledY = 0; + } + + if (glyph.isInFont || font.missingFile) { + current.xcoords.push(current.x + scaledX); + + if (vertical) { + current.ycoords.push(-current.y + scaledY); + } + + current.tspan.textContent += character; + } else {} + + let charWidth; + + if (vertical) { + charWidth = width * widthAdvanceScale - spacing * fontDirection; + } else { + charWidth = width * widthAdvanceScale + spacing * fontDirection; + } + + x += charWidth; + } + + current.tspan.setAttributeNS(null, "x", current.xcoords.map(pf).join(" ")); + + if (vertical) { + current.tspan.setAttributeNS(null, "y", current.ycoords.map(pf).join(" ")); + } else { + current.tspan.setAttributeNS(null, "y", pf(-current.y)); + } + + if (vertical) { + current.y -= x; + } else { + current.x += x * textHScale; + } + + current.tspan.setAttributeNS(null, "font-family", current.fontFamily); + current.tspan.setAttributeNS(null, "font-size", `${pf(current.fontSize)}px`); + + if (current.fontStyle !== SVG_DEFAULTS.fontStyle) { + current.tspan.setAttributeNS(null, "font-style", current.fontStyle); + } + + if (current.fontWeight !== SVG_DEFAULTS.fontWeight) { + current.tspan.setAttributeNS(null, "font-weight", current.fontWeight); + } + + const fillStrokeMode = current.textRenderingMode & _util.TextRenderingMode.FILL_STROKE_MASK; + + if (fillStrokeMode === _util.TextRenderingMode.FILL || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) { + if (current.fillColor !== SVG_DEFAULTS.fillColor) { + current.tspan.setAttributeNS(null, "fill", current.fillColor); + } + + if (current.fillAlpha < 1) { + current.tspan.setAttributeNS(null, "fill-opacity", current.fillAlpha); + } + } else if (current.textRenderingMode === _util.TextRenderingMode.ADD_TO_PATH) { + current.tspan.setAttributeNS(null, "fill", "transparent"); + } else { + current.tspan.setAttributeNS(null, "fill", "none"); + } + + if (fillStrokeMode === _util.TextRenderingMode.STROKE || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) { + const lineWidthScale = 1 / (current.textMatrixScale || 1); + + this._setStrokeAttributes(current.tspan, lineWidthScale); + } + + let textMatrix = current.textMatrix; + + if (current.textRise !== 0) { + textMatrix = textMatrix.slice(); + textMatrix[5] += current.textRise; + } + + current.txtElement.setAttributeNS(null, "transform", `${pm(textMatrix)} scale(${pf(textHScale)}, -1)`); + current.txtElement.setAttributeNS(XML_NS, "xml:space", "preserve"); + current.txtElement.appendChild(current.tspan); + current.txtgrp.appendChild(current.txtElement); + + this._ensureTransformGroup().appendChild(current.txtElement); + } + + setLeadingMoveText(x, y) { + this.setLeading(-y); + this.moveText(x, y); + } + + addFontStyle(fontObj) { + if (!fontObj.data) { + throw new Error("addFontStyle: No font data available, " + 'ensure that the "fontExtraProperties" API parameter is set.'); + } + + if (!this.cssStyle) { + this.cssStyle = this.svgFactory.createElement("svg:style"); + this.cssStyle.setAttributeNS(null, "type", "text/css"); + this.defs.appendChild(this.cssStyle); + } + + const url = createObjectURL(fontObj.data, fontObj.mimetype, this.forceDataSchema); + this.cssStyle.textContent += `@font-face { font-family: "${fontObj.loadedName}";` + ` src: url(${url}); }\n`; + } + + setFont(details) { + const current = this.current; + const fontObj = this.commonObjs.get(details[0]); + let size = details[1]; + current.font = fontObj; + + if (this.embedFonts && !fontObj.missingFile && !this.embeddedFonts[fontObj.loadedName]) { + this.addFontStyle(fontObj); + this.embeddedFonts[fontObj.loadedName] = fontObj; + } + + current.fontMatrix = fontObj.fontMatrix || _util.FONT_IDENTITY_MATRIX; + let bold = "normal"; + + if (fontObj.black) { + bold = "900"; + } else if (fontObj.bold) { + bold = "bold"; + } + + const italic = fontObj.italic ? "italic" : "normal"; + + if (size < 0) { + size = -size; + current.fontDirection = -1; + } else { + current.fontDirection = 1; + } + + current.fontSize = size; + current.fontFamily = fontObj.loadedName; + current.fontWeight = bold; + current.fontStyle = italic; + current.tspan = this.svgFactory.createElement("svg:tspan"); + current.tspan.setAttributeNS(null, "y", pf(-current.y)); + current.xcoords = []; + current.ycoords = []; + } + + endText() { + const current = this.current; + + if (current.textRenderingMode & _util.TextRenderingMode.ADD_TO_PATH_FLAG && current.txtElement?.hasChildNodes()) { + current.element = current.txtElement; + this.clip("nonzero"); + this.endPath(); + } + } + + setLineWidth(width) { + if (width > 0) { + this.current.lineWidth = width; + } + } + + setLineCap(style) { + this.current.lineCap = LINE_CAP_STYLES[style]; + } + + setLineJoin(style) { + this.current.lineJoin = LINE_JOIN_STYLES[style]; + } + + setMiterLimit(limit) { + this.current.miterLimit = limit; + } + + setStrokeAlpha(strokeAlpha) { + this.current.strokeAlpha = strokeAlpha; + } + + setStrokeRGBColor(r, g, b) { + this.current.strokeColor = _util.Util.makeHexColor(r, g, b); + } + + setFillAlpha(fillAlpha) { + this.current.fillAlpha = fillAlpha; + } + + setFillRGBColor(r, g, b) { + this.current.fillColor = _util.Util.makeHexColor(r, g, b); + this.current.tspan = this.svgFactory.createElement("svg:tspan"); + this.current.xcoords = []; + this.current.ycoords = []; + } + + setStrokeColorN(args) { + this.current.strokeColor = this._makeColorN_Pattern(args); + } + + setFillColorN(args) { + this.current.fillColor = this._makeColorN_Pattern(args); + } + + shadingFill(args) { + const width = this.viewport.width; + const height = this.viewport.height; + + const inv = _util.Util.inverseTransform(this.transformMatrix); + + const bl = _util.Util.applyTransform([0, 0], inv); + + const br = _util.Util.applyTransform([0, height], inv); + + const ul = _util.Util.applyTransform([width, 0], inv); + + const ur = _util.Util.applyTransform([width, height], inv); + + const x0 = Math.min(bl[0], br[0], ul[0], ur[0]); + const y0 = Math.min(bl[1], br[1], ul[1], ur[1]); + const x1 = Math.max(bl[0], br[0], ul[0], ur[0]); + const y1 = Math.max(bl[1], br[1], ul[1], ur[1]); + const rect = this.svgFactory.createElement("svg:rect"); + rect.setAttributeNS(null, "x", x0); + rect.setAttributeNS(null, "y", y0); + rect.setAttributeNS(null, "width", x1 - x0); + rect.setAttributeNS(null, "height", y1 - y0); + rect.setAttributeNS(null, "fill", this._makeShadingPattern(args)); + + if (this.current.fillAlpha < 1) { + rect.setAttributeNS(null, "fill-opacity", this.current.fillAlpha); + } + + this._ensureTransformGroup().appendChild(rect); + } + + _makeColorN_Pattern(args) { + if (args[0] === "TilingPattern") { + return this._makeTilingPattern(args); + } + + return this._makeShadingPattern(args); + } + + _makeTilingPattern(args) { + const color = args[1]; + const operatorList = args[2]; + const matrix = args[3] || _util.IDENTITY_MATRIX; + const [x0, y0, x1, y1] = args[4]; + const xstep = args[5]; + const ystep = args[6]; + const paintType = args[7]; + const tilingId = `shading${shadingCount++}`; + + const [tx0, ty0, tx1, ty1] = _util.Util.normalizeRect([..._util.Util.applyTransform([x0, y0], matrix), ..._util.Util.applyTransform([x1, y1], matrix)]); + + const [xscale, yscale] = _util.Util.singularValueDecompose2dScale(matrix); + + const txstep = xstep * xscale; + const tystep = ystep * yscale; + const tiling = this.svgFactory.createElement("svg:pattern"); + tiling.setAttributeNS(null, "id", tilingId); + tiling.setAttributeNS(null, "patternUnits", "userSpaceOnUse"); + tiling.setAttributeNS(null, "width", txstep); + tiling.setAttributeNS(null, "height", tystep); + tiling.setAttributeNS(null, "x", `${tx0}`); + tiling.setAttributeNS(null, "y", `${ty0}`); + const svg = this.svg; + const transformMatrix = this.transformMatrix; + const fillColor = this.current.fillColor; + const strokeColor = this.current.strokeColor; + const bbox = this.svgFactory.create(tx1 - tx0, ty1 - ty0); + this.svg = bbox; + this.transformMatrix = matrix; + + if (paintType === 2) { + const cssColor = _util.Util.makeHexColor(...color); + + this.current.fillColor = cssColor; + this.current.strokeColor = cssColor; + } + + this.executeOpTree(this.convertOpList(operatorList)); + this.svg = svg; + this.transformMatrix = transformMatrix; + this.current.fillColor = fillColor; + this.current.strokeColor = strokeColor; + tiling.appendChild(bbox.childNodes[0]); + this.defs.appendChild(tiling); + return `url(#${tilingId})`; + } + + _makeShadingPattern(args) { + if (typeof args === "string") { + args = this.objs.get(args); + } + + switch (args[0]) { + case "RadialAxial": + const shadingId = `shading${shadingCount++}`; + const colorStops = args[3]; + let gradient; + + switch (args[1]) { + case "axial": + const point0 = args[4]; + const point1 = args[5]; + gradient = this.svgFactory.createElement("svg:linearGradient"); + gradient.setAttributeNS(null, "id", shadingId); + gradient.setAttributeNS(null, "gradientUnits", "userSpaceOnUse"); + gradient.setAttributeNS(null, "x1", point0[0]); + gradient.setAttributeNS(null, "y1", point0[1]); + gradient.setAttributeNS(null, "x2", point1[0]); + gradient.setAttributeNS(null, "y2", point1[1]); + break; + + case "radial": + const focalPoint = args[4]; + const circlePoint = args[5]; + const focalRadius = args[6]; + const circleRadius = args[7]; + gradient = this.svgFactory.createElement("svg:radialGradient"); + gradient.setAttributeNS(null, "id", shadingId); + gradient.setAttributeNS(null, "gradientUnits", "userSpaceOnUse"); + gradient.setAttributeNS(null, "cx", circlePoint[0]); + gradient.setAttributeNS(null, "cy", circlePoint[1]); + gradient.setAttributeNS(null, "r", circleRadius); + gradient.setAttributeNS(null, "fx", focalPoint[0]); + gradient.setAttributeNS(null, "fy", focalPoint[1]); + gradient.setAttributeNS(null, "fr", focalRadius); + break; + + default: + throw new Error(`Unknown RadialAxial type: ${args[1]}`); + } + + for (const colorStop of colorStops) { + const stop = this.svgFactory.createElement("svg:stop"); + stop.setAttributeNS(null, "offset", colorStop[0]); + stop.setAttributeNS(null, "stop-color", colorStop[1]); + gradient.appendChild(stop); + } + + this.defs.appendChild(gradient); + return `url(#${shadingId})`; + + case "Mesh": + (0, _util.warn)("Unimplemented pattern Mesh"); + return null; + + case "Dummy": + return "hotpink"; + + default: + throw new Error(`Unknown IR type: ${args[0]}`); + } + } + + setDash(dashArray, dashPhase) { + this.current.dashArray = dashArray; + this.current.dashPhase = dashPhase; + } + + constructPath(ops, args) { + const current = this.current; + let x = current.x, + y = current.y; + let d = []; + let j = 0; + + for (const op of ops) { + switch (op | 0) { + case _util.OPS.rectangle: + x = args[j++]; + y = args[j++]; + const width = args[j++]; + const height = args[j++]; + const xw = x + width; + const yh = y + height; + d.push("M", pf(x), pf(y), "L", pf(xw), pf(y), "L", pf(xw), pf(yh), "L", pf(x), pf(yh), "Z"); + break; + + case _util.OPS.moveTo: + x = args[j++]; + y = args[j++]; + d.push("M", pf(x), pf(y)); + break; + + case _util.OPS.lineTo: + x = args[j++]; + y = args[j++]; + d.push("L", pf(x), pf(y)); + break; + + case _util.OPS.curveTo: + x = args[j + 4]; + y = args[j + 5]; + d.push("C", pf(args[j]), pf(args[j + 1]), pf(args[j + 2]), pf(args[j + 3]), pf(x), pf(y)); + j += 6; + break; + + case _util.OPS.curveTo2: + d.push("C", pf(x), pf(y), pf(args[j]), pf(args[j + 1]), pf(args[j + 2]), pf(args[j + 3])); + x = args[j + 2]; + y = args[j + 3]; + j += 4; + break; + + case _util.OPS.curveTo3: + x = args[j + 2]; + y = args[j + 3]; + d.push("C", pf(args[j]), pf(args[j + 1]), pf(x), pf(y), pf(x), pf(y)); + j += 4; + break; + + case _util.OPS.closePath: + d.push("Z"); + break; + } + } + + d = d.join(" "); + + if (current.path && ops.length > 0 && ops[0] !== _util.OPS.rectangle && ops[0] !== _util.OPS.moveTo) { + d = current.path.getAttributeNS(null, "d") + d; + } else { + current.path = this.svgFactory.createElement("svg:path"); + + this._ensureTransformGroup().appendChild(current.path); + } + + current.path.setAttributeNS(null, "d", d); + current.path.setAttributeNS(null, "fill", "none"); + current.element = current.path; + current.setCurrentPoint(x, y); + } + + endPath() { + const current = this.current; + current.path = null; + + if (!this.pendingClip) { + return; + } + + if (!current.element) { + this.pendingClip = null; + return; + } + + const clipId = `clippath${clipCount++}`; + const clipPath = this.svgFactory.createElement("svg:clipPath"); + clipPath.setAttributeNS(null, "id", clipId); + clipPath.setAttributeNS(null, "transform", pm(this.transformMatrix)); + const clipElement = current.element.cloneNode(true); + + if (this.pendingClip === "evenodd") { + clipElement.setAttributeNS(null, "clip-rule", "evenodd"); + } else { + clipElement.setAttributeNS(null, "clip-rule", "nonzero"); + } + + this.pendingClip = null; + clipPath.appendChild(clipElement); + this.defs.appendChild(clipPath); + + if (current.activeClipUrl) { + current.clipGroup = null; + + for (const prev of this.extraStack) { + prev.clipGroup = null; + } + + clipPath.setAttributeNS(null, "clip-path", current.activeClipUrl); + } + + current.activeClipUrl = `url(#${clipId})`; + this.tgrp = null; + } + + clip(type) { + this.pendingClip = type; + } + + closePath() { + const current = this.current; + + if (current.path) { + const d = `${current.path.getAttributeNS(null, "d")}Z`; + current.path.setAttributeNS(null, "d", d); + } + } + + setLeading(leading) { + this.current.leading = -leading; + } + + setTextRise(textRise) { + this.current.textRise = textRise; + } + + setTextRenderingMode(textRenderingMode) { + this.current.textRenderingMode = textRenderingMode; + } + + setHScale(scale) { + this.current.textHScale = scale / 100; + } + + setRenderingIntent(intent) {} + + setFlatness(flatness) {} + + setGState(states) { + for (const [key, value] of states) { + switch (key) { + case "LW": + this.setLineWidth(value); + break; + + case "LC": + this.setLineCap(value); + break; + + case "LJ": + this.setLineJoin(value); + break; + + case "ML": + this.setMiterLimit(value); + break; + + case "D": + this.setDash(value[0], value[1]); + break; + + case "RI": + this.setRenderingIntent(value); + break; + + case "FL": + this.setFlatness(value); + break; + + case "Font": + this.setFont(value); + break; + + case "CA": + this.setStrokeAlpha(value); + break; + + case "ca": + this.setFillAlpha(value); + break; + + default: + (0, _util.warn)(`Unimplemented graphic state operator ${key}`); + break; + } + } + } + + fill() { + const current = this.current; + + if (current.element) { + current.element.setAttributeNS(null, "fill", current.fillColor); + current.element.setAttributeNS(null, "fill-opacity", current.fillAlpha); + this.endPath(); + } + } + + stroke() { + const current = this.current; + + if (current.element) { + this._setStrokeAttributes(current.element); + + current.element.setAttributeNS(null, "fill", "none"); + this.endPath(); + } + } + + _setStrokeAttributes(element, lineWidthScale = 1) { + const current = this.current; + let dashArray = current.dashArray; + + if (lineWidthScale !== 1 && dashArray.length > 0) { + dashArray = dashArray.map(function (value) { + return lineWidthScale * value; + }); + } + + element.setAttributeNS(null, "stroke", current.strokeColor); + element.setAttributeNS(null, "stroke-opacity", current.strokeAlpha); + element.setAttributeNS(null, "stroke-miterlimit", pf(current.miterLimit)); + element.setAttributeNS(null, "stroke-linecap", current.lineCap); + element.setAttributeNS(null, "stroke-linejoin", current.lineJoin); + element.setAttributeNS(null, "stroke-width", pf(lineWidthScale * current.lineWidth) + "px"); + element.setAttributeNS(null, "stroke-dasharray", dashArray.map(pf).join(" ")); + element.setAttributeNS(null, "stroke-dashoffset", pf(lineWidthScale * current.dashPhase) + "px"); + } + + eoFill() { + if (this.current.element) { + this.current.element.setAttributeNS(null, "fill-rule", "evenodd"); + } + + this.fill(); + } + + fillStroke() { + this.stroke(); + this.fill(); + } + + eoFillStroke() { + if (this.current.element) { + this.current.element.setAttributeNS(null, "fill-rule", "evenodd"); + } + + this.fillStroke(); + } + + closeStroke() { + this.closePath(); + this.stroke(); + } + + closeFillStroke() { + this.closePath(); + this.fillStroke(); + } + + closeEOFillStroke() { + this.closePath(); + this.eoFillStroke(); + } + + paintSolidColorImageMask() { + const rect = this.svgFactory.createElement("svg:rect"); + rect.setAttributeNS(null, "x", "0"); + rect.setAttributeNS(null, "y", "0"); + rect.setAttributeNS(null, "width", "1px"); + rect.setAttributeNS(null, "height", "1px"); + rect.setAttributeNS(null, "fill", this.current.fillColor); + + this._ensureTransformGroup().appendChild(rect); + } + + paintImageXObject(objId) { + const imgData = objId.startsWith("g_") ? this.commonObjs.get(objId) : this.objs.get(objId); + + if (!imgData) { + (0, _util.warn)(`Dependent image with object ID ${objId} is not ready yet`); + return; + } + + this.paintInlineImageXObject(imgData); + } + + paintInlineImageXObject(imgData, mask) { + const width = imgData.width; + const height = imgData.height; + const imgSrc = convertImgDataToPng(imgData, this.forceDataSchema, !!mask); + const cliprect = this.svgFactory.createElement("svg:rect"); + cliprect.setAttributeNS(null, "x", "0"); + cliprect.setAttributeNS(null, "y", "0"); + cliprect.setAttributeNS(null, "width", pf(width)); + cliprect.setAttributeNS(null, "height", pf(height)); + this.current.element = cliprect; + this.clip("nonzero"); + const imgEl = this.svgFactory.createElement("svg:image"); + imgEl.setAttributeNS(XLINK_NS, "xlink:href", imgSrc); + imgEl.setAttributeNS(null, "x", "0"); + imgEl.setAttributeNS(null, "y", pf(-height)); + imgEl.setAttributeNS(null, "width", pf(width) + "px"); + imgEl.setAttributeNS(null, "height", pf(height) + "px"); + imgEl.setAttributeNS(null, "transform", `scale(${pf(1 / width)} ${pf(-1 / height)})`); + + if (mask) { + mask.appendChild(imgEl); + } else { + this._ensureTransformGroup().appendChild(imgEl); + } + } + + paintImageMaskXObject(imgData) { + const current = this.current; + const width = imgData.width; + const height = imgData.height; + const fillColor = current.fillColor; + current.maskId = `mask${maskCount++}`; + const mask = this.svgFactory.createElement("svg:mask"); + mask.setAttributeNS(null, "id", current.maskId); + const rect = this.svgFactory.createElement("svg:rect"); + rect.setAttributeNS(null, "x", "0"); + rect.setAttributeNS(null, "y", "0"); + rect.setAttributeNS(null, "width", pf(width)); + rect.setAttributeNS(null, "height", pf(height)); + rect.setAttributeNS(null, "fill", fillColor); + rect.setAttributeNS(null, "mask", `url(#${current.maskId})`); + this.defs.appendChild(mask); + + this._ensureTransformGroup().appendChild(rect); + + this.paintInlineImageXObject(imgData, mask); + } + + paintFormXObjectBegin(matrix, bbox) { + if (Array.isArray(matrix) && matrix.length === 6) { + this.transform(matrix[0], matrix[1], matrix[2], matrix[3], matrix[4], matrix[5]); + } + + if (bbox) { + const width = bbox[2] - bbox[0]; + const height = bbox[3] - bbox[1]; + const cliprect = this.svgFactory.createElement("svg:rect"); + cliprect.setAttributeNS(null, "x", bbox[0]); + cliprect.setAttributeNS(null, "y", bbox[1]); + cliprect.setAttributeNS(null, "width", pf(width)); + cliprect.setAttributeNS(null, "height", pf(height)); + this.current.element = cliprect; + this.clip("nonzero"); + this.endPath(); + } + } + + paintFormXObjectEnd() {} + + _initialize(viewport) { + const svg = this.svgFactory.create(viewport.width, viewport.height); + const definitions = this.svgFactory.createElement("svg:defs"); + svg.appendChild(definitions); + this.defs = definitions; + const rootGroup = this.svgFactory.createElement("svg:g"); + rootGroup.setAttributeNS(null, "transform", pm(viewport.transform)); + svg.appendChild(rootGroup); + this.svg = rootGroup; + return svg; + } + + _ensureClipGroup() { + if (!this.current.clipGroup) { + const clipGroup = this.svgFactory.createElement("svg:g"); + clipGroup.setAttributeNS(null, "clip-path", this.current.activeClipUrl); + this.svg.appendChild(clipGroup); + this.current.clipGroup = clipGroup; + } + + return this.current.clipGroup; + } + + _ensureTransformGroup() { + if (!this.tgrp) { + this.tgrp = this.svgFactory.createElement("svg:g"); + this.tgrp.setAttributeNS(null, "transform", pm(this.transformMatrix)); + + if (this.current.activeClipUrl) { + this._ensureClipGroup().appendChild(this.tgrp); + } else { + this.svg.appendChild(this.tgrp); + } + } + + return this.tgrp; + } + + }; +} + +/***/ }), +/* 25 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.PDFNodeStream = void 0; + +var _util = __w_pdfjs_require__(1); + +var _network_utils = __w_pdfjs_require__(26); + +; + +const fs = require("fs"); + +const http = require("http"); + +const https = require("https"); + +const url = require("url"); + +const fileUriRegex = /^file:\/\/\/[a-zA-Z]:\//; + +function parseUrl(sourceUrl) { + const parsedUrl = url.parse(sourceUrl); + + if (parsedUrl.protocol === "file:" || parsedUrl.host) { + return parsedUrl; + } + + if (/^[a-z]:[/\\]/i.test(sourceUrl)) { + return url.parse(`file:///${sourceUrl}`); + } + + if (!parsedUrl.host) { + parsedUrl.protocol = "file:"; + } + + return parsedUrl; +} + +class PDFNodeStream { + constructor(source) { + this.source = source; + this.url = parseUrl(source.url); + this.isHttp = this.url.protocol === "http:" || this.url.protocol === "https:"; + this.isFsUrl = this.url.protocol === "file:"; + this.httpHeaders = this.isHttp && source.httpHeaders || {}; + this._fullRequestReader = null; + this._rangeRequestReaders = []; + } + + get _progressiveDataLength() { + return this._fullRequestReader?._loaded ?? 0; + } + + getFullReader() { + (0, _util.assert)(!this._fullRequestReader, "PDFNodeStream.getFullReader can only be called once."); + this._fullRequestReader = this.isFsUrl ? new PDFNodeStreamFsFullReader(this) : new PDFNodeStreamFullReader(this); + return this._fullRequestReader; + } + + getRangeReader(start, end) { + if (end <= this._progressiveDataLength) { + return null; + } + + const rangeReader = this.isFsUrl ? new PDFNodeStreamFsRangeReader(this, start, end) : new PDFNodeStreamRangeReader(this, start, end); + + this._rangeRequestReaders.push(rangeReader); + + return rangeReader; + } + + cancelAllRequests(reason) { + if (this._fullRequestReader) { + this._fullRequestReader.cancel(reason); + } + + for (const reader of this._rangeRequestReaders.slice(0)) { + reader.cancel(reason); + } + } + +} + +exports.PDFNodeStream = PDFNodeStream; + +class BaseFullReader { + constructor(stream) { + this._url = stream.url; + this._done = false; + this._storedError = null; + this.onProgress = null; + const source = stream.source; + this._contentLength = source.length; + this._loaded = 0; + this._filename = null; + this._disableRange = source.disableRange || false; + this._rangeChunkSize = source.rangeChunkSize; + + if (!this._rangeChunkSize && !this._disableRange) { + this._disableRange = true; + } + + this._isStreamingSupported = !source.disableStream; + this._isRangeSupported = !source.disableRange; + this._readableStream = null; + this._readCapability = (0, _util.createPromiseCapability)(); + this._headersCapability = (0, _util.createPromiseCapability)(); + } + + get headersReady() { + return this._headersCapability.promise; + } + + get filename() { + return this._filename; + } + + get contentLength() { + return this._contentLength; + } + + get isRangeSupported() { + return this._isRangeSupported; + } + + get isStreamingSupported() { + return this._isStreamingSupported; + } + + async read() { + await this._readCapability.promise; + + if (this._done) { + return { + value: undefined, + done: true + }; + } + + if (this._storedError) { + throw this._storedError; + } + + const chunk = this._readableStream.read(); + + if (chunk === null) { + this._readCapability = (0, _util.createPromiseCapability)(); + return this.read(); + } + + this._loaded += chunk.length; + + if (this.onProgress) { + this.onProgress({ + loaded: this._loaded, + total: this._contentLength + }); + } + + const buffer = new Uint8Array(chunk).buffer; + return { + value: buffer, + done: false + }; + } + + cancel(reason) { + if (!this._readableStream) { + this._error(reason); + + return; + } + + this._readableStream.destroy(reason); + } + + _error(reason) { + this._storedError = reason; + + this._readCapability.resolve(); + } + + _setReadableStream(readableStream) { + this._readableStream = readableStream; + readableStream.on("readable", () => { + this._readCapability.resolve(); + }); + readableStream.on("end", () => { + readableStream.destroy(); + this._done = true; + + this._readCapability.resolve(); + }); + readableStream.on("error", reason => { + this._error(reason); + }); + + if (!this._isStreamingSupported && this._isRangeSupported) { + this._error(new _util.AbortException("streaming is disabled")); + } + + if (this._storedError) { + this._readableStream.destroy(this._storedError); + } + } + +} + +class BaseRangeReader { + constructor(stream) { + this._url = stream.url; + this._done = false; + this._storedError = null; + this.onProgress = null; + this._loaded = 0; + this._readableStream = null; + this._readCapability = (0, _util.createPromiseCapability)(); + const source = stream.source; + this._isStreamingSupported = !source.disableStream; + } + + get isStreamingSupported() { + return this._isStreamingSupported; + } + + async read() { + await this._readCapability.promise; + + if (this._done) { + return { + value: undefined, + done: true + }; + } + + if (this._storedError) { + throw this._storedError; + } + + const chunk = this._readableStream.read(); + + if (chunk === null) { + this._readCapability = (0, _util.createPromiseCapability)(); + return this.read(); + } + + this._loaded += chunk.length; + + if (this.onProgress) { + this.onProgress({ + loaded: this._loaded + }); + } + + const buffer = new Uint8Array(chunk).buffer; + return { + value: buffer, + done: false + }; + } + + cancel(reason) { + if (!this._readableStream) { + this._error(reason); + + return; + } + + this._readableStream.destroy(reason); + } + + _error(reason) { + this._storedError = reason; + + this._readCapability.resolve(); + } + + _setReadableStream(readableStream) { + this._readableStream = readableStream; + readableStream.on("readable", () => { + this._readCapability.resolve(); + }); + readableStream.on("end", () => { + readableStream.destroy(); + this._done = true; + + this._readCapability.resolve(); + }); + readableStream.on("error", reason => { + this._error(reason); + }); + + if (this._storedError) { + this._readableStream.destroy(this._storedError); + } + } + +} + +function createRequestOptions(parsedUrl, headers) { + return { + protocol: parsedUrl.protocol, + auth: parsedUrl.auth, + host: parsedUrl.hostname, + port: parsedUrl.port, + path: parsedUrl.path, + method: "GET", + headers + }; +} + +class PDFNodeStreamFullReader extends BaseFullReader { + constructor(stream) { + super(stream); + + const handleResponse = response => { + if (response.statusCode === 404) { + const error = new _util.MissingPDFException(`Missing PDF "${this._url}".`); + this._storedError = error; + + this._headersCapability.reject(error); + + return; + } + + this._headersCapability.resolve(); + + this._setReadableStream(response); + + const getResponseHeader = name => { + return this._readableStream.headers[name.toLowerCase()]; + }; + + const { + allowRangeRequests, + suggestedLength + } = (0, _network_utils.validateRangeRequestCapabilities)({ + getResponseHeader, + isHttp: stream.isHttp, + rangeChunkSize: this._rangeChunkSize, + disableRange: this._disableRange + }); + this._isRangeSupported = allowRangeRequests; + this._contentLength = suggestedLength || this._contentLength; + this._filename = (0, _network_utils.extractFilenameFromHeader)(getResponseHeader); + }; + + this._request = null; + + if (this._url.protocol === "http:") { + this._request = http.request(createRequestOptions(this._url, stream.httpHeaders), handleResponse); + } else { + this._request = https.request(createRequestOptions(this._url, stream.httpHeaders), handleResponse); + } + + this._request.on("error", reason => { + this._storedError = reason; + + this._headersCapability.reject(reason); + }); + + this._request.end(); + } + +} + +class PDFNodeStreamRangeReader extends BaseRangeReader { + constructor(stream, start, end) { + super(stream); + this._httpHeaders = {}; + + for (const property in stream.httpHeaders) { + const value = stream.httpHeaders[property]; + + if (typeof value === "undefined") { + continue; + } + + this._httpHeaders[property] = value; + } + + this._httpHeaders.Range = `bytes=${start}-${end - 1}`; + + const handleResponse = response => { + if (response.statusCode === 404) { + const error = new _util.MissingPDFException(`Missing PDF "${this._url}".`); + this._storedError = error; + return; + } + + this._setReadableStream(response); + }; + + this._request = null; + + if (this._url.protocol === "http:") { + this._request = http.request(createRequestOptions(this._url, this._httpHeaders), handleResponse); + } else { + this._request = https.request(createRequestOptions(this._url, this._httpHeaders), handleResponse); + } + + this._request.on("error", reason => { + this._storedError = reason; + }); + + this._request.end(); + } + +} + +class PDFNodeStreamFsFullReader extends BaseFullReader { + constructor(stream) { + super(stream); + let path = decodeURIComponent(this._url.path); + + if (fileUriRegex.test(this._url.href)) { + path = path.replace(/^\//, ""); + } + + fs.lstat(path, (error, stat) => { + if (error) { + if (error.code === "ENOENT") { + error = new _util.MissingPDFException(`Missing PDF "${path}".`); + } + + this._storedError = error; + + this._headersCapability.reject(error); + + return; + } + + this._contentLength = stat.size; + + this._setReadableStream(fs.createReadStream(path)); + + this._headersCapability.resolve(); + }); + } + +} + +class PDFNodeStreamFsRangeReader extends BaseRangeReader { + constructor(stream, start, end) { + super(stream); + let path = decodeURIComponent(this._url.path); + + if (fileUriRegex.test(this._url.href)) { + path = path.replace(/^\//, ""); + } + + this._setReadableStream(fs.createReadStream(path, { + start, + end: end - 1 + })); + } + +} + +/***/ }), +/* 26 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.createResponseStatusError = createResponseStatusError; +exports.extractFilenameFromHeader = extractFilenameFromHeader; +exports.validateRangeRequestCapabilities = validateRangeRequestCapabilities; +exports.validateResponseStatus = validateResponseStatus; + +var _util = __w_pdfjs_require__(1); + +var _content_disposition = __w_pdfjs_require__(27); + +var _display_utils = __w_pdfjs_require__(5); + +function validateRangeRequestCapabilities({ + getResponseHeader, + isHttp, + rangeChunkSize, + disableRange +}) { + const returnValues = { + allowRangeRequests: false, + suggestedLength: undefined + }; + const length = parseInt(getResponseHeader("Content-Length"), 10); + + if (!Number.isInteger(length)) { + return returnValues; + } + + returnValues.suggestedLength = length; + + if (length <= 2 * rangeChunkSize) { + return returnValues; + } + + if (disableRange || !isHttp) { + return returnValues; + } + + if (getResponseHeader("Accept-Ranges") !== "bytes") { + return returnValues; + } + + const contentEncoding = getResponseHeader("Content-Encoding") || "identity"; + + if (contentEncoding !== "identity") { + return returnValues; + } + + returnValues.allowRangeRequests = true; + return returnValues; +} + +function extractFilenameFromHeader(getResponseHeader) { + const contentDisposition = getResponseHeader("Content-Disposition"); + + if (contentDisposition) { + let filename = (0, _content_disposition.getFilenameFromContentDispositionHeader)(contentDisposition); + + if (filename.includes("%")) { + try { + filename = decodeURIComponent(filename); + } catch (ex) {} + } + + if ((0, _display_utils.isPdfFile)(filename)) { + return filename; + } + } + + return null; +} + +function createResponseStatusError(status, url) { + if (status === 404 || status === 0 && url.startsWith("file:")) { + return new _util.MissingPDFException('Missing PDF "' + url + '".'); + } + + return new _util.UnexpectedResponseException(`Unexpected server response (${status}) while retrieving PDF "${url}".`, status); +} + +function validateResponseStatus(status) { + return status === 200 || status === 206; +} + +/***/ }), +/* 27 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.getFilenameFromContentDispositionHeader = getFilenameFromContentDispositionHeader; + +var _util = __w_pdfjs_require__(1); + +function getFilenameFromContentDispositionHeader(contentDisposition) { + let needsEncodingFixup = true; + let tmp = toParamRegExp("filename\\*", "i").exec(contentDisposition); + + if (tmp) { + tmp = tmp[1]; + let filename = rfc2616unquote(tmp); + filename = unescape(filename); + filename = rfc5987decode(filename); + filename = rfc2047decode(filename); + return fixupEncoding(filename); + } + + tmp = rfc2231getparam(contentDisposition); + + if (tmp) { + const filename = rfc2047decode(tmp); + return fixupEncoding(filename); + } + + tmp = toParamRegExp("filename", "i").exec(contentDisposition); + + if (tmp) { + tmp = tmp[1]; + let filename = rfc2616unquote(tmp); + filename = rfc2047decode(filename); + return fixupEncoding(filename); + } + + function toParamRegExp(attributePattern, flags) { + return new RegExp("(?:^|;)\\s*" + attributePattern + "\\s*=\\s*" + "(" + '[^";\\s][^;\\s]*' + "|" + '"(?:[^"\\\\]|\\\\"?)+"?' + ")", flags); + } + + function textdecode(encoding, value) { + if (encoding) { + if (!/^[\x00-\xFF]+$/.test(value)) { + return value; + } + + try { + const decoder = new TextDecoder(encoding, { + fatal: true + }); + const buffer = (0, _util.stringToBytes)(value); + value = decoder.decode(buffer); + needsEncodingFixup = false; + } catch (e) {} + } + + return value; + } + + function fixupEncoding(value) { + if (needsEncodingFixup && /[\x80-\xff]/.test(value)) { + value = textdecode("utf-8", value); + + if (needsEncodingFixup) { + value = textdecode("iso-8859-1", value); + } + } + + return value; + } + + function rfc2231getparam(contentDispositionStr) { + const matches = []; + let match; + const iter = toParamRegExp("filename\\*((?!0\\d)\\d+)(\\*?)", "ig"); + + while ((match = iter.exec(contentDispositionStr)) !== null) { + let [, n, quot, part] = match; + n = parseInt(n, 10); + + if (n in matches) { + if (n === 0) { + break; + } + + continue; + } + + matches[n] = [quot, part]; + } + + const parts = []; + + for (let n = 0; n < matches.length; ++n) { + if (!(n in matches)) { + break; + } + + let [quot, part] = matches[n]; + part = rfc2616unquote(part); + + if (quot) { + part = unescape(part); + + if (n === 0) { + part = rfc5987decode(part); + } + } + + parts.push(part); + } + + return parts.join(""); + } + + function rfc2616unquote(value) { + if (value.startsWith('"')) { + const parts = value.slice(1).split('\\"'); + + for (let i = 0; i < parts.length; ++i) { + const quotindex = parts[i].indexOf('"'); + + if (quotindex !== -1) { + parts[i] = parts[i].slice(0, quotindex); + parts.length = i + 1; + } + + parts[i] = parts[i].replace(/\\(.)/g, "$1"); + } + + value = parts.join('"'); + } + + return value; + } + + function rfc5987decode(extvalue) { + const encodingend = extvalue.indexOf("'"); + + if (encodingend === -1) { + return extvalue; + } + + const encoding = extvalue.slice(0, encodingend); + const langvalue = extvalue.slice(encodingend + 1); + const value = langvalue.replace(/^[^']*'/, ""); + return textdecode(encoding, value); + } + + function rfc2047decode(value) { + if (!value.startsWith("=?") || /[\x00-\x19\x80-\xff]/.test(value)) { + return value; + } + + return value.replace(/=\?([\w-]*)\?([QqBb])\?((?:[^?]|\?(?!=))*)\?=/g, function (matches, charset, encoding, text) { + if (encoding === "q" || encoding === "Q") { + text = text.replace(/_/g, " "); + text = text.replace(/=([0-9a-fA-F]{2})/g, function (match, hex) { + return String.fromCharCode(parseInt(hex, 16)); + }); + return textdecode(charset, text); + } + + try { + text = atob(text); + } catch (e) {} + + return textdecode(charset, text); + }); + } + + return ""; +} + +/***/ }), +/* 28 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.PDFNetworkStream = void 0; + +var _util = __w_pdfjs_require__(1); + +var _network_utils = __w_pdfjs_require__(26); + +; +const OK_RESPONSE = 200; +const PARTIAL_CONTENT_RESPONSE = 206; + +function getArrayBuffer(xhr) { + const data = xhr.response; + + if (typeof data !== "string") { + return data; + } + + const array = (0, _util.stringToBytes)(data); + return array.buffer; +} + +class NetworkManager { + constructor(url, args = {}) { + this.url = url; + this.isHttp = /^https?:/i.test(url); + this.httpHeaders = this.isHttp && args.httpHeaders || Object.create(null); + this.withCredentials = args.withCredentials || false; + + this.getXhr = args.getXhr || function NetworkManager_getXhr() { + return new XMLHttpRequest(); + }; + + this.currXhrId = 0; + this.pendingRequests = Object.create(null); + } + + requestRange(begin, end, listeners) { + const args = { + begin, + end + }; + + for (const prop in listeners) { + args[prop] = listeners[prop]; + } + + return this.request(args); + } + + requestFull(listeners) { + return this.request(listeners); + } + + request(args) { + const xhr = this.getXhr(); + const xhrId = this.currXhrId++; + const pendingRequest = this.pendingRequests[xhrId] = { + xhr + }; + xhr.open("GET", this.url); + xhr.withCredentials = this.withCredentials; + + for (const property in this.httpHeaders) { + const value = this.httpHeaders[property]; + + if (typeof value === "undefined") { + continue; + } + + xhr.setRequestHeader(property, value); + } + + if (this.isHttp && "begin" in args && "end" in args) { + xhr.setRequestHeader("Range", `bytes=${args.begin}-${args.end - 1}`); + pendingRequest.expectedStatus = PARTIAL_CONTENT_RESPONSE; + } else { + pendingRequest.expectedStatus = OK_RESPONSE; + } + + xhr.responseType = "arraybuffer"; + + if (args.onError) { + xhr.onerror = function (evt) { + args.onError(xhr.status); + }; + } + + xhr.onreadystatechange = this.onStateChange.bind(this, xhrId); + xhr.onprogress = this.onProgress.bind(this, xhrId); + pendingRequest.onHeadersReceived = args.onHeadersReceived; + pendingRequest.onDone = args.onDone; + pendingRequest.onError = args.onError; + pendingRequest.onProgress = args.onProgress; + xhr.send(null); + return xhrId; + } + + onProgress(xhrId, evt) { + const pendingRequest = this.pendingRequests[xhrId]; + + if (!pendingRequest) { + return; + } + + pendingRequest.onProgress?.(evt); + } + + onStateChange(xhrId, evt) { + const pendingRequest = this.pendingRequests[xhrId]; + + if (!pendingRequest) { + return; + } + + const xhr = pendingRequest.xhr; + + if (xhr.readyState >= 2 && pendingRequest.onHeadersReceived) { + pendingRequest.onHeadersReceived(); + delete pendingRequest.onHeadersReceived; + } + + if (xhr.readyState !== 4) { + return; + } + + if (!(xhrId in this.pendingRequests)) { + return; + } + + delete this.pendingRequests[xhrId]; + + if (xhr.status === 0 && this.isHttp) { + pendingRequest.onError?.(xhr.status); + return; + } + + const xhrStatus = xhr.status || OK_RESPONSE; + const ok_response_on_range_request = xhrStatus === OK_RESPONSE && pendingRequest.expectedStatus === PARTIAL_CONTENT_RESPONSE; + + if (!ok_response_on_range_request && xhrStatus !== pendingRequest.expectedStatus) { + pendingRequest.onError?.(xhr.status); + return; + } + + const chunk = getArrayBuffer(xhr); + + if (xhrStatus === PARTIAL_CONTENT_RESPONSE) { + const rangeHeader = xhr.getResponseHeader("Content-Range"); + const matches = /bytes (\d+)-(\d+)\/(\d+)/.exec(rangeHeader); + pendingRequest.onDone({ + begin: parseInt(matches[1], 10), + chunk + }); + } else if (chunk) { + pendingRequest.onDone({ + begin: 0, + chunk + }); + } else { + pendingRequest.onError?.(xhr.status); + } + } + + getRequestXhr(xhrId) { + return this.pendingRequests[xhrId].xhr; + } + + isPendingRequest(xhrId) { + return xhrId in this.pendingRequests; + } + + abortRequest(xhrId) { + const xhr = this.pendingRequests[xhrId].xhr; + delete this.pendingRequests[xhrId]; + xhr.abort(); + } + +} + +class PDFNetworkStream { + constructor(source) { + this._source = source; + this._manager = new NetworkManager(source.url, { + httpHeaders: source.httpHeaders, + withCredentials: source.withCredentials + }); + this._rangeChunkSize = source.rangeChunkSize; + this._fullRequestReader = null; + this._rangeRequestReaders = []; + } + + _onRangeRequestReaderClosed(reader) { + const i = this._rangeRequestReaders.indexOf(reader); + + if (i >= 0) { + this._rangeRequestReaders.splice(i, 1); + } + } + + getFullReader() { + (0, _util.assert)(!this._fullRequestReader, "PDFNetworkStream.getFullReader can only be called once."); + this._fullRequestReader = new PDFNetworkStreamFullRequestReader(this._manager, this._source); + return this._fullRequestReader; + } + + getRangeReader(begin, end) { + const reader = new PDFNetworkStreamRangeRequestReader(this._manager, begin, end); + reader.onClosed = this._onRangeRequestReaderClosed.bind(this); + + this._rangeRequestReaders.push(reader); + + return reader; + } + + cancelAllRequests(reason) { + this._fullRequestReader?.cancel(reason); + + for (const reader of this._rangeRequestReaders.slice(0)) { + reader.cancel(reason); + } + } + +} + +exports.PDFNetworkStream = PDFNetworkStream; + +class PDFNetworkStreamFullRequestReader { + constructor(manager, source) { + this._manager = manager; + const args = { + onHeadersReceived: this._onHeadersReceived.bind(this), + onDone: this._onDone.bind(this), + onError: this._onError.bind(this), + onProgress: this._onProgress.bind(this) + }; + this._url = source.url; + this._fullRequestId = manager.requestFull(args); + this._headersReceivedCapability = (0, _util.createPromiseCapability)(); + this._disableRange = source.disableRange || false; + this._contentLength = source.length; + this._rangeChunkSize = source.rangeChunkSize; + + if (!this._rangeChunkSize && !this._disableRange) { + this._disableRange = true; + } + + this._isStreamingSupported = false; + this._isRangeSupported = false; + this._cachedChunks = []; + this._requests = []; + this._done = false; + this._storedError = undefined; + this._filename = null; + this.onProgress = null; + } + + _onHeadersReceived() { + const fullRequestXhrId = this._fullRequestId; + + const fullRequestXhr = this._manager.getRequestXhr(fullRequestXhrId); + + const getResponseHeader = name => { + return fullRequestXhr.getResponseHeader(name); + }; + + const { + allowRangeRequests, + suggestedLength + } = (0, _network_utils.validateRangeRequestCapabilities)({ + getResponseHeader, + isHttp: this._manager.isHttp, + rangeChunkSize: this._rangeChunkSize, + disableRange: this._disableRange + }); + + if (allowRangeRequests) { + this._isRangeSupported = true; + } + + this._contentLength = suggestedLength || this._contentLength; + this._filename = (0, _network_utils.extractFilenameFromHeader)(getResponseHeader); + + if (this._isRangeSupported) { + this._manager.abortRequest(fullRequestXhrId); + } + + this._headersReceivedCapability.resolve(); + } + + _onDone(data) { + if (data) { + if (this._requests.length > 0) { + const requestCapability = this._requests.shift(); + + requestCapability.resolve({ + value: data.chunk, + done: false + }); + } else { + this._cachedChunks.push(data.chunk); + } + } + + this._done = true; + + if (this._cachedChunks.length > 0) { + return; + } + + for (const requestCapability of this._requests) { + requestCapability.resolve({ + value: undefined, + done: true + }); + } + + this._requests.length = 0; + } + + _onError(status) { + this._storedError = (0, _network_utils.createResponseStatusError)(status, this._url); + + this._headersReceivedCapability.reject(this._storedError); + + for (const requestCapability of this._requests) { + requestCapability.reject(this._storedError); + } + + this._requests.length = 0; + this._cachedChunks.length = 0; + } + + _onProgress(evt) { + this.onProgress?.({ + loaded: evt.loaded, + total: evt.lengthComputable ? evt.total : this._contentLength + }); + } + + get filename() { + return this._filename; + } + + get isRangeSupported() { + return this._isRangeSupported; + } + + get isStreamingSupported() { + return this._isStreamingSupported; + } + + get contentLength() { + return this._contentLength; + } + + get headersReady() { + return this._headersReceivedCapability.promise; + } + + async read() { + if (this._storedError) { + throw this._storedError; + } + + if (this._cachedChunks.length > 0) { + const chunk = this._cachedChunks.shift(); + + return { + value: chunk, + done: false + }; + } + + if (this._done) { + return { + value: undefined, + done: true + }; + } + + const requestCapability = (0, _util.createPromiseCapability)(); + + this._requests.push(requestCapability); + + return requestCapability.promise; + } + + cancel(reason) { + this._done = true; + + this._headersReceivedCapability.reject(reason); + + for (const requestCapability of this._requests) { + requestCapability.resolve({ + value: undefined, + done: true + }); + } + + this._requests.length = 0; + + if (this._manager.isPendingRequest(this._fullRequestId)) { + this._manager.abortRequest(this._fullRequestId); + } + + this._fullRequestReader = null; + } + +} + +class PDFNetworkStreamRangeRequestReader { + constructor(manager, begin, end) { + this._manager = manager; + const args = { + onDone: this._onDone.bind(this), + onError: this._onError.bind(this), + onProgress: this._onProgress.bind(this) + }; + this._url = manager.url; + this._requestId = manager.requestRange(begin, end, args); + this._requests = []; + this._queuedChunk = null; + this._done = false; + this._storedError = undefined; + this.onProgress = null; + this.onClosed = null; + } + + _close() { + this.onClosed?.(this); + } + + _onDone(data) { + const chunk = data.chunk; + + if (this._requests.length > 0) { + const requestCapability = this._requests.shift(); + + requestCapability.resolve({ + value: chunk, + done: false + }); + } else { + this._queuedChunk = chunk; + } + + this._done = true; + + for (const requestCapability of this._requests) { + requestCapability.resolve({ + value: undefined, + done: true + }); + } + + this._requests.length = 0; + + this._close(); + } + + _onError(status) { + this._storedError = (0, _network_utils.createResponseStatusError)(status, this._url); + + for (const requestCapability of this._requests) { + requestCapability.reject(this._storedError); + } + + this._requests.length = 0; + this._queuedChunk = null; + } + + _onProgress(evt) { + if (!this.isStreamingSupported) { + this.onProgress?.({ + loaded: evt.loaded + }); + } + } + + get isStreamingSupported() { + return false; + } + + async read() { + if (this._storedError) { + throw this._storedError; + } + + if (this._queuedChunk !== null) { + const chunk = this._queuedChunk; + this._queuedChunk = null; + return { + value: chunk, + done: false + }; + } + + if (this._done) { + return { + value: undefined, + done: true + }; + } + + const requestCapability = (0, _util.createPromiseCapability)(); + + this._requests.push(requestCapability); + + return requestCapability.promise; + } + + cancel(reason) { + this._done = true; + + for (const requestCapability of this._requests) { + requestCapability.resolve({ + value: undefined, + done: true + }); + } + + this._requests.length = 0; + + if (this._manager.isPendingRequest(this._requestId)) { + this._manager.abortRequest(this._requestId); + } + + this._close(); + } + +} + +/***/ }), +/* 29 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.PDFFetchStream = void 0; + +var _util = __w_pdfjs_require__(1); + +var _network_utils = __w_pdfjs_require__(26); + +; + +function createFetchOptions(headers, withCredentials, abortController) { + return { + method: "GET", + headers, + signal: abortController?.signal, + mode: "cors", + credentials: withCredentials ? "include" : "same-origin", + redirect: "follow" + }; +} + +function createHeaders(httpHeaders) { + const headers = new Headers(); + + for (const property in httpHeaders) { + const value = httpHeaders[property]; + + if (typeof value === "undefined") { + continue; + } + + headers.append(property, value); + } + + return headers; +} + +class PDFFetchStream { + constructor(source) { + this.source = source; + this.isHttp = /^https?:/i.test(source.url); + this.httpHeaders = this.isHttp && source.httpHeaders || {}; + this._fullRequestReader = null; + this._rangeRequestReaders = []; + } + + get _progressiveDataLength() { + return this._fullRequestReader?._loaded ?? 0; + } + + getFullReader() { + (0, _util.assert)(!this._fullRequestReader, "PDFFetchStream.getFullReader can only be called once."); + this._fullRequestReader = new PDFFetchStreamReader(this); + return this._fullRequestReader; + } + + getRangeReader(begin, end) { + if (end <= this._progressiveDataLength) { + return null; + } + + const reader = new PDFFetchStreamRangeReader(this, begin, end); + + this._rangeRequestReaders.push(reader); + + return reader; + } + + cancelAllRequests(reason) { + if (this._fullRequestReader) { + this._fullRequestReader.cancel(reason); + } + + for (const reader of this._rangeRequestReaders.slice(0)) { + reader.cancel(reason); + } + } + +} + +exports.PDFFetchStream = PDFFetchStream; + +class PDFFetchStreamReader { + constructor(stream) { + this._stream = stream; + this._reader = null; + this._loaded = 0; + this._filename = null; + const source = stream.source; + this._withCredentials = source.withCredentials || false; + this._contentLength = source.length; + this._headersCapability = (0, _util.createPromiseCapability)(); + this._disableRange = source.disableRange || false; + this._rangeChunkSize = source.rangeChunkSize; + + if (!this._rangeChunkSize && !this._disableRange) { + this._disableRange = true; + } + + if (typeof AbortController !== "undefined") { + this._abortController = new AbortController(); + } + + this._isStreamingSupported = !source.disableStream; + this._isRangeSupported = !source.disableRange; + this._headers = createHeaders(this._stream.httpHeaders); + const url = source.url; + fetch(url, createFetchOptions(this._headers, this._withCredentials, this._abortController)).then(response => { + if (!(0, _network_utils.validateResponseStatus)(response.status)) { + throw (0, _network_utils.createResponseStatusError)(response.status, url); + } + + this._reader = response.body.getReader(); + + this._headersCapability.resolve(); + + const getResponseHeader = name => { + return response.headers.get(name); + }; + + const { + allowRangeRequests, + suggestedLength + } = (0, _network_utils.validateRangeRequestCapabilities)({ + getResponseHeader, + isHttp: this._stream.isHttp, + rangeChunkSize: this._rangeChunkSize, + disableRange: this._disableRange + }); + this._isRangeSupported = allowRangeRequests; + this._contentLength = suggestedLength || this._contentLength; + this._filename = (0, _network_utils.extractFilenameFromHeader)(getResponseHeader); + + if (!this._isStreamingSupported && this._isRangeSupported) { + this.cancel(new _util.AbortException("Streaming is disabled.")); + } + }).catch(this._headersCapability.reject); + this.onProgress = null; + } + + get headersReady() { + return this._headersCapability.promise; + } + + get filename() { + return this._filename; + } + + get contentLength() { + return this._contentLength; + } + + get isRangeSupported() { + return this._isRangeSupported; + } + + get isStreamingSupported() { + return this._isStreamingSupported; + } + + async read() { + await this._headersCapability.promise; + const { + value, + done + } = await this._reader.read(); + + if (done) { + return { + value, + done + }; + } + + this._loaded += value.byteLength; + + if (this.onProgress) { + this.onProgress({ + loaded: this._loaded, + total: this._contentLength + }); + } + + const buffer = new Uint8Array(value).buffer; + return { + value: buffer, + done: false + }; + } + + cancel(reason) { + if (this._reader) { + this._reader.cancel(reason); + } + + if (this._abortController) { + this._abortController.abort(); + } + } + +} + +class PDFFetchStreamRangeReader { + constructor(stream, begin, end) { + this._stream = stream; + this._reader = null; + this._loaded = 0; + const source = stream.source; + this._withCredentials = source.withCredentials || false; + this._readCapability = (0, _util.createPromiseCapability)(); + this._isStreamingSupported = !source.disableStream; + + if (typeof AbortController !== "undefined") { + this._abortController = new AbortController(); + } + + this._headers = createHeaders(this._stream.httpHeaders); + + this._headers.append("Range", `bytes=${begin}-${end - 1}`); + + const url = source.url; + fetch(url, createFetchOptions(this._headers, this._withCredentials, this._abortController)).then(response => { + if (!(0, _network_utils.validateResponseStatus)(response.status)) { + throw (0, _network_utils.createResponseStatusError)(response.status, url); + } + + this._readCapability.resolve(); + + this._reader = response.body.getReader(); + }).catch(this._readCapability.reject); + this.onProgress = null; + } + + get isStreamingSupported() { + return this._isStreamingSupported; + } + + async read() { + await this._readCapability.promise; + const { + value, + done + } = await this._reader.read(); + + if (done) { + return { + value, + done + }; + } + + this._loaded += value.byteLength; + + if (this.onProgress) { + this.onProgress({ + loaded: this._loaded + }); + } + + const buffer = new Uint8Array(value).buffer; + return { + value: buffer, + done: false + }; + } + + cancel(reason) { + if (this._reader) { + this._reader.cancel(reason); + } + + if (this._abortController) { + this._abortController.abort(); + } + } + +} + +/***/ }) +/******/ ]); +/************************************************************************/ +/******/ // The module cache +/******/ var __webpack_module_cache__ = {}; +/******/ +/******/ // The require function +/******/ function __w_pdfjs_require__(moduleId) { +/******/ // Check if module is in cache +/******/ var cachedModule = __webpack_module_cache__[moduleId]; +/******/ if (cachedModule !== undefined) { +/******/ return cachedModule.exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = __webpack_module_cache__[moduleId] = { +/******/ // no module.id needed +/******/ // no module.loaded needed +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ __webpack_modules__[moduleId](module, module.exports, __w_pdfjs_require__); +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/************************************************************************/ +var __webpack_exports__ = {}; +// This entry need to be wrapped in an IIFE because it need to be isolated against other modules in the chunk. +(() => { +var exports = __webpack_exports__; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +Object.defineProperty(exports, "AnnotationLayer", ({ + enumerable: true, + get: function () { + return _annotation_layer.AnnotationLayer; + } +})); +Object.defineProperty(exports, "AnnotationMode", ({ + enumerable: true, + get: function () { + return _util.AnnotationMode; + } +})); +Object.defineProperty(exports, "CMapCompressionType", ({ + enumerable: true, + get: function () { + return _util.CMapCompressionType; + } +})); +Object.defineProperty(exports, "GlobalWorkerOptions", ({ + enumerable: true, + get: function () { + return _worker_options.GlobalWorkerOptions; + } +})); +Object.defineProperty(exports, "InvalidPDFException", ({ + enumerable: true, + get: function () { + return _util.InvalidPDFException; + } +})); +Object.defineProperty(exports, "LoopbackPort", ({ + enumerable: true, + get: function () { + return _api.LoopbackPort; + } +})); +Object.defineProperty(exports, "MissingPDFException", ({ + enumerable: true, + get: function () { + return _util.MissingPDFException; + } +})); +Object.defineProperty(exports, "OPS", ({ + enumerable: true, + get: function () { + return _util.OPS; + } +})); +Object.defineProperty(exports, "PDFDataRangeTransport", ({ + enumerable: true, + get: function () { + return _api.PDFDataRangeTransport; + } +})); +Object.defineProperty(exports, "PDFDateString", ({ + enumerable: true, + get: function () { + return _display_utils.PDFDateString; + } +})); +Object.defineProperty(exports, "PDFWorker", ({ + enumerable: true, + get: function () { + return _api.PDFWorker; + } +})); +Object.defineProperty(exports, "PasswordResponses", ({ + enumerable: true, + get: function () { + return _util.PasswordResponses; + } +})); +Object.defineProperty(exports, "PermissionFlag", ({ + enumerable: true, + get: function () { + return _util.PermissionFlag; + } +})); +Object.defineProperty(exports, "PixelsPerInch", ({ + enumerable: true, + get: function () { + return _display_utils.PixelsPerInch; + } +})); +Object.defineProperty(exports, "RenderingCancelledException", ({ + enumerable: true, + get: function () { + return _display_utils.RenderingCancelledException; + } +})); +Object.defineProperty(exports, "SVGGraphics", ({ + enumerable: true, + get: function () { + return _svg.SVGGraphics; + } +})); +Object.defineProperty(exports, "UNSUPPORTED_FEATURES", ({ + enumerable: true, + get: function () { + return _util.UNSUPPORTED_FEATURES; + } +})); +Object.defineProperty(exports, "UnexpectedResponseException", ({ + enumerable: true, + get: function () { + return _util.UnexpectedResponseException; + } +})); +Object.defineProperty(exports, "Util", ({ + enumerable: true, + get: function () { + return _util.Util; + } +})); +Object.defineProperty(exports, "VerbosityLevel", ({ + enumerable: true, + get: function () { + return _util.VerbosityLevel; + } +})); +Object.defineProperty(exports, "XfaLayer", ({ + enumerable: true, + get: function () { + return _xfa_layer.XfaLayer; + } +})); +Object.defineProperty(exports, "build", ({ + enumerable: true, + get: function () { + return _api.build; + } +})); +Object.defineProperty(exports, "createPromiseCapability", ({ + enumerable: true, + get: function () { + return _util.createPromiseCapability; + } +})); +Object.defineProperty(exports, "createValidAbsoluteUrl", ({ + enumerable: true, + get: function () { + return _util.createValidAbsoluteUrl; + } +})); +Object.defineProperty(exports, "getDocument", ({ + enumerable: true, + get: function () { + return _api.getDocument; + } +})); +Object.defineProperty(exports, "getFilenameFromUrl", ({ + enumerable: true, + get: function () { + return _display_utils.getFilenameFromUrl; + } +})); +Object.defineProperty(exports, "getPdfFilenameFromUrl", ({ + enumerable: true, + get: function () { + return _display_utils.getPdfFilenameFromUrl; + } +})); +Object.defineProperty(exports, "getXfaPageViewport", ({ + enumerable: true, + get: function () { + return _display_utils.getXfaPageViewport; + } +})); +Object.defineProperty(exports, "isPdfFile", ({ + enumerable: true, + get: function () { + return _display_utils.isPdfFile; + } +})); +Object.defineProperty(exports, "loadScript", ({ + enumerable: true, + get: function () { + return _display_utils.loadScript; + } +})); +Object.defineProperty(exports, "renderTextLayer", ({ + enumerable: true, + get: function () { + return _text_layer.renderTextLayer; + } +})); +Object.defineProperty(exports, "shadow", ({ + enumerable: true, + get: function () { + return _util.shadow; + } +})); +Object.defineProperty(exports, "version", ({ + enumerable: true, + get: function () { + return _api.version; + } +})); + +var _util = __w_pdfjs_require__(1); + +var _api = __w_pdfjs_require__(4); + +var _display_utils = __w_pdfjs_require__(5); + +var _annotation_layer = __w_pdfjs_require__(20); + +var _worker_options = __w_pdfjs_require__(13); + +var _is_node = __w_pdfjs_require__(3); + +var _text_layer = __w_pdfjs_require__(23); + +var _svg = __w_pdfjs_require__(24); + +var _xfa_layer = __w_pdfjs_require__(22); + +const pdfjsVersion = '2.14.305'; +const pdfjsBuild = 'eaaa8b4ad'; +{ + if (_is_node.isNodeJS) { + const { + PDFNodeStream + } = __w_pdfjs_require__(25); + + (0, _api.setPDFNetworkStreamFactory)(params => { + return new PDFNodeStream(params); + }); + } else { + const { + PDFNetworkStream + } = __w_pdfjs_require__(28); + + const { + PDFFetchStream + } = __w_pdfjs_require__(29); + + (0, _api.setPDFNetworkStreamFactory)(params => { + if ((0, _display_utils.isValidFetchUrl)(params.url)) { + return new PDFFetchStream(params); + } + + return new PDFNetworkStream(params); + }); + } +} +})(); + +/******/ return __webpack_exports__; +/******/ })() +; +}); +//# sourceMappingURL=pdf.js.map \ No newline at end of file diff --git a/static/js/pdf.js.map b/static/js/pdf.js.map new file mode 100644 index 0000000..faa1a25 --- /dev/null +++ b/static/js/pdf.js.map @@ -0,0 +1 @@ +{"version":3,"file":"pdf.js","mappings":"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","sources":["webpack://pdfjs-dist/build/pdf/webpack/universalModuleDefinition","webpack://pdfjs-dist/build/pdf/src/shared/util.js","webpack://pdfjs-dist/build/pdf/src/shared/compatibility.js","webpack://pdfjs-dist/build/pdf/src/shared/is_node.js","webpack://pdfjs-dist/build/pdf/src/display/api.js","webpack://pdfjs-dist/build/pdf/src/display/display_utils.js","webpack://pdfjs-dist/build/pdf/src/display/base_factory.js","webpack://pdfjs-dist/build/pdf/src/display/font_loader.js","webpack://pdfjs-dist/build/pdf/src/display/annotation_storage.js","webpack://pdfjs-dist/build/pdf/src/shared/murmurhash3.js","webpack://pdfjs-dist/build/pdf/src/display/canvas.js","webpack://pdfjs-dist/build/pdf/src/display/pattern_helper.js","webpack://pdfjs-dist/build/pdf/src/shared/image_utils.js","webpack://pdfjs-dist/build/pdf/src/display/worker_options.js","webpack://pdfjs-dist/build/pdf/src/shared/message_handler.js","webpack://pdfjs-dist/build/pdf/src/display/metadata.js","webpack://pdfjs-dist/build/pdf/src/display/optional_content_config.js","webpack://pdfjs-dist/build/pdf/src/display/transport_stream.js","webpack://pdfjs-dist/build/pdf/src/display/xfa_text.js","webpack://pdfjs-dist/build/pdf/src/display/node_utils.js","webpack://pdfjs-dist/build/pdf/src/display/annotation_layer.js","webpack://pdfjs-dist/build/pdf/src/shared/scripting_utils.js","webpack://pdfjs-dist/build/pdf/src/display/xfa_layer.js","webpack://pdfjs-dist/build/pdf/src/display/text_layer.js","webpack://pdfjs-dist/build/pdf/src/display/svg.js","webpack://pdfjs-dist/build/pdf/src/display/node_stream.js","webpack://pdfjs-dist/build/pdf/src/display/network_utils.js","webpack://pdfjs-dist/build/pdf/src/display/content_disposition.js","webpack://pdfjs-dist/build/pdf/src/display/network.js","webpack://pdfjs-dist/build/pdf/src/display/fetch_stream.js","webpack://pdfjs-dist/build/pdf/webpack/bootstrap","webpack://pdfjs-dist/build/pdf/src/pdf.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"pdfjs-dist/build/pdf\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"pdfjs-dist/build/pdf\"] = factory();\n\telse\n\t\troot[\"pdfjs-dist/build/pdf\"] = factory();\n})(this, () => {\nreturn ","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport \"./compatibility.js\";\n\nconst IDENTITY_MATRIX = [1, 0, 0, 1, 0, 0];\nconst FONT_IDENTITY_MATRIX = [0.001, 0, 0, 0.001, 0, 0];\n\n/**\n * Refer to the `WorkerTransport.getRenderingIntent`-method in the API, to see\n * how these flags are being used:\n * - ANY, DISPLAY, and PRINT are the normal rendering intents, note the\n * `PDFPageProxy.{render, getOperatorList, getAnnotations}`-methods.\n * - ANNOTATIONS_FORMS, ANNOTATIONS_STORAGE, ANNOTATIONS_DISABLE control which\n * annotations are rendered onto the canvas (i.e. by being included in the\n * operatorList), note the `PDFPageProxy.{render, getOperatorList}`-methods\n * and their `annotationMode`-option.\n * - OPLIST is used with the `PDFPageProxy.getOperatorList`-method, note the\n * `OperatorList`-constructor (on the worker-thread).\n */\nconst RenderingIntentFlag = {\n ANY: 0x01,\n DISPLAY: 0x02,\n PRINT: 0x04,\n ANNOTATIONS_FORMS: 0x10,\n ANNOTATIONS_STORAGE: 0x20,\n ANNOTATIONS_DISABLE: 0x40,\n OPLIST: 0x100,\n};\n\nconst AnnotationMode = {\n DISABLE: 0,\n ENABLE: 1,\n ENABLE_FORMS: 2,\n ENABLE_STORAGE: 3,\n};\n\n// Permission flags from Table 22, Section 7.6.3.2 of the PDF specification.\nconst PermissionFlag = {\n PRINT: 0x04,\n MODIFY_CONTENTS: 0x08,\n COPY: 0x10,\n MODIFY_ANNOTATIONS: 0x20,\n FILL_INTERACTIVE_FORMS: 0x100,\n COPY_FOR_ACCESSIBILITY: 0x200,\n ASSEMBLE: 0x400,\n PRINT_HIGH_QUALITY: 0x800,\n};\n\nconst TextRenderingMode = {\n FILL: 0,\n STROKE: 1,\n FILL_STROKE: 2,\n INVISIBLE: 3,\n FILL_ADD_TO_PATH: 4,\n STROKE_ADD_TO_PATH: 5,\n FILL_STROKE_ADD_TO_PATH: 6,\n ADD_TO_PATH: 7,\n FILL_STROKE_MASK: 3,\n ADD_TO_PATH_FLAG: 4,\n};\n\nconst ImageKind = {\n GRAYSCALE_1BPP: 1,\n RGB_24BPP: 2,\n RGBA_32BPP: 3,\n};\n\nconst AnnotationType = {\n TEXT: 1,\n LINK: 2,\n FREETEXT: 3,\n LINE: 4,\n SQUARE: 5,\n CIRCLE: 6,\n POLYGON: 7,\n POLYLINE: 8,\n HIGHLIGHT: 9,\n UNDERLINE: 10,\n SQUIGGLY: 11,\n STRIKEOUT: 12,\n STAMP: 13,\n CARET: 14,\n INK: 15,\n POPUP: 16,\n FILEATTACHMENT: 17,\n SOUND: 18,\n MOVIE: 19,\n WIDGET: 20,\n SCREEN: 21,\n PRINTERMARK: 22,\n TRAPNET: 23,\n WATERMARK: 24,\n THREED: 25,\n REDACT: 26,\n};\n\nconst AnnotationStateModelType = {\n MARKED: \"Marked\",\n REVIEW: \"Review\",\n};\n\nconst AnnotationMarkedState = {\n MARKED: \"Marked\",\n UNMARKED: \"Unmarked\",\n};\n\nconst AnnotationReviewState = {\n ACCEPTED: \"Accepted\",\n REJECTED: \"Rejected\",\n CANCELLED: \"Cancelled\",\n COMPLETED: \"Completed\",\n NONE: \"None\",\n};\n\nconst AnnotationReplyType = {\n GROUP: \"Group\",\n REPLY: \"R\",\n};\n\nconst AnnotationFlag = {\n INVISIBLE: 0x01,\n HIDDEN: 0x02,\n PRINT: 0x04,\n NOZOOM: 0x08,\n NOROTATE: 0x10,\n NOVIEW: 0x20,\n READONLY: 0x40,\n LOCKED: 0x80,\n TOGGLENOVIEW: 0x100,\n LOCKEDCONTENTS: 0x200,\n};\n\nconst AnnotationFieldFlag = {\n READONLY: 0x0000001,\n REQUIRED: 0x0000002,\n NOEXPORT: 0x0000004,\n MULTILINE: 0x0001000,\n PASSWORD: 0x0002000,\n NOTOGGLETOOFF: 0x0004000,\n RADIO: 0x0008000,\n PUSHBUTTON: 0x0010000,\n COMBO: 0x0020000,\n EDIT: 0x0040000,\n SORT: 0x0080000,\n FILESELECT: 0x0100000,\n MULTISELECT: 0x0200000,\n DONOTSPELLCHECK: 0x0400000,\n DONOTSCROLL: 0x0800000,\n COMB: 0x1000000,\n RICHTEXT: 0x2000000,\n RADIOSINUNISON: 0x2000000,\n COMMITONSELCHANGE: 0x4000000,\n};\n\nconst AnnotationBorderStyleType = {\n SOLID: 1,\n DASHED: 2,\n BEVELED: 3,\n INSET: 4,\n UNDERLINE: 5,\n};\n\nconst AnnotationActionEventType = {\n E: \"Mouse Enter\",\n X: \"Mouse Exit\",\n D: \"Mouse Down\",\n U: \"Mouse Up\",\n Fo: \"Focus\",\n Bl: \"Blur\",\n PO: \"PageOpen\",\n PC: \"PageClose\",\n PV: \"PageVisible\",\n PI: \"PageInvisible\",\n K: \"Keystroke\",\n F: \"Format\",\n V: \"Validate\",\n C: \"Calculate\",\n};\n\nconst DocumentActionEventType = {\n WC: \"WillClose\",\n WS: \"WillSave\",\n DS: \"DidSave\",\n WP: \"WillPrint\",\n DP: \"DidPrint\",\n};\n\nconst PageActionEventType = {\n O: \"PageOpen\",\n C: \"PageClose\",\n};\n\nconst StreamType = {\n UNKNOWN: \"UNKNOWN\",\n FLATE: \"FLATE\",\n LZW: \"LZW\",\n DCT: \"DCT\",\n JPX: \"JPX\",\n JBIG: \"JBIG\",\n A85: \"A85\",\n AHX: \"AHX\",\n CCF: \"CCF\",\n RLX: \"RLX\", // PDF short name is 'RL', but telemetry requires three chars.\n};\n\nconst FontType = {\n UNKNOWN: \"UNKNOWN\",\n TYPE1: \"TYPE1\",\n TYPE1STANDARD: \"TYPE1STANDARD\",\n TYPE1C: \"TYPE1C\",\n CIDFONTTYPE0: \"CIDFONTTYPE0\",\n CIDFONTTYPE0C: \"CIDFONTTYPE0C\",\n TRUETYPE: \"TRUETYPE\",\n CIDFONTTYPE2: \"CIDFONTTYPE2\",\n TYPE3: \"TYPE3\",\n OPENTYPE: \"OPENTYPE\",\n TYPE0: \"TYPE0\",\n MMTYPE1: \"MMTYPE1\",\n};\n\nconst VerbosityLevel = {\n ERRORS: 0,\n WARNINGS: 1,\n INFOS: 5,\n};\n\nconst CMapCompressionType = {\n NONE: 0,\n BINARY: 1,\n STREAM: 2,\n};\n\n// All the possible operations for an operator list.\nconst OPS = {\n // Intentionally start from 1 so it is easy to spot bad operators that will be\n // 0's.\n dependency: 1,\n setLineWidth: 2,\n setLineCap: 3,\n setLineJoin: 4,\n setMiterLimit: 5,\n setDash: 6,\n setRenderingIntent: 7,\n setFlatness: 8,\n setGState: 9,\n save: 10,\n restore: 11,\n transform: 12,\n moveTo: 13,\n lineTo: 14,\n curveTo: 15,\n curveTo2: 16,\n curveTo3: 17,\n closePath: 18,\n rectangle: 19,\n stroke: 20,\n closeStroke: 21,\n fill: 22,\n eoFill: 23,\n fillStroke: 24,\n eoFillStroke: 25,\n closeFillStroke: 26,\n closeEOFillStroke: 27,\n endPath: 28,\n clip: 29,\n eoClip: 30,\n beginText: 31,\n endText: 32,\n setCharSpacing: 33,\n setWordSpacing: 34,\n setHScale: 35,\n setLeading: 36,\n setFont: 37,\n setTextRenderingMode: 38,\n setTextRise: 39,\n moveText: 40,\n setLeadingMoveText: 41,\n setTextMatrix: 42,\n nextLine: 43,\n showText: 44,\n showSpacedText: 45,\n nextLineShowText: 46,\n nextLineSetSpacingShowText: 47,\n setCharWidth: 48,\n setCharWidthAndBounds: 49,\n setStrokeColorSpace: 50,\n setFillColorSpace: 51,\n setStrokeColor: 52,\n setStrokeColorN: 53,\n setFillColor: 54,\n setFillColorN: 55,\n setStrokeGray: 56,\n setFillGray: 57,\n setStrokeRGBColor: 58,\n setFillRGBColor: 59,\n setStrokeCMYKColor: 60,\n setFillCMYKColor: 61,\n shadingFill: 62,\n beginInlineImage: 63,\n beginImageData: 64,\n endInlineImage: 65,\n paintXObject: 66,\n markPoint: 67,\n markPointProps: 68,\n beginMarkedContent: 69,\n beginMarkedContentProps: 70,\n endMarkedContent: 71,\n beginCompat: 72,\n endCompat: 73,\n paintFormXObjectBegin: 74,\n paintFormXObjectEnd: 75,\n beginGroup: 76,\n endGroup: 77,\n beginAnnotations: 78,\n endAnnotations: 79,\n beginAnnotation: 80,\n endAnnotation: 81,\n /** @deprecated unused */\n paintJpegXObject: 82,\n paintImageMaskXObject: 83,\n paintImageMaskXObjectGroup: 84,\n paintImageXObject: 85,\n paintInlineImageXObject: 86,\n paintInlineImageXObjectGroup: 87,\n paintImageXObjectRepeat: 88,\n paintImageMaskXObjectRepeat: 89,\n paintSolidColorImageMask: 90,\n constructPath: 91,\n};\n\nconst UNSUPPORTED_FEATURES = {\n /** @deprecated unused */\n unknown: \"unknown\",\n forms: \"forms\",\n javaScript: \"javaScript\",\n signatures: \"signatures\",\n smask: \"smask\",\n shadingPattern: \"shadingPattern\",\n /** @deprecated unused */\n font: \"font\",\n errorTilingPattern: \"errorTilingPattern\",\n errorExtGState: \"errorExtGState\",\n errorXObject: \"errorXObject\",\n errorFontLoadType3: \"errorFontLoadType3\",\n errorFontState: \"errorFontState\",\n errorFontMissing: \"errorFontMissing\",\n errorFontTranslate: \"errorFontTranslate\",\n errorColorSpace: \"errorColorSpace\",\n errorOperatorList: \"errorOperatorList\",\n errorFontToUnicode: \"errorFontToUnicode\",\n errorFontLoadNative: \"errorFontLoadNative\",\n errorFontBuildPath: \"errorFontBuildPath\",\n errorFontGetPath: \"errorFontGetPath\",\n errorMarkedContent: \"errorMarkedContent\",\n errorContentSubStream: \"errorContentSubStream\",\n};\n\nconst PasswordResponses = {\n NEED_PASSWORD: 1,\n INCORRECT_PASSWORD: 2,\n};\n\nlet verbosity = VerbosityLevel.WARNINGS;\n\nfunction setVerbosityLevel(level) {\n if (Number.isInteger(level)) {\n verbosity = level;\n }\n}\n\nfunction getVerbosityLevel() {\n return verbosity;\n}\n\n// A notice for devs. These are good for things that are helpful to devs, such\n// as warning that Workers were disabled, which is important to devs but not\n// end users.\nfunction info(msg) {\n if (verbosity >= VerbosityLevel.INFOS) {\n console.log(`Info: ${msg}`);\n }\n}\n\n// Non-fatal warnings.\nfunction warn(msg) {\n if (verbosity >= VerbosityLevel.WARNINGS) {\n console.log(`Warning: ${msg}`);\n }\n}\n\nfunction unreachable(msg) {\n throw new Error(msg);\n}\n\nfunction assert(cond, msg) {\n if (!cond) {\n unreachable(msg);\n }\n}\n\n// Checks if URLs use one of the allowed protocols, e.g. to avoid XSS.\nfunction _isValidProtocol(url) {\n if (!url) {\n return false;\n }\n switch (url.protocol) {\n case \"http:\":\n case \"https:\":\n case \"ftp:\":\n case \"mailto:\":\n case \"tel:\":\n return true;\n default:\n return false;\n }\n}\n\n/**\n * Attempts to create a valid absolute URL.\n *\n * @param {URL|string} url - An absolute, or relative, URL.\n * @param {URL|string} [baseUrl] - An absolute URL.\n * @param {Object} [options]\n * @returns Either a valid {URL}, or `null` otherwise.\n */\nfunction createValidAbsoluteUrl(url, baseUrl = null, options = null) {\n if (!url) {\n return null;\n }\n try {\n if (options && typeof url === \"string\") {\n // Let URLs beginning with \"www.\" default to using the \"http://\" protocol.\n if (options.addDefaultProtocol && url.startsWith(\"www.\")) {\n const dots = url.match(/\\./g);\n // Avoid accidentally matching a *relative* URL pointing to a file named\n // e.g. \"www.pdf\" or similar.\n if (dots && dots.length >= 2) {\n url = `http://${url}`;\n }\n }\n\n // According to ISO 32000-1:2008, section 12.6.4.7, URIs should be encoded\n // in 7-bit ASCII. Some bad PDFs use UTF-8 encoding; see bug 1122280.\n if (options.tryConvertEncoding) {\n try {\n url = stringToUTF8String(url);\n } catch (ex) {}\n }\n }\n\n const absoluteUrl = baseUrl ? new URL(url, baseUrl) : new URL(url);\n if (_isValidProtocol(absoluteUrl)) {\n return absoluteUrl;\n }\n } catch (ex) {\n /* `new URL()` will throw on incorrect data. */\n }\n return null;\n}\n\nfunction shadow(obj, prop, value) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n prop in obj,\n `shadow: Property \"${prop && prop.toString()}\" not found in object.`\n );\n }\n Object.defineProperty(obj, prop, {\n value,\n enumerable: true,\n configurable: true,\n writable: false,\n });\n return value;\n}\n\n/**\n * @type {any}\n */\nconst BaseException = (function BaseExceptionClosure() {\n // eslint-disable-next-line no-shadow\n function BaseException(message, name) {\n if (this.constructor === BaseException) {\n unreachable(\"Cannot initialize BaseException.\");\n }\n this.message = message;\n this.name = name;\n }\n BaseException.prototype = new Error();\n BaseException.constructor = BaseException;\n\n return BaseException;\n})();\n\nclass PasswordException extends BaseException {\n constructor(msg, code) {\n super(msg, \"PasswordException\");\n this.code = code;\n }\n}\n\nclass UnknownErrorException extends BaseException {\n constructor(msg, details) {\n super(msg, \"UnknownErrorException\");\n this.details = details;\n }\n}\n\nclass InvalidPDFException extends BaseException {\n constructor(msg) {\n super(msg, \"InvalidPDFException\");\n }\n}\n\nclass MissingPDFException extends BaseException {\n constructor(msg) {\n super(msg, \"MissingPDFException\");\n }\n}\n\nclass UnexpectedResponseException extends BaseException {\n constructor(msg, status) {\n super(msg, \"UnexpectedResponseException\");\n this.status = status;\n }\n}\n\n/**\n * Error caused during parsing PDF data.\n */\nclass FormatError extends BaseException {\n constructor(msg) {\n super(msg, \"FormatError\");\n }\n}\n\n/**\n * Error used to indicate task cancellation.\n */\nclass AbortException extends BaseException {\n constructor(msg) {\n super(msg, \"AbortException\");\n }\n}\n\nfunction bytesToString(bytes) {\n if (\n typeof bytes !== \"object\" ||\n bytes === null ||\n bytes.length === undefined\n ) {\n unreachable(\"Invalid argument for bytesToString\");\n }\n const length = bytes.length;\n const MAX_ARGUMENT_COUNT = 8192;\n if (length < MAX_ARGUMENT_COUNT) {\n return String.fromCharCode.apply(null, bytes);\n }\n const strBuf = [];\n for (let i = 0; i < length; i += MAX_ARGUMENT_COUNT) {\n const chunkEnd = Math.min(i + MAX_ARGUMENT_COUNT, length);\n const chunk = bytes.subarray(i, chunkEnd);\n strBuf.push(String.fromCharCode.apply(null, chunk));\n }\n return strBuf.join(\"\");\n}\n\nfunction stringToBytes(str) {\n if (typeof str !== \"string\") {\n unreachable(\"Invalid argument for stringToBytes\");\n }\n const length = str.length;\n const bytes = new Uint8Array(length);\n for (let i = 0; i < length; ++i) {\n bytes[i] = str.charCodeAt(i) & 0xff;\n }\n return bytes;\n}\n\n/**\n * Gets length of the array (Array, Uint8Array, or string) in bytes.\n * @param {Array|Uint8Array|string} arr\n * @returns {number}\n */\n// eslint-disable-next-line consistent-return\nfunction arrayByteLength(arr) {\n if (arr.length !== undefined) {\n return arr.length;\n }\n if (arr.byteLength !== undefined) {\n return arr.byteLength;\n }\n unreachable(\"Invalid argument for arrayByteLength\");\n}\n\n/**\n * Combines array items (arrays) into single Uint8Array object.\n * @param {Array|Uint8Array|string>} arr - the array of the arrays\n * (Array, Uint8Array, or string).\n * @returns {Uint8Array}\n */\nfunction arraysToBytes(arr) {\n const length = arr.length;\n // Shortcut: if first and only item is Uint8Array, return it.\n if (length === 1 && arr[0] instanceof Uint8Array) {\n return arr[0];\n }\n let resultLength = 0;\n for (let i = 0; i < length; i++) {\n resultLength += arrayByteLength(arr[i]);\n }\n let pos = 0;\n const data = new Uint8Array(resultLength);\n for (let i = 0; i < length; i++) {\n let item = arr[i];\n if (!(item instanceof Uint8Array)) {\n if (typeof item === \"string\") {\n item = stringToBytes(item);\n } else {\n item = new Uint8Array(item);\n }\n }\n const itemLength = item.byteLength;\n data.set(item, pos);\n pos += itemLength;\n }\n return data;\n}\n\nfunction string32(value) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n typeof value === \"number\" && Math.abs(value) < 2 ** 32,\n `string32: Unexpected input \"${value}\".`\n );\n }\n return String.fromCharCode(\n (value >> 24) & 0xff,\n (value >> 16) & 0xff,\n (value >> 8) & 0xff,\n value & 0xff\n );\n}\n\nfunction objectSize(obj) {\n return Object.keys(obj).length;\n}\n\n// Ensure that the returned Object has a `null` prototype; hence why\n// `Object.fromEntries(...)` is not used.\nfunction objectFromMap(map) {\n const obj = Object.create(null);\n for (const [key, value] of map) {\n obj[key] = value;\n }\n return obj;\n}\n\n// Checks the endianness of the platform.\nfunction isLittleEndian() {\n const buffer8 = new Uint8Array(4);\n buffer8[0] = 1;\n const view32 = new Uint32Array(buffer8.buffer, 0, 1);\n return view32[0] === 1;\n}\n\n// Checks if it's possible to eval JS expressions.\nfunction isEvalSupported() {\n try {\n new Function(\"\"); // eslint-disable-line no-new, no-new-func\n return true;\n } catch (e) {\n return false;\n }\n}\n\nclass FeatureTest {\n static get isLittleEndian() {\n return shadow(this, \"isLittleEndian\", isLittleEndian());\n }\n\n static get isEvalSupported() {\n return shadow(this, \"isEvalSupported\", isEvalSupported());\n }\n\n static get isOffscreenCanvasSupported() {\n return shadow(\n this,\n \"isOffscreenCanvasSupported\",\n typeof OffscreenCanvas !== \"undefined\"\n );\n }\n}\n\nconst hexNumbers = [...Array(256).keys()].map(n =>\n n.toString(16).padStart(2, \"0\")\n);\n\nclass Util {\n static makeHexColor(r, g, b) {\n return `#${hexNumbers[r]}${hexNumbers[g]}${hexNumbers[b]}`;\n }\n\n // Apply a scaling matrix to some min/max values.\n // If a scaling factor is negative then min and max must be\n // swaped.\n static scaleMinMax(transform, minMax) {\n let temp;\n if (transform[0]) {\n if (transform[0] < 0) {\n temp = minMax[0];\n minMax[0] = minMax[1];\n minMax[1] = temp;\n }\n minMax[0] *= transform[0];\n minMax[1] *= transform[0];\n\n if (transform[3] < 0) {\n temp = minMax[2];\n minMax[2] = minMax[3];\n minMax[3] = temp;\n }\n minMax[2] *= transform[3];\n minMax[3] *= transform[3];\n } else {\n temp = minMax[0];\n minMax[0] = minMax[2];\n minMax[2] = temp;\n temp = minMax[1];\n minMax[1] = minMax[3];\n minMax[3] = temp;\n\n if (transform[1] < 0) {\n temp = minMax[2];\n minMax[2] = minMax[3];\n minMax[3] = temp;\n }\n minMax[2] *= transform[1];\n minMax[3] *= transform[1];\n\n if (transform[2] < 0) {\n temp = minMax[0];\n minMax[0] = minMax[1];\n minMax[1] = temp;\n }\n minMax[0] *= transform[2];\n minMax[1] *= transform[2];\n }\n minMax[0] += transform[4];\n minMax[1] += transform[4];\n minMax[2] += transform[5];\n minMax[3] += transform[5];\n }\n\n // Concatenates two transformation matrices together and returns the result.\n static transform(m1, m2) {\n return [\n m1[0] * m2[0] + m1[2] * m2[1],\n m1[1] * m2[0] + m1[3] * m2[1],\n m1[0] * m2[2] + m1[2] * m2[3],\n m1[1] * m2[2] + m1[3] * m2[3],\n m1[0] * m2[4] + m1[2] * m2[5] + m1[4],\n m1[1] * m2[4] + m1[3] * m2[5] + m1[5],\n ];\n }\n\n // For 2d affine transforms\n static applyTransform(p, m) {\n const xt = p[0] * m[0] + p[1] * m[2] + m[4];\n const yt = p[0] * m[1] + p[1] * m[3] + m[5];\n return [xt, yt];\n }\n\n static applyInverseTransform(p, m) {\n const d = m[0] * m[3] - m[1] * m[2];\n const xt = (p[0] * m[3] - p[1] * m[2] + m[2] * m[5] - m[4] * m[3]) / d;\n const yt = (-p[0] * m[1] + p[1] * m[0] + m[4] * m[1] - m[5] * m[0]) / d;\n return [xt, yt];\n }\n\n // Applies the transform to the rectangle and finds the minimum axially\n // aligned bounding box.\n static getAxialAlignedBoundingBox(r, m) {\n const p1 = Util.applyTransform(r, m);\n const p2 = Util.applyTransform(r.slice(2, 4), m);\n const p3 = Util.applyTransform([r[0], r[3]], m);\n const p4 = Util.applyTransform([r[2], r[1]], m);\n return [\n Math.min(p1[0], p2[0], p3[0], p4[0]),\n Math.min(p1[1], p2[1], p3[1], p4[1]),\n Math.max(p1[0], p2[0], p3[0], p4[0]),\n Math.max(p1[1], p2[1], p3[1], p4[1]),\n ];\n }\n\n static inverseTransform(m) {\n const d = m[0] * m[3] - m[1] * m[2];\n return [\n m[3] / d,\n -m[1] / d,\n -m[2] / d,\n m[0] / d,\n (m[2] * m[5] - m[4] * m[3]) / d,\n (m[4] * m[1] - m[5] * m[0]) / d,\n ];\n }\n\n // Apply a generic 3d matrix M on a 3-vector v:\n // | a b c | | X |\n // | d e f | x | Y |\n // | g h i | | Z |\n // M is assumed to be serialized as [a,b,c,d,e,f,g,h,i],\n // with v as [X,Y,Z]\n static apply3dTransform(m, v) {\n return [\n m[0] * v[0] + m[1] * v[1] + m[2] * v[2],\n m[3] * v[0] + m[4] * v[1] + m[5] * v[2],\n m[6] * v[0] + m[7] * v[1] + m[8] * v[2],\n ];\n }\n\n // This calculation uses Singular Value Decomposition.\n // The SVD can be represented with formula A = USV. We are interested in the\n // matrix S here because it represents the scale values.\n static singularValueDecompose2dScale(m) {\n const transpose = [m[0], m[2], m[1], m[3]];\n\n // Multiply matrix m with its transpose.\n const a = m[0] * transpose[0] + m[1] * transpose[2];\n const b = m[0] * transpose[1] + m[1] * transpose[3];\n const c = m[2] * transpose[0] + m[3] * transpose[2];\n const d = m[2] * transpose[1] + m[3] * transpose[3];\n\n // Solve the second degree polynomial to get roots.\n const first = (a + d) / 2;\n const second = Math.sqrt((a + d) ** 2 - 4 * (a * d - c * b)) / 2;\n const sx = first + second || 1;\n const sy = first - second || 1;\n\n // Scale values are the square roots of the eigenvalues.\n return [Math.sqrt(sx), Math.sqrt(sy)];\n }\n\n // Normalize rectangle rect=[x1, y1, x2, y2] so that (x1,y1) < (x2,y2)\n // For coordinate systems whose origin lies in the bottom-left, this\n // means normalization to (BL,TR) ordering. For systems with origin in the\n // top-left, this means (TL,BR) ordering.\n static normalizeRect(rect) {\n const r = rect.slice(0); // clone rect\n if (rect[0] > rect[2]) {\n r[0] = rect[2];\n r[2] = rect[0];\n }\n if (rect[1] > rect[3]) {\n r[1] = rect[3];\n r[3] = rect[1];\n }\n return r;\n }\n\n // Returns a rectangle [x1, y1, x2, y2] corresponding to the\n // intersection of rect1 and rect2. If no intersection, returns 'null'\n // The rectangle coordinates of rect1, rect2 should be [x1, y1, x2, y2]\n static intersect(rect1, rect2) {\n const xLow = Math.max(\n Math.min(rect1[0], rect1[2]),\n Math.min(rect2[0], rect2[2])\n );\n const xHigh = Math.min(\n Math.max(rect1[0], rect1[2]),\n Math.max(rect2[0], rect2[2])\n );\n if (xLow > xHigh) {\n return null;\n }\n const yLow = Math.max(\n Math.min(rect1[1], rect1[3]),\n Math.min(rect2[1], rect2[3])\n );\n const yHigh = Math.min(\n Math.max(rect1[1], rect1[3]),\n Math.max(rect2[1], rect2[3])\n );\n if (yLow > yHigh) {\n return null;\n }\n\n return [xLow, yLow, xHigh, yHigh];\n }\n\n // From https://github.com/adobe-webplatform/Snap.svg/blob/b365287722a72526000ac4bfcf0ce4cac2faa015/src/path.js#L852\n static bezierBoundingBox(x0, y0, x1, y1, x2, y2, x3, y3) {\n const tvalues = [],\n bounds = [[], []];\n let a, b, c, t, t1, t2, b2ac, sqrtb2ac;\n for (let i = 0; i < 2; ++i) {\n if (i === 0) {\n b = 6 * x0 - 12 * x1 + 6 * x2;\n a = -3 * x0 + 9 * x1 - 9 * x2 + 3 * x3;\n c = 3 * x1 - 3 * x0;\n } else {\n b = 6 * y0 - 12 * y1 + 6 * y2;\n a = -3 * y0 + 9 * y1 - 9 * y2 + 3 * y3;\n c = 3 * y1 - 3 * y0;\n }\n if (Math.abs(a) < 1e-12) {\n if (Math.abs(b) < 1e-12) {\n continue;\n }\n t = -c / b;\n if (0 < t && t < 1) {\n tvalues.push(t);\n }\n continue;\n }\n b2ac = b * b - 4 * c * a;\n sqrtb2ac = Math.sqrt(b2ac);\n if (b2ac < 0) {\n continue;\n }\n t1 = (-b + sqrtb2ac) / (2 * a);\n if (0 < t1 && t1 < 1) {\n tvalues.push(t1);\n }\n t2 = (-b - sqrtb2ac) / (2 * a);\n if (0 < t2 && t2 < 1) {\n tvalues.push(t2);\n }\n }\n\n let j = tvalues.length,\n mt;\n const jlen = j;\n while (j--) {\n t = tvalues[j];\n mt = 1 - t;\n bounds[0][j] =\n mt * mt * mt * x0 +\n 3 * mt * mt * t * x1 +\n 3 * mt * t * t * x2 +\n t * t * t * x3;\n bounds[1][j] =\n mt * mt * mt * y0 +\n 3 * mt * mt * t * y1 +\n 3 * mt * t * t * y2 +\n t * t * t * y3;\n }\n\n bounds[0][jlen] = x0;\n bounds[1][jlen] = y0;\n bounds[0][jlen + 1] = x3;\n bounds[1][jlen + 1] = y3;\n bounds[0].length = bounds[1].length = jlen + 2;\n\n return [\n Math.min(...bounds[0]),\n Math.min(...bounds[1]),\n Math.max(...bounds[0]),\n Math.max(...bounds[1]),\n ];\n }\n}\n\nconst PDFStringTranslateTable = [\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2d8,\n 0x2c7, 0x2c6, 0x2d9, 0x2dd, 0x2db, 0x2da, 0x2dc, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0x2022, 0x2020, 0x2021, 0x2026, 0x2014, 0x2013, 0x192,\n 0x2044, 0x2039, 0x203a, 0x2212, 0x2030, 0x201e, 0x201c, 0x201d, 0x2018,\n 0x2019, 0x201a, 0x2122, 0xfb01, 0xfb02, 0x141, 0x152, 0x160, 0x178, 0x17d,\n 0x131, 0x142, 0x153, 0x161, 0x17e, 0, 0x20ac,\n];\n\nfunction stringToPDFString(str) {\n if (str[0] >= \"\\xEF\") {\n let encoding;\n if (str[0] === \"\\xFE\" && str[1] === \"\\xFF\") {\n encoding = \"utf-16be\";\n } else if (str[0] === \"\\xFF\" && str[1] === \"\\xFE\") {\n encoding = \"utf-16le\";\n } else if (str[0] === \"\\xEF\" && str[1] === \"\\xBB\" && str[2] === \"\\xBF\") {\n encoding = \"utf-8\";\n }\n\n if (encoding) {\n try {\n const decoder = new TextDecoder(encoding, { fatal: true });\n const buffer = stringToBytes(str);\n return decoder.decode(buffer);\n } catch (ex) {\n warn(`stringToPDFString: \"${ex}\".`);\n }\n }\n }\n // ISO Latin 1\n const strBuf = [];\n for (let i = 0, ii = str.length; i < ii; i++) {\n const code = PDFStringTranslateTable[str.charCodeAt(i)];\n strBuf.push(code ? String.fromCharCode(code) : str.charAt(i));\n }\n return strBuf.join(\"\");\n}\n\nfunction escapeString(str) {\n // replace \"(\", \")\", \"\\n\", \"\\r\" and \"\\\"\n // by \"\\(\", \"\\)\", \"\\\\n\", \"\\\\r\" and \"\\\\\"\n // in order to write it in a PDF file.\n return str.replace(/([()\\\\\\n\\r])/g, match => {\n if (match === \"\\n\") {\n return \"\\\\n\";\n } else if (match === \"\\r\") {\n return \"\\\\r\";\n }\n return `\\\\${match}`;\n });\n}\n\nfunction isAscii(str) {\n return /^[\\x00-\\x7F]*$/.test(str);\n}\n\nfunction stringToUTF16BEString(str) {\n const buf = [\"\\xFE\\xFF\"];\n for (let i = 0, ii = str.length; i < ii; i++) {\n const char = str.charCodeAt(i);\n buf.push(\n String.fromCharCode((char >> 8) & 0xff),\n String.fromCharCode(char & 0xff)\n );\n }\n return buf.join(\"\");\n}\n\nfunction stringToUTF8String(str) {\n return decodeURIComponent(escape(str));\n}\n\nfunction utf8StringToString(str) {\n return unescape(encodeURIComponent(str));\n}\n\nfunction isArrayBuffer(v) {\n return typeof v === \"object\" && v !== null && v.byteLength !== undefined;\n}\n\nfunction isArrayEqual(arr1, arr2) {\n if (arr1.length !== arr2.length) {\n return false;\n }\n for (let i = 0, ii = arr1.length; i < ii; i++) {\n if (arr1[i] !== arr2[i]) {\n return false;\n }\n }\n return true;\n}\n\nfunction getModificationDate(date = new Date()) {\n const buffer = [\n date.getUTCFullYear().toString(),\n (date.getUTCMonth() + 1).toString().padStart(2, \"0\"),\n date.getUTCDate().toString().padStart(2, \"0\"),\n date.getUTCHours().toString().padStart(2, \"0\"),\n date.getUTCMinutes().toString().padStart(2, \"0\"),\n date.getUTCSeconds().toString().padStart(2, \"0\"),\n ];\n\n return buffer.join(\"\");\n}\n\n/**\n * Promise Capability object.\n *\n * @typedef {Object} PromiseCapability\n * @property {Promise} promise - A Promise object.\n * @property {boolean} settled - If the Promise has been fulfilled/rejected.\n * @property {function} resolve - Fulfills the Promise.\n * @property {function} reject - Rejects the Promise.\n */\n\n/**\n * Creates a promise capability object.\n * @alias createPromiseCapability\n *\n * @returns {PromiseCapability}\n */\nfunction createPromiseCapability() {\n const capability = Object.create(null);\n let isSettled = false;\n\n Object.defineProperty(capability, \"settled\", {\n get() {\n return isSettled;\n },\n });\n capability.promise = new Promise(function (resolve, reject) {\n capability.resolve = function (data) {\n isSettled = true;\n resolve(data);\n };\n capability.reject = function (reason) {\n isSettled = true;\n reject(reason);\n };\n });\n return capability;\n}\n\nexport {\n AbortException,\n AnnotationActionEventType,\n AnnotationBorderStyleType,\n AnnotationFieldFlag,\n AnnotationFlag,\n AnnotationMarkedState,\n AnnotationMode,\n AnnotationReplyType,\n AnnotationReviewState,\n AnnotationStateModelType,\n AnnotationType,\n arrayByteLength,\n arraysToBytes,\n assert,\n BaseException,\n bytesToString,\n CMapCompressionType,\n createPromiseCapability,\n createValidAbsoluteUrl,\n DocumentActionEventType,\n escapeString,\n FeatureTest,\n FONT_IDENTITY_MATRIX,\n FontType,\n FormatError,\n getModificationDate,\n getVerbosityLevel,\n IDENTITY_MATRIX,\n ImageKind,\n info,\n InvalidPDFException,\n isArrayBuffer,\n isArrayEqual,\n isAscii,\n MissingPDFException,\n objectFromMap,\n objectSize,\n OPS,\n PageActionEventType,\n PasswordException,\n PasswordResponses,\n PermissionFlag,\n RenderingIntentFlag,\n setVerbosityLevel,\n shadow,\n StreamType,\n string32,\n stringToBytes,\n stringToPDFString,\n stringToUTF16BEString,\n stringToUTF8String,\n TextRenderingMode,\n UnexpectedResponseException,\n UnknownErrorException,\n unreachable,\n UNSUPPORTED_FEATURES,\n utf8StringToString,\n Util,\n VerbosityLevel,\n warn,\n};\n","/* Copyright 2017 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* globals __non_webpack_require__ */\n\nimport { isNodeJS } from \"./is_node.js\";\n\n// Skip compatibility checks for modern builds and if we already ran the module.\nif (\n (typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"SKIP_BABEL\")) &&\n !globalThis._pdfjsCompatibilityChecked\n) {\n globalThis._pdfjsCompatibilityChecked = true;\n\n // Support: Node.js\n (function checkNodeBtoa() {\n if (globalThis.btoa || !isNodeJS) {\n return;\n }\n globalThis.btoa = function (chars) {\n // eslint-disable-next-line no-undef\n return Buffer.from(chars, \"binary\").toString(\"base64\");\n };\n })();\n\n // Support: Node.js\n (function checkNodeAtob() {\n if (globalThis.atob || !isNodeJS) {\n return;\n }\n globalThis.atob = function (input) {\n // eslint-disable-next-line no-undef\n return Buffer.from(input, \"base64\").toString(\"binary\");\n };\n })();\n\n // Support: Node.js\n (function checkDOMMatrix() {\n if (globalThis.DOMMatrix || !isNodeJS) {\n return;\n }\n globalThis.DOMMatrix = __non_webpack_require__(\n \"dommatrix/dist/dommatrix.js\"\n );\n })();\n\n // Provides support for *recent* additions to the Promise specification,\n // however basic Promise support is assumed to be available natively.\n // Support: Firefox<71, Chrome<76, Safari<13, Node.js<12.9.0\n (function checkPromise() {\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"IMAGE_DECODERS\")) {\n // The current image decoders are synchronous, hence `Promise` shouldn't\n // need to be polyfilled for the IMAGE_DECODERS build target.\n return;\n }\n if (globalThis.Promise.allSettled) {\n return;\n }\n globalThis.Promise = require(\"core-js/es/promise/index.js\");\n })();\n\n // Support: Node.js\n (function checkReadableStream() {\n if (globalThis.ReadableStream || !isNodeJS) {\n return;\n }\n globalThis.ReadableStream = __non_webpack_require__(\n \"web-streams-polyfill/dist/ponyfill.js\"\n ).ReadableStream;\n })();\n\n // Support: Firefox<94, Chrome<98, Safari<15.4, Node.js<17.0.0\n (function checkStructuredClone() {\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"IMAGE_DECODERS\")) {\n // The current image decoders are synchronous, hence `structuredClone`\n // shouldn't need to be polyfilled for the IMAGE_DECODERS build target.\n return;\n }\n if (globalThis.structuredClone) {\n return;\n }\n require(\"core-js/web/structured-clone.js\");\n })();\n}\n","/* Copyright 2018 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* globals process */\n\n// NW.js / Electron is a browser context, but copies some Node.js objects; see\n// http://docs.nwjs.io/en/latest/For%20Users/Advanced/JavaScript%20Contexts%20in%20NW.js/#access-nodejs-and-nwjs-api-in-browser-context\n// https://www.electronjs.org/docs/api/process#processversionselectron-readonly\n// https://www.electronjs.org/docs/api/process#processtype-readonly\nconst isNodeJS =\n (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) &&\n typeof process === \"object\" &&\n process + \"\" === \"[object process]\" &&\n !process.versions.nw &&\n !(process.versions.electron && process.type && process.type !== \"browser\");\n\nexport { isNodeJS };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * @module pdfjsLib\n */\n\nimport {\n AbortException,\n AnnotationMode,\n assert,\n createPromiseCapability,\n getVerbosityLevel,\n info,\n InvalidPDFException,\n isArrayBuffer,\n MissingPDFException,\n PasswordException,\n RenderingIntentFlag,\n setVerbosityLevel,\n shadow,\n stringToBytes,\n UnexpectedResponseException,\n UnknownErrorException,\n unreachable,\n warn,\n} from \"../shared/util.js\";\nimport {\n deprecated,\n DOMCanvasFactory,\n DOMCMapReaderFactory,\n DOMStandardFontDataFactory,\n isDataScheme,\n loadScript,\n PageViewport,\n RenderingCancelledException,\n StatTimer,\n} from \"./display_utils.js\";\nimport { FontFaceObject, FontLoader } from \"./font_loader.js\";\nimport { AnnotationStorage } from \"./annotation_storage.js\";\nimport { CanvasGraphics } from \"./canvas.js\";\nimport { GlobalWorkerOptions } from \"./worker_options.js\";\nimport { isNodeJS } from \"../shared/is_node.js\";\nimport { MessageHandler } from \"../shared/message_handler.js\";\nimport { Metadata } from \"./metadata.js\";\nimport { OptionalContentConfig } from \"./optional_content_config.js\";\nimport { PDFDataTransportStream } from \"./transport_stream.js\";\nimport { XfaText } from \"./xfa_text.js\";\n\nconst DEFAULT_RANGE_CHUNK_SIZE = 65536; // 2^16 = 65536\nconst RENDERING_CANCELLED_TIMEOUT = 100; // ms\n\nlet DefaultCanvasFactory = DOMCanvasFactory;\nlet DefaultCMapReaderFactory = DOMCMapReaderFactory;\nlet DefaultStandardFontDataFactory = DOMStandardFontDataFactory;\n\nif (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"GENERIC\") && isNodeJS) {\n const {\n NodeCanvasFactory,\n NodeCMapReaderFactory,\n NodeStandardFontDataFactory,\n } = require(\"./node_utils.js\");\n\n DefaultCanvasFactory = NodeCanvasFactory;\n DefaultCMapReaderFactory = NodeCMapReaderFactory;\n DefaultStandardFontDataFactory = NodeStandardFontDataFactory;\n}\n\n/**\n * @typedef {function} IPDFStreamFactory\n * @param {DocumentInitParameters} params - The document initialization\n * parameters. The \"url\" key is always present.\n * @returns {Promise} A promise, which is resolved with an instance of\n * {IPDFStream}.\n * @ignore\n */\n\n/**\n * @type {IPDFStreamFactory}\n * @private\n */\nlet createPDFNetworkStream;\n\n/**\n * Sets the function that instantiates an {IPDFStream} as an alternative PDF\n * data transport.\n *\n * @param {IPDFStreamFactory} pdfNetworkStreamFactory - The factory function\n * that takes document initialization parameters (including a \"url\") and\n * returns a promise which is resolved with an instance of {IPDFStream}.\n * @ignore\n */\nfunction setPDFNetworkStreamFactory(pdfNetworkStreamFactory) {\n createPDFNetworkStream = pdfNetworkStreamFactory;\n}\n\n/**\n * @typedef { Int8Array | Uint8Array | Uint8ClampedArray |\n * Int16Array | Uint16Array |\n * Int32Array | Uint32Array | Float32Array |\n * Float64Array\n * } TypedArray\n */\n\n/**\n * @typedef {Object} RefProxy\n * @property {number} num\n * @property {number} gen\n */\n\n/**\n * Document initialization / loading parameters object.\n *\n * @typedef {Object} DocumentInitParameters\n * @property {string|URL} [url] - The URL of the PDF.\n * @property {TypedArray|Array|string} [data] - Binary PDF data. Use\n * typed arrays (Uint8Array) to improve the memory usage. If PDF data is\n * BASE64-encoded, use `atob()` to convert it to a binary string first.\n * @property {Object} [httpHeaders] - Basic authentication headers.\n * @property {boolean} [withCredentials] - Indicates whether or not\n * cross-site Access-Control requests should be made using credentials such\n * as cookies or authorization headers. The default is `false`.\n * @property {string} [password] - For decrypting password-protected PDFs.\n * @property {TypedArray} [initialData] - A typed array with the first portion\n * or all of the pdf data. Used by the extension since some data is already\n * loaded before the switch to range requests.\n * @property {number} [length] - The PDF file length. It's used for progress\n * reports and range requests operations.\n * @property {PDFDataRangeTransport} [range] - Allows for using a custom range\n * transport implementation.\n * @property {number} [rangeChunkSize] - Specify maximum number of bytes fetched\n * per range request. The default value is {@link DEFAULT_RANGE_CHUNK_SIZE}.\n * @property {PDFWorker} [worker] - The worker that will be used for loading and\n * parsing the PDF data.\n * @property {number} [verbosity] - Controls the logging level; the constants\n * from {@link VerbosityLevel} should be used.\n * @property {string} [docBaseUrl] - The base URL of the document, used when\n * attempting to recover valid absolute URLs for annotations, and outline\n * items, that (incorrectly) only specify relative URLs.\n * @property {string} [cMapUrl] - The URL where the predefined Adobe CMaps are\n * located. Include the trailing slash.\n * @property {boolean} [cMapPacked] - Specifies if the Adobe CMaps are binary\n * packed or not.\n * @property {Object} [CMapReaderFactory] - The factory that will be used when\n * reading built-in CMap files. Providing a custom factory is useful for\n * environments without Fetch API or `XMLHttpRequest` support, such as\n * Node.js. The default value is {DOMCMapReaderFactory}.\n * @property {boolean} [useSystemFonts] - When `true`, fonts that aren't\n * embedded in the PDF document will fallback to a system font.\n * The default value is `true` in web environments and `false` in Node.js;\n * unless `disableFontFace === true` in which case this defaults to `false`\n * regardless of the environment (to prevent completely broken fonts).\n * @property {string} [standardFontDataUrl] - The URL where the standard font\n * files are located. Include the trailing slash.\n * @property {Object} [StandardFontDataFactory] - The factory that will be used\n * when reading the standard font files. Providing a custom factory is useful\n * for environments without Fetch API or `XMLHttpRequest` support, such as\n * Node.js. The default value is {DOMStandardFontDataFactory}.\n * @property {boolean} [useWorkerFetch] - Enable using the Fetch API in the\n * worker-thread when reading CMap and standard font files. When `true`,\n * the `CMapReaderFactory` and `StandardFontDataFactory` options are ignored.\n * The default value is `true` in web environments and `false` in Node.js.\n * @property {boolean} [stopAtErrors] - Reject certain promises, e.g.\n * `getOperatorList`, `getTextContent`, and `RenderTask`, when the associated\n * PDF data cannot be successfully parsed, instead of attempting to recover\n * whatever possible of the data. The default value is `false`.\n * @property {number} [maxImageSize] - The maximum allowed image size in total\n * pixels, i.e. width * height. Images above this value will not be rendered.\n * Use -1 for no limit, which is also the default value.\n * @property {boolean} [isEvalSupported] - Determines if we can evaluate strings\n * as JavaScript. Primarily used to improve performance of font rendering, and\n * when parsing PDF functions. The default value is `true`.\n * @property {boolean} [disableFontFace] - By default fonts are converted to\n * OpenType fonts and loaded via the Font Loading API or `@font-face` rules.\n * If disabled, fonts will be rendered using a built-in font renderer that\n * constructs the glyphs with primitive path commands.\n * The default value is `false` in web environments and `true` in Node.js.\n * @property {boolean} [fontExtraProperties] - Include additional properties,\n * which are unused during rendering of PDF documents, when exporting the\n * parsed font data from the worker-thread. This may be useful for debugging\n * purposes (and backwards compatibility), but note that it will lead to\n * increased memory usage. The default value is `false`.\n * @property {boolean} [enableXfa] - Render Xfa forms if any.\n * The default value is `false`.\n * @property {HTMLDocument} [ownerDocument] - Specify an explicit document\n * context to create elements with and to load resources, such as fonts,\n * into. Defaults to the current document.\n * @property {boolean} [disableRange] - Disable range request loading of PDF\n * files. When enabled, and if the server supports partial content requests,\n * then the PDF will be fetched in chunks. The default value is `false`.\n * @property {boolean} [disableStream] - Disable streaming of PDF file data.\n * By default PDF.js attempts to load PDF files in chunks. The default value\n * is `false`.\n * @property {boolean} [disableAutoFetch] - Disable pre-fetching of PDF file\n * data. When range requests are enabled PDF.js will automatically keep\n * fetching more data even if it isn't needed to display the current page.\n * The default value is `false`.\n *\n * NOTE: It is also necessary to disable streaming, see above, in order for\n * disabling of pre-fetching to work correctly.\n * @property {boolean} [pdfBug] - Enables special hooks for debugging PDF.js\n * (see `web/debugger.js`). The default value is `false`.\n */\n\n/**\n * This is the main entry point for loading a PDF and interacting with it.\n *\n * NOTE: If a URL is used to fetch the PDF data a standard Fetch API call (or\n * XHR as fallback) is used, which means it must follow same origin rules,\n * e.g. no cross-domain requests without CORS.\n *\n * @param {string|URL|TypedArray|PDFDataRangeTransport|DocumentInitParameters}\n * src - Can be a URL where a PDF file is located, a typed array (Uint8Array)\n * already populated with data, or a parameter object.\n * @returns {PDFDocumentLoadingTask}\n */\nfunction getDocument(src) {\n const task = new PDFDocumentLoadingTask();\n\n let source;\n if (typeof src === \"string\" || src instanceof URL) {\n source = { url: src };\n } else if (isArrayBuffer(src)) {\n source = { data: src };\n } else if (src instanceof PDFDataRangeTransport) {\n source = { range: src };\n } else {\n if (typeof src !== \"object\") {\n throw new Error(\n \"Invalid parameter in getDocument, \" +\n \"need either string, URL, Uint8Array, or parameter object.\"\n );\n }\n if (!src.url && !src.data && !src.range) {\n throw new Error(\n \"Invalid parameter object: need either .data, .range or .url\"\n );\n }\n source = src;\n }\n const params = Object.create(null);\n let rangeTransport = null,\n worker = null;\n\n for (const key in source) {\n const value = source[key];\n\n switch (key) {\n case \"url\":\n if (typeof window !== \"undefined\") {\n try {\n // The full path is required in the 'url' field.\n params[key] = new URL(value, window.location).href;\n continue;\n } catch (ex) {\n warn(`Cannot create valid URL: \"${ex}\".`);\n }\n } else if (typeof value === \"string\" || value instanceof URL) {\n params[key] = value.toString(); // Support Node.js environments.\n continue;\n }\n throw new Error(\n \"Invalid PDF url data: \" +\n \"either string or URL-object is expected in the url property.\"\n );\n case \"range\":\n rangeTransport = value;\n continue;\n case \"worker\":\n worker = value;\n continue;\n case \"data\":\n // Converting string or array-like data to Uint8Array.\n if (\n typeof PDFJSDev !== \"undefined\" &&\n PDFJSDev.test(\"GENERIC\") &&\n isNodeJS &&\n typeof Buffer !== \"undefined\" && // eslint-disable-line no-undef\n value instanceof Buffer // eslint-disable-line no-undef\n ) {\n params[key] = new Uint8Array(value);\n } else if (value instanceof Uint8Array) {\n break; // Use the data as-is when it's already a Uint8Array.\n } else if (typeof value === \"string\") {\n params[key] = stringToBytes(value);\n } else if (\n typeof value === \"object\" &&\n value !== null &&\n !isNaN(value.length)\n ) {\n params[key] = new Uint8Array(value);\n } else if (isArrayBuffer(value)) {\n params[key] = new Uint8Array(value);\n } else {\n throw new Error(\n \"Invalid PDF binary data: either typed array, \" +\n \"string, or array-like object is expected in the data property.\"\n );\n }\n continue;\n }\n params[key] = value;\n }\n\n params.CMapReaderFactory =\n params.CMapReaderFactory || DefaultCMapReaderFactory;\n params.StandardFontDataFactory =\n params.StandardFontDataFactory || DefaultStandardFontDataFactory;\n params.ignoreErrors = params.stopAtErrors !== true;\n params.fontExtraProperties = params.fontExtraProperties === true;\n params.pdfBug = params.pdfBug === true;\n params.enableXfa = params.enableXfa === true;\n\n if (!Number.isInteger(params.rangeChunkSize) || params.rangeChunkSize < 1) {\n params.rangeChunkSize = DEFAULT_RANGE_CHUNK_SIZE;\n }\n if (\n typeof params.docBaseUrl !== \"string\" ||\n isDataScheme(params.docBaseUrl)\n ) {\n // Ignore \"data:\"-URLs, since they can't be used to recover valid absolute\n // URLs anyway. We want to avoid sending them to the worker-thread, since\n // they contain the *entire* PDF document and can thus be arbitrarily long.\n params.docBaseUrl = null;\n }\n if (!Number.isInteger(params.maxImageSize) || params.maxImageSize < -1) {\n params.maxImageSize = -1;\n }\n if (typeof params.cMapUrl !== \"string\") {\n params.cMapUrl = null;\n }\n if (typeof params.standardFontDataUrl !== \"string\") {\n params.standardFontDataUrl = null;\n }\n if (typeof params.useWorkerFetch !== \"boolean\") {\n params.useWorkerFetch =\n params.CMapReaderFactory === DOMCMapReaderFactory &&\n params.StandardFontDataFactory === DOMStandardFontDataFactory;\n }\n if (typeof params.isEvalSupported !== \"boolean\") {\n params.isEvalSupported = true;\n }\n if (typeof params.disableFontFace !== \"boolean\") {\n params.disableFontFace = isNodeJS;\n }\n if (typeof params.useSystemFonts !== \"boolean\") {\n params.useSystemFonts = !isNodeJS && !params.disableFontFace;\n }\n if (\n typeof params.ownerDocument !== \"object\" ||\n params.ownerDocument === null\n ) {\n params.ownerDocument = globalThis.document;\n }\n\n if (typeof params.disableRange !== \"boolean\") {\n params.disableRange = false;\n }\n if (typeof params.disableStream !== \"boolean\") {\n params.disableStream = false;\n }\n if (typeof params.disableAutoFetch !== \"boolean\") {\n params.disableAutoFetch = false;\n }\n\n // Set the main-thread verbosity level.\n setVerbosityLevel(params.verbosity);\n\n if (!worker) {\n const workerParams = {\n verbosity: params.verbosity,\n port: GlobalWorkerOptions.workerPort,\n };\n // Worker was not provided -- creating and owning our own. If message port\n // is specified in global worker options, using it.\n worker = workerParams.port\n ? PDFWorker.fromPort(workerParams)\n : new PDFWorker(workerParams);\n task._worker = worker;\n }\n const docId = task.docId;\n worker.promise\n .then(function () {\n if (task.destroyed) {\n throw new Error(\"Loading aborted\");\n }\n\n const workerIdPromise = _fetchDocument(\n worker,\n params,\n rangeTransport,\n docId\n );\n const networkStreamPromise = new Promise(function (resolve) {\n let networkStream;\n if (rangeTransport) {\n networkStream = new PDFDataTransportStream(\n {\n length: params.length,\n initialData: params.initialData,\n progressiveDone: params.progressiveDone,\n contentDispositionFilename: params.contentDispositionFilename,\n disableRange: params.disableRange,\n disableStream: params.disableStream,\n },\n rangeTransport\n );\n } else if (!params.data) {\n networkStream = createPDFNetworkStream({\n url: params.url,\n length: params.length,\n httpHeaders: params.httpHeaders,\n withCredentials: params.withCredentials,\n rangeChunkSize: params.rangeChunkSize,\n disableRange: params.disableRange,\n disableStream: params.disableStream,\n });\n }\n resolve(networkStream);\n });\n\n return Promise.all([workerIdPromise, networkStreamPromise]).then(\n function ([workerId, networkStream]) {\n if (task.destroyed) {\n throw new Error(\"Loading aborted\");\n }\n\n const messageHandler = new MessageHandler(\n docId,\n workerId,\n worker.port\n );\n const transport = new WorkerTransport(\n messageHandler,\n task,\n networkStream,\n params\n );\n task._transport = transport;\n messageHandler.send(\"Ready\", null);\n }\n );\n })\n .catch(task._capability.reject);\n\n return task;\n}\n\n/**\n * Starts fetching of specified PDF document/data.\n *\n * @param {PDFWorker} worker\n * @param {Object} source\n * @param {PDFDataRangeTransport} pdfDataRangeTransport\n * @param {string} docId - Unique document ID, used in `MessageHandler`.\n * @returns {Promise} A promise that is resolved when the worker ID of\n * the `MessageHandler` is known.\n * @private\n */\nasync function _fetchDocument(worker, source, pdfDataRangeTransport, docId) {\n if (worker.destroyed) {\n throw new Error(\"Worker was destroyed\");\n }\n\n if (pdfDataRangeTransport) {\n source.length = pdfDataRangeTransport.length;\n source.initialData = pdfDataRangeTransport.initialData;\n source.progressiveDone = pdfDataRangeTransport.progressiveDone;\n source.contentDispositionFilename =\n pdfDataRangeTransport.contentDispositionFilename;\n }\n const workerId = await worker.messageHandler.sendWithPromise(\n \"GetDocRequest\",\n {\n docId,\n apiVersion:\n typeof PDFJSDev !== \"undefined\" && !PDFJSDev.test(\"TESTING\")\n ? PDFJSDev.eval(\"BUNDLE_VERSION\")\n : null,\n // Only send the required properties, and *not* the entire object.\n source: {\n data: source.data,\n url: source.url,\n password: source.password,\n disableAutoFetch: source.disableAutoFetch,\n rangeChunkSize: source.rangeChunkSize,\n length: source.length,\n },\n maxImageSize: source.maxImageSize,\n disableFontFace: source.disableFontFace,\n docBaseUrl: source.docBaseUrl,\n ignoreErrors: source.ignoreErrors,\n isEvalSupported: source.isEvalSupported,\n fontExtraProperties: source.fontExtraProperties,\n enableXfa: source.enableXfa,\n useSystemFonts: source.useSystemFonts,\n cMapUrl: source.useWorkerFetch ? source.cMapUrl : null,\n standardFontDataUrl: source.useWorkerFetch\n ? source.standardFontDataUrl\n : null,\n }\n );\n\n if (worker.destroyed) {\n throw new Error(\"Worker was destroyed\");\n }\n return workerId;\n}\n\n/**\n * @typedef {Object} OnProgressParameters\n * @property {number} loaded - Currently loaded number of bytes.\n * @property {number} total - Total number of bytes in the PDF file.\n */\n\n/**\n * The loading task controls the operations required to load a PDF document\n * (such as network requests) and provides a way to listen for completion,\n * after which individual pages can be rendered.\n */\nclass PDFDocumentLoadingTask {\n static #docId = 0;\n\n constructor() {\n this._capability = createPromiseCapability();\n this._transport = null;\n this._worker = null;\n\n /**\n * Unique identifier for the document loading task.\n * @type {string}\n */\n this.docId = `d${PDFDocumentLoadingTask.#docId++}`;\n\n /**\n * Whether the loading task is destroyed or not.\n * @type {boolean}\n */\n this.destroyed = false;\n\n /**\n * Callback to request a password if a wrong or no password was provided.\n * The callback receives two parameters: a function that should be called\n * with the new password, and a reason (see {@link PasswordResponses}).\n * @type {function}\n */\n this.onPassword = null;\n\n /**\n * Callback to be able to monitor the loading progress of the PDF file\n * (necessary to implement e.g. a loading bar).\n * The callback receives an {@link OnProgressParameters} argument.\n * @type {function}\n */\n this.onProgress = null;\n\n /**\n * Callback for when an unsupported feature is used in the PDF document.\n * The callback receives an {@link UNSUPPORTED_FEATURES} argument.\n * @type {function}\n */\n this.onUnsupportedFeature = null;\n }\n\n /**\n * Promise for document loading task completion.\n * @type {Promise}\n */\n get promise() {\n return this._capability.promise;\n }\n\n /**\n * Abort all network requests and destroy the worker.\n * @returns {Promise} A promise that is resolved when destruction is\n * completed.\n */\n async destroy() {\n this.destroyed = true;\n await this._transport?.destroy();\n\n this._transport = null;\n if (this._worker) {\n this._worker.destroy();\n this._worker = null;\n }\n }\n}\n\n/**\n * Abstract class to support range requests file loading.\n */\nclass PDFDataRangeTransport {\n /**\n * @param {number} length\n * @param {Uint8Array} initialData\n * @param {boolean} [progressiveDone]\n * @param {string} [contentDispositionFilename]\n */\n constructor(\n length,\n initialData,\n progressiveDone = false,\n contentDispositionFilename = null\n ) {\n this.length = length;\n this.initialData = initialData;\n this.progressiveDone = progressiveDone;\n this.contentDispositionFilename = contentDispositionFilename;\n\n this._rangeListeners = [];\n this._progressListeners = [];\n this._progressiveReadListeners = [];\n this._progressiveDoneListeners = [];\n this._readyCapability = createPromiseCapability();\n }\n\n addRangeListener(listener) {\n this._rangeListeners.push(listener);\n }\n\n addProgressListener(listener) {\n this._progressListeners.push(listener);\n }\n\n addProgressiveReadListener(listener) {\n this._progressiveReadListeners.push(listener);\n }\n\n addProgressiveDoneListener(listener) {\n this._progressiveDoneListeners.push(listener);\n }\n\n onDataRange(begin, chunk) {\n for (const listener of this._rangeListeners) {\n listener(begin, chunk);\n }\n }\n\n onDataProgress(loaded, total) {\n this._readyCapability.promise.then(() => {\n for (const listener of this._progressListeners) {\n listener(loaded, total);\n }\n });\n }\n\n onDataProgressiveRead(chunk) {\n this._readyCapability.promise.then(() => {\n for (const listener of this._progressiveReadListeners) {\n listener(chunk);\n }\n });\n }\n\n onDataProgressiveDone() {\n this._readyCapability.promise.then(() => {\n for (const listener of this._progressiveDoneListeners) {\n listener();\n }\n });\n }\n\n transportReady() {\n this._readyCapability.resolve();\n }\n\n requestDataRange(begin, end) {\n unreachable(\"Abstract method PDFDataRangeTransport.requestDataRange\");\n }\n\n abort() {}\n}\n\n/**\n * Proxy to a `PDFDocument` in the worker thread.\n */\nclass PDFDocumentProxy {\n constructor(pdfInfo, transport) {\n this._pdfInfo = pdfInfo;\n this._transport = transport;\n\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) {\n Object.defineProperty(this, \"fingerprint\", {\n get() {\n deprecated(\n \"`PDFDocumentProxy.fingerprint`, \" +\n \"please use `PDFDocumentProxy.fingerprints` instead.\"\n );\n return this.fingerprints[0];\n },\n });\n\n Object.defineProperty(this, \"getStats\", {\n value: async () => {\n deprecated(\n \"`PDFDocumentProxy.getStats`, \" +\n \"please use the `PDFDocumentProxy.stats`-getter instead.\"\n );\n return this.stats || { streamTypes: {}, fontTypes: {} };\n },\n });\n }\n }\n\n /**\n * @type {AnnotationStorage} Storage for annotation data in forms.\n */\n get annotationStorage() {\n return this._transport.annotationStorage;\n }\n\n /**\n * @type {number} Total number of pages in the PDF file.\n */\n get numPages() {\n return this._pdfInfo.numPages;\n }\n\n /**\n * @type {Array} A (not guaranteed to be) unique ID to\n * identify the PDF document.\n * NOTE: The first element will always be defined for all PDF documents,\n * whereas the second element is only defined for *modified* PDF documents.\n */\n get fingerprints() {\n return this._pdfInfo.fingerprints;\n }\n\n /**\n * @typedef {Object} PDFDocumentStats\n * @property {Object} streamTypes - Used stream types in the\n * document (an item is set to true if specific stream ID was used in the\n * document).\n * @property {Object} fontTypes - Used font types in the\n * document (an item is set to true if specific font ID was used in the\n * document).\n */\n\n /**\n * @type {PDFDocumentStats | null} The current statistics about document\n * structures, or `null` when no statistics exists.\n */\n get stats() {\n return this._transport.stats;\n }\n\n /**\n * @type {boolean} True if only XFA form.\n */\n get isPureXfa() {\n return !!this._transport._htmlForXfa;\n }\n\n /**\n * NOTE: This is (mostly) intended to support printing of XFA forms.\n *\n * @type {Object | null} An object representing a HTML tree structure\n * to render the XFA, or `null` when no XFA form exists.\n */\n get allXfaHtml() {\n return this._transport._htmlForXfa;\n }\n\n /**\n * @param {number} pageNumber - The page number to get. The first page is 1.\n * @returns {Promise} A promise that is resolved with\n * a {@link PDFPageProxy} object.\n */\n getPage(pageNumber) {\n return this._transport.getPage(pageNumber);\n }\n\n /**\n * @param {RefProxy} ref - The page reference.\n * @returns {Promise} A promise that is resolved with the page index,\n * starting from zero, that is associated with the reference.\n */\n getPageIndex(ref) {\n return this._transport.getPageIndex(ref);\n }\n\n /**\n * @returns {Promise>>} A promise that is resolved\n * with a mapping from named destinations to references.\n *\n * This can be slow for large documents. Use `getDestination` instead.\n */\n getDestinations() {\n return this._transport.getDestinations();\n }\n\n /**\n * @param {string} id - The named destination to get.\n * @returns {Promise | null>} A promise that is resolved with all\n * information of the given named destination, or `null` when the named\n * destination is not present in the PDF file.\n */\n getDestination(id) {\n return this._transport.getDestination(id);\n }\n\n /**\n * @returns {Promise | null>} A promise that is resolved with\n * an {Array} containing the page labels that correspond to the page\n * indexes, or `null` when no page labels are present in the PDF file.\n */\n getPageLabels() {\n return this._transport.getPageLabels();\n }\n\n /**\n * @returns {Promise} A promise that is resolved with a {string}\n * containing the page layout name.\n */\n getPageLayout() {\n return this._transport.getPageLayout();\n }\n\n /**\n * @returns {Promise} A promise that is resolved with a {string}\n * containing the page mode name.\n */\n getPageMode() {\n return this._transport.getPageMode();\n }\n\n /**\n * @returns {Promise} A promise that is resolved with an\n * {Object} containing the viewer preferences, or `null` when no viewer\n * preferences are present in the PDF file.\n */\n getViewerPreferences() {\n return this._transport.getViewerPreferences();\n }\n\n /**\n * @returns {Promise} A promise that is resolved with an {Array}\n * containing the destination, or `null` when no open action is present\n * in the PDF.\n */\n getOpenAction() {\n return this._transport.getOpenAction();\n }\n\n /**\n * @returns {Promise} A promise that is resolved with a lookup table\n * for mapping named attachments to their content.\n */\n getAttachments() {\n return this._transport.getAttachments();\n }\n\n /**\n * @returns {Promise | null>} A promise that is resolved with\n * an {Array} of all the JavaScript strings in the name tree, or `null`\n * if no JavaScript exists.\n */\n getJavaScript() {\n return this._transport.getJavaScript();\n }\n\n /**\n * @returns {Promise} A promise that is resolved with\n * an {Object} with the JavaScript actions:\n * - from the name tree (like getJavaScript);\n * - from A or AA entries in the catalog dictionary.\n * , or `null` if no JavaScript exists.\n */\n getJSActions() {\n return this._transport.getDocJSActions();\n }\n\n /**\n * @typedef {Object} OutlineNode\n * @property {string} title\n * @property {boolean} bold\n * @property {boolean} italic\n * @property {Uint8ClampedArray} color - The color in RGB format to use for\n * display purposes.\n * @property {string | Array | null} dest\n * @property {string | null} url\n * @property {string | undefined} unsafeUrl\n * @property {boolean | undefined} newWindow\n * @property {number | undefined} count\n * @property {Array} items\n */\n\n /**\n * @returns {Promise>} A promise that is resolved with an\n * {Array} that is a tree outline (if it has one) of the PDF file.\n */\n getOutline() {\n return this._transport.getOutline();\n }\n\n /**\n * @returns {Promise} A promise that is resolved with\n * an {@link OptionalContentConfig} that contains all the optional content\n * groups (assuming that the document has any).\n */\n getOptionalContentConfig() {\n return this._transport.getOptionalContentConfig();\n }\n\n /**\n * @returns {Promise | null>} A promise that is resolved with\n * an {Array} that contains the permission flags for the PDF document, or\n * `null` when no permissions are present in the PDF file.\n */\n getPermissions() {\n return this._transport.getPermissions();\n }\n\n /**\n * @returns {Promise<{ info: Object, metadata: Metadata }>} A promise that is\n * resolved with an {Object} that has `info` and `metadata` properties.\n * `info` is an {Object} filled with anything available in the information\n * dictionary and similarly `metadata` is a {Metadata} object with\n * information from the metadata section of the PDF.\n */\n getMetadata() {\n return this._transport.getMetadata();\n }\n\n /**\n * @typedef {Object} MarkInfo\n * Properties correspond to Table 321 of the PDF 32000-1:2008 spec.\n * @property {boolean} Marked\n * @property {boolean} UserProperties\n * @property {boolean} Suspects\n */\n\n /**\n * @returns {Promise} A promise that is resolved with\n * a {MarkInfo} object that contains the MarkInfo flags for the PDF\n * document, or `null` when no MarkInfo values are present in the PDF file.\n */\n getMarkInfo() {\n return this._transport.getMarkInfo();\n }\n\n /**\n * @returns {Promise} A promise that is resolved with a\n * {TypedArray} that has the raw data from the PDF.\n */\n getData() {\n return this._transport.getData();\n }\n\n /**\n * @returns {Promise<{ length: number }>} A promise that is resolved when the\n * document's data is loaded. It is resolved with an {Object} that contains\n * the `length` property that indicates size of the PDF data in bytes.\n */\n getDownloadInfo() {\n return this._transport.downloadInfoCapability.promise;\n }\n\n /**\n * Cleans up resources allocated by the document on both the main and worker\n * threads.\n *\n * NOTE: Do not, under any circumstances, call this method when rendering is\n * currently ongoing since that may lead to rendering errors.\n *\n * @param {boolean} [keepLoadedFonts] - Let fonts remain attached to the DOM.\n * NOTE: This will increase persistent memory usage, hence don't use this\n * option unless absolutely necessary. The default value is `false`.\n * @returns {Promise} A promise that is resolved when clean-up has finished.\n */\n cleanup(keepLoadedFonts = false) {\n return this._transport.startCleanup(keepLoadedFonts || this.isPureXfa);\n }\n\n /**\n * Destroys the current document instance and terminates the worker.\n */\n destroy() {\n return this.loadingTask.destroy();\n }\n\n /**\n * @type {DocumentInitParameters} A subset of the current\n * {DocumentInitParameters}, which are needed in the viewer.\n */\n get loadingParams() {\n return this._transport.loadingParams;\n }\n\n /**\n * @type {PDFDocumentLoadingTask} The loadingTask for the current document.\n */\n get loadingTask() {\n return this._transport.loadingTask;\n }\n\n /**\n * @returns {Promise} A promise that is resolved with a\n * {Uint8Array} containing the full data of the saved document.\n */\n saveDocument() {\n if (\n (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) &&\n this._transport.annotationStorage.size <= 0\n ) {\n deprecated(\n \"saveDocument called while `annotationStorage` is empty, \" +\n \"please use the getData-method instead.\"\n );\n }\n return this._transport.saveDocument();\n }\n\n /**\n * @returns {Promise> | null>} A promise that is\n * resolved with an {Object} containing /AcroForm field data for the JS\n * sandbox, or `null` when no field data is present in the PDF file.\n */\n getFieldObjects() {\n return this._transport.getFieldObjects();\n }\n\n /**\n * @returns {Promise} A promise that is resolved with `true`\n * if some /AcroForm fields have JavaScript actions.\n */\n hasJSActions() {\n return this._transport.hasJSActions();\n }\n\n /**\n * @returns {Promise | null>} A promise that is resolved with an\n * {Array} containing IDs of annotations that have a calculation\n * action, or `null` when no such annotations are present in the PDF file.\n */\n getCalculationOrderIds() {\n return this._transport.getCalculationOrderIds();\n }\n}\n\n/**\n * Page getViewport parameters.\n *\n * @typedef {Object} GetViewportParameters\n * @property {number} scale - The desired scale of the viewport.\n * @property {number} [rotation] - The desired rotation, in degrees, of\n * the viewport. If omitted it defaults to the page rotation.\n * @property {number} [offsetX] - The horizontal, i.e. x-axis, offset.\n * The default value is `0`.\n * @property {number} [offsetY] - The vertical, i.e. y-axis, offset.\n * The default value is `0`.\n * @property {boolean} [dontFlip] - If true, the y-axis will not be\n * flipped. The default value is `false`.\n */\n\n/**\n * Page getTextContent parameters.\n *\n * @typedef {Object} getTextContentParameters\n * @property {boolean} disableCombineTextItems - Do not attempt to combine\n * same line {@link TextItem}'s. The default value is `false`.\n * @property {boolean} [includeMarkedContent] - When true include marked\n * content items in the items array of TextContent. The default is `false`.\n */\n\n/**\n * Page text content.\n *\n * @typedef {Object} TextContent\n * @property {Array} items - Array of\n * {@link TextItem} and {@link TextMarkedContent} objects. TextMarkedContent\n * items are included when includeMarkedContent is true.\n * @property {Object} styles - {@link TextStyle} objects,\n * indexed by font name.\n */\n\n/**\n * Page text content part.\n *\n * @typedef {Object} TextItem\n * @property {string} str - Text content.\n * @property {string} dir - Text direction: 'ttb', 'ltr' or 'rtl'.\n * @property {Array} transform - Transformation matrix.\n * @property {number} width - Width in device space.\n * @property {number} height - Height in device space.\n * @property {string} fontName - Font name used by PDF.js for converted font.\n * @property {boolean} hasEOL - Indicating if the text content is followed by a\n * line-break.\n */\n\n/**\n * Page text marked content part.\n *\n * @typedef {Object} TextMarkedContent\n * @property {string} type - Either 'beginMarkedContent',\n * 'beginMarkedContentProps', or 'endMarkedContent'.\n * @property {string} id - The marked content identifier. Only used for type\n * 'beginMarkedContentProps'.\n */\n\n/**\n * Text style.\n *\n * @typedef {Object} TextStyle\n * @property {number} ascent - Font ascent.\n * @property {number} descent - Font descent.\n * @property {boolean} vertical - Whether or not the text is in vertical mode.\n * @property {string} fontFamily - The possible font family.\n */\n\n/**\n * Page annotation parameters.\n *\n * @typedef {Object} GetAnnotationsParameters\n * @property {string} [intent] - Determines the annotations that are fetched,\n * can be 'display' (viewable annotations), 'print' (printable annotations),\n * or 'any' (all annotations). The default value is 'display'.\n */\n\n/**\n * Page render parameters.\n *\n * @typedef {Object} RenderParameters\n * @property {Object} canvasContext - A 2D context of a DOM Canvas object.\n * @property {PageViewport} viewport - Rendering viewport obtained by calling\n * the `PDFPageProxy.getViewport` method.\n * @property {string} [intent] - Rendering intent, can be 'display', 'print',\n * or 'any'. The default value is 'display'.\n * @property {number} [annotationMode] Controls which annotations are rendered\n * onto the canvas, for annotations with appearance-data; the values from\n * {@link AnnotationMode} should be used. The following values are supported:\n * - `AnnotationMode.DISABLE`, which disables all annotations.\n * - `AnnotationMode.ENABLE`, which includes all possible annotations (thus\n * it also depends on the `intent`-option, see above).\n * - `AnnotationMode.ENABLE_FORMS`, which excludes annotations that contain\n * interactive form elements (those will be rendered in the display layer).\n * - `AnnotationMode.ENABLE_STORAGE`, which includes all possible annotations\n * (as above) but where interactive form elements are updated with data\n * from the {@link AnnotationStorage}-instance; useful e.g. for printing.\n * The default value is `AnnotationMode.ENABLE`.\n * @property {Array} [transform] - Additional transform, applied just\n * before viewport transform.\n * @property {Object} [imageLayer] - An object that has `beginLayout`,\n * `endLayout` and `appendImage` functions.\n * @property {Object} [canvasFactory] - The factory instance that will be used\n * when creating canvases. The default value is {new DOMCanvasFactory()}.\n * @property {Object | string} [background] - Background to use for the canvas.\n * Any valid `canvas.fillStyle` can be used: a `DOMString` parsed as CSS\n * value, a `CanvasGradient` object (a linear or radial gradient) or\n * a `CanvasPattern` object (a repetitive image). The default value is\n * 'rgb(255,255,255)'.\n *\n * NOTE: This option may be partially, or completely, ignored when the\n * `pageColors`-option is used.\n * @property {Object} [pageColors] - Overwrites background and foreground colors\n * with user defined ones in order to improve readability in high contrast\n * mode.\n * @property {Promise} [optionalContentConfigPromise] -\n * A promise that should resolve with an {@link OptionalContentConfig}\n * created from `PDFDocumentProxy.getOptionalContentConfig`. If `null`,\n * the configuration will be fetched automatically with the default visibility\n * states set.\n * @property {Map} [annotationCanvasMap] - Map some\n * annotation ids with canvases used to render them.\n */\n\n/**\n * Page getOperatorList parameters.\n *\n * @typedef {Object} GetOperatorListParameters\n * @property {string} [intent] - Rendering intent, can be 'display', 'print',\n * or 'any'. The default value is 'display'.\n * @property {number} [annotationMode] Controls which annotations are included\n * in the operatorList, for annotations with appearance-data; the values from\n * {@link AnnotationMode} should be used. The following values are supported:\n * - `AnnotationMode.DISABLE`, which disables all annotations.\n * - `AnnotationMode.ENABLE`, which includes all possible annotations (thus\n * it also depends on the `intent`-option, see above).\n * - `AnnotationMode.ENABLE_FORMS`, which excludes annotations that contain\n * interactive form elements (those will be rendered in the display layer).\n * - `AnnotationMode.ENABLE_STORAGE`, which includes all possible annotations\n * (as above) but where interactive form elements are updated with data\n * from the {@link AnnotationStorage}-instance; useful e.g. for printing.\n * The default value is `AnnotationMode.ENABLE`.\n */\n\n/**\n * Structure tree node. The root node will have a role \"Root\".\n *\n * @typedef {Object} StructTreeNode\n * @property {Array} children - Array of\n * {@link StructTreeNode} and {@link StructTreeContent} objects.\n * @property {string} role - element's role, already mapped if a role map exists\n * in the PDF.\n */\n\n/**\n * Structure tree content.\n *\n * @typedef {Object} StructTreeContent\n * @property {string} type - either \"content\" for page and stream structure\n * elements or \"object\" for object references.\n * @property {string} id - unique id that will map to the text layer.\n */\n\n/**\n * PDF page operator list.\n *\n * @typedef {Object} PDFOperatorList\n * @property {Array} fnArray - Array containing the operator functions.\n * @property {Array} argsArray - Array containing the arguments of the\n * functions.\n */\n\n/**\n * Proxy to a `PDFPage` in the worker thread.\n */\nclass PDFPageProxy {\n constructor(pageIndex, pageInfo, transport, ownerDocument, pdfBug = false) {\n this._pageIndex = pageIndex;\n this._pageInfo = pageInfo;\n this._ownerDocument = ownerDocument;\n this._transport = transport;\n this._stats = pdfBug ? new StatTimer() : null;\n this._pdfBug = pdfBug;\n /** @type {PDFObjects} */\n this.commonObjs = transport.commonObjs;\n this.objs = new PDFObjects();\n\n this._bitmaps = new Set();\n\n this.cleanupAfterRender = false;\n this.pendingCleanup = false;\n this._intentStates = new Map();\n this._annotationPromises = new Map();\n this.destroyed = false;\n }\n\n /**\n * @type {number} Page number of the page. First page is 1.\n */\n get pageNumber() {\n return this._pageIndex + 1;\n }\n\n /**\n * @type {number} The number of degrees the page is rotated clockwise.\n */\n get rotate() {\n return this._pageInfo.rotate;\n }\n\n /**\n * @type {RefProxy | null} The reference that points to this page.\n */\n get ref() {\n return this._pageInfo.ref;\n }\n\n /**\n * @type {number} The default size of units in 1/72nds of an inch.\n */\n get userUnit() {\n return this._pageInfo.userUnit;\n }\n\n /**\n * @type {Array} An array of the visible portion of the PDF page in\n * user space units [x1, y1, x2, y2].\n */\n get view() {\n return this._pageInfo.view;\n }\n\n /**\n * @param {GetViewportParameters} params - Viewport parameters.\n * @returns {PageViewport} Contains 'width' and 'height' properties\n * along with transforms required for rendering.\n */\n getViewport({\n scale,\n rotation = this.rotate,\n offsetX = 0,\n offsetY = 0,\n dontFlip = false,\n } = {}) {\n return new PageViewport({\n viewBox: this.view,\n scale,\n rotation,\n offsetX,\n offsetY,\n dontFlip,\n });\n }\n\n /**\n * @param {GetAnnotationsParameters} params - Annotation parameters.\n * @returns {Promise>} A promise that is resolved with an\n * {Array} of the annotation objects.\n */\n getAnnotations({ intent = \"display\" } = {}) {\n const intentArgs = this._transport.getRenderingIntent(intent);\n\n let promise = this._annotationPromises.get(intentArgs.cacheKey);\n if (!promise) {\n promise = this._transport.getAnnotations(\n this._pageIndex,\n intentArgs.renderingIntent\n );\n this._annotationPromises.set(intentArgs.cacheKey, promise);\n\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) {\n promise = promise.then(annotations => {\n for (const annotation of annotations) {\n if (annotation.titleObj !== undefined) {\n Object.defineProperty(annotation, \"title\", {\n get() {\n deprecated(\n \"`title`-property on annotation, please use `titleObj` instead.\"\n );\n return annotation.titleObj.str;\n },\n });\n }\n if (annotation.contentsObj !== undefined) {\n Object.defineProperty(annotation, \"contents\", {\n get() {\n deprecated(\n \"`contents`-property on annotation, please use `contentsObj` instead.\"\n );\n return annotation.contentsObj.str;\n },\n });\n }\n }\n return annotations;\n });\n }\n }\n return promise;\n }\n\n /**\n * @returns {Promise} A promise that is resolved with an\n * {Object} with JS actions.\n */\n getJSActions() {\n return (this._jsActionsPromise ||= this._transport.getPageJSActions(\n this._pageIndex\n ));\n }\n\n /**\n * @returns {Promise} A promise that is resolved with\n * an {Object} with a fake DOM object (a tree structure where elements\n * are {Object} with a name, attributes (class, style, ...), value and\n * children, very similar to a HTML DOM tree), or `null` if no XFA exists.\n */\n async getXfa() {\n return this._transport._htmlForXfa?.children[this._pageIndex] || null;\n }\n\n /**\n * Begins the process of rendering a page to the desired context.\n *\n * @param {RenderParameters} params - Page render parameters.\n * @returns {RenderTask} An object that contains a promise that is\n * resolved when the page finishes rendering.\n */\n render({\n canvasContext,\n viewport,\n intent = \"display\",\n annotationMode = AnnotationMode.ENABLE,\n transform = null,\n imageLayer = null,\n canvasFactory = null,\n background = null,\n optionalContentConfigPromise = null,\n annotationCanvasMap = null,\n pageColors = null,\n }) {\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"GENERIC\")) {\n if (arguments[0]?.renderInteractiveForms !== undefined) {\n deprecated(\n \"render no longer accepts the `renderInteractiveForms`-option, \" +\n \"please use the `annotationMode`-option instead.\"\n );\n if (\n arguments[0].renderInteractiveForms === true &&\n annotationMode === AnnotationMode.ENABLE\n ) {\n annotationMode = AnnotationMode.ENABLE_FORMS;\n }\n }\n if (arguments[0]?.includeAnnotationStorage !== undefined) {\n deprecated(\n \"render no longer accepts the `includeAnnotationStorage`-option, \" +\n \"please use the `annotationMode`-option instead.\"\n );\n if (\n arguments[0].includeAnnotationStorage === true &&\n annotationMode === AnnotationMode.ENABLE\n ) {\n annotationMode = AnnotationMode.ENABLE_STORAGE;\n }\n }\n }\n\n if (this._stats) {\n this._stats.time(\"Overall\");\n }\n\n const intentArgs = this._transport.getRenderingIntent(\n intent,\n annotationMode\n );\n // If there was a pending destroy, cancel it so no cleanup happens during\n // this call to render.\n this.pendingCleanup = false;\n\n if (!optionalContentConfigPromise) {\n optionalContentConfigPromise = this._transport.getOptionalContentConfig();\n }\n\n let intentState = this._intentStates.get(intentArgs.cacheKey);\n if (!intentState) {\n intentState = Object.create(null);\n this._intentStates.set(intentArgs.cacheKey, intentState);\n }\n\n // Ensure that a pending `streamReader` cancel timeout is always aborted.\n if (intentState.streamReaderCancelTimeout) {\n clearTimeout(intentState.streamReaderCancelTimeout);\n intentState.streamReaderCancelTimeout = null;\n }\n\n const canvasFactoryInstance =\n canvasFactory ||\n new DefaultCanvasFactory({ ownerDocument: this._ownerDocument });\n const intentPrint = !!(\n intentArgs.renderingIntent & RenderingIntentFlag.PRINT\n );\n\n // If there's no displayReadyCapability yet, then the operatorList\n // was never requested before. Make the request and create the promise.\n if (!intentState.displayReadyCapability) {\n intentState.displayReadyCapability = createPromiseCapability();\n intentState.operatorList = {\n fnArray: [],\n argsArray: [],\n lastChunk: false,\n };\n\n if (this._stats) {\n this._stats.time(\"Page Request\");\n }\n this._pumpOperatorList(intentArgs);\n }\n\n const complete = error => {\n intentState.renderTasks.delete(internalRenderTask);\n\n // Attempt to reduce memory usage during *printing*, by always running\n // cleanup once rendering has finished (regardless of cleanupAfterRender).\n if (this.cleanupAfterRender || intentPrint) {\n this.pendingCleanup = true;\n }\n this._tryCleanup();\n\n if (error) {\n internalRenderTask.capability.reject(error);\n\n this._abortOperatorList({\n intentState,\n reason: error instanceof Error ? error : new Error(error),\n });\n } else {\n internalRenderTask.capability.resolve();\n }\n if (this._stats) {\n this._stats.timeEnd(\"Rendering\");\n this._stats.timeEnd(\"Overall\");\n }\n };\n\n const internalRenderTask = new InternalRenderTask({\n callback: complete,\n // Only include the required properties, and *not* the entire object.\n params: {\n canvasContext,\n viewport,\n transform,\n imageLayer,\n background,\n },\n objs: this.objs,\n commonObjs: this.commonObjs,\n annotationCanvasMap,\n operatorList: intentState.operatorList,\n pageIndex: this._pageIndex,\n canvasFactory: canvasFactoryInstance,\n useRequestAnimationFrame: !intentPrint,\n pdfBug: this._pdfBug,\n pageColors,\n });\n\n (intentState.renderTasks ||= new Set()).add(internalRenderTask);\n const renderTask = internalRenderTask.task;\n\n Promise.all([\n intentState.displayReadyCapability.promise,\n optionalContentConfigPromise,\n ])\n .then(([transparency, optionalContentConfig]) => {\n if (this.pendingCleanup) {\n complete();\n return;\n }\n if (this._stats) {\n this._stats.time(\"Rendering\");\n }\n internalRenderTask.initializeGraphics({\n transparency,\n optionalContentConfig,\n });\n internalRenderTask.operatorListChanged();\n })\n .catch(complete);\n\n return renderTask;\n }\n\n /**\n * @param {GetOperatorListParameters} params - Page getOperatorList\n * parameters.\n * @returns {Promise} A promise resolved with an\n * {@link PDFOperatorList} object that represents the page's operator list.\n */\n getOperatorList({\n intent = \"display\",\n annotationMode = AnnotationMode.ENABLE,\n } = {}) {\n function operatorListChanged() {\n if (intentState.operatorList.lastChunk) {\n intentState.opListReadCapability.resolve(intentState.operatorList);\n\n intentState.renderTasks.delete(opListTask);\n }\n }\n\n const intentArgs = this._transport.getRenderingIntent(\n intent,\n annotationMode,\n /* isOpList = */ true\n );\n let intentState = this._intentStates.get(intentArgs.cacheKey);\n if (!intentState) {\n intentState = Object.create(null);\n this._intentStates.set(intentArgs.cacheKey, intentState);\n }\n let opListTask;\n\n if (!intentState.opListReadCapability) {\n opListTask = Object.create(null);\n opListTask.operatorListChanged = operatorListChanged;\n intentState.opListReadCapability = createPromiseCapability();\n (intentState.renderTasks ||= new Set()).add(opListTask);\n intentState.operatorList = {\n fnArray: [],\n argsArray: [],\n lastChunk: false,\n };\n\n if (this._stats) {\n this._stats.time(\"Page Request\");\n }\n this._pumpOperatorList(intentArgs);\n }\n return intentState.opListReadCapability.promise;\n }\n\n /**\n * NOTE: All occurrences of whitespace will be replaced by\n * standard spaces (0x20).\n *\n * @param {getTextContentParameters} params - getTextContent parameters.\n * @returns {ReadableStream} Stream for reading text content chunks.\n */\n streamTextContent({\n disableCombineTextItems = false,\n includeMarkedContent = false,\n } = {}) {\n const TEXT_CONTENT_CHUNK_SIZE = 100;\n\n return this._transport.messageHandler.sendWithStream(\n \"GetTextContent\",\n {\n pageIndex: this._pageIndex,\n combineTextItems: disableCombineTextItems !== true,\n includeMarkedContent: includeMarkedContent === true,\n },\n {\n highWaterMark: TEXT_CONTENT_CHUNK_SIZE,\n size(textContent) {\n return textContent.items.length;\n },\n }\n );\n }\n\n /**\n * NOTE: All occurrences of whitespace will be replaced by\n * standard spaces (0x20).\n *\n * @param {getTextContentParameters} params - getTextContent parameters.\n * @returns {Promise} A promise that is resolved with a\n * {@link TextContent} object that represents the page's text content.\n */\n getTextContent(params = {}) {\n if (this._transport._htmlForXfa) {\n // TODO: We need to revisit this once the XFA foreground patch lands and\n // only do this for non-foreground XFA.\n return this.getXfa().then(xfa => {\n return XfaText.textContent(xfa);\n });\n }\n const readableStream = this.streamTextContent(params);\n\n return new Promise(function (resolve, reject) {\n function pump() {\n reader.read().then(function ({ value, done }) {\n if (done) {\n resolve(textContent);\n return;\n }\n Object.assign(textContent.styles, value.styles);\n textContent.items.push(...value.items);\n pump();\n }, reject);\n }\n\n const reader = readableStream.getReader();\n const textContent = {\n items: [],\n styles: Object.create(null),\n };\n pump();\n });\n }\n\n /**\n * @returns {Promise} A promise that is resolved with a\n * {@link StructTreeNode} object that represents the page's structure tree,\n * or `null` when no structure tree is present for the current page.\n */\n getStructTree() {\n return (this._structTreePromise ||= this._transport.getStructTree(\n this._pageIndex\n ));\n }\n\n /**\n * Destroys the page object.\n * @private\n */\n _destroy() {\n this.destroyed = true;\n\n const waitOn = [];\n for (const intentState of this._intentStates.values()) {\n this._abortOperatorList({\n intentState,\n reason: new Error(\"Page was destroyed.\"),\n force: true,\n });\n\n if (intentState.opListReadCapability) {\n // Avoid errors below, since the renderTasks are just stubs.\n continue;\n }\n for (const internalRenderTask of intentState.renderTasks) {\n waitOn.push(internalRenderTask.completed);\n internalRenderTask.cancel();\n }\n }\n this.objs.clear();\n for (const bitmap of this._bitmaps) {\n bitmap.close();\n }\n this._bitmaps.clear();\n this._annotationPromises.clear();\n this._jsActionsPromise = null;\n this._structTreePromise = null;\n this.pendingCleanup = false;\n return Promise.all(waitOn);\n }\n\n /**\n * Cleans up resources allocated by the page.\n *\n * @param {boolean} [resetStats] - Reset page stats, if enabled.\n * The default value is `false`.\n * @returns {boolean} Indicates if clean-up was successfully run.\n */\n cleanup(resetStats = false) {\n this.pendingCleanup = true;\n return this._tryCleanup(resetStats);\n }\n\n /**\n * Attempts to clean up if rendering is in a state where that's possible.\n * @private\n */\n _tryCleanup(resetStats = false) {\n if (!this.pendingCleanup) {\n return false;\n }\n for (const { renderTasks, operatorList } of this._intentStates.values()) {\n if (renderTasks.size > 0 || !operatorList.lastChunk) {\n return false;\n }\n }\n\n this._intentStates.clear();\n this.objs.clear();\n this._annotationPromises.clear();\n this._jsActionsPromise = null;\n this._structTreePromise = null;\n if (resetStats && this._stats) {\n this._stats = new StatTimer();\n }\n for (const bitmap of this._bitmaps) {\n bitmap.close();\n }\n this._bitmaps.clear();\n this.pendingCleanup = false;\n return true;\n }\n\n /**\n * @private\n */\n _startRenderPage(transparency, cacheKey) {\n const intentState = this._intentStates.get(cacheKey);\n if (!intentState) {\n return; // Rendering was cancelled.\n }\n if (this._stats) {\n this._stats.timeEnd(\"Page Request\");\n }\n // TODO Refactor RenderPageRequest to separate rendering\n // and operator list logic\n if (intentState.displayReadyCapability) {\n intentState.displayReadyCapability.resolve(transparency);\n }\n }\n\n /**\n * @private\n */\n _renderPageChunk(operatorListChunk, intentState) {\n // Add the new chunk to the current operator list.\n for (let i = 0, ii = operatorListChunk.length; i < ii; i++) {\n intentState.operatorList.fnArray.push(operatorListChunk.fnArray[i]);\n intentState.operatorList.argsArray.push(operatorListChunk.argsArray[i]);\n }\n intentState.operatorList.lastChunk = operatorListChunk.lastChunk;\n\n // Notify all the rendering tasks there are more operators to be consumed.\n for (const internalRenderTask of intentState.renderTasks) {\n internalRenderTask.operatorListChanged();\n }\n\n if (operatorListChunk.lastChunk) {\n this._tryCleanup();\n }\n }\n\n /**\n * @private\n */\n _pumpOperatorList({ renderingIntent, cacheKey }) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n Number.isInteger(renderingIntent) && renderingIntent > 0,\n '_pumpOperatorList: Expected valid \"renderingIntent\" argument.'\n );\n }\n\n const readableStream = this._transport.messageHandler.sendWithStream(\n \"GetOperatorList\",\n {\n pageIndex: this._pageIndex,\n intent: renderingIntent,\n cacheKey,\n annotationStorage:\n renderingIntent & RenderingIntentFlag.ANNOTATIONS_STORAGE\n ? this._transport.annotationStorage.serializable\n : null,\n }\n );\n const reader = readableStream.getReader();\n\n const intentState = this._intentStates.get(cacheKey);\n intentState.streamReader = reader;\n\n const pump = () => {\n reader.read().then(\n ({ value, done }) => {\n if (done) {\n intentState.streamReader = null;\n return;\n }\n if (this._transport.destroyed) {\n return; // Ignore any pending requests if the worker was terminated.\n }\n this._renderPageChunk(value, intentState);\n pump();\n },\n reason => {\n intentState.streamReader = null;\n\n if (this._transport.destroyed) {\n return; // Ignore any pending requests if the worker was terminated.\n }\n if (intentState.operatorList) {\n // Mark operator list as complete.\n intentState.operatorList.lastChunk = true;\n\n for (const internalRenderTask of intentState.renderTasks) {\n internalRenderTask.operatorListChanged();\n }\n this._tryCleanup();\n }\n\n if (intentState.displayReadyCapability) {\n intentState.displayReadyCapability.reject(reason);\n } else if (intentState.opListReadCapability) {\n intentState.opListReadCapability.reject(reason);\n } else {\n throw reason;\n }\n }\n );\n };\n pump();\n }\n\n /**\n * @private\n */\n _abortOperatorList({ intentState, reason, force = false }) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n reason instanceof Error,\n '_abortOperatorList: Expected valid \"reason\" argument.'\n );\n }\n\n if (!intentState.streamReader) {\n return;\n }\n if (!force) {\n // Ensure that an Error occurring in *only* one `InternalRenderTask`, e.g.\n // multiple render() calls on the same canvas, won't break all rendering.\n if (intentState.renderTasks.size > 0) {\n return;\n }\n // Don't immediately abort parsing on the worker-thread when rendering is\n // cancelled, since that will unnecessarily delay re-rendering when (for\n // partially parsed pages) e.g. zooming/rotation occurs in the viewer.\n if (reason instanceof RenderingCancelledException) {\n intentState.streamReaderCancelTimeout = setTimeout(() => {\n this._abortOperatorList({ intentState, reason, force: true });\n intentState.streamReaderCancelTimeout = null;\n }, RENDERING_CANCELLED_TIMEOUT);\n return;\n }\n }\n intentState.streamReader\n .cancel(new AbortException(reason.message))\n .catch(() => {\n // Avoid \"Uncaught promise\" messages in the console.\n });\n intentState.streamReader = null;\n\n if (this._transport.destroyed) {\n return; // Ignore any pending requests if the worker was terminated.\n }\n // Remove the current `intentState`, since a cancelled `getOperatorList`\n // call on the worker-thread cannot be re-started...\n for (const [curCacheKey, curIntentState] of this._intentStates) {\n if (curIntentState === intentState) {\n this._intentStates.delete(curCacheKey);\n break;\n }\n }\n // ... and force clean-up to ensure that any old state is always removed.\n this.cleanup();\n }\n\n /**\n * @type {Object} Returns page stats, if enabled; returns `null` otherwise.\n */\n get stats() {\n return this._stats;\n }\n}\n\nclass LoopbackPort {\n constructor() {\n this._listeners = [];\n this._deferred = Promise.resolve();\n }\n\n postMessage(obj, transfers) {\n const event = {\n data: structuredClone(obj, transfers),\n };\n\n this._deferred.then(() => {\n for (const listener of this._listeners) {\n listener.call(this, event);\n }\n });\n }\n\n addEventListener(name, listener) {\n this._listeners.push(listener);\n }\n\n removeEventListener(name, listener) {\n const i = this._listeners.indexOf(listener);\n this._listeners.splice(i, 1);\n }\n\n terminate() {\n this._listeners.length = 0;\n }\n}\n\n/**\n * @typedef {Object} PDFWorkerParameters\n * @property {string} [name] - The name of the worker.\n * @property {Object} [port] - The `workerPort` object.\n * @property {number} [verbosity] - Controls the logging level;\n * the constants from {@link VerbosityLevel} should be used.\n */\n\nconst PDFWorkerUtil = {\n isWorkerDisabled: false,\n fallbackWorkerSrc: null,\n fakeWorkerId: 0,\n};\nif (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) {\n // eslint-disable-next-line no-undef\n if (isNodeJS && typeof __non_webpack_require__ === \"function\") {\n // Workers aren't supported in Node.js, force-disabling them there.\n PDFWorkerUtil.isWorkerDisabled = true;\n\n PDFWorkerUtil.fallbackWorkerSrc = PDFJSDev.test(\"LIB\")\n ? \"../pdf.worker.js\"\n : \"./pdf.worker.js\";\n } else if (typeof document === \"object\") {\n const pdfjsFilePath = document?.currentScript?.src;\n if (pdfjsFilePath) {\n PDFWorkerUtil.fallbackWorkerSrc = pdfjsFilePath.replace(\n /(\\.(?:min\\.)?js)(\\?.*)?$/i,\n \".worker$1$2\"\n );\n }\n }\n\n // Check if URLs have the same origin. For non-HTTP based URLs, returns false.\n PDFWorkerUtil.isSameOrigin = function (baseUrl, otherUrl) {\n let base;\n try {\n base = new URL(baseUrl);\n if (!base.origin || base.origin === \"null\") {\n return false; // non-HTTP url\n }\n } catch (e) {\n return false;\n }\n\n const other = new URL(otherUrl, base);\n return base.origin === other.origin;\n };\n\n PDFWorkerUtil.createCDNWrapper = function (url) {\n // We will rely on blob URL's property to specify origin.\n // We want this function to fail in case if createObjectURL or Blob do not\n // exist or fail for some reason -- our Worker creation will fail anyway.\n const wrapper = `importScripts(\"${url}\");`;\n return URL.createObjectURL(new Blob([wrapper]));\n };\n}\n\n/**\n * PDF.js web worker abstraction that controls the instantiation of PDF\n * documents. Message handlers are used to pass information from the main\n * thread to the worker thread and vice versa. If the creation of a web\n * worker is not possible, a \"fake\" worker will be used instead.\n *\n * @param {PDFWorkerParameters} params - The worker initialization parameters.\n */\nclass PDFWorker {\n static #workerPorts = new WeakMap();\n\n constructor({\n name = null,\n port = null,\n verbosity = getVerbosityLevel(),\n } = {}) {\n if (port && PDFWorker.#workerPorts.has(port)) {\n throw new Error(\"Cannot use more than one PDFWorker per port.\");\n }\n\n this.name = name;\n this.destroyed = false;\n this.verbosity = verbosity;\n\n this._readyCapability = createPromiseCapability();\n this._port = null;\n this._webWorker = null;\n this._messageHandler = null;\n\n if (port) {\n PDFWorker.#workerPorts.set(port, this);\n this._initializeFromPort(port);\n return;\n }\n this._initialize();\n }\n\n /**\n * Promise for worker initialization completion.\n * @type {Promise}\n */\n get promise() {\n return this._readyCapability.promise;\n }\n\n /**\n * The current `workerPort`, when it exists.\n * @type {Worker}\n */\n get port() {\n return this._port;\n }\n\n /**\n * The current MessageHandler-instance.\n * @type {MessageHandler}\n */\n get messageHandler() {\n return this._messageHandler;\n }\n\n _initializeFromPort(port) {\n this._port = port;\n this._messageHandler = new MessageHandler(\"main\", \"worker\", port);\n this._messageHandler.on(\"ready\", function () {\n // Ignoring \"ready\" event -- MessageHandler should already be initialized\n // and ready to accept messages.\n });\n this._readyCapability.resolve();\n }\n\n _initialize() {\n // If worker support isn't disabled explicit and the browser has worker\n // support, create a new web worker and test if it/the browser fulfills\n // all requirements to run parts of pdf.js in a web worker.\n // Right now, the requirement is, that an Uint8Array is still an\n // Uint8Array as it arrives on the worker. (Chrome added this with v.15.)\n if (\n typeof Worker !== \"undefined\" &&\n !PDFWorkerUtil.isWorkerDisabled &&\n !PDFWorker._mainThreadWorkerMessageHandler\n ) {\n let workerSrc = PDFWorker.workerSrc;\n\n try {\n // Wraps workerSrc path into blob URL, if the former does not belong\n // to the same origin.\n if (\n typeof PDFJSDev !== \"undefined\" &&\n PDFJSDev.test(\"GENERIC\") &&\n !PDFWorkerUtil.isSameOrigin(window.location.href, workerSrc)\n ) {\n workerSrc = PDFWorkerUtil.createCDNWrapper(\n new URL(workerSrc, window.location).href\n );\n }\n\n // Some versions of FF can't create a worker on localhost, see:\n // https://bugzilla.mozilla.org/show_bug.cgi?id=683280\n const worker = new Worker(workerSrc);\n const messageHandler = new MessageHandler(\"main\", \"worker\", worker);\n const terminateEarly = () => {\n worker.removeEventListener(\"error\", onWorkerError);\n messageHandler.destroy();\n worker.terminate();\n if (this.destroyed) {\n this._readyCapability.reject(new Error(\"Worker was destroyed\"));\n } else {\n // Fall back to fake worker if the termination is caused by an\n // error (e.g. NetworkError / SecurityError).\n this._setupFakeWorker();\n }\n };\n\n const onWorkerError = () => {\n if (!this._webWorker) {\n // Worker failed to initialize due to an error. Clean up and fall\n // back to the fake worker.\n terminateEarly();\n }\n };\n worker.addEventListener(\"error\", onWorkerError);\n\n messageHandler.on(\"test\", data => {\n worker.removeEventListener(\"error\", onWorkerError);\n if (this.destroyed) {\n terminateEarly();\n return; // worker was destroyed\n }\n if (data) {\n this._messageHandler = messageHandler;\n this._port = worker;\n this._webWorker = worker;\n\n this._readyCapability.resolve();\n // Send global setting, e.g. verbosity level.\n messageHandler.send(\"configure\", {\n verbosity: this.verbosity,\n });\n } else {\n this._setupFakeWorker();\n messageHandler.destroy();\n worker.terminate();\n }\n });\n\n messageHandler.on(\"ready\", data => {\n worker.removeEventListener(\"error\", onWorkerError);\n if (this.destroyed) {\n terminateEarly();\n return; // worker was destroyed\n }\n try {\n sendTest();\n } catch (e) {\n // We need fallback to a faked worker.\n this._setupFakeWorker();\n }\n });\n\n const sendTest = () => {\n const testObj = new Uint8Array();\n // Ensure that we can use `postMessage` transfers.\n messageHandler.send(\"test\", testObj, [testObj.buffer]);\n };\n\n // It might take time for the worker to initialize. We will try to send\n // the \"test\" message immediately, and once the \"ready\" message arrives.\n // The worker shall process only the first received \"test\" message.\n sendTest();\n return;\n } catch (e) {\n info(\"The worker has been disabled.\");\n }\n }\n // Either workers are disabled, not supported or have thrown an exception.\n // Thus, we fallback to a faked worker.\n this._setupFakeWorker();\n }\n\n _setupFakeWorker() {\n if (!PDFWorkerUtil.isWorkerDisabled) {\n warn(\"Setting up fake worker.\");\n PDFWorkerUtil.isWorkerDisabled = true;\n }\n\n PDFWorker._setupFakeWorkerGlobal\n .then(WorkerMessageHandler => {\n if (this.destroyed) {\n this._readyCapability.reject(new Error(\"Worker was destroyed\"));\n return;\n }\n const port = new LoopbackPort();\n this._port = port;\n\n // All fake workers use the same port, making id unique.\n const id = `fake${PDFWorkerUtil.fakeWorkerId++}`;\n\n // If the main thread is our worker, setup the handling for the\n // messages -- the main thread sends to it self.\n const workerHandler = new MessageHandler(id + \"_worker\", id, port);\n WorkerMessageHandler.setup(workerHandler, port);\n\n const messageHandler = new MessageHandler(id, id + \"_worker\", port);\n this._messageHandler = messageHandler;\n this._readyCapability.resolve();\n // Send global setting, e.g. verbosity level.\n messageHandler.send(\"configure\", {\n verbosity: this.verbosity,\n });\n })\n .catch(reason => {\n this._readyCapability.reject(\n new Error(`Setting up fake worker failed: \"${reason.message}\".`)\n );\n });\n }\n\n /**\n * Destroys the worker instance.\n */\n destroy() {\n this.destroyed = true;\n if (this._webWorker) {\n // We need to terminate only web worker created resource.\n this._webWorker.terminate();\n this._webWorker = null;\n }\n PDFWorker.#workerPorts.delete(this._port);\n this._port = null;\n if (this._messageHandler) {\n this._messageHandler.destroy();\n this._messageHandler = null;\n }\n }\n\n /**\n * @param {PDFWorkerParameters} params - The worker initialization parameters.\n */\n static fromPort(params) {\n if (!params?.port) {\n throw new Error(\"PDFWorker.fromPort - invalid method signature.\");\n }\n if (this.#workerPorts.has(params.port)) {\n return this.#workerPorts.get(params.port);\n }\n return new PDFWorker(params);\n }\n\n /**\n * The current `workerSrc`, when it exists.\n * @type {string}\n */\n static get workerSrc() {\n if (GlobalWorkerOptions.workerSrc) {\n return GlobalWorkerOptions.workerSrc;\n }\n if (PDFWorkerUtil.fallbackWorkerSrc !== null) {\n if (!isNodeJS) {\n deprecated('No \"GlobalWorkerOptions.workerSrc\" specified.');\n }\n return PDFWorkerUtil.fallbackWorkerSrc;\n }\n throw new Error('No \"GlobalWorkerOptions.workerSrc\" specified.');\n }\n\n static get _mainThreadWorkerMessageHandler() {\n try {\n return globalThis.pdfjsWorker?.WorkerMessageHandler || null;\n } catch (ex) {\n return null;\n }\n }\n\n // Loads worker code into the main-thread.\n static get _setupFakeWorkerGlobal() {\n const loader = async () => {\n const mainWorkerMessageHandler = this._mainThreadWorkerMessageHandler;\n\n if (mainWorkerMessageHandler) {\n // The worker was already loaded using e.g. a `