{"version":3,"sources":["webpack:///./node_modules/base64-js/index.js","webpack:///./node_modules/ieee754/index.js","webpack:///./node_modules/pdfjs-dist/build/pdf.js","webpack:///./node_modules/buffer/index.js","webpack:///./node_modules/isarray/index.js"],"names":["exports","byteLength","toByteArray","fromByteArray","lookup","revLookup","Arr","Uint8Array","Array","code","i","len","length","charCodeAt","getLens","b64","Error","validLen","indexOf","placeHoldersLen","lens","_byteLength","tmp","arr","curByte","tripletToBase64","num","encodeChunk","uint8","start","end","output","push","join","extraBytes","parts","maxChunkLength","len2","read","buffer","offset","isLE","mLen","nBytes","e","m","eLen","eMax","eBias","nBits","d","s","NaN","Infinity","Math","pow","write","value","c","rt","abs","isNaN","floor","log","LN2","root","factory","module","this","modules","installedModules","__w_pdfjs_require__","moduleId","l","call","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","_display_utils","addLinkAttributes","getFilenameFromUrl","LinkTarget","loadScript","PDFDateString","RenderingCancelledException","_api","build","getDocument","LoopbackPort","PDFDataRangeTransport","PDFWorker","version","_util","CMapCompressionType","createObjectURL","createPromiseCapability","createValidAbsoluteUrl","InvalidPDFException","MissingPDFException","OPS","PasswordResponses","PermissionFlag","removeNullCharacters","shadow","UnexpectedResponseException","UNSUPPORTED_FEATURES","Util","VerbosityLevel","_annotation_layer","AnnotationLayer","_api_compatibility","apiCompatibilityParams","_worker_options","GlobalWorkerOptions","_text_layer","renderTextLayer","_svg","SVGGraphics","isNodeJS","PDFNodeStream","setPDFNetworkStreamFactory","params","PDFNetworkStream","PDFFetchStream","isFetchSupported","isValidFetchUrl","url","deprecated","StatTimer","DOMSVGFactory","DOMCMapReaderFactory","BaseCMapReaderFactory","DOMCanvasFactory","BaseCanvasFactory","DEFAULT_LINK_REL","PageViewport","SVG_NS","constructor","unreachable","width","height","canvasAndContext","canvas","context","ownerDocument","globalThis","document","super","_document","createElement","getContext","baseUrl","isCompressed","compressionType","BINARY","NONE","_fetchData","catch","reason","baseURI","fetch","then","async","response","ok","statusText","cMapData","arrayBuffer","stringToBytes","text","Promise","resolve","reject","request","XMLHttpRequest","open","responseType","onreadystatechange","readyState","DONE","status","responseText","send","assert","svg","createElementNS","setAttribute","type","viewBox","scale","rotation","offsetX","offsetY","dontFlip","centerX","centerY","rotateA","rotateB","rotateC","rotateD","offsetCanvasX","offsetCanvasY","transform","slice","x","y","applyTransform","rect","topLeft","bottomRight","applyInverseTransform","BaseException","msg","SELF","BLANK","PARENT","TOP","link","target","rel","enabled","urlNullRemoved","href","title","onclick","targetStr","anchor","query","min","substring","lastIndexOf","started","times","warn","Date","now","outBuf","longest","time","duration","padEnd","Response","ReadableStream","protocol","URL","ex","src","script","onload","onerror","head","documentElement","appendChild","details","console","pdfDateStringRegex","input","isString","RegExp","matches","exec","year","parseInt","month","day","hour","minute","second","universalTimeRelation","offsetHour","offsetMinute","UTC","arrayByteLength","arraysToBytes","bytesToString","escapeString","getModificationDate","getVerbosityLevel","info","isArrayBuffer","isArrayEqual","isBool","isNum","isSameOrigin","setVerbosityLevel","string32","stringToPDFString","stringToUTF8String","utf8StringToString","IsEvalSupportedCached","IsLittleEndianCached","FormatError","UnknownErrorException","TextRenderingMode","StreamType","PasswordException","AbortException","ImageKind","FontType","AnnotationType","AnnotationStateModelType","AnnotationReviewState","AnnotationReplyType","AnnotationMarkedState","AnnotationFlag","AnnotationFieldFlag","AnnotationBorderStyleType","IDENTITY_MATRIX","FONT_IDENTITY_MATRIX","PRINT","MODIFY_CONTENTS","COPY","MODIFY_ANNOTATIONS","FILL_INTERACTIVE_FORMS","COPY_FOR_ACCESSIBILITY","ASSEMBLE","PRINT_HIGH_QUALITY","FILL","STROKE","FILL_STROKE","INVISIBLE","FILL_ADD_TO_PATH","STROKE_ADD_TO_PATH","FILL_STROKE_ADD_TO_PATH","ADD_TO_PATH","FILL_STROKE_MASK","ADD_TO_PATH_FLAG","GRAYSCALE_1BPP","RGB_24BPP","RGBA_32BPP","TEXT","LINK","FREETEXT","LINE","SQUARE","CIRCLE","POLYGON","POLYLINE","HIGHLIGHT","UNDERLINE","SQUIGGLY","STRIKEOUT","STAMP","CARET","INK","POPUP","FILEATTACHMENT","SOUND","MOVIE","WIDGET","SCREEN","PRINTERMARK","TRAPNET","WATERMARK","THREED","REDACT","MARKED","REVIEW","UNMARKED","ACCEPTED","REJECTED","CANCELLED","COMPLETED","GROUP","REPLY","HIDDEN","NOZOOM","NOROTATE","NOVIEW","READONLY","LOCKED","TOGGLENOVIEW","LOCKEDCONTENTS","REQUIRED","NOEXPORT","MULTILINE","PASSWORD","NOTOGGLETOOFF","RADIO","PUSHBUTTON","COMBO","EDIT","SORT","FILESELECT","MULTISELECT","DONOTSPELLCHECK","DONOTSCROLL","COMB","RICHTEXT","RADIOSINUNISON","COMMITONSELCHANGE","SOLID","DASHED","BEVELED","INSET","UNKNOWN","FLATE","LZW","DCT","JPX","JBIG","A85","AHX","CCF","RLX","TYPE1","TYPE1C","CIDFONTTYPE0","CIDFONTTYPE0C","TRUETYPE","CIDFONTTYPE2","TYPE3","OPENTYPE","TYPE0","MMTYPE1","ERRORS","WARNINGS","INFOS","STREAM","dependency","setLineWidth","setLineCap","setLineJoin","setMiterLimit","setDash","setRenderingIntent","setFlatness","setGState","save","restore","moveTo","lineTo","curveTo","curveTo2","curveTo3","closePath","rectangle","stroke","closeStroke","fill","eoFill","fillStroke","eoFillStroke","closeFillStroke","closeEOFillStroke","endPath","clip","eoClip","beginText","endText","setCharSpacing","setWordSpacing","setHScale","setLeading","setFont","setTextRenderingMode","setTextRise","moveText","setLeadingMoveText","setTextMatrix","nextLine","showText","showSpacedText","nextLineShowText","nextLineSetSpacingShowText","setCharWidth","setCharWidthAndBounds","setStrokeColorSpace","setFillColorSpace","setStrokeColor","setStrokeColorN","setFillColor","setFillColorN","setStrokeGray","setFillGray","setStrokeRGBColor","setFillRGBColor","setStrokeCMYKColor","setFillCMYKColor","shadingFill","beginInlineImage","beginImageData","endInlineImage","paintXObject","markPoint","markPointProps","beginMarkedContent","beginMarkedContentProps","endMarkedContent","beginCompat","endCompat","paintFormXObjectBegin","paintFormXObjectEnd","beginGroup","endGroup","beginAnnotations","endAnnotations","beginAnnotation","endAnnotation","paintJpegXObject","paintImageMaskXObject","paintImageMaskXObjectGroup","paintImageXObject","paintInlineImageXObject","paintInlineImageXObjectGroup","paintImageXObjectRepeat","paintImageMaskXObjectRepeat","paintSolidColorImageMask","constructPath","unknown","forms","javaScript","smask","shadingPattern","font","errorTilingPattern","errorExtGState","errorXObject","errorFontLoadType3","errorFontState","errorFontMissing","errorFontTranslate","errorColorSpace","errorOperatorList","errorFontToUnicode","errorFontLoadNative","errorFontGetPath","errorMarkedContent","NEED_PASSWORD","INCORRECT_PASSWORD","verbosity","level","Number","isInteger","cond","otherUrl","base","origin","other","_isValidProtocol","absoluteUrl","obj","prop","configurable","writable","message","NullCharactersRegExp","str","replace","bytes","undefined","MAX_ARGUMENT_COUNT","String","fromCharCode","apply","strBuf","chunkEnd","chunk","subarray","resultLength","pos","data","item","itemLength","set","isLittleEndian","buffer8","view32","Uint32Array","isEvalSupported","Function","rgbBuf","g","b","m1","m2","xt","yt","p1","p2","p3","p4","max","v","transpose","a","first","sqrt","sx","sy","rect1","rect2","compare","orderedX","sort","orderedY","result","normalizeRect","PDFStringTranslateTable","charAt","decodeURIComponent","escape","unescape","encodeURIComponent","arr1","arr2","every","element","index","date","getUTCFullYear","toString","getUTCMonth","padStart","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","capability","isSettled","promise","digits","contentType","forceDataSchema","blob","Blob","ii","b1","b2","b3","d1","d2","d3","d4","process","versions","nw","electron","PDFPageProxy","PDFDocumentProxy","_font_loader","_node_utils","_annotation_storage","_canvas","_is_node","_message_handler","_metadata","_optional_content_config","_transport_stream","_webgl","DEFAULT_RANGE_CHUNK_SIZE","RENDERING_CANCELLED_TIMEOUT","DefaultCanvasFactory","NodeCanvasFactory","DefaultCMapReaderFactory","NodeCMapReaderFactory","createPDFNetworkStream","pdfNetworkStreamFactory","task","PDFDocumentLoadingTask","source","range","rangeTransport","worker","window","pdfBytes","location","rangeChunkSize","CMapReaderFactory","ignoreErrors","stopAtErrors","fontExtraProperties","pdfBug","maxImageSize","disableFontFace","disableRange","disableStream","disableAutoFetch","workerParams","port","workerPort","fromPort","_worker","docId","destroyed","workerIdPromise","_fetchDocument","networkStreamPromise","networkStream","PDFDataTransportStream","initialData","progressiveDone","httpHeaders","withCredentials","all","workerId","messageHandler","MessageHandler","postMessageTransfers","transport","WorkerTransport","_transport","_capability","pdfDataRangeTransport","sendWithPromise","apiVersion","password","docBaseUrl","nextDocumentId","onPassword","onProgress","onUnsupportedFeature","transportDestroyed","destroy","_rangeListeners","_progressListeners","_progressiveReadListeners","_progressiveDoneListeners","_readyCapability","listener","begin","loaded","total","pdfInfo","_pdfInfo","AnnotationStorage","numPages","fingerprint","pageNumber","getPage","ref","getPageIndex","getDestinations","id","getDestination","getPageLabels","getPageLayout","getPageMode","getViewerPreferences","getOpenAction","getAttachments","getJavaScript","getOutline","getOptionalContentConfig","getPermissions","getMetadata","getData","downloadInfoCapability","getStats","startCleanup","loadingTask","loadingParams","annotationStorage","saveDocument","pageIndex","pageInfo","_pageIndex","_pageInfo","_ownerDocument","_stats","_pdfBug","commonObjs","objs","PDFObjects","cleanupAfterRender","pendingCleanup","_intentStates","Map","rotate","userUnit","view","intent","annotationsPromise","annotationsIntent","getAnnotations","canvasContext","viewport","enableWebGL","renderInteractiveForms","imageLayer","canvasFactory","background","optionalContentConfigPromise","renderingIntent","intentState","streamReaderCancelTimeout","clearTimeout","canvasFactoryInstance","webGLContext","WebGLContext","enable","displayReadyCapability","operatorList","fnArray","argsArray","lastChunk","_pumpOperatorList","getAll","complete","error","renderTasks","internalRenderTask","splice","_tryCleanup","_abortOperatorList","timeEnd","InternalRenderTask","callback","useRequestAnimationFrame","renderTask","transparency","optionalContentConfig","initializeGraphics","operatorListChanged","opListReadCapability","opListTask","normalizeWhitespace","disableCombineTextItems","TEXT_CONTENT_CHUNK_SIZE","sendWithStream","combineTextItems","highWaterMark","textContent","items","readableStream","streamTextContent","pump","reader","done","assign","styles","getReader","pageCache","waitOn","force","completed","cancel","clear","resetStats","values","operatorListChunk","args","streamReader","_renderPageChunk","setTimeout","curIntentState","delete","cleanup","defer","_listeners","_defer","_deferred","transfers","cloneValue","cloned","has","transferable","includes","byteOffset","isArray","desc","getOwnPropertyDescriptor","getPrototypeOf","forEach","WeakMap","PDFWorkerClosure","pdfWorkerPorts","isWorkerDisabled","fallbackWorkerSrc","nextFakeWorkerId","fakeWorkerCapability","pdfjsFilePath","currentScript","getWorkerSrc","workerSrc","getMainThreadWorkerMessageHandler","mainWorkerMessageHandler","pdfjsWorker","WorkerMessageHandler","setupFakeWorkerGlobal","loader","eval","createCDNWrapper","wrapper","_port","_webWorker","_messageHandler","_initializeFromPort","_initialize","on","Worker","terminateEarly","removeEventListener","onWorkerError","terminate","_setupFakeWorker","addEventListener","supportTransfers","sendTest","testObj","workerHandler","setup","fontLoader","FontLoader","_onUnsupportedFeature","_params","cMapUrl","cMapPacked","destroyCapability","_passwordCapability","_networkStream","_fullReader","_lastProgress","pagePromises","setupMessageHandler","page","_destroy","terminated","cancelAllRequests","sink","getFullReader","evt","onPull","close","enqueue","onCancel","ready","readyReason","headersCapability","fullReader","headersReady","isStreamingSupported","isRangeSupported","contentLength","rangeReader","getRangeReader","_numPages","exception","updatePassword","_startRenderPage","exportedData","exportedError","fontRegistry","FontInspector","fontAdded","FontFaceObject","finally","imageData","pageProxy","MAX_IMAGE_SIZE_TO_STORE","fetched","builtInCMap","featureId","filename","resetModified","results","OptionalContentConfig","metadata","Metadata","contentDispositionFilename","cleanupSuccessful","_objs","objId","resolved","_ensureObj","RenderTask","_internalRenderTask","onContinue","canvasInRendering","WeakSet","operatorListIdx","running","graphicsReadyCallback","graphicsReady","_useRequestAnimationFrame","cancelled","_continueBound","_continue","_scheduleNextBound","_scheduleNext","_nextBound","_next","add","StepperManager","stepper","init","nextBreakPoint","getNextBreakPoint","gfx","CanvasGraphics","beginDrawing","endDrawing","updateOperatorList","requestAnimationFrame","executeOperatorList","BaseFontLoader","nativeFontFaces","styleElement","nativeFontFace","fonts","rule","getElementsByTagName","styleSheet","sheet","insertRule","cssRules","remove","attached","missingFile","isFontLoadingAPISupported","createNativeFontFace","addNativeFontFace","family","createFontFaceRule","isSyncFontLoadingSupported","_queueLoadingCallback","_prepareFontLoadEvent","supported","rules","fontsToLoad","loadingContext","requests","nextRequestId","loadTestFontId","navigator","userAgent","completeRequest","otherRequest","shift","getLoadTestFont","atob","int32","spliceString","insert","chunk1","chunk2","ctx","called","isFontReady","fillText","getImageData","_loadTestFont","COMMENT_OFFSET","CFF_CHECKSUM_OFFSET","XXXX_VALUE","checksum","btoa","names","loadedName","div","style","visibility","position","top","left","span","fontFamily","body","removeChild","translatedData","compiledGlyphs","FontFace","registerFont","mimetype","character","cmds","current","size","js","cmd","Canvas","createCanvas","fs","readFile","_storage","_modified","onSetModified","onResetModified","defaultValue","_setModified","fromEntries","compatibilityParams","freeze","_pattern_helper","MIN_FONT_SIZE","MAX_FONT_SIZE","MAX_GROUP_SIZE","MIN_WIDTH_FACTOR","COMPILE_TYPE3_GLYPHS","MAX_SIZE_TO_COMPILE","FULL_CHUNK_HEIGHT","addContextCurrentTransform","mozCurrentTransform","_originalSave","_originalRestore","_originalRotate","_originalScale","_originalTranslate","translate","_originalTransform","_originalSetTransform","setTransform","_transformMatrix","_transformStack","f","ad_bc","bc_ad","old","prev","pop","angle","cosValue","cos","sinValue","sin","CachedCanvases","cache","getCanvas","trackTransform","canvasEntry","reset","compileType3Glyph","imgData","j","j0","POINT_TO_PROCESS_LIMIT","width1","points","POINT_TYPES","lineSize","data0","mask","elem","count","sum","steps","Int32Array","outlines","pp","coords","p0","step","drawOutline","beginPath","k","kk","ll","CanvasExtraState","alphaIsShape","fontSize","fontSizeScale","textMatrix","textMatrixScale","fontMatrix","leading","lineX","lineY","charSpacing","wordSpacing","textHScale","textRenderingMode","textRise","fillColor","strokeColor","patternFill","fillAlpha","strokeAlpha","lineWidth","activeSMask","resumeSMaskCtx","transferMaps","clone","setCurrentPoint","EXECUTION_TIME","EXECUTION_STEPS","canvasCtx","stateStack","pendingClip","pendingEOFill","res","xobjs","groupStack","processingType3","baseTransform","baseTransformStack","groupLevel","smaskStack","smaskCounter","tempSMask","contentVisible","markedContentStack","cachedCanvases","_cachedGetSinglePixelWidth","putBinaryImageData","ImageData","putImageData","destPos","thisChunkHeight","elemsInThisChunk","partialChunkHeight","fullChunks","totalChunks","chunkImgData","createImageData","srcPos","dest","transferMapRed","transferMapGreen","transferMapBlue","transferMapGray","kind","srcLength","dest32","dest32DataLength","fullSrcDiff","white","black","srcDiff","kEnd","kEndUnrolled","srcByte","hasTransferMaps","putBinaryImageMask","copyCtxState","sourceCtx","destCtx","properties","setLineDash","getLineDash","lineDashOffset","resetCtxToDefault","strokeStyle","fillStyle","fillRule","globalAlpha","lineCap","lineJoin","miterLimit","globalCompositeOperation","composeSMaskBackdrop","r0","g0","b0","alpha","alpha_","composeSMaskAlpha","maskData","layerData","transferMap","composeSMaskLuminosity","genericComposeSMask","maskCtx","layerCtx","subtype","backdrop","composeFn","hasBackdrop","PIXELS_TO_PROCESS","chunkSize","ceil","row","chunkHeight","composeSMask","scaleX","scaleY","isEnabled","composed","layer","drawImage","LINE_CAP_STYLES","LINE_JOIN_STYLES","NORMAL_CLIP","EO_CLIP","op","fillRect","transparentCanvas","compositeCtx","beginLayout","executionStartIdx","continueCallback","argsArrayLen","fnId","chunkOperations","endTime","breakIt","depObjId","objsPool","startsWith","endSMaskGroup","endLayout","limit","dashArray","dashPhase","flatness","states","state","suspendSMaskGroup","beginSMaskGroup","drawnWidth","drawnHeight","cacheId","scratchCanvas","currentCtx","currentTransform","groupCtx","startTransformInverse","mozCurrentTransformInverse","deltaTransform","clearRect","resumeSMaskGroup","ops","getSinglePixelWidth","xw","yh","bezierCurveTo","consumePath","singularValueDecompose2dScale","getPattern","isPatternFill","needRestore","paths","pendingTextPaths","path","addToPath","spacing","fontRefName","fontObj","fontDirection","isType3Font","bold","italic","typeface","fallbackName","browserFontSize","rise","patternTransform","fillStrokeMode","isAddToPathSet","getPathGenerator","strokeText","glyphs","showType3Text","glyphsLength","vertical","spacingDir","defaultVMetrics","widthAdvanceScale","simpleFillText","pattern","glyph","scaledX","scaledY","scaledAccentX","scaledAccentY","vmetric","vx","vy","charWidth","restoreNeeded","isSpace","fontChar","accent","remeasure","measuredWidth","measureText","isFontSubpixelAAEnabled","characterScaleX","isInFont","paintChar","spacingLength","isTextInvisible","charProcOperatorList","operatorListId","transformed","xWidth","yWidth","llx","lly","urx","ury","getColorN_Pattern","IR","color","canvasGraphicsFactory","createCanvasGraphics","TilingPattern","getShadingPatternFromIR","arguments","makeCssRgb","patternIR","inv","bl","br","ul","ur","x0","y0","x1","y1","matrix","bbox","group","isolated","knockout","bounds","getAxialAlignedBoundingBox","canvasBounds","intersect","imageSmoothingEnabled","mozImageSmoothingEnabled","img","compiled","maskCanvas","skewX","skewY","positions","images","image","map","w","h","imgToPaint","tmpCanvas","widthScale","heightScale","HTMLElement","tmpCtx","paintWidth","paintHeight","tmpCanvasId","newWidth","newHeight","getCanvasPosition","appendImage","entry","tag","visible","isVisible","isContentVisible","inverse","ShadingIRs","applyBoundingBox","Path2D","region","RadialAxial","fromIR","raw","colorStops","r1","grad","createLinearGradient","createRadialGradient","addColorStop","createMeshCanvas","drawTriangle","c1","c2","c3","colors","rowSize","x2","y2","x3","y3","xa","car","cag","cab","xb","cbr","cbg","cbb","c1r","c1g","c1b","c2r","c2g","c2b","c3r","c3g","c3b","minY","round","maxY","x1_","x2_","drawFigure","figure","ps","cs","verticesPerRow","rows","cols","q","combinesScale","figures","backgroundColor","EXPECTED_SCALE","MAX_PATTERN_SIZE","BORDER_SIZE","boundsWidth","boundsHeight","paddedWidth","paddedHeight","drawFigures","shadingIR","Mesh","owner","matrixScale","temporaryPatternCanvas","createPattern","Dummy","PaintType","COLORED","UNCOLORED","xstep","ystep","paintType","tilingType","createPatternCanvas","curMatrixScale","combinedScale","dimx","getSizeAndScale","dimy","graphics","setFillAndStrokeStyleToContext","clipBbox","realOutputSize","maxSize","bboxWidth","bboxHeight","cssColor","CallbackKind","DATA","ERROR","StreamKind","CANCEL","CANCEL_COMPLETE","CLOSE","ENQUEUE","PULL","PULL_COMPLETE","START_COMPLETE","wrapReason","sourceName","targetName","comObj","callbackId","streamId","streamSinks","streamControllers","callbackCapabilities","actionHandler","_onComObjOnMessage","event","stream","_processStreamMessage","action","cbSourceName","cbTargetName","postMessage","_createStreamSink","actionName","handler","ah","_postMessage","queueingStrategy","controller","startCapability","startCall","pullCall","cancelCall","isClosed","desiredSize","pull","pullCapability","cancelCapability","self","streamSink","isCancelled","lastDesiredSize","sinkCapability","success","_deleteStreamController","allSettled","_xml_parser","_repair","parser","SimpleXMLParser","xmlDocument","parseFromString","_metadataMap","_parse","codes","chars","rdf","nodeName","toLowerCase","firstChild","nextSibling","hasChildNodes","children","childNodes","jj","trim","XMLParserErrorCode","NoError","EndOfDocument","UnterminatedCdat","UnterminatedXmlDeclaration","UnterminatedDoctypeDeclaration","UnterminatedComment","MalformedElement","OutOfMemory","UnterminatedAttributeValue","UnterminatedElement","ElementNeverBegun","isWhitespace","ch","isWhitespaceString","XMLParserBase","entity","onResolveEntity","attributes","skipWs","attrName","attrValue","attrEndChar","attrEndIndex","_resolveEntities","parsed","attrStart","ch2","onError","onEndElement","pi","_parseProcessingInstruction","onPi","onComment","onCdata","q2","complexDoctype","doctypeContent","onDoctype","content","_parseContent","onBeginElement","onText","isEmpty","SimpleDOMNode","nodeValue","parentNode","child","_currentFragment","_stack","_errorCode","parseXml","node","lastElement","OptionalContentGroup","creator","_order","_groups","order","groups","baseState","off","expression","policy","ids","from","keys","_queuedChunks","_progressiveDone","_pdfDataRangeTransport","_isStreamingSupported","_isRangeSupported","_contentLength","_fullRequestReader","_rangeReaders","addRangeListener","_onReceiveData","addProgressListener","_onProgress","addProgressiveReadListener","addProgressiveDoneListener","_onProgressiveDone","transportReady","_enqueue","found","some","_begin","_loaded","firstReader","queuedChunks","PDFDataTransportStreamReader","_progressiveDataLength","PDFDataTransportStreamRangeReader","requestDataRange","readers","abort","_stream","_done","_filename","_requests","_headersReady","requestCapability","_end","_queuedChunk","requestsCapability","_removeRangeReader","_enabled","WebGLUtils","tryInitGL","loadShader","gl","shaderType","shader","createShader","shaderSource","compileShader","getShaderParameter","COMPILE_STATUS","errorMsg","getShaderInfoLog","createVertexShader","VERTEX_SHADER","createFragmentShader","FRAGMENT_SHADER","createProgram","shaders","program","attachShader","linkProgram","linked","getProgramParameter","LINK_STATUS","getProgramInfoLog","createTexture","textureId","activeTexture","texture","bindTexture","TEXTURE_2D","texParameteri","TEXTURE_WRAP_S","CLAMP_TO_EDGE","TEXTURE_WRAP_T","TEXTURE_MIN_FILTER","NEAREST","TEXTURE_MAG_FILTER","texImage2D","RGBA","UNSIGNED_BYTE","currentGL","currentCanvas","generateGL","premultipliedalpha","smaskVertexShaderCode","smaskFragmentShaderCode","smaskCache","initSmaskGL","vertexShader","fragmentShader","useProgram","resolutionLocation","getUniformLocation","positionLocation","getAttribLocation","backdropLocation","subtypeLocation","texCoordLocation","texLayerLocation","texMaskLocation","texCoordBuffer","createBuffer","bindBuffer","ARRAY_BUFFER","bufferData","Float32Array","STATIC_DRAW","enableVertexAttribArray","vertexAttribPointer","FLOAT","uniform1i","drawingBufferWidth","drawingBufferHeight","uniform2f","uniform4f","TEXTURE0","maskTexture","TEXTURE1","clearColor","BLEND","blendFunc","ONE","ONE_MINUS_SRC_ALPHA","COLOR_BUFFER_BIT","drawArrays","TRIANGLES","flush","deleteTexture","deleteBuffer","figuresVertexShaderCode","figuresFragmentShaderCode","figuresCache","initFiguresGL","scaleLocation","offsetLocation","colorLocation","coordsMap","colorsMap","pIndex","cIndex","col","coordsBuffer","colorsBuffer","AnnotationElementFactory","parameters","annotationType","LinkAnnotationElement","TextAnnotationElement","fieldType","TextWidgetAnnotationElement","radioButton","RadioButtonWidgetAnnotationElement","checkBox","CheckboxWidgetAnnotationElement","PushButtonWidgetAnnotationElement","ChoiceWidgetAnnotationElement","WidgetAnnotationElement","PopupAnnotationElement","FreeTextAnnotationElement","LineAnnotationElement","SquareAnnotationElement","CircleAnnotationElement","PolylineAnnotationElement","CaretAnnotationElement","InkAnnotationElement","PolygonAnnotationElement","HighlightAnnotationElement","UnderlineAnnotationElement","SquigglyAnnotationElement","StrikeOutAnnotationElement","StampAnnotationElement","FileAttachmentAnnotationElement","AnnotationElement","isRenderable","ignoreBorder","linkService","downloadManager","imageResourcesPath","svgFactory","container","_createContainer","transformOrigin","borderStyle","borderWidth","horizontalRadius","horizontalCornerRadius","verticalRadius","verticalCornerRadius","radius","borderRadius","borderBottomStyle","borderColor","trigger","popupElement","PopupElement","modificationDate","contents","hideWrapper","popup","render","className","newWindow","externalLinkTarget","externalLinkRel","externalLinkEnabled","_bindNamedAction","_bindLink","destination","getDestinationHash","navigateTo","getAnchorUrl","executeNamedAction","hasPopup","alt","dataset","l10nId","l10nArgs","JSON","stringify","_createPopup","hasAppearance","fieldValue","TEXT_ALIGNMENT","storage","getOrCreateValue","multiLine","setValue","disabled","readOnly","fieldName","maxLen","maxLength","comb","fieldWidth","combWidth","classList","letterSpacing","verticalAlign","display","_setTextStyle","textAlignment","textAlign","direction","fontWeight","fontStyle","checked","buttonValue","radio","getElementsByName","getAttribute","selectElement","combo","options","multiSelect","multiple","option","optionElement","displayValue","exportValue","selectedIndex","IGNORE_TYPES","parentType","selector","parentId","parentElement","querySelector","parentLeft","parseFloat","parentWidth","pinned","BACKGROUND_ENLIGHT","hideElement","dateObject","toDateObject","toLocaleDateString","toLocaleTimeString","_formatContents","_toggle","_show","_hide","lines","split","line","createTextNode","pin","hasAttribute","removeAttribute","zIndex","unpin","lineCoordinates","append","square","circle","containerClassName","svgElementName","coordinate","vertices","polyline","inkList","inkLists","file","eventBus","dispatch","_download","downloadData","sortedAnnotations","popupAnnotations","annotations","MAX_TEXT_DIVS_TO_RENDER","NonWhitespaceRegexp","isAllWhitespace","test","appendText","geom","textDiv","textDivProperties","canvasWidth","originalTransform","paddingBottom","paddingLeft","paddingRight","paddingTop","_textDivs","_textDivProperties","tx","_viewport","atan2","fontName","PI","fontHeight","fontAscent","ascent","descent","_fontInspectorEnabled","shouldScaleText","absScaleX","absScaleY","_textContentStream","_layoutText","_enhanceTextSelection","angleCos","angleSin","divWidth","divHeight","_bounds","right","bottom","_canceled","textDivs","textDivsLength","_renderingDone","findPositiveMin","ts","expand","expanded","expandBounds","divProperties","Float64Array","boxScale","boxes","box","x1New","x2New","expandBoundsLTR","fakeBoundary","horizon","boundary","horizonPart","affectedBoundary","maxXNew","xNew","changedHorizon","lastBoundary","useBoundary","unshift","used","concat","TextLayerRenderTask","textContentStream","textContentItemsStr","enhanceTextSelection","_textContent","_container","_textContentItemsStr","_reader","_layoutTextLastFontSize","_layoutTextLastFontFamily","_layoutTextCtx","_renderTimer","renderParameters","_render","timeout","styleCache","mozOpaque","textItems","textStyles","_processItems","expandTextDivs","expandDivs","transformBuf","paddingBuf","divProps","padding","SVG_DEFAULTS","XML_NS","XLINK_NS","convertImgDataToPng","PNG_HEADER","CHUNK_WRAPPER_SIZE","crcTable","crc32","crc","writePngChunk","adler32","deflateSync","literals","deflateSyncUncompressed","Buffer","maxBlockLength","deflateBlocks","idat","adler","encode","isMask","bitDepth","colorType","offsetLiterals","offsetBytes","ihdr","pngLength","SVGExtraState","dependencies","activeClipUrl","clipGroup","maskId","opListToTree","opList","opTree","opListElement","fn","pf","toFixed","pm","acos","clipCount","maskCount","shadingCount","transformMatrix","transformStack","extraStack","embedFonts","embeddedFonts","cssStyle","_operatorIdMapping","tgrp","executeOpTree","svgElement","loadDependencies","convertOpList","operatorIdMapping","opTreeElement","lineMatrix","xcoords","ycoords","tspan","setAttributeNS","txtElement","txtgrp","lineWidthScale","_setStrokeAttributes","_ensureTransformGroup","defs","addFontStyle","_makeColorN_Pattern","inverseTransform","_makeShadingPattern","_makeTilingPattern","tilingId","tx0","ty0","tx1","ty1","xscale","yscale","txstep","tystep","tiling","shadingId","gradient","point0","point1","focalPoint","circlePoint","focalRadius","circleRadius","colorStop","stop","getAttributeNS","clipId","clipPath","clipElement","cloneNode","setStrokeAlpha","setFillAlpha","imgSrc","cliprect","imgEl","definitions","rootGroup","_ensureClipGroup","_network_utils","http","https","fileUriRegex","parseUrl","sourceUrl","parsedUrl","parse","host","isHttp","isFsUrl","_rangeRequestReaders","PDFNodeStreamFsFullReader","PDFNodeStreamFullReader","PDFNodeStreamFsRangeReader","PDFNodeStreamRangeReader","BaseFullReader","_url","_storedError","_disableRange","_rangeChunkSize","_readableStream","_readCapability","_headersCapability","_error","BaseRangeReader","createRequestOptions","headers","auth","hostname","method","handleResponse","statusCode","_setReadableStream","getResponseHeader","allowRangeRequests","suggestedLength","validateRangeRequestCapabilities","extractFilenameFromHeader","_request","_httpHeaders","Range","lstat","stat","createReadStream","createResponseStatusError","validateResponseStatus","_content_disposition","returnValues","contentEncoding","contentDisposition","getFilenameFromContentDispositionHeader","needsEncodingFixup","toParamRegExp","rfc2616unquote","rfc5987decode","rfc2047decode","fixupEncoding","rfc2231getparam","attributePattern","flags","textdecode","encoding","decoder","TextDecoder","fatal","decode","err","contentDispositionStr","match","iter","quot","part","quotindex","extvalue","encodingend","langvalue","charset","hex","OK_RESPONSE","PARTIAL_CONTENT_RESPONSE","getArrayBuffer","xhr","array","NetworkManager","getXhr","currXhrId","pendingRequests","listeners","xhrId","pendingRequest","setRequestHeader","expectedStatus","onStateChange","onprogress","onHeadersReceived","onDone","xhrStatus","ok_response_on_range_request","rangeHeader","_source","_manager","PDFNetworkStreamFullRequestReader","PDFNetworkStreamRangeRequestReader","onClosed","_onRangeRequestReaderClosed","manager","_onHeadersReceived","_onDone","_onError","_fullRequestId","requestFull","_headersReceivedCapability","_cachedChunks","fullRequestXhrId","fullRequestXhr","getRequestXhr","abortRequest","lengthComputable","isPendingRequest","_requestId","requestRange","_close","createFetchOptions","abortController","signal","credentials","redirect","createHeaders","Headers","PDFFetchStreamReader","PDFFetchStreamRangeReader","_withCredentials","AbortController","_abortController","_headers","base64","ieee754","typedArraySupport","__proto__","foo","kMaxLength","TYPED_ARRAY_SUPPORT","that","RangeError","arg","encodingOrOffset","allocUnsafe","TypeError","ArrayBuffer","fromArrayBuffer","fromString","fromObject","assertSize","alloc","string","isEncoding","actual","fromArrayLike","isBuffer","copy","isnan","SlowBuffer","isView","loweredCase","utf8ToBytes","base64ToBytes","slowToString","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","bidirectionalIndexOf","val","dir","arrayIndexOf","indexSize","arrLength","valLength","buf","readUInt16BE","foundIndex","hexWrite","remaining","strLen","substr","utf8Write","blitBuffer","asciiWrite","asciiToBytes","latin1Write","base64Write","ucs2Write","utf16leToBytes","secondByte","thirdByte","fourthByte","tempCodePoint","firstByte","codePoint","bytesPerSequence","decodeCodePointsArray","INSPECT_MAX_BYTES","global","poolSize","_augment","species","allocUnsafeSlow","_isBuffer","list","swap16","swap32","swap64","equals","inspect","thisStart","thisEnd","thisCopy","targetCopy","isFinite","toJSON","_arr","MAX_ARGUMENTS_LENGTH","codePoints","ret","out","toHex","checkOffset","ext","checkInt","objectWriteUInt16","littleEndian","objectWriteUInt32","checkIEEE754","writeFloat","noAssert","writeDouble","newBuf","sliceLen","readUIntLE","mul","readUIntBE","readUInt8","readUInt16LE","readUInt32LE","readUInt32BE","readIntLE","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","writeUIntLE","maxBytes","writeUIntBE","writeUInt8","writeUInt16LE","writeUInt16BE","writeUInt32LE","writeUInt32BE","writeIntLE","sub","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","targetStart","INVALID_BASE64_RE","base64clean","stringtrim","units","leadSurrogate","byteArray","hi","lo","dst"],"mappings":"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","file":"js/chunk-76d08ab2.a5bc7b1e.js","sourcesContent":["'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(\n uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)\n ))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","exports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","/**\n * @licstart The following is the entire license notice for the\n * Javascript code in this page\n *\n * Copyright 2020 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * @licend The above is the entire license notice for the\n * Javascript code in this page\n */\n\n(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\"] = root.pdfjsLib = factory();\n})(this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __w_pdfjs_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __w_pdfjs_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__w_pdfjs_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__w_pdfjs_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__w_pdfjs_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__w_pdfjs_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// define __esModule on exports\n/******/ \t__w_pdfjs_require__.r = function(exports) {\n/******/ \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n/******/ \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n/******/ \t\t}\n/******/ \t\tObject.defineProperty(exports, '__esModule', { value: true });\n/******/ \t};\n/******/\n/******/ \t// create a fake namespace object\n/******/ \t// mode & 1: value is a module id, require it\n/******/ \t// mode & 2: merge all properties of value into the ns\n/******/ \t// mode & 4: return value when already ns object\n/******/ \t// mode & 8|1: behave like require\n/******/ \t__w_pdfjs_require__.t = function(value, mode) {\n/******/ \t\tif(mode & 1) value = __w_pdfjs_require__(value);\n/******/ \t\tif(mode & 8) return value;\n/******/ \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n/******/ \t\tvar ns = Object.create(null);\n/******/ \t\t__w_pdfjs_require__.r(ns);\n/******/ \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n/******/ \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __w_pdfjs_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n/******/ \t\treturn ns;\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__w_pdfjs_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__w_pdfjs_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__w_pdfjs_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__w_pdfjs_require__.p = \"\";\n/******/\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __w_pdfjs_require__(__w_pdfjs_require__.s = 0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"addLinkAttributes\", {\n enumerable: true,\n get: function () {\n return _display_utils.addLinkAttributes;\n }\n});\nObject.defineProperty(exports, \"getFilenameFromUrl\", {\n enumerable: true,\n get: function () {\n return _display_utils.getFilenameFromUrl;\n }\n});\nObject.defineProperty(exports, \"LinkTarget\", {\n enumerable: true,\n get: function () {\n return _display_utils.LinkTarget;\n }\n});\nObject.defineProperty(exports, \"loadScript\", {\n enumerable: true,\n get: function () {\n return _display_utils.loadScript;\n }\n});\nObject.defineProperty(exports, \"PDFDateString\", {\n enumerable: true,\n get: function () {\n return _display_utils.PDFDateString;\n }\n});\nObject.defineProperty(exports, \"RenderingCancelledException\", {\n enumerable: true,\n get: function () {\n return _display_utils.RenderingCancelledException;\n }\n});\nObject.defineProperty(exports, \"build\", {\n enumerable: true,\n get: function () {\n return _api.build;\n }\n});\nObject.defineProperty(exports, \"getDocument\", {\n enumerable: true,\n get: function () {\n return _api.getDocument;\n }\n});\nObject.defineProperty(exports, \"LoopbackPort\", {\n enumerable: true,\n get: function () {\n return _api.LoopbackPort;\n }\n});\nObject.defineProperty(exports, \"PDFDataRangeTransport\", {\n enumerable: true,\n get: function () {\n return _api.PDFDataRangeTransport;\n }\n});\nObject.defineProperty(exports, \"PDFWorker\", {\n enumerable: true,\n get: function () {\n return _api.PDFWorker;\n }\n});\nObject.defineProperty(exports, \"version\", {\n enumerable: true,\n get: function () {\n return _api.version;\n }\n});\nObject.defineProperty(exports, \"CMapCompressionType\", {\n enumerable: true,\n get: function () {\n return _util.CMapCompressionType;\n }\n});\nObject.defineProperty(exports, \"createObjectURL\", {\n enumerable: true,\n get: function () {\n return _util.createObjectURL;\n }\n});\nObject.defineProperty(exports, \"createPromiseCapability\", {\n enumerable: true,\n get: function () {\n return _util.createPromiseCapability;\n }\n});\nObject.defineProperty(exports, \"createValidAbsoluteUrl\", {\n enumerable: true,\n get: function () {\n return _util.createValidAbsoluteUrl;\n }\n});\nObject.defineProperty(exports, \"InvalidPDFException\", {\n enumerable: true,\n get: function () {\n return _util.InvalidPDFException;\n }\n});\nObject.defineProperty(exports, \"MissingPDFException\", {\n enumerable: true,\n get: function () {\n return _util.MissingPDFException;\n }\n});\nObject.defineProperty(exports, \"OPS\", {\n enumerable: true,\n get: function () {\n return _util.OPS;\n }\n});\nObject.defineProperty(exports, \"PasswordResponses\", {\n enumerable: true,\n get: function () {\n return _util.PasswordResponses;\n }\n});\nObject.defineProperty(exports, \"PermissionFlag\", {\n enumerable: true,\n get: function () {\n return _util.PermissionFlag;\n }\n});\nObject.defineProperty(exports, \"removeNullCharacters\", {\n enumerable: true,\n get: function () {\n return _util.removeNullCharacters;\n }\n});\nObject.defineProperty(exports, \"shadow\", {\n enumerable: true,\n get: function () {\n return _util.shadow;\n }\n});\nObject.defineProperty(exports, \"UnexpectedResponseException\", {\n enumerable: true,\n get: function () {\n return _util.UnexpectedResponseException;\n }\n});\nObject.defineProperty(exports, \"UNSUPPORTED_FEATURES\", {\n enumerable: true,\n get: function () {\n return _util.UNSUPPORTED_FEATURES;\n }\n});\nObject.defineProperty(exports, \"Util\", {\n enumerable: true,\n get: function () {\n return _util.Util;\n }\n});\nObject.defineProperty(exports, \"VerbosityLevel\", {\n enumerable: true,\n get: function () {\n return _util.VerbosityLevel;\n }\n});\nObject.defineProperty(exports, \"AnnotationLayer\", {\n enumerable: true,\n get: function () {\n return _annotation_layer.AnnotationLayer;\n }\n});\nObject.defineProperty(exports, \"apiCompatibilityParams\", {\n enumerable: true,\n get: function () {\n return _api_compatibility.apiCompatibilityParams;\n }\n});\nObject.defineProperty(exports, \"GlobalWorkerOptions\", {\n enumerable: true,\n get: function () {\n return _worker_options.GlobalWorkerOptions;\n }\n});\nObject.defineProperty(exports, \"renderTextLayer\", {\n enumerable: true,\n get: function () {\n return _text_layer.renderTextLayer;\n }\n});\nObject.defineProperty(exports, \"SVGGraphics\", {\n enumerable: true,\n get: function () {\n return _svg.SVGGraphics;\n }\n});\n\nvar _display_utils = __w_pdfjs_require__(1);\n\nvar _api = __w_pdfjs_require__(5);\n\nvar _util = __w_pdfjs_require__(2);\n\nvar _annotation_layer = __w_pdfjs_require__(19);\n\nvar _api_compatibility = __w_pdfjs_require__(9);\n\nvar _worker_options = __w_pdfjs_require__(12);\n\nvar _text_layer = __w_pdfjs_require__(20);\n\nvar _svg = __w_pdfjs_require__(21);\n\nconst pdfjsVersion = '2.6.347';\nconst pdfjsBuild = '3be9c65f';\n{\n const {\n isNodeJS\n } = __w_pdfjs_require__(4);\n\n if (isNodeJS) {\n const PDFNodeStream = __w_pdfjs_require__(22).PDFNodeStream;\n\n (0, _api.setPDFNetworkStreamFactory)(params => {\n return new PDFNodeStream(params);\n });\n } else {\n const PDFNetworkStream = __w_pdfjs_require__(25).PDFNetworkStream;\n\n let PDFFetchStream;\n\n if ((0, _display_utils.isFetchSupported)()) {\n PDFFetchStream = __w_pdfjs_require__(26).PDFFetchStream;\n }\n\n (0, _api.setPDFNetworkStreamFactory)(params => {\n if (PDFFetchStream && (0, _display_utils.isValidFetchUrl)(params.url)) {\n return new PDFFetchStream(params);\n }\n\n return new PDFNetworkStream(params);\n });\n }\n}\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.addLinkAttributes = addLinkAttributes;\nexports.getFilenameFromUrl = getFilenameFromUrl;\nexports.isFetchSupported = isFetchSupported;\nexports.isValidFetchUrl = isValidFetchUrl;\nexports.loadScript = loadScript;\nexports.deprecated = deprecated;\nexports.PDFDateString = exports.StatTimer = exports.DOMSVGFactory = exports.DOMCMapReaderFactory = exports.BaseCMapReaderFactory = exports.DOMCanvasFactory = exports.BaseCanvasFactory = exports.DEFAULT_LINK_REL = exports.LinkTarget = exports.RenderingCancelledException = exports.PageViewport = void 0;\n\nvar _util = __w_pdfjs_require__(2);\n\nconst DEFAULT_LINK_REL = \"noopener noreferrer nofollow\";\nexports.DEFAULT_LINK_REL = DEFAULT_LINK_REL;\nconst SVG_NS = \"http://www.w3.org/2000/svg\";\n\nclass BaseCanvasFactory {\n constructor() {\n if (this.constructor === BaseCanvasFactory) {\n (0, _util.unreachable)(\"Cannot initialize BaseCanvasFactory.\");\n }\n }\n\n create(width, height) {\n (0, _util.unreachable)(\"Abstract method `create` called.\");\n }\n\n reset(canvasAndContext, width, height) {\n if (!canvasAndContext.canvas) {\n throw new Error(\"Canvas is not specified\");\n }\n\n if (width <= 0 || height <= 0) {\n throw new Error(\"Invalid canvas size\");\n }\n\n canvasAndContext.canvas.width = width;\n canvasAndContext.canvas.height = height;\n }\n\n destroy(canvasAndContext) {\n if (!canvasAndContext.canvas) {\n throw new Error(\"Canvas is not specified\");\n }\n\n canvasAndContext.canvas.width = 0;\n canvasAndContext.canvas.height = 0;\n canvasAndContext.canvas = null;\n canvasAndContext.context = null;\n }\n\n}\n\nexports.BaseCanvasFactory = BaseCanvasFactory;\n\nclass DOMCanvasFactory extends BaseCanvasFactory {\n constructor({\n ownerDocument = globalThis.document\n } = {}) {\n super();\n this._document = ownerDocument;\n }\n\n create(width, height) {\n if (width <= 0 || height <= 0) {\n throw new Error(\"Invalid canvas size\");\n }\n\n const canvas = this._document.createElement(\"canvas\");\n\n const context = canvas.getContext(\"2d\");\n canvas.width = width;\n canvas.height = height;\n return {\n canvas,\n context\n };\n }\n\n}\n\nexports.DOMCanvasFactory = DOMCanvasFactory;\n\nclass BaseCMapReaderFactory {\n constructor({\n baseUrl = null,\n isCompressed = false\n }) {\n if (this.constructor === BaseCMapReaderFactory) {\n (0, _util.unreachable)(\"Cannot initialize BaseCMapReaderFactory.\");\n }\n\n this.baseUrl = baseUrl;\n this.isCompressed = isCompressed;\n }\n\n async fetch({\n name\n }) {\n if (!this.baseUrl) {\n throw new Error('The CMap \"baseUrl\" parameter must be specified, ensure that ' + 'the \"cMapUrl\" and \"cMapPacked\" API parameters are provided.');\n }\n\n if (!name) {\n throw new Error(\"CMap name must be specified.\");\n }\n\n const url = this.baseUrl + name + (this.isCompressed ? \".bcmap\" : \"\");\n const compressionType = this.isCompressed ? _util.CMapCompressionType.BINARY : _util.CMapCompressionType.NONE;\n return this._fetchData(url, compressionType).catch(reason => {\n throw new Error(`Unable to load ${this.isCompressed ? \"binary \" : \"\"}CMap at: ${url}`);\n });\n }\n\n _fetchData(url, compressionType) {\n (0, _util.unreachable)(\"Abstract method `_fetchData` called.\");\n }\n\n}\n\nexports.BaseCMapReaderFactory = BaseCMapReaderFactory;\n\nclass DOMCMapReaderFactory extends BaseCMapReaderFactory {\n _fetchData(url, compressionType) {\n if (isFetchSupported() && isValidFetchUrl(url, document.baseURI)) {\n return fetch(url).then(async response => {\n if (!response.ok) {\n throw new Error(response.statusText);\n }\n\n let cMapData;\n\n if (this.isCompressed) {\n cMapData = new Uint8Array(await response.arrayBuffer());\n } else {\n cMapData = (0, _util.stringToBytes)(await response.text());\n }\n\n return {\n cMapData,\n compressionType\n };\n });\n }\n\n return new Promise((resolve, reject) => {\n const request = new XMLHttpRequest();\n request.open(\"GET\", url, true);\n\n if (this.isCompressed) {\n request.responseType = \"arraybuffer\";\n }\n\n request.onreadystatechange = () => {\n if (request.readyState !== XMLHttpRequest.DONE) {\n return;\n }\n\n if (request.status === 200 || request.status === 0) {\n let cMapData;\n\n if (this.isCompressed && request.response) {\n cMapData = new Uint8Array(request.response);\n } else if (!this.isCompressed && request.responseText) {\n cMapData = (0, _util.stringToBytes)(request.responseText);\n }\n\n if (cMapData) {\n resolve({\n cMapData,\n compressionType\n });\n return;\n }\n }\n\n reject(new Error(request.statusText));\n };\n\n request.send(null);\n });\n }\n\n}\n\nexports.DOMCMapReaderFactory = DOMCMapReaderFactory;\n\nclass DOMSVGFactory {\n create(width, height) {\n (0, _util.assert)(width > 0 && height > 0, \"Invalid SVG dimensions\");\n const svg = document.createElementNS(SVG_NS, \"svg:svg\");\n svg.setAttribute(\"version\", \"1.1\");\n svg.setAttribute(\"width\", width + \"px\");\n svg.setAttribute(\"height\", height + \"px\");\n svg.setAttribute(\"preserveAspectRatio\", \"none\");\n svg.setAttribute(\"viewBox\", \"0 0 \" + width + \" \" + height);\n return svg;\n }\n\n createElement(type) {\n (0, _util.assert)(typeof type === \"string\", \"Invalid SVG element type\");\n return document.createElementNS(SVG_NS, type);\n }\n\n}\n\nexports.DOMSVGFactory = DOMSVGFactory;\n\nclass PageViewport {\n constructor({\n viewBox,\n scale,\n rotation,\n offsetX = 0,\n offsetY = 0,\n dontFlip = false\n }) {\n this.viewBox = viewBox;\n this.scale = scale;\n this.rotation = rotation;\n this.offsetX = offsetX;\n this.offsetY = offsetY;\n const centerX = (viewBox[2] + viewBox[0]) / 2;\n const centerY = (viewBox[3] + viewBox[1]) / 2;\n let rotateA, rotateB, rotateC, rotateD;\n rotation = rotation % 360;\n rotation = rotation < 0 ? rotation + 360 : rotation;\n\n switch (rotation) {\n case 180:\n rotateA = -1;\n rotateB = 0;\n rotateC = 0;\n rotateD = 1;\n break;\n\n case 90:\n rotateA = 0;\n rotateB = 1;\n rotateC = 1;\n rotateD = 0;\n break;\n\n case 270:\n rotateA = 0;\n rotateB = -1;\n rotateC = -1;\n rotateD = 0;\n break;\n\n case 0:\n rotateA = 1;\n rotateB = 0;\n rotateC = 0;\n rotateD = -1;\n break;\n\n default:\n throw new Error(\"PageViewport: Invalid rotation, must be a multiple of 90 degrees.\");\n }\n\n if (dontFlip) {\n rotateC = -rotateC;\n rotateD = -rotateD;\n }\n\n let offsetCanvasX, offsetCanvasY;\n let width, height;\n\n if (rotateA === 0) {\n offsetCanvasX = Math.abs(centerY - viewBox[1]) * scale + offsetX;\n offsetCanvasY = Math.abs(centerX - viewBox[0]) * scale + offsetY;\n width = Math.abs(viewBox[3] - viewBox[1]) * scale;\n height = Math.abs(viewBox[2] - viewBox[0]) * scale;\n } else {\n offsetCanvasX = Math.abs(centerX - viewBox[0]) * scale + offsetX;\n offsetCanvasY = Math.abs(centerY - viewBox[1]) * scale + offsetY;\n width = Math.abs(viewBox[2] - viewBox[0]) * scale;\n height = Math.abs(viewBox[3] - viewBox[1]) * scale;\n }\n\n this.transform = [rotateA * scale, rotateB * scale, rotateC * scale, rotateD * scale, offsetCanvasX - rotateA * scale * centerX - rotateC * scale * centerY, offsetCanvasY - rotateB * scale * centerX - rotateD * scale * centerY];\n this.width = width;\n this.height = height;\n }\n\n clone({\n scale = this.scale,\n rotation = this.rotation,\n offsetX = this.offsetX,\n offsetY = this.offsetY,\n dontFlip = false\n } = {}) {\n return new PageViewport({\n viewBox: this.viewBox.slice(),\n scale,\n rotation,\n offsetX,\n offsetY,\n dontFlip\n });\n }\n\n convertToViewportPoint(x, y) {\n return _util.Util.applyTransform([x, y], this.transform);\n }\n\n convertToViewportRectangle(rect) {\n const topLeft = _util.Util.applyTransform([rect[0], rect[1]], this.transform);\n\n const bottomRight = _util.Util.applyTransform([rect[2], rect[3]], this.transform);\n\n return [topLeft[0], topLeft[1], bottomRight[0], bottomRight[1]];\n }\n\n convertToPdfPoint(x, y) {\n return _util.Util.applyInverseTransform([x, y], this.transform);\n }\n\n}\n\nexports.PageViewport = PageViewport;\n\nclass RenderingCancelledException extends _util.BaseException {\n constructor(msg, type) {\n super(msg);\n this.type = type;\n }\n\n}\n\nexports.RenderingCancelledException = RenderingCancelledException;\nconst LinkTarget = {\n NONE: 0,\n SELF: 1,\n BLANK: 2,\n PARENT: 3,\n TOP: 4\n};\nexports.LinkTarget = LinkTarget;\n\nfunction addLinkAttributes(link, {\n url,\n target,\n rel,\n enabled = true\n} = {}) {\n (0, _util.assert)(url && typeof url === \"string\", 'addLinkAttributes: A valid \"url\" parameter must provided.');\n const urlNullRemoved = (0, _util.removeNullCharacters)(url);\n\n if (enabled) {\n link.href = link.title = urlNullRemoved;\n } else {\n link.href = \"\";\n link.title = `Disabled: ${urlNullRemoved}`;\n\n link.onclick = () => {\n return false;\n };\n }\n\n let targetStr = \"\";\n\n switch (target) {\n case LinkTarget.NONE:\n break;\n\n case LinkTarget.SELF:\n targetStr = \"_self\";\n break;\n\n case LinkTarget.BLANK:\n targetStr = \"_blank\";\n break;\n\n case LinkTarget.PARENT:\n targetStr = \"_parent\";\n break;\n\n case LinkTarget.TOP:\n targetStr = \"_top\";\n break;\n }\n\n link.target = targetStr;\n link.rel = typeof rel === \"string\" ? rel : DEFAULT_LINK_REL;\n}\n\nfunction getFilenameFromUrl(url) {\n const anchor = url.indexOf(\"#\");\n const query = url.indexOf(\"?\");\n const end = Math.min(anchor > 0 ? anchor : url.length, query > 0 ? query : url.length);\n return url.substring(url.lastIndexOf(\"/\", end) + 1, end);\n}\n\nclass StatTimer {\n constructor() {\n this.started = Object.create(null);\n this.times = [];\n }\n\n time(name) {\n if (name in this.started) {\n (0, _util.warn)(`Timer is already running for ${name}`);\n }\n\n this.started[name] = Date.now();\n }\n\n timeEnd(name) {\n if (!(name in this.started)) {\n (0, _util.warn)(`Timer has not been started for ${name}`);\n }\n\n this.times.push({\n name,\n start: this.started[name],\n end: Date.now()\n });\n delete this.started[name];\n }\n\n toString() {\n const outBuf = [];\n let longest = 0;\n\n for (const time of this.times) {\n const name = time.name;\n\n if (name.length > longest) {\n longest = name.length;\n }\n }\n\n for (const time of this.times) {\n const duration = time.end - time.start;\n outBuf.push(`${time.name.padEnd(longest)} ${duration}ms\\n`);\n }\n\n return outBuf.join(\"\");\n }\n\n}\n\nexports.StatTimer = StatTimer;\n\nfunction isFetchSupported() {\n return typeof fetch !== \"undefined\" && typeof Response !== \"undefined\" && \"body\" in Response.prototype && typeof ReadableStream !== \"undefined\";\n}\n\nfunction isValidFetchUrl(url, baseUrl) {\n try {\n const {\n protocol\n } = baseUrl ? new URL(url, baseUrl) : new URL(url);\n return protocol === \"http:\" || protocol === \"https:\";\n } catch (ex) {\n return false;\n }\n}\n\nfunction loadScript(src) {\n return new Promise((resolve, reject) => {\n const script = document.createElement(\"script\");\n script.src = src;\n script.onload = resolve;\n\n script.onerror = function () {\n reject(new Error(`Cannot load script at: ${script.src}`));\n };\n\n (document.head || document.documentElement).appendChild(script);\n });\n}\n\nfunction deprecated(details) {\n console.log(\"Deprecated API usage: \" + details);\n}\n\nlet pdfDateStringRegex;\n\nclass PDFDateString {\n static toDateObject(input) {\n if (!input || !(0, _util.isString)(input)) {\n return null;\n }\n\n if (!pdfDateStringRegex) {\n pdfDateStringRegex = new RegExp(\"^D:\" + \"(\\\\d{4})\" + \"(\\\\d{2})?\" + \"(\\\\d{2})?\" + \"(\\\\d{2})?\" + \"(\\\\d{2})?\" + \"(\\\\d{2})?\" + \"([Z|+|-])?\" + \"(\\\\d{2})?\" + \"'?\" + \"(\\\\d{2})?\" + \"'?\");\n }\n\n const matches = pdfDateStringRegex.exec(input);\n\n if (!matches) {\n return null;\n }\n\n const year = parseInt(matches[1], 10);\n let month = parseInt(matches[2], 10);\n month = month >= 1 && month <= 12 ? month - 1 : 0;\n let day = parseInt(matches[3], 10);\n day = day >= 1 && day <= 31 ? day : 1;\n let hour = parseInt(matches[4], 10);\n hour = hour >= 0 && hour <= 23 ? hour : 0;\n let minute = parseInt(matches[5], 10);\n minute = minute >= 0 && minute <= 59 ? minute : 0;\n let second = parseInt(matches[6], 10);\n second = second >= 0 && second <= 59 ? second : 0;\n const universalTimeRelation = matches[7] || \"Z\";\n let offsetHour = parseInt(matches[8], 10);\n offsetHour = offsetHour >= 0 && offsetHour <= 23 ? offsetHour : 0;\n let offsetMinute = parseInt(matches[9], 10) || 0;\n offsetMinute = offsetMinute >= 0 && offsetMinute <= 59 ? offsetMinute : 0;\n\n if (universalTimeRelation === \"-\") {\n hour += offsetHour;\n minute += offsetMinute;\n } else if (universalTimeRelation === \"+\") {\n hour -= offsetHour;\n minute -= offsetMinute;\n }\n\n return new Date(Date.UTC(year, month, day, hour, minute, second));\n }\n\n}\n\nexports.PDFDateString = PDFDateString;\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.arrayByteLength = arrayByteLength;\nexports.arraysToBytes = arraysToBytes;\nexports.assert = assert;\nexports.bytesToString = bytesToString;\nexports.createPromiseCapability = createPromiseCapability;\nexports.escapeString = escapeString;\nexports.getModificationDate = getModificationDate;\nexports.getVerbosityLevel = getVerbosityLevel;\nexports.info = info;\nexports.isArrayBuffer = isArrayBuffer;\nexports.isArrayEqual = isArrayEqual;\nexports.isBool = isBool;\nexports.isNum = isNum;\nexports.isString = isString;\nexports.isSameOrigin = isSameOrigin;\nexports.createValidAbsoluteUrl = createValidAbsoluteUrl;\nexports.removeNullCharacters = removeNullCharacters;\nexports.setVerbosityLevel = setVerbosityLevel;\nexports.shadow = shadow;\nexports.string32 = string32;\nexports.stringToBytes = stringToBytes;\nexports.stringToPDFString = stringToPDFString;\nexports.stringToUTF8String = stringToUTF8String;\nexports.utf8StringToString = utf8StringToString;\nexports.warn = warn;\nexports.unreachable = unreachable;\nexports.IsEvalSupportedCached = exports.IsLittleEndianCached = exports.createObjectURL = exports.FormatError = exports.Util = exports.UnknownErrorException = exports.UnexpectedResponseException = exports.TextRenderingMode = exports.StreamType = exports.PermissionFlag = exports.PasswordResponses = exports.PasswordException = exports.MissingPDFException = exports.InvalidPDFException = exports.AbortException = exports.CMapCompressionType = exports.ImageKind = exports.FontType = exports.AnnotationType = exports.AnnotationStateModelType = exports.AnnotationReviewState = exports.AnnotationReplyType = exports.AnnotationMarkedState = exports.AnnotationFlag = exports.AnnotationFieldFlag = exports.AnnotationBorderStyleType = exports.UNSUPPORTED_FEATURES = exports.VerbosityLevel = exports.OPS = exports.IDENTITY_MATRIX = exports.FONT_IDENTITY_MATRIX = exports.BaseException = void 0;\n\n__w_pdfjs_require__(3);\n\nconst IDENTITY_MATRIX = [1, 0, 0, 1, 0, 0];\nexports.IDENTITY_MATRIX = IDENTITY_MATRIX;\nconst FONT_IDENTITY_MATRIX = [0.001, 0, 0, 0.001, 0, 0];\nexports.FONT_IDENTITY_MATRIX = FONT_IDENTITY_MATRIX;\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};\nexports.PermissionFlag = PermissionFlag;\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};\nexports.TextRenderingMode = TextRenderingMode;\nconst ImageKind = {\n GRAYSCALE_1BPP: 1,\n RGB_24BPP: 2,\n RGBA_32BPP: 3\n};\nexports.ImageKind = ImageKind;\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};\nexports.AnnotationType = AnnotationType;\nconst AnnotationStateModelType = {\n MARKED: \"Marked\",\n REVIEW: \"Review\"\n};\nexports.AnnotationStateModelType = AnnotationStateModelType;\nconst AnnotationMarkedState = {\n MARKED: \"Marked\",\n UNMARKED: \"Unmarked\"\n};\nexports.AnnotationMarkedState = AnnotationMarkedState;\nconst AnnotationReviewState = {\n ACCEPTED: \"Accepted\",\n REJECTED: \"Rejected\",\n CANCELLED: \"Cancelled\",\n COMPLETED: \"Completed\",\n NONE: \"None\"\n};\nexports.AnnotationReviewState = AnnotationReviewState;\nconst AnnotationReplyType = {\n GROUP: \"Group\",\n REPLY: \"R\"\n};\nexports.AnnotationReplyType = AnnotationReplyType;\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};\nexports.AnnotationFlag = AnnotationFlag;\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};\nexports.AnnotationFieldFlag = AnnotationFieldFlag;\nconst AnnotationBorderStyleType = {\n SOLID: 1,\n DASHED: 2,\n BEVELED: 3,\n INSET: 4,\n UNDERLINE: 5\n};\nexports.AnnotationBorderStyleType = AnnotationBorderStyleType;\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\"\n};\nexports.StreamType = StreamType;\nconst FontType = {\n UNKNOWN: \"UNKNOWN\",\n TYPE1: \"TYPE1\",\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};\nexports.FontType = FontType;\nconst VerbosityLevel = {\n ERRORS: 0,\n WARNINGS: 1,\n INFOS: 5\n};\nexports.VerbosityLevel = VerbosityLevel;\nconst CMapCompressionType = {\n NONE: 0,\n BINARY: 1,\n STREAM: 2\n};\nexports.CMapCompressionType = CMapCompressionType;\nconst OPS = {\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 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};\nexports.OPS = OPS;\nconst UNSUPPORTED_FEATURES = {\n unknown: \"unknown\",\n forms: \"forms\",\n javaScript: \"javaScript\",\n smask: \"smask\",\n shadingPattern: \"shadingPattern\",\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 errorFontGetPath: \"errorFontGetPath\",\n errorMarkedContent: \"errorMarkedContent\"\n};\nexports.UNSUPPORTED_FEATURES = UNSUPPORTED_FEATURES;\nconst PasswordResponses = {\n NEED_PASSWORD: 1,\n INCORRECT_PASSWORD: 2\n};\nexports.PasswordResponses = PasswordResponses;\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\nfunction info(msg) {\n if (verbosity >= VerbosityLevel.INFOS) {\n console.log(`Info: ${msg}`);\n }\n}\n\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\nfunction isSameOrigin(baseUrl, otherUrl) {\n let base;\n\n try {\n base = new URL(baseUrl);\n\n if (!base.origin || base.origin === \"null\") {\n return false;\n }\n } catch (e) {\n return false;\n }\n\n const other = new URL(otherUrl, base);\n return base.origin === other.origin;\n}\n\nfunction _isValidProtocol(url) {\n if (!url) {\n return false;\n }\n\n switch (url.protocol) {\n case \"http:\":\n case \"https:\":\n case \"ftp:\":\n case \"mailto:\":\n case \"tel:\":\n return true;\n\n default:\n return false;\n }\n}\n\nfunction createValidAbsoluteUrl(url, baseUrl) {\n if (!url) {\n return null;\n }\n\n try {\n const absoluteUrl = baseUrl ? new URL(url, baseUrl) : new URL(url);\n\n if (_isValidProtocol(absoluteUrl)) {\n return absoluteUrl;\n }\n } catch (ex) {}\n\n return null;\n}\n\nfunction shadow(obj, prop, value) {\n Object.defineProperty(obj, prop, {\n value,\n enumerable: true,\n configurable: true,\n writable: false\n });\n return value;\n}\n\nconst BaseException = function BaseExceptionClosure() {\n function BaseException(message) {\n if (this.constructor === BaseException) {\n unreachable(\"Cannot initialize BaseException.\");\n }\n\n this.message = message;\n this.name = this.constructor.name;\n }\n\n BaseException.prototype = new Error();\n BaseException.constructor = BaseException;\n return BaseException;\n}();\n\nexports.BaseException = BaseException;\n\nclass PasswordException extends BaseException {\n constructor(msg, code) {\n super(msg);\n this.code = code;\n }\n\n}\n\nexports.PasswordException = PasswordException;\n\nclass UnknownErrorException extends BaseException {\n constructor(msg, details) {\n super(msg);\n this.details = details;\n }\n\n}\n\nexports.UnknownErrorException = UnknownErrorException;\n\nclass InvalidPDFException extends BaseException {}\n\nexports.InvalidPDFException = InvalidPDFException;\n\nclass MissingPDFException extends BaseException {}\n\nexports.MissingPDFException = MissingPDFException;\n\nclass UnexpectedResponseException extends BaseException {\n constructor(msg, status) {\n super(msg);\n this.status = status;\n }\n\n}\n\nexports.UnexpectedResponseException = UnexpectedResponseException;\n\nclass FormatError extends BaseException {}\n\nexports.FormatError = FormatError;\n\nclass AbortException extends BaseException {}\n\nexports.AbortException = AbortException;\nconst NullCharactersRegExp = /\\x00/g;\n\nfunction removeNullCharacters(str) {\n if (typeof str !== \"string\") {\n warn(\"The argument for removeNullCharacters must be a string.\");\n return str;\n }\n\n return str.replace(NullCharactersRegExp, \"\");\n}\n\nfunction bytesToString(bytes) {\n assert(bytes !== null && typeof bytes === \"object\" && bytes.length !== undefined, \"Invalid argument for bytesToString\");\n const length = bytes.length;\n const MAX_ARGUMENT_COUNT = 8192;\n\n if (length < MAX_ARGUMENT_COUNT) {\n return String.fromCharCode.apply(null, bytes);\n }\n\n const strBuf = [];\n\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\n return strBuf.join(\"\");\n}\n\nfunction stringToBytes(str) {\n assert(typeof str === \"string\", \"Invalid argument for stringToBytes\");\n const length = str.length;\n const bytes = new Uint8Array(length);\n\n for (let i = 0; i < length; ++i) {\n bytes[i] = str.charCodeAt(i) & 0xff;\n }\n\n return bytes;\n}\n\nfunction arrayByteLength(arr) {\n if (arr.length !== undefined) {\n return arr.length;\n }\n\n assert(arr.byteLength !== undefined, \"arrayByteLength - invalid argument.\");\n return arr.byteLength;\n}\n\nfunction arraysToBytes(arr) {\n const length = arr.length;\n\n if (length === 1 && arr[0] instanceof Uint8Array) {\n return arr[0];\n }\n\n let resultLength = 0;\n\n for (let i = 0; i < length; i++) {\n resultLength += arrayByteLength(arr[i]);\n }\n\n let pos = 0;\n const data = new Uint8Array(resultLength);\n\n for (let i = 0; i < length; i++) {\n let item = arr[i];\n\n if (!(item instanceof Uint8Array)) {\n if (typeof item === \"string\") {\n item = stringToBytes(item);\n } else {\n item = new Uint8Array(item);\n }\n }\n\n const itemLength = item.byteLength;\n data.set(item, pos);\n pos += itemLength;\n }\n\n return data;\n}\n\nfunction string32(value) {\n return String.fromCharCode(value >> 24 & 0xff, value >> 16 & 0xff, value >> 8 & 0xff, value & 0xff);\n}\n\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\nconst IsLittleEndianCached = {\n get value() {\n return shadow(this, \"value\", isLittleEndian());\n }\n\n};\nexports.IsLittleEndianCached = IsLittleEndianCached;\n\nfunction isEvalSupported() {\n try {\n new Function(\"\");\n return true;\n } catch (e) {\n return false;\n }\n}\n\nconst IsEvalSupportedCached = {\n get value() {\n return shadow(this, \"value\", isEvalSupported());\n }\n\n};\nexports.IsEvalSupportedCached = IsEvalSupportedCached;\nconst rgbBuf = [\"rgb(\", 0, \",\", 0, \",\", 0, \")\"];\n\nclass Util {\n static makeCssRgb(r, g, b) {\n rgbBuf[1] = r;\n rgbBuf[3] = g;\n rgbBuf[5] = b;\n return rgbBuf.join(\"\");\n }\n\n static transform(m1, m2) {\n 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]];\n }\n\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 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 [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])];\n }\n\n static inverseTransform(m) {\n const d = m[0] * m[3] - m[1] * m[2];\n 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];\n }\n\n static apply3dTransform(m, v) {\n 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]];\n }\n\n static singularValueDecompose2dScale(m) {\n const transpose = [m[0], m[2], m[1], m[3]];\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 const first = (a + d) / 2;\n const second = Math.sqrt((a + d) * (a + d) - 4 * (a * d - c * b)) / 2;\n const sx = first + second || 1;\n const sy = first - second || 1;\n return [Math.sqrt(sx), Math.sqrt(sy)];\n }\n\n static normalizeRect(rect) {\n const r = rect.slice(0);\n\n if (rect[0] > rect[2]) {\n r[0] = rect[2];\n r[2] = rect[0];\n }\n\n if (rect[1] > rect[3]) {\n r[1] = rect[3];\n r[3] = rect[1];\n }\n\n return r;\n }\n\n static intersect(rect1, rect2) {\n function compare(a, b) {\n return a - b;\n }\n\n const orderedX = [rect1[0], rect1[2], rect2[0], rect2[2]].sort(compare);\n const orderedY = [rect1[1], rect1[3], rect2[1], rect2[3]].sort(compare);\n const result = [];\n rect1 = Util.normalizeRect(rect1);\n rect2 = Util.normalizeRect(rect2);\n\n if (orderedX[0] === rect1[0] && orderedX[1] === rect2[0] || orderedX[0] === rect2[0] && orderedX[1] === rect1[0]) {\n result[0] = orderedX[1];\n result[2] = orderedX[2];\n } else {\n return null;\n }\n\n if (orderedY[0] === rect1[1] && orderedY[1] === rect2[1] || orderedY[0] === rect2[1] && orderedY[1] === rect1[1]) {\n result[1] = orderedY[1];\n result[3] = orderedY[2];\n } else {\n return null;\n }\n\n return result;\n }\n\n}\n\nexports.Util = Util;\nconst 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];\n\nfunction stringToPDFString(str) {\n const length = str.length,\n strBuf = [];\n\n if (str[0] === \"\\xFE\" && str[1] === \"\\xFF\") {\n for (let i = 2; i < length; i += 2) {\n strBuf.push(String.fromCharCode(str.charCodeAt(i) << 8 | str.charCodeAt(i + 1)));\n }\n } else if (str[0] === \"\\xFF\" && str[1] === \"\\xFE\") {\n for (let i = 2; i < length; i += 2) {\n strBuf.push(String.fromCharCode(str.charCodeAt(i + 1) << 8 | str.charCodeAt(i)));\n }\n } else {\n for (let i = 0; i < length; ++i) {\n const code = PDFStringTranslateTable[str.charCodeAt(i)];\n strBuf.push(code ? String.fromCharCode(code) : str.charAt(i));\n }\n }\n\n return strBuf.join(\"\");\n}\n\nfunction escapeString(str) {\n return str.replace(/([\\(\\)\\\\])/g, \"\\\\$1\");\n}\n\nfunction stringToUTF8String(str) {\n return decodeURIComponent(escape(str));\n}\n\nfunction utf8StringToString(str) {\n return unescape(encodeURIComponent(str));\n}\n\nfunction isBool(v) {\n return typeof v === \"boolean\";\n}\n\nfunction isNum(v) {\n return typeof v === \"number\";\n}\n\nfunction isString(v) {\n return typeof v === \"string\";\n}\n\nfunction isArrayBuffer(v) {\n return typeof v === \"object\" && v !== null && v.byteLength !== undefined;\n}\n\nfunction isArrayEqual(arr1, arr2) {\n if (arr1.length !== arr2.length) {\n return false;\n }\n\n return arr1.every(function (element, index) {\n return element === arr2[index];\n });\n}\n\nfunction getModificationDate(date = new Date(Date.now())) {\n const buffer = [date.getUTCFullYear().toString(), (date.getUTCMonth() + 1).toString().padStart(2, \"0\"), (date.getUTCDate() + 1).toString().padStart(2, \"0\"), date.getUTCHours().toString().padStart(2, \"0\"), date.getUTCMinutes().toString().padStart(2, \"0\"), date.getUTCSeconds().toString().padStart(2, \"0\")];\n return buffer.join(\"\");\n}\n\nfunction createPromiseCapability() {\n const capability = Object.create(null);\n let isSettled = false;\n Object.defineProperty(capability, \"settled\", {\n get() {\n return isSettled;\n }\n\n });\n capability.promise = new Promise(function (resolve, reject) {\n capability.resolve = function (data) {\n isSettled = true;\n resolve(data);\n };\n\n capability.reject = function (reason) {\n isSettled = true;\n reject(reason);\n };\n });\n return capability;\n}\n\nconst createObjectURL = function createObjectURLClosure() {\n const digits = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\n return function createObjectURL(data, contentType, forceDataSchema = false) {\n if (!forceDataSchema && URL.createObjectURL) {\n const blob = new Blob([data], {\n type: contentType\n });\n return URL.createObjectURL(blob);\n }\n\n let buffer = `data:${contentType};base64,`;\n\n for (let i = 0, ii = data.length; i < ii; i += 3) {\n const b1 = data[i] & 0xff;\n const b2 = data[i + 1] & 0xff;\n const b3 = data[i + 2] & 0xff;\n const d1 = b1 >> 2,\n d2 = (b1 & 3) << 4 | b2 >> 4;\n const d3 = i + 1 < ii ? (b2 & 0xf) << 2 | b3 >> 6 : 64;\n const d4 = i + 2 < ii ? b3 & 0x3f : 64;\n buffer += digits[d1] + digits[d2] + digits[d3] + digits[d4];\n }\n\n return buffer;\n };\n}();\n\nexports.createObjectURL = createObjectURL;\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar _is_node = __w_pdfjs_require__(4);\n\n;\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.isNodeJS = void 0;\nconst isNodeJS = typeof process === \"object\" && process + \"\" === \"[object process]\" && !process.versions.nw && !(process.versions.electron && process.type && process.type !== \"browser\");\nexports.isNodeJS = isNodeJS;\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getDocument = getDocument;\nexports.setPDFNetworkStreamFactory = setPDFNetworkStreamFactory;\nexports.build = exports.version = exports.PDFPageProxy = exports.PDFDocumentProxy = exports.PDFWorker = exports.PDFDataRangeTransport = exports.LoopbackPort = void 0;\n\nvar _util = __w_pdfjs_require__(2);\n\nvar _display_utils = __w_pdfjs_require__(1);\n\nvar _font_loader = __w_pdfjs_require__(6);\n\nvar _node_utils = __w_pdfjs_require__(7);\n\nvar _annotation_storage = __w_pdfjs_require__(8);\n\nvar _api_compatibility = __w_pdfjs_require__(9);\n\nvar _canvas = __w_pdfjs_require__(10);\n\nvar _worker_options = __w_pdfjs_require__(12);\n\nvar _is_node = __w_pdfjs_require__(4);\n\nvar _message_handler = __w_pdfjs_require__(13);\n\nvar _metadata = __w_pdfjs_require__(14);\n\nvar _optional_content_config = __w_pdfjs_require__(16);\n\nvar _transport_stream = __w_pdfjs_require__(17);\n\nvar _webgl = __w_pdfjs_require__(18);\n\nconst DEFAULT_RANGE_CHUNK_SIZE = 65536;\nconst RENDERING_CANCELLED_TIMEOUT = 100;\nconst DefaultCanvasFactory = _is_node.isNodeJS ? _node_utils.NodeCanvasFactory : _display_utils.DOMCanvasFactory;\nconst DefaultCMapReaderFactory = _is_node.isNodeJS ? _node_utils.NodeCMapReaderFactory : _display_utils.DOMCMapReaderFactory;\nlet createPDFNetworkStream;\n\nfunction setPDFNetworkStreamFactory(pdfNetworkStreamFactory) {\n createPDFNetworkStream = pdfNetworkStreamFactory;\n}\n\nfunction getDocument(src) {\n const task = new PDFDocumentLoadingTask();\n let source;\n\n if (typeof src === \"string\") {\n source = {\n url: src\n };\n } else if ((0, _util.isArrayBuffer)(src)) {\n source = {\n data: src\n };\n } else if (src instanceof PDFDataRangeTransport) {\n source = {\n range: src\n };\n } else {\n if (typeof src !== \"object\") {\n throw new Error(\"Invalid parameter in getDocument, \" + \"need either Uint8Array, string or a parameter object\");\n }\n\n if (!src.url && !src.data && !src.range) {\n throw new Error(\"Invalid parameter object: need either .data, .range or .url\");\n }\n\n source = src;\n }\n\n const params = Object.create(null);\n let rangeTransport = null,\n worker = null;\n\n for (const key in source) {\n if (key === \"url\" && typeof window !== \"undefined\") {\n params[key] = new URL(source[key], window.location).href;\n continue;\n } else if (key === \"range\") {\n rangeTransport = source[key];\n continue;\n } else if (key === \"worker\") {\n worker = source[key];\n continue;\n } else if (key === \"data\" && !(source[key] instanceof Uint8Array)) {\n const pdfBytes = source[key];\n\n if (typeof pdfBytes === \"string\") {\n params[key] = (0, _util.stringToBytes)(pdfBytes);\n } else if (typeof pdfBytes === \"object\" && pdfBytes !== null && !isNaN(pdfBytes.length)) {\n params[key] = new Uint8Array(pdfBytes);\n } else if ((0, _util.isArrayBuffer)(pdfBytes)) {\n params[key] = new Uint8Array(pdfBytes);\n } else {\n throw new Error(\"Invalid PDF binary data: either typed array, \" + \"string or array-like object is expected in the \" + \"data property.\");\n }\n\n continue;\n }\n\n params[key] = source[key];\n }\n\n params.rangeChunkSize = params.rangeChunkSize || DEFAULT_RANGE_CHUNK_SIZE;\n params.CMapReaderFactory = params.CMapReaderFactory || DefaultCMapReaderFactory;\n params.ignoreErrors = params.stopAtErrors !== true;\n params.fontExtraProperties = params.fontExtraProperties === true;\n params.pdfBug = params.pdfBug === true;\n\n if (!Number.isInteger(params.maxImageSize)) {\n params.maxImageSize = -1;\n }\n\n if (typeof params.isEvalSupported !== \"boolean\") {\n params.isEvalSupported = true;\n }\n\n if (typeof params.disableFontFace !== \"boolean\") {\n params.disableFontFace = _api_compatibility.apiCompatibilityParams.disableFontFace || false;\n }\n\n if (typeof params.ownerDocument === \"undefined\") {\n params.ownerDocument = globalThis.document;\n }\n\n if (typeof params.disableRange !== \"boolean\") {\n params.disableRange = false;\n }\n\n if (typeof params.disableStream !== \"boolean\") {\n params.disableStream = false;\n }\n\n if (typeof params.disableAutoFetch !== \"boolean\") {\n params.disableAutoFetch = false;\n }\n\n (0, _util.setVerbosityLevel)(params.verbosity);\n\n if (!worker) {\n const workerParams = {\n verbosity: params.verbosity,\n port: _worker_options.GlobalWorkerOptions.workerPort\n };\n worker = workerParams.port ? PDFWorker.fromPort(workerParams) : new PDFWorker(workerParams);\n task._worker = worker;\n }\n\n const docId = task.docId;\n worker.promise.then(function () {\n if (task.destroyed) {\n throw new Error(\"Loading aborted\");\n }\n\n const workerIdPromise = _fetchDocument(worker, params, rangeTransport, docId);\n\n const networkStreamPromise = new Promise(function (resolve) {\n let networkStream;\n\n if (rangeTransport) {\n networkStream = new _transport_stream.PDFDataTransportStream({\n length: params.length,\n initialData: params.initialData,\n progressiveDone: params.progressiveDone,\n disableRange: params.disableRange,\n disableStream: params.disableStream\n }, rangeTransport);\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\n resolve(networkStream);\n });\n return Promise.all([workerIdPromise, networkStreamPromise]).then(function ([workerId, networkStream]) {\n if (task.destroyed) {\n throw new Error(\"Loading aborted\");\n }\n\n const messageHandler = new _message_handler.MessageHandler(docId, workerId, worker.port);\n messageHandler.postMessageTransfers = worker.postMessageTransfers;\n const transport = new WorkerTransport(messageHandler, task, networkStream, params);\n task._transport = transport;\n messageHandler.send(\"Ready\", null);\n });\n }).catch(task._capability.reject);\n return task;\n}\n\nfunction _fetchDocument(worker, source, pdfDataRangeTransport, docId) {\n if (worker.destroyed) {\n return Promise.reject(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 }\n\n return worker.messageHandler.sendWithPromise(\"GetDocRequest\", {\n docId,\n apiVersion: '2.6.347',\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 postMessageTransfers: worker.postMessageTransfers,\n docBaseUrl: source.docBaseUrl,\n ignoreErrors: source.ignoreErrors,\n isEvalSupported: source.isEvalSupported,\n fontExtraProperties: source.fontExtraProperties\n }).then(function (workerId) {\n if (worker.destroyed) {\n throw new Error(\"Worker was destroyed\");\n }\n\n return workerId;\n });\n}\n\nconst PDFDocumentLoadingTask = function PDFDocumentLoadingTaskClosure() {\n let nextDocumentId = 0;\n\n class PDFDocumentLoadingTask {\n constructor() {\n this._capability = (0, _util.createPromiseCapability)();\n this._transport = null;\n this._worker = null;\n this.docId = \"d\" + nextDocumentId++;\n this.destroyed = false;\n this.onPassword = null;\n this.onProgress = null;\n this.onUnsupportedFeature = null;\n }\n\n get promise() {\n return this._capability.promise;\n }\n\n destroy() {\n this.destroyed = true;\n const transportDestroyed = !this._transport ? Promise.resolve() : this._transport.destroy();\n return transportDestroyed.then(() => {\n this._transport = null;\n\n if (this._worker) {\n this._worker.destroy();\n\n this._worker = null;\n }\n });\n }\n\n }\n\n return PDFDocumentLoadingTask;\n}();\n\nclass PDFDataRangeTransport {\n constructor(length, initialData, progressiveDone = false) {\n this.length = length;\n this.initialData = initialData;\n this.progressiveDone = progressiveDone;\n this._rangeListeners = [];\n this._progressListeners = [];\n this._progressiveReadListeners = [];\n this._progressiveDoneListeners = [];\n this._readyCapability = (0, _util.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 (0, _util.unreachable)(\"Abstract method PDFDataRangeTransport.requestDataRange\");\n }\n\n abort() {}\n\n}\n\nexports.PDFDataRangeTransport = PDFDataRangeTransport;\n\nclass PDFDocumentProxy {\n constructor(pdfInfo, transport) {\n this._pdfInfo = pdfInfo;\n this._transport = transport;\n }\n\n get annotationStorage() {\n return (0, _util.shadow)(this, \"annotationStorage\", new _annotation_storage.AnnotationStorage());\n }\n\n get numPages() {\n return this._pdfInfo.numPages;\n }\n\n get fingerprint() {\n return this._pdfInfo.fingerprint;\n }\n\n getPage(pageNumber) {\n return this._transport.getPage(pageNumber);\n }\n\n getPageIndex(ref) {\n return this._transport.getPageIndex(ref);\n }\n\n getDestinations() {\n return this._transport.getDestinations();\n }\n\n getDestination(id) {\n return this._transport.getDestination(id);\n }\n\n getPageLabels() {\n return this._transport.getPageLabels();\n }\n\n getPageLayout() {\n return this._transport.getPageLayout();\n }\n\n getPageMode() {\n return this._transport.getPageMode();\n }\n\n getViewerPreferences() {\n return this._transport.getViewerPreferences();\n }\n\n getOpenAction() {\n return this._transport.getOpenAction();\n }\n\n getAttachments() {\n return this._transport.getAttachments();\n }\n\n getJavaScript() {\n return this._transport.getJavaScript();\n }\n\n getOutline() {\n return this._transport.getOutline();\n }\n\n getOptionalContentConfig() {\n return this._transport.getOptionalContentConfig();\n }\n\n getPermissions() {\n return this._transport.getPermissions();\n }\n\n getMetadata() {\n return this._transport.getMetadata();\n }\n\n getData() {\n return this._transport.getData();\n }\n\n getDownloadInfo() {\n return this._transport.downloadInfoCapability.promise;\n }\n\n getStats() {\n return this._transport.getStats();\n }\n\n cleanup() {\n return this._transport.startCleanup();\n }\n\n destroy() {\n return this.loadingTask.destroy();\n }\n\n get loadingParams() {\n return this._transport.loadingParams;\n }\n\n get loadingTask() {\n return this._transport.loadingTask;\n }\n\n saveDocument(annotationStorage) {\n return this._transport.saveDocument(annotationStorage);\n }\n\n}\n\nexports.PDFDocumentProxy = PDFDocumentProxy;\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 _display_utils.StatTimer() : null;\n this._pdfBug = pdfBug;\n this.commonObjs = transport.commonObjs;\n this.objs = new PDFObjects();\n this.cleanupAfterRender = false;\n this.pendingCleanup = false;\n this._intentStates = new Map();\n this.destroyed = false;\n }\n\n get pageNumber() {\n return this._pageIndex + 1;\n }\n\n get rotate() {\n return this._pageInfo.rotate;\n }\n\n get ref() {\n return this._pageInfo.ref;\n }\n\n get userUnit() {\n return this._pageInfo.userUnit;\n }\n\n get view() {\n return this._pageInfo.view;\n }\n\n getViewport({\n scale,\n rotation = this.rotate,\n offsetX = 0,\n offsetY = 0,\n dontFlip = false\n } = {}) {\n return new _display_utils.PageViewport({\n viewBox: this.view,\n scale,\n rotation,\n offsetX,\n offsetY,\n dontFlip\n });\n }\n\n getAnnotations({\n intent = null\n } = {}) {\n if (!this.annotationsPromise || this.annotationsIntent !== intent) {\n this.annotationsPromise = this._transport.getAnnotations(this._pageIndex, intent);\n this.annotationsIntent = intent;\n }\n\n return this.annotationsPromise;\n }\n\n render({\n canvasContext,\n viewport,\n intent = \"display\",\n enableWebGL = false,\n renderInteractiveForms = false,\n transform = null,\n imageLayer = null,\n canvasFactory = null,\n background = null,\n annotationStorage = null,\n optionalContentConfigPromise = null\n }) {\n if (this._stats) {\n this._stats.time(\"Overall\");\n }\n\n const renderingIntent = intent === \"print\" ? \"print\" : \"display\";\n this.pendingCleanup = false;\n\n if (!optionalContentConfigPromise) {\n optionalContentConfigPromise = this._transport.getOptionalContentConfig();\n }\n\n let intentState = this._intentStates.get(renderingIntent);\n\n if (!intentState) {\n intentState = Object.create(null);\n\n this._intentStates.set(renderingIntent, intentState);\n }\n\n if (intentState.streamReaderCancelTimeout) {\n clearTimeout(intentState.streamReaderCancelTimeout);\n intentState.streamReaderCancelTimeout = null;\n }\n\n const canvasFactoryInstance = canvasFactory || new DefaultCanvasFactory({\n ownerDocument: this._ownerDocument\n });\n const webGLContext = new _webgl.WebGLContext({\n enable: enableWebGL\n });\n\n if (!intentState.displayReadyCapability) {\n intentState.displayReadyCapability = (0, _util.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\n this._pumpOperatorList({\n pageIndex: this._pageIndex,\n intent: renderingIntent,\n renderInteractiveForms: renderInteractiveForms === true,\n annotationStorage: annotationStorage && annotationStorage.getAll() || null\n });\n }\n\n const complete = error => {\n const i = intentState.renderTasks.indexOf(internalRenderTask);\n\n if (i >= 0) {\n intentState.renderTasks.splice(i, 1);\n }\n\n if (this.cleanupAfterRender || renderingIntent === \"print\") {\n this.pendingCleanup = true;\n }\n\n this._tryCleanup();\n\n if (error) {\n internalRenderTask.capability.reject(error);\n\n this._abortOperatorList({\n intentState,\n reason: error\n });\n } else {\n internalRenderTask.capability.resolve();\n }\n\n if (this._stats) {\n this._stats.timeEnd(\"Rendering\");\n\n this._stats.timeEnd(\"Overall\");\n }\n };\n\n const internalRenderTask = new InternalRenderTask({\n callback: complete,\n params: {\n canvasContext,\n viewport,\n transform,\n imageLayer,\n background\n },\n objs: this.objs,\n commonObjs: this.commonObjs,\n operatorList: intentState.operatorList,\n pageIndex: this._pageIndex,\n canvasFactory: canvasFactoryInstance,\n webGLContext,\n useRequestAnimationFrame: renderingIntent !== \"print\",\n pdfBug: this._pdfBug\n });\n\n if (!intentState.renderTasks) {\n intentState.renderTasks = [];\n }\n\n intentState.renderTasks.push(internalRenderTask);\n const renderTask = internalRenderTask.task;\n Promise.all([intentState.displayReadyCapability.promise, optionalContentConfigPromise]).then(([transparency, optionalContentConfig]) => {\n if (this.pendingCleanup) {\n complete();\n return;\n }\n\n if (this._stats) {\n this._stats.time(\"Rendering\");\n }\n\n internalRenderTask.initializeGraphics({\n transparency,\n optionalContentConfig\n });\n internalRenderTask.operatorListChanged();\n }).catch(complete);\n return renderTask;\n }\n\n getOperatorList() {\n function operatorListChanged() {\n if (intentState.operatorList.lastChunk) {\n intentState.opListReadCapability.resolve(intentState.operatorList);\n const i = intentState.renderTasks.indexOf(opListTask);\n\n if (i >= 0) {\n intentState.renderTasks.splice(i, 1);\n }\n }\n }\n\n const renderingIntent = \"oplist\";\n\n let intentState = this._intentStates.get(renderingIntent);\n\n if (!intentState) {\n intentState = Object.create(null);\n\n this._intentStates.set(renderingIntent, intentState);\n }\n\n let opListTask;\n\n if (!intentState.opListReadCapability) {\n opListTask = Object.create(null);\n opListTask.operatorListChanged = operatorListChanged;\n intentState.opListReadCapability = (0, _util.createPromiseCapability)();\n intentState.renderTasks = [];\n intentState.renderTasks.push(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\n this._pumpOperatorList({\n pageIndex: this._pageIndex,\n intent: renderingIntent\n });\n }\n\n return intentState.opListReadCapability.promise;\n }\n\n streamTextContent({\n normalizeWhitespace = false,\n disableCombineTextItems = false\n } = {}) {\n const TEXT_CONTENT_CHUNK_SIZE = 100;\n return this._transport.messageHandler.sendWithStream(\"GetTextContent\", {\n pageIndex: this._pageIndex,\n normalizeWhitespace: normalizeWhitespace === true,\n combineTextItems: disableCombineTextItems !== true\n }, {\n highWaterMark: TEXT_CONTENT_CHUNK_SIZE,\n\n size(textContent) {\n return textContent.items.length;\n }\n\n });\n }\n\n getTextContent(params = {}) {\n const readableStream = this.streamTextContent(params);\n return new Promise(function (resolve, reject) {\n function pump() {\n reader.read().then(function ({\n value,\n done\n }) {\n if (done) {\n resolve(textContent);\n return;\n }\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 _destroy() {\n this.destroyed = true;\n this._transport.pageCache[this._pageIndex] = null;\n const waitOn = [];\n\n for (const [intent, intentState] of this._intentStates) {\n this._abortOperatorList({\n intentState,\n reason: new Error(\"Page was destroyed.\"),\n force: true\n });\n\n if (intent === \"oplist\") {\n continue;\n }\n\n for (const internalRenderTask of intentState.renderTasks) {\n waitOn.push(internalRenderTask.completed);\n internalRenderTask.cancel();\n }\n }\n\n this.objs.clear();\n this.annotationsPromise = null;\n this.pendingCleanup = false;\n return Promise.all(waitOn);\n }\n\n cleanup(resetStats = false) {\n this.pendingCleanup = true;\n return this._tryCleanup(resetStats);\n }\n\n _tryCleanup(resetStats = false) {\n if (!this.pendingCleanup) {\n return false;\n }\n\n for (const {\n renderTasks,\n operatorList\n } of this._intentStates.values()) {\n if (renderTasks.length !== 0 || !operatorList.lastChunk) {\n return false;\n }\n }\n\n this._intentStates.clear();\n\n this.objs.clear();\n this.annotationsPromise = null;\n\n if (resetStats && this._stats) {\n this._stats = new _display_utils.StatTimer();\n }\n\n this.pendingCleanup = false;\n return true;\n }\n\n _startRenderPage(transparency, intent) {\n const intentState = this._intentStates.get(intent);\n\n if (!intentState) {\n return;\n }\n\n if (this._stats) {\n this._stats.timeEnd(\"Page Request\");\n }\n\n if (intentState.displayReadyCapability) {\n intentState.displayReadyCapability.resolve(transparency);\n }\n }\n\n _renderPageChunk(operatorListChunk, intentState) {\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\n intentState.operatorList.lastChunk = operatorListChunk.lastChunk;\n\n for (let i = 0; i < intentState.renderTasks.length; i++) {\n intentState.renderTasks[i].operatorListChanged();\n }\n\n if (operatorListChunk.lastChunk) {\n this._tryCleanup();\n }\n }\n\n _pumpOperatorList(args) {\n (0, _util.assert)(args.intent, 'PDFPageProxy._pumpOperatorList: Expected \"intent\" argument.');\n\n const readableStream = this._transport.messageHandler.sendWithStream(\"GetOperatorList\", args);\n\n const reader = readableStream.getReader();\n\n const intentState = this._intentStates.get(args.intent);\n\n intentState.streamReader = reader;\n\n const pump = () => {\n reader.read().then(({\n value,\n done\n }) => {\n if (done) {\n intentState.streamReader = null;\n return;\n }\n\n if (this._transport.destroyed) {\n return;\n }\n\n this._renderPageChunk(value, intentState);\n\n pump();\n }, reason => {\n intentState.streamReader = null;\n\n if (this._transport.destroyed) {\n return;\n }\n\n if (intentState.operatorList) {\n intentState.operatorList.lastChunk = true;\n\n for (let i = 0; i < intentState.renderTasks.length; i++) {\n intentState.renderTasks[i].operatorListChanged();\n }\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 _abortOperatorList({\n intentState,\n reason,\n force = false\n }) {\n (0, _util.assert)(reason instanceof Error || typeof reason === \"object\" && reason !== null, 'PDFPageProxy._abortOperatorList: Expected \"reason\" argument.');\n\n if (!intentState.streamReader) {\n return;\n }\n\n if (!force) {\n if (intentState.renderTasks.length !== 0) {\n return;\n }\n\n if (reason instanceof _display_utils.RenderingCancelledException) {\n intentState.streamReaderCancelTimeout = setTimeout(() => {\n this._abortOperatorList({\n intentState,\n reason,\n force: true\n });\n\n intentState.streamReaderCancelTimeout = null;\n }, RENDERING_CANCELLED_TIMEOUT);\n return;\n }\n }\n\n intentState.streamReader.cancel(new _util.AbortException(reason && reason.message));\n intentState.streamReader = null;\n\n if (this._transport.destroyed) {\n return;\n }\n\n for (const [intent, curIntentState] of this._intentStates) {\n if (curIntentState === intentState) {\n this._intentStates.delete(intent);\n\n break;\n }\n }\n\n this.cleanup();\n }\n\n get stats() {\n return this._stats;\n }\n\n}\n\nexports.PDFPageProxy = PDFPageProxy;\n\nclass LoopbackPort {\n constructor(defer = true) {\n this._listeners = [];\n this._defer = defer;\n this._deferred = Promise.resolve(undefined);\n }\n\n postMessage(obj, transfers) {\n function cloneValue(value) {\n if (typeof value !== \"object\" || value === null) {\n return value;\n }\n\n if (cloned.has(value)) {\n return cloned.get(value);\n }\n\n let buffer, result;\n\n if ((buffer = value.buffer) && (0, _util.isArrayBuffer)(buffer)) {\n const transferable = transfers && transfers.includes(buffer);\n\n if (transferable) {\n result = new value.constructor(buffer, value.byteOffset, value.byteLength);\n } else {\n result = new value.constructor(value);\n }\n\n cloned.set(value, result);\n return result;\n }\n\n result = Array.isArray(value) ? [] : {};\n cloned.set(value, result);\n\n for (const i in value) {\n let desc,\n p = value;\n\n while (!(desc = Object.getOwnPropertyDescriptor(p, i))) {\n p = Object.getPrototypeOf(p);\n }\n\n if (typeof desc.value === \"undefined\") {\n continue;\n }\n\n if (typeof desc.value === \"function\") {\n if (value.hasOwnProperty && value.hasOwnProperty(i)) {\n throw new Error(`LoopbackPort.postMessage - cannot clone: ${value[i]}`);\n }\n\n continue;\n }\n\n result[i] = cloneValue(desc.value);\n }\n\n return result;\n }\n\n if (!this._defer) {\n this._listeners.forEach(listener => {\n listener.call(this, {\n data: obj\n });\n });\n\n return;\n }\n\n const cloned = new WeakMap();\n const e = {\n data: cloneValue(obj)\n };\n\n this._deferred.then(() => {\n this._listeners.forEach(listener => {\n listener.call(this, e);\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\n this._listeners.splice(i, 1);\n }\n\n terminate() {\n this._listeners.length = 0;\n }\n\n}\n\nexports.LoopbackPort = LoopbackPort;\n\nconst PDFWorker = function PDFWorkerClosure() {\n const pdfWorkerPorts = new WeakMap();\n let isWorkerDisabled = false;\n let fallbackWorkerSrc;\n let nextFakeWorkerId = 0;\n let fakeWorkerCapability;\n\n if (_is_node.isNodeJS && typeof require === \"function\") {\n isWorkerDisabled = true;\n fallbackWorkerSrc = \"./pdf.worker.js\";\n } else if (typeof document === \"object\" && \"currentScript\" in document) {\n const pdfjsFilePath = document.currentScript && document.currentScript.src;\n\n if (pdfjsFilePath) {\n fallbackWorkerSrc = pdfjsFilePath.replace(/(\\.(?:min\\.)?js)(\\?.*)?$/i, \".worker$1$2\");\n }\n }\n\n function getWorkerSrc() {\n if (_worker_options.GlobalWorkerOptions.workerSrc) {\n return _worker_options.GlobalWorkerOptions.workerSrc;\n }\n\n if (typeof fallbackWorkerSrc !== \"undefined\") {\n if (!_is_node.isNodeJS) {\n (0, _display_utils.deprecated)('No \"GlobalWorkerOptions.workerSrc\" specified.');\n }\n\n return fallbackWorkerSrc;\n }\n\n throw new Error('No \"GlobalWorkerOptions.workerSrc\" specified.');\n }\n\n function getMainThreadWorkerMessageHandler() {\n let mainWorkerMessageHandler;\n\n try {\n mainWorkerMessageHandler = globalThis.pdfjsWorker && globalThis.pdfjsWorker.WorkerMessageHandler;\n } catch (ex) {}\n\n return mainWorkerMessageHandler || null;\n }\n\n function setupFakeWorkerGlobal() {\n if (fakeWorkerCapability) {\n return fakeWorkerCapability.promise;\n }\n\n fakeWorkerCapability = (0, _util.createPromiseCapability)();\n\n const loader = async function () {\n const mainWorkerMessageHandler = getMainThreadWorkerMessageHandler();\n\n if (mainWorkerMessageHandler) {\n return mainWorkerMessageHandler;\n }\n\n if (_is_node.isNodeJS && typeof require === \"function\") {\n const worker = eval(\"require\")(getWorkerSrc());\n return worker.WorkerMessageHandler;\n }\n\n await (0, _display_utils.loadScript)(getWorkerSrc());\n return window.pdfjsWorker.WorkerMessageHandler;\n };\n\n loader().then(fakeWorkerCapability.resolve, fakeWorkerCapability.reject);\n return fakeWorkerCapability.promise;\n }\n\n function createCDNWrapper(url) {\n const wrapper = \"importScripts('\" + url + \"');\";\n return URL.createObjectURL(new Blob([wrapper]));\n }\n\n class PDFWorker {\n constructor({\n name = null,\n port = null,\n verbosity = (0, _util.getVerbosityLevel)()\n } = {}) {\n if (port && pdfWorkerPorts.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.postMessageTransfers = true;\n this.verbosity = verbosity;\n this._readyCapability = (0, _util.createPromiseCapability)();\n this._port = null;\n this._webWorker = null;\n this._messageHandler = null;\n\n if (port) {\n pdfWorkerPorts.set(port, this);\n\n this._initializeFromPort(port);\n\n return;\n }\n\n this._initialize();\n }\n\n get promise() {\n return this._readyCapability.promise;\n }\n\n get port() {\n return this._port;\n }\n\n get messageHandler() {\n return this._messageHandler;\n }\n\n _initializeFromPort(port) {\n this._port = port;\n this._messageHandler = new _message_handler.MessageHandler(\"main\", \"worker\", port);\n\n this._messageHandler.on(\"ready\", function () {});\n\n this._readyCapability.resolve();\n }\n\n _initialize() {\n if (typeof Worker !== \"undefined\" && !isWorkerDisabled && !getMainThreadWorkerMessageHandler()) {\n let workerSrc = getWorkerSrc();\n\n try {\n if (!(0, _util.isSameOrigin)(window.location.href, workerSrc)) {\n workerSrc = createCDNWrapper(new URL(workerSrc, window.location).href);\n }\n\n const worker = new Worker(workerSrc);\n const messageHandler = new _message_handler.MessageHandler(\"main\", \"worker\", worker);\n\n const terminateEarly = () => {\n worker.removeEventListener(\"error\", onWorkerError);\n messageHandler.destroy();\n worker.terminate();\n\n if (this.destroyed) {\n this._readyCapability.reject(new Error(\"Worker was destroyed\"));\n } else {\n this._setupFakeWorker();\n }\n };\n\n const onWorkerError = () => {\n if (!this._webWorker) {\n terminateEarly();\n }\n };\n\n worker.addEventListener(\"error\", onWorkerError);\n messageHandler.on(\"test\", data => {\n worker.removeEventListener(\"error\", onWorkerError);\n\n if (this.destroyed) {\n terminateEarly();\n return;\n }\n\n if (data) {\n this._messageHandler = messageHandler;\n this._port = worker;\n this._webWorker = worker;\n\n if (!data.supportTransfers) {\n this.postMessageTransfers = false;\n }\n\n this._readyCapability.resolve();\n\n messageHandler.send(\"configure\", {\n verbosity: this.verbosity\n });\n } else {\n this._setupFakeWorker();\n\n messageHandler.destroy();\n worker.terminate();\n }\n });\n messageHandler.on(\"ready\", data => {\n worker.removeEventListener(\"error\", onWorkerError);\n\n if (this.destroyed) {\n terminateEarly();\n return;\n }\n\n try {\n sendTest();\n } catch (e) {\n this._setupFakeWorker();\n }\n });\n\n const sendTest = () => {\n const testObj = new Uint8Array([this.postMessageTransfers ? 255 : 0]);\n\n try {\n messageHandler.send(\"test\", testObj, [testObj.buffer]);\n } catch (ex) {\n (0, _util.warn)(\"Cannot use postMessage transfers.\");\n testObj[0] = 0;\n messageHandler.send(\"test\", testObj);\n }\n };\n\n sendTest();\n return;\n } catch (e) {\n (0, _util.info)(\"The worker has been disabled.\");\n }\n }\n\n this._setupFakeWorker();\n }\n\n _setupFakeWorker() {\n if (!isWorkerDisabled) {\n (0, _util.warn)(\"Setting up fake worker.\");\n isWorkerDisabled = true;\n }\n\n setupFakeWorkerGlobal().then(WorkerMessageHandler => {\n if (this.destroyed) {\n this._readyCapability.reject(new Error(\"Worker was destroyed\"));\n\n return;\n }\n\n const port = new LoopbackPort();\n this._port = port;\n const id = \"fake\" + nextFakeWorkerId++;\n const workerHandler = new _message_handler.MessageHandler(id + \"_worker\", id, port);\n WorkerMessageHandler.setup(workerHandler, port);\n const messageHandler = new _message_handler.MessageHandler(id, id + \"_worker\", port);\n this._messageHandler = messageHandler;\n\n this._readyCapability.resolve();\n\n messageHandler.send(\"configure\", {\n verbosity: this.verbosity\n });\n }).catch(reason => {\n this._readyCapability.reject(new Error(`Setting up fake worker failed: \"${reason.message}\".`));\n });\n }\n\n destroy() {\n this.destroyed = true;\n\n if (this._webWorker) {\n this._webWorker.terminate();\n\n this._webWorker = null;\n }\n\n pdfWorkerPorts.delete(this._port);\n this._port = null;\n\n if (this._messageHandler) {\n this._messageHandler.destroy();\n\n this._messageHandler = null;\n }\n }\n\n static fromPort(params) {\n if (!params || !params.port) {\n throw new Error(\"PDFWorker.fromPort - invalid method signature.\");\n }\n\n if (pdfWorkerPorts.has(params.port)) {\n return pdfWorkerPorts.get(params.port);\n }\n\n return new PDFWorker(params);\n }\n\n static getWorkerSrc() {\n return getWorkerSrc();\n }\n\n }\n\n return PDFWorker;\n}();\n\nexports.PDFWorker = PDFWorker;\n\nclass WorkerTransport {\n constructor(messageHandler, loadingTask, networkStream, params) {\n this.messageHandler = messageHandler;\n this.loadingTask = loadingTask;\n this.commonObjs = new PDFObjects();\n this.fontLoader = new _font_loader.FontLoader({\n docId: loadingTask.docId,\n onUnsupportedFeature: this._onUnsupportedFeature.bind(this),\n ownerDocument: params.ownerDocument\n });\n this._params = params;\n this.CMapReaderFactory = new params.CMapReaderFactory({\n baseUrl: params.cMapUrl,\n isCompressed: params.cMapPacked\n });\n this.destroyed = false;\n this.destroyCapability = null;\n this._passwordCapability = null;\n this._networkStream = networkStream;\n this._fullReader = null;\n this._lastProgress = null;\n this.pageCache = [];\n this.pagePromises = [];\n this.downloadInfoCapability = (0, _util.createPromiseCapability)();\n this.setupMessageHandler();\n }\n\n destroy() {\n if (this.destroyCapability) {\n return this.destroyCapability.promise;\n }\n\n this.destroyed = true;\n this.destroyCapability = (0, _util.createPromiseCapability)();\n\n if (this._passwordCapability) {\n this._passwordCapability.reject(new Error(\"Worker was destroyed during onPassword callback\"));\n }\n\n const waitOn = [];\n this.pageCache.forEach(function (page) {\n if (page) {\n waitOn.push(page._destroy());\n }\n });\n this.pageCache.length = 0;\n this.pagePromises.length = 0;\n const terminated = this.messageHandler.sendWithPromise(\"Terminate\", null);\n waitOn.push(terminated);\n Promise.all(waitOn).then(() => {\n this.fontLoader.clear();\n\n if (this._networkStream) {\n this._networkStream.cancelAllRequests(new _util.AbortException(\"Worker was terminated.\"));\n }\n\n if (this.messageHandler) {\n this.messageHandler.destroy();\n this.messageHandler = null;\n }\n\n this.destroyCapability.resolve();\n }, this.destroyCapability.reject);\n return this.destroyCapability.promise;\n }\n\n setupMessageHandler() {\n const {\n messageHandler,\n loadingTask\n } = this;\n messageHandler.on(\"GetReader\", (data, sink) => {\n (0, _util.assert)(this._networkStream, \"GetReader - no `IPDFStream` instance available.\");\n this._fullReader = this._networkStream.getFullReader();\n\n this._fullReader.onProgress = evt => {\n this._lastProgress = {\n loaded: evt.loaded,\n total: evt.total\n };\n };\n\n sink.onPull = () => {\n this._fullReader.read().then(function ({\n value,\n done\n }) {\n if (done) {\n sink.close();\n return;\n }\n\n (0, _util.assert)((0, _util.isArrayBuffer)(value), \"GetReader - expected an ArrayBuffer.\");\n sink.enqueue(new Uint8Array(value), 1, [value]);\n }).catch(reason => {\n sink.error(reason);\n });\n };\n\n sink.onCancel = reason => {\n this._fullReader.cancel(reason);\n\n sink.ready.catch(readyReason => {\n if (this.destroyed) {\n return;\n }\n\n throw readyReason;\n });\n };\n });\n messageHandler.on(\"ReaderHeadersReady\", data => {\n const headersCapability = (0, _util.createPromiseCapability)();\n const fullReader = this._fullReader;\n fullReader.headersReady.then(() => {\n if (!fullReader.isStreamingSupported || !fullReader.isRangeSupported) {\n if (this._lastProgress && loadingTask.onProgress) {\n loadingTask.onProgress(this._lastProgress);\n }\n\n fullReader.onProgress = evt => {\n if (loadingTask.onProgress) {\n loadingTask.onProgress({\n loaded: evt.loaded,\n total: evt.total\n });\n }\n };\n }\n\n headersCapability.resolve({\n isStreamingSupported: fullReader.isStreamingSupported,\n isRangeSupported: fullReader.isRangeSupported,\n contentLength: fullReader.contentLength\n });\n }, headersCapability.reject);\n return headersCapability.promise;\n });\n messageHandler.on(\"GetRangeReader\", (data, sink) => {\n (0, _util.assert)(this._networkStream, \"GetRangeReader - no `IPDFStream` instance available.\");\n\n const rangeReader = this._networkStream.getRangeReader(data.begin, data.end);\n\n if (!rangeReader) {\n sink.close();\n return;\n }\n\n sink.onPull = () => {\n rangeReader.read().then(function ({\n value,\n done\n }) {\n if (done) {\n sink.close();\n return;\n }\n\n (0, _util.assert)((0, _util.isArrayBuffer)(value), \"GetRangeReader - expected an ArrayBuffer.\");\n sink.enqueue(new Uint8Array(value), 1, [value]);\n }).catch(reason => {\n sink.error(reason);\n });\n };\n\n sink.onCancel = reason => {\n rangeReader.cancel(reason);\n sink.ready.catch(readyReason => {\n if (this.destroyed) {\n return;\n }\n\n throw readyReason;\n });\n };\n });\n messageHandler.on(\"GetDoc\", ({\n pdfInfo\n }) => {\n this._numPages = pdfInfo.numPages;\n\n loadingTask._capability.resolve(new PDFDocumentProxy(pdfInfo, this));\n });\n messageHandler.on(\"DocException\", function (ex) {\n let reason;\n\n switch (ex.name) {\n case \"PasswordException\":\n reason = new _util.PasswordException(ex.message, ex.code);\n break;\n\n case \"InvalidPDFException\":\n reason = new _util.InvalidPDFException(ex.message);\n break;\n\n case \"MissingPDFException\":\n reason = new _util.MissingPDFException(ex.message);\n break;\n\n case \"UnexpectedResponseException\":\n reason = new _util.UnexpectedResponseException(ex.message, ex.status);\n break;\n\n case \"UnknownErrorException\":\n reason = new _util.UnknownErrorException(ex.message, ex.details);\n break;\n }\n\n if (!(reason instanceof Error)) {\n const msg = \"DocException - expected a valid Error.\";\n (0, _util.warn)(msg);\n }\n\n loadingTask._capability.reject(reason);\n });\n messageHandler.on(\"PasswordRequest\", exception => {\n this._passwordCapability = (0, _util.createPromiseCapability)();\n\n if (loadingTask.onPassword) {\n const updatePassword = password => {\n this._passwordCapability.resolve({\n password\n });\n };\n\n try {\n loadingTask.onPassword(updatePassword, exception.code);\n } catch (ex) {\n this._passwordCapability.reject(ex);\n }\n } else {\n this._passwordCapability.reject(new _util.PasswordException(exception.message, exception.code));\n }\n\n return this._passwordCapability.promise;\n });\n messageHandler.on(\"DataLoaded\", data => {\n if (loadingTask.onProgress) {\n loadingTask.onProgress({\n loaded: data.length,\n total: data.length\n });\n }\n\n this.downloadInfoCapability.resolve(data);\n });\n messageHandler.on(\"StartRenderPage\", data => {\n if (this.destroyed) {\n return;\n }\n\n const page = this.pageCache[data.pageIndex];\n\n page._startRenderPage(data.transparency, data.intent);\n });\n messageHandler.on(\"commonobj\", data => {\n if (this.destroyed) {\n return;\n }\n\n const [id, type, exportedData] = data;\n\n if (this.commonObjs.has(id)) {\n return;\n }\n\n switch (type) {\n case \"Font\":\n const params = this._params;\n\n if (\"error\" in exportedData) {\n const exportedError = exportedData.error;\n (0, _util.warn)(`Error during font loading: ${exportedError}`);\n this.commonObjs.resolve(id, exportedError);\n break;\n }\n\n let fontRegistry = null;\n\n if (params.pdfBug && globalThis.FontInspector && globalThis.FontInspector.enabled) {\n fontRegistry = {\n registerFont(font, url) {\n globalThis.FontInspector.fontAdded(font, url);\n }\n\n };\n }\n\n const font = new _font_loader.FontFaceObject(exportedData, {\n isEvalSupported: params.isEvalSupported,\n disableFontFace: params.disableFontFace,\n ignoreErrors: params.ignoreErrors,\n onUnsupportedFeature: this._onUnsupportedFeature.bind(this),\n fontRegistry\n });\n this.fontLoader.bind(font).catch(reason => {\n return messageHandler.sendWithPromise(\"FontFallback\", {\n id\n });\n }).finally(() => {\n if (!params.fontExtraProperties && font.data) {\n font.data = null;\n }\n\n this.commonObjs.resolve(id, font);\n });\n break;\n\n case \"FontPath\":\n case \"Image\":\n this.commonObjs.resolve(id, exportedData);\n break;\n\n default:\n throw new Error(`Got unknown common object type ${type}`);\n }\n });\n messageHandler.on(\"obj\", data => {\n if (this.destroyed) {\n return undefined;\n }\n\n const [id, pageIndex, type, imageData] = data;\n const pageProxy = this.pageCache[pageIndex];\n\n if (pageProxy.objs.has(id)) {\n return undefined;\n }\n\n switch (type) {\n case \"Image\":\n pageProxy.objs.resolve(id, imageData);\n const MAX_IMAGE_SIZE_TO_STORE = 8000000;\n\n if (imageData && \"data\" in imageData && imageData.data.length > MAX_IMAGE_SIZE_TO_STORE) {\n pageProxy.cleanupAfterRender = true;\n }\n\n break;\n\n default:\n throw new Error(`Got unknown object type ${type}`);\n }\n\n return undefined;\n });\n messageHandler.on(\"DocProgress\", data => {\n if (this.destroyed) {\n return;\n }\n\n if (loadingTask.onProgress) {\n loadingTask.onProgress({\n loaded: data.loaded,\n total: data.total\n });\n }\n });\n messageHandler.on(\"UnsupportedFeature\", this._onUnsupportedFeature.bind(this));\n messageHandler.on(\"FetchBuiltInCMap\", (data, sink) => {\n if (this.destroyed) {\n sink.error(new Error(\"Worker was destroyed\"));\n return;\n }\n\n let fetched = false;\n\n sink.onPull = () => {\n if (fetched) {\n sink.close();\n return;\n }\n\n fetched = true;\n this.CMapReaderFactory.fetch(data).then(function (builtInCMap) {\n sink.enqueue(builtInCMap, 1, [builtInCMap.cMapData.buffer]);\n }).catch(function (reason) {\n sink.error(reason);\n });\n };\n });\n }\n\n _onUnsupportedFeature({\n featureId\n }) {\n if (this.destroyed) {\n return;\n }\n\n if (this.loadingTask.onUnsupportedFeature) {\n this.loadingTask.onUnsupportedFeature(featureId);\n }\n }\n\n getData() {\n return this.messageHandler.sendWithPromise(\"GetData\", null);\n }\n\n getPage(pageNumber) {\n if (!Number.isInteger(pageNumber) || pageNumber <= 0 || pageNumber > this._numPages) {\n return Promise.reject(new Error(\"Invalid page request\"));\n }\n\n const pageIndex = pageNumber - 1;\n\n if (pageIndex in this.pagePromises) {\n return this.pagePromises[pageIndex];\n }\n\n const promise = this.messageHandler.sendWithPromise(\"GetPage\", {\n pageIndex\n }).then(pageInfo => {\n if (this.destroyed) {\n throw new Error(\"Transport destroyed\");\n }\n\n const page = new PDFPageProxy(pageIndex, pageInfo, this, this._params.ownerDocument, this._params.pdfBug);\n this.pageCache[pageIndex] = page;\n return page;\n });\n this.pagePromises[pageIndex] = promise;\n return promise;\n }\n\n getPageIndex(ref) {\n return this.messageHandler.sendWithPromise(\"GetPageIndex\", {\n ref\n }).catch(function (reason) {\n return Promise.reject(new Error(reason));\n });\n }\n\n getAnnotations(pageIndex, intent) {\n return this.messageHandler.sendWithPromise(\"GetAnnotations\", {\n pageIndex,\n intent\n });\n }\n\n saveDocument(annotationStorage) {\n return this.messageHandler.sendWithPromise(\"SaveDocument\", {\n numPages: this._numPages,\n annotationStorage: annotationStorage && annotationStorage.getAll() || null,\n filename: this._fullReader ? this._fullReader.filename : null\n }).finally(() => {\n if (annotationStorage) {\n annotationStorage.resetModified();\n }\n });\n }\n\n getDestinations() {\n return this.messageHandler.sendWithPromise(\"GetDestinations\", null);\n }\n\n getDestination(id) {\n if (typeof id !== \"string\") {\n return Promise.reject(new Error(\"Invalid destination request.\"));\n }\n\n return this.messageHandler.sendWithPromise(\"GetDestination\", {\n id\n });\n }\n\n getPageLabels() {\n return this.messageHandler.sendWithPromise(\"GetPageLabels\", null);\n }\n\n getPageLayout() {\n return this.messageHandler.sendWithPromise(\"GetPageLayout\", null);\n }\n\n getPageMode() {\n return this.messageHandler.sendWithPromise(\"GetPageMode\", null);\n }\n\n getViewerPreferences() {\n return this.messageHandler.sendWithPromise(\"GetViewerPreferences\", null);\n }\n\n getOpenAction() {\n return this.messageHandler.sendWithPromise(\"GetOpenAction\", null);\n }\n\n getAttachments() {\n return this.messageHandler.sendWithPromise(\"GetAttachments\", null);\n }\n\n getJavaScript() {\n return this.messageHandler.sendWithPromise(\"GetJavaScript\", null);\n }\n\n getOutline() {\n return this.messageHandler.sendWithPromise(\"GetOutline\", null);\n }\n\n getOptionalContentConfig() {\n return this.messageHandler.sendWithPromise(\"GetOptionalContentConfig\", null).then(results => {\n return new _optional_content_config.OptionalContentConfig(results);\n });\n }\n\n getPermissions() {\n return this.messageHandler.sendWithPromise(\"GetPermissions\", null);\n }\n\n getMetadata() {\n return this.messageHandler.sendWithPromise(\"GetMetadata\", null).then(results => {\n return {\n info: results[0],\n metadata: results[1] ? new _metadata.Metadata(results[1]) : null,\n contentDispositionFilename: this._fullReader ? this._fullReader.filename : null\n };\n });\n }\n\n getStats() {\n return this.messageHandler.sendWithPromise(\"GetStats\", null);\n }\n\n startCleanup() {\n return this.messageHandler.sendWithPromise(\"Cleanup\", null).then(() => {\n for (let i = 0, ii = this.pageCache.length; i < ii; i++) {\n const page = this.pageCache[i];\n\n if (page) {\n const cleanupSuccessful = page.cleanup();\n\n if (!cleanupSuccessful) {\n throw new Error(`startCleanup: Page ${i + 1} is currently rendering.`);\n }\n }\n }\n\n this.commonObjs.clear();\n this.fontLoader.clear();\n });\n }\n\n get loadingParams() {\n const params = this._params;\n return (0, _util.shadow)(this, \"loadingParams\", {\n disableAutoFetch: params.disableAutoFetch,\n disableFontFace: params.disableFontFace\n });\n }\n\n}\n\nclass PDFObjects {\n constructor() {\n this._objs = Object.create(null);\n }\n\n _ensureObj(objId) {\n if (this._objs[objId]) {\n return this._objs[objId];\n }\n\n return this._objs[objId] = {\n capability: (0, _util.createPromiseCapability)(),\n data: null,\n resolved: false\n };\n }\n\n get(objId, callback = null) {\n if (callback) {\n this._ensureObj(objId).capability.promise.then(callback);\n\n return null;\n }\n\n const obj = this._objs[objId];\n\n if (!obj || !obj.resolved) {\n throw new Error(`Requesting object that isn't resolved yet ${objId}.`);\n }\n\n return obj.data;\n }\n\n has(objId) {\n const obj = this._objs[objId];\n return obj ? obj.resolved : false;\n }\n\n resolve(objId, data) {\n const obj = this._ensureObj(objId);\n\n obj.resolved = true;\n obj.data = data;\n obj.capability.resolve(data);\n }\n\n clear() {\n this._objs = Object.create(null);\n }\n\n}\n\nclass RenderTask {\n constructor(internalRenderTask) {\n this._internalRenderTask = internalRenderTask;\n this.onContinue = null;\n }\n\n get promise() {\n return this._internalRenderTask.capability.promise;\n }\n\n cancel() {\n this._internalRenderTask.cancel();\n }\n\n}\n\nconst InternalRenderTask = function InternalRenderTaskClosure() {\n const canvasInRendering = new WeakSet();\n\n class InternalRenderTask {\n constructor({\n callback,\n params,\n objs,\n commonObjs,\n operatorList,\n pageIndex,\n canvasFactory,\n webGLContext,\n useRequestAnimationFrame = false,\n pdfBug = false\n }) {\n this.callback = callback;\n this.params = params;\n this.objs = objs;\n this.commonObjs = commonObjs;\n this.operatorListIdx = null;\n this.operatorList = operatorList;\n this._pageIndex = pageIndex;\n this.canvasFactory = canvasFactory;\n this.webGLContext = webGLContext;\n this._pdfBug = pdfBug;\n this.running = false;\n this.graphicsReadyCallback = null;\n this.graphicsReady = false;\n this._useRequestAnimationFrame = useRequestAnimationFrame === true && typeof window !== \"undefined\";\n this.cancelled = false;\n this.capability = (0, _util.createPromiseCapability)();\n this.task = new RenderTask(this);\n this._continueBound = this._continue.bind(this);\n this._scheduleNextBound = this._scheduleNext.bind(this);\n this._nextBound = this._next.bind(this);\n this._canvas = params.canvasContext.canvas;\n }\n\n get completed() {\n return this.capability.promise.catch(function () {});\n }\n\n initializeGraphics({\n transparency = false,\n optionalContentConfig\n }) {\n if (this.cancelled) {\n return;\n }\n\n if (this._canvas) {\n if (canvasInRendering.has(this._canvas)) {\n throw new Error(\"Cannot use the same canvas during multiple render() operations. \" + \"Use different canvas or ensure previous operations were \" + \"cancelled or completed.\");\n }\n\n canvasInRendering.add(this._canvas);\n }\n\n if (this._pdfBug && globalThis.StepperManager && globalThis.StepperManager.enabled) {\n this.stepper = globalThis.StepperManager.create(this._pageIndex);\n this.stepper.init(this.operatorList);\n this.stepper.nextBreakPoint = this.stepper.getNextBreakPoint();\n }\n\n const {\n canvasContext,\n viewport,\n transform,\n imageLayer,\n background\n } = this.params;\n this.gfx = new _canvas.CanvasGraphics(canvasContext, this.commonObjs, this.objs, this.canvasFactory, this.webGLContext, imageLayer, optionalContentConfig);\n this.gfx.beginDrawing({\n transform,\n viewport,\n transparency,\n background\n });\n this.operatorListIdx = 0;\n this.graphicsReady = true;\n\n if (this.graphicsReadyCallback) {\n this.graphicsReadyCallback();\n }\n }\n\n cancel(error = null) {\n this.running = false;\n this.cancelled = true;\n\n if (this.gfx) {\n this.gfx.endDrawing();\n }\n\n if (this._canvas) {\n canvasInRendering.delete(this._canvas);\n }\n\n this.callback(error || new _display_utils.RenderingCancelledException(`Rendering cancelled, page ${this._pageIndex + 1}`, \"canvas\"));\n }\n\n operatorListChanged() {\n if (!this.graphicsReady) {\n if (!this.graphicsReadyCallback) {\n this.graphicsReadyCallback = this._continueBound;\n }\n\n return;\n }\n\n if (this.stepper) {\n this.stepper.updateOperatorList(this.operatorList);\n }\n\n if (this.running) {\n return;\n }\n\n this._continue();\n }\n\n _continue() {\n this.running = true;\n\n if (this.cancelled) {\n return;\n }\n\n if (this.task.onContinue) {\n this.task.onContinue(this._scheduleNextBound);\n } else {\n this._scheduleNext();\n }\n }\n\n _scheduleNext() {\n if (this._useRequestAnimationFrame) {\n window.requestAnimationFrame(() => {\n this._nextBound().catch(this.cancel.bind(this));\n });\n } else {\n Promise.resolve().then(this._nextBound).catch(this.cancel.bind(this));\n }\n }\n\n async _next() {\n if (this.cancelled) {\n return;\n }\n\n this.operatorListIdx = this.gfx.executeOperatorList(this.operatorList, this.operatorListIdx, this._continueBound, this.stepper);\n\n if (this.operatorListIdx === this.operatorList.argsArray.length) {\n this.running = false;\n\n if (this.operatorList.lastChunk) {\n this.gfx.endDrawing();\n\n if (this._canvas) {\n canvasInRendering.delete(this._canvas);\n }\n\n this.callback();\n }\n }\n }\n\n }\n\n return InternalRenderTask;\n}();\n\nconst version = '2.6.347';\nexports.version = version;\nconst build = '3be9c65f';\nexports.build = build;\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.FontLoader = exports.FontFaceObject = void 0;\n\nvar _util = __w_pdfjs_require__(2);\n\nclass BaseFontLoader {\n constructor({\n docId,\n onUnsupportedFeature,\n ownerDocument = globalThis.document\n }) {\n if (this.constructor === BaseFontLoader) {\n (0, _util.unreachable)(\"Cannot initialize BaseFontLoader.\");\n }\n\n this.docId = docId;\n this._onUnsupportedFeature = onUnsupportedFeature;\n this._document = ownerDocument;\n this.nativeFontFaces = [];\n this.styleElement = null;\n }\n\n addNativeFontFace(nativeFontFace) {\n this.nativeFontFaces.push(nativeFontFace);\n\n this._document.fonts.add(nativeFontFace);\n }\n\n insertRule(rule) {\n let styleElement = this.styleElement;\n\n if (!styleElement) {\n styleElement = this.styleElement = this._document.createElement(\"style\");\n styleElement.id = `PDFJS_FONT_STYLE_TAG_${this.docId}`;\n\n this._document.documentElement.getElementsByTagName(\"head\")[0].appendChild(styleElement);\n }\n\n const styleSheet = styleElement.sheet;\n styleSheet.insertRule(rule, styleSheet.cssRules.length);\n }\n\n clear() {\n this.nativeFontFaces.forEach(nativeFontFace => {\n this._document.fonts.delete(nativeFontFace);\n });\n this.nativeFontFaces.length = 0;\n\n if (this.styleElement) {\n this.styleElement.remove();\n this.styleElement = null;\n }\n }\n\n async bind(font) {\n if (font.attached || font.missingFile) {\n return;\n }\n\n font.attached = true;\n\n if (this.isFontLoadingAPISupported) {\n const nativeFontFace = font.createNativeFontFace();\n\n if (nativeFontFace) {\n this.addNativeFontFace(nativeFontFace);\n\n try {\n await nativeFontFace.loaded;\n } catch (ex) {\n this._onUnsupportedFeature({\n featureId: _util.UNSUPPORTED_FEATURES.errorFontLoadNative\n });\n\n (0, _util.warn)(`Failed to load font '${nativeFontFace.family}': '${ex}'.`);\n font.disableFontFace = true;\n throw ex;\n }\n }\n\n return;\n }\n\n const rule = font.createFontFaceRule();\n\n if (rule) {\n this.insertRule(rule);\n\n if (this.isSyncFontLoadingSupported) {\n return;\n }\n\n await new Promise(resolve => {\n const request = this._queueLoadingCallback(resolve);\n\n this._prepareFontLoadEvent([rule], [font], request);\n });\n }\n }\n\n _queueLoadingCallback(callback) {\n (0, _util.unreachable)(\"Abstract method `_queueLoadingCallback`.\");\n }\n\n get isFontLoadingAPISupported() {\n const supported = typeof this._document !== \"undefined\" && !!this._document.fonts;\n return (0, _util.shadow)(this, \"isFontLoadingAPISupported\", supported);\n }\n\n get isSyncFontLoadingSupported() {\n (0, _util.unreachable)(\"Abstract method `isSyncFontLoadingSupported`.\");\n }\n\n get _loadTestFont() {\n (0, _util.unreachable)(\"Abstract method `_loadTestFont`.\");\n }\n\n _prepareFontLoadEvent(rules, fontsToLoad, request) {\n (0, _util.unreachable)(\"Abstract method `_prepareFontLoadEvent`.\");\n }\n\n}\n\nlet FontLoader;\nexports.FontLoader = FontLoader;\n{\n exports.FontLoader = FontLoader = class GenericFontLoader extends BaseFontLoader {\n constructor(params) {\n super(params);\n this.loadingContext = {\n requests: [],\n nextRequestId: 0\n };\n this.loadTestFontId = 0;\n }\n\n get isSyncFontLoadingSupported() {\n let supported = false;\n\n if (typeof navigator === \"undefined\") {\n supported = true;\n } else {\n const m = /Mozilla\\/5.0.*?rv:(\\d+).*? Gecko/.exec(navigator.userAgent);\n\n if (m && m[1] >= 14) {\n supported = true;\n }\n }\n\n return (0, _util.shadow)(this, \"isSyncFontLoadingSupported\", supported);\n }\n\n _queueLoadingCallback(callback) {\n function completeRequest() {\n (0, _util.assert)(!request.done, \"completeRequest() cannot be called twice.\");\n request.done = true;\n\n while (context.requests.length > 0 && context.requests[0].done) {\n const otherRequest = context.requests.shift();\n setTimeout(otherRequest.callback, 0);\n }\n }\n\n const context = this.loadingContext;\n const request = {\n id: `pdfjs-font-loading-${context.nextRequestId++}`,\n done: false,\n complete: completeRequest,\n callback\n };\n context.requests.push(request);\n return request;\n }\n\n get _loadTestFont() {\n const getLoadTestFont = function () {\n 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==\");\n };\n\n return (0, _util.shadow)(this, \"_loadTestFont\", getLoadTestFont());\n }\n\n _prepareFontLoadEvent(rules, fonts, request) {\n function int32(data, offset) {\n return data.charCodeAt(offset) << 24 | data.charCodeAt(offset + 1) << 16 | data.charCodeAt(offset + 2) << 8 | data.charCodeAt(offset + 3) & 0xff;\n }\n\n function spliceString(s, offset, remove, insert) {\n const chunk1 = s.substring(0, offset);\n const chunk2 = s.substring(offset + remove);\n return chunk1 + insert + chunk2;\n }\n\n let i, ii;\n\n const canvas = this._document.createElement(\"canvas\");\n\n canvas.width = 1;\n canvas.height = 1;\n const ctx = canvas.getContext(\"2d\");\n let called = 0;\n\n function isFontReady(name, callback) {\n called++;\n\n if (called > 30) {\n (0, _util.warn)(\"Load test font never loaded.\");\n callback();\n return;\n }\n\n ctx.font = \"30px \" + name;\n ctx.fillText(\".\", 0, 20);\n const imageData = ctx.getImageData(0, 0, 1, 1);\n\n if (imageData.data[3] > 0) {\n callback();\n return;\n }\n\n setTimeout(isFontReady.bind(null, name, callback));\n }\n\n const loadTestFontId = `lt${Date.now()}${this.loadTestFontId++}`;\n let data = this._loadTestFont;\n const COMMENT_OFFSET = 976;\n data = spliceString(data, COMMENT_OFFSET, loadTestFontId.length, loadTestFontId);\n const CFF_CHECKSUM_OFFSET = 16;\n const XXXX_VALUE = 0x58585858;\n let checksum = int32(data, CFF_CHECKSUM_OFFSET);\n\n for (i = 0, ii = loadTestFontId.length - 3; i < ii; i += 4) {\n checksum = checksum - XXXX_VALUE + int32(loadTestFontId, i) | 0;\n }\n\n if (i < loadTestFontId.length) {\n checksum = checksum - XXXX_VALUE + int32(loadTestFontId + \"XXX\", i) | 0;\n }\n\n data = spliceString(data, CFF_CHECKSUM_OFFSET, 4, (0, _util.string32)(checksum));\n const url = `url(data:font/opentype;base64,${btoa(data)});`;\n const rule = `@font-face {font-family:\"${loadTestFontId}\";src:${url}}`;\n this.insertRule(rule);\n const names = [];\n\n for (i = 0, ii = fonts.length; i < ii; i++) {\n names.push(fonts[i].loadedName);\n }\n\n names.push(loadTestFontId);\n\n const div = this._document.createElement(\"div\");\n\n div.style.visibility = \"hidden\";\n div.style.width = div.style.height = \"10px\";\n div.style.position = \"absolute\";\n div.style.top = div.style.left = \"0px\";\n\n for (i = 0, ii = names.length; i < ii; ++i) {\n const span = this._document.createElement(\"span\");\n\n span.textContent = \"Hi\";\n span.style.fontFamily = names[i];\n div.appendChild(span);\n }\n\n this._document.body.appendChild(div);\n\n isFontReady(loadTestFontId, () => {\n this._document.body.removeChild(div);\n\n request.complete();\n });\n }\n\n };\n}\n\nclass FontFaceObject {\n constructor(translatedData, {\n isEvalSupported = true,\n disableFontFace = false,\n ignoreErrors = false,\n onUnsupportedFeature = null,\n fontRegistry = null\n }) {\n this.compiledGlyphs = Object.create(null);\n\n for (const i in translatedData) {\n this[i] = translatedData[i];\n }\n\n this.isEvalSupported = isEvalSupported !== false;\n this.disableFontFace = disableFontFace === true;\n this.ignoreErrors = ignoreErrors === true;\n this._onUnsupportedFeature = onUnsupportedFeature;\n this.fontRegistry = fontRegistry;\n }\n\n createNativeFontFace() {\n if (!this.data || this.disableFontFace) {\n return null;\n }\n\n const nativeFontFace = new FontFace(this.loadedName, this.data, {});\n\n if (this.fontRegistry) {\n this.fontRegistry.registerFont(this);\n }\n\n return nativeFontFace;\n }\n\n createFontFaceRule() {\n if (!this.data || this.disableFontFace) {\n return null;\n }\n\n const data = (0, _util.bytesToString)(new Uint8Array(this.data));\n const url = `url(data:${this.mimetype};base64,${btoa(data)});`;\n const rule = `@font-face {font-family:\"${this.loadedName}\";src:${url}}`;\n\n if (this.fontRegistry) {\n this.fontRegistry.registerFont(this, url);\n }\n\n return rule;\n }\n\n getPathGenerator(objs, character) {\n if (this.compiledGlyphs[character] !== undefined) {\n return this.compiledGlyphs[character];\n }\n\n let cmds, current;\n\n try {\n cmds = objs.get(this.loadedName + \"_path_\" + character);\n } catch (ex) {\n if (!this.ignoreErrors) {\n throw ex;\n }\n\n if (this._onUnsupportedFeature) {\n this._onUnsupportedFeature({\n featureId: _util.UNSUPPORTED_FEATURES.errorFontGetPath\n });\n }\n\n (0, _util.warn)(`getPathGenerator - ignoring character: \"${ex}\".`);\n return this.compiledGlyphs[character] = function (c, size) {};\n }\n\n if (this.isEvalSupported && _util.IsEvalSupportedCached.value) {\n let args,\n js = \"\";\n\n for (let i = 0, ii = cmds.length; i < ii; i++) {\n current = cmds[i];\n\n if (current.args !== undefined) {\n args = current.args.join(\",\");\n } else {\n args = \"\";\n }\n\n js += \"c.\" + current.cmd + \"(\" + args + \");\\n\";\n }\n\n return this.compiledGlyphs[character] = new Function(\"c\", \"size\", js);\n }\n\n return this.compiledGlyphs[character] = function (c, size) {\n for (let i = 0, ii = cmds.length; i < ii; i++) {\n current = cmds[i];\n\n if (current.cmd === \"scale\") {\n current.args = [size, -size];\n }\n\n c[current.cmd].apply(c, current.args);\n }\n };\n }\n\n}\n\nexports.FontFaceObject = FontFaceObject;\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.NodeCMapReaderFactory = exports.NodeCanvasFactory = void 0;\n\nvar _display_utils = __w_pdfjs_require__(1);\n\nvar _is_node = __w_pdfjs_require__(4);\n\nvar _util = __w_pdfjs_require__(2);\n\nlet NodeCanvasFactory = class {\n constructor() {\n (0, _util.unreachable)(\"Not implemented: NodeCanvasFactory\");\n }\n\n};\nexports.NodeCanvasFactory = NodeCanvasFactory;\nlet NodeCMapReaderFactory = class {\n constructor() {\n (0, _util.unreachable)(\"Not implemented: NodeCMapReaderFactory\");\n }\n\n};\nexports.NodeCMapReaderFactory = NodeCMapReaderFactory;\n\nif (_is_node.isNodeJS) {\n exports.NodeCanvasFactory = NodeCanvasFactory = class extends _display_utils.BaseCanvasFactory {\n create(width, height) {\n if (width <= 0 || height <= 0) {\n throw new Error(\"Invalid canvas size\");\n }\n\n const Canvas = require(\"canvas\");\n\n const canvas = Canvas.createCanvas(width, height);\n return {\n canvas,\n context: canvas.getContext(\"2d\")\n };\n }\n\n };\n exports.NodeCMapReaderFactory = NodeCMapReaderFactory = class extends _display_utils.BaseCMapReaderFactory {\n _fetchData(url, compressionType) {\n return new Promise((resolve, reject) => {\n const fs = require(\"fs\");\n\n fs.readFile(url, (error, data) => {\n if (error || !data) {\n reject(new Error(error));\n return;\n }\n\n resolve({\n cMapData: new Uint8Array(data),\n compressionType\n });\n });\n });\n }\n\n };\n}\n\n/***/ }),\n/* 8 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.AnnotationStorage = void 0;\n\nclass AnnotationStorage {\n constructor() {\n this._storage = new Map();\n this._modified = false;\n this.onSetModified = null;\n this.onResetModified = null;\n }\n\n getOrCreateValue(key, defaultValue) {\n if (this._storage.has(key)) {\n return this._storage.get(key);\n }\n\n this._storage.set(key, defaultValue);\n\n return defaultValue;\n }\n\n setValue(key, value) {\n if (this._storage.get(key) !== value) {\n this._setModified();\n }\n\n this._storage.set(key, value);\n }\n\n getAll() {\n if (this._storage.size === 0) {\n return null;\n }\n\n return Object.fromEntries(this._storage);\n }\n\n get size() {\n return this._storage.size;\n }\n\n _setModified() {\n if (!this._modified) {\n this._modified = true;\n\n if (typeof this.onSetModified === \"function\") {\n this.onSetModified();\n }\n }\n }\n\n resetModified() {\n if (this._modified) {\n this._modified = false;\n\n if (typeof this.onResetModified === \"function\") {\n this.onResetModified();\n }\n }\n }\n\n}\n\nexports.AnnotationStorage = AnnotationStorage;\n\n/***/ }),\n/* 9 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.apiCompatibilityParams = void 0;\n\nvar _is_node = __w_pdfjs_require__(4);\n\nconst compatibilityParams = Object.create(null);\n{\n (function checkFontFace() {\n if (_is_node.isNodeJS) {\n compatibilityParams.disableFontFace = true;\n }\n })();\n}\nconst apiCompatibilityParams = Object.freeze(compatibilityParams);\nexports.apiCompatibilityParams = apiCompatibilityParams;\n\n/***/ }),\n/* 10 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.CanvasGraphics = void 0;\n\nvar _util = __w_pdfjs_require__(2);\n\nvar _pattern_helper = __w_pdfjs_require__(11);\n\nvar MIN_FONT_SIZE = 16;\nvar MAX_FONT_SIZE = 100;\nvar MAX_GROUP_SIZE = 4096;\nvar MIN_WIDTH_FACTOR = 0.65;\nvar COMPILE_TYPE3_GLYPHS = true;\nvar MAX_SIZE_TO_COMPILE = 1000;\nvar FULL_CHUNK_HEIGHT = 16;\n\nfunction addContextCurrentTransform(ctx) {\n if (!ctx.mozCurrentTransform) {\n ctx._originalSave = ctx.save;\n ctx._originalRestore = ctx.restore;\n ctx._originalRotate = ctx.rotate;\n ctx._originalScale = ctx.scale;\n ctx._originalTranslate = ctx.translate;\n ctx._originalTransform = ctx.transform;\n ctx._originalSetTransform = ctx.setTransform;\n ctx._transformMatrix = ctx._transformMatrix || [1, 0, 0, 1, 0, 0];\n ctx._transformStack = [];\n Object.defineProperty(ctx, \"mozCurrentTransform\", {\n get: function getCurrentTransform() {\n return this._transformMatrix;\n }\n });\n Object.defineProperty(ctx, \"mozCurrentTransformInverse\", {\n get: function getCurrentTransformInverse() {\n var m = this._transformMatrix;\n var a = m[0],\n b = m[1],\n c = m[2],\n d = m[3],\n e = m[4],\n f = m[5];\n var ad_bc = a * d - b * c;\n var bc_ad = b * c - a * d;\n 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];\n }\n });\n\n ctx.save = function ctxSave() {\n var old = this._transformMatrix;\n\n this._transformStack.push(old);\n\n this._transformMatrix = old.slice(0, 6);\n\n this._originalSave();\n };\n\n ctx.restore = function ctxRestore() {\n var prev = this._transformStack.pop();\n\n if (prev) {\n this._transformMatrix = prev;\n\n this._originalRestore();\n }\n };\n\n ctx.translate = function ctxTranslate(x, y) {\n var m = this._transformMatrix;\n m[4] = m[0] * x + m[2] * y + m[4];\n m[5] = m[1] * x + m[3] * y + m[5];\n\n this._originalTranslate(x, y);\n };\n\n ctx.scale = function ctxScale(x, y) {\n var m = this._transformMatrix;\n m[0] = m[0] * x;\n m[1] = m[1] * x;\n m[2] = m[2] * y;\n m[3] = m[3] * y;\n\n this._originalScale(x, y);\n };\n\n ctx.transform = function ctxTransform(a, b, c, d, e, f) {\n var m = this._transformMatrix;\n 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]];\n\n ctx._originalTransform(a, b, c, d, e, f);\n };\n\n ctx.setTransform = function ctxSetTransform(a, b, c, d, e, f) {\n this._transformMatrix = [a, b, c, d, e, f];\n\n ctx._originalSetTransform(a, b, c, d, e, f);\n };\n\n ctx.rotate = function ctxRotate(angle) {\n var cosValue = Math.cos(angle);\n var sinValue = Math.sin(angle);\n var m = this._transformMatrix;\n 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]];\n\n this._originalRotate(angle);\n };\n }\n}\n\nvar CachedCanvases = function CachedCanvasesClosure() {\n function CachedCanvases(canvasFactory) {\n this.canvasFactory = canvasFactory;\n this.cache = Object.create(null);\n }\n\n CachedCanvases.prototype = {\n getCanvas: function CachedCanvases_getCanvas(id, width, height, trackTransform) {\n var canvasEntry;\n\n if (this.cache[id] !== undefined) {\n canvasEntry = this.cache[id];\n this.canvasFactory.reset(canvasEntry, width, height);\n canvasEntry.context.setTransform(1, 0, 0, 1, 0, 0);\n } else {\n canvasEntry = this.canvasFactory.create(width, height);\n this.cache[id] = canvasEntry;\n }\n\n if (trackTransform) {\n addContextCurrentTransform(canvasEntry.context);\n }\n\n return canvasEntry;\n },\n\n clear() {\n for (var id in this.cache) {\n var canvasEntry = this.cache[id];\n this.canvasFactory.destroy(canvasEntry);\n delete this.cache[id];\n }\n }\n\n };\n return CachedCanvases;\n}();\n\nfunction compileType3Glyph(imgData) {\n var POINT_TO_PROCESS_LIMIT = 1000;\n var width = imgData.width,\n height = imgData.height;\n var i,\n j,\n j0,\n width1 = width + 1;\n var points = new Uint8Array(width1 * (height + 1));\n var POINT_TYPES = new Uint8Array([0, 2, 4, 0, 1, 0, 5, 4, 8, 10, 0, 8, 0, 2, 1, 0]);\n var lineSize = width + 7 & ~7,\n data0 = imgData.data;\n var data = new Uint8Array(lineSize * height),\n pos = 0,\n ii;\n\n for (i = 0, ii = data0.length; i < ii; i++) {\n var mask = 128,\n elem = data0[i];\n\n while (mask > 0) {\n data[pos++] = elem & mask ? 0 : 255;\n mask >>= 1;\n }\n }\n\n var count = 0;\n pos = 0;\n\n if (data[pos] !== 0) {\n points[0] = 1;\n ++count;\n }\n\n for (j = 1; j < width; j++) {\n if (data[pos] !== data[pos + 1]) {\n points[j] = data[pos] ? 2 : 1;\n ++count;\n }\n\n pos++;\n }\n\n if (data[pos] !== 0) {\n points[j] = 2;\n ++count;\n }\n\n for (i = 1; i < height; i++) {\n pos = i * lineSize;\n j0 = i * width1;\n\n if (data[pos - lineSize] !== data[pos]) {\n points[j0] = data[pos] ? 1 : 8;\n ++count;\n }\n\n var sum = (data[pos] ? 4 : 0) + (data[pos - lineSize] ? 8 : 0);\n\n for (j = 1; j < width; j++) {\n sum = (sum >> 2) + (data[pos + 1] ? 4 : 0) + (data[pos - lineSize + 1] ? 8 : 0);\n\n if (POINT_TYPES[sum]) {\n points[j0 + j] = POINT_TYPES[sum];\n ++count;\n }\n\n pos++;\n }\n\n if (data[pos - lineSize] !== data[pos]) {\n points[j0 + j] = data[pos] ? 2 : 4;\n ++count;\n }\n\n if (count > POINT_TO_PROCESS_LIMIT) {\n return null;\n }\n }\n\n pos = lineSize * (height - 1);\n j0 = i * width1;\n\n if (data[pos] !== 0) {\n points[j0] = 8;\n ++count;\n }\n\n for (j = 1; j < width; j++) {\n if (data[pos] !== data[pos + 1]) {\n points[j0 + j] = data[pos] ? 4 : 8;\n ++count;\n }\n\n pos++;\n }\n\n if (data[pos] !== 0) {\n points[j0 + j] = 4;\n ++count;\n }\n\n if (count > POINT_TO_PROCESS_LIMIT) {\n return null;\n }\n\n var steps = new Int32Array([0, width1, -1, 0, -width1, 0, 0, 0, 1]);\n var outlines = [];\n\n for (i = 0; count && i <= height; i++) {\n var p = i * width1;\n var end = p + width;\n\n while (p < end && !points[p]) {\n p++;\n }\n\n if (p === end) {\n continue;\n }\n\n var coords = [p % width1, i];\n var type = points[p],\n p0 = p,\n pp;\n\n do {\n var step = steps[type];\n\n do {\n p += step;\n } while (!points[p]);\n\n pp = points[p];\n\n if (pp !== 5 && pp !== 10) {\n type = pp;\n points[p] = 0;\n } else {\n type = pp & 0x33 * type >> 4;\n points[p] &= type >> 2 | type << 2;\n }\n\n coords.push(p % width1);\n coords.push(p / width1 | 0);\n\n if (!points[p]) {\n --count;\n }\n } while (p0 !== p);\n\n outlines.push(coords);\n --i;\n }\n\n var drawOutline = function (c) {\n c.save();\n c.scale(1 / width, -1 / height);\n c.translate(0, -height);\n c.beginPath();\n\n for (let k = 0, kk = outlines.length; k < kk; k++) {\n var o = outlines[k];\n c.moveTo(o[0], o[1]);\n\n for (let l = 2, ll = o.length; l < ll; l += 2) {\n c.lineTo(o[l], o[l + 1]);\n }\n }\n\n c.fill();\n c.beginPath();\n c.restore();\n };\n\n return drawOutline;\n}\n\nvar CanvasExtraState = function CanvasExtraStateClosure() {\n function CanvasExtraState() {\n this.alphaIsShape = false;\n this.fontSize = 0;\n this.fontSizeScale = 1;\n this.textMatrix = _util.IDENTITY_MATRIX;\n this.textMatrixScale = 1;\n this.fontMatrix = _util.FONT_IDENTITY_MATRIX;\n this.leading = 0;\n this.x = 0;\n this.y = 0;\n this.lineX = 0;\n this.lineY = 0;\n this.charSpacing = 0;\n this.wordSpacing = 0;\n this.textHScale = 1;\n this.textRenderingMode = _util.TextRenderingMode.FILL;\n this.textRise = 0;\n this.fillColor = \"#000000\";\n this.strokeColor = \"#000000\";\n this.patternFill = false;\n this.fillAlpha = 1;\n this.strokeAlpha = 1;\n this.lineWidth = 1;\n this.activeSMask = null;\n this.resumeSMaskCtx = null;\n this.transferMaps = null;\n }\n\n CanvasExtraState.prototype = {\n clone: function CanvasExtraState_clone() {\n return Object.create(this);\n },\n setCurrentPoint: function CanvasExtraState_setCurrentPoint(x, y) {\n this.x = x;\n this.y = y;\n }\n };\n return CanvasExtraState;\n}();\n\nvar CanvasGraphics = function CanvasGraphicsClosure() {\n var EXECUTION_TIME = 15;\n var EXECUTION_STEPS = 10;\n\n function CanvasGraphics(canvasCtx, commonObjs, objs, canvasFactory, webGLContext, imageLayer, optionalContentConfig) {\n this.ctx = canvasCtx;\n this.current = new CanvasExtraState();\n this.stateStack = [];\n this.pendingClip = null;\n this.pendingEOFill = false;\n this.res = null;\n this.xobjs = null;\n this.commonObjs = commonObjs;\n this.objs = objs;\n this.canvasFactory = canvasFactory;\n this.webGLContext = webGLContext;\n this.imageLayer = imageLayer;\n this.groupStack = [];\n this.processingType3 = null;\n this.baseTransform = null;\n this.baseTransformStack = [];\n this.groupLevel = 0;\n this.smaskStack = [];\n this.smaskCounter = 0;\n this.tempSMask = null;\n this.contentVisible = true;\n this.markedContentStack = [];\n this.optionalContentConfig = optionalContentConfig;\n this.cachedCanvases = new CachedCanvases(this.canvasFactory);\n\n if (canvasCtx) {\n addContextCurrentTransform(canvasCtx);\n }\n\n this._cachedGetSinglePixelWidth = null;\n }\n\n function putBinaryImageData(ctx, imgData, transferMaps = null) {\n if (typeof ImageData !== \"undefined\" && imgData instanceof ImageData) {\n ctx.putImageData(imgData, 0, 0);\n return;\n }\n\n var height = imgData.height,\n width = imgData.width;\n var partialChunkHeight = height % FULL_CHUNK_HEIGHT;\n var fullChunks = (height - partialChunkHeight) / FULL_CHUNK_HEIGHT;\n var totalChunks = partialChunkHeight === 0 ? fullChunks : fullChunks + 1;\n var chunkImgData = ctx.createImageData(width, FULL_CHUNK_HEIGHT);\n var srcPos = 0,\n destPos;\n var src = imgData.data;\n var dest = chunkImgData.data;\n var i, j, thisChunkHeight, elemsInThisChunk;\n let transferMapRed, transferMapGreen, transferMapBlue, transferMapGray;\n\n if (transferMaps) {\n switch (transferMaps.length) {\n case 1:\n transferMapRed = transferMaps[0];\n transferMapGreen = transferMaps[0];\n transferMapBlue = transferMaps[0];\n transferMapGray = transferMaps[0];\n break;\n\n case 4:\n transferMapRed = transferMaps[0];\n transferMapGreen = transferMaps[1];\n transferMapBlue = transferMaps[2];\n transferMapGray = transferMaps[3];\n break;\n }\n }\n\n if (imgData.kind === _util.ImageKind.GRAYSCALE_1BPP) {\n var srcLength = src.byteLength;\n var dest32 = new Uint32Array(dest.buffer, 0, dest.byteLength >> 2);\n var dest32DataLength = dest32.length;\n var fullSrcDiff = width + 7 >> 3;\n var white = 0xffffffff;\n var black = _util.IsLittleEndianCached.value ? 0xff000000 : 0x000000ff;\n\n if (transferMapGray) {\n if (transferMapGray[0] === 0xff && transferMapGray[0xff] === 0) {\n [white, black] = [black, white];\n }\n }\n\n for (i = 0; i < totalChunks; i++) {\n thisChunkHeight = i < fullChunks ? FULL_CHUNK_HEIGHT : partialChunkHeight;\n destPos = 0;\n\n for (j = 0; j < thisChunkHeight; j++) {\n var srcDiff = srcLength - srcPos;\n let k = 0;\n var kEnd = srcDiff > fullSrcDiff ? width : srcDiff * 8 - 7;\n var kEndUnrolled = kEnd & ~7;\n var mask = 0;\n var srcByte = 0;\n\n for (; k < kEndUnrolled; k += 8) {\n srcByte = src[srcPos++];\n dest32[destPos++] = srcByte & 128 ? white : black;\n dest32[destPos++] = srcByte & 64 ? white : black;\n dest32[destPos++] = srcByte & 32 ? white : black;\n dest32[destPos++] = srcByte & 16 ? white : black;\n dest32[destPos++] = srcByte & 8 ? white : black;\n dest32[destPos++] = srcByte & 4 ? white : black;\n dest32[destPos++] = srcByte & 2 ? white : black;\n dest32[destPos++] = srcByte & 1 ? white : black;\n }\n\n for (; k < kEnd; k++) {\n if (mask === 0) {\n srcByte = src[srcPos++];\n mask = 128;\n }\n\n dest32[destPos++] = srcByte & mask ? white : black;\n mask >>= 1;\n }\n }\n\n while (destPos < dest32DataLength) {\n dest32[destPos++] = 0;\n }\n\n ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);\n }\n } else if (imgData.kind === _util.ImageKind.RGBA_32BPP) {\n const hasTransferMaps = !!(transferMapRed || transferMapGreen || transferMapBlue);\n j = 0;\n elemsInThisChunk = width * FULL_CHUNK_HEIGHT * 4;\n\n for (i = 0; i < fullChunks; i++) {\n dest.set(src.subarray(srcPos, srcPos + elemsInThisChunk));\n srcPos += elemsInThisChunk;\n\n if (hasTransferMaps) {\n for (let k = 0; k < elemsInThisChunk; k += 4) {\n if (transferMapRed) {\n dest[k + 0] = transferMapRed[dest[k + 0]];\n }\n\n if (transferMapGreen) {\n dest[k + 1] = transferMapGreen[dest[k + 1]];\n }\n\n if (transferMapBlue) {\n dest[k + 2] = transferMapBlue[dest[k + 2]];\n }\n }\n }\n\n ctx.putImageData(chunkImgData, 0, j);\n j += FULL_CHUNK_HEIGHT;\n }\n\n if (i < totalChunks) {\n elemsInThisChunk = width * partialChunkHeight * 4;\n dest.set(src.subarray(srcPos, srcPos + elemsInThisChunk));\n\n if (hasTransferMaps) {\n for (let k = 0; k < elemsInThisChunk; k += 4) {\n if (transferMapRed) {\n dest[k + 0] = transferMapRed[dest[k + 0]];\n }\n\n if (transferMapGreen) {\n dest[k + 1] = transferMapGreen[dest[k + 1]];\n }\n\n if (transferMapBlue) {\n dest[k + 2] = transferMapBlue[dest[k + 2]];\n }\n }\n }\n\n ctx.putImageData(chunkImgData, 0, j);\n }\n } else if (imgData.kind === _util.ImageKind.RGB_24BPP) {\n const hasTransferMaps = !!(transferMapRed || transferMapGreen || transferMapBlue);\n thisChunkHeight = FULL_CHUNK_HEIGHT;\n elemsInThisChunk = width * thisChunkHeight;\n\n for (i = 0; i < totalChunks; i++) {\n if (i >= fullChunks) {\n thisChunkHeight = partialChunkHeight;\n elemsInThisChunk = width * thisChunkHeight;\n }\n\n destPos = 0;\n\n for (j = elemsInThisChunk; j--;) {\n dest[destPos++] = src[srcPos++];\n dest[destPos++] = src[srcPos++];\n dest[destPos++] = src[srcPos++];\n dest[destPos++] = 255;\n }\n\n if (hasTransferMaps) {\n for (let k = 0; k < destPos; k += 4) {\n if (transferMapRed) {\n dest[k + 0] = transferMapRed[dest[k + 0]];\n }\n\n if (transferMapGreen) {\n dest[k + 1] = transferMapGreen[dest[k + 1]];\n }\n\n if (transferMapBlue) {\n dest[k + 2] = transferMapBlue[dest[k + 2]];\n }\n }\n }\n\n ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);\n }\n } else {\n throw new Error(`bad image kind: ${imgData.kind}`);\n }\n }\n\n function putBinaryImageMask(ctx, imgData) {\n var height = imgData.height,\n width = imgData.width;\n var partialChunkHeight = height % FULL_CHUNK_HEIGHT;\n var fullChunks = (height - partialChunkHeight) / FULL_CHUNK_HEIGHT;\n var totalChunks = partialChunkHeight === 0 ? fullChunks : fullChunks + 1;\n var chunkImgData = ctx.createImageData(width, FULL_CHUNK_HEIGHT);\n var srcPos = 0;\n var src = imgData.data;\n var dest = chunkImgData.data;\n\n for (var i = 0; i < totalChunks; i++) {\n var thisChunkHeight = i < fullChunks ? FULL_CHUNK_HEIGHT : partialChunkHeight;\n var destPos = 3;\n\n for (var j = 0; j < thisChunkHeight; j++) {\n var mask = 0;\n\n for (var k = 0; k < width; k++) {\n if (!mask) {\n var elem = src[srcPos++];\n mask = 128;\n }\n\n dest[destPos] = elem & mask ? 0 : 255;\n destPos += 4;\n mask >>= 1;\n }\n }\n\n ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);\n }\n }\n\n function copyCtxState(sourceCtx, destCtx) {\n var properties = [\"strokeStyle\", \"fillStyle\", \"fillRule\", \"globalAlpha\", \"lineWidth\", \"lineCap\", \"lineJoin\", \"miterLimit\", \"globalCompositeOperation\", \"font\"];\n\n for (var i = 0, ii = properties.length; i < ii; i++) {\n var property = properties[i];\n\n if (sourceCtx[property] !== undefined) {\n destCtx[property] = sourceCtx[property];\n }\n }\n\n if (sourceCtx.setLineDash !== undefined) {\n destCtx.setLineDash(sourceCtx.getLineDash());\n destCtx.lineDashOffset = sourceCtx.lineDashOffset;\n }\n }\n\n function resetCtxToDefault(ctx) {\n ctx.strokeStyle = \"#000000\";\n ctx.fillStyle = \"#000000\";\n ctx.fillRule = \"nonzero\";\n ctx.globalAlpha = 1;\n ctx.lineWidth = 1;\n ctx.lineCap = \"butt\";\n ctx.lineJoin = \"miter\";\n ctx.miterLimit = 10;\n ctx.globalCompositeOperation = \"source-over\";\n ctx.font = \"10px sans-serif\";\n\n if (ctx.setLineDash !== undefined) {\n ctx.setLineDash([]);\n ctx.lineDashOffset = 0;\n }\n }\n\n function composeSMaskBackdrop(bytes, r0, g0, b0) {\n var length = bytes.length;\n\n for (var i = 3; i < length; i += 4) {\n var alpha = bytes[i];\n\n if (alpha === 0) {\n bytes[i - 3] = r0;\n bytes[i - 2] = g0;\n bytes[i - 1] = b0;\n } else if (alpha < 255) {\n var alpha_ = 255 - alpha;\n bytes[i - 3] = bytes[i - 3] * alpha + r0 * alpha_ >> 8;\n bytes[i - 2] = bytes[i - 2] * alpha + g0 * alpha_ >> 8;\n bytes[i - 1] = bytes[i - 1] * alpha + b0 * alpha_ >> 8;\n }\n }\n }\n\n function composeSMaskAlpha(maskData, layerData, transferMap) {\n var length = maskData.length;\n var scale = 1 / 255;\n\n for (var i = 3; i < length; i += 4) {\n var alpha = transferMap ? transferMap[maskData[i]] : maskData[i];\n layerData[i] = layerData[i] * alpha * scale | 0;\n }\n }\n\n function composeSMaskLuminosity(maskData, layerData, transferMap) {\n var length = maskData.length;\n\n for (var i = 3; i < length; i += 4) {\n var y = maskData[i - 3] * 77 + maskData[i - 2] * 152 + maskData[i - 1] * 28;\n layerData[i] = transferMap ? layerData[i] * transferMap[y >> 8] >> 8 : layerData[i] * y >> 16;\n }\n }\n\n function genericComposeSMask(maskCtx, layerCtx, width, height, subtype, backdrop, transferMap) {\n var hasBackdrop = !!backdrop;\n var r0 = hasBackdrop ? backdrop[0] : 0;\n var g0 = hasBackdrop ? backdrop[1] : 0;\n var b0 = hasBackdrop ? backdrop[2] : 0;\n var composeFn;\n\n if (subtype === \"Luminosity\") {\n composeFn = composeSMaskLuminosity;\n } else {\n composeFn = composeSMaskAlpha;\n }\n\n var PIXELS_TO_PROCESS = 1048576;\n var chunkSize = Math.min(height, Math.ceil(PIXELS_TO_PROCESS / width));\n\n for (var row = 0; row < height; row += chunkSize) {\n var chunkHeight = Math.min(chunkSize, height - row);\n var maskData = maskCtx.getImageData(0, row, width, chunkHeight);\n var layerData = layerCtx.getImageData(0, row, width, chunkHeight);\n\n if (hasBackdrop) {\n composeSMaskBackdrop(maskData.data, r0, g0, b0);\n }\n\n composeFn(maskData.data, layerData.data, transferMap);\n maskCtx.putImageData(layerData, 0, row);\n }\n }\n\n function composeSMask(ctx, smask, layerCtx, webGLContext) {\n var mask = smask.canvas;\n var maskCtx = smask.context;\n ctx.setTransform(smask.scaleX, 0, 0, smask.scaleY, smask.offsetX, smask.offsetY);\n var backdrop = smask.backdrop || null;\n\n if (!smask.transferMap && webGLContext.isEnabled) {\n const composed = webGLContext.composeSMask({\n layer: layerCtx.canvas,\n mask,\n properties: {\n subtype: smask.subtype,\n backdrop\n }\n });\n ctx.setTransform(1, 0, 0, 1, 0, 0);\n ctx.drawImage(composed, smask.offsetX, smask.offsetY);\n return;\n }\n\n genericComposeSMask(maskCtx, layerCtx, mask.width, mask.height, smask.subtype, backdrop, smask.transferMap);\n ctx.drawImage(mask, 0, 0);\n }\n\n var LINE_CAP_STYLES = [\"butt\", \"round\", \"square\"];\n var LINE_JOIN_STYLES = [\"miter\", \"round\", \"bevel\"];\n var NORMAL_CLIP = {};\n var EO_CLIP = {};\n CanvasGraphics.prototype = {\n beginDrawing({\n transform,\n viewport,\n transparency = false,\n background = null\n }) {\n var width = this.ctx.canvas.width;\n var height = this.ctx.canvas.height;\n this.ctx.save();\n this.ctx.fillStyle = background || \"rgb(255, 255, 255)\";\n this.ctx.fillRect(0, 0, width, height);\n this.ctx.restore();\n\n if (transparency) {\n var transparentCanvas = this.cachedCanvases.getCanvas(\"transparent\", width, height, true);\n this.compositeCtx = this.ctx;\n this.transparentCanvas = transparentCanvas.canvas;\n this.ctx = transparentCanvas.context;\n this.ctx.save();\n this.ctx.transform.apply(this.ctx, this.compositeCtx.mozCurrentTransform);\n }\n\n this.ctx.save();\n resetCtxToDefault(this.ctx);\n\n if (transform) {\n this.ctx.transform.apply(this.ctx, transform);\n }\n\n this.ctx.transform.apply(this.ctx, viewport.transform);\n this.baseTransform = this.ctx.mozCurrentTransform.slice();\n\n if (this.imageLayer) {\n this.imageLayer.beginLayout();\n }\n },\n\n executeOperatorList: function CanvasGraphics_executeOperatorList(operatorList, executionStartIdx, continueCallback, stepper) {\n var argsArray = operatorList.argsArray;\n var fnArray = operatorList.fnArray;\n var i = executionStartIdx || 0;\n var argsArrayLen = argsArray.length;\n\n if (argsArrayLen === i) {\n return i;\n }\n\n var chunkOperations = argsArrayLen - i > EXECUTION_STEPS && typeof continueCallback === \"function\";\n var endTime = chunkOperations ? Date.now() + EXECUTION_TIME : 0;\n var steps = 0;\n var commonObjs = this.commonObjs;\n var objs = this.objs;\n var fnId;\n\n while (true) {\n if (stepper !== undefined && i === stepper.nextBreakPoint) {\n stepper.breakIt(i, continueCallback);\n return i;\n }\n\n fnId = fnArray[i];\n\n if (fnId !== _util.OPS.dependency) {\n this[fnId].apply(this, argsArray[i]);\n } else {\n for (const depObjId of argsArray[i]) {\n const objsPool = depObjId.startsWith(\"g_\") ? commonObjs : objs;\n\n if (!objsPool.has(depObjId)) {\n objsPool.get(depObjId, continueCallback);\n return i;\n }\n }\n }\n\n i++;\n\n if (i === argsArrayLen) {\n return i;\n }\n\n if (chunkOperations && ++steps > EXECUTION_STEPS) {\n if (Date.now() > endTime) {\n continueCallback();\n return i;\n }\n\n steps = 0;\n }\n }\n },\n endDrawing: function CanvasGraphics_endDrawing() {\n if (this.current.activeSMask !== null) {\n this.endSMaskGroup();\n }\n\n this.ctx.restore();\n\n if (this.transparentCanvas) {\n this.ctx = this.compositeCtx;\n this.ctx.save();\n this.ctx.setTransform(1, 0, 0, 1, 0, 0);\n this.ctx.drawImage(this.transparentCanvas, 0, 0);\n this.ctx.restore();\n this.transparentCanvas = null;\n }\n\n this.cachedCanvases.clear();\n this.webGLContext.clear();\n\n if (this.imageLayer) {\n this.imageLayer.endLayout();\n }\n },\n setLineWidth: function CanvasGraphics_setLineWidth(width) {\n this.current.lineWidth = width;\n this.ctx.lineWidth = width;\n },\n setLineCap: function CanvasGraphics_setLineCap(style) {\n this.ctx.lineCap = LINE_CAP_STYLES[style];\n },\n setLineJoin: function CanvasGraphics_setLineJoin(style) {\n this.ctx.lineJoin = LINE_JOIN_STYLES[style];\n },\n setMiterLimit: function CanvasGraphics_setMiterLimit(limit) {\n this.ctx.miterLimit = limit;\n },\n setDash: function CanvasGraphics_setDash(dashArray, dashPhase) {\n var ctx = this.ctx;\n\n if (ctx.setLineDash !== undefined) {\n ctx.setLineDash(dashArray);\n ctx.lineDashOffset = dashPhase;\n }\n },\n\n setRenderingIntent(intent) {},\n\n setFlatness(flatness) {},\n\n setGState: function CanvasGraphics_setGState(states) {\n for (var i = 0, ii = states.length; i < ii; i++) {\n var state = states[i];\n var key = state[0];\n var value = state[1];\n\n switch (key) {\n case \"LW\":\n this.setLineWidth(value);\n break;\n\n case \"LC\":\n this.setLineCap(value);\n break;\n\n case \"LJ\":\n this.setLineJoin(value);\n break;\n\n case \"ML\":\n this.setMiterLimit(value);\n break;\n\n case \"D\":\n this.setDash(value[0], value[1]);\n break;\n\n case \"RI\":\n this.setRenderingIntent(value);\n break;\n\n case \"FL\":\n this.setFlatness(value);\n break;\n\n case \"Font\":\n this.setFont(value[0], value[1]);\n break;\n\n case \"CA\":\n this.current.strokeAlpha = state[1];\n break;\n\n case \"ca\":\n this.current.fillAlpha = state[1];\n this.ctx.globalAlpha = state[1];\n break;\n\n case \"BM\":\n this.ctx.globalCompositeOperation = value;\n break;\n\n case \"SMask\":\n if (this.current.activeSMask) {\n if (this.stateStack.length > 0 && this.stateStack[this.stateStack.length - 1].activeSMask === this.current.activeSMask) {\n this.suspendSMaskGroup();\n } else {\n this.endSMaskGroup();\n }\n }\n\n this.current.activeSMask = value ? this.tempSMask : null;\n\n if (this.current.activeSMask) {\n this.beginSMaskGroup();\n }\n\n this.tempSMask = null;\n break;\n\n case \"TR\":\n this.current.transferMaps = value;\n }\n }\n },\n beginSMaskGroup: function CanvasGraphics_beginSMaskGroup() {\n var activeSMask = this.current.activeSMask;\n var drawnWidth = activeSMask.canvas.width;\n var drawnHeight = activeSMask.canvas.height;\n var cacheId = \"smaskGroupAt\" + this.groupLevel;\n var scratchCanvas = this.cachedCanvases.getCanvas(cacheId, drawnWidth, drawnHeight, true);\n var currentCtx = this.ctx;\n var currentTransform = currentCtx.mozCurrentTransform;\n this.ctx.save();\n var groupCtx = scratchCanvas.context;\n groupCtx.scale(1 / activeSMask.scaleX, 1 / activeSMask.scaleY);\n groupCtx.translate(-activeSMask.offsetX, -activeSMask.offsetY);\n groupCtx.transform.apply(groupCtx, currentTransform);\n activeSMask.startTransformInverse = groupCtx.mozCurrentTransformInverse;\n copyCtxState(currentCtx, groupCtx);\n this.ctx = groupCtx;\n this.setGState([[\"BM\", \"source-over\"], [\"ca\", 1], [\"CA\", 1]]);\n this.groupStack.push(currentCtx);\n this.groupLevel++;\n },\n suspendSMaskGroup: function CanvasGraphics_endSMaskGroup() {\n var groupCtx = this.ctx;\n this.groupLevel--;\n this.ctx = this.groupStack.pop();\n composeSMask(this.ctx, this.current.activeSMask, groupCtx, this.webGLContext);\n this.ctx.restore();\n this.ctx.save();\n copyCtxState(groupCtx, this.ctx);\n this.current.resumeSMaskCtx = groupCtx;\n\n var deltaTransform = _util.Util.transform(this.current.activeSMask.startTransformInverse, groupCtx.mozCurrentTransform);\n\n this.ctx.transform.apply(this.ctx, deltaTransform);\n groupCtx.save();\n groupCtx.setTransform(1, 0, 0, 1, 0, 0);\n groupCtx.clearRect(0, 0, groupCtx.canvas.width, groupCtx.canvas.height);\n groupCtx.restore();\n },\n resumeSMaskGroup: function CanvasGraphics_endSMaskGroup() {\n var groupCtx = this.current.resumeSMaskCtx;\n var currentCtx = this.ctx;\n this.ctx = groupCtx;\n this.groupStack.push(currentCtx);\n this.groupLevel++;\n },\n endSMaskGroup: function CanvasGraphics_endSMaskGroup() {\n var groupCtx = this.ctx;\n this.groupLevel--;\n this.ctx = this.groupStack.pop();\n composeSMask(this.ctx, this.current.activeSMask, groupCtx, this.webGLContext);\n this.ctx.restore();\n copyCtxState(groupCtx, this.ctx);\n\n var deltaTransform = _util.Util.transform(this.current.activeSMask.startTransformInverse, groupCtx.mozCurrentTransform);\n\n this.ctx.transform.apply(this.ctx, deltaTransform);\n },\n save: function CanvasGraphics_save() {\n this.ctx.save();\n var old = this.current;\n this.stateStack.push(old);\n this.current = old.clone();\n this.current.resumeSMaskCtx = null;\n },\n restore: function CanvasGraphics_restore() {\n if (this.current.resumeSMaskCtx) {\n this.resumeSMaskGroup();\n }\n\n if (this.current.activeSMask !== null && (this.stateStack.length === 0 || this.stateStack[this.stateStack.length - 1].activeSMask !== this.current.activeSMask)) {\n this.endSMaskGroup();\n }\n\n if (this.stateStack.length !== 0) {\n this.current = this.stateStack.pop();\n this.ctx.restore();\n this.pendingClip = null;\n this._cachedGetSinglePixelWidth = null;\n }\n },\n transform: function CanvasGraphics_transform(a, b, c, d, e, f) {\n this.ctx.transform(a, b, c, d, e, f);\n this._cachedGetSinglePixelWidth = null;\n },\n constructPath: function CanvasGraphics_constructPath(ops, args) {\n var ctx = this.ctx;\n var current = this.current;\n var x = current.x,\n y = current.y;\n\n for (var i = 0, j = 0, ii = ops.length; i < ii; i++) {\n switch (ops[i] | 0) {\n case _util.OPS.rectangle:\n x = args[j++];\n y = args[j++];\n var width = args[j++];\n var height = args[j++];\n\n if (width === 0 && ctx.lineWidth < this.getSinglePixelWidth()) {\n width = this.getSinglePixelWidth();\n }\n\n if (height === 0 && ctx.lineWidth < this.getSinglePixelWidth()) {\n height = this.getSinglePixelWidth();\n }\n\n var xw = x + width;\n var yh = y + height;\n ctx.moveTo(x, y);\n ctx.lineTo(xw, y);\n ctx.lineTo(xw, yh);\n ctx.lineTo(x, yh);\n ctx.lineTo(x, y);\n ctx.closePath();\n break;\n\n case _util.OPS.moveTo:\n x = args[j++];\n y = args[j++];\n ctx.moveTo(x, y);\n break;\n\n case _util.OPS.lineTo:\n x = args[j++];\n y = args[j++];\n ctx.lineTo(x, y);\n break;\n\n case _util.OPS.curveTo:\n x = args[j + 4];\n y = args[j + 5];\n ctx.bezierCurveTo(args[j], args[j + 1], args[j + 2], args[j + 3], x, y);\n j += 6;\n break;\n\n case _util.OPS.curveTo2:\n ctx.bezierCurveTo(x, y, args[j], args[j + 1], args[j + 2], args[j + 3]);\n x = args[j + 2];\n y = args[j + 3];\n j += 4;\n break;\n\n case _util.OPS.curveTo3:\n x = args[j + 2];\n y = args[j + 3];\n ctx.bezierCurveTo(args[j], args[j + 1], x, y, x, y);\n j += 4;\n break;\n\n case _util.OPS.closePath:\n ctx.closePath();\n break;\n }\n }\n\n current.setCurrentPoint(x, y);\n },\n closePath: function CanvasGraphics_closePath() {\n this.ctx.closePath();\n },\n stroke: function CanvasGraphics_stroke(consumePath) {\n consumePath = typeof consumePath !== \"undefined\" ? consumePath : true;\n var ctx = this.ctx;\n var strokeColor = this.current.strokeColor;\n ctx.globalAlpha = this.current.strokeAlpha;\n\n if (this.contentVisible) {\n if (strokeColor && strokeColor.hasOwnProperty(\"type\") && strokeColor.type === \"Pattern\") {\n ctx.save();\n const transform = ctx.mozCurrentTransform;\n\n const scale = _util.Util.singularValueDecompose2dScale(transform)[0];\n\n ctx.strokeStyle = strokeColor.getPattern(ctx, this);\n ctx.lineWidth = Math.max(this.getSinglePixelWidth() * MIN_WIDTH_FACTOR, this.current.lineWidth * scale);\n ctx.stroke();\n ctx.restore();\n } else {\n ctx.lineWidth = Math.max(this.getSinglePixelWidth() * MIN_WIDTH_FACTOR, this.current.lineWidth);\n ctx.stroke();\n }\n }\n\n if (consumePath) {\n this.consumePath();\n }\n\n ctx.globalAlpha = this.current.fillAlpha;\n },\n closeStroke: function CanvasGraphics_closeStroke() {\n this.closePath();\n this.stroke();\n },\n fill: function CanvasGraphics_fill(consumePath) {\n consumePath = typeof consumePath !== \"undefined\" ? consumePath : true;\n var ctx = this.ctx;\n var fillColor = this.current.fillColor;\n var isPatternFill = this.current.patternFill;\n var needRestore = false;\n\n if (isPatternFill) {\n ctx.save();\n\n if (this.baseTransform) {\n ctx.setTransform.apply(ctx, this.baseTransform);\n }\n\n ctx.fillStyle = fillColor.getPattern(ctx, this);\n needRestore = true;\n }\n\n if (this.contentVisible) {\n if (this.pendingEOFill) {\n ctx.fill(\"evenodd\");\n this.pendingEOFill = false;\n } else {\n ctx.fill();\n }\n }\n\n if (needRestore) {\n ctx.restore();\n }\n\n if (consumePath) {\n this.consumePath();\n }\n },\n eoFill: function CanvasGraphics_eoFill() {\n this.pendingEOFill = true;\n this.fill();\n },\n fillStroke: function CanvasGraphics_fillStroke() {\n this.fill(false);\n this.stroke(false);\n this.consumePath();\n },\n eoFillStroke: function CanvasGraphics_eoFillStroke() {\n this.pendingEOFill = true;\n this.fillStroke();\n },\n closeFillStroke: function CanvasGraphics_closeFillStroke() {\n this.closePath();\n this.fillStroke();\n },\n closeEOFillStroke: function CanvasGraphics_closeEOFillStroke() {\n this.pendingEOFill = true;\n this.closePath();\n this.fillStroke();\n },\n endPath: function CanvasGraphics_endPath() {\n this.consumePath();\n },\n clip: function CanvasGraphics_clip() {\n this.pendingClip = NORMAL_CLIP;\n },\n eoClip: function CanvasGraphics_eoClip() {\n this.pendingClip = EO_CLIP;\n },\n beginText: function CanvasGraphics_beginText() {\n this.current.textMatrix = _util.IDENTITY_MATRIX;\n this.current.textMatrixScale = 1;\n this.current.x = this.current.lineX = 0;\n this.current.y = this.current.lineY = 0;\n },\n endText: function CanvasGraphics_endText() {\n var paths = this.pendingTextPaths;\n var ctx = this.ctx;\n\n if (paths === undefined) {\n ctx.beginPath();\n return;\n }\n\n ctx.save();\n ctx.beginPath();\n\n for (var i = 0; i < paths.length; i++) {\n var path = paths[i];\n ctx.setTransform.apply(ctx, path.transform);\n ctx.translate(path.x, path.y);\n path.addToPath(ctx, path.fontSize);\n }\n\n ctx.restore();\n ctx.clip();\n ctx.beginPath();\n delete this.pendingTextPaths;\n },\n setCharSpacing: function CanvasGraphics_setCharSpacing(spacing) {\n this.current.charSpacing = spacing;\n },\n setWordSpacing: function CanvasGraphics_setWordSpacing(spacing) {\n this.current.wordSpacing = spacing;\n },\n setHScale: function CanvasGraphics_setHScale(scale) {\n this.current.textHScale = scale / 100;\n },\n setLeading: function CanvasGraphics_setLeading(leading) {\n this.current.leading = -leading;\n },\n setFont: function CanvasGraphics_setFont(fontRefName, size) {\n var fontObj = this.commonObjs.get(fontRefName);\n var current = this.current;\n\n if (!fontObj) {\n throw new Error(`Can't find font for ${fontRefName}`);\n }\n\n current.fontMatrix = fontObj.fontMatrix ? fontObj.fontMatrix : _util.FONT_IDENTITY_MATRIX;\n\n if (current.fontMatrix[0] === 0 || current.fontMatrix[3] === 0) {\n (0, _util.warn)(\"Invalid font matrix for font \" + fontRefName);\n }\n\n if (size < 0) {\n size = -size;\n current.fontDirection = -1;\n } else {\n current.fontDirection = 1;\n }\n\n this.current.font = fontObj;\n this.current.fontSize = size;\n\n if (fontObj.isType3Font) {\n return;\n }\n\n var name = fontObj.loadedName || \"sans-serif\";\n let bold = \"normal\";\n\n if (fontObj.black) {\n bold = \"900\";\n } else if (fontObj.bold) {\n bold = \"bold\";\n }\n\n var italic = fontObj.italic ? \"italic\" : \"normal\";\n var typeface = `\"${name}\", ${fontObj.fallbackName}`;\n let browserFontSize = size;\n\n if (size < MIN_FONT_SIZE) {\n browserFontSize = MIN_FONT_SIZE;\n } else if (size > MAX_FONT_SIZE) {\n browserFontSize = MAX_FONT_SIZE;\n }\n\n this.current.fontSizeScale = size / browserFontSize;\n this.ctx.font = `${italic} ${bold} ${browserFontSize}px ${typeface}`;\n },\n setTextRenderingMode: function CanvasGraphics_setTextRenderingMode(mode) {\n this.current.textRenderingMode = mode;\n },\n setTextRise: function CanvasGraphics_setTextRise(rise) {\n this.current.textRise = rise;\n },\n moveText: function CanvasGraphics_moveText(x, y) {\n this.current.x = this.current.lineX += x;\n this.current.y = this.current.lineY += y;\n },\n setLeadingMoveText: function CanvasGraphics_setLeadingMoveText(x, y) {\n this.setLeading(-y);\n this.moveText(x, y);\n },\n setTextMatrix: function CanvasGraphics_setTextMatrix(a, b, c, d, e, f) {\n this.current.textMatrix = [a, b, c, d, e, f];\n this.current.textMatrixScale = Math.sqrt(a * a + b * b);\n this.current.x = this.current.lineX = 0;\n this.current.y = this.current.lineY = 0;\n },\n nextLine: function CanvasGraphics_nextLine() {\n this.moveText(0, this.current.leading);\n },\n\n paintChar(character, x, y, patternTransform) {\n var ctx = this.ctx;\n var current = this.current;\n var font = current.font;\n var textRenderingMode = current.textRenderingMode;\n var fontSize = current.fontSize / current.fontSizeScale;\n var fillStrokeMode = textRenderingMode & _util.TextRenderingMode.FILL_STROKE_MASK;\n var isAddToPathSet = !!(textRenderingMode & _util.TextRenderingMode.ADD_TO_PATH_FLAG);\n const patternFill = current.patternFill && !font.missingFile;\n var addToPath;\n\n if (font.disableFontFace || isAddToPathSet || patternFill) {\n addToPath = font.getPathGenerator(this.commonObjs, character);\n }\n\n if (font.disableFontFace || patternFill) {\n ctx.save();\n ctx.translate(x, y);\n ctx.beginPath();\n addToPath(ctx, fontSize);\n\n if (patternTransform) {\n ctx.setTransform.apply(ctx, patternTransform);\n }\n\n if (fillStrokeMode === _util.TextRenderingMode.FILL || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) {\n ctx.fill();\n }\n\n if (fillStrokeMode === _util.TextRenderingMode.STROKE || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) {\n ctx.stroke();\n }\n\n ctx.restore();\n } else {\n if (fillStrokeMode === _util.TextRenderingMode.FILL || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) {\n ctx.fillText(character, x, y);\n }\n\n if (fillStrokeMode === _util.TextRenderingMode.STROKE || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) {\n ctx.strokeText(character, x, y);\n }\n }\n\n if (isAddToPathSet) {\n var paths = this.pendingTextPaths || (this.pendingTextPaths = []);\n paths.push({\n transform: ctx.mozCurrentTransform,\n x,\n y,\n fontSize,\n addToPath\n });\n }\n },\n\n get isFontSubpixelAAEnabled() {\n const {\n context: ctx\n } = this.cachedCanvases.getCanvas(\"isFontSubpixelAAEnabled\", 10, 10);\n ctx.scale(1.5, 1);\n ctx.fillText(\"I\", 0, 10);\n var data = ctx.getImageData(0, 0, 10, 10).data;\n var enabled = false;\n\n for (var i = 3; i < data.length; i += 4) {\n if (data[i] > 0 && data[i] < 255) {\n enabled = true;\n break;\n }\n }\n\n return (0, _util.shadow)(this, \"isFontSubpixelAAEnabled\", enabled);\n },\n\n showText: function CanvasGraphics_showText(glyphs) {\n var current = this.current;\n var font = current.font;\n\n if (font.isType3Font) {\n return this.showType3Text(glyphs);\n }\n\n var fontSize = current.fontSize;\n\n if (fontSize === 0) {\n return undefined;\n }\n\n var ctx = this.ctx;\n var fontSizeScale = current.fontSizeScale;\n var charSpacing = current.charSpacing;\n var wordSpacing = current.wordSpacing;\n var fontDirection = current.fontDirection;\n var textHScale = current.textHScale * fontDirection;\n var glyphsLength = glyphs.length;\n var vertical = font.vertical;\n var spacingDir = vertical ? 1 : -1;\n var defaultVMetrics = font.defaultVMetrics;\n var widthAdvanceScale = fontSize * current.fontMatrix[0];\n var simpleFillText = current.textRenderingMode === _util.TextRenderingMode.FILL && !font.disableFontFace && !current.patternFill;\n ctx.save();\n let patternTransform;\n\n if (current.patternFill) {\n ctx.save();\n const pattern = current.fillColor.getPattern(ctx, this);\n patternTransform = ctx.mozCurrentTransform;\n ctx.restore();\n ctx.fillStyle = pattern;\n }\n\n ctx.transform.apply(ctx, current.textMatrix);\n ctx.translate(current.x, current.y + current.textRise);\n\n if (fontDirection > 0) {\n ctx.scale(textHScale, -1);\n } else {\n ctx.scale(textHScale, 1);\n }\n\n var lineWidth = current.lineWidth;\n var scale = current.textMatrixScale;\n\n if (scale === 0 || lineWidth === 0) {\n var fillStrokeMode = current.textRenderingMode & _util.TextRenderingMode.FILL_STROKE_MASK;\n\n if (fillStrokeMode === _util.TextRenderingMode.STROKE || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) {\n this._cachedGetSinglePixelWidth = null;\n lineWidth = this.getSinglePixelWidth() * MIN_WIDTH_FACTOR;\n }\n } else {\n lineWidth /= scale;\n }\n\n if (fontSizeScale !== 1.0) {\n ctx.scale(fontSizeScale, fontSizeScale);\n lineWidth /= fontSizeScale;\n }\n\n ctx.lineWidth = lineWidth;\n var x = 0,\n i;\n\n for (i = 0; i < glyphsLength; ++i) {\n var glyph = glyphs[i];\n\n if ((0, _util.isNum)(glyph)) {\n x += spacingDir * glyph * fontSize / 1000;\n continue;\n }\n\n var restoreNeeded = false;\n var spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing;\n var character = glyph.fontChar;\n var accent = glyph.accent;\n var scaledX, scaledY, scaledAccentX, scaledAccentY;\n var width = glyph.width;\n\n if (vertical) {\n var vmetric, vx, vy;\n vmetric = glyph.vmetric || defaultVMetrics;\n vx = glyph.vmetric ? vmetric[1] : width * 0.5;\n vx = -vx * widthAdvanceScale;\n vy = vmetric[2] * widthAdvanceScale;\n width = vmetric ? -vmetric[0] : width;\n scaledX = vx / fontSizeScale;\n scaledY = (x + vy) / fontSizeScale;\n } else {\n scaledX = x / fontSizeScale;\n scaledY = 0;\n }\n\n if (font.remeasure && width > 0) {\n var measuredWidth = ctx.measureText(character).width * 1000 / fontSize * fontSizeScale;\n\n if (width < measuredWidth && this.isFontSubpixelAAEnabled) {\n var characterScaleX = width / measuredWidth;\n restoreNeeded = true;\n ctx.save();\n ctx.scale(characterScaleX, 1);\n scaledX /= characterScaleX;\n } else if (width !== measuredWidth) {\n scaledX += (width - measuredWidth) / 2000 * fontSize / fontSizeScale;\n }\n }\n\n if (this.contentVisible && (glyph.isInFont || font.missingFile)) {\n if (simpleFillText && !accent) {\n ctx.fillText(character, scaledX, scaledY);\n } else {\n this.paintChar(character, scaledX, scaledY, patternTransform);\n\n if (accent) {\n scaledAccentX = scaledX + fontSize * accent.offset.x / fontSizeScale;\n scaledAccentY = scaledY - fontSize * accent.offset.y / fontSizeScale;\n this.paintChar(accent.fontChar, scaledAccentX, scaledAccentY, patternTransform);\n }\n }\n }\n\n var charWidth;\n\n if (vertical) {\n charWidth = width * widthAdvanceScale - spacing * fontDirection;\n } else {\n charWidth = width * widthAdvanceScale + spacing * fontDirection;\n }\n\n x += charWidth;\n\n if (restoreNeeded) {\n ctx.restore();\n }\n }\n\n if (vertical) {\n current.y -= x;\n } else {\n current.x += x * textHScale;\n }\n\n ctx.restore();\n },\n showType3Text: function CanvasGraphics_showType3Text(glyphs) {\n var ctx = this.ctx;\n var current = this.current;\n var font = current.font;\n var fontSize = current.fontSize;\n var fontDirection = current.fontDirection;\n var spacingDir = font.vertical ? 1 : -1;\n var charSpacing = current.charSpacing;\n var wordSpacing = current.wordSpacing;\n var textHScale = current.textHScale * fontDirection;\n var fontMatrix = current.fontMatrix || _util.FONT_IDENTITY_MATRIX;\n var glyphsLength = glyphs.length;\n var isTextInvisible = current.textRenderingMode === _util.TextRenderingMode.INVISIBLE;\n var i, glyph, width, spacingLength;\n\n if (isTextInvisible || fontSize === 0) {\n return;\n }\n\n this._cachedGetSinglePixelWidth = null;\n ctx.save();\n ctx.transform.apply(ctx, current.textMatrix);\n ctx.translate(current.x, current.y);\n ctx.scale(textHScale, fontDirection);\n\n for (i = 0; i < glyphsLength; ++i) {\n glyph = glyphs[i];\n\n if ((0, _util.isNum)(glyph)) {\n spacingLength = spacingDir * glyph * fontSize / 1000;\n this.ctx.translate(spacingLength, 0);\n current.x += spacingLength * textHScale;\n continue;\n }\n\n var spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing;\n var operatorList = font.charProcOperatorList[glyph.operatorListId];\n\n if (!operatorList) {\n (0, _util.warn)(`Type3 character \"${glyph.operatorListId}\" is not available.`);\n continue;\n }\n\n if (this.contentVisible) {\n this.processingType3 = glyph;\n this.save();\n ctx.scale(fontSize, fontSize);\n ctx.transform.apply(ctx, fontMatrix);\n this.executeOperatorList(operatorList);\n this.restore();\n }\n\n var transformed = _util.Util.applyTransform([glyph.width, 0], fontMatrix);\n\n width = transformed[0] * fontSize + spacing;\n ctx.translate(width, 0);\n current.x += width * textHScale;\n }\n\n ctx.restore();\n this.processingType3 = null;\n },\n setCharWidth: function CanvasGraphics_setCharWidth(xWidth, yWidth) {},\n setCharWidthAndBounds: function CanvasGraphics_setCharWidthAndBounds(xWidth, yWidth, llx, lly, urx, ury) {\n this.ctx.rect(llx, lly, urx - llx, ury - lly);\n this.clip();\n this.endPath();\n },\n getColorN_Pattern: function CanvasGraphics_getColorN_Pattern(IR) {\n var pattern;\n\n if (IR[0] === \"TilingPattern\") {\n var color = IR[1];\n var baseTransform = this.baseTransform || this.ctx.mozCurrentTransform.slice();\n var canvasGraphicsFactory = {\n createCanvasGraphics: ctx => {\n return new CanvasGraphics(ctx, this.commonObjs, this.objs, this.canvasFactory, this.webGLContext);\n }\n };\n pattern = new _pattern_helper.TilingPattern(IR, color, this.ctx, canvasGraphicsFactory, baseTransform);\n } else {\n pattern = (0, _pattern_helper.getShadingPatternFromIR)(IR);\n }\n\n return pattern;\n },\n setStrokeColorN: function CanvasGraphics_setStrokeColorN() {\n this.current.strokeColor = this.getColorN_Pattern(arguments);\n },\n setFillColorN: function CanvasGraphics_setFillColorN() {\n this.current.fillColor = this.getColorN_Pattern(arguments);\n this.current.patternFill = true;\n },\n setStrokeRGBColor: function CanvasGraphics_setStrokeRGBColor(r, g, b) {\n var color = _util.Util.makeCssRgb(r, g, b);\n\n this.ctx.strokeStyle = color;\n this.current.strokeColor = color;\n },\n setFillRGBColor: function CanvasGraphics_setFillRGBColor(r, g, b) {\n var color = _util.Util.makeCssRgb(r, g, b);\n\n this.ctx.fillStyle = color;\n this.current.fillColor = color;\n this.current.patternFill = false;\n },\n shadingFill: function CanvasGraphics_shadingFill(patternIR) {\n if (!this.contentVisible) {\n return;\n }\n\n var ctx = this.ctx;\n this.save();\n var pattern = (0, _pattern_helper.getShadingPatternFromIR)(patternIR);\n ctx.fillStyle = pattern.getPattern(ctx, this, true);\n var inv = ctx.mozCurrentTransformInverse;\n\n if (inv) {\n var canvas = ctx.canvas;\n var width = canvas.width;\n var height = canvas.height;\n\n var bl = _util.Util.applyTransform([0, 0], inv);\n\n var br = _util.Util.applyTransform([0, height], inv);\n\n var ul = _util.Util.applyTransform([width, 0], inv);\n\n var ur = _util.Util.applyTransform([width, height], inv);\n\n var x0 = Math.min(bl[0], br[0], ul[0], ur[0]);\n var y0 = Math.min(bl[1], br[1], ul[1], ur[1]);\n var x1 = Math.max(bl[0], br[0], ul[0], ur[0]);\n var y1 = Math.max(bl[1], br[1], ul[1], ur[1]);\n this.ctx.fillRect(x0, y0, x1 - x0, y1 - y0);\n } else {\n this.ctx.fillRect(-1e10, -1e10, 2e10, 2e10);\n }\n\n this.restore();\n },\n beginInlineImage: function CanvasGraphics_beginInlineImage() {\n (0, _util.unreachable)(\"Should not call beginInlineImage\");\n },\n beginImageData: function CanvasGraphics_beginImageData() {\n (0, _util.unreachable)(\"Should not call beginImageData\");\n },\n paintFormXObjectBegin: function CanvasGraphics_paintFormXObjectBegin(matrix, bbox) {\n if (!this.contentVisible) {\n return;\n }\n\n this.save();\n this.baseTransformStack.push(this.baseTransform);\n\n if (Array.isArray(matrix) && matrix.length === 6) {\n this.transform.apply(this, matrix);\n }\n\n this.baseTransform = this.ctx.mozCurrentTransform;\n\n if (bbox) {\n var width = bbox[2] - bbox[0];\n var height = bbox[3] - bbox[1];\n this.ctx.rect(bbox[0], bbox[1], width, height);\n this.clip();\n this.endPath();\n }\n },\n paintFormXObjectEnd: function CanvasGraphics_paintFormXObjectEnd() {\n if (!this.contentVisible) {\n return;\n }\n\n this.restore();\n this.baseTransform = this.baseTransformStack.pop();\n },\n beginGroup: function CanvasGraphics_beginGroup(group) {\n if (!this.contentVisible) {\n return;\n }\n\n this.save();\n var currentCtx = this.ctx;\n\n if (!group.isolated) {\n (0, _util.info)(\"TODO: Support non-isolated groups.\");\n }\n\n if (group.knockout) {\n (0, _util.warn)(\"Knockout groups not supported.\");\n }\n\n var currentTransform = currentCtx.mozCurrentTransform;\n\n if (group.matrix) {\n currentCtx.transform.apply(currentCtx, group.matrix);\n }\n\n if (!group.bbox) {\n throw new Error(\"Bounding box is required.\");\n }\n\n var bounds = _util.Util.getAxialAlignedBoundingBox(group.bbox, currentCtx.mozCurrentTransform);\n\n var canvasBounds = [0, 0, currentCtx.canvas.width, currentCtx.canvas.height];\n bounds = _util.Util.intersect(bounds, canvasBounds) || [0, 0, 0, 0];\n var offsetX = Math.floor(bounds[0]);\n var offsetY = Math.floor(bounds[1]);\n var drawnWidth = Math.max(Math.ceil(bounds[2]) - offsetX, 1);\n var drawnHeight = Math.max(Math.ceil(bounds[3]) - offsetY, 1);\n var scaleX = 1,\n scaleY = 1;\n\n if (drawnWidth > MAX_GROUP_SIZE) {\n scaleX = drawnWidth / MAX_GROUP_SIZE;\n drawnWidth = MAX_GROUP_SIZE;\n }\n\n if (drawnHeight > MAX_GROUP_SIZE) {\n scaleY = drawnHeight / MAX_GROUP_SIZE;\n drawnHeight = MAX_GROUP_SIZE;\n }\n\n var cacheId = \"groupAt\" + this.groupLevel;\n\n if (group.smask) {\n cacheId += \"_smask_\" + this.smaskCounter++ % 2;\n }\n\n var scratchCanvas = this.cachedCanvases.getCanvas(cacheId, drawnWidth, drawnHeight, true);\n var groupCtx = scratchCanvas.context;\n groupCtx.scale(1 / scaleX, 1 / scaleY);\n groupCtx.translate(-offsetX, -offsetY);\n groupCtx.transform.apply(groupCtx, currentTransform);\n\n if (group.smask) {\n this.smaskStack.push({\n canvas: scratchCanvas.canvas,\n context: groupCtx,\n offsetX,\n offsetY,\n scaleX,\n scaleY,\n subtype: group.smask.subtype,\n backdrop: group.smask.backdrop,\n transferMap: group.smask.transferMap || null,\n startTransformInverse: null\n });\n } else {\n currentCtx.setTransform(1, 0, 0, 1, 0, 0);\n currentCtx.translate(offsetX, offsetY);\n currentCtx.scale(scaleX, scaleY);\n }\n\n copyCtxState(currentCtx, groupCtx);\n this.ctx = groupCtx;\n this.setGState([[\"BM\", \"source-over\"], [\"ca\", 1], [\"CA\", 1]]);\n this.groupStack.push(currentCtx);\n this.groupLevel++;\n this.current.activeSMask = null;\n },\n endGroup: function CanvasGraphics_endGroup(group) {\n if (!this.contentVisible) {\n return;\n }\n\n this.groupLevel--;\n var groupCtx = this.ctx;\n this.ctx = this.groupStack.pop();\n\n if (this.ctx.imageSmoothingEnabled !== undefined) {\n this.ctx.imageSmoothingEnabled = false;\n } else {\n this.ctx.mozImageSmoothingEnabled = false;\n }\n\n if (group.smask) {\n this.tempSMask = this.smaskStack.pop();\n } else {\n this.ctx.drawImage(groupCtx.canvas, 0, 0);\n }\n\n this.restore();\n },\n beginAnnotations: function CanvasGraphics_beginAnnotations() {\n this.save();\n\n if (this.baseTransform) {\n this.ctx.setTransform.apply(this.ctx, this.baseTransform);\n }\n },\n endAnnotations: function CanvasGraphics_endAnnotations() {\n this.restore();\n },\n beginAnnotation: function CanvasGraphics_beginAnnotation(rect, transform, matrix) {\n this.save();\n resetCtxToDefault(this.ctx);\n this.current = new CanvasExtraState();\n\n if (Array.isArray(rect) && rect.length === 4) {\n var width = rect[2] - rect[0];\n var height = rect[3] - rect[1];\n this.ctx.rect(rect[0], rect[1], width, height);\n this.clip();\n this.endPath();\n }\n\n this.transform.apply(this, transform);\n this.transform.apply(this, matrix);\n },\n endAnnotation: function CanvasGraphics_endAnnotation() {\n this.restore();\n },\n paintImageMaskXObject: function CanvasGraphics_paintImageMaskXObject(img) {\n if (!this.contentVisible) {\n return;\n }\n\n var ctx = this.ctx;\n var width = img.width,\n height = img.height;\n var fillColor = this.current.fillColor;\n var isPatternFill = this.current.patternFill;\n var glyph = this.processingType3;\n\n if (COMPILE_TYPE3_GLYPHS && glyph && glyph.compiled === undefined) {\n if (width <= MAX_SIZE_TO_COMPILE && height <= MAX_SIZE_TO_COMPILE) {\n glyph.compiled = compileType3Glyph({\n data: img.data,\n width,\n height\n });\n } else {\n glyph.compiled = null;\n }\n }\n\n if (glyph && glyph.compiled) {\n glyph.compiled(ctx);\n return;\n }\n\n var maskCanvas = this.cachedCanvases.getCanvas(\"maskCanvas\", width, height);\n var maskCtx = maskCanvas.context;\n maskCtx.save();\n putBinaryImageMask(maskCtx, img);\n maskCtx.globalCompositeOperation = \"source-in\";\n maskCtx.fillStyle = isPatternFill ? fillColor.getPattern(maskCtx, this) : fillColor;\n maskCtx.fillRect(0, 0, width, height);\n maskCtx.restore();\n this.paintInlineImageXObject(maskCanvas.canvas);\n },\n\n paintImageMaskXObjectRepeat(imgData, scaleX, skewX = 0, skewY = 0, scaleY, positions) {\n if (!this.contentVisible) {\n return;\n }\n\n var width = imgData.width;\n var height = imgData.height;\n var fillColor = this.current.fillColor;\n var isPatternFill = this.current.patternFill;\n var maskCanvas = this.cachedCanvases.getCanvas(\"maskCanvas\", width, height);\n var maskCtx = maskCanvas.context;\n maskCtx.save();\n putBinaryImageMask(maskCtx, imgData);\n maskCtx.globalCompositeOperation = \"source-in\";\n maskCtx.fillStyle = isPatternFill ? fillColor.getPattern(maskCtx, this) : fillColor;\n maskCtx.fillRect(0, 0, width, height);\n maskCtx.restore();\n var ctx = this.ctx;\n\n for (var i = 0, ii = positions.length; i < ii; i += 2) {\n ctx.save();\n ctx.transform(scaleX, skewX, skewY, scaleY, positions[i], positions[i + 1]);\n ctx.scale(1, -1);\n ctx.drawImage(maskCanvas.canvas, 0, 0, width, height, 0, -1, 1, 1);\n ctx.restore();\n }\n },\n\n paintImageMaskXObjectGroup: function CanvasGraphics_paintImageMaskXObjectGroup(images) {\n if (!this.contentVisible) {\n return;\n }\n\n var ctx = this.ctx;\n var fillColor = this.current.fillColor;\n var isPatternFill = this.current.patternFill;\n\n for (var i = 0, ii = images.length; i < ii; i++) {\n var image = images[i];\n var width = image.width,\n height = image.height;\n var maskCanvas = this.cachedCanvases.getCanvas(\"maskCanvas\", width, height);\n var maskCtx = maskCanvas.context;\n maskCtx.save();\n putBinaryImageMask(maskCtx, image);\n maskCtx.globalCompositeOperation = \"source-in\";\n maskCtx.fillStyle = isPatternFill ? fillColor.getPattern(maskCtx, this) : fillColor;\n maskCtx.fillRect(0, 0, width, height);\n maskCtx.restore();\n ctx.save();\n ctx.transform.apply(ctx, image.transform);\n ctx.scale(1, -1);\n ctx.drawImage(maskCanvas.canvas, 0, 0, width, height, 0, -1, 1, 1);\n ctx.restore();\n }\n },\n paintImageXObject: function CanvasGraphics_paintImageXObject(objId) {\n if (!this.contentVisible) {\n return;\n }\n\n const imgData = objId.startsWith(\"g_\") ? this.commonObjs.get(objId) : this.objs.get(objId);\n\n if (!imgData) {\n (0, _util.warn)(\"Dependent image isn't ready yet\");\n return;\n }\n\n this.paintInlineImageXObject(imgData);\n },\n paintImageXObjectRepeat: function CanvasGraphics_paintImageXObjectRepeat(objId, scaleX, scaleY, positions) {\n if (!this.contentVisible) {\n return;\n }\n\n const imgData = objId.startsWith(\"g_\") ? this.commonObjs.get(objId) : this.objs.get(objId);\n\n if (!imgData) {\n (0, _util.warn)(\"Dependent image isn't ready yet\");\n return;\n }\n\n var width = imgData.width;\n var height = imgData.height;\n var map = [];\n\n for (var i = 0, ii = positions.length; i < ii; i += 2) {\n map.push({\n transform: [scaleX, 0, 0, scaleY, positions[i], positions[i + 1]],\n x: 0,\n y: 0,\n w: width,\n h: height\n });\n }\n\n this.paintInlineImageXObjectGroup(imgData, map);\n },\n paintInlineImageXObject: function CanvasGraphics_paintInlineImageXObject(imgData) {\n if (!this.contentVisible) {\n return;\n }\n\n var width = imgData.width;\n var height = imgData.height;\n var ctx = this.ctx;\n this.save();\n ctx.scale(1 / width, -1 / height);\n var currentTransform = ctx.mozCurrentTransformInverse;\n var a = currentTransform[0],\n b = currentTransform[1];\n var widthScale = Math.max(Math.sqrt(a * a + b * b), 1);\n var c = currentTransform[2],\n d = currentTransform[3];\n var heightScale = Math.max(Math.sqrt(c * c + d * d), 1);\n var imgToPaint, tmpCanvas;\n\n if (typeof HTMLElement === \"function\" && imgData instanceof HTMLElement || !imgData.data) {\n imgToPaint = imgData;\n } else {\n tmpCanvas = this.cachedCanvases.getCanvas(\"inlineImage\", width, height);\n var tmpCtx = tmpCanvas.context;\n putBinaryImageData(tmpCtx, imgData, this.current.transferMaps);\n imgToPaint = tmpCanvas.canvas;\n }\n\n var paintWidth = width,\n paintHeight = height;\n var tmpCanvasId = \"prescale1\";\n\n while (widthScale > 2 && paintWidth > 1 || heightScale > 2 && paintHeight > 1) {\n var newWidth = paintWidth,\n newHeight = paintHeight;\n\n if (widthScale > 2 && paintWidth > 1) {\n newWidth = Math.ceil(paintWidth / 2);\n widthScale /= paintWidth / newWidth;\n }\n\n if (heightScale > 2 && paintHeight > 1) {\n newHeight = Math.ceil(paintHeight / 2);\n heightScale /= paintHeight / newHeight;\n }\n\n tmpCanvas = this.cachedCanvases.getCanvas(tmpCanvasId, newWidth, newHeight);\n tmpCtx = tmpCanvas.context;\n tmpCtx.clearRect(0, 0, newWidth, newHeight);\n tmpCtx.drawImage(imgToPaint, 0, 0, paintWidth, paintHeight, 0, 0, newWidth, newHeight);\n imgToPaint = tmpCanvas.canvas;\n paintWidth = newWidth;\n paintHeight = newHeight;\n tmpCanvasId = tmpCanvasId === \"prescale1\" ? \"prescale2\" : \"prescale1\";\n }\n\n ctx.drawImage(imgToPaint, 0, 0, paintWidth, paintHeight, 0, -height, width, height);\n\n if (this.imageLayer) {\n var position = this.getCanvasPosition(0, -height);\n this.imageLayer.appendImage({\n imgData,\n left: position[0],\n top: position[1],\n width: width / currentTransform[0],\n height: height / currentTransform[3]\n });\n }\n\n this.restore();\n },\n paintInlineImageXObjectGroup: function CanvasGraphics_paintInlineImageXObjectGroup(imgData, map) {\n if (!this.contentVisible) {\n return;\n }\n\n var ctx = this.ctx;\n var w = imgData.width;\n var h = imgData.height;\n var tmpCanvas = this.cachedCanvases.getCanvas(\"inlineImage\", w, h);\n var tmpCtx = tmpCanvas.context;\n putBinaryImageData(tmpCtx, imgData, this.current.transferMaps);\n\n for (var i = 0, ii = map.length; i < ii; i++) {\n var entry = map[i];\n ctx.save();\n ctx.transform.apply(ctx, entry.transform);\n ctx.scale(1, -1);\n ctx.drawImage(tmpCanvas.canvas, entry.x, entry.y, entry.w, entry.h, 0, -1, 1, 1);\n\n if (this.imageLayer) {\n var position = this.getCanvasPosition(entry.x, entry.y);\n this.imageLayer.appendImage({\n imgData,\n left: position[0],\n top: position[1],\n width: w,\n height: h\n });\n }\n\n ctx.restore();\n }\n },\n paintSolidColorImageMask: function CanvasGraphics_paintSolidColorImageMask() {\n if (!this.contentVisible) {\n return;\n }\n\n this.ctx.fillRect(0, 0, 1, 1);\n },\n markPoint: function CanvasGraphics_markPoint(tag) {},\n markPointProps: function CanvasGraphics_markPointProps(tag, properties) {},\n beginMarkedContent: function CanvasGraphics_beginMarkedContent(tag) {\n this.markedContentStack.push({\n visible: true\n });\n },\n beginMarkedContentProps: function CanvasGraphics_beginMarkedContentProps(tag, properties) {\n if (tag === \"OC\") {\n this.markedContentStack.push({\n visible: this.optionalContentConfig.isVisible(properties)\n });\n } else {\n this.markedContentStack.push({\n visible: true\n });\n }\n\n this.contentVisible = this.isContentVisible();\n },\n endMarkedContent: function CanvasGraphics_endMarkedContent() {\n this.markedContentStack.pop();\n this.contentVisible = this.isContentVisible();\n },\n beginCompat: function CanvasGraphics_beginCompat() {},\n endCompat: function CanvasGraphics_endCompat() {},\n consumePath: function CanvasGraphics_consumePath() {\n var ctx = this.ctx;\n\n if (this.pendingClip) {\n if (this.pendingClip === EO_CLIP) {\n ctx.clip(\"evenodd\");\n } else {\n ctx.clip();\n }\n\n this.pendingClip = null;\n }\n\n ctx.beginPath();\n },\n\n getSinglePixelWidth(scale) {\n if (this._cachedGetSinglePixelWidth === null) {\n const inverse = this.ctx.mozCurrentTransformInverse;\n this._cachedGetSinglePixelWidth = Math.sqrt(Math.max(inverse[0] * inverse[0] + inverse[1] * inverse[1], inverse[2] * inverse[2] + inverse[3] * inverse[3]));\n }\n\n return this._cachedGetSinglePixelWidth;\n },\n\n getCanvasPosition: function CanvasGraphics_getCanvasPosition(x, y) {\n var transform = this.ctx.mozCurrentTransform;\n return [transform[0] * x + transform[2] * y + transform[4], transform[1] * x + transform[3] * y + transform[5]];\n },\n isContentVisible: function CanvasGraphics_isContentVisible() {\n for (let i = this.markedContentStack.length - 1; i >= 0; i--) {\n if (!this.markedContentStack[i].visible) {\n return false;\n }\n }\n\n return true;\n }\n };\n\n for (var op in _util.OPS) {\n CanvasGraphics.prototype[_util.OPS[op]] = CanvasGraphics.prototype[op];\n }\n\n return CanvasGraphics;\n}();\n\nexports.CanvasGraphics = CanvasGraphics;\n\n/***/ }),\n/* 11 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getShadingPatternFromIR = getShadingPatternFromIR;\nexports.TilingPattern = void 0;\n\nvar _util = __w_pdfjs_require__(2);\n\nvar ShadingIRs = {};\n\nfunction applyBoundingBox(ctx, bbox) {\n if (!bbox || typeof Path2D === \"undefined\") {\n return;\n }\n\n const width = bbox[2] - bbox[0];\n const height = bbox[3] - bbox[1];\n const region = new Path2D();\n region.rect(bbox[0], bbox[1], width, height);\n ctx.clip(region);\n}\n\nShadingIRs.RadialAxial = {\n fromIR: function RadialAxial_fromIR(raw) {\n var type = raw[1];\n var bbox = raw[2];\n var colorStops = raw[3];\n var p0 = raw[4];\n var p1 = raw[5];\n var r0 = raw[6];\n var r1 = raw[7];\n return {\n type: \"Pattern\",\n getPattern: function RadialAxial_getPattern(ctx) {\n applyBoundingBox(ctx, bbox);\n var grad;\n\n if (type === \"axial\") {\n grad = ctx.createLinearGradient(p0[0], p0[1], p1[0], p1[1]);\n } else if (type === \"radial\") {\n grad = ctx.createRadialGradient(p0[0], p0[1], r0, p1[0], p1[1], r1);\n }\n\n for (var i = 0, ii = colorStops.length; i < ii; ++i) {\n var c = colorStops[i];\n grad.addColorStop(c[0], c[1]);\n }\n\n return grad;\n }\n };\n }\n};\n\nvar createMeshCanvas = function createMeshCanvasClosure() {\n function drawTriangle(data, context, p1, p2, p3, c1, c2, c3) {\n var coords = context.coords,\n colors = context.colors;\n var bytes = data.data,\n rowSize = data.width * 4;\n var tmp;\n\n if (coords[p1 + 1] > coords[p2 + 1]) {\n tmp = p1;\n p1 = p2;\n p2 = tmp;\n tmp = c1;\n c1 = c2;\n c2 = tmp;\n }\n\n if (coords[p2 + 1] > coords[p3 + 1]) {\n tmp = p2;\n p2 = p3;\n p3 = tmp;\n tmp = c2;\n c2 = c3;\n c3 = tmp;\n }\n\n if (coords[p1 + 1] > coords[p2 + 1]) {\n tmp = p1;\n p1 = p2;\n p2 = tmp;\n tmp = c1;\n c1 = c2;\n c2 = tmp;\n }\n\n var x1 = (coords[p1] + context.offsetX) * context.scaleX;\n var y1 = (coords[p1 + 1] + context.offsetY) * context.scaleY;\n var x2 = (coords[p2] + context.offsetX) * context.scaleX;\n var y2 = (coords[p2 + 1] + context.offsetY) * context.scaleY;\n var x3 = (coords[p3] + context.offsetX) * context.scaleX;\n var y3 = (coords[p3 + 1] + context.offsetY) * context.scaleY;\n\n if (y1 >= y3) {\n return;\n }\n\n var c1r = colors[c1],\n c1g = colors[c1 + 1],\n c1b = colors[c1 + 2];\n var c2r = colors[c2],\n c2g = colors[c2 + 1],\n c2b = colors[c2 + 2];\n var c3r = colors[c3],\n c3g = colors[c3 + 1],\n c3b = colors[c3 + 2];\n var minY = Math.round(y1),\n maxY = Math.round(y3);\n var xa, car, cag, cab;\n var xb, cbr, cbg, cbb;\n\n for (var y = minY; y <= maxY; y++) {\n if (y < y2) {\n let k;\n\n if (y < y1) {\n k = 0;\n } else if (y1 === y2) {\n k = 1;\n } else {\n k = (y1 - y) / (y1 - y2);\n }\n\n xa = x1 - (x1 - x2) * k;\n car = c1r - (c1r - c2r) * k;\n cag = c1g - (c1g - c2g) * k;\n cab = c1b - (c1b - c2b) * k;\n } else {\n let k;\n\n if (y > y3) {\n k = 1;\n } else if (y2 === y3) {\n k = 0;\n } else {\n k = (y2 - y) / (y2 - y3);\n }\n\n xa = x2 - (x2 - x3) * k;\n car = c2r - (c2r - c3r) * k;\n cag = c2g - (c2g - c3g) * k;\n cab = c2b - (c2b - c3b) * k;\n }\n\n let k;\n\n if (y < y1) {\n k = 0;\n } else if (y > y3) {\n k = 1;\n } else {\n k = (y1 - y) / (y1 - y3);\n }\n\n xb = x1 - (x1 - x3) * k;\n cbr = c1r - (c1r - c3r) * k;\n cbg = c1g - (c1g - c3g) * k;\n cbb = c1b - (c1b - c3b) * k;\n var x1_ = Math.round(Math.min(xa, xb));\n var x2_ = Math.round(Math.max(xa, xb));\n var j = rowSize * y + x1_ * 4;\n\n for (var x = x1_; x <= x2_; x++) {\n k = (xa - x) / (xa - xb);\n\n if (k < 0) {\n k = 0;\n } else if (k > 1) {\n k = 1;\n }\n\n bytes[j++] = car - (car - cbr) * k | 0;\n bytes[j++] = cag - (cag - cbg) * k | 0;\n bytes[j++] = cab - (cab - cbb) * k | 0;\n bytes[j++] = 255;\n }\n }\n }\n\n function drawFigure(data, figure, context) {\n var ps = figure.coords;\n var cs = figure.colors;\n var i, ii;\n\n switch (figure.type) {\n case \"lattice\":\n var verticesPerRow = figure.verticesPerRow;\n var rows = Math.floor(ps.length / verticesPerRow) - 1;\n var cols = verticesPerRow - 1;\n\n for (i = 0; i < rows; i++) {\n var q = i * verticesPerRow;\n\n for (var j = 0; j < cols; j++, q++) {\n drawTriangle(data, context, ps[q], ps[q + 1], ps[q + verticesPerRow], cs[q], cs[q + 1], cs[q + verticesPerRow]);\n drawTriangle(data, context, ps[q + verticesPerRow + 1], ps[q + 1], ps[q + verticesPerRow], cs[q + verticesPerRow + 1], cs[q + 1], cs[q + verticesPerRow]);\n }\n }\n\n break;\n\n case \"triangles\":\n for (i = 0, ii = ps.length; i < ii; i += 3) {\n drawTriangle(data, context, ps[i], ps[i + 1], ps[i + 2], cs[i], cs[i + 1], cs[i + 2]);\n }\n\n break;\n\n default:\n throw new Error(\"illegal figure\");\n }\n }\n\n function createMeshCanvas(bounds, combinesScale, coords, colors, figures, backgroundColor, cachedCanvases, webGLContext) {\n var EXPECTED_SCALE = 1.1;\n var MAX_PATTERN_SIZE = 3000;\n var BORDER_SIZE = 2;\n var offsetX = Math.floor(bounds[0]);\n var offsetY = Math.floor(bounds[1]);\n var boundsWidth = Math.ceil(bounds[2]) - offsetX;\n var boundsHeight = Math.ceil(bounds[3]) - offsetY;\n var width = Math.min(Math.ceil(Math.abs(boundsWidth * combinesScale[0] * EXPECTED_SCALE)), MAX_PATTERN_SIZE);\n var height = Math.min(Math.ceil(Math.abs(boundsHeight * combinesScale[1] * EXPECTED_SCALE)), MAX_PATTERN_SIZE);\n var scaleX = boundsWidth / width;\n var scaleY = boundsHeight / height;\n var context = {\n coords,\n colors,\n offsetX: -offsetX,\n offsetY: -offsetY,\n scaleX: 1 / scaleX,\n scaleY: 1 / scaleY\n };\n var paddedWidth = width + BORDER_SIZE * 2;\n var paddedHeight = height + BORDER_SIZE * 2;\n var canvas, tmpCanvas, i, ii;\n\n if (webGLContext.isEnabled) {\n canvas = webGLContext.drawFigures({\n width,\n height,\n backgroundColor,\n figures,\n context\n });\n tmpCanvas = cachedCanvases.getCanvas(\"mesh\", paddedWidth, paddedHeight, false);\n tmpCanvas.context.drawImage(canvas, BORDER_SIZE, BORDER_SIZE);\n canvas = tmpCanvas.canvas;\n } else {\n tmpCanvas = cachedCanvases.getCanvas(\"mesh\", paddedWidth, paddedHeight, false);\n var tmpCtx = tmpCanvas.context;\n var data = tmpCtx.createImageData(width, height);\n\n if (backgroundColor) {\n var bytes = data.data;\n\n for (i = 0, ii = bytes.length; i < ii; i += 4) {\n bytes[i] = backgroundColor[0];\n bytes[i + 1] = backgroundColor[1];\n bytes[i + 2] = backgroundColor[2];\n bytes[i + 3] = 255;\n }\n }\n\n for (i = 0; i < figures.length; i++) {\n drawFigure(data, figures[i], context);\n }\n\n tmpCtx.putImageData(data, BORDER_SIZE, BORDER_SIZE);\n canvas = tmpCanvas.canvas;\n }\n\n return {\n canvas,\n offsetX: offsetX - BORDER_SIZE * scaleX,\n offsetY: offsetY - BORDER_SIZE * scaleY,\n scaleX,\n scaleY\n };\n }\n\n return createMeshCanvas;\n}();\n\nShadingIRs.Mesh = {\n fromIR: function Mesh_fromIR(raw) {\n var coords = raw[2];\n var colors = raw[3];\n var figures = raw[4];\n var bounds = raw[5];\n var matrix = raw[6];\n var bbox = raw[7];\n var background = raw[8];\n return {\n type: \"Pattern\",\n getPattern: function Mesh_getPattern(ctx, owner, shadingFill) {\n applyBoundingBox(ctx, bbox);\n var scale;\n\n if (shadingFill) {\n scale = _util.Util.singularValueDecompose2dScale(ctx.mozCurrentTransform);\n } else {\n scale = _util.Util.singularValueDecompose2dScale(owner.baseTransform);\n\n if (matrix) {\n var matrixScale = _util.Util.singularValueDecompose2dScale(matrix);\n\n scale = [scale[0] * matrixScale[0], scale[1] * matrixScale[1]];\n }\n }\n\n var temporaryPatternCanvas = createMeshCanvas(bounds, scale, coords, colors, figures, shadingFill ? null : background, owner.cachedCanvases, owner.webGLContext);\n\n if (!shadingFill) {\n ctx.setTransform.apply(ctx, owner.baseTransform);\n\n if (matrix) {\n ctx.transform.apply(ctx, matrix);\n }\n }\n\n ctx.translate(temporaryPatternCanvas.offsetX, temporaryPatternCanvas.offsetY);\n ctx.scale(temporaryPatternCanvas.scaleX, temporaryPatternCanvas.scaleY);\n return ctx.createPattern(temporaryPatternCanvas.canvas, \"no-repeat\");\n }\n };\n }\n};\nShadingIRs.Dummy = {\n fromIR: function Dummy_fromIR() {\n return {\n type: \"Pattern\",\n getPattern: function Dummy_fromIR_getPattern() {\n return \"hotpink\";\n }\n };\n }\n};\n\nfunction getShadingPatternFromIR(raw) {\n var shadingIR = ShadingIRs[raw[0]];\n\n if (!shadingIR) {\n throw new Error(`Unknown IR type: ${raw[0]}`);\n }\n\n return shadingIR.fromIR(raw);\n}\n\nvar TilingPattern = function TilingPatternClosure() {\n var PaintType = {\n COLORED: 1,\n UNCOLORED: 2\n };\n var MAX_PATTERN_SIZE = 3000;\n\n function TilingPattern(IR, color, ctx, canvasGraphicsFactory, baseTransform) {\n this.operatorList = IR[2];\n this.matrix = IR[3] || [1, 0, 0, 1, 0, 0];\n this.bbox = IR[4];\n this.xstep = IR[5];\n this.ystep = IR[6];\n this.paintType = IR[7];\n this.tilingType = IR[8];\n this.color = color;\n this.canvasGraphicsFactory = canvasGraphicsFactory;\n this.baseTransform = baseTransform;\n this.type = \"Pattern\";\n this.ctx = ctx;\n }\n\n TilingPattern.prototype = {\n createPatternCanvas: function TilinPattern_createPatternCanvas(owner) {\n var operatorList = this.operatorList;\n var bbox = this.bbox;\n var xstep = this.xstep;\n var ystep = this.ystep;\n var paintType = this.paintType;\n var tilingType = this.tilingType;\n var color = this.color;\n var canvasGraphicsFactory = this.canvasGraphicsFactory;\n (0, _util.info)(\"TilingType: \" + tilingType);\n var x0 = bbox[0],\n y0 = bbox[1],\n x1 = bbox[2],\n y1 = bbox[3];\n\n var matrixScale = _util.Util.singularValueDecompose2dScale(this.matrix);\n\n var curMatrixScale = _util.Util.singularValueDecompose2dScale(this.baseTransform);\n\n var combinedScale = [matrixScale[0] * curMatrixScale[0], matrixScale[1] * curMatrixScale[1]];\n var dimx = this.getSizeAndScale(xstep, this.ctx.canvas.width, combinedScale[0]);\n var dimy = this.getSizeAndScale(ystep, this.ctx.canvas.height, combinedScale[1]);\n var tmpCanvas = owner.cachedCanvases.getCanvas(\"pattern\", dimx.size, dimy.size, true);\n var tmpCtx = tmpCanvas.context;\n var graphics = canvasGraphicsFactory.createCanvasGraphics(tmpCtx);\n graphics.groupLevel = owner.groupLevel;\n this.setFillAndStrokeStyleToContext(graphics, paintType, color);\n graphics.transform(dimx.scale, 0, 0, dimy.scale, 0, 0);\n graphics.transform(1, 0, 0, 1, -x0, -y0);\n this.clipBbox(graphics, bbox, x0, y0, x1, y1);\n graphics.executeOperatorList(operatorList);\n this.ctx.transform(1, 0, 0, 1, x0, y0);\n this.ctx.scale(1 / dimx.scale, 1 / dimy.scale);\n return tmpCanvas.canvas;\n },\n getSizeAndScale: function TilingPattern_getSizeAndScale(step, realOutputSize, scale) {\n step = Math.abs(step);\n var maxSize = Math.max(MAX_PATTERN_SIZE, realOutputSize);\n var size = Math.ceil(step * scale);\n\n if (size >= maxSize) {\n size = maxSize;\n } else {\n scale = size / step;\n }\n\n return {\n scale,\n size\n };\n },\n clipBbox: function clipBbox(graphics, bbox, x0, y0, x1, y1) {\n if (Array.isArray(bbox) && bbox.length === 4) {\n var bboxWidth = x1 - x0;\n var bboxHeight = y1 - y0;\n graphics.ctx.rect(x0, y0, bboxWidth, bboxHeight);\n graphics.clip();\n graphics.endPath();\n }\n },\n setFillAndStrokeStyleToContext: function setFillAndStrokeStyleToContext(graphics, paintType, color) {\n const context = graphics.ctx,\n current = graphics.current;\n\n switch (paintType) {\n case PaintType.COLORED:\n var ctx = this.ctx;\n context.fillStyle = ctx.fillStyle;\n context.strokeStyle = ctx.strokeStyle;\n current.fillColor = ctx.fillStyle;\n current.strokeColor = ctx.strokeStyle;\n break;\n\n case PaintType.UNCOLORED:\n var cssColor = _util.Util.makeCssRgb(color[0], color[1], color[2]);\n\n context.fillStyle = cssColor;\n context.strokeStyle = cssColor;\n current.fillColor = cssColor;\n current.strokeColor = cssColor;\n break;\n\n default:\n throw new _util.FormatError(`Unsupported paint type: ${paintType}`);\n }\n },\n getPattern: function TilingPattern_getPattern(ctx, owner) {\n ctx = this.ctx;\n ctx.setTransform.apply(ctx, this.baseTransform);\n ctx.transform.apply(ctx, this.matrix);\n var temporaryPatternCanvas = this.createPatternCanvas(owner);\n return ctx.createPattern(temporaryPatternCanvas, \"repeat\");\n }\n };\n return TilingPattern;\n}();\n\nexports.TilingPattern = TilingPattern;\n\n/***/ }),\n/* 12 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.GlobalWorkerOptions = void 0;\nconst GlobalWorkerOptions = Object.create(null);\nexports.GlobalWorkerOptions = GlobalWorkerOptions;\nGlobalWorkerOptions.workerPort = GlobalWorkerOptions.workerPort === undefined ? null : GlobalWorkerOptions.workerPort;\nGlobalWorkerOptions.workerSrc = GlobalWorkerOptions.workerSrc === undefined ? \"\" : GlobalWorkerOptions.workerSrc;\n\n/***/ }),\n/* 13 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.MessageHandler = void 0;\n\nvar _util = __w_pdfjs_require__(2);\n\nconst CallbackKind = {\n UNKNOWN: 0,\n DATA: 1,\n ERROR: 2\n};\nconst StreamKind = {\n UNKNOWN: 0,\n CANCEL: 1,\n CANCEL_COMPLETE: 2,\n CLOSE: 3,\n ENQUEUE: 4,\n ERROR: 5,\n PULL: 6,\n PULL_COMPLETE: 7,\n START_COMPLETE: 8\n};\n\nfunction wrapReason(reason) {\n if (typeof reason !== \"object\" || reason === null) {\n return reason;\n }\n\n switch (reason.name) {\n case \"AbortException\":\n return new _util.AbortException(reason.message);\n\n case \"MissingPDFException\":\n return new _util.MissingPDFException(reason.message);\n\n case \"UnexpectedResponseException\":\n return new _util.UnexpectedResponseException(reason.message, reason.status);\n\n case \"UnknownErrorException\":\n return new _util.UnknownErrorException(reason.message, reason.details);\n\n default:\n return new _util.UnknownErrorException(reason.message, reason.toString());\n }\n}\n\nclass MessageHandler {\n constructor(sourceName, targetName, comObj) {\n this.sourceName = sourceName;\n this.targetName = targetName;\n this.comObj = comObj;\n this.callbackId = 1;\n this.streamId = 1;\n this.postMessageTransfers = true;\n this.streamSinks = Object.create(null);\n this.streamControllers = Object.create(null);\n this.callbackCapabilities = Object.create(null);\n this.actionHandler = Object.create(null);\n\n this._onComObjOnMessage = event => {\n const data = event.data;\n\n if (data.targetName !== this.sourceName) {\n return;\n }\n\n if (data.stream) {\n this._processStreamMessage(data);\n\n return;\n }\n\n if (data.callback) {\n const callbackId = data.callbackId;\n const capability = this.callbackCapabilities[callbackId];\n\n if (!capability) {\n throw new Error(`Cannot resolve callback ${callbackId}`);\n }\n\n delete this.callbackCapabilities[callbackId];\n\n if (data.callback === CallbackKind.DATA) {\n capability.resolve(data.data);\n } else if (data.callback === CallbackKind.ERROR) {\n capability.reject(wrapReason(data.reason));\n } else {\n throw new Error(\"Unexpected callback case\");\n }\n\n return;\n }\n\n const action = this.actionHandler[data.action];\n\n if (!action) {\n throw new Error(`Unknown action from worker: ${data.action}`);\n }\n\n if (data.callbackId) {\n const cbSourceName = this.sourceName;\n const cbTargetName = data.sourceName;\n new Promise(function (resolve) {\n resolve(action(data.data));\n }).then(function (result) {\n comObj.postMessage({\n sourceName: cbSourceName,\n targetName: cbTargetName,\n callback: CallbackKind.DATA,\n callbackId: data.callbackId,\n data: result\n });\n }, function (reason) {\n comObj.postMessage({\n sourceName: cbSourceName,\n targetName: cbTargetName,\n callback: CallbackKind.ERROR,\n callbackId: data.callbackId,\n reason: wrapReason(reason)\n });\n });\n return;\n }\n\n if (data.streamId) {\n this._createStreamSink(data);\n\n return;\n }\n\n action(data.data);\n };\n\n comObj.addEventListener(\"message\", this._onComObjOnMessage);\n }\n\n on(actionName, handler) {\n const ah = this.actionHandler;\n\n if (ah[actionName]) {\n throw new Error(`There is already an actionName called \"${actionName}\"`);\n }\n\n ah[actionName] = handler;\n }\n\n send(actionName, data, transfers) {\n this._postMessage({\n sourceName: this.sourceName,\n targetName: this.targetName,\n action: actionName,\n data\n }, transfers);\n }\n\n sendWithPromise(actionName, data, transfers) {\n const callbackId = this.callbackId++;\n const capability = (0, _util.createPromiseCapability)();\n this.callbackCapabilities[callbackId] = capability;\n\n try {\n this._postMessage({\n sourceName: this.sourceName,\n targetName: this.targetName,\n action: actionName,\n callbackId,\n data\n }, transfers);\n } catch (ex) {\n capability.reject(ex);\n }\n\n return capability.promise;\n }\n\n sendWithStream(actionName, data, queueingStrategy, transfers) {\n const streamId = this.streamId++;\n const sourceName = this.sourceName;\n const targetName = this.targetName;\n const comObj = this.comObj;\n return new ReadableStream({\n start: controller => {\n const startCapability = (0, _util.createPromiseCapability)();\n this.streamControllers[streamId] = {\n controller,\n startCall: startCapability,\n pullCall: null,\n cancelCall: null,\n isClosed: false\n };\n\n this._postMessage({\n sourceName,\n targetName,\n action: actionName,\n streamId,\n data,\n desiredSize: controller.desiredSize\n }, transfers);\n\n return startCapability.promise;\n },\n pull: controller => {\n const pullCapability = (0, _util.createPromiseCapability)();\n this.streamControllers[streamId].pullCall = pullCapability;\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.PULL,\n streamId,\n desiredSize: controller.desiredSize\n });\n return pullCapability.promise;\n },\n cancel: reason => {\n (0, _util.assert)(reason instanceof Error, \"cancel must have a valid reason\");\n const cancelCapability = (0, _util.createPromiseCapability)();\n this.streamControllers[streamId].cancelCall = cancelCapability;\n this.streamControllers[streamId].isClosed = true;\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.CANCEL,\n streamId,\n reason: wrapReason(reason)\n });\n return cancelCapability.promise;\n }\n }, queueingStrategy);\n }\n\n _createStreamSink(data) {\n const self = this;\n const action = this.actionHandler[data.action];\n const streamId = data.streamId;\n const sourceName = this.sourceName;\n const targetName = data.sourceName;\n const comObj = this.comObj;\n const streamSink = {\n enqueue(chunk, size = 1, transfers) {\n if (this.isCancelled) {\n return;\n }\n\n const lastDesiredSize = this.desiredSize;\n this.desiredSize -= size;\n\n if (lastDesiredSize > 0 && this.desiredSize <= 0) {\n this.sinkCapability = (0, _util.createPromiseCapability)();\n this.ready = this.sinkCapability.promise;\n }\n\n self._postMessage({\n sourceName,\n targetName,\n stream: StreamKind.ENQUEUE,\n streamId,\n chunk\n }, transfers);\n },\n\n close() {\n if (this.isCancelled) {\n return;\n }\n\n this.isCancelled = true;\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.CLOSE,\n streamId\n });\n delete self.streamSinks[streamId];\n },\n\n error(reason) {\n (0, _util.assert)(reason instanceof Error, \"error must have a valid reason\");\n\n if (this.isCancelled) {\n return;\n }\n\n this.isCancelled = true;\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.ERROR,\n streamId,\n reason: wrapReason(reason)\n });\n },\n\n sinkCapability: (0, _util.createPromiseCapability)(),\n onPull: null,\n onCancel: null,\n isCancelled: false,\n desiredSize: data.desiredSize,\n ready: null\n };\n streamSink.sinkCapability.resolve();\n streamSink.ready = streamSink.sinkCapability.promise;\n this.streamSinks[streamId] = streamSink;\n new Promise(function (resolve) {\n resolve(action(data.data, streamSink));\n }).then(function () {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.START_COMPLETE,\n streamId,\n success: true\n });\n }, function (reason) {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.START_COMPLETE,\n streamId,\n reason: wrapReason(reason)\n });\n });\n }\n\n _processStreamMessage(data) {\n const streamId = data.streamId;\n const sourceName = this.sourceName;\n const targetName = data.sourceName;\n const comObj = this.comObj;\n\n switch (data.stream) {\n case StreamKind.START_COMPLETE:\n if (data.success) {\n this.streamControllers[streamId].startCall.resolve();\n } else {\n this.streamControllers[streamId].startCall.reject(wrapReason(data.reason));\n }\n\n break;\n\n case StreamKind.PULL_COMPLETE:\n if (data.success) {\n this.streamControllers[streamId].pullCall.resolve();\n } else {\n this.streamControllers[streamId].pullCall.reject(wrapReason(data.reason));\n }\n\n break;\n\n case StreamKind.PULL:\n if (!this.streamSinks[streamId]) {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.PULL_COMPLETE,\n streamId,\n success: true\n });\n break;\n }\n\n if (this.streamSinks[streamId].desiredSize <= 0 && data.desiredSize > 0) {\n this.streamSinks[streamId].sinkCapability.resolve();\n }\n\n this.streamSinks[streamId].desiredSize = data.desiredSize;\n const {\n onPull\n } = this.streamSinks[data.streamId];\n new Promise(function (resolve) {\n resolve(onPull && onPull());\n }).then(function () {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.PULL_COMPLETE,\n streamId,\n success: true\n });\n }, function (reason) {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.PULL_COMPLETE,\n streamId,\n reason: wrapReason(reason)\n });\n });\n break;\n\n case StreamKind.ENQUEUE:\n (0, _util.assert)(this.streamControllers[streamId], \"enqueue should have stream controller\");\n\n if (this.streamControllers[streamId].isClosed) {\n break;\n }\n\n this.streamControllers[streamId].controller.enqueue(data.chunk);\n break;\n\n case StreamKind.CLOSE:\n (0, _util.assert)(this.streamControllers[streamId], \"close should have stream controller\");\n\n if (this.streamControllers[streamId].isClosed) {\n break;\n }\n\n this.streamControllers[streamId].isClosed = true;\n this.streamControllers[streamId].controller.close();\n\n this._deleteStreamController(streamId);\n\n break;\n\n case StreamKind.ERROR:\n (0, _util.assert)(this.streamControllers[streamId], \"error should have stream controller\");\n this.streamControllers[streamId].controller.error(wrapReason(data.reason));\n\n this._deleteStreamController(streamId);\n\n break;\n\n case StreamKind.CANCEL_COMPLETE:\n if (data.success) {\n this.streamControllers[streamId].cancelCall.resolve();\n } else {\n this.streamControllers[streamId].cancelCall.reject(wrapReason(data.reason));\n }\n\n this._deleteStreamController(streamId);\n\n break;\n\n case StreamKind.CANCEL:\n if (!this.streamSinks[streamId]) {\n break;\n }\n\n const {\n onCancel\n } = this.streamSinks[data.streamId];\n new Promise(function (resolve) {\n resolve(onCancel && onCancel(wrapReason(data.reason)));\n }).then(function () {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.CANCEL_COMPLETE,\n streamId,\n success: true\n });\n }, function (reason) {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.CANCEL_COMPLETE,\n streamId,\n reason: wrapReason(reason)\n });\n });\n this.streamSinks[streamId].sinkCapability.reject(wrapReason(data.reason));\n this.streamSinks[streamId].isCancelled = true;\n delete this.streamSinks[streamId];\n break;\n\n default:\n throw new Error(\"Unexpected stream case\");\n }\n }\n\n async _deleteStreamController(streamId) {\n await Promise.allSettled([this.streamControllers[streamId].startCall, this.streamControllers[streamId].pullCall, this.streamControllers[streamId].cancelCall].map(function (capability) {\n return capability && capability.promise;\n }));\n delete this.streamControllers[streamId];\n }\n\n _postMessage(message, transfers) {\n if (transfers && this.postMessageTransfers) {\n this.comObj.postMessage(message, transfers);\n } else {\n this.comObj.postMessage(message);\n }\n }\n\n destroy() {\n this.comObj.removeEventListener(\"message\", this._onComObjOnMessage);\n }\n\n}\n\nexports.MessageHandler = MessageHandler;\n\n/***/ }),\n/* 14 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Metadata = void 0;\n\nvar _util = __w_pdfjs_require__(2);\n\nvar _xml_parser = __w_pdfjs_require__(15);\n\nclass Metadata {\n constructor(data) {\n (0, _util.assert)(typeof data === \"string\", \"Metadata: input is not a string\");\n data = this._repair(data);\n const parser = new _xml_parser.SimpleXMLParser();\n const xmlDocument = parser.parseFromString(data);\n this._metadataMap = new Map();\n\n if (xmlDocument) {\n this._parse(xmlDocument);\n }\n }\n\n _repair(data) {\n return data.replace(/^[^<]+/, \"\").replace(/>\\\\376\\\\377([^<]+)/g, function (all, codes) {\n const bytes = codes.replace(/\\\\([0-3])([0-7])([0-7])/g, function (code, d1, d2, d3) {\n return String.fromCharCode(d1 * 64 + d2 * 8 + d3 * 1);\n }).replace(/&(amp|apos|gt|lt|quot);/g, function (str, name) {\n switch (name) {\n case \"amp\":\n return \"&\";\n\n case \"apos\":\n return \"'\";\n\n case \"gt\":\n return \">\";\n\n case \"lt\":\n return \"<\";\n\n case \"quot\":\n return '\"';\n }\n\n throw new Error(`_repair: ${name} isn't defined.`);\n });\n let chars = \"\";\n\n for (let i = 0, ii = bytes.length; i < ii; i += 2) {\n const code = bytes.charCodeAt(i) * 256 + bytes.charCodeAt(i + 1);\n\n if (code >= 32 && code < 127 && code !== 60 && code !== 62 && code !== 38) {\n chars += String.fromCharCode(code);\n } else {\n chars += \"&#x\" + (0x10000 + code).toString(16).substring(1) + \";\";\n }\n }\n\n return \">\" + chars;\n });\n }\n\n _parse(xmlDocument) {\n let rdf = xmlDocument.documentElement;\n\n if (rdf.nodeName.toLowerCase() !== \"rdf:rdf\") {\n rdf = rdf.firstChild;\n\n while (rdf && rdf.nodeName.toLowerCase() !== \"rdf:rdf\") {\n rdf = rdf.nextSibling;\n }\n }\n\n const nodeName = rdf ? rdf.nodeName.toLowerCase() : null;\n\n if (!rdf || nodeName !== \"rdf:rdf\" || !rdf.hasChildNodes()) {\n return;\n }\n\n const children = rdf.childNodes;\n\n for (let i = 0, ii = children.length; i < ii; i++) {\n const desc = children[i];\n\n if (desc.nodeName.toLowerCase() !== \"rdf:description\") {\n continue;\n }\n\n for (let j = 0, jj = desc.childNodes.length; j < jj; j++) {\n if (desc.childNodes[j].nodeName.toLowerCase() !== \"#text\") {\n const entry = desc.childNodes[j];\n const name = entry.nodeName.toLowerCase();\n\n this._metadataMap.set(name, entry.textContent.trim());\n }\n }\n }\n }\n\n get(name) {\n return this._metadataMap.has(name) ? this._metadataMap.get(name) : null;\n }\n\n getAll() {\n return Object.fromEntries(this._metadataMap);\n }\n\n has(name) {\n return this._metadataMap.has(name);\n }\n\n}\n\nexports.Metadata = Metadata;\n\n/***/ }),\n/* 15 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.SimpleXMLParser = void 0;\nconst XMLParserErrorCode = {\n NoError: 0,\n EndOfDocument: -1,\n UnterminatedCdat: -2,\n UnterminatedXmlDeclaration: -3,\n UnterminatedDoctypeDeclaration: -4,\n UnterminatedComment: -5,\n MalformedElement: -6,\n OutOfMemory: -7,\n UnterminatedAttributeValue: -8,\n UnterminatedElement: -9,\n ElementNeverBegun: -10\n};\n\nfunction isWhitespace(s, index) {\n const ch = s[index];\n return ch === \" \" || ch === \"\\n\" || ch === \"\\r\" || ch === \"\\t\";\n}\n\nfunction isWhitespaceString(s) {\n for (let i = 0, ii = s.length; i < ii; i++) {\n if (!isWhitespace(s, i)) {\n return false;\n }\n }\n\n return true;\n}\n\nclass XMLParserBase {\n _resolveEntities(s) {\n return s.replace(/&([^;]+);/g, (all, entity) => {\n if (entity.substring(0, 2) === \"#x\") {\n return String.fromCharCode(parseInt(entity.substring(2), 16));\n } else if (entity.substring(0, 1) === \"#\") {\n return String.fromCharCode(parseInt(entity.substring(1), 10));\n }\n\n switch (entity) {\n case \"lt\":\n return \"<\";\n\n case \"gt\":\n return \">\";\n\n case \"amp\":\n return \"&\";\n\n case \"quot\":\n return '\"';\n }\n\n return this.onResolveEntity(entity);\n });\n }\n\n _parseContent(s, start) {\n const attributes = [];\n let pos = start;\n\n function skipWs() {\n while (pos < s.length && isWhitespace(s, pos)) {\n ++pos;\n }\n }\n\n while (pos < s.length && !isWhitespace(s, pos) && s[pos] !== \">\" && s[pos] !== \"/\") {\n ++pos;\n }\n\n const name = s.substring(start, pos);\n skipWs();\n\n while (pos < s.length && s[pos] !== \">\" && s[pos] !== \"/\" && s[pos] !== \"?\") {\n skipWs();\n let attrName = \"\",\n attrValue = \"\";\n\n while (pos < s.length && !isWhitespace(s, pos) && s[pos] !== \"=\") {\n attrName += s[pos];\n ++pos;\n }\n\n skipWs();\n\n if (s[pos] !== \"=\") {\n return null;\n }\n\n ++pos;\n skipWs();\n const attrEndChar = s[pos];\n\n if (attrEndChar !== '\"' && attrEndChar !== \"'\") {\n return null;\n }\n\n const attrEndIndex = s.indexOf(attrEndChar, ++pos);\n\n if (attrEndIndex < 0) {\n return null;\n }\n\n attrValue = s.substring(pos, attrEndIndex);\n attributes.push({\n name: attrName,\n value: this._resolveEntities(attrValue)\n });\n pos = attrEndIndex + 1;\n skipWs();\n }\n\n return {\n name,\n attributes,\n parsed: pos - start\n };\n }\n\n _parseProcessingInstruction(s, start) {\n let pos = start;\n\n function skipWs() {\n while (pos < s.length && isWhitespace(s, pos)) {\n ++pos;\n }\n }\n\n while (pos < s.length && !isWhitespace(s, pos) && s[pos] !== \">\" && s[pos] !== \"/\") {\n ++pos;\n }\n\n const name = s.substring(start, pos);\n skipWs();\n const attrStart = pos;\n\n while (pos < s.length && (s[pos] !== \"?\" || s[pos + 1] !== \">\")) {\n ++pos;\n }\n\n const value = s.substring(attrStart, pos);\n return {\n name,\n value,\n parsed: pos - start\n };\n }\n\n parseXml(s) {\n let i = 0;\n\n while (i < s.length) {\n const ch = s[i];\n let j = i;\n\n if (ch === \"<\") {\n ++j;\n const ch2 = s[j];\n let q;\n\n switch (ch2) {\n case \"/\":\n ++j;\n q = s.indexOf(\">\", j);\n\n if (q < 0) {\n this.onError(XMLParserErrorCode.UnterminatedElement);\n return;\n }\n\n this.onEndElement(s.substring(j, q));\n j = q + 1;\n break;\n\n case \"?\":\n ++j;\n\n const pi = this._parseProcessingInstruction(s, j);\n\n if (s.substring(j + pi.parsed, j + pi.parsed + 2) !== \"?>\") {\n this.onError(XMLParserErrorCode.UnterminatedXmlDeclaration);\n return;\n }\n\n this.onPi(pi.name, pi.value);\n j += pi.parsed + 2;\n break;\n\n case \"!\":\n if (s.substring(j + 1, j + 3) === \"--\") {\n q = s.indexOf(\"-->\", j + 3);\n\n if (q < 0) {\n this.onError(XMLParserErrorCode.UnterminatedComment);\n return;\n }\n\n this.onComment(s.substring(j + 3, q));\n j = q + 3;\n } else if (s.substring(j + 1, j + 8) === \"[CDATA[\") {\n q = s.indexOf(\"]]>\", j + 8);\n\n if (q < 0) {\n this.onError(XMLParserErrorCode.UnterminatedCdat);\n return;\n }\n\n this.onCdata(s.substring(j + 8, q));\n j = q + 3;\n } else if (s.substring(j + 1, j + 8) === \"DOCTYPE\") {\n const q2 = s.indexOf(\"[\", j + 8);\n let complexDoctype = false;\n q = s.indexOf(\">\", j + 8);\n\n if (q < 0) {\n this.onError(XMLParserErrorCode.UnterminatedDoctypeDeclaration);\n return;\n }\n\n if (q2 > 0 && q > q2) {\n q = s.indexOf(\"]>\", j + 8);\n\n if (q < 0) {\n this.onError(XMLParserErrorCode.UnterminatedDoctypeDeclaration);\n return;\n }\n\n complexDoctype = true;\n }\n\n const doctypeContent = s.substring(j + 8, q + (complexDoctype ? 1 : 0));\n this.onDoctype(doctypeContent);\n j = q + (complexDoctype ? 2 : 1);\n } else {\n this.onError(XMLParserErrorCode.MalformedElement);\n return;\n }\n\n break;\n\n default:\n const content = this._parseContent(s, j);\n\n if (content === null) {\n this.onError(XMLParserErrorCode.MalformedElement);\n return;\n }\n\n let isClosed = false;\n\n if (s.substring(j + content.parsed, j + content.parsed + 2) === \"/>\") {\n isClosed = true;\n } else if (s.substring(j + content.parsed, j + content.parsed + 1) !== \">\") {\n this.onError(XMLParserErrorCode.UnterminatedElement);\n return;\n }\n\n this.onBeginElement(content.name, content.attributes, isClosed);\n j += content.parsed + (isClosed ? 2 : 1);\n break;\n }\n } else {\n while (j < s.length && s[j] !== \"<\") {\n j++;\n }\n\n const text = s.substring(i, j);\n this.onText(this._resolveEntities(text));\n }\n\n i = j;\n }\n }\n\n onResolveEntity(name) {\n return `&${name};`;\n }\n\n onPi(name, value) {}\n\n onComment(text) {}\n\n onCdata(text) {}\n\n onDoctype(doctypeContent) {}\n\n onText(text) {}\n\n onBeginElement(name, attributes, isEmpty) {}\n\n onEndElement(name) {}\n\n onError(code) {}\n\n}\n\nclass SimpleDOMNode {\n constructor(nodeName, nodeValue) {\n this.nodeName = nodeName;\n this.nodeValue = nodeValue;\n Object.defineProperty(this, \"parentNode\", {\n value: null,\n writable: true\n });\n }\n\n get firstChild() {\n return this.childNodes && this.childNodes[0];\n }\n\n get nextSibling() {\n const childNodes = this.parentNode.childNodes;\n\n if (!childNodes) {\n return undefined;\n }\n\n const index = childNodes.indexOf(this);\n\n if (index === -1) {\n return undefined;\n }\n\n return childNodes[index + 1];\n }\n\n get textContent() {\n if (!this.childNodes) {\n return this.nodeValue || \"\";\n }\n\n return this.childNodes.map(function (child) {\n return child.textContent;\n }).join(\"\");\n }\n\n hasChildNodes() {\n return this.childNodes && this.childNodes.length > 0;\n }\n\n}\n\nclass SimpleXMLParser extends XMLParserBase {\n constructor() {\n super();\n this._currentFragment = null;\n this._stack = null;\n this._errorCode = XMLParserErrorCode.NoError;\n }\n\n parseFromString(data) {\n this._currentFragment = [];\n this._stack = [];\n this._errorCode = XMLParserErrorCode.NoError;\n this.parseXml(data);\n\n if (this._errorCode !== XMLParserErrorCode.NoError) {\n return undefined;\n }\n\n const [documentElement] = this._currentFragment;\n\n if (!documentElement) {\n return undefined;\n }\n\n return {\n documentElement\n };\n }\n\n onResolveEntity(name) {\n switch (name) {\n case \"apos\":\n return \"'\";\n }\n\n return super.onResolveEntity(name);\n }\n\n onText(text) {\n if (isWhitespaceString(text)) {\n return;\n }\n\n const node = new SimpleDOMNode(\"#text\", text);\n\n this._currentFragment.push(node);\n }\n\n onCdata(text) {\n const node = new SimpleDOMNode(\"#text\", text);\n\n this._currentFragment.push(node);\n }\n\n onBeginElement(name, attributes, isEmpty) {\n const node = new SimpleDOMNode(name);\n node.childNodes = [];\n\n this._currentFragment.push(node);\n\n if (isEmpty) {\n return;\n }\n\n this._stack.push(this._currentFragment);\n\n this._currentFragment = node.childNodes;\n }\n\n onEndElement(name) {\n this._currentFragment = this._stack.pop() || [];\n const lastElement = this._currentFragment[this._currentFragment.length - 1];\n\n if (!lastElement) {\n return;\n }\n\n for (let i = 0, ii = lastElement.childNodes.length; i < ii; i++) {\n lastElement.childNodes[i].parentNode = lastElement;\n }\n }\n\n onError(code) {\n this._errorCode = code;\n }\n\n}\n\nexports.SimpleXMLParser = SimpleXMLParser;\n\n/***/ }),\n/* 16 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.OptionalContentConfig = void 0;\n\nvar _util = __w_pdfjs_require__(2);\n\nclass OptionalContentGroup {\n constructor(name, intent) {\n this.visible = true;\n this.name = name;\n this.intent = intent;\n }\n\n}\n\nclass OptionalContentConfig {\n constructor(data) {\n this.name = null;\n this.creator = null;\n this._order = null;\n this._groups = new Map();\n\n if (data === null) {\n return;\n }\n\n this.name = data.name;\n this.creator = data.creator;\n this._order = data.order;\n\n for (const group of data.groups) {\n this._groups.set(group.id, new OptionalContentGroup(group.name, group.intent));\n }\n\n if (data.baseState === \"OFF\") {\n for (const group of this._groups) {\n group.visible = false;\n }\n }\n\n for (const on of data.on) {\n this._groups.get(on).visible = true;\n }\n\n for (const off of data.off) {\n this._groups.get(off).visible = false;\n }\n }\n\n isVisible(group) {\n if (group.type === \"OCG\") {\n if (!this._groups.has(group.id)) {\n (0, _util.warn)(`Optional content group not found: ${group.id}`);\n return true;\n }\n\n return this._groups.get(group.id).visible;\n } else if (group.type === \"OCMD\") {\n if (group.expression) {\n (0, _util.warn)(\"Visibility expression not supported yet.\");\n }\n\n if (!group.policy || group.policy === \"AnyOn\") {\n for (const id of group.ids) {\n if (!this._groups.has(id)) {\n (0, _util.warn)(`Optional content group not found: ${id}`);\n return true;\n }\n\n if (this._groups.get(id).visible) {\n return true;\n }\n }\n\n return false;\n } else if (group.policy === \"AllOn\") {\n for (const id of group.ids) {\n if (!this._groups.has(id)) {\n (0, _util.warn)(`Optional content group not found: ${id}`);\n return true;\n }\n\n if (!this._groups.get(id).visible) {\n return false;\n }\n }\n\n return true;\n } else if (group.policy === \"AnyOff\") {\n for (const id of group.ids) {\n if (!this._groups.has(id)) {\n (0, _util.warn)(`Optional content group not found: ${id}`);\n return true;\n }\n\n if (!this._groups.get(id).visible) {\n return true;\n }\n }\n\n return false;\n } else if (group.policy === \"AllOff\") {\n for (const id of group.ids) {\n if (!this._groups.has(id)) {\n (0, _util.warn)(`Optional content group not found: ${id}`);\n return true;\n }\n\n if (this._groups.get(id).visible) {\n return false;\n }\n }\n\n return true;\n }\n\n (0, _util.warn)(`Unknown optional content policy ${group.policy}.`);\n return true;\n }\n\n (0, _util.warn)(`Unknown group type ${group.type}.`);\n return true;\n }\n\n setVisibility(id, visible = true) {\n if (!this._groups.has(id)) {\n (0, _util.warn)(`Optional content group not found: ${id}`);\n return;\n }\n\n this._groups.get(id).visible = !!visible;\n }\n\n getOrder() {\n if (!this._groups.size) {\n return null;\n }\n\n if (this._order) {\n return this._order.slice();\n }\n\n return Array.from(this._groups.keys());\n }\n\n getGroups() {\n if (!this._groups.size) {\n return null;\n }\n\n return Object.fromEntries(this._groups);\n }\n\n getGroup(id) {\n return this._groups.get(id) || null;\n }\n\n}\n\nexports.OptionalContentConfig = OptionalContentConfig;\n\n/***/ }),\n/* 17 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.PDFDataTransportStream = void 0;\n\nvar _util = __w_pdfjs_require__(2);\n\nclass PDFDataTransportStream {\n constructor(params, pdfDataRangeTransport) {\n (0, _util.assert)(pdfDataRangeTransport, 'PDFDataTransportStream - missing required \"pdfDataRangeTransport\" argument.');\n this._queuedChunks = [];\n this._progressiveDone = params.progressiveDone || false;\n const initialData = params.initialData;\n\n if (initialData && initialData.length > 0) {\n const buffer = new Uint8Array(initialData).buffer;\n\n this._queuedChunks.push(buffer);\n }\n\n this._pdfDataRangeTransport = pdfDataRangeTransport;\n this._isStreamingSupported = !params.disableStream;\n this._isRangeSupported = !params.disableRange;\n this._contentLength = params.length;\n this._fullRequestReader = null;\n this._rangeReaders = [];\n\n this._pdfDataRangeTransport.addRangeListener((begin, chunk) => {\n this._onReceiveData({\n begin,\n chunk\n });\n });\n\n this._pdfDataRangeTransport.addProgressListener((loaded, total) => {\n this._onProgress({\n loaded,\n total\n });\n });\n\n this._pdfDataRangeTransport.addProgressiveReadListener(chunk => {\n this._onReceiveData({\n chunk\n });\n });\n\n this._pdfDataRangeTransport.addProgressiveDoneListener(() => {\n this._onProgressiveDone();\n });\n\n this._pdfDataRangeTransport.transportReady();\n }\n\n _onReceiveData(args) {\n const buffer = new Uint8Array(args.chunk).buffer;\n\n if (args.begin === undefined) {\n if (this._fullRequestReader) {\n this._fullRequestReader._enqueue(buffer);\n } else {\n this._queuedChunks.push(buffer);\n }\n } else {\n const found = this._rangeReaders.some(function (rangeReader) {\n if (rangeReader._begin !== args.begin) {\n return false;\n }\n\n rangeReader._enqueue(buffer);\n\n return true;\n });\n\n (0, _util.assert)(found, \"_onReceiveData - no `PDFDataTransportStreamRangeReader` instance found.\");\n }\n }\n\n get _progressiveDataLength() {\n return this._fullRequestReader ? this._fullRequestReader._loaded : 0;\n }\n\n _onProgress(evt) {\n if (evt.total === undefined) {\n const firstReader = this._rangeReaders[0];\n\n if (firstReader && firstReader.onProgress) {\n firstReader.onProgress({\n loaded: evt.loaded\n });\n }\n } else {\n const fullReader = this._fullRequestReader;\n\n if (fullReader && fullReader.onProgress) {\n fullReader.onProgress({\n loaded: evt.loaded,\n total: evt.total\n });\n }\n }\n }\n\n _onProgressiveDone() {\n if (this._fullRequestReader) {\n this._fullRequestReader.progressiveDone();\n }\n\n this._progressiveDone = true;\n }\n\n _removeRangeReader(reader) {\n const i = this._rangeReaders.indexOf(reader);\n\n if (i >= 0) {\n this._rangeReaders.splice(i, 1);\n }\n }\n\n getFullReader() {\n (0, _util.assert)(!this._fullRequestReader, \"PDFDataTransportStream.getFullReader can only be called once.\");\n const queuedChunks = this._queuedChunks;\n this._queuedChunks = null;\n return new PDFDataTransportStreamReader(this, queuedChunks, this._progressiveDone);\n }\n\n getRangeReader(begin, end) {\n if (end <= this._progressiveDataLength) {\n return null;\n }\n\n const reader = new PDFDataTransportStreamRangeReader(this, begin, end);\n\n this._pdfDataRangeTransport.requestDataRange(begin, end);\n\n this._rangeReaders.push(reader);\n\n return reader;\n }\n\n cancelAllRequests(reason) {\n if (this._fullRequestReader) {\n this._fullRequestReader.cancel(reason);\n }\n\n const readers = this._rangeReaders.slice(0);\n\n readers.forEach(function (rangeReader) {\n rangeReader.cancel(reason);\n });\n\n this._pdfDataRangeTransport.abort();\n }\n\n}\n\nexports.PDFDataTransportStream = PDFDataTransportStream;\n\nclass PDFDataTransportStreamReader {\n constructor(stream, queuedChunks, progressiveDone = false) {\n this._stream = stream;\n this._done = progressiveDone || false;\n this._filename = null;\n this._queuedChunks = queuedChunks || [];\n this._loaded = 0;\n\n for (const chunk of this._queuedChunks) {\n this._loaded += chunk.byteLength;\n }\n\n this._requests = [];\n this._headersReady = Promise.resolve();\n stream._fullRequestReader = this;\n this.onProgress = null;\n }\n\n _enqueue(chunk) {\n if (this._done) {\n return;\n }\n\n if (this._requests.length > 0) {\n const requestCapability = this._requests.shift();\n\n requestCapability.resolve({\n value: chunk,\n done: false\n });\n } else {\n this._queuedChunks.push(chunk);\n }\n\n this._loaded += chunk.byteLength;\n }\n\n get headersReady() {\n return this._headersReady;\n }\n\n get filename() {\n return this._filename;\n }\n\n get isRangeSupported() {\n return this._stream._isRangeSupported;\n }\n\n get isStreamingSupported() {\n return this._stream._isStreamingSupported;\n }\n\n get contentLength() {\n return this._stream._contentLength;\n }\n\n async read() {\n if (this._queuedChunks.length > 0) {\n const chunk = this._queuedChunks.shift();\n\n return {\n value: chunk,\n done: false\n };\n }\n\n if (this._done) {\n return {\n value: undefined,\n done: true\n };\n }\n\n const requestCapability = (0, _util.createPromiseCapability)();\n\n this._requests.push(requestCapability);\n\n return requestCapability.promise;\n }\n\n cancel(reason) {\n this._done = true;\n\n this._requests.forEach(function (requestCapability) {\n requestCapability.resolve({\n value: undefined,\n done: true\n });\n });\n\n this._requests = [];\n }\n\n progressiveDone() {\n if (this._done) {\n return;\n }\n\n this._done = true;\n }\n\n}\n\nclass PDFDataTransportStreamRangeReader {\n constructor(stream, begin, end) {\n this._stream = stream;\n this._begin = begin;\n this._end = end;\n this._queuedChunk = null;\n this._requests = [];\n this._done = false;\n this.onProgress = null;\n }\n\n _enqueue(chunk) {\n if (this._done) {\n return;\n }\n\n if (this._requests.length === 0) {\n this._queuedChunk = chunk;\n } else {\n const requestsCapability = this._requests.shift();\n\n requestsCapability.resolve({\n value: chunk,\n done: false\n });\n\n this._requests.forEach(function (requestCapability) {\n requestCapability.resolve({\n value: undefined,\n done: true\n });\n });\n\n this._requests = [];\n }\n\n this._done = true;\n\n this._stream._removeRangeReader(this);\n }\n\n get isStreamingSupported() {\n return false;\n }\n\n async read() {\n if (this._queuedChunk) {\n const chunk = this._queuedChunk;\n this._queuedChunk = null;\n return {\n value: chunk,\n done: false\n };\n }\n\n if (this._done) {\n return {\n value: undefined,\n done: true\n };\n }\n\n const requestCapability = (0, _util.createPromiseCapability)();\n\n this._requests.push(requestCapability);\n\n return requestCapability.promise;\n }\n\n cancel(reason) {\n this._done = true;\n\n this._requests.forEach(function (requestCapability) {\n requestCapability.resolve({\n value: undefined,\n done: true\n });\n });\n\n this._requests = [];\n\n this._stream._removeRangeReader(this);\n }\n\n}\n\n/***/ }),\n/* 18 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.WebGLContext = void 0;\n\nvar _util = __w_pdfjs_require__(2);\n\nclass WebGLContext {\n constructor({\n enable = false\n }) {\n this._enabled = enable === true;\n }\n\n get isEnabled() {\n let enabled = this._enabled;\n\n if (enabled) {\n enabled = WebGLUtils.tryInitGL();\n }\n\n return (0, _util.shadow)(this, \"isEnabled\", enabled);\n }\n\n composeSMask({\n layer,\n mask,\n properties\n }) {\n return WebGLUtils.composeSMask(layer, mask, properties);\n }\n\n drawFigures({\n width,\n height,\n backgroundColor,\n figures,\n context\n }) {\n return WebGLUtils.drawFigures(width, height, backgroundColor, figures, context);\n }\n\n clear() {\n WebGLUtils.cleanup();\n }\n\n}\n\nexports.WebGLContext = WebGLContext;\n\nvar WebGLUtils = function WebGLUtilsClosure() {\n function loadShader(gl, code, shaderType) {\n var shader = gl.createShader(shaderType);\n gl.shaderSource(shader, code);\n gl.compileShader(shader);\n var compiled = gl.getShaderParameter(shader, gl.COMPILE_STATUS);\n\n if (!compiled) {\n var errorMsg = gl.getShaderInfoLog(shader);\n throw new Error(\"Error during shader compilation: \" + errorMsg);\n }\n\n return shader;\n }\n\n function createVertexShader(gl, code) {\n return loadShader(gl, code, gl.VERTEX_SHADER);\n }\n\n function createFragmentShader(gl, code) {\n return loadShader(gl, code, gl.FRAGMENT_SHADER);\n }\n\n function createProgram(gl, shaders) {\n var program = gl.createProgram();\n\n for (var i = 0, ii = shaders.length; i < ii; ++i) {\n gl.attachShader(program, shaders[i]);\n }\n\n gl.linkProgram(program);\n var linked = gl.getProgramParameter(program, gl.LINK_STATUS);\n\n if (!linked) {\n var errorMsg = gl.getProgramInfoLog(program);\n throw new Error(\"Error during program linking: \" + errorMsg);\n }\n\n return program;\n }\n\n function createTexture(gl, image, textureId) {\n gl.activeTexture(textureId);\n var texture = gl.createTexture();\n gl.bindTexture(gl.TEXTURE_2D, texture);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, image);\n return texture;\n }\n\n var currentGL, currentCanvas;\n\n function generateGL() {\n if (currentGL) {\n return;\n }\n\n currentCanvas = document.createElement(\"canvas\");\n currentGL = currentCanvas.getContext(\"webgl\", {\n premultipliedalpha: false\n });\n }\n\n var smaskVertexShaderCode = \"\\\n attribute vec2 a_position; \\\n attribute vec2 a_texCoord; \\\n \\\n uniform vec2 u_resolution; \\\n \\\n varying vec2 v_texCoord; \\\n \\\n void main() { \\\n vec2 clipSpace = (a_position / u_resolution) * 2.0 - 1.0; \\\n gl_Position = vec4(clipSpace * vec2(1, -1), 0, 1); \\\n \\\n v_texCoord = a_texCoord; \\\n } \";\n var smaskFragmentShaderCode = \"\\\n precision mediump float; \\\n \\\n uniform vec4 u_backdrop; \\\n uniform int u_subtype; \\\n uniform sampler2D u_image; \\\n uniform sampler2D u_mask; \\\n \\\n varying vec2 v_texCoord; \\\n \\\n void main() { \\\n vec4 imageColor = texture2D(u_image, v_texCoord); \\\n vec4 maskColor = texture2D(u_mask, v_texCoord); \\\n if (u_backdrop.a > 0.0) { \\\n maskColor.rgb = maskColor.rgb * maskColor.a + \\\n u_backdrop.rgb * (1.0 - maskColor.a); \\\n } \\\n float lum; \\\n if (u_subtype == 0) { \\\n lum = maskColor.a; \\\n } else { \\\n lum = maskColor.r * 0.3 + maskColor.g * 0.59 + \\\n maskColor.b * 0.11; \\\n } \\\n imageColor.a *= lum; \\\n imageColor.rgb *= imageColor.a; \\\n gl_FragColor = imageColor; \\\n } \";\n var smaskCache = null;\n\n function initSmaskGL() {\n var canvas, gl;\n generateGL();\n canvas = currentCanvas;\n currentCanvas = null;\n gl = currentGL;\n currentGL = null;\n var vertexShader = createVertexShader(gl, smaskVertexShaderCode);\n var fragmentShader = createFragmentShader(gl, smaskFragmentShaderCode);\n var program = createProgram(gl, [vertexShader, fragmentShader]);\n gl.useProgram(program);\n var cache = {};\n cache.gl = gl;\n cache.canvas = canvas;\n cache.resolutionLocation = gl.getUniformLocation(program, \"u_resolution\");\n cache.positionLocation = gl.getAttribLocation(program, \"a_position\");\n cache.backdropLocation = gl.getUniformLocation(program, \"u_backdrop\");\n cache.subtypeLocation = gl.getUniformLocation(program, \"u_subtype\");\n var texCoordLocation = gl.getAttribLocation(program, \"a_texCoord\");\n var texLayerLocation = gl.getUniformLocation(program, \"u_image\");\n var texMaskLocation = gl.getUniformLocation(program, \"u_mask\");\n var texCoordBuffer = gl.createBuffer();\n gl.bindBuffer(gl.ARRAY_BUFFER, texCoordBuffer);\n gl.bufferData(gl.ARRAY_BUFFER, new Float32Array([0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 1.0, 1.0, 0.0, 1.0, 1.0]), gl.STATIC_DRAW);\n gl.enableVertexAttribArray(texCoordLocation);\n gl.vertexAttribPointer(texCoordLocation, 2, gl.FLOAT, false, 0, 0);\n gl.uniform1i(texLayerLocation, 0);\n gl.uniform1i(texMaskLocation, 1);\n smaskCache = cache;\n }\n\n function composeSMask(layer, mask, properties) {\n var width = layer.width,\n height = layer.height;\n\n if (!smaskCache) {\n initSmaskGL();\n }\n\n var cache = smaskCache,\n canvas = cache.canvas,\n gl = cache.gl;\n canvas.width = width;\n canvas.height = height;\n gl.viewport(0, 0, gl.drawingBufferWidth, gl.drawingBufferHeight);\n gl.uniform2f(cache.resolutionLocation, width, height);\n\n if (properties.backdrop) {\n gl.uniform4f(cache.resolutionLocation, properties.backdrop[0], properties.backdrop[1], properties.backdrop[2], 1);\n } else {\n gl.uniform4f(cache.resolutionLocation, 0, 0, 0, 0);\n }\n\n gl.uniform1i(cache.subtypeLocation, properties.subtype === \"Luminosity\" ? 1 : 0);\n var texture = createTexture(gl, layer, gl.TEXTURE0);\n var maskTexture = createTexture(gl, mask, gl.TEXTURE1);\n var buffer = gl.createBuffer();\n gl.bindBuffer(gl.ARRAY_BUFFER, buffer);\n gl.bufferData(gl.ARRAY_BUFFER, new Float32Array([0, 0, width, 0, 0, height, 0, height, width, 0, width, height]), gl.STATIC_DRAW);\n gl.enableVertexAttribArray(cache.positionLocation);\n gl.vertexAttribPointer(cache.positionLocation, 2, gl.FLOAT, false, 0, 0);\n gl.clearColor(0, 0, 0, 0);\n gl.enable(gl.BLEND);\n gl.blendFunc(gl.ONE, gl.ONE_MINUS_SRC_ALPHA);\n gl.clear(gl.COLOR_BUFFER_BIT);\n gl.drawArrays(gl.TRIANGLES, 0, 6);\n gl.flush();\n gl.deleteTexture(texture);\n gl.deleteTexture(maskTexture);\n gl.deleteBuffer(buffer);\n return canvas;\n }\n\n var figuresVertexShaderCode = \"\\\n attribute vec2 a_position; \\\n attribute vec3 a_color; \\\n \\\n uniform vec2 u_resolution; \\\n uniform vec2 u_scale; \\\n uniform vec2 u_offset; \\\n \\\n varying vec4 v_color; \\\n \\\n void main() { \\\n vec2 position = (a_position + u_offset) * u_scale; \\\n vec2 clipSpace = (position / u_resolution) * 2.0 - 1.0; \\\n gl_Position = vec4(clipSpace * vec2(1, -1), 0, 1); \\\n \\\n v_color = vec4(a_color / 255.0, 1.0); \\\n } \";\n var figuresFragmentShaderCode = \"\\\n precision mediump float; \\\n \\\n varying vec4 v_color; \\\n \\\n void main() { \\\n gl_FragColor = v_color; \\\n } \";\n var figuresCache = null;\n\n function initFiguresGL() {\n var canvas, gl;\n generateGL();\n canvas = currentCanvas;\n currentCanvas = null;\n gl = currentGL;\n currentGL = null;\n var vertexShader = createVertexShader(gl, figuresVertexShaderCode);\n var fragmentShader = createFragmentShader(gl, figuresFragmentShaderCode);\n var program = createProgram(gl, [vertexShader, fragmentShader]);\n gl.useProgram(program);\n var cache = {};\n cache.gl = gl;\n cache.canvas = canvas;\n cache.resolutionLocation = gl.getUniformLocation(program, \"u_resolution\");\n cache.scaleLocation = gl.getUniformLocation(program, \"u_scale\");\n cache.offsetLocation = gl.getUniformLocation(program, \"u_offset\");\n cache.positionLocation = gl.getAttribLocation(program, \"a_position\");\n cache.colorLocation = gl.getAttribLocation(program, \"a_color\");\n figuresCache = cache;\n }\n\n function drawFigures(width, height, backgroundColor, figures, context) {\n if (!figuresCache) {\n initFiguresGL();\n }\n\n var cache = figuresCache,\n canvas = cache.canvas,\n gl = cache.gl;\n canvas.width = width;\n canvas.height = height;\n gl.viewport(0, 0, gl.drawingBufferWidth, gl.drawingBufferHeight);\n gl.uniform2f(cache.resolutionLocation, width, height);\n var count = 0;\n var i, ii, rows;\n\n for (i = 0, ii = figures.length; i < ii; i++) {\n switch (figures[i].type) {\n case \"lattice\":\n rows = figures[i].coords.length / figures[i].verticesPerRow | 0;\n count += (rows - 1) * (figures[i].verticesPerRow - 1) * 6;\n break;\n\n case \"triangles\":\n count += figures[i].coords.length;\n break;\n }\n }\n\n var coords = new Float32Array(count * 2);\n var colors = new Uint8Array(count * 3);\n var coordsMap = context.coords,\n colorsMap = context.colors;\n var pIndex = 0,\n cIndex = 0;\n\n for (i = 0, ii = figures.length; i < ii; i++) {\n var figure = figures[i],\n ps = figure.coords,\n cs = figure.colors;\n\n switch (figure.type) {\n case \"lattice\":\n var cols = figure.verticesPerRow;\n rows = ps.length / cols | 0;\n\n for (var row = 1; row < rows; row++) {\n var offset = row * cols + 1;\n\n for (var col = 1; col < cols; col++, offset++) {\n coords[pIndex] = coordsMap[ps[offset - cols - 1]];\n coords[pIndex + 1] = coordsMap[ps[offset - cols - 1] + 1];\n coords[pIndex + 2] = coordsMap[ps[offset - cols]];\n coords[pIndex + 3] = coordsMap[ps[offset - cols] + 1];\n coords[pIndex + 4] = coordsMap[ps[offset - 1]];\n coords[pIndex + 5] = coordsMap[ps[offset - 1] + 1];\n colors[cIndex] = colorsMap[cs[offset - cols - 1]];\n colors[cIndex + 1] = colorsMap[cs[offset - cols - 1] + 1];\n colors[cIndex + 2] = colorsMap[cs[offset - cols - 1] + 2];\n colors[cIndex + 3] = colorsMap[cs[offset - cols]];\n colors[cIndex + 4] = colorsMap[cs[offset - cols] + 1];\n colors[cIndex + 5] = colorsMap[cs[offset - cols] + 2];\n colors[cIndex + 6] = colorsMap[cs[offset - 1]];\n colors[cIndex + 7] = colorsMap[cs[offset - 1] + 1];\n colors[cIndex + 8] = colorsMap[cs[offset - 1] + 2];\n coords[pIndex + 6] = coords[pIndex + 2];\n coords[pIndex + 7] = coords[pIndex + 3];\n coords[pIndex + 8] = coords[pIndex + 4];\n coords[pIndex + 9] = coords[pIndex + 5];\n coords[pIndex + 10] = coordsMap[ps[offset]];\n coords[pIndex + 11] = coordsMap[ps[offset] + 1];\n colors[cIndex + 9] = colors[cIndex + 3];\n colors[cIndex + 10] = colors[cIndex + 4];\n colors[cIndex + 11] = colors[cIndex + 5];\n colors[cIndex + 12] = colors[cIndex + 6];\n colors[cIndex + 13] = colors[cIndex + 7];\n colors[cIndex + 14] = colors[cIndex + 8];\n colors[cIndex + 15] = colorsMap[cs[offset]];\n colors[cIndex + 16] = colorsMap[cs[offset] + 1];\n colors[cIndex + 17] = colorsMap[cs[offset] + 2];\n pIndex += 12;\n cIndex += 18;\n }\n }\n\n break;\n\n case \"triangles\":\n for (var j = 0, jj = ps.length; j < jj; j++) {\n coords[pIndex] = coordsMap[ps[j]];\n coords[pIndex + 1] = coordsMap[ps[j] + 1];\n colors[cIndex] = colorsMap[cs[j]];\n colors[cIndex + 1] = colorsMap[cs[j] + 1];\n colors[cIndex + 2] = colorsMap[cs[j] + 2];\n pIndex += 2;\n cIndex += 3;\n }\n\n break;\n }\n }\n\n if (backgroundColor) {\n gl.clearColor(backgroundColor[0] / 255, backgroundColor[1] / 255, backgroundColor[2] / 255, 1.0);\n } else {\n gl.clearColor(0, 0, 0, 0);\n }\n\n gl.clear(gl.COLOR_BUFFER_BIT);\n var coordsBuffer = gl.createBuffer();\n gl.bindBuffer(gl.ARRAY_BUFFER, coordsBuffer);\n gl.bufferData(gl.ARRAY_BUFFER, coords, gl.STATIC_DRAW);\n gl.enableVertexAttribArray(cache.positionLocation);\n gl.vertexAttribPointer(cache.positionLocation, 2, gl.FLOAT, false, 0, 0);\n var colorsBuffer = gl.createBuffer();\n gl.bindBuffer(gl.ARRAY_BUFFER, colorsBuffer);\n gl.bufferData(gl.ARRAY_BUFFER, colors, gl.STATIC_DRAW);\n gl.enableVertexAttribArray(cache.colorLocation);\n gl.vertexAttribPointer(cache.colorLocation, 3, gl.UNSIGNED_BYTE, false, 0, 0);\n gl.uniform2f(cache.scaleLocation, context.scaleX, context.scaleY);\n gl.uniform2f(cache.offsetLocation, context.offsetX, context.offsetY);\n gl.drawArrays(gl.TRIANGLES, 0, count);\n gl.flush();\n gl.deleteBuffer(coordsBuffer);\n gl.deleteBuffer(colorsBuffer);\n return canvas;\n }\n\n return {\n tryInitGL() {\n try {\n generateGL();\n return !!currentGL;\n } catch (ex) {}\n\n return false;\n },\n\n composeSMask,\n drawFigures,\n\n cleanup() {\n if (smaskCache && smaskCache.canvas) {\n smaskCache.canvas.width = 0;\n smaskCache.canvas.height = 0;\n }\n\n if (figuresCache && figuresCache.canvas) {\n figuresCache.canvas.width = 0;\n figuresCache.canvas.height = 0;\n }\n\n smaskCache = null;\n figuresCache = null;\n }\n\n };\n}();\n\n/***/ }),\n/* 19 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.AnnotationLayer = void 0;\n\nvar _display_utils = __w_pdfjs_require__(1);\n\nvar _util = __w_pdfjs_require__(2);\n\nvar _annotation_storage = __w_pdfjs_require__(8);\n\nclass AnnotationElementFactory {\n static create(parameters) {\n const subtype = parameters.data.annotationType;\n\n switch (subtype) {\n case _util.AnnotationType.LINK:\n return new LinkAnnotationElement(parameters);\n\n case _util.AnnotationType.TEXT:\n return new TextAnnotationElement(parameters);\n\n case _util.AnnotationType.WIDGET:\n const fieldType = parameters.data.fieldType;\n\n switch (fieldType) {\n case \"Tx\":\n return new TextWidgetAnnotationElement(parameters);\n\n case \"Btn\":\n if (parameters.data.radioButton) {\n return new RadioButtonWidgetAnnotationElement(parameters);\n } else if (parameters.data.checkBox) {\n return new CheckboxWidgetAnnotationElement(parameters);\n }\n\n return new PushButtonWidgetAnnotationElement(parameters);\n\n case \"Ch\":\n return new ChoiceWidgetAnnotationElement(parameters);\n }\n\n return new WidgetAnnotationElement(parameters);\n\n case _util.AnnotationType.POPUP:\n return new PopupAnnotationElement(parameters);\n\n case _util.AnnotationType.FREETEXT:\n return new FreeTextAnnotationElement(parameters);\n\n case _util.AnnotationType.LINE:\n return new LineAnnotationElement(parameters);\n\n case _util.AnnotationType.SQUARE:\n return new SquareAnnotationElement(parameters);\n\n case _util.AnnotationType.CIRCLE:\n return new CircleAnnotationElement(parameters);\n\n case _util.AnnotationType.POLYLINE:\n return new PolylineAnnotationElement(parameters);\n\n case _util.AnnotationType.CARET:\n return new CaretAnnotationElement(parameters);\n\n case _util.AnnotationType.INK:\n return new InkAnnotationElement(parameters);\n\n case _util.AnnotationType.POLYGON:\n return new PolygonAnnotationElement(parameters);\n\n case _util.AnnotationType.HIGHLIGHT:\n return new HighlightAnnotationElement(parameters);\n\n case _util.AnnotationType.UNDERLINE:\n return new UnderlineAnnotationElement(parameters);\n\n case _util.AnnotationType.SQUIGGLY:\n return new SquigglyAnnotationElement(parameters);\n\n case _util.AnnotationType.STRIKEOUT:\n return new StrikeOutAnnotationElement(parameters);\n\n case _util.AnnotationType.STAMP:\n return new StampAnnotationElement(parameters);\n\n case _util.AnnotationType.FILEATTACHMENT:\n return new FileAttachmentAnnotationElement(parameters);\n\n default:\n return new AnnotationElement(parameters);\n }\n }\n\n}\n\nclass AnnotationElement {\n constructor(parameters, isRenderable = false, ignoreBorder = false) {\n this.isRenderable = isRenderable;\n this.data = parameters.data;\n this.layer = parameters.layer;\n this.page = parameters.page;\n this.viewport = parameters.viewport;\n this.linkService = parameters.linkService;\n this.downloadManager = parameters.downloadManager;\n this.imageResourcesPath = parameters.imageResourcesPath;\n this.renderInteractiveForms = parameters.renderInteractiveForms;\n this.svgFactory = parameters.svgFactory;\n this.annotationStorage = parameters.annotationStorage;\n\n if (isRenderable) {\n this.container = this._createContainer(ignoreBorder);\n }\n }\n\n _createContainer(ignoreBorder = false) {\n const data = this.data,\n page = this.page,\n viewport = this.viewport;\n const container = document.createElement(\"section\");\n let width = data.rect[2] - data.rect[0];\n let height = data.rect[3] - data.rect[1];\n container.setAttribute(\"data-annotation-id\", data.id);\n\n 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]]);\n\n container.style.transform = `matrix(${viewport.transform.join(\",\")})`;\n container.style.transformOrigin = `-${rect[0]}px -${rect[1]}px`;\n\n if (!ignoreBorder && data.borderStyle.width > 0) {\n container.style.borderWidth = `${data.borderStyle.width}px`;\n\n if (data.borderStyle.style !== _util.AnnotationBorderStyleType.UNDERLINE) {\n width = width - 2 * data.borderStyle.width;\n height = height - 2 * data.borderStyle.width;\n }\n\n const horizontalRadius = data.borderStyle.horizontalCornerRadius;\n const verticalRadius = data.borderStyle.verticalCornerRadius;\n\n if (horizontalRadius > 0 || verticalRadius > 0) {\n const radius = `${horizontalRadius}px / ${verticalRadius}px`;\n container.style.borderRadius = radius;\n }\n\n switch (data.borderStyle.style) {\n case _util.AnnotationBorderStyleType.SOLID:\n container.style.borderStyle = \"solid\";\n break;\n\n case _util.AnnotationBorderStyleType.DASHED:\n container.style.borderStyle = \"dashed\";\n break;\n\n case _util.AnnotationBorderStyleType.BEVELED:\n (0, _util.warn)(\"Unimplemented border style: beveled\");\n break;\n\n case _util.AnnotationBorderStyleType.INSET:\n (0, _util.warn)(\"Unimplemented border style: inset\");\n break;\n\n case _util.AnnotationBorderStyleType.UNDERLINE:\n container.style.borderBottomStyle = \"solid\";\n break;\n\n default:\n break;\n }\n\n if (data.color) {\n container.style.borderColor = _util.Util.makeCssRgb(data.color[0] | 0, data.color[1] | 0, data.color[2] | 0);\n } else {\n container.style.borderWidth = 0;\n }\n }\n\n container.style.left = `${rect[0]}px`;\n container.style.top = `${rect[1]}px`;\n container.style.width = `${width}px`;\n container.style.height = `${height}px`;\n return container;\n }\n\n _createPopup(container, trigger, data) {\n if (!trigger) {\n trigger = document.createElement(\"div\");\n trigger.style.height = container.style.height;\n trigger.style.width = container.style.width;\n container.appendChild(trigger);\n }\n\n const popupElement = new PopupElement({\n container,\n trigger,\n color: data.color,\n title: data.title,\n modificationDate: data.modificationDate,\n contents: data.contents,\n hideWrapper: true\n });\n const popup = popupElement.render();\n popup.style.left = container.style.width;\n container.appendChild(popup);\n }\n\n render() {\n (0, _util.unreachable)(\"Abstract method `AnnotationElement.render` called\");\n }\n\n}\n\nclass LinkAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(parameters.data.url || parameters.data.dest || parameters.data.action);\n super(parameters, isRenderable);\n }\n\n render() {\n this.container.className = \"linkAnnotation\";\n const {\n data,\n linkService\n } = this;\n const link = document.createElement(\"a\");\n\n if (data.url) {\n (0, _display_utils.addLinkAttributes)(link, {\n url: data.url,\n target: data.newWindow ? _display_utils.LinkTarget.BLANK : linkService.externalLinkTarget,\n rel: linkService.externalLinkRel,\n enabled: linkService.externalLinkEnabled\n });\n } else if (data.action) {\n this._bindNamedAction(link, data.action);\n } else {\n this._bindLink(link, data.dest);\n }\n\n this.container.appendChild(link);\n return this.container;\n }\n\n _bindLink(link, destination) {\n link.href = this.linkService.getDestinationHash(destination);\n\n link.onclick = () => {\n if (destination) {\n this.linkService.navigateTo(destination);\n }\n\n return false;\n };\n\n if (destination) {\n link.className = \"internalLink\";\n }\n }\n\n _bindNamedAction(link, action) {\n link.href = this.linkService.getAnchorUrl(\"\");\n\n link.onclick = () => {\n this.linkService.executeNamedAction(action);\n return false;\n };\n\n link.className = \"internalLink\";\n }\n\n}\n\nclass TextAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);\n super(parameters, isRenderable);\n }\n\n render() {\n this.container.className = \"textAnnotation\";\n const image = document.createElement(\"img\");\n image.style.height = this.container.style.height;\n image.style.width = this.container.style.width;\n image.src = this.imageResourcesPath + \"annotation-\" + this.data.name.toLowerCase() + \".svg\";\n image.alt = \"[{{type}} Annotation]\";\n image.dataset.l10nId = \"text_annotation_type\";\n image.dataset.l10nArgs = JSON.stringify({\n type: this.data.name\n });\n\n if (!this.data.hasPopup) {\n this._createPopup(this.container, image, this.data);\n }\n\n this.container.appendChild(image);\n return this.container;\n }\n\n}\n\nclass WidgetAnnotationElement extends AnnotationElement {\n render() {\n return this.container;\n }\n\n}\n\nclass TextWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n const isRenderable = parameters.renderInteractiveForms || !parameters.data.hasAppearance && !!parameters.data.fieldValue;\n super(parameters, isRenderable);\n }\n\n render() {\n const TEXT_ALIGNMENT = [\"left\", \"center\", \"right\"];\n const storage = this.annotationStorage;\n const id = this.data.id;\n this.container.className = \"textWidgetAnnotation\";\n let element = null;\n\n if (this.renderInteractiveForms) {\n const textContent = storage.getOrCreateValue(id, this.data.fieldValue);\n\n if (this.data.multiLine) {\n element = document.createElement(\"textarea\");\n element.textContent = textContent;\n } else {\n element = document.createElement(\"input\");\n element.type = \"text\";\n element.setAttribute(\"value\", textContent);\n }\n\n element.addEventListener(\"input\", function (event) {\n storage.setValue(id, event.target.value);\n });\n element.disabled = this.data.readOnly;\n element.name = this.data.fieldName;\n\n if (this.data.maxLen !== null) {\n element.maxLength = this.data.maxLen;\n }\n\n if (this.data.comb) {\n const fieldWidth = this.data.rect[2] - this.data.rect[0];\n const combWidth = fieldWidth / this.data.maxLen;\n element.classList.add(\"comb\");\n element.style.letterSpacing = `calc(${combWidth}px - 1ch)`;\n }\n } else {\n element = document.createElement(\"div\");\n element.textContent = this.data.fieldValue;\n element.style.verticalAlign = \"middle\";\n element.style.display = \"table-cell\";\n let font = null;\n\n if (this.data.fontRefName && this.page.commonObjs.has(this.data.fontRefName)) {\n font = this.page.commonObjs.get(this.data.fontRefName);\n }\n\n this._setTextStyle(element, font);\n }\n\n if (this.data.textAlignment !== null) {\n element.style.textAlign = TEXT_ALIGNMENT[this.data.textAlignment];\n }\n\n this.container.appendChild(element);\n return this.container;\n }\n\n _setTextStyle(element, font) {\n const style = element.style;\n style.fontSize = `${this.data.fontSize}px`;\n style.direction = this.data.fontDirection < 0 ? \"rtl\" : \"ltr\";\n\n if (!font) {\n return;\n }\n\n let bold = \"normal\";\n\n if (font.black) {\n bold = \"900\";\n } else if (font.bold) {\n bold = \"bold\";\n }\n\n style.fontWeight = bold;\n style.fontStyle = font.italic ? \"italic\" : \"normal\";\n const fontFamily = font.loadedName ? `\"${font.loadedName}\", ` : \"\";\n const fallbackName = font.fallbackName || \"Helvetica, sans-serif\";\n style.fontFamily = fontFamily + fallbackName;\n }\n\n}\n\nclass CheckboxWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n super(parameters, parameters.renderInteractiveForms);\n }\n\n render() {\n const storage = this.annotationStorage;\n const data = this.data;\n const id = data.id;\n const value = storage.getOrCreateValue(id, data.fieldValue && data.fieldValue !== \"Off\");\n this.container.className = \"buttonWidgetAnnotation checkBox\";\n const element = document.createElement(\"input\");\n element.disabled = data.readOnly;\n element.type = \"checkbox\";\n element.name = this.data.fieldName;\n\n if (value) {\n element.setAttribute(\"checked\", true);\n }\n\n element.addEventListener(\"change\", function (event) {\n storage.setValue(id, event.target.checked);\n });\n this.container.appendChild(element);\n return this.container;\n }\n\n}\n\nclass RadioButtonWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n super(parameters, parameters.renderInteractiveForms);\n }\n\n render() {\n this.container.className = \"buttonWidgetAnnotation radioButton\";\n const storage = this.annotationStorage;\n const data = this.data;\n const id = data.id;\n const value = storage.getOrCreateValue(id, data.fieldValue === data.buttonValue);\n const element = document.createElement(\"input\");\n element.disabled = data.readOnly;\n element.type = \"radio\";\n element.name = data.fieldName;\n\n if (value) {\n element.setAttribute(\"checked\", true);\n }\n\n element.addEventListener(\"change\", function (event) {\n const name = event.target.name;\n\n for (const radio of document.getElementsByName(name)) {\n if (radio !== event.target) {\n storage.setValue(radio.parentNode.getAttribute(\"data-annotation-id\"), false);\n }\n }\n\n storage.setValue(id, event.target.checked);\n });\n this.container.appendChild(element);\n return this.container;\n }\n\n}\n\nclass PushButtonWidgetAnnotationElement extends LinkAnnotationElement {\n render() {\n const container = super.render();\n container.className = \"buttonWidgetAnnotation pushButton\";\n return container;\n }\n\n}\n\nclass ChoiceWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n super(parameters, parameters.renderInteractiveForms);\n }\n\n render() {\n this.container.className = \"choiceWidgetAnnotation\";\n const storage = this.annotationStorage;\n const id = this.data.id;\n storage.getOrCreateValue(id, this.data.fieldValue.length > 0 ? this.data.fieldValue[0] : null);\n const selectElement = document.createElement(\"select\");\n selectElement.disabled = this.data.readOnly;\n selectElement.name = this.data.fieldName;\n\n if (!this.data.combo) {\n selectElement.size = this.data.options.length;\n\n if (this.data.multiSelect) {\n selectElement.multiple = true;\n }\n }\n\n for (const option of this.data.options) {\n const optionElement = document.createElement(\"option\");\n optionElement.textContent = option.displayValue;\n optionElement.value = option.exportValue;\n\n if (this.data.fieldValue.includes(option.exportValue)) {\n optionElement.setAttribute(\"selected\", true);\n }\n\n selectElement.appendChild(optionElement);\n }\n\n selectElement.addEventListener(\"input\", function (event) {\n const options = event.target.options;\n const value = options[options.selectedIndex].value;\n storage.setValue(id, value);\n });\n this.container.appendChild(selectElement);\n return this.container;\n }\n\n}\n\nclass PopupAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(parameters.data.title || parameters.data.contents);\n super(parameters, isRenderable);\n }\n\n render() {\n const IGNORE_TYPES = [\"Line\", \"Square\", \"Circle\", \"PolyLine\", \"Polygon\", \"Ink\"];\n this.container.className = \"popupAnnotation\";\n\n if (IGNORE_TYPES.includes(this.data.parentType)) {\n return this.container;\n }\n\n const selector = `[data-annotation-id=\"${this.data.parentId}\"]`;\n const parentElement = this.layer.querySelector(selector);\n\n if (!parentElement) {\n return this.container;\n }\n\n const popup = new PopupElement({\n container: this.container,\n trigger: parentElement,\n color: this.data.color,\n title: this.data.title,\n modificationDate: this.data.modificationDate,\n contents: this.data.contents\n });\n const parentLeft = parseFloat(parentElement.style.left);\n const parentWidth = parseFloat(parentElement.style.width);\n this.container.style.transformOrigin = `-${parentLeft + parentWidth}px -${parentElement.style.top}`;\n this.container.style.left = `${parentLeft + parentWidth}px`;\n this.container.appendChild(popup.render());\n return this.container;\n }\n\n}\n\nclass PopupElement {\n constructor(parameters) {\n this.container = parameters.container;\n this.trigger = parameters.trigger;\n this.color = parameters.color;\n this.title = parameters.title;\n this.modificationDate = parameters.modificationDate;\n this.contents = parameters.contents;\n this.hideWrapper = parameters.hideWrapper || false;\n this.pinned = false;\n }\n\n render() {\n const BACKGROUND_ENLIGHT = 0.7;\n const wrapper = document.createElement(\"div\");\n wrapper.className = \"popupWrapper\";\n this.hideElement = this.hideWrapper ? wrapper : this.container;\n this.hideElement.setAttribute(\"hidden\", true);\n const popup = document.createElement(\"div\");\n popup.className = \"popup\";\n const color = this.color;\n\n if (color) {\n const r = BACKGROUND_ENLIGHT * (255 - color[0]) + color[0];\n const g = BACKGROUND_ENLIGHT * (255 - color[1]) + color[1];\n const b = BACKGROUND_ENLIGHT * (255 - color[2]) + color[2];\n popup.style.backgroundColor = _util.Util.makeCssRgb(r | 0, g | 0, b | 0);\n }\n\n const title = document.createElement(\"h1\");\n title.textContent = this.title;\n popup.appendChild(title);\n\n const dateObject = _display_utils.PDFDateString.toDateObject(this.modificationDate);\n\n if (dateObject) {\n const modificationDate = document.createElement(\"span\");\n modificationDate.textContent = \"{{date}}, {{time}}\";\n modificationDate.dataset.l10nId = \"annotation_date_string\";\n modificationDate.dataset.l10nArgs = JSON.stringify({\n date: dateObject.toLocaleDateString(),\n time: dateObject.toLocaleTimeString()\n });\n popup.appendChild(modificationDate);\n }\n\n const contents = this._formatContents(this.contents);\n\n popup.appendChild(contents);\n this.trigger.addEventListener(\"click\", this._toggle.bind(this));\n this.trigger.addEventListener(\"mouseover\", this._show.bind(this, false));\n this.trigger.addEventListener(\"mouseout\", this._hide.bind(this, false));\n popup.addEventListener(\"click\", this._hide.bind(this, true));\n wrapper.appendChild(popup);\n return wrapper;\n }\n\n _formatContents(contents) {\n const p = document.createElement(\"p\");\n const lines = contents.split(/(?:\\r\\n?|\\n)/);\n\n for (let i = 0, ii = lines.length; i < ii; ++i) {\n const line = lines[i];\n p.appendChild(document.createTextNode(line));\n\n if (i < ii - 1) {\n p.appendChild(document.createElement(\"br\"));\n }\n }\n\n return p;\n }\n\n _toggle() {\n if (this.pinned) {\n this._hide(true);\n } else {\n this._show(true);\n }\n }\n\n _show(pin = false) {\n if (pin) {\n this.pinned = true;\n }\n\n if (this.hideElement.hasAttribute(\"hidden\")) {\n this.hideElement.removeAttribute(\"hidden\");\n this.container.style.zIndex += 1;\n }\n }\n\n _hide(unpin = true) {\n if (unpin) {\n this.pinned = false;\n }\n\n if (!this.hideElement.hasAttribute(\"hidden\") && !this.pinned) {\n this.hideElement.setAttribute(\"hidden\", true);\n this.container.style.zIndex -= 1;\n }\n }\n\n}\n\nclass FreeTextAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);\n super(parameters, isRenderable, true);\n }\n\n render() {\n this.container.className = \"freeTextAnnotation\";\n\n if (!this.data.hasPopup) {\n this._createPopup(this.container, null, this.data);\n }\n\n return this.container;\n }\n\n}\n\nclass LineAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);\n super(parameters, isRenderable, true);\n }\n\n render() {\n this.container.className = \"lineAnnotation\";\n const data = this.data;\n const width = data.rect[2] - data.rect[0];\n const height = data.rect[3] - data.rect[1];\n const svg = this.svgFactory.create(width, height);\n const line = this.svgFactory.createElement(\"svg:line\");\n line.setAttribute(\"x1\", data.rect[2] - data.lineCoordinates[0]);\n line.setAttribute(\"y1\", data.rect[3] - data.lineCoordinates[1]);\n line.setAttribute(\"x2\", data.rect[2] - data.lineCoordinates[2]);\n line.setAttribute(\"y2\", data.rect[3] - data.lineCoordinates[3]);\n line.setAttribute(\"stroke-width\", data.borderStyle.width || 1);\n line.setAttribute(\"stroke\", \"transparent\");\n svg.appendChild(line);\n this.container.append(svg);\n\n this._createPopup(this.container, line, data);\n\n return this.container;\n }\n\n}\n\nclass SquareAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);\n super(parameters, isRenderable, true);\n }\n\n render() {\n this.container.className = \"squareAnnotation\";\n const data = this.data;\n const width = data.rect[2] - data.rect[0];\n const height = data.rect[3] - data.rect[1];\n const svg = this.svgFactory.create(width, height);\n const borderWidth = data.borderStyle.width;\n const square = this.svgFactory.createElement(\"svg:rect\");\n square.setAttribute(\"x\", borderWidth / 2);\n square.setAttribute(\"y\", borderWidth / 2);\n square.setAttribute(\"width\", width - borderWidth);\n square.setAttribute(\"height\", height - borderWidth);\n square.setAttribute(\"stroke-width\", borderWidth || 1);\n square.setAttribute(\"stroke\", \"transparent\");\n square.setAttribute(\"fill\", \"none\");\n svg.appendChild(square);\n this.container.append(svg);\n\n this._createPopup(this.container, square, data);\n\n return this.container;\n }\n\n}\n\nclass CircleAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);\n super(parameters, isRenderable, true);\n }\n\n render() {\n this.container.className = \"circleAnnotation\";\n const data = this.data;\n const width = data.rect[2] - data.rect[0];\n const height = data.rect[3] - data.rect[1];\n const svg = this.svgFactory.create(width, height);\n const borderWidth = data.borderStyle.width;\n const circle = this.svgFactory.createElement(\"svg:ellipse\");\n circle.setAttribute(\"cx\", width / 2);\n circle.setAttribute(\"cy\", height / 2);\n circle.setAttribute(\"rx\", width / 2 - borderWidth / 2);\n circle.setAttribute(\"ry\", height / 2 - borderWidth / 2);\n circle.setAttribute(\"stroke-width\", borderWidth || 1);\n circle.setAttribute(\"stroke\", \"transparent\");\n circle.setAttribute(\"fill\", \"none\");\n svg.appendChild(circle);\n this.container.append(svg);\n\n this._createPopup(this.container, circle, data);\n\n return this.container;\n }\n\n}\n\nclass PolylineAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);\n super(parameters, isRenderable, true);\n this.containerClassName = \"polylineAnnotation\";\n this.svgElementName = \"svg:polyline\";\n }\n\n render() {\n this.container.className = this.containerClassName;\n const data = this.data;\n const width = data.rect[2] - data.rect[0];\n const height = data.rect[3] - data.rect[1];\n const svg = this.svgFactory.create(width, height);\n let points = [];\n\n for (const coordinate of data.vertices) {\n const x = coordinate.x - data.rect[0];\n const y = data.rect[3] - coordinate.y;\n points.push(x + \",\" + y);\n }\n\n points = points.join(\" \");\n const polyline = this.svgFactory.createElement(this.svgElementName);\n polyline.setAttribute(\"points\", points);\n polyline.setAttribute(\"stroke-width\", data.borderStyle.width || 1);\n polyline.setAttribute(\"stroke\", \"transparent\");\n polyline.setAttribute(\"fill\", \"none\");\n svg.appendChild(polyline);\n this.container.append(svg);\n\n this._createPopup(this.container, polyline, data);\n\n return this.container;\n }\n\n}\n\nclass PolygonAnnotationElement extends PolylineAnnotationElement {\n constructor(parameters) {\n super(parameters);\n this.containerClassName = \"polygonAnnotation\";\n this.svgElementName = \"svg:polygon\";\n }\n\n}\n\nclass CaretAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);\n super(parameters, isRenderable, true);\n }\n\n render() {\n this.container.className = \"caretAnnotation\";\n\n if (!this.data.hasPopup) {\n this._createPopup(this.container, null, this.data);\n }\n\n return this.container;\n }\n\n}\n\nclass InkAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);\n super(parameters, isRenderable, true);\n this.containerClassName = \"inkAnnotation\";\n this.svgElementName = \"svg:polyline\";\n }\n\n render() {\n this.container.className = this.containerClassName;\n const data = this.data;\n const width = data.rect[2] - data.rect[0];\n const height = data.rect[3] - data.rect[1];\n const svg = this.svgFactory.create(width, height);\n\n for (const inkList of data.inkLists) {\n let points = [];\n\n for (const coordinate of inkList) {\n const x = coordinate.x - data.rect[0];\n const y = data.rect[3] - coordinate.y;\n points.push(`${x},${y}`);\n }\n\n points = points.join(\" \");\n const polyline = this.svgFactory.createElement(this.svgElementName);\n polyline.setAttribute(\"points\", points);\n polyline.setAttribute(\"stroke-width\", data.borderStyle.width || 1);\n polyline.setAttribute(\"stroke\", \"transparent\");\n polyline.setAttribute(\"fill\", \"none\");\n\n this._createPopup(this.container, polyline, data);\n\n svg.appendChild(polyline);\n }\n\n this.container.append(svg);\n return this.container;\n }\n\n}\n\nclass HighlightAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);\n super(parameters, isRenderable, true);\n }\n\n render() {\n this.container.className = \"highlightAnnotation\";\n\n if (!this.data.hasPopup) {\n this._createPopup(this.container, null, this.data);\n }\n\n return this.container;\n }\n\n}\n\nclass UnderlineAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);\n super(parameters, isRenderable, true);\n }\n\n render() {\n this.container.className = \"underlineAnnotation\";\n\n if (!this.data.hasPopup) {\n this._createPopup(this.container, null, this.data);\n }\n\n return this.container;\n }\n\n}\n\nclass SquigglyAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);\n super(parameters, isRenderable, true);\n }\n\n render() {\n this.container.className = \"squigglyAnnotation\";\n\n if (!this.data.hasPopup) {\n this._createPopup(this.container, null, this.data);\n }\n\n return this.container;\n }\n\n}\n\nclass StrikeOutAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);\n super(parameters, isRenderable, true);\n }\n\n render() {\n this.container.className = \"strikeoutAnnotation\";\n\n if (!this.data.hasPopup) {\n this._createPopup(this.container, null, this.data);\n }\n\n return this.container;\n }\n\n}\n\nclass StampAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);\n super(parameters, isRenderable, true);\n }\n\n render() {\n this.container.className = \"stampAnnotation\";\n\n if (!this.data.hasPopup) {\n this._createPopup(this.container, null, this.data);\n }\n\n return this.container;\n }\n\n}\n\nclass FileAttachmentAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, true);\n const {\n filename,\n content\n } = this.data.file;\n this.filename = (0, _display_utils.getFilenameFromUrl)(filename);\n this.content = content;\n\n if (this.linkService.eventBus) {\n this.linkService.eventBus.dispatch(\"fileattachmentannotation\", {\n source: this,\n id: (0, _util.stringToPDFString)(filename),\n filename,\n content\n });\n }\n }\n\n render() {\n this.container.className = \"fileAttachmentAnnotation\";\n const trigger = document.createElement(\"div\");\n trigger.style.height = this.container.style.height;\n trigger.style.width = this.container.style.width;\n trigger.addEventListener(\"dblclick\", this._download.bind(this));\n\n if (!this.data.hasPopup && (this.data.title || this.data.contents)) {\n this._createPopup(this.container, trigger, this.data);\n }\n\n this.container.appendChild(trigger);\n return this.container;\n }\n\n _download() {\n if (!this.downloadManager) {\n (0, _util.warn)(\"Download cannot be started due to unavailable download manager\");\n return;\n }\n\n this.downloadManager.downloadData(this.content, this.filename, \"\");\n }\n\n}\n\nclass AnnotationLayer {\n static render(parameters) {\n const sortedAnnotations = [],\n popupAnnotations = [];\n\n for (const data of parameters.annotations) {\n if (!data) {\n continue;\n }\n\n if (data.annotationType === _util.AnnotationType.POPUP) {\n popupAnnotations.push(data);\n continue;\n }\n\n sortedAnnotations.push(data);\n }\n\n if (popupAnnotations.length) {\n sortedAnnotations.push(...popupAnnotations);\n }\n\n for (const data of sortedAnnotations) {\n const element = AnnotationElementFactory.create({\n data,\n layer: parameters.div,\n page: parameters.page,\n viewport: parameters.viewport,\n linkService: parameters.linkService,\n downloadManager: parameters.downloadManager,\n imageResourcesPath: parameters.imageResourcesPath || \"\",\n renderInteractiveForms: typeof parameters.renderInteractiveForms === \"boolean\" ? parameters.renderInteractiveForms : true,\n svgFactory: new _display_utils.DOMSVGFactory(),\n annotationStorage: parameters.annotationStorage || new _annotation_storage.AnnotationStorage()\n });\n\n if (element.isRenderable) {\n parameters.div.appendChild(element.render());\n }\n }\n }\n\n static update(parameters) {\n for (const data of parameters.annotations) {\n const element = parameters.div.querySelector(`[data-annotation-id=\"${data.id}\"]`);\n\n if (element) {\n element.style.transform = `matrix(${parameters.viewport.transform.join(\",\")})`;\n }\n }\n\n parameters.div.removeAttribute(\"hidden\");\n }\n\n}\n\nexports.AnnotationLayer = AnnotationLayer;\n\n/***/ }),\n/* 20 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.renderTextLayer = void 0;\n\nvar _util = __w_pdfjs_require__(2);\n\nvar renderTextLayer = function renderTextLayerClosure() {\n var MAX_TEXT_DIVS_TO_RENDER = 100000;\n var NonWhitespaceRegexp = /\\S/;\n\n function isAllWhitespace(str) {\n return !NonWhitespaceRegexp.test(str);\n }\n\n function appendText(task, geom, styles) {\n var textDiv = document.createElement(\"span\");\n var textDivProperties = {\n angle: 0,\n canvasWidth: 0,\n isWhitespace: false,\n originalTransform: null,\n paddingBottom: 0,\n paddingLeft: 0,\n paddingRight: 0,\n paddingTop: 0,\n scale: 1\n };\n\n task._textDivs.push(textDiv);\n\n if (isAllWhitespace(geom.str)) {\n textDivProperties.isWhitespace = true;\n\n task._textDivProperties.set(textDiv, textDivProperties);\n\n return;\n }\n\n var tx = _util.Util.transform(task._viewport.transform, geom.transform);\n\n var angle = Math.atan2(tx[1], tx[0]);\n var style = styles[geom.fontName];\n\n if (style.vertical) {\n angle += Math.PI / 2;\n }\n\n var fontHeight = Math.sqrt(tx[2] * tx[2] + tx[3] * tx[3]);\n var fontAscent = fontHeight;\n\n if (style.ascent) {\n fontAscent = style.ascent * fontAscent;\n } else if (style.descent) {\n fontAscent = (1 + style.descent) * fontAscent;\n }\n\n let left, top;\n\n if (angle === 0) {\n left = tx[4];\n top = tx[5] - fontAscent;\n } else {\n left = tx[4] + fontAscent * Math.sin(angle);\n top = tx[5] - fontAscent * Math.cos(angle);\n }\n\n textDiv.style.left = `${left}px`;\n textDiv.style.top = `${top}px`;\n textDiv.style.fontSize = `${fontHeight}px`;\n textDiv.style.fontFamily = style.fontFamily;\n textDiv.textContent = geom.str;\n\n if (task._fontInspectorEnabled) {\n textDiv.dataset.fontName = geom.fontName;\n }\n\n if (angle !== 0) {\n textDivProperties.angle = angle * (180 / Math.PI);\n }\n\n let shouldScaleText = false;\n\n if (geom.str.length > 1) {\n shouldScaleText = true;\n } else if (geom.transform[0] !== geom.transform[3]) {\n const absScaleX = Math.abs(geom.transform[0]),\n absScaleY = Math.abs(geom.transform[3]);\n\n if (absScaleX !== absScaleY && Math.max(absScaleX, absScaleY) / Math.min(absScaleX, absScaleY) > 1.5) {\n shouldScaleText = true;\n }\n }\n\n if (shouldScaleText) {\n if (style.vertical) {\n textDivProperties.canvasWidth = geom.height * task._viewport.scale;\n } else {\n textDivProperties.canvasWidth = geom.width * task._viewport.scale;\n }\n }\n\n task._textDivProperties.set(textDiv, textDivProperties);\n\n if (task._textContentStream) {\n task._layoutText(textDiv);\n }\n\n if (task._enhanceTextSelection) {\n var angleCos = 1,\n angleSin = 0;\n\n if (angle !== 0) {\n angleCos = Math.cos(angle);\n angleSin = Math.sin(angle);\n }\n\n var divWidth = (style.vertical ? geom.height : geom.width) * task._viewport.scale;\n var divHeight = fontHeight;\n var m, b;\n\n if (angle !== 0) {\n m = [angleCos, angleSin, -angleSin, angleCos, left, top];\n b = _util.Util.getAxialAlignedBoundingBox([0, 0, divWidth, divHeight], m);\n } else {\n b = [left, top, left + divWidth, top + divHeight];\n }\n\n task._bounds.push({\n left: b[0],\n top: b[1],\n right: b[2],\n bottom: b[3],\n div: textDiv,\n size: [divWidth, divHeight],\n m\n });\n }\n }\n\n function render(task) {\n if (task._canceled) {\n return;\n }\n\n var textDivs = task._textDivs;\n var capability = task._capability;\n var textDivsLength = textDivs.length;\n\n if (textDivsLength > MAX_TEXT_DIVS_TO_RENDER) {\n task._renderingDone = true;\n capability.resolve();\n return;\n }\n\n if (!task._textContentStream) {\n for (var i = 0; i < textDivsLength; i++) {\n task._layoutText(textDivs[i]);\n }\n }\n\n task._renderingDone = true;\n capability.resolve();\n }\n\n function findPositiveMin(ts, offset, count) {\n let result = 0;\n\n for (let i = 0; i < count; i++) {\n const t = ts[offset++];\n\n if (t > 0) {\n result = result ? Math.min(t, result) : t;\n }\n }\n\n return result;\n }\n\n function expand(task) {\n var bounds = task._bounds;\n var viewport = task._viewport;\n var expanded = expandBounds(viewport.width, viewport.height, bounds);\n\n for (var i = 0; i < expanded.length; i++) {\n var div = bounds[i].div;\n\n var divProperties = task._textDivProperties.get(div);\n\n if (divProperties.angle === 0) {\n divProperties.paddingLeft = bounds[i].left - expanded[i].left;\n divProperties.paddingTop = bounds[i].top - expanded[i].top;\n divProperties.paddingRight = expanded[i].right - bounds[i].right;\n divProperties.paddingBottom = expanded[i].bottom - bounds[i].bottom;\n\n task._textDivProperties.set(div, divProperties);\n\n continue;\n }\n\n var e = expanded[i],\n b = bounds[i];\n var m = b.m,\n c = m[0],\n s = m[1];\n var points = [[0, 0], [0, b.size[1]], [b.size[0], 0], b.size];\n var ts = new Float64Array(64);\n points.forEach(function (p, j) {\n var t = _util.Util.applyTransform(p, m);\n\n ts[j + 0] = c && (e.left - t[0]) / c;\n ts[j + 4] = s && (e.top - t[1]) / s;\n ts[j + 8] = c && (e.right - t[0]) / c;\n ts[j + 12] = s && (e.bottom - t[1]) / s;\n ts[j + 16] = s && (e.left - t[0]) / -s;\n ts[j + 20] = c && (e.top - t[1]) / c;\n ts[j + 24] = s && (e.right - t[0]) / -s;\n ts[j + 28] = c && (e.bottom - t[1]) / c;\n ts[j + 32] = c && (e.left - t[0]) / -c;\n ts[j + 36] = s && (e.top - t[1]) / -s;\n ts[j + 40] = c && (e.right - t[0]) / -c;\n ts[j + 44] = s && (e.bottom - t[1]) / -s;\n ts[j + 48] = s && (e.left - t[0]) / s;\n ts[j + 52] = c && (e.top - t[1]) / -c;\n ts[j + 56] = s && (e.right - t[0]) / s;\n ts[j + 60] = c && (e.bottom - t[1]) / -c;\n });\n var boxScale = 1 + Math.min(Math.abs(c), Math.abs(s));\n divProperties.paddingLeft = findPositiveMin(ts, 32, 16) / boxScale;\n divProperties.paddingTop = findPositiveMin(ts, 48, 16) / boxScale;\n divProperties.paddingRight = findPositiveMin(ts, 0, 16) / boxScale;\n divProperties.paddingBottom = findPositiveMin(ts, 16, 16) / boxScale;\n\n task._textDivProperties.set(div, divProperties);\n }\n }\n\n function expandBounds(width, height, boxes) {\n var bounds = boxes.map(function (box, i) {\n return {\n x1: box.left,\n y1: box.top,\n x2: box.right,\n y2: box.bottom,\n index: i,\n x1New: undefined,\n x2New: undefined\n };\n });\n expandBoundsLTR(width, bounds);\n var expanded = new Array(boxes.length);\n bounds.forEach(function (b) {\n var i = b.index;\n expanded[i] = {\n left: b.x1New,\n top: 0,\n right: b.x2New,\n bottom: 0\n };\n });\n boxes.map(function (box, i) {\n var e = expanded[i],\n b = bounds[i];\n b.x1 = box.top;\n b.y1 = width - e.right;\n b.x2 = box.bottom;\n b.y2 = width - e.left;\n b.index = i;\n b.x1New = undefined;\n b.x2New = undefined;\n });\n expandBoundsLTR(height, bounds);\n bounds.forEach(function (b) {\n var i = b.index;\n expanded[i].top = b.x1New;\n expanded[i].bottom = b.x2New;\n });\n return expanded;\n }\n\n function expandBoundsLTR(width, bounds) {\n bounds.sort(function (a, b) {\n return a.x1 - b.x1 || a.index - b.index;\n });\n var fakeBoundary = {\n x1: -Infinity,\n y1: -Infinity,\n x2: 0,\n y2: Infinity,\n index: -1,\n x1New: 0,\n x2New: 0\n };\n var horizon = [{\n start: -Infinity,\n end: Infinity,\n boundary: fakeBoundary\n }];\n bounds.forEach(function (boundary) {\n var i = 0;\n\n while (i < horizon.length && horizon[i].end <= boundary.y1) {\n i++;\n }\n\n var j = horizon.length - 1;\n\n while (j >= 0 && horizon[j].start >= boundary.y2) {\n j--;\n }\n\n var horizonPart, affectedBoundary;\n var q,\n k,\n maxXNew = -Infinity;\n\n for (q = i; q <= j; q++) {\n horizonPart = horizon[q];\n affectedBoundary = horizonPart.boundary;\n var xNew;\n\n if (affectedBoundary.x2 > boundary.x1) {\n xNew = affectedBoundary.index > boundary.index ? affectedBoundary.x1New : boundary.x1;\n } else if (affectedBoundary.x2New === undefined) {\n xNew = (affectedBoundary.x2 + boundary.x1) / 2;\n } else {\n xNew = affectedBoundary.x2New;\n }\n\n if (xNew > maxXNew) {\n maxXNew = xNew;\n }\n }\n\n boundary.x1New = maxXNew;\n\n for (q = i; q <= j; q++) {\n horizonPart = horizon[q];\n affectedBoundary = horizonPart.boundary;\n\n if (affectedBoundary.x2New === undefined) {\n if (affectedBoundary.x2 > boundary.x1) {\n if (affectedBoundary.index > boundary.index) {\n affectedBoundary.x2New = affectedBoundary.x2;\n }\n } else {\n affectedBoundary.x2New = maxXNew;\n }\n } else if (affectedBoundary.x2New > maxXNew) {\n affectedBoundary.x2New = Math.max(maxXNew, affectedBoundary.x2);\n }\n }\n\n var changedHorizon = [],\n lastBoundary = null;\n\n for (q = i; q <= j; q++) {\n horizonPart = horizon[q];\n affectedBoundary = horizonPart.boundary;\n var useBoundary = affectedBoundary.x2 > boundary.x2 ? affectedBoundary : boundary;\n\n if (lastBoundary === useBoundary) {\n changedHorizon[changedHorizon.length - 1].end = horizonPart.end;\n } else {\n changedHorizon.push({\n start: horizonPart.start,\n end: horizonPart.end,\n boundary: useBoundary\n });\n lastBoundary = useBoundary;\n }\n }\n\n if (horizon[i].start < boundary.y1) {\n changedHorizon[0].start = boundary.y1;\n changedHorizon.unshift({\n start: horizon[i].start,\n end: boundary.y1,\n boundary: horizon[i].boundary\n });\n }\n\n if (boundary.y2 < horizon[j].end) {\n changedHorizon[changedHorizon.length - 1].end = boundary.y2;\n changedHorizon.push({\n start: boundary.y2,\n end: horizon[j].end,\n boundary: horizon[j].boundary\n });\n }\n\n for (q = i; q <= j; q++) {\n horizonPart = horizon[q];\n affectedBoundary = horizonPart.boundary;\n\n if (affectedBoundary.x2New !== undefined) {\n continue;\n }\n\n var used = false;\n\n for (k = i - 1; !used && k >= 0 && horizon[k].start >= affectedBoundary.y1; k--) {\n used = horizon[k].boundary === affectedBoundary;\n }\n\n for (k = j + 1; !used && k < horizon.length && horizon[k].end <= affectedBoundary.y2; k++) {\n used = horizon[k].boundary === affectedBoundary;\n }\n\n for (k = 0; !used && k < changedHorizon.length; k++) {\n used = changedHorizon[k].boundary === affectedBoundary;\n }\n\n if (!used) {\n affectedBoundary.x2New = maxXNew;\n }\n }\n\n Array.prototype.splice.apply(horizon, [i, j - i + 1].concat(changedHorizon));\n });\n horizon.forEach(function (horizonPart) {\n var affectedBoundary = horizonPart.boundary;\n\n if (affectedBoundary.x2New === undefined) {\n affectedBoundary.x2New = Math.max(width, affectedBoundary.x2);\n }\n });\n }\n\n function TextLayerRenderTask({\n textContent,\n textContentStream,\n container,\n viewport,\n textDivs,\n textContentItemsStr,\n enhanceTextSelection\n }) {\n this._textContent = textContent;\n this._textContentStream = textContentStream;\n this._container = container;\n this._document = container.ownerDocument;\n this._viewport = viewport;\n this._textDivs = textDivs || [];\n this._textContentItemsStr = textContentItemsStr || [];\n this._enhanceTextSelection = !!enhanceTextSelection;\n this._fontInspectorEnabled = !!(globalThis.FontInspector && globalThis.FontInspector.enabled);\n this._reader = null;\n this._layoutTextLastFontSize = null;\n this._layoutTextLastFontFamily = null;\n this._layoutTextCtx = null;\n this._textDivProperties = new WeakMap();\n this._renderingDone = false;\n this._canceled = false;\n this._capability = (0, _util.createPromiseCapability)();\n this._renderTimer = null;\n this._bounds = [];\n\n this._capability.promise.finally(() => {\n if (this._layoutTextCtx) {\n this._layoutTextCtx.canvas.width = 0;\n this._layoutTextCtx.canvas.height = 0;\n this._layoutTextCtx = null;\n }\n }).catch(() => {});\n }\n\n TextLayerRenderTask.prototype = {\n get promise() {\n return this._capability.promise;\n },\n\n cancel: function TextLayer_cancel() {\n this._canceled = true;\n\n if (this._reader) {\n this._reader.cancel(new _util.AbortException(\"TextLayer task cancelled.\"));\n\n this._reader = null;\n }\n\n if (this._renderTimer !== null) {\n clearTimeout(this._renderTimer);\n this._renderTimer = null;\n }\n\n this._capability.reject(new Error(\"TextLayer task cancelled.\"));\n },\n\n _processItems(items, styleCache) {\n for (let i = 0, len = items.length; i < len; i++) {\n this._textContentItemsStr.push(items[i].str);\n\n appendText(this, items[i], styleCache);\n }\n },\n\n _layoutText(textDiv) {\n const textDivProperties = this._textDivProperties.get(textDiv);\n\n if (textDivProperties.isWhitespace) {\n return;\n }\n\n let transform = \"\";\n\n if (textDivProperties.canvasWidth !== 0) {\n const {\n fontSize,\n fontFamily\n } = textDiv.style;\n\n if (fontSize !== this._layoutTextLastFontSize || fontFamily !== this._layoutTextLastFontFamily) {\n this._layoutTextCtx.font = `${fontSize} ${fontFamily}`;\n this._layoutTextLastFontSize = fontSize;\n this._layoutTextLastFontFamily = fontFamily;\n }\n\n const {\n width\n } = this._layoutTextCtx.measureText(textDiv.textContent);\n\n if (width > 0) {\n textDivProperties.scale = textDivProperties.canvasWidth / width;\n transform = `scaleX(${textDivProperties.scale})`;\n }\n }\n\n if (textDivProperties.angle !== 0) {\n transform = `rotate(${textDivProperties.angle}deg) ${transform}`;\n }\n\n if (transform.length > 0) {\n if (this._enhanceTextSelection) {\n textDivProperties.originalTransform = transform;\n }\n\n textDiv.style.transform = transform;\n }\n\n this._textDivProperties.set(textDiv, textDivProperties);\n\n this._container.appendChild(textDiv);\n },\n\n _render: function TextLayer_render(timeout) {\n const capability = (0, _util.createPromiseCapability)();\n let styleCache = Object.create(null);\n\n const canvas = this._document.createElement(\"canvas\");\n\n canvas.mozOpaque = true;\n this._layoutTextCtx = canvas.getContext(\"2d\", {\n alpha: false\n });\n\n if (this._textContent) {\n const textItems = this._textContent.items;\n const textStyles = this._textContent.styles;\n\n this._processItems(textItems, textStyles);\n\n capability.resolve();\n } else if (this._textContentStream) {\n const pump = () => {\n this._reader.read().then(({\n value,\n done\n }) => {\n if (done) {\n capability.resolve();\n return;\n }\n\n Object.assign(styleCache, value.styles);\n\n this._processItems(value.items, styleCache);\n\n pump();\n }, capability.reject);\n };\n\n this._reader = this._textContentStream.getReader();\n pump();\n } else {\n throw new Error('Neither \"textContent\" nor \"textContentStream\"' + \" parameters specified.\");\n }\n\n capability.promise.then(() => {\n styleCache = null;\n\n if (!timeout) {\n render(this);\n } else {\n this._renderTimer = setTimeout(() => {\n render(this);\n this._renderTimer = null;\n }, timeout);\n }\n }, this._capability.reject);\n },\n expandTextDivs: function TextLayer_expandTextDivs(expandDivs) {\n if (!this._enhanceTextSelection || !this._renderingDone) {\n return;\n }\n\n if (this._bounds !== null) {\n expand(this);\n this._bounds = null;\n }\n\n const transformBuf = [],\n paddingBuf = [];\n\n for (var i = 0, ii = this._textDivs.length; i < ii; i++) {\n const div = this._textDivs[i];\n\n const divProps = this._textDivProperties.get(div);\n\n if (divProps.isWhitespace) {\n continue;\n }\n\n if (expandDivs) {\n transformBuf.length = 0;\n paddingBuf.length = 0;\n\n if (divProps.originalTransform) {\n transformBuf.push(divProps.originalTransform);\n }\n\n if (divProps.paddingTop > 0) {\n paddingBuf.push(`${divProps.paddingTop}px`);\n transformBuf.push(`translateY(${-divProps.paddingTop}px)`);\n } else {\n paddingBuf.push(0);\n }\n\n if (divProps.paddingRight > 0) {\n paddingBuf.push(`${divProps.paddingRight / divProps.scale}px`);\n } else {\n paddingBuf.push(0);\n }\n\n if (divProps.paddingBottom > 0) {\n paddingBuf.push(`${divProps.paddingBottom}px`);\n } else {\n paddingBuf.push(0);\n }\n\n if (divProps.paddingLeft > 0) {\n paddingBuf.push(`${divProps.paddingLeft / divProps.scale}px`);\n transformBuf.push(`translateX(${-divProps.paddingLeft / divProps.scale}px)`);\n } else {\n paddingBuf.push(0);\n }\n\n div.style.padding = paddingBuf.join(\" \");\n\n if (transformBuf.length) {\n div.style.transform = transformBuf.join(\" \");\n }\n } else {\n div.style.padding = null;\n div.style.transform = divProps.originalTransform;\n }\n }\n }\n };\n\n function renderTextLayer(renderParameters) {\n var task = new TextLayerRenderTask({\n textContent: renderParameters.textContent,\n textContentStream: renderParameters.textContentStream,\n container: renderParameters.container,\n viewport: renderParameters.viewport,\n textDivs: renderParameters.textDivs,\n textContentItemsStr: renderParameters.textContentItemsStr,\n enhanceTextSelection: renderParameters.enhanceTextSelection\n });\n\n task._render(renderParameters.timeout);\n\n return task;\n }\n\n return renderTextLayer;\n}();\n\nexports.renderTextLayer = renderTextLayer;\n\n/***/ }),\n/* 21 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.SVGGraphics = void 0;\n\nvar _util = __w_pdfjs_require__(2);\n\nvar _display_utils = __w_pdfjs_require__(1);\n\nvar _is_node = __w_pdfjs_require__(4);\n\nlet SVGGraphics = function () {\n throw new Error(\"Not implemented: SVGGraphics\");\n};\n\nexports.SVGGraphics = SVGGraphics;\n{\n const SVG_DEFAULTS = {\n fontStyle: \"normal\",\n fontWeight: \"normal\",\n fillColor: \"#000000\"\n };\n const XML_NS = \"http://www.w3.org/XML/1998/namespace\";\n const XLINK_NS = \"http://www.w3.org/1999/xlink\";\n const LINE_CAP_STYLES = [\"butt\", \"round\", \"square\"];\n const LINE_JOIN_STYLES = [\"miter\", \"round\", \"bevel\"];\n\n const convertImgDataToPng = function () {\n const PNG_HEADER = new Uint8Array([0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a]);\n const CHUNK_WRAPPER_SIZE = 12;\n const crcTable = new Int32Array(256);\n\n for (let i = 0; i < 256; i++) {\n let c = i;\n\n for (let h = 0; h < 8; h++) {\n if (c & 1) {\n c = 0xedb88320 ^ c >> 1 & 0x7fffffff;\n } else {\n c = c >> 1 & 0x7fffffff;\n }\n }\n\n crcTable[i] = c;\n }\n\n function crc32(data, start, end) {\n let crc = -1;\n\n for (let i = start; i < end; i++) {\n const a = (crc ^ data[i]) & 0xff;\n const b = crcTable[a];\n crc = crc >>> 8 ^ b;\n }\n\n return crc ^ -1;\n }\n\n function writePngChunk(type, body, data, offset) {\n let p = offset;\n const len = body.length;\n data[p] = len >> 24 & 0xff;\n data[p + 1] = len >> 16 & 0xff;\n data[p + 2] = len >> 8 & 0xff;\n data[p + 3] = len & 0xff;\n p += 4;\n data[p] = type.charCodeAt(0) & 0xff;\n data[p + 1] = type.charCodeAt(1) & 0xff;\n data[p + 2] = type.charCodeAt(2) & 0xff;\n data[p + 3] = type.charCodeAt(3) & 0xff;\n p += 4;\n data.set(body, p);\n p += body.length;\n const crc = crc32(data, offset + 4, p);\n data[p] = crc >> 24 & 0xff;\n data[p + 1] = crc >> 16 & 0xff;\n data[p + 2] = crc >> 8 & 0xff;\n data[p + 3] = crc & 0xff;\n }\n\n function adler32(data, start, end) {\n let a = 1;\n let b = 0;\n\n for (let i = start; i < end; ++i) {\n a = (a + (data[i] & 0xff)) % 65521;\n b = (b + a) % 65521;\n }\n\n return b << 16 | a;\n }\n\n function deflateSync(literals) {\n if (!_is_node.isNodeJS) {\n return deflateSyncUncompressed(literals);\n }\n\n try {\n let input;\n\n if (parseInt(process.versions.node) >= 8) {\n input = literals;\n } else {\n input = Buffer.from(literals);\n }\n\n const output = require(\"zlib\").deflateSync(input, {\n level: 9\n });\n\n return output instanceof Uint8Array ? output : new Uint8Array(output);\n } catch (e) {\n (0, _util.warn)(\"Not compressing PNG because zlib.deflateSync is unavailable: \" + e);\n }\n\n return deflateSyncUncompressed(literals);\n }\n\n function deflateSyncUncompressed(literals) {\n let len = literals.length;\n const maxBlockLength = 0xffff;\n const deflateBlocks = Math.ceil(len / maxBlockLength);\n const idat = new Uint8Array(2 + len + deflateBlocks * 5 + 4);\n let pi = 0;\n idat[pi++] = 0x78;\n idat[pi++] = 0x9c;\n let pos = 0;\n\n while (len > maxBlockLength) {\n idat[pi++] = 0x00;\n idat[pi++] = 0xff;\n idat[pi++] = 0xff;\n idat[pi++] = 0x00;\n idat[pi++] = 0x00;\n idat.set(literals.subarray(pos, pos + maxBlockLength), pi);\n pi += maxBlockLength;\n pos += maxBlockLength;\n len -= maxBlockLength;\n }\n\n idat[pi++] = 0x01;\n idat[pi++] = len & 0xff;\n idat[pi++] = len >> 8 & 0xff;\n idat[pi++] = ~len & 0xffff & 0xff;\n idat[pi++] = (~len & 0xffff) >> 8 & 0xff;\n idat.set(literals.subarray(pos), pi);\n pi += literals.length - pos;\n const adler = adler32(literals, 0, literals.length);\n idat[pi++] = adler >> 24 & 0xff;\n idat[pi++] = adler >> 16 & 0xff;\n idat[pi++] = adler >> 8 & 0xff;\n idat[pi++] = adler & 0xff;\n return idat;\n }\n\n function encode(imgData, kind, forceDataSchema, isMask) {\n const width = imgData.width;\n const height = imgData.height;\n let bitDepth, colorType, lineSize;\n const bytes = imgData.data;\n\n switch (kind) {\n case _util.ImageKind.GRAYSCALE_1BPP:\n colorType = 0;\n bitDepth = 1;\n lineSize = width + 7 >> 3;\n break;\n\n case _util.ImageKind.RGB_24BPP:\n colorType = 2;\n bitDepth = 8;\n lineSize = width * 3;\n break;\n\n case _util.ImageKind.RGBA_32BPP:\n colorType = 6;\n bitDepth = 8;\n lineSize = width * 4;\n break;\n\n default:\n throw new Error(\"invalid format\");\n }\n\n const literals = new Uint8Array((1 + lineSize) * height);\n let offsetLiterals = 0,\n offsetBytes = 0;\n\n for (let y = 0; y < height; ++y) {\n literals[offsetLiterals++] = 0;\n literals.set(bytes.subarray(offsetBytes, offsetBytes + lineSize), offsetLiterals);\n offsetBytes += lineSize;\n offsetLiterals += lineSize;\n }\n\n if (kind === _util.ImageKind.GRAYSCALE_1BPP && isMask) {\n offsetLiterals = 0;\n\n for (let y = 0; y < height; y++) {\n offsetLiterals++;\n\n for (let i = 0; i < lineSize; i++) {\n literals[offsetLiterals++] ^= 0xff;\n }\n }\n }\n\n 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]);\n const idat = deflateSync(literals);\n const pngLength = PNG_HEADER.length + CHUNK_WRAPPER_SIZE * 3 + ihdr.length + idat.length;\n const data = new Uint8Array(pngLength);\n let offset = 0;\n data.set(PNG_HEADER, offset);\n offset += PNG_HEADER.length;\n writePngChunk(\"IHDR\", ihdr, data, offset);\n offset += CHUNK_WRAPPER_SIZE + ihdr.length;\n writePngChunk(\"IDATA\", idat, data, offset);\n offset += CHUNK_WRAPPER_SIZE + idat.length;\n writePngChunk(\"IEND\", new Uint8Array(0), data, offset);\n return (0, _util.createObjectURL)(data, \"image/png\", forceDataSchema);\n }\n\n return function convertImgDataToPng(imgData, forceDataSchema, isMask) {\n const kind = imgData.kind === undefined ? _util.ImageKind.GRAYSCALE_1BPP : imgData.kind;\n return encode(imgData, kind, forceDataSchema, isMask);\n };\n }();\n\n class SVGExtraState {\n constructor() {\n this.fontSizeScale = 1;\n this.fontWeight = SVG_DEFAULTS.fontWeight;\n this.fontSize = 0;\n this.textMatrix = _util.IDENTITY_MATRIX;\n this.fontMatrix = _util.FONT_IDENTITY_MATRIX;\n this.leading = 0;\n this.textRenderingMode = _util.TextRenderingMode.FILL;\n this.textMatrixScale = 1;\n this.x = 0;\n this.y = 0;\n this.lineX = 0;\n this.lineY = 0;\n this.charSpacing = 0;\n this.wordSpacing = 0;\n this.textHScale = 1;\n this.textRise = 0;\n this.fillColor = SVG_DEFAULTS.fillColor;\n this.strokeColor = \"#000000\";\n this.fillAlpha = 1;\n this.strokeAlpha = 1;\n this.lineWidth = 1;\n this.lineJoin = \"\";\n this.lineCap = \"\";\n this.miterLimit = 0;\n this.dashArray = [];\n this.dashPhase = 0;\n this.dependencies = [];\n this.activeClipUrl = null;\n this.clipGroup = null;\n this.maskId = \"\";\n }\n\n clone() {\n return Object.create(this);\n }\n\n setCurrentPoint(x, y) {\n this.x = x;\n this.y = y;\n }\n\n }\n\n function opListToTree(opList) {\n let opTree = [];\n const tmp = [];\n\n for (const opListElement of opList) {\n if (opListElement.fn === \"save\") {\n opTree.push({\n fnId: 92,\n fn: \"group\",\n items: []\n });\n tmp.push(opTree);\n opTree = opTree[opTree.length - 1].items;\n continue;\n }\n\n if (opListElement.fn === \"restore\") {\n opTree = tmp.pop();\n } else {\n opTree.push(opListElement);\n }\n }\n\n return opTree;\n }\n\n function pf(value) {\n if (Number.isInteger(value)) {\n return value.toString();\n }\n\n const s = value.toFixed(10);\n let i = s.length - 1;\n\n if (s[i] !== \"0\") {\n return s;\n }\n\n do {\n i--;\n } while (s[i] === \"0\");\n\n return s.substring(0, s[i] === \".\" ? i : i + 1);\n }\n\n function pm(m) {\n if (m[4] === 0 && m[5] === 0) {\n if (m[1] === 0 && m[2] === 0) {\n if (m[0] === 1 && m[3] === 1) {\n return \"\";\n }\n\n return `scale(${pf(m[0])} ${pf(m[3])})`;\n }\n\n if (m[0] === m[3] && m[1] === -m[2]) {\n const a = Math.acos(m[0]) * 180 / Math.PI;\n return `rotate(${pf(a)})`;\n }\n } else {\n if (m[0] === 1 && m[1] === 0 && m[2] === 0 && m[3] === 1) {\n return `translate(${pf(m[4])} ${pf(m[5])})`;\n }\n }\n\n return `matrix(${pf(m[0])} ${pf(m[1])} ${pf(m[2])} ${pf(m[3])} ${pf(m[4])} ` + `${pf(m[5])})`;\n }\n\n let clipCount = 0;\n let maskCount = 0;\n let shadingCount = 0;\n exports.SVGGraphics = SVGGraphics = class SVGGraphics {\n constructor(commonObjs, objs, forceDataSchema = false) {\n this.svgFactory = new _display_utils.DOMSVGFactory();\n this.current = new SVGExtraState();\n this.transformMatrix = _util.IDENTITY_MATRIX;\n this.transformStack = [];\n this.extraStack = [];\n this.commonObjs = commonObjs;\n this.objs = objs;\n this.pendingClip = null;\n this.pendingEOFill = false;\n this.embedFonts = false;\n this.embeddedFonts = Object.create(null);\n this.cssStyle = null;\n this.forceDataSchema = !!forceDataSchema;\n this._operatorIdMapping = [];\n\n for (const op in _util.OPS) {\n this._operatorIdMapping[_util.OPS[op]] = op;\n }\n }\n\n save() {\n this.transformStack.push(this.transformMatrix);\n const old = this.current;\n this.extraStack.push(old);\n this.current = old.clone();\n }\n\n restore() {\n this.transformMatrix = this.transformStack.pop();\n this.current = this.extraStack.pop();\n this.pendingClip = null;\n this.tgrp = null;\n }\n\n group(items) {\n this.save();\n this.executeOpTree(items);\n this.restore();\n }\n\n loadDependencies(operatorList) {\n const fnArray = operatorList.fnArray;\n const argsArray = operatorList.argsArray;\n\n for (let i = 0, ii = fnArray.length; i < ii; i++) {\n if (fnArray[i] !== _util.OPS.dependency) {\n continue;\n }\n\n for (const obj of argsArray[i]) {\n const objsPool = obj.startsWith(\"g_\") ? this.commonObjs : this.objs;\n const promise = new Promise(resolve => {\n objsPool.get(obj, resolve);\n });\n this.current.dependencies.push(promise);\n }\n }\n\n return Promise.all(this.current.dependencies);\n }\n\n transform(a, b, c, d, e, f) {\n const transformMatrix = [a, b, c, d, e, f];\n this.transformMatrix = _util.Util.transform(this.transformMatrix, transformMatrix);\n this.tgrp = null;\n }\n\n getSVG(operatorList, viewport) {\n this.viewport = viewport;\n\n const svgElement = this._initialize(viewport);\n\n return this.loadDependencies(operatorList).then(() => {\n this.transformMatrix = _util.IDENTITY_MATRIX;\n this.executeOpTree(this.convertOpList(operatorList));\n return svgElement;\n });\n }\n\n convertOpList(operatorList) {\n const operatorIdMapping = this._operatorIdMapping;\n const argsArray = operatorList.argsArray;\n const fnArray = operatorList.fnArray;\n const opList = [];\n\n for (let i = 0, ii = fnArray.length; i < ii; i++) {\n const fnId = fnArray[i];\n opList.push({\n fnId,\n fn: operatorIdMapping[fnId],\n args: argsArray[i]\n });\n }\n\n return opListToTree(opList);\n }\n\n executeOpTree(opTree) {\n for (const opTreeElement of opTree) {\n const fn = opTreeElement.fn;\n const fnId = opTreeElement.fnId;\n const args = opTreeElement.args;\n\n switch (fnId | 0) {\n case _util.OPS.beginText:\n this.beginText();\n break;\n\n case _util.OPS.dependency:\n break;\n\n case _util.OPS.setLeading:\n this.setLeading(args);\n break;\n\n case _util.OPS.setLeadingMoveText:\n this.setLeadingMoveText(args[0], args[1]);\n break;\n\n case _util.OPS.setFont:\n this.setFont(args);\n break;\n\n case _util.OPS.showText:\n this.showText(args[0]);\n break;\n\n case _util.OPS.showSpacedText:\n this.showText(args[0]);\n break;\n\n case _util.OPS.endText:\n this.endText();\n break;\n\n case _util.OPS.moveText:\n this.moveText(args[0], args[1]);\n break;\n\n case _util.OPS.setCharSpacing:\n this.setCharSpacing(args[0]);\n break;\n\n case _util.OPS.setWordSpacing:\n this.setWordSpacing(args[0]);\n break;\n\n case _util.OPS.setHScale:\n this.setHScale(args[0]);\n break;\n\n case _util.OPS.setTextMatrix:\n this.setTextMatrix(args[0], args[1], args[2], args[3], args[4], args[5]);\n break;\n\n case _util.OPS.setTextRise:\n this.setTextRise(args[0]);\n break;\n\n case _util.OPS.setTextRenderingMode:\n this.setTextRenderingMode(args[0]);\n break;\n\n case _util.OPS.setLineWidth:\n this.setLineWidth(args[0]);\n break;\n\n case _util.OPS.setLineJoin:\n this.setLineJoin(args[0]);\n break;\n\n case _util.OPS.setLineCap:\n this.setLineCap(args[0]);\n break;\n\n case _util.OPS.setMiterLimit:\n this.setMiterLimit(args[0]);\n break;\n\n case _util.OPS.setFillRGBColor:\n this.setFillRGBColor(args[0], args[1], args[2]);\n break;\n\n case _util.OPS.setStrokeRGBColor:\n this.setStrokeRGBColor(args[0], args[1], args[2]);\n break;\n\n case _util.OPS.setStrokeColorN:\n this.setStrokeColorN(args);\n break;\n\n case _util.OPS.setFillColorN:\n this.setFillColorN(args);\n break;\n\n case _util.OPS.shadingFill:\n this.shadingFill(args[0]);\n break;\n\n case _util.OPS.setDash:\n this.setDash(args[0], args[1]);\n break;\n\n case _util.OPS.setRenderingIntent:\n this.setRenderingIntent(args[0]);\n break;\n\n case _util.OPS.setFlatness:\n this.setFlatness(args[0]);\n break;\n\n case _util.OPS.setGState:\n this.setGState(args[0]);\n break;\n\n case _util.OPS.fill:\n this.fill();\n break;\n\n case _util.OPS.eoFill:\n this.eoFill();\n break;\n\n case _util.OPS.stroke:\n this.stroke();\n break;\n\n case _util.OPS.fillStroke:\n this.fillStroke();\n break;\n\n case _util.OPS.eoFillStroke:\n this.eoFillStroke();\n break;\n\n case _util.OPS.clip:\n this.clip(\"nonzero\");\n break;\n\n case _util.OPS.eoClip:\n this.clip(\"evenodd\");\n break;\n\n case _util.OPS.paintSolidColorImageMask:\n this.paintSolidColorImageMask();\n break;\n\n case _util.OPS.paintImageXObject:\n this.paintImageXObject(args[0]);\n break;\n\n case _util.OPS.paintInlineImageXObject:\n this.paintInlineImageXObject(args[0]);\n break;\n\n case _util.OPS.paintImageMaskXObject:\n this.paintImageMaskXObject(args[0]);\n break;\n\n case _util.OPS.paintFormXObjectBegin:\n this.paintFormXObjectBegin(args[0], args[1]);\n break;\n\n case _util.OPS.paintFormXObjectEnd:\n this.paintFormXObjectEnd();\n break;\n\n case _util.OPS.closePath:\n this.closePath();\n break;\n\n case _util.OPS.closeStroke:\n this.closeStroke();\n break;\n\n case _util.OPS.closeFillStroke:\n this.closeFillStroke();\n break;\n\n case _util.OPS.closeEOFillStroke:\n this.closeEOFillStroke();\n break;\n\n case _util.OPS.nextLine:\n this.nextLine();\n break;\n\n case _util.OPS.transform:\n this.transform(args[0], args[1], args[2], args[3], args[4], args[5]);\n break;\n\n case _util.OPS.constructPath:\n this.constructPath(args[0], args[1]);\n break;\n\n case _util.OPS.endPath:\n this.endPath();\n break;\n\n case 92:\n this.group(opTreeElement.items);\n break;\n\n default:\n (0, _util.warn)(`Unimplemented operator ${fn}`);\n break;\n }\n }\n }\n\n setWordSpacing(wordSpacing) {\n this.current.wordSpacing = wordSpacing;\n }\n\n setCharSpacing(charSpacing) {\n this.current.charSpacing = charSpacing;\n }\n\n nextLine() {\n this.moveText(0, this.current.leading);\n }\n\n setTextMatrix(a, b, c, d, e, f) {\n const current = this.current;\n current.textMatrix = current.lineMatrix = [a, b, c, d, e, f];\n current.textMatrixScale = Math.sqrt(a * a + b * b);\n current.x = current.lineX = 0;\n current.y = current.lineY = 0;\n current.xcoords = [];\n current.ycoords = [];\n current.tspan = this.svgFactory.createElement(\"svg:tspan\");\n current.tspan.setAttributeNS(null, \"font-family\", current.fontFamily);\n current.tspan.setAttributeNS(null, \"font-size\", `${pf(current.fontSize)}px`);\n current.tspan.setAttributeNS(null, \"y\", pf(-current.y));\n current.txtElement = this.svgFactory.createElement(\"svg:text\");\n current.txtElement.appendChild(current.tspan);\n }\n\n beginText() {\n const current = this.current;\n current.x = current.lineX = 0;\n current.y = current.lineY = 0;\n current.textMatrix = _util.IDENTITY_MATRIX;\n current.lineMatrix = _util.IDENTITY_MATRIX;\n current.textMatrixScale = 1;\n current.tspan = this.svgFactory.createElement(\"svg:tspan\");\n current.txtElement = this.svgFactory.createElement(\"svg:text\");\n current.txtgrp = this.svgFactory.createElement(\"svg:g\");\n current.xcoords = [];\n current.ycoords = [];\n }\n\n moveText(x, y) {\n const current = this.current;\n current.x = current.lineX += x;\n current.y = current.lineY += y;\n current.xcoords = [];\n current.ycoords = [];\n current.tspan = this.svgFactory.createElement(\"svg:tspan\");\n current.tspan.setAttributeNS(null, \"font-family\", current.fontFamily);\n current.tspan.setAttributeNS(null, \"font-size\", `${pf(current.fontSize)}px`);\n current.tspan.setAttributeNS(null, \"y\", pf(-current.y));\n }\n\n showText(glyphs) {\n const current = this.current;\n const font = current.font;\n const fontSize = current.fontSize;\n\n if (fontSize === 0) {\n return;\n }\n\n const fontSizeScale = current.fontSizeScale;\n const charSpacing = current.charSpacing;\n const wordSpacing = current.wordSpacing;\n const fontDirection = current.fontDirection;\n const textHScale = current.textHScale * fontDirection;\n const vertical = font.vertical;\n const spacingDir = vertical ? 1 : -1;\n const defaultVMetrics = font.defaultVMetrics;\n const widthAdvanceScale = fontSize * current.fontMatrix[0];\n let x = 0;\n\n for (const glyph of glyphs) {\n if (glyph === null) {\n x += fontDirection * wordSpacing;\n continue;\n } else if ((0, _util.isNum)(glyph)) {\n x += spacingDir * glyph * fontSize / 1000;\n continue;\n }\n\n const spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing;\n const character = glyph.fontChar;\n let scaledX, scaledY;\n let width = glyph.width;\n\n if (vertical) {\n let vx;\n const vmetric = glyph.vmetric || defaultVMetrics;\n vx = glyph.vmetric ? vmetric[1] : width * 0.5;\n vx = -vx * widthAdvanceScale;\n const vy = vmetric[2] * widthAdvanceScale;\n width = vmetric ? -vmetric[0] : width;\n scaledX = vx / fontSizeScale;\n scaledY = (x + vy) / fontSizeScale;\n } else {\n scaledX = x / fontSizeScale;\n scaledY = 0;\n }\n\n if (glyph.isInFont || font.missingFile) {\n current.xcoords.push(current.x + scaledX);\n\n if (vertical) {\n current.ycoords.push(-current.y + scaledY);\n }\n\n current.tspan.textContent += character;\n } else {}\n\n let charWidth;\n\n if (vertical) {\n charWidth = width * widthAdvanceScale - spacing * fontDirection;\n } else {\n charWidth = width * widthAdvanceScale + spacing * fontDirection;\n }\n\n x += charWidth;\n }\n\n current.tspan.setAttributeNS(null, \"x\", current.xcoords.map(pf).join(\" \"));\n\n if (vertical) {\n current.tspan.setAttributeNS(null, \"y\", current.ycoords.map(pf).join(\" \"));\n } else {\n current.tspan.setAttributeNS(null, \"y\", pf(-current.y));\n }\n\n if (vertical) {\n current.y -= x;\n } else {\n current.x += x * textHScale;\n }\n\n current.tspan.setAttributeNS(null, \"font-family\", current.fontFamily);\n current.tspan.setAttributeNS(null, \"font-size\", `${pf(current.fontSize)}px`);\n\n if (current.fontStyle !== SVG_DEFAULTS.fontStyle) {\n current.tspan.setAttributeNS(null, \"font-style\", current.fontStyle);\n }\n\n if (current.fontWeight !== SVG_DEFAULTS.fontWeight) {\n current.tspan.setAttributeNS(null, \"font-weight\", current.fontWeight);\n }\n\n const fillStrokeMode = current.textRenderingMode & _util.TextRenderingMode.FILL_STROKE_MASK;\n\n if (fillStrokeMode === _util.TextRenderingMode.FILL || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) {\n if (current.fillColor !== SVG_DEFAULTS.fillColor) {\n current.tspan.setAttributeNS(null, \"fill\", current.fillColor);\n }\n\n if (current.fillAlpha < 1) {\n current.tspan.setAttributeNS(null, \"fill-opacity\", current.fillAlpha);\n }\n } else if (current.textRenderingMode === _util.TextRenderingMode.ADD_TO_PATH) {\n current.tspan.setAttributeNS(null, \"fill\", \"transparent\");\n } else {\n current.tspan.setAttributeNS(null, \"fill\", \"none\");\n }\n\n if (fillStrokeMode === _util.TextRenderingMode.STROKE || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) {\n const lineWidthScale = 1 / (current.textMatrixScale || 1);\n\n this._setStrokeAttributes(current.tspan, lineWidthScale);\n }\n\n let textMatrix = current.textMatrix;\n\n if (current.textRise !== 0) {\n textMatrix = textMatrix.slice();\n textMatrix[5] += current.textRise;\n }\n\n current.txtElement.setAttributeNS(null, \"transform\", `${pm(textMatrix)} scale(${pf(textHScale)}, -1)`);\n current.txtElement.setAttributeNS(XML_NS, \"xml:space\", \"preserve\");\n current.txtElement.appendChild(current.tspan);\n current.txtgrp.appendChild(current.txtElement);\n\n this._ensureTransformGroup().appendChild(current.txtElement);\n }\n\n setLeadingMoveText(x, y) {\n this.setLeading(-y);\n this.moveText(x, y);\n }\n\n addFontStyle(fontObj) {\n if (!fontObj.data) {\n throw new Error(\"addFontStyle: No font data available, \" + 'ensure that the \"fontExtraProperties\" API parameter is set.');\n }\n\n if (!this.cssStyle) {\n this.cssStyle = this.svgFactory.createElement(\"svg:style\");\n this.cssStyle.setAttributeNS(null, \"type\", \"text/css\");\n this.defs.appendChild(this.cssStyle);\n }\n\n const url = (0, _util.createObjectURL)(fontObj.data, fontObj.mimetype, this.forceDataSchema);\n this.cssStyle.textContent += `@font-face { font-family: \"${fontObj.loadedName}\";` + ` src: url(${url}); }\\n`;\n }\n\n setFont(details) {\n const current = this.current;\n const fontObj = this.commonObjs.get(details[0]);\n let size = details[1];\n current.font = fontObj;\n\n if (this.embedFonts && !fontObj.missingFile && !this.embeddedFonts[fontObj.loadedName]) {\n this.addFontStyle(fontObj);\n this.embeddedFonts[fontObj.loadedName] = fontObj;\n }\n\n current.fontMatrix = fontObj.fontMatrix ? fontObj.fontMatrix : _util.FONT_IDENTITY_MATRIX;\n let bold = \"normal\";\n\n if (fontObj.black) {\n bold = \"900\";\n } else if (fontObj.bold) {\n bold = \"bold\";\n }\n\n const italic = fontObj.italic ? \"italic\" : \"normal\";\n\n if (size < 0) {\n size = -size;\n current.fontDirection = -1;\n } else {\n current.fontDirection = 1;\n }\n\n current.fontSize = size;\n current.fontFamily = fontObj.loadedName;\n current.fontWeight = bold;\n current.fontStyle = italic;\n current.tspan = this.svgFactory.createElement(\"svg:tspan\");\n current.tspan.setAttributeNS(null, \"y\", pf(-current.y));\n current.xcoords = [];\n current.ycoords = [];\n }\n\n endText() {\n const current = this.current;\n\n if (current.textRenderingMode & _util.TextRenderingMode.ADD_TO_PATH_FLAG && current.txtElement && current.txtElement.hasChildNodes()) {\n current.element = current.txtElement;\n this.clip(\"nonzero\");\n this.endPath();\n }\n }\n\n setLineWidth(width) {\n if (width > 0) {\n this.current.lineWidth = width;\n }\n }\n\n setLineCap(style) {\n this.current.lineCap = LINE_CAP_STYLES[style];\n }\n\n setLineJoin(style) {\n this.current.lineJoin = LINE_JOIN_STYLES[style];\n }\n\n setMiterLimit(limit) {\n this.current.miterLimit = limit;\n }\n\n setStrokeAlpha(strokeAlpha) {\n this.current.strokeAlpha = strokeAlpha;\n }\n\n setStrokeRGBColor(r, g, b) {\n this.current.strokeColor = _util.Util.makeCssRgb(r, g, b);\n }\n\n setFillAlpha(fillAlpha) {\n this.current.fillAlpha = fillAlpha;\n }\n\n setFillRGBColor(r, g, b) {\n this.current.fillColor = _util.Util.makeCssRgb(r, g, b);\n this.current.tspan = this.svgFactory.createElement(\"svg:tspan\");\n this.current.xcoords = [];\n this.current.ycoords = [];\n }\n\n setStrokeColorN(args) {\n this.current.strokeColor = this._makeColorN_Pattern(args);\n }\n\n setFillColorN(args) {\n this.current.fillColor = this._makeColorN_Pattern(args);\n }\n\n shadingFill(args) {\n const width = this.viewport.width;\n const height = this.viewport.height;\n\n const inv = _util.Util.inverseTransform(this.transformMatrix);\n\n const bl = _util.Util.applyTransform([0, 0], inv);\n\n const br = _util.Util.applyTransform([0, height], inv);\n\n const ul = _util.Util.applyTransform([width, 0], inv);\n\n const ur = _util.Util.applyTransform([width, height], inv);\n\n const x0 = Math.min(bl[0], br[0], ul[0], ur[0]);\n const y0 = Math.min(bl[1], br[1], ul[1], ur[1]);\n const x1 = Math.max(bl[0], br[0], ul[0], ur[0]);\n const y1 = Math.max(bl[1], br[1], ul[1], ur[1]);\n const rect = this.svgFactory.createElement(\"svg:rect\");\n rect.setAttributeNS(null, \"x\", x0);\n rect.setAttributeNS(null, \"y\", y0);\n rect.setAttributeNS(null, \"width\", x1 - x0);\n rect.setAttributeNS(null, \"height\", y1 - y0);\n rect.setAttributeNS(null, \"fill\", this._makeShadingPattern(args));\n\n if (this.current.fillAlpha < 1) {\n rect.setAttributeNS(null, \"fill-opacity\", this.current.fillAlpha);\n }\n\n this._ensureTransformGroup().appendChild(rect);\n }\n\n _makeColorN_Pattern(args) {\n if (args[0] === \"TilingPattern\") {\n return this._makeTilingPattern(args);\n }\n\n return this._makeShadingPattern(args);\n }\n\n _makeTilingPattern(args) {\n const color = args[1];\n const operatorList = args[2];\n const matrix = args[3] || _util.IDENTITY_MATRIX;\n const [x0, y0, x1, y1] = args[4];\n const xstep = args[5];\n const ystep = args[6];\n const paintType = args[7];\n const tilingId = `shading${shadingCount++}`;\n\n const [tx0, ty0] = _util.Util.applyTransform([x0, y0], matrix);\n\n const [tx1, ty1] = _util.Util.applyTransform([x1, y1], matrix);\n\n const [xscale, yscale] = _util.Util.singularValueDecompose2dScale(matrix);\n\n const txstep = xstep * xscale;\n const tystep = ystep * yscale;\n const tiling = this.svgFactory.createElement(\"svg:pattern\");\n tiling.setAttributeNS(null, \"id\", tilingId);\n tiling.setAttributeNS(null, \"patternUnits\", \"userSpaceOnUse\");\n tiling.setAttributeNS(null, \"width\", txstep);\n tiling.setAttributeNS(null, \"height\", tystep);\n tiling.setAttributeNS(null, \"x\", `${tx0}`);\n tiling.setAttributeNS(null, \"y\", `${ty0}`);\n const svg = this.svg;\n const transformMatrix = this.transformMatrix;\n const fillColor = this.current.fillColor;\n const strokeColor = this.current.strokeColor;\n const bbox = this.svgFactory.create(tx1 - tx0, ty1 - ty0);\n this.svg = bbox;\n this.transformMatrix = matrix;\n\n if (paintType === 2) {\n const cssColor = _util.Util.makeCssRgb(...color);\n\n this.current.fillColor = cssColor;\n this.current.strokeColor = cssColor;\n }\n\n this.executeOpTree(this.convertOpList(operatorList));\n this.svg = svg;\n this.transformMatrix = transformMatrix;\n this.current.fillColor = fillColor;\n this.current.strokeColor = strokeColor;\n tiling.appendChild(bbox.childNodes[0]);\n this.defs.appendChild(tiling);\n return `url(#${tilingId})`;\n }\n\n _makeShadingPattern(args) {\n switch (args[0]) {\n case \"RadialAxial\":\n const shadingId = `shading${shadingCount++}`;\n const colorStops = args[3];\n let gradient;\n\n switch (args[1]) {\n case \"axial\":\n const point0 = args[4];\n const point1 = args[5];\n gradient = this.svgFactory.createElement(\"svg:linearGradient\");\n gradient.setAttributeNS(null, \"id\", shadingId);\n gradient.setAttributeNS(null, \"gradientUnits\", \"userSpaceOnUse\");\n gradient.setAttributeNS(null, \"x1\", point0[0]);\n gradient.setAttributeNS(null, \"y1\", point0[1]);\n gradient.setAttributeNS(null, \"x2\", point1[0]);\n gradient.setAttributeNS(null, \"y2\", point1[1]);\n break;\n\n case \"radial\":\n const focalPoint = args[4];\n const circlePoint = args[5];\n const focalRadius = args[6];\n const circleRadius = args[7];\n gradient = this.svgFactory.createElement(\"svg:radialGradient\");\n gradient.setAttributeNS(null, \"id\", shadingId);\n gradient.setAttributeNS(null, \"gradientUnits\", \"userSpaceOnUse\");\n gradient.setAttributeNS(null, \"cx\", circlePoint[0]);\n gradient.setAttributeNS(null, \"cy\", circlePoint[1]);\n gradient.setAttributeNS(null, \"r\", circleRadius);\n gradient.setAttributeNS(null, \"fx\", focalPoint[0]);\n gradient.setAttributeNS(null, \"fy\", focalPoint[1]);\n gradient.setAttributeNS(null, \"fr\", focalRadius);\n break;\n\n default:\n throw new Error(`Unknown RadialAxial type: ${args[1]}`);\n }\n\n for (const colorStop of colorStops) {\n const stop = this.svgFactory.createElement(\"svg:stop\");\n stop.setAttributeNS(null, \"offset\", colorStop[0]);\n stop.setAttributeNS(null, \"stop-color\", colorStop[1]);\n gradient.appendChild(stop);\n }\n\n this.defs.appendChild(gradient);\n return `url(#${shadingId})`;\n\n case \"Mesh\":\n (0, _util.warn)(\"Unimplemented pattern Mesh\");\n return null;\n\n case \"Dummy\":\n return \"hotpink\";\n\n default:\n throw new Error(`Unknown IR type: ${args[0]}`);\n }\n }\n\n setDash(dashArray, dashPhase) {\n this.current.dashArray = dashArray;\n this.current.dashPhase = dashPhase;\n }\n\n constructPath(ops, args) {\n const current = this.current;\n let x = current.x,\n y = current.y;\n let d = [];\n let j = 0;\n\n for (const op of ops) {\n switch (op | 0) {\n case _util.OPS.rectangle:\n x = args[j++];\n y = args[j++];\n const width = args[j++];\n const height = args[j++];\n const xw = x + width;\n const yh = y + height;\n d.push(\"M\", pf(x), pf(y), \"L\", pf(xw), pf(y), \"L\", pf(xw), pf(yh), \"L\", pf(x), pf(yh), \"Z\");\n break;\n\n case _util.OPS.moveTo:\n x = args[j++];\n y = args[j++];\n d.push(\"M\", pf(x), pf(y));\n break;\n\n case _util.OPS.lineTo:\n x = args[j++];\n y = args[j++];\n d.push(\"L\", pf(x), pf(y));\n break;\n\n case _util.OPS.curveTo:\n x = args[j + 4];\n y = args[j + 5];\n d.push(\"C\", pf(args[j]), pf(args[j + 1]), pf(args[j + 2]), pf(args[j + 3]), pf(x), pf(y));\n j += 6;\n break;\n\n case _util.OPS.curveTo2:\n d.push(\"C\", pf(x), pf(y), pf(args[j]), pf(args[j + 1]), pf(args[j + 2]), pf(args[j + 3]));\n x = args[j + 2];\n y = args[j + 3];\n j += 4;\n break;\n\n case _util.OPS.curveTo3:\n x = args[j + 2];\n y = args[j + 3];\n d.push(\"C\", pf(args[j]), pf(args[j + 1]), pf(x), pf(y), pf(x), pf(y));\n j += 4;\n break;\n\n case _util.OPS.closePath:\n d.push(\"Z\");\n break;\n }\n }\n\n d = d.join(\" \");\n\n if (current.path && ops.length > 0 && ops[0] !== _util.OPS.rectangle && ops[0] !== _util.OPS.moveTo) {\n d = current.path.getAttributeNS(null, \"d\") + d;\n } else {\n current.path = this.svgFactory.createElement(\"svg:path\");\n\n this._ensureTransformGroup().appendChild(current.path);\n }\n\n current.path.setAttributeNS(null, \"d\", d);\n current.path.setAttributeNS(null, \"fill\", \"none\");\n current.element = current.path;\n current.setCurrentPoint(x, y);\n }\n\n endPath() {\n const current = this.current;\n current.path = null;\n\n if (!this.pendingClip) {\n return;\n }\n\n if (!current.element) {\n this.pendingClip = null;\n return;\n }\n\n const clipId = `clippath${clipCount++}`;\n const clipPath = this.svgFactory.createElement(\"svg:clipPath\");\n clipPath.setAttributeNS(null, \"id\", clipId);\n clipPath.setAttributeNS(null, \"transform\", pm(this.transformMatrix));\n const clipElement = current.element.cloneNode(true);\n\n if (this.pendingClip === \"evenodd\") {\n clipElement.setAttributeNS(null, \"clip-rule\", \"evenodd\");\n } else {\n clipElement.setAttributeNS(null, \"clip-rule\", \"nonzero\");\n }\n\n this.pendingClip = null;\n clipPath.appendChild(clipElement);\n this.defs.appendChild(clipPath);\n\n if (current.activeClipUrl) {\n current.clipGroup = null;\n this.extraStack.forEach(function (prev) {\n prev.clipGroup = null;\n });\n clipPath.setAttributeNS(null, \"clip-path\", current.activeClipUrl);\n }\n\n current.activeClipUrl = `url(#${clipId})`;\n this.tgrp = null;\n }\n\n clip(type) {\n this.pendingClip = type;\n }\n\n closePath() {\n const current = this.current;\n\n if (current.path) {\n const d = `${current.path.getAttributeNS(null, \"d\")}Z`;\n current.path.setAttributeNS(null, \"d\", d);\n }\n }\n\n setLeading(leading) {\n this.current.leading = -leading;\n }\n\n setTextRise(textRise) {\n this.current.textRise = textRise;\n }\n\n setTextRenderingMode(textRenderingMode) {\n this.current.textRenderingMode = textRenderingMode;\n }\n\n setHScale(scale) {\n this.current.textHScale = scale / 100;\n }\n\n setRenderingIntent(intent) {}\n\n setFlatness(flatness) {}\n\n setGState(states) {\n for (const [key, value] of states) {\n switch (key) {\n case \"LW\":\n this.setLineWidth(value);\n break;\n\n case \"LC\":\n this.setLineCap(value);\n break;\n\n case \"LJ\":\n this.setLineJoin(value);\n break;\n\n case \"ML\":\n this.setMiterLimit(value);\n break;\n\n case \"D\":\n this.setDash(value[0], value[1]);\n break;\n\n case \"RI\":\n this.setRenderingIntent(value);\n break;\n\n case \"FL\":\n this.setFlatness(value);\n break;\n\n case \"Font\":\n this.setFont(value);\n break;\n\n case \"CA\":\n this.setStrokeAlpha(value);\n break;\n\n case \"ca\":\n this.setFillAlpha(value);\n break;\n\n default:\n (0, _util.warn)(`Unimplemented graphic state operator ${key}`);\n break;\n }\n }\n }\n\n fill() {\n const current = this.current;\n\n if (current.element) {\n current.element.setAttributeNS(null, \"fill\", current.fillColor);\n current.element.setAttributeNS(null, \"fill-opacity\", current.fillAlpha);\n this.endPath();\n }\n }\n\n stroke() {\n const current = this.current;\n\n if (current.element) {\n this._setStrokeAttributes(current.element);\n\n current.element.setAttributeNS(null, \"fill\", \"none\");\n this.endPath();\n }\n }\n\n _setStrokeAttributes(element, lineWidthScale = 1) {\n const current = this.current;\n let dashArray = current.dashArray;\n\n if (lineWidthScale !== 1 && dashArray.length > 0) {\n dashArray = dashArray.map(function (value) {\n return lineWidthScale * value;\n });\n }\n\n element.setAttributeNS(null, \"stroke\", current.strokeColor);\n element.setAttributeNS(null, \"stroke-opacity\", current.strokeAlpha);\n element.setAttributeNS(null, \"stroke-miterlimit\", pf(current.miterLimit));\n element.setAttributeNS(null, \"stroke-linecap\", current.lineCap);\n element.setAttributeNS(null, \"stroke-linejoin\", current.lineJoin);\n element.setAttributeNS(null, \"stroke-width\", pf(lineWidthScale * current.lineWidth) + \"px\");\n element.setAttributeNS(null, \"stroke-dasharray\", dashArray.map(pf).join(\" \"));\n element.setAttributeNS(null, \"stroke-dashoffset\", pf(lineWidthScale * current.dashPhase) + \"px\");\n }\n\n eoFill() {\n if (this.current.element) {\n this.current.element.setAttributeNS(null, \"fill-rule\", \"evenodd\");\n }\n\n this.fill();\n }\n\n fillStroke() {\n this.stroke();\n this.fill();\n }\n\n eoFillStroke() {\n if (this.current.element) {\n this.current.element.setAttributeNS(null, \"fill-rule\", \"evenodd\");\n }\n\n this.fillStroke();\n }\n\n closeStroke() {\n this.closePath();\n this.stroke();\n }\n\n closeFillStroke() {\n this.closePath();\n this.fillStroke();\n }\n\n closeEOFillStroke() {\n this.closePath();\n this.eoFillStroke();\n }\n\n paintSolidColorImageMask() {\n const rect = this.svgFactory.createElement(\"svg:rect\");\n rect.setAttributeNS(null, \"x\", \"0\");\n rect.setAttributeNS(null, \"y\", \"0\");\n rect.setAttributeNS(null, \"width\", \"1px\");\n rect.setAttributeNS(null, \"height\", \"1px\");\n rect.setAttributeNS(null, \"fill\", this.current.fillColor);\n\n this._ensureTransformGroup().appendChild(rect);\n }\n\n paintImageXObject(objId) {\n const imgData = objId.startsWith(\"g_\") ? this.commonObjs.get(objId) : this.objs.get(objId);\n\n if (!imgData) {\n (0, _util.warn)(`Dependent image with object ID ${objId} is not ready yet`);\n return;\n }\n\n this.paintInlineImageXObject(imgData);\n }\n\n paintInlineImageXObject(imgData, mask) {\n const width = imgData.width;\n const height = imgData.height;\n const imgSrc = convertImgDataToPng(imgData, this.forceDataSchema, !!mask);\n const cliprect = this.svgFactory.createElement(\"svg:rect\");\n cliprect.setAttributeNS(null, \"x\", \"0\");\n cliprect.setAttributeNS(null, \"y\", \"0\");\n cliprect.setAttributeNS(null, \"width\", pf(width));\n cliprect.setAttributeNS(null, \"height\", pf(height));\n this.current.element = cliprect;\n this.clip(\"nonzero\");\n const imgEl = this.svgFactory.createElement(\"svg:image\");\n imgEl.setAttributeNS(XLINK_NS, \"xlink:href\", imgSrc);\n imgEl.setAttributeNS(null, \"x\", \"0\");\n imgEl.setAttributeNS(null, \"y\", pf(-height));\n imgEl.setAttributeNS(null, \"width\", pf(width) + \"px\");\n imgEl.setAttributeNS(null, \"height\", pf(height) + \"px\");\n imgEl.setAttributeNS(null, \"transform\", `scale(${pf(1 / width)} ${pf(-1 / height)})`);\n\n if (mask) {\n mask.appendChild(imgEl);\n } else {\n this._ensureTransformGroup().appendChild(imgEl);\n }\n }\n\n paintImageMaskXObject(imgData) {\n const current = this.current;\n const width = imgData.width;\n const height = imgData.height;\n const fillColor = current.fillColor;\n current.maskId = `mask${maskCount++}`;\n const mask = this.svgFactory.createElement(\"svg:mask\");\n mask.setAttributeNS(null, \"id\", current.maskId);\n const rect = this.svgFactory.createElement(\"svg:rect\");\n rect.setAttributeNS(null, \"x\", \"0\");\n rect.setAttributeNS(null, \"y\", \"0\");\n rect.setAttributeNS(null, \"width\", pf(width));\n rect.setAttributeNS(null, \"height\", pf(height));\n rect.setAttributeNS(null, \"fill\", fillColor);\n rect.setAttributeNS(null, \"mask\", `url(#${current.maskId})`);\n this.defs.appendChild(mask);\n\n this._ensureTransformGroup().appendChild(rect);\n\n this.paintInlineImageXObject(imgData, mask);\n }\n\n paintFormXObjectBegin(matrix, bbox) {\n if (Array.isArray(matrix) && matrix.length === 6) {\n this.transform(matrix[0], matrix[1], matrix[2], matrix[3], matrix[4], matrix[5]);\n }\n\n if (bbox) {\n const width = bbox[2] - bbox[0];\n const height = bbox[3] - bbox[1];\n const cliprect = this.svgFactory.createElement(\"svg:rect\");\n cliprect.setAttributeNS(null, \"x\", bbox[0]);\n cliprect.setAttributeNS(null, \"y\", bbox[1]);\n cliprect.setAttributeNS(null, \"width\", pf(width));\n cliprect.setAttributeNS(null, \"height\", pf(height));\n this.current.element = cliprect;\n this.clip(\"nonzero\");\n this.endPath();\n }\n }\n\n paintFormXObjectEnd() {}\n\n _initialize(viewport) {\n const svg = this.svgFactory.create(viewport.width, viewport.height);\n const definitions = this.svgFactory.createElement(\"svg:defs\");\n svg.appendChild(definitions);\n this.defs = definitions;\n const rootGroup = this.svgFactory.createElement(\"svg:g\");\n rootGroup.setAttributeNS(null, \"transform\", pm(viewport.transform));\n svg.appendChild(rootGroup);\n this.svg = rootGroup;\n return svg;\n }\n\n _ensureClipGroup() {\n if (!this.current.clipGroup) {\n const clipGroup = this.svgFactory.createElement(\"svg:g\");\n clipGroup.setAttributeNS(null, \"clip-path\", this.current.activeClipUrl);\n this.svg.appendChild(clipGroup);\n this.current.clipGroup = clipGroup;\n }\n\n return this.current.clipGroup;\n }\n\n _ensureTransformGroup() {\n if (!this.tgrp) {\n this.tgrp = this.svgFactory.createElement(\"svg:g\");\n this.tgrp.setAttributeNS(null, \"transform\", pm(this.transformMatrix));\n\n if (this.current.activeClipUrl) {\n this._ensureClipGroup().appendChild(this.tgrp);\n } else {\n this.svg.appendChild(this.tgrp);\n }\n }\n\n return this.tgrp;\n }\n\n };\n}\n\n/***/ }),\n/* 22 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.PDFNodeStream = void 0;\n\nvar _util = __w_pdfjs_require__(2);\n\nvar _network_utils = __w_pdfjs_require__(23);\n\n;\n\nconst fs = require(\"fs\");\n\nconst http = require(\"http\");\n\nconst https = require(\"https\");\n\nconst url = require(\"url\");\n\nconst fileUriRegex = /^file:\\/\\/\\/[a-zA-Z]:\\//;\n\nfunction parseUrl(sourceUrl) {\n const parsedUrl = url.parse(sourceUrl);\n\n if (parsedUrl.protocol === \"file:\" || parsedUrl.host) {\n return parsedUrl;\n }\n\n if (/^[a-z]:[/\\\\]/i.test(sourceUrl)) {\n return url.parse(`file:///${sourceUrl}`);\n }\n\n if (!parsedUrl.host) {\n parsedUrl.protocol = \"file:\";\n }\n\n return parsedUrl;\n}\n\nclass PDFNodeStream {\n constructor(source) {\n this.source = source;\n this.url = parseUrl(source.url);\n this.isHttp = this.url.protocol === \"http:\" || this.url.protocol === \"https:\";\n this.isFsUrl = this.url.protocol === \"file:\";\n this.httpHeaders = this.isHttp && source.httpHeaders || {};\n this._fullRequestReader = null;\n this._rangeRequestReaders = [];\n }\n\n get _progressiveDataLength() {\n return this._fullRequestReader ? this._fullRequestReader._loaded : 0;\n }\n\n getFullReader() {\n (0, _util.assert)(!this._fullRequestReader, \"PDFNodeStream.getFullReader can only be called once.\");\n this._fullRequestReader = this.isFsUrl ? new PDFNodeStreamFsFullReader(this) : new PDFNodeStreamFullReader(this);\n return this._fullRequestReader;\n }\n\n getRangeReader(start, end) {\n if (end <= this._progressiveDataLength) {\n return null;\n }\n\n const rangeReader = this.isFsUrl ? new PDFNodeStreamFsRangeReader(this, start, end) : new PDFNodeStreamRangeReader(this, start, end);\n\n this._rangeRequestReaders.push(rangeReader);\n\n return rangeReader;\n }\n\n cancelAllRequests(reason) {\n if (this._fullRequestReader) {\n this._fullRequestReader.cancel(reason);\n }\n\n const readers = this._rangeRequestReaders.slice(0);\n\n readers.forEach(function (reader) {\n reader.cancel(reason);\n });\n }\n\n}\n\nexports.PDFNodeStream = PDFNodeStream;\n\nclass BaseFullReader {\n constructor(stream) {\n this._url = stream.url;\n this._done = false;\n this._storedError = null;\n this.onProgress = null;\n const source = stream.source;\n this._contentLength = source.length;\n this._loaded = 0;\n this._filename = null;\n this._disableRange = source.disableRange || false;\n this._rangeChunkSize = source.rangeChunkSize;\n\n if (!this._rangeChunkSize && !this._disableRange) {\n this._disableRange = true;\n }\n\n this._isStreamingSupported = !source.disableStream;\n this._isRangeSupported = !source.disableRange;\n this._readableStream = null;\n this._readCapability = (0, _util.createPromiseCapability)();\n this._headersCapability = (0, _util.createPromiseCapability)();\n }\n\n get headersReady() {\n return this._headersCapability.promise;\n }\n\n get filename() {\n return this._filename;\n }\n\n get contentLength() {\n return this._contentLength;\n }\n\n get isRangeSupported() {\n return this._isRangeSupported;\n }\n\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n\n async read() {\n await this._readCapability.promise;\n\n if (this._done) {\n return {\n value: undefined,\n done: true\n };\n }\n\n if (this._storedError) {\n throw this._storedError;\n }\n\n const chunk = this._readableStream.read();\n\n if (chunk === null) {\n this._readCapability = (0, _util.createPromiseCapability)();\n return this.read();\n }\n\n this._loaded += chunk.length;\n\n if (this.onProgress) {\n this.onProgress({\n loaded: this._loaded,\n total: this._contentLength\n });\n }\n\n const buffer = new Uint8Array(chunk).buffer;\n return {\n value: buffer,\n done: false\n };\n }\n\n cancel(reason) {\n if (!this._readableStream) {\n this._error(reason);\n\n return;\n }\n\n this._readableStream.destroy(reason);\n }\n\n _error(reason) {\n this._storedError = reason;\n\n this._readCapability.resolve();\n }\n\n _setReadableStream(readableStream) {\n this._readableStream = readableStream;\n readableStream.on(\"readable\", () => {\n this._readCapability.resolve();\n });\n readableStream.on(\"end\", () => {\n readableStream.destroy();\n this._done = true;\n\n this._readCapability.resolve();\n });\n readableStream.on(\"error\", reason => {\n this._error(reason);\n });\n\n if (!this._isStreamingSupported && this._isRangeSupported) {\n this._error(new _util.AbortException(\"streaming is disabled\"));\n }\n\n if (this._storedError) {\n this._readableStream.destroy(this._storedError);\n }\n }\n\n}\n\nclass BaseRangeReader {\n constructor(stream) {\n this._url = stream.url;\n this._done = false;\n this._storedError = null;\n this.onProgress = null;\n this._loaded = 0;\n this._readableStream = null;\n this._readCapability = (0, _util.createPromiseCapability)();\n const source = stream.source;\n this._isStreamingSupported = !source.disableStream;\n }\n\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n\n async read() {\n await this._readCapability.promise;\n\n if (this._done) {\n return {\n value: undefined,\n done: true\n };\n }\n\n if (this._storedError) {\n throw this._storedError;\n }\n\n const chunk = this._readableStream.read();\n\n if (chunk === null) {\n this._readCapability = (0, _util.createPromiseCapability)();\n return this.read();\n }\n\n this._loaded += chunk.length;\n\n if (this.onProgress) {\n this.onProgress({\n loaded: this._loaded\n });\n }\n\n const buffer = new Uint8Array(chunk).buffer;\n return {\n value: buffer,\n done: false\n };\n }\n\n cancel(reason) {\n if (!this._readableStream) {\n this._error(reason);\n\n return;\n }\n\n this._readableStream.destroy(reason);\n }\n\n _error(reason) {\n this._storedError = reason;\n\n this._readCapability.resolve();\n }\n\n _setReadableStream(readableStream) {\n this._readableStream = readableStream;\n readableStream.on(\"readable\", () => {\n this._readCapability.resolve();\n });\n readableStream.on(\"end\", () => {\n readableStream.destroy();\n this._done = true;\n\n this._readCapability.resolve();\n });\n readableStream.on(\"error\", reason => {\n this._error(reason);\n });\n\n if (this._storedError) {\n this._readableStream.destroy(this._storedError);\n }\n }\n\n}\n\nfunction createRequestOptions(parsedUrl, headers) {\n return {\n protocol: parsedUrl.protocol,\n auth: parsedUrl.auth,\n host: parsedUrl.hostname,\n port: parsedUrl.port,\n path: parsedUrl.path,\n method: \"GET\",\n headers\n };\n}\n\nclass PDFNodeStreamFullReader extends BaseFullReader {\n constructor(stream) {\n super(stream);\n\n const handleResponse = response => {\n if (response.statusCode === 404) {\n const error = new _util.MissingPDFException(`Missing PDF \"${this._url}\".`);\n this._storedError = error;\n\n this._headersCapability.reject(error);\n\n return;\n }\n\n this._headersCapability.resolve();\n\n this._setReadableStream(response);\n\n const getResponseHeader = name => {\n return this._readableStream.headers[name.toLowerCase()];\n };\n\n const {\n allowRangeRequests,\n suggestedLength\n } = (0, _network_utils.validateRangeRequestCapabilities)({\n getResponseHeader,\n isHttp: stream.isHttp,\n rangeChunkSize: this._rangeChunkSize,\n disableRange: this._disableRange\n });\n this._isRangeSupported = allowRangeRequests;\n this._contentLength = suggestedLength || this._contentLength;\n this._filename = (0, _network_utils.extractFilenameFromHeader)(getResponseHeader);\n };\n\n this._request = null;\n\n if (this._url.protocol === \"http:\") {\n this._request = http.request(createRequestOptions(this._url, stream.httpHeaders), handleResponse);\n } else {\n this._request = https.request(createRequestOptions(this._url, stream.httpHeaders), handleResponse);\n }\n\n this._request.on(\"error\", reason => {\n this._storedError = reason;\n\n this._headersCapability.reject(reason);\n });\n\n this._request.end();\n }\n\n}\n\nclass PDFNodeStreamRangeReader extends BaseRangeReader {\n constructor(stream, start, end) {\n super(stream);\n this._httpHeaders = {};\n\n for (const property in stream.httpHeaders) {\n const value = stream.httpHeaders[property];\n\n if (typeof value === \"undefined\") {\n continue;\n }\n\n this._httpHeaders[property] = value;\n }\n\n this._httpHeaders.Range = `bytes=${start}-${end - 1}`;\n\n const handleResponse = response => {\n if (response.statusCode === 404) {\n const error = new _util.MissingPDFException(`Missing PDF \"${this._url}\".`);\n this._storedError = error;\n return;\n }\n\n this._setReadableStream(response);\n };\n\n this._request = null;\n\n if (this._url.protocol === \"http:\") {\n this._request = http.request(createRequestOptions(this._url, this._httpHeaders), handleResponse);\n } else {\n this._request = https.request(createRequestOptions(this._url, this._httpHeaders), handleResponse);\n }\n\n this._request.on(\"error\", reason => {\n this._storedError = reason;\n });\n\n this._request.end();\n }\n\n}\n\nclass PDFNodeStreamFsFullReader extends BaseFullReader {\n constructor(stream) {\n super(stream);\n let path = decodeURIComponent(this._url.path);\n\n if (fileUriRegex.test(this._url.href)) {\n path = path.replace(/^\\//, \"\");\n }\n\n fs.lstat(path, (error, stat) => {\n if (error) {\n if (error.code === \"ENOENT\") {\n error = new _util.MissingPDFException(`Missing PDF \"${path}\".`);\n }\n\n this._storedError = error;\n\n this._headersCapability.reject(error);\n\n return;\n }\n\n this._contentLength = stat.size;\n\n this._setReadableStream(fs.createReadStream(path));\n\n this._headersCapability.resolve();\n });\n }\n\n}\n\nclass PDFNodeStreamFsRangeReader extends BaseRangeReader {\n constructor(stream, start, end) {\n super(stream);\n let path = decodeURIComponent(this._url.path);\n\n if (fileUriRegex.test(this._url.href)) {\n path = path.replace(/^\\//, \"\");\n }\n\n this._setReadableStream(fs.createReadStream(path, {\n start,\n end: end - 1\n }));\n }\n\n}\n\n/***/ }),\n/* 23 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.createResponseStatusError = createResponseStatusError;\nexports.extractFilenameFromHeader = extractFilenameFromHeader;\nexports.validateRangeRequestCapabilities = validateRangeRequestCapabilities;\nexports.validateResponseStatus = validateResponseStatus;\n\nvar _util = __w_pdfjs_require__(2);\n\nvar _content_disposition = __w_pdfjs_require__(24);\n\nfunction validateRangeRequestCapabilities({\n getResponseHeader,\n isHttp,\n rangeChunkSize,\n disableRange\n}) {\n (0, _util.assert)(rangeChunkSize > 0, \"Range chunk size must be larger than zero\");\n const returnValues = {\n allowRangeRequests: false,\n suggestedLength: undefined\n };\n const length = parseInt(getResponseHeader(\"Content-Length\"), 10);\n\n if (!Number.isInteger(length)) {\n return returnValues;\n }\n\n returnValues.suggestedLength = length;\n\n if (length <= 2 * rangeChunkSize) {\n return returnValues;\n }\n\n if (disableRange || !isHttp) {\n return returnValues;\n }\n\n if (getResponseHeader(\"Accept-Ranges\") !== \"bytes\") {\n return returnValues;\n }\n\n const contentEncoding = getResponseHeader(\"Content-Encoding\") || \"identity\";\n\n if (contentEncoding !== \"identity\") {\n return returnValues;\n }\n\n returnValues.allowRangeRequests = true;\n return returnValues;\n}\n\nfunction extractFilenameFromHeader(getResponseHeader) {\n const contentDisposition = getResponseHeader(\"Content-Disposition\");\n\n if (contentDisposition) {\n let filename = (0, _content_disposition.getFilenameFromContentDispositionHeader)(contentDisposition);\n\n if (filename.includes(\"%\")) {\n try {\n filename = decodeURIComponent(filename);\n } catch (ex) {}\n }\n\n if (/\\.pdf$/i.test(filename)) {\n return filename;\n }\n }\n\n return null;\n}\n\nfunction createResponseStatusError(status, url) {\n if (status === 404 || status === 0 && url.startsWith(\"file:\")) {\n return new _util.MissingPDFException('Missing PDF \"' + url + '\".');\n }\n\n return new _util.UnexpectedResponseException(\"Unexpected server response (\" + status + ') while retrieving PDF \"' + url + '\".', status);\n}\n\nfunction validateResponseStatus(status) {\n return status === 200 || status === 206;\n}\n\n/***/ }),\n/* 24 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getFilenameFromContentDispositionHeader = getFilenameFromContentDispositionHeader;\n\nfunction getFilenameFromContentDispositionHeader(contentDisposition) {\n let needsEncodingFixup = true;\n let tmp = toParamRegExp(\"filename\\\\*\", \"i\").exec(contentDisposition);\n\n if (tmp) {\n tmp = tmp[1];\n let filename = rfc2616unquote(tmp);\n filename = unescape(filename);\n filename = rfc5987decode(filename);\n filename = rfc2047decode(filename);\n return fixupEncoding(filename);\n }\n\n tmp = rfc2231getparam(contentDisposition);\n\n if (tmp) {\n const filename = rfc2047decode(tmp);\n return fixupEncoding(filename);\n }\n\n tmp = toParamRegExp(\"filename\", \"i\").exec(contentDisposition);\n\n if (tmp) {\n tmp = tmp[1];\n let filename = rfc2616unquote(tmp);\n filename = rfc2047decode(filename);\n return fixupEncoding(filename);\n }\n\n function toParamRegExp(attributePattern, flags) {\n return new RegExp(\"(?:^|;)\\\\s*\" + attributePattern + \"\\\\s*=\\\\s*\" + \"(\" + '[^\";\\\\s][^;\\\\s]*' + \"|\" + '\"(?:[^\"\\\\\\\\]|\\\\\\\\\"?)+\"?' + \")\", flags);\n }\n\n function textdecode(encoding, value) {\n if (encoding) {\n if (!/^[\\x00-\\xFF]+$/.test(value)) {\n return value;\n }\n\n try {\n const decoder = new TextDecoder(encoding, {\n fatal: true\n });\n const bytes = Array.from(value, function (ch) {\n return ch.charCodeAt(0) & 0xff;\n });\n value = decoder.decode(new Uint8Array(bytes));\n needsEncodingFixup = false;\n } catch (e) {\n if (/^utf-?8$/i.test(encoding)) {\n try {\n value = decodeURIComponent(escape(value));\n needsEncodingFixup = false;\n } catch (err) {}\n }\n }\n }\n\n return value;\n }\n\n function fixupEncoding(value) {\n if (needsEncodingFixup && /[\\x80-\\xff]/.test(value)) {\n value = textdecode(\"utf-8\", value);\n\n if (needsEncodingFixup) {\n value = textdecode(\"iso-8859-1\", value);\n }\n }\n\n return value;\n }\n\n function rfc2231getparam(contentDispositionStr) {\n const matches = [];\n let match;\n const iter = toParamRegExp(\"filename\\\\*((?!0\\\\d)\\\\d+)(\\\\*?)\", \"ig\");\n\n while ((match = iter.exec(contentDispositionStr)) !== null) {\n let [, n, quot, part] = match;\n n = parseInt(n, 10);\n\n if (n in matches) {\n if (n === 0) {\n break;\n }\n\n continue;\n }\n\n matches[n] = [quot, part];\n }\n\n const parts = [];\n\n for (let n = 0; n < matches.length; ++n) {\n if (!(n in matches)) {\n break;\n }\n\n let [quot, part] = matches[n];\n part = rfc2616unquote(part);\n\n if (quot) {\n part = unescape(part);\n\n if (n === 0) {\n part = rfc5987decode(part);\n }\n }\n\n parts.push(part);\n }\n\n return parts.join(\"\");\n }\n\n function rfc2616unquote(value) {\n if (value.startsWith('\"')) {\n const parts = value.slice(1).split('\\\\\"');\n\n for (let i = 0; i < parts.length; ++i) {\n const quotindex = parts[i].indexOf('\"');\n\n if (quotindex !== -1) {\n parts[i] = parts[i].slice(0, quotindex);\n parts.length = i + 1;\n }\n\n parts[i] = parts[i].replace(/\\\\(.)/g, \"$1\");\n }\n\n value = parts.join('\"');\n }\n\n return value;\n }\n\n function rfc5987decode(extvalue) {\n const encodingend = extvalue.indexOf(\"'\");\n\n if (encodingend === -1) {\n return extvalue;\n }\n\n const encoding = extvalue.slice(0, encodingend);\n const langvalue = extvalue.slice(encodingend + 1);\n const value = langvalue.replace(/^[^']*'/, \"\");\n return textdecode(encoding, value);\n }\n\n function rfc2047decode(value) {\n if (!value.startsWith(\"=?\") || /[\\x00-\\x19\\x80-\\xff]/.test(value)) {\n return value;\n }\n\n return value.replace(/=\\?([\\w-]*)\\?([QqBb])\\?((?:[^?]|\\?(?!=))*)\\?=/g, function (matches, charset, encoding, text) {\n if (encoding === \"q\" || encoding === \"Q\") {\n text = text.replace(/_/g, \" \");\n text = text.replace(/=([0-9a-fA-F]{2})/g, function (match, hex) {\n return String.fromCharCode(parseInt(hex, 16));\n });\n return textdecode(charset, text);\n }\n\n try {\n text = atob(text);\n } catch (e) {}\n\n return textdecode(charset, text);\n });\n }\n\n return \"\";\n}\n\n/***/ }),\n/* 25 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.PDFNetworkStream = void 0;\n\nvar _util = __w_pdfjs_require__(2);\n\nvar _network_utils = __w_pdfjs_require__(23);\n\n;\nconst OK_RESPONSE = 200;\nconst PARTIAL_CONTENT_RESPONSE = 206;\n\nfunction getArrayBuffer(xhr) {\n const data = xhr.response;\n\n if (typeof data !== \"string\") {\n return data;\n }\n\n const array = (0, _util.stringToBytes)(data);\n return array.buffer;\n}\n\nclass NetworkManager {\n constructor(url, args) {\n this.url = url;\n args = args || {};\n this.isHttp = /^https?:/i.test(url);\n this.httpHeaders = this.isHttp && args.httpHeaders || {};\n this.withCredentials = args.withCredentials || false;\n\n this.getXhr = args.getXhr || function NetworkManager_getXhr() {\n return new XMLHttpRequest();\n };\n\n this.currXhrId = 0;\n this.pendingRequests = Object.create(null);\n }\n\n requestRange(begin, end, listeners) {\n const args = {\n begin,\n end\n };\n\n for (const prop in listeners) {\n args[prop] = listeners[prop];\n }\n\n return this.request(args);\n }\n\n requestFull(listeners) {\n return this.request(listeners);\n }\n\n request(args) {\n const xhr = this.getXhr();\n const xhrId = this.currXhrId++;\n const pendingRequest = this.pendingRequests[xhrId] = {\n xhr\n };\n xhr.open(\"GET\", this.url);\n xhr.withCredentials = this.withCredentials;\n\n for (const property in this.httpHeaders) {\n const value = this.httpHeaders[property];\n\n if (typeof value === \"undefined\") {\n continue;\n }\n\n xhr.setRequestHeader(property, value);\n }\n\n if (this.isHttp && \"begin\" in args && \"end\" in args) {\n xhr.setRequestHeader(\"Range\", `bytes=${args.begin}-${args.end - 1}`);\n pendingRequest.expectedStatus = PARTIAL_CONTENT_RESPONSE;\n } else {\n pendingRequest.expectedStatus = OK_RESPONSE;\n }\n\n xhr.responseType = \"arraybuffer\";\n\n if (args.onError) {\n xhr.onerror = function (evt) {\n args.onError(xhr.status);\n };\n }\n\n xhr.onreadystatechange = this.onStateChange.bind(this, xhrId);\n xhr.onprogress = this.onProgress.bind(this, xhrId);\n pendingRequest.onHeadersReceived = args.onHeadersReceived;\n pendingRequest.onDone = args.onDone;\n pendingRequest.onError = args.onError;\n pendingRequest.onProgress = args.onProgress;\n xhr.send(null);\n return xhrId;\n }\n\n onProgress(xhrId, evt) {\n const pendingRequest = this.pendingRequests[xhrId];\n\n if (!pendingRequest) {\n return;\n }\n\n if (pendingRequest.onProgress) {\n pendingRequest.onProgress(evt);\n }\n }\n\n onStateChange(xhrId, evt) {\n const pendingRequest = this.pendingRequests[xhrId];\n\n if (!pendingRequest) {\n return;\n }\n\n const xhr = pendingRequest.xhr;\n\n if (xhr.readyState >= 2 && pendingRequest.onHeadersReceived) {\n pendingRequest.onHeadersReceived();\n delete pendingRequest.onHeadersReceived;\n }\n\n if (xhr.readyState !== 4) {\n return;\n }\n\n if (!(xhrId in this.pendingRequests)) {\n return;\n }\n\n delete this.pendingRequests[xhrId];\n\n if (xhr.status === 0 && this.isHttp) {\n if (pendingRequest.onError) {\n pendingRequest.onError(xhr.status);\n }\n\n return;\n }\n\n const xhrStatus = xhr.status || OK_RESPONSE;\n const ok_response_on_range_request = xhrStatus === OK_RESPONSE && pendingRequest.expectedStatus === PARTIAL_CONTENT_RESPONSE;\n\n if (!ok_response_on_range_request && xhrStatus !== pendingRequest.expectedStatus) {\n if (pendingRequest.onError) {\n pendingRequest.onError(xhr.status);\n }\n\n return;\n }\n\n const chunk = getArrayBuffer(xhr);\n\n if (xhrStatus === PARTIAL_CONTENT_RESPONSE) {\n const rangeHeader = xhr.getResponseHeader(\"Content-Range\");\n const matches = /bytes (\\d+)-(\\d+)\\/(\\d+)/.exec(rangeHeader);\n pendingRequest.onDone({\n begin: parseInt(matches[1], 10),\n chunk\n });\n } else if (chunk) {\n pendingRequest.onDone({\n begin: 0,\n chunk\n });\n } else if (pendingRequest.onError) {\n pendingRequest.onError(xhr.status);\n }\n }\n\n getRequestXhr(xhrId) {\n return this.pendingRequests[xhrId].xhr;\n }\n\n isPendingRequest(xhrId) {\n return xhrId in this.pendingRequests;\n }\n\n abortRequest(xhrId) {\n const xhr = this.pendingRequests[xhrId].xhr;\n delete this.pendingRequests[xhrId];\n xhr.abort();\n }\n\n}\n\nclass PDFNetworkStream {\n constructor(source) {\n this._source = source;\n this._manager = new NetworkManager(source.url, {\n httpHeaders: source.httpHeaders,\n withCredentials: source.withCredentials\n });\n this._rangeChunkSize = source.rangeChunkSize;\n this._fullRequestReader = null;\n this._rangeRequestReaders = [];\n }\n\n _onRangeRequestReaderClosed(reader) {\n const i = this._rangeRequestReaders.indexOf(reader);\n\n if (i >= 0) {\n this._rangeRequestReaders.splice(i, 1);\n }\n }\n\n getFullReader() {\n (0, _util.assert)(!this._fullRequestReader, \"PDFNetworkStream.getFullReader can only be called once.\");\n this._fullRequestReader = new PDFNetworkStreamFullRequestReader(this._manager, this._source);\n return this._fullRequestReader;\n }\n\n getRangeReader(begin, end) {\n const reader = new PDFNetworkStreamRangeRequestReader(this._manager, begin, end);\n reader.onClosed = this._onRangeRequestReaderClosed.bind(this);\n\n this._rangeRequestReaders.push(reader);\n\n return reader;\n }\n\n cancelAllRequests(reason) {\n if (this._fullRequestReader) {\n this._fullRequestReader.cancel(reason);\n }\n\n const readers = this._rangeRequestReaders.slice(0);\n\n readers.forEach(function (reader) {\n reader.cancel(reason);\n });\n }\n\n}\n\nexports.PDFNetworkStream = PDFNetworkStream;\n\nclass PDFNetworkStreamFullRequestReader {\n constructor(manager, source) {\n this._manager = manager;\n const args = {\n onHeadersReceived: this._onHeadersReceived.bind(this),\n onDone: this._onDone.bind(this),\n onError: this._onError.bind(this),\n onProgress: this._onProgress.bind(this)\n };\n this._url = source.url;\n this._fullRequestId = manager.requestFull(args);\n this._headersReceivedCapability = (0, _util.createPromiseCapability)();\n this._disableRange = source.disableRange || false;\n this._contentLength = source.length;\n this._rangeChunkSize = source.rangeChunkSize;\n\n if (!this._rangeChunkSize && !this._disableRange) {\n this._disableRange = true;\n }\n\n this._isStreamingSupported = false;\n this._isRangeSupported = false;\n this._cachedChunks = [];\n this._requests = [];\n this._done = false;\n this._storedError = undefined;\n this._filename = null;\n this.onProgress = null;\n }\n\n _onHeadersReceived() {\n const fullRequestXhrId = this._fullRequestId;\n\n const fullRequestXhr = this._manager.getRequestXhr(fullRequestXhrId);\n\n const getResponseHeader = name => {\n return fullRequestXhr.getResponseHeader(name);\n };\n\n const {\n allowRangeRequests,\n suggestedLength\n } = (0, _network_utils.validateRangeRequestCapabilities)({\n getResponseHeader,\n isHttp: this._manager.isHttp,\n rangeChunkSize: this._rangeChunkSize,\n disableRange: this._disableRange\n });\n\n if (allowRangeRequests) {\n this._isRangeSupported = true;\n }\n\n this._contentLength = suggestedLength || this._contentLength;\n this._filename = (0, _network_utils.extractFilenameFromHeader)(getResponseHeader);\n\n if (this._isRangeSupported) {\n this._manager.abortRequest(fullRequestXhrId);\n }\n\n this._headersReceivedCapability.resolve();\n }\n\n _onDone(args) {\n if (args) {\n if (this._requests.length > 0) {\n const requestCapability = this._requests.shift();\n\n requestCapability.resolve({\n value: args.chunk,\n done: false\n });\n } else {\n this._cachedChunks.push(args.chunk);\n }\n }\n\n this._done = true;\n\n if (this._cachedChunks.length > 0) {\n return;\n }\n\n this._requests.forEach(function (requestCapability) {\n requestCapability.resolve({\n value: undefined,\n done: true\n });\n });\n\n this._requests = [];\n }\n\n _onError(status) {\n const url = this._url;\n const exception = (0, _network_utils.createResponseStatusError)(status, url);\n this._storedError = exception;\n\n this._headersReceivedCapability.reject(exception);\n\n this._requests.forEach(function (requestCapability) {\n requestCapability.reject(exception);\n });\n\n this._requests = [];\n this._cachedChunks = [];\n }\n\n _onProgress(data) {\n if (this.onProgress) {\n this.onProgress({\n loaded: data.loaded,\n total: data.lengthComputable ? data.total : this._contentLength\n });\n }\n }\n\n get filename() {\n return this._filename;\n }\n\n get isRangeSupported() {\n return this._isRangeSupported;\n }\n\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n\n get contentLength() {\n return this._contentLength;\n }\n\n get headersReady() {\n return this._headersReceivedCapability.promise;\n }\n\n async read() {\n if (this._storedError) {\n throw this._storedError;\n }\n\n if (this._cachedChunks.length > 0) {\n const chunk = this._cachedChunks.shift();\n\n return {\n value: chunk,\n done: false\n };\n }\n\n if (this._done) {\n return {\n value: undefined,\n done: true\n };\n }\n\n const requestCapability = (0, _util.createPromiseCapability)();\n\n this._requests.push(requestCapability);\n\n return requestCapability.promise;\n }\n\n cancel(reason) {\n this._done = true;\n\n this._headersReceivedCapability.reject(reason);\n\n this._requests.forEach(function (requestCapability) {\n requestCapability.resolve({\n value: undefined,\n done: true\n });\n });\n\n this._requests = [];\n\n if (this._manager.isPendingRequest(this._fullRequestId)) {\n this._manager.abortRequest(this._fullRequestId);\n }\n\n this._fullRequestReader = null;\n }\n\n}\n\nclass PDFNetworkStreamRangeRequestReader {\n constructor(manager, begin, end) {\n this._manager = manager;\n const args = {\n onDone: this._onDone.bind(this),\n onProgress: this._onProgress.bind(this)\n };\n this._requestId = manager.requestRange(begin, end, args);\n this._requests = [];\n this._queuedChunk = null;\n this._done = false;\n this.onProgress = null;\n this.onClosed = null;\n }\n\n _close() {\n if (this.onClosed) {\n this.onClosed(this);\n }\n }\n\n _onDone(data) {\n const chunk = data.chunk;\n\n if (this._requests.length > 0) {\n const requestCapability = this._requests.shift();\n\n requestCapability.resolve({\n value: chunk,\n done: false\n });\n } else {\n this._queuedChunk = chunk;\n }\n\n this._done = true;\n\n this._requests.forEach(function (requestCapability) {\n requestCapability.resolve({\n value: undefined,\n done: true\n });\n });\n\n this._requests = [];\n\n this._close();\n }\n\n _onProgress(evt) {\n if (!this.isStreamingSupported && this.onProgress) {\n this.onProgress({\n loaded: evt.loaded\n });\n }\n }\n\n get isStreamingSupported() {\n return false;\n }\n\n async read() {\n if (this._queuedChunk !== null) {\n const chunk = this._queuedChunk;\n this._queuedChunk = null;\n return {\n value: chunk,\n done: false\n };\n }\n\n if (this._done) {\n return {\n value: undefined,\n done: true\n };\n }\n\n const requestCapability = (0, _util.createPromiseCapability)();\n\n this._requests.push(requestCapability);\n\n return requestCapability.promise;\n }\n\n cancel(reason) {\n this._done = true;\n\n this._requests.forEach(function (requestCapability) {\n requestCapability.resolve({\n value: undefined,\n done: true\n });\n });\n\n this._requests = [];\n\n if (this._manager.isPendingRequest(this._requestId)) {\n this._manager.abortRequest(this._requestId);\n }\n\n this._close();\n }\n\n}\n\n/***/ }),\n/* 26 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.PDFFetchStream = void 0;\n\nvar _util = __w_pdfjs_require__(2);\n\nvar _network_utils = __w_pdfjs_require__(23);\n\n;\n\nfunction createFetchOptions(headers, withCredentials, abortController) {\n return {\n method: \"GET\",\n headers,\n signal: abortController && abortController.signal,\n mode: \"cors\",\n credentials: withCredentials ? \"include\" : \"same-origin\",\n redirect: \"follow\"\n };\n}\n\nfunction createHeaders(httpHeaders) {\n const headers = new Headers();\n\n for (const property in httpHeaders) {\n const value = httpHeaders[property];\n\n if (typeof value === \"undefined\") {\n continue;\n }\n\n headers.append(property, value);\n }\n\n return headers;\n}\n\nclass PDFFetchStream {\n constructor(source) {\n this.source = source;\n this.isHttp = /^https?:/i.test(source.url);\n this.httpHeaders = this.isHttp && source.httpHeaders || {};\n this._fullRequestReader = null;\n this._rangeRequestReaders = [];\n }\n\n get _progressiveDataLength() {\n return this._fullRequestReader ? this._fullRequestReader._loaded : 0;\n }\n\n getFullReader() {\n (0, _util.assert)(!this._fullRequestReader, \"PDFFetchStream.getFullReader can only be called once.\");\n this._fullRequestReader = new PDFFetchStreamReader(this);\n return this._fullRequestReader;\n }\n\n getRangeReader(begin, end) {\n if (end <= this._progressiveDataLength) {\n return null;\n }\n\n const reader = new PDFFetchStreamRangeReader(this, begin, end);\n\n this._rangeRequestReaders.push(reader);\n\n return reader;\n }\n\n cancelAllRequests(reason) {\n if (this._fullRequestReader) {\n this._fullRequestReader.cancel(reason);\n }\n\n const readers = this._rangeRequestReaders.slice(0);\n\n readers.forEach(function (reader) {\n reader.cancel(reason);\n });\n }\n\n}\n\nexports.PDFFetchStream = PDFFetchStream;\n\nclass PDFFetchStreamReader {\n constructor(stream) {\n this._stream = stream;\n this._reader = null;\n this._loaded = 0;\n this._filename = null;\n const source = stream.source;\n this._withCredentials = source.withCredentials || false;\n this._contentLength = source.length;\n this._headersCapability = (0, _util.createPromiseCapability)();\n this._disableRange = source.disableRange || false;\n this._rangeChunkSize = source.rangeChunkSize;\n\n if (!this._rangeChunkSize && !this._disableRange) {\n this._disableRange = true;\n }\n\n if (typeof AbortController !== \"undefined\") {\n this._abortController = new AbortController();\n }\n\n this._isStreamingSupported = !source.disableStream;\n this._isRangeSupported = !source.disableRange;\n this._headers = createHeaders(this._stream.httpHeaders);\n const url = source.url;\n fetch(url, createFetchOptions(this._headers, this._withCredentials, this._abortController)).then(response => {\n if (!(0, _network_utils.validateResponseStatus)(response.status)) {\n throw (0, _network_utils.createResponseStatusError)(response.status, url);\n }\n\n this._reader = response.body.getReader();\n\n this._headersCapability.resolve();\n\n const getResponseHeader = name => {\n return response.headers.get(name);\n };\n\n const {\n allowRangeRequests,\n suggestedLength\n } = (0, _network_utils.validateRangeRequestCapabilities)({\n getResponseHeader,\n isHttp: this._stream.isHttp,\n rangeChunkSize: this._rangeChunkSize,\n disableRange: this._disableRange\n });\n this._isRangeSupported = allowRangeRequests;\n this._contentLength = suggestedLength || this._contentLength;\n this._filename = (0, _network_utils.extractFilenameFromHeader)(getResponseHeader);\n\n if (!this._isStreamingSupported && this._isRangeSupported) {\n this.cancel(new _util.AbortException(\"Streaming is disabled.\"));\n }\n }).catch(this._headersCapability.reject);\n this.onProgress = null;\n }\n\n get headersReady() {\n return this._headersCapability.promise;\n }\n\n get filename() {\n return this._filename;\n }\n\n get contentLength() {\n return this._contentLength;\n }\n\n get isRangeSupported() {\n return this._isRangeSupported;\n }\n\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n\n async read() {\n await this._headersCapability.promise;\n const {\n value,\n done\n } = await this._reader.read();\n\n if (done) {\n return {\n value,\n done\n };\n }\n\n this._loaded += value.byteLength;\n\n if (this.onProgress) {\n this.onProgress({\n loaded: this._loaded,\n total: this._contentLength\n });\n }\n\n const buffer = new Uint8Array(value).buffer;\n return {\n value: buffer,\n done: false\n };\n }\n\n cancel(reason) {\n if (this._reader) {\n this._reader.cancel(reason);\n }\n\n if (this._abortController) {\n this._abortController.abort();\n }\n }\n\n}\n\nclass PDFFetchStreamRangeReader {\n constructor(stream, begin, end) {\n this._stream = stream;\n this._reader = null;\n this._loaded = 0;\n const source = stream.source;\n this._withCredentials = source.withCredentials || false;\n this._readCapability = (0, _util.createPromiseCapability)();\n this._isStreamingSupported = !source.disableStream;\n\n if (typeof AbortController !== \"undefined\") {\n this._abortController = new AbortController();\n }\n\n this._headers = createHeaders(this._stream.httpHeaders);\n\n this._headers.append(\"Range\", `bytes=${begin}-${end - 1}`);\n\n const url = source.url;\n fetch(url, createFetchOptions(this._headers, this._withCredentials, this._abortController)).then(response => {\n if (!(0, _network_utils.validateResponseStatus)(response.status)) {\n throw (0, _network_utils.createResponseStatusError)(response.status, url);\n }\n\n this._readCapability.resolve();\n\n this._reader = response.body.getReader();\n }).catch(reason => {\n if (reason && reason.name === \"AbortError\") {\n return;\n }\n\n throw reason;\n });\n this.onProgress = null;\n }\n\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n\n async read() {\n await this._readCapability.promise;\n const {\n value,\n done\n } = await this._reader.read();\n\n if (done) {\n return {\n value,\n done\n };\n }\n\n this._loaded += value.byteLength;\n\n if (this.onProgress) {\n this.onProgress({\n loaded: this._loaded\n });\n }\n\n const buffer = new Uint8Array(value).buffer;\n return {\n value: buffer,\n done: false\n };\n }\n\n cancel(reason) {\n if (this._reader) {\n this._reader.cancel(reason);\n }\n\n if (this._abortController) {\n this._abortController.abort();\n }\n }\n\n}\n\n/***/ })\n/******/ ]);\n});\n//# sourceMappingURL=pdf.js.map","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\nvar isArray = require('isarray')\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Use Object implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * Due to various browser bugs, sometimes the Object implementation will be used even\n * when the browser supports typed arrays.\n *\n * Note:\n *\n * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,\n * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.\n *\n * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.\n *\n * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of\n * incorrect length in some situations.\n\n * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they\n * get the Object implementation, which is slower but behaves correctly.\n */\nBuffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined\n ? global.TYPED_ARRAY_SUPPORT\n : typedArraySupport()\n\n/*\n * Export kMaxLength after typed array support is determined.\n */\nexports.kMaxLength = kMaxLength()\n\nfunction typedArraySupport () {\n try {\n var arr = new Uint8Array(1)\n arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}\n return arr.foo() === 42 && // typed array instances can be augmented\n typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`\n arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray`\n } catch (e) {\n return false\n }\n}\n\nfunction kMaxLength () {\n return Buffer.TYPED_ARRAY_SUPPORT\n ? 0x7fffffff\n : 0x3fffffff\n}\n\nfunction createBuffer (that, length) {\n if (kMaxLength() < length) {\n throw new RangeError('Invalid typed array length')\n }\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = new Uint8Array(length)\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n if (that === null) {\n that = new Buffer(length)\n }\n that.length = length\n }\n\n return that\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {\n return new Buffer(arg, encodingOrOffset, length)\n }\n\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new Error(\n 'If encoding is specified then the first argument must be a string'\n )\n }\n return allocUnsafe(this, arg)\n }\n return from(this, arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\n// TODO: Legacy, not needed anymore. Remove in next major version.\nBuffer._augment = function (arr) {\n arr.__proto__ = Buffer.prototype\n return arr\n}\n\nfunction from (that, value, encodingOrOffset, length) {\n if (typeof value === 'number') {\n throw new TypeError('\"value\" argument must not be a number')\n }\n\n if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {\n return fromArrayBuffer(that, value, encodingOrOffset, length)\n }\n\n if (typeof value === 'string') {\n return fromString(that, value, encodingOrOffset)\n }\n\n return fromObject(that, value)\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(null, value, encodingOrOffset, length)\n}\n\nif (Buffer.TYPED_ARRAY_SUPPORT) {\n Buffer.prototype.__proto__ = Uint8Array.prototype\n Buffer.__proto__ = Uint8Array\n if (typeof Symbol !== 'undefined' && Symbol.species &&\n Buffer[Symbol.species] === Buffer) {\n // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97\n Object.defineProperty(Buffer, Symbol.species, {\n value: null,\n configurable: true\n })\n }\n}\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be a number')\n } else if (size < 0) {\n throw new RangeError('\"size\" argument must not be negative')\n }\n}\n\nfunction alloc (that, size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(that, size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpretted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(that, size).fill(fill, encoding)\n : createBuffer(that, size).fill(fill)\n }\n return createBuffer(that, size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(null, size, fill, encoding)\n}\n\nfunction allocUnsafe (that, size) {\n assertSize(size)\n that = createBuffer(that, size < 0 ? 0 : checked(size) | 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) {\n for (var i = 0; i < size; ++i) {\n that[i] = 0\n }\n }\n return that\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(null, size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(null, size)\n}\n\nfunction fromString (that, string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('\"encoding\" must be a valid string encoding')\n }\n\n var length = byteLength(string, encoding) | 0\n that = createBuffer(that, length)\n\n var actual = that.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n that = that.slice(0, actual)\n }\n\n return that\n}\n\nfunction fromArrayLike (that, array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0\n that = createBuffer(that, length)\n for (var i = 0; i < length; i += 1) {\n that[i] = array[i] & 255\n }\n return that\n}\n\nfunction fromArrayBuffer (that, array, byteOffset, length) {\n array.byteLength // this throws if `array` is not a valid ArrayBuffer\n\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\\'offset\\' is out of bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\\'length\\' is out of bounds')\n }\n\n if (byteOffset === undefined && length === undefined) {\n array = new Uint8Array(array)\n } else if (length === undefined) {\n array = new Uint8Array(array, byteOffset)\n } else {\n array = new Uint8Array(array, byteOffset, length)\n }\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = array\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n that = fromArrayLike(that, array)\n }\n return that\n}\n\nfunction fromObject (that, obj) {\n if (Buffer.isBuffer(obj)) {\n var len = checked(obj.length) | 0\n that = createBuffer(that, len)\n\n if (that.length === 0) {\n return that\n }\n\n obj.copy(that, 0, 0, len)\n return that\n }\n\n if (obj) {\n if ((typeof ArrayBuffer !== 'undefined' &&\n obj.buffer instanceof ArrayBuffer) || 'length' in obj) {\n if (typeof obj.length !== 'number' || isnan(obj.length)) {\n return createBuffer(that, 0)\n }\n return fromArrayLike(that, obj)\n }\n\n if (obj.type === 'Buffer' && isArray(obj.data)) {\n return fromArrayLike(that, obj.data)\n }\n }\n\n throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')\n}\n\nfunction checked (length) {\n // Note: cannot use `length < kMaxLength()` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= kMaxLength()) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + kMaxLength().toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return !!(b != null && b._isBuffer)\n}\n\nBuffer.compare = function compare (a, b) {\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError('Arguments must be Buffers')\n }\n\n if (a === b) return 0\n\n var x = a.length\n var y = b.length\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n var i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n var buffer = Buffer.allocUnsafe(length)\n var pos = 0\n for (i = 0; i < list.length; ++i) {\n var buf = list[i]\n if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n buf.copy(buffer, pos)\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' &&\n (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n string = '' + string\n }\n\n var len = string.length\n if (len === 0) return 0\n\n // Use a for loop to avoid recursion\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n case undefined:\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) return utf8ToBytes(string).length // assume utf8\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n var loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coersion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect\n// Buffer instances.\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n var i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n var len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n var len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n var len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n var length = this.length | 0\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n var str = ''\n var max = exports.INSPECT_MAX_BYTES\n if (this.length > 0) {\n str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')\n if (this.length > max) str += ' ... '\n }\n return ''\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (!Buffer.isBuffer(target)) {\n throw new TypeError('Argument must be a Buffer')\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n var x = thisEnd - thisStart\n var y = end - start\n var len = Math.min(x, y)\n\n var thisCopy = this.slice(thisStart, thisEnd)\n var targetCopy = target.slice(start, end)\n\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (isNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (Buffer.TYPED_ARRAY_SUPPORT &&\n typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n var indexSize = 1\n var arrLength = arr.length\n var valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n var i\n if (dir) {\n var foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n var found = true\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n var remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n // must be an even number of digits\n var strLen = string.length\n if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16)\n if (isNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction latin1Write (buf, string, offset, length) {\n return asciiWrite(buf, string, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset | 0\n if (isFinite(length)) {\n length = length | 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n // legacy write(string, encoding, offset, length) - remove in v0.13\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n var remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n return asciiWrite(this, string, offset, length)\n\n case 'latin1':\n case 'binary':\n return latin1Write(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n var res = []\n\n var i = start\n while (i < end) {\n var firstByte = buf[i]\n var codePoint = null\n var bytesPerSequence = (firstByte > 0xEF) ? 4\n : (firstByte > 0xDF) ? 3\n : (firstByte > 0xBF) ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n var len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n var res = ''\n var i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n var len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n var out = ''\n for (var i = start; i < end; ++i) {\n out += toHex(buf[i])\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n var bytes = buf.slice(start, end)\n var res = ''\n for (var i = 0; i < bytes.length; i += 2) {\n res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256)\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n var len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n var newBuf\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n newBuf = this.subarray(start, end)\n newBuf.__proto__ = Buffer.prototype\n } else {\n var sliceLen = end - start\n newBuf = new Buffer(sliceLen, undefined)\n for (var i = 0; i < sliceLen; ++i) {\n newBuf[i] = this[i + start]\n }\n }\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n var val = this[offset + --byteLength]\n var mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var i = byteLength\n var mul = 1\n var val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var mul = 1\n var i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var i = byteLength - 1\n var mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nfunction objectWriteUInt16 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {\n buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>\n (littleEndian ? i : 1 - i) * 8\n }\n}\n\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nfunction objectWriteUInt32 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffffffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {\n buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff\n }\n}\n\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = 0\n var mul = 1\n var sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = byteLength - 1\n var mul = 1\n var sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n var len = end - start\n var i\n\n if (this === target && start < targetStart && targetStart < end) {\n // descending copy from end\n for (i = len - 1; i >= 0; --i) {\n target[i + targetStart] = this[i + start]\n }\n } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {\n // ascending copy from start\n for (i = 0; i < len; ++i) {\n target[i + targetStart] = this[i + start]\n }\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, start + len),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (val.length === 1) {\n var code = val.charCodeAt(0)\n if (code < 256) {\n val = code\n }\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n } else if (typeof val === 'number') {\n val = val & 255\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n var i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n var bytes = Buffer.isBuffer(val)\n ? val\n : utf8ToBytes(new Buffer(val, encoding).toString())\n var len = bytes.length\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+\\/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = stringtrim(str).replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction stringtrim (str) {\n if (str.trim) return str.trim()\n return str.replace(/^\\s+|\\s+$/g, '')\n}\n\nfunction toHex (n) {\n if (n < 16) return '0' + n.toString(16)\n return n.toString(16)\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n var codePoint\n var length = string.length\n var leadSurrogate = null\n var bytes = []\n\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n var c, hi, lo\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\nfunction isnan (val) {\n return val !== val // eslint-disable-line no-self-compare\n}\n","var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n"],"sourceRoot":""}